
html, body { height: 100%; margin: 0; overflow: hidden; }
body {
  background: radial-gradient(ellipse at 50% 38%, #45403a 0%, #2e2a26 55%, #1d1a17 100%);
  overscroll-behavior: none;
  -webkit-user-select: none; user-select: none;
}
#stage {
  position: fixed; inset: 0;
  display: flex; align-items: center; justify-content: center;
  touch-action: none;
}
#flipbook { position: relative; }
#flipbook.open { box-shadow: 0 22px 60px rgba(0,0,0,.55), 0 4px 14px rgba(0,0,0,.4); }

/* ---------- hard covers ---------- */
.cover {
  background:
    radial-gradient(ellipse at 30% 25%, rgba(255,255,255,.09), rgba(255,255,255,0) 55%),
    linear-gradient(135deg, #142e56 0%, #24487f 46%, #142e56 100%);
  box-shadow: inset 0 0 40px rgba(0,0,0,.35);
}
.cover-front::before, .cover-back::before {
  content: ''; position: absolute; top: 0; bottom: 0; width: 12%;
  pointer-events: none; z-index: 2;
}
.cover-front::before { left: 0;  background: linear-gradient(to right, rgba(0,0,0,.5), rgba(0,0,0,.14) 55%, rgba(0,0,0,0)); }
.cover-back::before  { right: 0; background: linear-gradient(to left,  rgba(0,0,0,.5), rgba(0,0,0,.14) 55%, rgba(0,0,0,0)); }
.cover-inner { position: absolute; inset: 0; }
.cover-frame {
  position: absolute; inset: 7%;
  border: 3px double #c9a84c; border-radius: 3px;
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  text-align: center; color: #e7c96f;
  font-family: Georgia, 'Palatino Linotype', serif;
  padding: 0 6%;
}
.cover-title {
  font-variant: small-caps; letter-spacing: .1em;
  font-size: 2em; line-height: 1.25;
  text-shadow: 0 2px 3px rgba(0,0,0,.55);
}
.cover-orn { color: #b89a4e; font-size: 1.5em; margin-top: 1.1em; }
.cover-orn.big { font-size: 2.4em; }
.cover-sub { letter-spacing: .5em; font-size: .68em; margin-top: 1em; color: #cdb069; text-indent: .5em; }
.cover-author { margin-top: 2.4em; font-variant: small-caps; letter-spacing: .18em; font-size: 1.02em; color: #e2c26a; }

/* ---------- endpapers ---------- */
.endpaper {
  background:
    repeating-linear-gradient(45deg, rgba(120,96,58,.05) 0 3px, rgba(0,0,0,0) 3px 6px),
    linear-gradient(#e8dfc8, #dcd2b6);
  box-shadow: inset 0 0 55px rgba(96,74,40,.25);
}

/* ---------- paper pages ---------- */
.paper {
  background:
    radial-gradient(ellipse at 50% 45%, #faf5e9 55%, #f1e8d4 92%, #eadfc7 100%);
  color: #33291f;
}
/* inner spine shadow — the fold between the two pages of a spread */
.pg-right::before {
  content: ''; position: absolute; top: 0; bottom: 0; left: 0; width: 9%;
  background: linear-gradient(to right, rgba(84,26,18,.30), rgba(84,26,18,.10) 52%, rgba(84,26,18,0));
  pointer-events: none; z-index: 3;
}
.pg-left::before {
  content: ''; position: absolute; top: 0; bottom: 0; right: 0; width: 9%;
  background: linear-gradient(to left, rgba(84,26,18,.26), rgba(84,26,18,.09) 52%, rgba(84,26,18,0));
  pointer-events: none; z-index: 3;
}
.pg-single::before {
  content: ''; position: absolute; top: 0; bottom: 0; left: 0; width: 6%;
  background: linear-gradient(to right, rgba(62,44,16,.18), rgba(84,26,18,0));
  pointer-events: none; z-index: 3;
}
/* outer edge — hint of the closed page stack */
.pg-right::after, .pg-left::after {
  content: ''; position: absolute; top: 0; bottom: 0; width: 7px;
  pointer-events: none; z-index: 3; opacity: .5;
}
.pg-right::after { right: 0; background: repeating-linear-gradient(to left, rgba(90,70,40,.16) 0 1px, rgba(0,0,0,0) 1px 3px); }
.pg-left::after  { left: 0;  background: repeating-linear-gradient(to right, rgba(90,70,40,.16) 0 1px, rgba(0,0,0,0) 1px 3px); }

/* ---------- text ---------- */
.textenv {
  font-family: Georgia, 'Palatino Linotype', 'Book Antiqua', 'Times New Roman', serif;
  line-height: 1.55; text-align: justify;
  hyphens: auto; -webkit-hyphens: auto; -ms-hyphens: auto;
  text-rendering: optimizeLegibility;
  color: #33291f;
}
.textenv p { margin: 0; text-indent: 1.5em; }
.textenv p.noind { text-indent: 0; }
.chead { margin-bottom: 1.25em; }
.cnum {
  text-align: center; font-variant: small-caps;
  letter-spacing: .24em; font-size: 1.26em;
  padding-top: 1em; text-indent: .24em; color: #4a3b28;
}
.corn { text-align: center; color: #8a744a; margin-top: .4em; font-size: 1em; }
.brk { text-align: center; margin: 1.1em 0; color: #8a744a; font-size: .78em; letter-spacing: .5em; text-indent: .5em; }
.theend { text-align: center; margin-top: 2.6em; letter-spacing: .4em; text-indent: .4em; font-size: 1.02em; color: #5a4a33; }
.folio { text-align: center; font-size: .66em; letter-spacing: .18em; color: #8d7b5f; font-family: Georgia, serif; }

/* ---------- title page ---------- */
.titlepage {
  position: absolute; inset: 10% 12%;
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  text-align: center; font-family: Georgia, 'Palatino Linotype', serif; color: #3d3020;
}
.tp-title { font-variant: small-caps; font-size: 1.85em; letter-spacing: .1em; line-height: 1.3; }
.tp-rule { width: 42%; height: 1px; background: #a08c5a; margin: 1.4em 0; }
.tp-sub { letter-spacing: .45em; font-size: .72em; color: #6a583c; text-indent: .45em; }
.tp-by { margin-top: 2.2em; font-style: italic; font-size: .85em; color: #6a583c; }
.tp-author { margin-top: .5em; font-variant: small-caps; letter-spacing: .16em; font-size: 1.12em; }
.tp-orn { margin-top: 2.2em; color: #8a744a; font-size: 1.3em; }

/* ---------- chrome ---------- */
.nav {
  position: fixed; top: 50%; transform: translateY(-50%);
  z-index: 60; cursor: pointer;
  font: 46px/1 Georgia, serif; color: rgba(255,255,255,.30);
  padding: 26px 14px; transition: color .2s;
  background: none; border: 0; margin: 0;
  -webkit-appearance: none; appearance: none;
}
.nav:hover { color: rgba(255,255,255,.75); }
#nav-prev { left: 4px; }
#nav-next { right: 4px; }

#hint {
  position: fixed; left: 50%; bottom: 58px; transform: translateX(-50%);
  z-index: 60; font: 12.5px/1.4 Georgia, serif; letter-spacing: .06em;
  color: rgba(255,255,255,.45); background: rgba(0,0,0,.25);
  padding: 6px 14px; border-radius: 20px; white-space: nowrap;
  transition: opacity 1.2s; pointer-events: none;
}
#hint.gone { opacity: 0; }

#loader {
  position: fixed; inset: 0; z-index: 100;
  display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 14px;
  background: rgba(24,21,18,.82);
  font: 15px Georgia, serif; letter-spacing: .08em; color: #d8c9a6;
  opacity: 0; pointer-events: none; transition: opacity .25s;
}
#loader.show { opacity: 1; pointer-events: auto; }
#loader .spin {
  width: 34px; height: 34px; border-radius: 50%;
  border: 3px solid rgba(216,201,166,.25); border-top-color: #d8c9a6;
  animation: lspin .9s linear infinite;
}
@keyframes lspin { to { transform: rotate(360deg); } }

/* ---------- embossed cover tooling ---------- */
.cover-inner::before {
  content: ''; position: absolute; inset: 2.2%;
  pointer-events: none; opacity: .9;
  background-image: url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='28'%20height='28'%3E%20%3Cg%20fill='none'%20stroke-width='1.4'%3E%20%3Cg%20transform='translate(0.9,0.9)'%20stroke='rgba(0,0,0,0.50)'%3E%20%3Cpath%20d='M14%206%20L22%2014%20L14%2022%20L6%2014%20Z'/%3E%3Ccircle%20cx='14'%20cy='14'%20r='1.8'/%3E%20%3C/g%3E%20%3Cg%20transform='translate(-0.6,-0.6)'%20stroke='rgba(255,255,255,0.13)'%3E%20%3Cpath%20d='M14%206%20L22%2014%20L14%2022%20L6%2014%20Z'/%3E%3Ccircle%20cx='14'%20cy='14'%20r='1.8'/%3E%20%3C/g%3E%20%3C/g%3E%3C/svg%3E"), url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='28'%20height='28'%3E%20%3Cg%20fill='none'%20stroke-width='1.4'%3E%20%3Cg%20transform='translate(0.9,0.9)'%20stroke='rgba(0,0,0,0.50)'%3E%20%3Cpath%20d='M14%206%20L22%2014%20L14%2022%20L6%2014%20Z'/%3E%3Ccircle%20cx='14'%20cy='14'%20r='1.8'/%3E%20%3C/g%3E%20%3Cg%20transform='translate(-0.6,-0.6)'%20stroke='rgba(255,255,255,0.13)'%3E%20%3Cpath%20d='M14%206%20L22%2014%20L14%2022%20L6%2014%20Z'/%3E%3Ccircle%20cx='14'%20cy='14'%20r='1.8'/%3E%20%3C/g%3E%20%3C/g%3E%3C/svg%3E"), url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='28'%20height='28'%3E%20%3Cg%20fill='none'%20stroke-width='1.4'%3E%20%3Cg%20transform='translate(0.9,0.9)'%20stroke='rgba(0,0,0,0.50)'%3E%20%3Cpath%20d='M14%206%20L22%2014%20L14%2022%20L6%2014%20Z'/%3E%3Ccircle%20cx='14'%20cy='14'%20r='1.8'/%3E%20%3C/g%3E%20%3Cg%20transform='translate(-0.6,-0.6)'%20stroke='rgba(255,255,255,0.13)'%3E%20%3Cpath%20d='M14%206%20L22%2014%20L14%2022%20L6%2014%20Z'/%3E%3Ccircle%20cx='14'%20cy='14'%20r='1.8'/%3E%20%3C/g%3E%20%3C/g%3E%3C/svg%3E"), url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='28'%20height='28'%3E%20%3Cg%20fill='none'%20stroke-width='1.4'%3E%20%3Cg%20transform='translate(0.9,0.9)'%20stroke='rgba(0,0,0,0.50)'%3E%20%3Cpath%20d='M14%206%20L22%2014%20L14%2022%20L6%2014%20Z'/%3E%3Ccircle%20cx='14'%20cy='14'%20r='1.8'/%3E%20%3C/g%3E%20%3Cg%20transform='translate(-0.6,-0.6)'%20stroke='rgba(255,255,255,0.13)'%3E%20%3Cpath%20d='M14%206%20L22%2014%20L14%2022%20L6%2014%20Z'/%3E%3Ccircle%20cx='14'%20cy='14'%20r='1.8'/%3E%20%3C/g%3E%20%3C/g%3E%3C/svg%3E");
  background-repeat: repeat-x, repeat-x, repeat-y, repeat-y;
  background-position: left top, left bottom, left top, right top;
  background-size: 28px 28px;
}
.cover-inner::after {
  content: ''; position: absolute; inset: 1.4%;
  pointer-events: none; opacity: .95;
  background-image: url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='56'%20height='56'%3E%20%3Cg%20fill='none'%20stroke-width='1.5'%3E%20%3Cg%20transform='translate(1,1)'%20stroke='rgba(0,0,0,0.50)'%3E%20%3Ccircle%20cx='28'%20cy='28'%20r='16'/%3E%3Ccircle%20cx='28'%20cy='28'%20r='9'/%3E%20%3Cpath%20d='M28%2012%20Q31%2020%2028%2024%20Q25%2020%2028%2012%20Z%20M28%2044%20Q31%2036%2028%2032%20Q25%2036%2028%2044%20Z%20M12%2028%20Q20%2031%2024%2028%20Q20%2025%2012%2028%20Z%20M44%2028%20Q36%2031%2032%2028%20Q36%2025%2044%2028%20Z'/%3E%20%3C/g%3E%20%3Cg%20transform='translate(-0.7,-0.7)'%20stroke='rgba(255,255,255,0.13)'%3E%20%3Ccircle%20cx='28'%20cy='28'%20r='16'/%3E%3Ccircle%20cx='28'%20cy='28'%20r='9'/%3E%20%3Cpath%20d='M28%2012%20Q31%2020%2028%2024%20Q25%2020%2028%2012%20Z%20M28%2044%20Q31%2036%2028%2032%20Q25%2036%2028%2044%20Z%20M12%2028%20Q20%2031%2024%2028%20Q20%2025%2012%2028%20Z%20M44%2028%20Q36%2031%2032%2028%20Q36%2025%2044%2028%20Z'/%3E%20%3C/g%3E%20%3C/g%3E%3C/svg%3E"), url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='56'%20height='56'%3E%20%3Cg%20fill='none'%20stroke-width='1.5'%3E%20%3Cg%20transform='translate(1,1)'%20stroke='rgba(0,0,0,0.50)'%3E%20%3Ccircle%20cx='28'%20cy='28'%20r='16'/%3E%3Ccircle%20cx='28'%20cy='28'%20r='9'/%3E%20%3Cpath%20d='M28%2012%20Q31%2020%2028%2024%20Q25%2020%2028%2012%20Z%20M28%2044%20Q31%2036%2028%2032%20Q25%2036%2028%2044%20Z%20M12%2028%20Q20%2031%2024%2028%20Q20%2025%2012%2028%20Z%20M44%2028%20Q36%2031%2032%2028%20Q36%2025%2044%2028%20Z'/%3E%20%3C/g%3E%20%3Cg%20transform='translate(-0.7,-0.7)'%20stroke='rgba(255,255,255,0.13)'%3E%20%3Ccircle%20cx='28'%20cy='28'%20r='16'/%3E%3Ccircle%20cx='28'%20cy='28'%20r='9'/%3E%20%3Cpath%20d='M28%2012%20Q31%2020%2028%2024%20Q25%2020%2028%2012%20Z%20M28%2044%20Q31%2036%2028%2032%20Q25%2036%2028%2044%20Z%20M12%2028%20Q20%2031%2024%2028%20Q20%2025%2012%2028%20Z%20M44%2028%20Q36%2031%2032%2028%20Q36%2025%2044%2028%20Z'/%3E%20%3C/g%3E%20%3C/g%3E%3C/svg%3E"), url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='56'%20height='56'%3E%20%3Cg%20fill='none'%20stroke-width='1.5'%3E%20%3Cg%20transform='translate(1,1)'%20stroke='rgba(0,0,0,0.50)'%3E%20%3Ccircle%20cx='28'%20cy='28'%20r='16'/%3E%3Ccircle%20cx='28'%20cy='28'%20r='9'/%3E%20%3Cpath%20d='M28%2012%20Q31%2020%2028%2024%20Q25%2020%2028%2012%20Z%20M28%2044%20Q31%2036%2028%2032%20Q25%2036%2028%2044%20Z%20M12%2028%20Q20%2031%2024%2028%20Q20%2025%2012%2028%20Z%20M44%2028%20Q36%2031%2032%2028%20Q36%2025%2044%2028%20Z'/%3E%20%3C/g%3E%20%3Cg%20transform='translate(-0.7,-0.7)'%20stroke='rgba(255,255,255,0.13)'%3E%20%3Ccircle%20cx='28'%20cy='28'%20r='16'/%3E%3Ccircle%20cx='28'%20cy='28'%20r='9'/%3E%20%3Cpath%20d='M28%2012%20Q31%2020%2028%2024%20Q25%2020%2028%2012%20Z%20M28%2044%20Q31%2036%2028%2032%20Q25%2036%2028%2044%20Z%20M12%2028%20Q20%2031%2024%2028%20Q20%2025%2012%2028%20Z%20M44%2028%20Q36%2031%2032%2028%20Q36%2025%2044%2028%20Z'/%3E%20%3C/g%3E%20%3C/g%3E%3C/svg%3E"), url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='56'%20height='56'%3E%20%3Cg%20fill='none'%20stroke-width='1.5'%3E%20%3Cg%20transform='translate(1,1)'%20stroke='rgba(0,0,0,0.50)'%3E%20%3Ccircle%20cx='28'%20cy='28'%20r='16'/%3E%3Ccircle%20cx='28'%20cy='28'%20r='9'/%3E%20%3Cpath%20d='M28%2012%20Q31%2020%2028%2024%20Q25%2020%2028%2012%20Z%20M28%2044%20Q31%2036%2028%2032%20Q25%2036%2028%2044%20Z%20M12%2028%20Q20%2031%2024%2028%20Q20%2025%2012%2028%20Z%20M44%2028%20Q36%2031%2032%2028%20Q36%2025%2044%2028%20Z'/%3E%20%3C/g%3E%20%3Cg%20transform='translate(-0.7,-0.7)'%20stroke='rgba(255,255,255,0.13)'%3E%20%3Ccircle%20cx='28'%20cy='28'%20r='16'/%3E%3Ccircle%20cx='28'%20cy='28'%20r='9'/%3E%20%3Cpath%20d='M28%2012%20Q31%2020%2028%2024%20Q25%2020%2028%2012%20Z%20M28%2044%20Q31%2036%2028%2032%20Q25%2036%2028%2044%20Z%20M12%2028%20Q20%2031%2024%2028%20Q20%2025%2012%2028%20Z%20M44%2028%20Q36%2031%2032%2028%20Q36%2025%2044%2028%20Z'/%3E%20%3C/g%3E%20%3C/g%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: left top, right top, left bottom, right bottom;
  background-size: 52px 52px;
}

/* ---------- illustration captions & display lines ---------- */
.illus {
  margin: 1.15em 5%; padding: .5em 3%;
  text-align: center; font-style: italic;
  font-size: .84em; line-height: 1.45; color: #6b5a3e;
  border-top: 1px solid rgba(122,100,60,.4);
  border-bottom: 1px solid rgba(122,100,60,.4);
}
.disp {
  text-align: center; margin: 1em 8%;
  font-variant: small-caps; letter-spacing: .12em;
  font-size: .95em; color: #4a3b28;
}

.ctitle {
  text-align: center; font-variant: small-caps;
  letter-spacing: .08em; font-size: 1.05em;
  margin-top: .45em; color: #5a4a33;
}
.verse {
  text-align: center; font-style: italic;
  margin: 1.1em 0; line-height: 1.65; color: #4a3b28;
}

/* A PROSE EPIGRAPH -- the motto at the head of a chapter when it is a
   paragraph rather than a line of verse. Indented on both sides so the
   measure is visibly narrower than the text it stands over, which is what
   tells the eye it is a quotation and not the chapter's first paragraph. */
.epig {
  margin: 1.15em 7% 1.5em; text-indent: 0;
  font-style: italic; font-size: .9em; line-height: 1.6;
  color: #4a3b28; text-align: justify;
}
.epig + .epig { margin-top: -.7em; }   /* a quotation and its translation */

.letter {
  margin: 1.1em 6%; padding: .7em 1em;
  font-size: .88em; line-height: 1.6; font-style: italic;
  color: #4a3b28; background: rgba(146,120,70,.07);
  border-left: 2px solid rgba(122,100,60,.45);
}

.songtitle {
  text-align: center; font-variant: small-caps; letter-spacing: .18em;
  text-indent: .18em; font-size: .92em; color: #5a4a33; margin: 1.2em 0 .3em;
}
.plate {
  margin: 1.2em auto; padding: .45em 1.2em; width: fit-content;
  text-align: center; letter-spacing: .3em; text-indent: .3em; font-size: .86em;
  color: #4a3b28; border: 1px solid rgba(122,100,60,.55); border-radius: 2px;
  background: rgba(170,150,95,.14);
}
.prog {
  margin: 1.1em 6%; text-align: center; font-size: .85em; line-height: 1.75;
  color: #4a3b28; border-top: 1px solid rgba(122,100,60,.4);
  border-bottom: 1px solid rgba(122,100,60,.4); padding: .7em 0;
}


/* ---------- skip to page (fixed overlay: never touches #flipbook) ---------- */
#skipbar {
  position: fixed; left: 50%; bottom: 12px;
  transform: translateX(-50%) translateY(10px);
  z-index: 70;
  display: flex; align-items: center; gap: 8px;
  opacity: 0; pointer-events: none;
  transition: opacity .32s ease, transform .32s ease;
  font-family: Georgia, 'Palatino Linotype', serif;
}
#skipbar.vis { opacity: 1; pointer-events: auto; transform: translateX(-50%) translateY(0); }

#skipbar button {
  font: 13.5px/1 Georgia, serif; letter-spacing: .06em;
  color: #ffeec0; background: rgba(38,10,66,.85);
  border: 1px solid rgba(255,216,106,.55); border-radius: 18px;
  padding: 9px 16px; cursor: pointer;
  -webkit-appearance: none; appearance: none;
  transition: background .18s, color .18s, border-color .18s;
}
#skipbar button:hover { background: rgba(70,21,122,.94); color: #fff8dc; border-color: #ffd86a; }
#skipbar button:focus-visible { outline: 2px solid #ffd86a; outline-offset: 2px; }

#skip-wrap {
  display: none; align-items: center; gap: 6px;
  background: rgba(38,10,66,.9);
  border: 1px solid rgba(255,216,106,.55); border-radius: 18px;
  padding: 5px 6px 5px 12px;
}
#skip-wrap.open { display: flex; }
#skip-btn.gone { display: none; }

#skip-input {
  width: 74px; font: 14px/1 Georgia, serif; text-align: center;
  color: #1b0733; background: #f8f0e2;
  border: 1px solid rgba(255,216,106,.7); border-radius: 12px;
  padding: 7px 8px; -webkit-appearance: none; appearance: none;
}
#skip-input:focus { outline: 2px solid #ffd86a; outline-offset: 1px; }
#skip-err {
  font: 11.5px/1 Georgia, serif; letter-spacing: .05em;
  color: rgba(255,238,192,.72); padding-right: 8px; white-space: nowrap;
}

@keyframes skipShake {
  0%,100% { transform: translateX(0); }
  20% { transform: translateX(-5px); } 40% { transform: translateX(5px); }
  60% { transform: translateX(-3px); } 80% { transform: translateX(3px); }
}
#skip-wrap.bad { animation: skipShake .34s ease; border-color: #ff5c7a; }
#skip-wrap.bad #skip-err { color: #ffb3c1; }

@media (prefers-reduced-motion: reduce) {
  #skipbar { transition: opacity .2s ease; transform: translateX(-50%); }
  #skipbar.vis { transform: translateX(-50%); }
  #skip-wrap.bad { animation: none; }
}

/* ---------- chapter half-title page ----------
   Same cream stock, margins and rules as a text page; no folio, as a printed
   half-title carries none. .chapanim is an empty full-bleed stage kept for
   per-chapter artwork later. Animation "rise and settle": numeral lifts, a
   hairline draws outward from the centre, the title follows.                */
.paper.intro { overflow: hidden; }

.intropage {
  position: absolute; inset: 0;
  display: flex; flex-direction: column;
  align-items: center; justify-content: center;
}
.chapanim { position: absolute; inset: 0; pointer-events: none; }

.intro-label {
  position: relative; z-index: 2;
  text-align: center; padding: 0 14%;
  font-family: Georgia, 'Palatino Linotype', serif;
  color: #3a2f22;
}
.intro-label .il-num {
  display: block; font-size: .74em; letter-spacing: .34em;
  text-transform: uppercase; color: #8a6d3a;
}
.intro-label .il-rule {
  display: block; height: 1px; width: 0; margin: 1.15em auto;
  background: linear-gradient(to right, transparent, #b08d4c, transparent);
}
.intro-label .il-txt {
  display: block; font-size: 1.42em; line-height: 1.35; letter-spacing: .04em;
}
.intro-label .il-txt.il-solo {
  font-size: 1.9em; letter-spacing: .3em; text-indent: .3em; text-transform: uppercase;
}
/* THE LARGE-TITLE OPT-IN. A chapter title on a half-title leaf is set at
   1.42em by default, which is right for a novel's "The Wild Wood" and
   too quiet for a heading like "DREAMS -- THEIR PROFOUND SIGNIFICANCE"
   that IS the argument of the chapter. The numeral above it grows with
   it so the pair keep their relation, and the measure widens because a
   bigger face inside the same 14% padding would break four ways. */
.intro-label.big { padding: 0 8%; }
.intro-label.big .il-txt { font-size: 2.05em; line-height: 1.24; letter-spacing: .02em; }
.intro-label.big .il-num { font-size: .86em; letter-spacing: .38em; }
.intro-label.big .il-txt.il-solo { font-size: 2.4em; }

/* An optional summary beneath the title. Set smaller, italic and narrower
   than the measure of a text page, so that it reads as apparatus rather than
   as the opening of the story it stands in front of. */
.intro-label .il-sum {
  display: block; max-width: 22em; margin: 1.45em auto 0;
  font-size: .86em; line-height: 1.62; letter-spacing: .012em;
  font-style: italic; color: #5c4a32;
}

/* the reveal runs when the page comes into view, not on a loop */
.intropage .il-num,
.intropage .il-rule,
.intropage .il-sum,
.intropage .il-txt { opacity: 0; }

.intropage.play .il-num  { animation: introUp   .70s ease-out .10s both; }
.intropage.play .il-rule { animation: introRule .60s ease-out .68s both; }
.intropage.play .il-txt  { animation: introUp   .80s ease-out 1.00s both; }
.intropage.play .il-sum  { animation: introUp   .90s ease-out 1.38s both; }

@keyframes introUp   { from { opacity: 0; transform: translateY(12px); }
                       to   { opacity: 1; transform: none; } }
@keyframes introRule { from { width: 0;  opacity: 0; }
                       to   { width: 42%; opacity: 1; } }

@media (prefers-reduced-motion: reduce) {
  .intropage .il-num, .intropage .il-txt, .intropage .il-sum { opacity: 1; }
  .intropage .il-rule { opacity: 1; width: 42%; }
  .intropage.play .il-num,
  .intropage.play .il-rule,
  .intropage.play .il-sum,
  .intropage.play .il-txt { animation: none; }
  /* the drawing stays, but stops moving */
  .chapanim * { animation: none !important; }
}


/* ---------- translator's footnote ----------
   Three notes in Crime and Punishment are the translator's, not Dostoevsky's.
   They are set smaller and ruled off so they can't be mistaken for the text. */
.tnote { font-size: .82em; line-height: 1.5; color: #5b4f3f; margin: 1.05em 0 .95em;
         padding-top: .55em; border-top: 1px solid rgba(90,70,40,.28); text-indent: 0; }
/* A note with no marker of its own gets a dagger; a note that carries its
   own asterisk marker prints that instead, so the reader can match it. */
.tnote.dagger::before { content: '\2020\2003'; color: #937a45; }
.tn-m { color: #937a45; margin-right: .6em; font-weight: 700; letter-spacing: .04em; }


/* ---------- part half-title ----------
   'Part I' owns a whole leaf, like a chapter half-title. .partanim is a
   full-bleed stage left deliberately empty: the per-part animation goes there
   later and needs no change to the page geometry. The page keeps the ordinary
   paper aesthetic rather than going dark. */
.paper.part { overflow: hidden; }

/* ---------- full-page plate ----------
   A leaf given over entirely to one picture. No folio, no text envelope,
   nothing beside it. object-fit: contain is what keeps the plate honest:
   the image is fitted INSIDE the leaf whatever its proportions, so a wide
   plan and a tall portrait are both shown whole rather than cropped to
   fill. The inset leaves the paper's own margin showing as a mount. */
.paper.plateleaf { overflow: hidden; }
.fullimg {
  position: absolute; inset: 7% 8%;
  display: flex; align-items: center; justify-content: center;
}
/* A CAPTIONED PLATE. The uncaptioned rules above are left exactly as they
   were; these only take effect when the block carries a caption, so the
   plates in the two earlier books render identically. The figure becomes
   the flex child and stacks picture over caption, and the picture's own
   max-height is reduced to leave the caption room on the leaf. */
.fullimg.hascap figure {
  margin: 0; display: flex; flex-direction: column;
  align-items: center; justify-content: center;
  max-width: 100%; max-height: 100%;
}
.fullimg.hascap img { max-height: 86%; }
.platecap {
  margin-top: .9em; padding: 0 4%;
  text-align: center; font-style: italic;
  font-family: Georgia,'Palatino Linotype',serif;
  font-size: .84em; line-height: 1.45; color: #6b5a3e;
}
.fullimg img {
  max-width: 100%; max-height: 100%;
  width: auto; height: auto; object-fit: contain;
  /* the plates in this series are line blocks on white; a soft border and
     a little shadow sit them on the cream stock instead of letting them
     float as a bright rectangle */
  background: #fdfaf2;
  padding: 2.2%;
  border: 1px solid rgba(122, 100, 60, .45);
  box-shadow: 0 2px 10px rgba(84, 26, 18, .18);
}

/* ---------- a plate that BLEEDS ----------
   Opt-in, and only when the block asks for it. Every rule above is left
   exactly as it was and none of them is overridden except through the
   .bleed class, so the two books already built with mounted plates render
   character for character as before.

   The difference is what the picture is FOR. A MOUNTED plate is an
   illustration laid ON the page with paper showing round it. A BLED plate
   IS the page: it runs to all four edges, and the caption therefore has no
   paper of its own to stand on, so it has to stand on the picture. Two
   consequences follow that the mounted rules never have to deal with.

   FIRST, object-fit HAS TO BECOME cover. `contain` fits the whole picture
   inside the leaf and leaves bars wherever the proportions disagree -- and
   on a bled plate those bars are the one thing the mode exists to abolish.
   `cover` fills the leaf and crops the overflow instead. That is a real
   cost, paid knowingly: a plate materially wider or narrower than the leaf
   loses its edges. The plates this was built for are portraits within a few
   per cent of the leaf's own proportion, so the crop is a sliver off the
   head and foot and no figure is cut.

   SECOND, the caption NEEDS ITS OWN GROUND. Light type over an unknown
   picture is legible on one plate and invisible on the next, so the caption
   carries a gradient scrim: opaque at the foot, clear a short way up, dark
   enough at every point in between that the words hold. The scrim is a
   background ON THE CAPTION BOX rather than a separate element, so it can
   never drift away from the words it exists to carry. */
.fullimg.bleed { inset: 0; }
.fullimg.bleed figure {
  margin: 0; position: absolute; inset: 0;
  display: block; max-width: none; max-height: none;
}
.fullimg.bleed img {
  width: 100%; height: 100%;
  max-width: none; max-height: none;
  object-fit: cover; object-position: center;
  /* the mount goes with the margin it used to sit in */
  background: none; padding: 0; border: 0; box-shadow: none;
}
.fullimg.bleed .platecap {
  position: absolute; left: 0; right: 0; bottom: 0;
  margin: 0; padding: 2.4em 7% 1.2em;
  color: #fdf3df;
  text-shadow: 0 1px 3px rgba(0, 0, 0, .85);
  background: linear-gradient(to top,
      rgba(18, 12, 7, .90) 0%,
      rgba(18, 12, 7, .80) 40%,
      rgba(18, 12, 7, .44) 72%,
      rgba(18, 12, 7, 0) 100%);
}
.parttitle { position: absolute; inset: 0; display: flex;
             flex-direction: column; align-items: center; justify-content: center; }
.partanim  { position: absolute; inset: 0; pointer-events: none; }
.part-label { position: relative; z-index: 2; text-align: center; padding: 0 14%;
              font-family: Georgia,'Palatino Linotype',serif; color: #3a2f22; }
.part-label .pt-rule { display: block; height: 1px; width: 0; margin: 1.5em auto;
              background: linear-gradient(to right, transparent, #b08d4c, transparent); }

/* The word sits small and widely tracked above a big display numeral. */
.part-label .pt-word { display: block; font-size: .95em; letter-spacing: .52em;
              text-indent: .52em; text-transform: uppercase; color: #7a6440;
              margin-bottom: .18em; }
.part-label .pt-num  { display: block; font-size: 5.6em; line-height: 1;
              letter-spacing: .10em; text-indent: .10em; font-weight: 700;
              text-transform: uppercase;
              background: linear-gradient(180deg, #6b5636 0%, #b08d4c 42%,
                                          #e6cd92 62%, #8a6f42 100%);
              -webkit-background-clip: text; background-clip: text;
              color: #8a6f42; -webkit-text-fill-color: transparent;
              filter: drop-shadow(0 2px 0 rgba(255,252,244,.55))
                      drop-shadow(0 -1px 0 rgba(74,58,32,.28)); }
/* The legend's name, under the numeral. Optional: only parts that carry a
   "sub" get one. Set in italic at text size so it reads as a name rather
   than competing with the display numeral above it. */
.part-label .pt-sub  { display: block; margin-top: .70em; font-size: 1.06em;
              font-style: italic; letter-spacing: .06em; line-height: 1.35;
              color: #6b5636; }
/* A label with no numeral -- "Epilogue" -- is set as one modest line. */
.parttitle.solo .pt-num { font-size: 2.3em; letter-spacing: .30em; text-indent: .30em; }

/* ---- the animated stage behind the lettering ----
   Three rings open outward from the centre and six motes drift up through
   them. Every looping period is distinct, per the out-of-phase rule that
   governs the covers; the one-shot reveals are staged so the rules draw,
   then the word, then the numeral lands. */
.partanim .pa-ring { position: absolute; left: 50%; top: 50%; border-radius: 50%;
              border: 1px solid rgba(176,141,76,.42); opacity: 0;
              transform: translate(-50%,-50%) scale(.2); }
.partanim .g0 { width: 34%; padding-bottom: 34%; }
.partanim .g1 { width: 52%; padding-bottom: 52%; border-color: rgba(176,141,76,.30); }
.partanim .g2 { width: 72%; padding-bottom: 72%; border-color: rgba(176,141,76,.20); }
.partanim .pa-mote { position: absolute; width: 5px; height: 5px; border-radius: 50%;
              background: rgba(176,141,76,.55); opacity: 0; }
.partanim .m0 { left: 22%; bottom: 16%; }
.partanim .m1 { left: 37%; bottom: 10%; }
.partanim .m2 { left: 52%; bottom: 19%; }
.partanim .m3 { left: 66%; bottom: 12%; }
.partanim .m4 { left: 78%; bottom: 22%; }
.partanim .m5 { left: 45%; bottom: 26%; }

/* ---- a drawing in place of the rings ----
   A book may hand its Book pages line art of their own, standing for the
   chapters in that Book. It is a full-bleed stage under the lettering, like
   .chapanim on a chapter half-title, and it REPLACES the rings rather than
   joining them -- the engine emits one stage or the other, never both.
   The drawings themselves live in the per-book scenes.css the builder
   appends; all this rule does is give them a stage to hang in. */
.partart { position: absolute; inset: 0; pointer-events: none; }

.parttitle .pt-word, .parttitle .pt-num, .parttitle .pt-rule,
.parttitle .pt-sub { opacity: 0; }
.parttitle.play .pt-rule:first-child { animation: ptRule .60s ease-out .10s both; }
.parttitle.play .pt-word { animation: ptUp .70s ease-out .46s both; }
.parttitle.play .pt-num  { animation: ptNum .95s cubic-bezier(.19,1,.22,1) .62s both; }
/* The legend's name arrives after the numeral has settled, and before
   the closing rule draws itself. */
.parttitle.play .pt-sub  { animation: ptUp .70s ease-out 1.16s both; }
.parttitle.play .pt-rule:last-child  { animation: ptRule .60s ease-out 1.62s both; }
.parttitle.play .g0 { animation: ptRing 1.50s cubic-bezier(.22,.9,.3,1) .30s both,
                                 ptBreathe 7.30s ease-in-out 1.9s infinite; }
.parttitle.play .g1 { animation: ptRing 1.70s cubic-bezier(.22,.9,.3,1) .48s both,
                                 ptBreathe 9.10s ease-in-out 2.2s infinite; }
.parttitle.play .g2 { animation: ptRing 1.90s cubic-bezier(.22,.9,.3,1) .66s both,
                                 ptBreathe 11.40s ease-in-out 2.6s infinite; }
.parttitle.play .m0 { animation: ptMote 6.20s ease-in-out 1.40s infinite; }
.parttitle.play .m1 { animation: ptMote 7.10s ease-in-out 1.95s infinite; }
.parttitle.play .m2 { animation: ptMote 8.30s ease-in-out 2.40s infinite; }
.parttitle.play .m3 { animation: ptMote 9.40s ease-in-out 1.70s infinite; }
.parttitle.play .m4 { animation: ptMote 10.60s ease-in-out 2.80s infinite; }
.parttitle.play .m5 { animation: ptMote 11.90s ease-in-out 3.20s infinite; }

/* ---------- the sand sequence on a part page ----------
   Three stages, in this order: the Book's title fades in letter by letter,
   the letters blow away downwind, and the numeral resolves in the space they
   leave. build.py bakes each letter's two delays and its own drift into
   inline custom properties, so the stagger is scaled to the length of the
   title and every Book page runs to the same clock however long its title is.

   The title is laid over the whole leaf rather than stacked above the label,
   so the numeral appears exactly where the title was standing rather than
   somewhere underneath it. Words are inline-block: a line may break between
   words and never inside one.

   Note on the two animations per letter. sandOut is declared with `both`, so
   during its delay it holds its own first frame -- and its first frame is the
   fully-arrived letter, which is precisely what sandIn finished on. That is
   what lets the two run back to back on one element without the second one
   wiping out the first while it waits. */
/* Tracking and word space have to be set against each other. These titles
   are capitals, and tracked-out capitals need a word space that grows with
   the tracking -- at .12em of tracking against a .42em gap the two readings
   were close enough that the line ran together and you could not see where
   one word ended. The tracking is now half what it was and the word space
   two and a half times, which puts them an order of magnitude apart. */
.parttitle.sandseq .pt-sand { position: absolute; inset: 10% 11%; z-index: 3;
              display: flex; flex-wrap: wrap; gap: .35em 0;
              align-items: center; justify-content: center; align-content: center;
              font-family: Georgia,'Palatino Linotype',serif; color: #3a2f22;
              font-size: 1.06em; line-height: 1.85; letter-spacing: .06em;
              pointer-events: none; }

/* The word-space, and why it is a margin rather than the flex gap above.
   The letters are wrapped in one aria-hidden span so a screen reader gets the
   title once from the container instead of spelling it out. That wrapper is
   the ONLY child of the flex box, so flex gap had nothing to apply between --
   and because the builder joins the word spans with no whitespace at all,
   there was no word-space in the markup either. The words were separated by
   precisely the trailing letter-spacing of their last letter, which is to say
   by exactly the same distance as the letters inside them, which is exactly
   what a reader reported: you could not see where one word ended.

   display:contents lifts the words back out to be the flex items, and the
   margin gives them a word-space that holds whatever layout context they end
   up in. Belt and braces on purpose: this went wrong once already. */
.parttitle.sandseq .pt-sand .sandwrap { display: contents; }
.parttitle.sandseq .pt-sand .w { display: inline-block; white-space: nowrap;
              margin-right: 1.05em; }
.parttitle.sandseq .pt-sand .w:last-child { margin-right: 0; }
.parttitle.sandseq .pt-sand .l { display: inline-block; opacity: 0;
              will-change: transform, opacity, filter; }
/* The hold. The last letter of a title arrives at 1.55s -- one second of
   stagger plus its own .55s -- so the hold is what is left for reading it,
   not the whole of the number below. At 2.20s the assembled title stood for
   two thirds of a second, which is not long enough to read a line that can
   run to two hundred and fifty characters. At 5.60s it stands for four
   seconds. Everything downstream is timed off this number. */
.parttitle.sandseq.play .pt-sand .l {
              animation: sandIn .55s ease-out var(--fd) both,
                         sandOut 1.05s cubic-bezier(.42,0,.86,.24)
                                 calc(5.60s + var(--bd)) both; }

/* The numeral waits for the title to be most of the way gone: the first
   letters are still in the air when it starts to arrive. These four move with
   the hold above -- 3.40s later than they were, because the hold is. */
.parttitle.sandseq.play .pt-rule:first-child { animation: ptRule .60s ease-out 7.26s both; }
.parttitle.sandseq.play .pt-word { animation: ptUp .70s ease-out 7.42s both; }
.parttitle.sandseq.play .pt-num  { animation: ptNum .95s cubic-bezier(.19,1,.22,1) 7.58s both; }
.parttitle.sandseq.play .pt-rule:last-child { animation: ptRule .60s ease-out 8.00s both; }

@keyframes sandIn  { from { opacity:0; transform: translateY(12px) scale(.94);
                            filter: blur(3px); }
                     to   { opacity:1; transform:none; filter: blur(0); } }
@keyframes sandOut { 0%   { opacity:1; transform:none; filter: blur(0); }
                     22%  { opacity:.94;
                            transform: translate(calc(var(--dx) * .07), calc(var(--dy) * .07))
                                       rotate(calc(var(--r) * .05)); filter: blur(.4px); }
                     100% { opacity:0;
                            transform: translate(var(--dx), var(--dy))
                                       rotate(var(--r)) scale(.55); filter: blur(4px); } }

/* A reader who has asked for less motion gets the same three facts without
   the weather: the title simply is there, and the numeral simply is there. */
@media (prefers-reduced-motion: reduce) {
  .parttitle.sandseq .pt-sand .l,
  .parttitle.sandseq.play .pt-sand .l { animation: none; opacity: 1; }
  .parttitle.sandseq.play .pt-word,
  .parttitle.sandseq.play .pt-num,
  .parttitle.sandseq.play .pt-rule { animation-delay: 0s; }
  /* the Book's drawing stays on the page, but stops being drawn */
  .partart * { animation: none !important; }
}

@keyframes ptUp   { from { opacity:0; transform: translateY(14px); } to { opacity:1; transform:none; } }
@keyframes ptRule { from { width:0; opacity:0; } to { width:46%; opacity:1; } }
@keyframes ptNum  { 0%   { opacity:0; transform: translateY(26px) scale(.82); letter-spacing:.34em; }
                    100% { opacity:1; transform:none; letter-spacing:.10em; } }
@keyframes ptRing { from { opacity:0; transform: translate(-50%,-50%) scale(.2); }
                    to   { opacity:1; transform: translate(-50%,-50%) scale(1); } }
@keyframes ptBreathe { 0%,100% { opacity:.55; } 50% { opacity:1; } }
@keyframes ptMote { 0%   { opacity:0; transform: translateY(0) scale(.7); }
                    18%  { opacity:.85; }
                    82%  { opacity:.85; }
                    100% { opacity:0; transform: translateY(-190px) scale(1.25); } }


/* ---------- signature and subhead ----------
   Both were emitted by the engine but never styled: 75 signature lines across
   Little Women, Pride and Prejudice and The Jungle Book were rendering as
   ordinary paragraphs. A signature closes a letter, so it sits right and
   italic; a subhead is a minor division inside a chapter. */
.sig { text-align: right; font-style: italic; text-indent: 0;
       margin: .35em 0 1.05em; padding-right: .4em; color: #40362a; }
.subhead { text-align: center; text-indent: 0; margin: 1.35em 0 .85em;
           font-size: .93em; letter-spacing: .17em; text-transform: uppercase;
           color: #5b4a33; }

/* A SECTION HEAD -- the third level of division, added for The Theory of
   Moral Sentiments, which sets Part over Section over Chapter. It has to read
   as LARGER than a chapter head and SMALLER than a Part leaf, and the way it
   does that is by being ruled rather than by being loud: rules above and
   below mark it as a boundary, while the type stays close to the chapter
   head's size so the page does not acquire a second shouting voice. */
.sect {
  margin: 1.6em 4% 1.4em; text-align: center;
  border-top: 1.2px solid #c3b291;
  border-bottom: 1.2px solid #c3b291;
  padding: .55em 0 .6em;
}
.sect-num {
  display: block; font-variant: small-caps; letter-spacing: .16em;
  font-size: .82em; color: #8a7350; margin-bottom: .18em;
}
.sect-ttl {
  display: block; font-style: italic; font-size: 1.02em;
  line-height: 1.45; color: #4a3b28;
}

/* AN EPIGRAPH WITH ITS SOURCE, SET AS ONE OBJECT.  Udolpho heads every one of
   its 57 chapters with a quotation and names the poet under it, and eight more
   stand inside the prose.  The lines are centred italic like .verse; the rule
   beneath is what separates the quotation from the chapter it stands over, and
   the source is set small and spaced so that it reads as a signature rather
   than as a last line of the poem.  Measured as one block by the paginator, so
   a poet is never left stranded at the top of the following page. */
.motto {
  margin: 1.15em 8% 1.6em;
  text-indent: 0;
}
.motto-v {
  text-align: center; font-style: italic;
  font-size: .93em; line-height: 1.6; color: #4a3b28;
}
.motto-src {
  margin-top: .45em; padding-top: .4em;
  border-top: 1px solid rgba(150,124,74,.42);
  text-align: center; font-style: normal;
  font-variant: small-caps; letter-spacing: .15em; text-indent: .15em;
  font-size: .74em; color: #8a7350;
}
/* Directly under a chapter head the motto wants a little more air above it and
   a shade less below, so the quotation sits with the heading rather than
   floating between the heading and the first paragraph. */
.chead + .motto { margin-top: 1.5em; margin-bottom: 1.9em; }


/* ---------- per-page drawings ---------- */
/* The drawing fills the stage and sits under the type; the type's
   own z-index keeps it on top. */
.chapanim svg.scene { position: absolute; inset: 0; width: 100%; height: 100%; display: block; }

/* scene 0 -- a nursery ceiling, panelled, with stars in it */
.chapanim .s0-u0 { stroke-dasharray: 30.2 41.8; }
.chapanim .s0-u0 { animation: s0U0 14.83s linear 0.00s infinite; }
@keyframes s0U0 { from { stroke-dashoffset: 72.0; } to { stroke-dashoffset: 0; } }
.chapanim .s0-u1 { stroke-dasharray: 20.2 27.8; }
.chapanim .s0-u1 { animation: s0U1 15.14s linear 0.10s infinite; }
@keyframes s0U1 { from { stroke-dashoffset: 48.0; } to { stroke-dashoffset: 0; } }
.chapanim .s0-u2 { stroke-dasharray: 33.6 46.4; }
.chapanim .s0-u2 { animation: s0U2 15.45s linear 0.20s infinite; }
@keyframes s0U2 { from { stroke-dashoffset: 80.0; } to { stroke-dashoffset: 0; } }
.chapanim .s0-u3 { stroke-dasharray: 23.5 32.5; }
.chapanim .s0-u3 { animation: s0U3 15.76s linear 0.30s infinite; }
@keyframes s0U3 { from { stroke-dashoffset: 56.0; } to { stroke-dashoffset: 0; } }
.chapanim .s0-v0 { stroke-dasharray: 55.4 76.6; }
.chapanim .s0-v0 { animation: s0V0 5.13s linear 0.00s infinite; }
@keyframes s0V0 { from { stroke-dashoffset: 132.0; } to { stroke-dashoffset: 0; } }
.chapanim .s0-v1 { stroke-dasharray: 55.4 76.6; }
.chapanim .s0-v1 { animation: s0V1 5.40s linear 0.05s infinite; }
@keyframes s0V1 { from { stroke-dashoffset: 132.0; } to { stroke-dashoffset: 0; } }
.chapanim .s0-v2 { stroke-dasharray: 55.4 76.6; }
.chapanim .s0-v2 { animation: s0V2 5.67s linear 0.10s infinite; }
@keyframes s0V2 { from { stroke-dashoffset: 132.0; } to { stroke-dashoffset: 0; } }
.chapanim .s0-v3 { stroke-dasharray: 55.4 76.6; }
.chapanim .s0-v3 { animation: s0V3 5.94s linear 0.15s infinite; }
@keyframes s0V3 { from { stroke-dashoffset: 132.0; } to { stroke-dashoffset: 0; } }
.chapanim .s0-v4 { stroke-dasharray: 55.4 76.6; }
.chapanim .s0-v4 { animation: s0V4 6.21s linear 0.20s infinite; }
@keyframes s0V4 { from { stroke-dashoffset: 132.0; } to { stroke-dashoffset: 0; } }
.chapanim .s0-h0 { stroke-dasharray: 124.3 171.7; }
.chapanim .s0-h0 { animation: s0H0 6.76s linear 0.00s infinite; }
@keyframes s0H0 { from { stroke-dashoffset: 296.0; } to { stroke-dashoffset: 0; } }
.chapanim .s0-h1 { stroke-dasharray: 124.3 171.7; }
.chapanim .s0-h1 { animation: s0H1 7.07s linear 0.10s infinite; }
@keyframes s0H1 { from { stroke-dashoffset: 296.0; } to { stroke-dashoffset: 0; } }
.chapanim .s0-h2 { stroke-dasharray: 124.3 171.7; }
.chapanim .s0-h2 { animation: s0H2 7.38s linear 0.20s infinite; }
@keyframes s0H2 { from { stroke-dashoffset: 296.0; } to { stroke-dashoffset: 0; } }
.chapanim .s0-st0 { stroke-dasharray: 37.0 51.0; }
.chapanim .s0-st0 { animation: s0St0 8.06s linear 0.00s infinite; }
@keyframes s0St0 { from { stroke-dashoffset: 88.0; } to { stroke-dashoffset: 0; } }
.chapanim .s0-st1 { stroke-dasharray: 37.0 51.0; }
.chapanim .s0-st1 { animation: s0St1 8.39s linear 0.20s infinite; }
@keyframes s0St1 { from { stroke-dashoffset: 88.0; } to { stroke-dashoffset: 0; } }
.chapanim .s0-st2 { stroke-dasharray: 37.0 51.0; }
.chapanim .s0-st2 { animation: s0St2 8.72s linear 0.40s infinite; }
@keyframes s0St2 { from { stroke-dashoffset: 88.0; } to { stroke-dashoffset: 0; } }

/* scene 1 -- a passage of doorways, receding */
.chapanim .s1-u0 { stroke-dasharray: 118.9 164.3; }
.chapanim .s1-u0 { animation: s1U0 15.24s linear 0.00s infinite; }
@keyframes s1U0 { from { stroke-dashoffset: 283.2; } to { stroke-dashoffset: 0; } }
.chapanim .s1-u1 { stroke-dasharray: 96.8 133.6; }
.chapanim .s1-u1 { animation: s1U1 15.61s linear 0.14s infinite; }
@keyframes s1U1 { from { stroke-dashoffset: 230.4; } to { stroke-dashoffset: 0; } }
.chapanim .s1-u2 { stroke-dasharray: 74.6 103.0; }
.chapanim .s1-u2 { animation: s1U2 15.98s linear 0.28s infinite; }
@keyframes s1U2 { from { stroke-dashoffset: 177.6; } to { stroke-dashoffset: 0; } }
.chapanim .s1-dl0 { stroke-dasharray: 134.4 185.6; }
.chapanim .s1-dl0 { animation: s1Dl0 5.54s linear 0.00s infinite; }
@keyframes s1Dl0 { from { stroke-dashoffset: 320.0; } to { stroke-dashoffset: 0; } }
.chapanim .s1-dr0 { stroke-dasharray: 134.4 185.6; }
.chapanim .s1-dr0 { animation: s1Dr0 7.01s linear 0.00s infinite; }
@keyframes s1Dr0 { from { stroke-dashoffset: 320.0; } to { stroke-dashoffset: 0; } }
.chapanim .s1-dl1 { stroke-dasharray: 109.2 150.8; }
.chapanim .s1-dl1 { animation: s1Dl1 5.85s linear 0.08s infinite; }
@keyframes s1Dl1 { from { stroke-dashoffset: 260.0; } to { stroke-dashoffset: 0; } }
.chapanim .s1-dr1 { stroke-dasharray: 109.2 150.8; }
.chapanim .s1-dr1 { animation: s1Dr1 7.30s linear 0.08s infinite; }
@keyframes s1Dr1 { from { stroke-dashoffset: 260.0; } to { stroke-dashoffset: 0; } }
.chapanim .s1-dl2 { stroke-dasharray: 84.0 116.0; }
.chapanim .s1-dl2 { animation: s1Dl2 6.16s linear 0.16s infinite; }
@keyframes s1Dl2 { from { stroke-dashoffset: 200.0; } to { stroke-dashoffset: 0; } }
.chapanim .s1-dr2 { stroke-dasharray: 84.0 116.0; }
.chapanim .s1-dr2 { animation: s1Dr2 7.59s linear 0.16s infinite; }
@keyframes s1Dr2 { from { stroke-dashoffset: 200.0; } to { stroke-dashoffset: 0; } }
.chapanim .s1-dl3 { stroke-dasharray: 58.8 81.2; }
.chapanim .s1-dl3 { animation: s1Dl3 6.47s linear 0.24s infinite; }
@keyframes s1Dl3 { from { stroke-dashoffset: 140.0; } to { stroke-dashoffset: 0; } }
.chapanim .s1-dr3 { stroke-dasharray: 58.8 81.2; }
.chapanim .s1-dr3 { animation: s1Dr3 7.88s linear 0.24s infinite; }
@keyframes s1Dr3 { from { stroke-dashoffset: 140.0; } to { stroke-dashoffset: 0; } }
.chapanim .s1-fl { stroke-dasharray: 121.0 167.0; }
.chapanim .s1-fl { animation: s1Fl 8.45s linear 0.40s infinite; }
@keyframes s1Fl { from { stroke-dashoffset: 288.0; } to { stroke-dashoffset: 0; } }

/* scene 2 -- a spinning wheel */
.chapanim .s2-u0 { stroke-dasharray: 14.3 19.7; }
.chapanim .s2-u0 { animation: s2U0 15.65s linear 0.00s infinite; }
@keyframes s2U0 { from { stroke-dashoffset: 34.0; } to { stroke-dashoffset: 0; } }
.chapanim .s2-u1 { stroke-dasharray: 14.3 19.7; }
.chapanim .s2-u1 { animation: s2U1 15.88s linear 0.07s infinite; }
@keyframes s2U1 { from { stroke-dashoffset: 34.0; } to { stroke-dashoffset: 0; } }
.chapanim .s2-u2 { stroke-dasharray: 14.3 19.7; }
.chapanim .s2-u2 { animation: s2U2 16.11s linear 0.14s infinite; }
@keyframes s2U2 { from { stroke-dashoffset: 34.0; } to { stroke-dashoffset: 0; } }
.chapanim .s2-u3 { stroke-dasharray: 14.3 19.7; }
.chapanim .s2-u3 { animation: s2U3 16.34s linear 0.21s infinite; }
@keyframes s2U3 { from { stroke-dashoffset: 34.0; } to { stroke-dashoffset: 0; } }
.chapanim .s2-u4 { stroke-dasharray: 14.3 19.7; }
.chapanim .s2-u4 { animation: s2U4 16.57s linear 0.28s infinite; }
@keyframes s2U4 { from { stroke-dashoffset: 34.0; } to { stroke-dashoffset: 0; } }
.chapanim .s2-u5 { stroke-dasharray: 14.3 19.7; }
.chapanim .s2-u5 { animation: s2U5 16.80s linear 0.35s infinite; }
@keyframes s2U5 { from { stroke-dashoffset: 34.0; } to { stroke-dashoffset: 0; } }
.chapanim .s2-u6 { stroke-dasharray: 14.3 19.7; }
.chapanim .s2-u6 { animation: s2U6 17.03s linear 0.42s infinite; }
@keyframes s2U6 { from { stroke-dashoffset: 34.0; } to { stroke-dashoffset: 0; } }
.chapanim .s2-ur { stroke-dasharray: 97.4 134.6; }
.chapanim .s2-ur { animation: s2Ur 17.56s linear 0.30s infinite; }
@keyframes s2Ur { from { stroke-dashoffset: 232.0; } to { stroke-dashoffset: 0; } }
.chapanim .s2-rim { stroke-dasharray: 163.8 226.2; }
.chapanim .s2-rim { animation: s2Rim 5.95s linear 0.00s infinite; }
@keyframes s2Rim { from { stroke-dashoffset: 390.0; } to { stroke-dashoffset: 0; } }
.chapanim .s2-hub { stroke-dasharray: 23.9 33.1; }
.chapanim .s2-hub { animation: s2Hub 6.24s linear 0.20s infinite; }
@keyframes s2Hub { from { stroke-dashoffset: 57.0; } to { stroke-dashoffset: 0; } }
.chapanim .s2-sp0 { stroke-dasharray: 22.3 30.7; }
.chapanim .s2-sp0 { animation: s2Sp0 6.56s linear 0.00s infinite; }
@keyframes s2Sp0 { from { stroke-dashoffset: 53.0; } to { stroke-dashoffset: 0; } }
.chapanim .s2-sp1 { stroke-dasharray: 22.3 30.7; }
.chapanim .s2-sp1 { animation: s2Sp1 6.75s linear 0.04s infinite; }
@keyframes s2Sp1 { from { stroke-dashoffset: 53.0; } to { stroke-dashoffset: 0; } }
.chapanim .s2-sp2 { stroke-dasharray: 22.3 30.7; }
.chapanim .s2-sp2 { animation: s2Sp2 6.94s linear 0.08s infinite; }
@keyframes s2Sp2 { from { stroke-dashoffset: 53.0; } to { stroke-dashoffset: 0; } }
.chapanim .s2-sp3 { stroke-dasharray: 22.3 30.7; }
.chapanim .s2-sp3 { animation: s2Sp3 7.13s linear 0.12s infinite; }
@keyframes s2Sp3 { from { stroke-dashoffset: 53.0; } to { stroke-dashoffset: 0; } }
.chapanim .s2-sp4 { stroke-dasharray: 22.3 30.7; }
.chapanim .s2-sp4 { animation: s2Sp4 7.32s linear 0.16s infinite; }
@keyframes s2Sp4 { from { stroke-dashoffset: 53.0; } to { stroke-dashoffset: 0; } }
.chapanim .s2-sp5 { stroke-dasharray: 22.3 30.7; }
.chapanim .s2-sp5 { animation: s2Sp5 7.51s linear 0.20s infinite; }
@keyframes s2Sp5 { from { stroke-dashoffset: 53.0; } to { stroke-dashoffset: 0; } }
.chapanim .s2-sp6 { stroke-dasharray: 22.3 30.7; }
.chapanim .s2-sp6 { animation: s2Sp6 7.70s linear 0.24s infinite; }
@keyframes s2Sp6 { from { stroke-dashoffset: 53.0; } to { stroke-dashoffset: 0; } }
.chapanim .s2-sp7 { stroke-dasharray: 22.3 30.7; }
.chapanim .s2-sp7 { animation: s2Sp7 7.89s linear 0.28s infinite; }
@keyframes s2Sp7 { from { stroke-dashoffset: 53.0; } to { stroke-dashoffset: 0; } }
.chapanim .s2-lg1 { stroke-dasharray: 37.0 51.0; }
.chapanim .s2-lg1 { animation: s2Lg1 8.48s linear 0.30s infinite; }
@keyframes s2Lg1 { from { stroke-dashoffset: 88.0; } to { stroke-dashoffset: 0; } }
.chapanim .s2-lg2 { stroke-dasharray: 37.0 51.0; }
.chapanim .s2-lg2 { animation: s2Lg2 8.76s linear 0.34s infinite; }
@keyframes s2Lg2 { from { stroke-dashoffset: 88.0; } to { stroke-dashoffset: 0; } }
.chapanim .s2-bch { stroke-dasharray: 189.0 261.0; }
.chapanim .s2-bch { animation: s2Bch 9.04s linear 0.38s infinite; }
@keyframes s2Bch { from { stroke-dashoffset: 450.0; } to { stroke-dashoffset: 0; } }
.chapanim .s2-spn { stroke-dasharray: 46.2 63.8; }
.chapanim .s2-spn { animation: s2Spn 9.32s linear 0.42s infinite; }
@keyframes s2Spn { from { stroke-dashoffset: 110.0; } to { stroke-dashoffset: 0; } }
.chapanim .s2-band { stroke-dasharray: 71.4 98.6; }
.chapanim .s2-band { animation: s2Band 9.60s linear 0.46s infinite; }
@keyframes s2Band { from { stroke-dashoffset: 170.0; } to { stroke-dashoffset: 0; } }

/* scene 3 -- a silver cup on its tray */
.chapanim .s3-u0 { stroke-dasharray: 21.0 29.0; }
.chapanim .s3-u0 { animation: s3U0 16.06s linear 0.00s infinite; }
@keyframes s3U0 { from { stroke-dashoffset: 50.0; } to { stroke-dashoffset: 0; } }
.chapanim .s3-u1 { stroke-dasharray: 21.0 29.0; }
.chapanim .s3-u1 { animation: s3U1 16.35s linear 0.09s infinite; }
@keyframes s3U1 { from { stroke-dashoffset: 50.0; } to { stroke-dashoffset: 0; } }
.chapanim .s3-u2 { stroke-dasharray: 21.0 29.0; }
.chapanim .s3-u2 { animation: s3U2 16.64s linear 0.18s infinite; }
@keyframes s3U2 { from { stroke-dashoffset: 50.0; } to { stroke-dashoffset: 0; } }
.chapanim .s3-u3 { stroke-dasharray: 21.0 29.0; }
.chapanim .s3-u3 { animation: s3U3 16.93s linear 0.27s infinite; }
@keyframes s3U3 { from { stroke-dashoffset: 50.0; } to { stroke-dashoffset: 0; } }
.chapanim .s3-cup { stroke-dasharray: 105.0 145.0; }
.chapanim .s3-cup { animation: s3Cup 6.36s linear 0.00s infinite; }
@keyframes s3Cup { from { stroke-dashoffset: 250.0; } to { stroke-dashoffset: 0; } }
.chapanim .s3-lip { stroke-dasharray: 35.3 48.7; }
.chapanim .s3-lip { animation: s3Lip 6.67s linear 0.15s infinite; }
@keyframes s3Lip { from { stroke-dashoffset: 84.0; } to { stroke-dashoffset: 0; } }
.chapanim .s3-hl { stroke-dasharray: 20.2 27.8; }
.chapanim .s3-hl { animation: s3Hl 7.03s linear 0.25s infinite; }
@keyframes s3Hl { from { stroke-dashoffset: 48.0; } to { stroke-dashoffset: 0; } }
.chapanim .s3-stem { stroke-dasharray: 7.6 10.4; }
.chapanim .s3-stem { animation: s3Stem 7.39s linear 0.30s infinite; }
@keyframes s3Stem { from { stroke-dashoffset: 18.0; } to { stroke-dashoffset: 0; } }
.chapanim .s3-tray { stroke-dasharray: 142.8 197.2; }
.chapanim .s3-tray { animation: s3Tray 7.85s linear 0.35s infinite; }
@keyframes s3Tray { from { stroke-dashoffset: 340.0; } to { stroke-dashoffset: 0; } }
.chapanim .s3-tr2 { stroke-dasharray: 115.1 158.9; }
.chapanim .s3-tr2 { animation: s3Tr2 8.33s linear 0.45s infinite; }
@keyframes s3Tr2 { from { stroke-dashoffset: 274.0; } to { stroke-dashoffset: 0; } }

/* scene 4 -- an egg in its cup, and a spoon */
.chapanim .s4-u0 { stroke-dasharray: 30.2 41.8; }
.chapanim .s4-u0 { animation: s4U0 16.47s linear 0.00s infinite; }
@keyframes s4U0 { from { stroke-dashoffset: 72.0; } to { stroke-dashoffset: 0; } }
.chapanim .s4-u1 { stroke-dasharray: 20.2 27.8; }
.chapanim .s4-u1 { animation: s4U1 16.78s linear 0.10s infinite; }
@keyframes s4U1 { from { stroke-dashoffset: 48.0; } to { stroke-dashoffset: 0; } }
.chapanim .s4-u2 { stroke-dasharray: 33.6 46.4; }
.chapanim .s4-u2 { animation: s4U2 17.09s linear 0.20s infinite; }
@keyframes s4U2 { from { stroke-dashoffset: 80.0; } to { stroke-dashoffset: 0; } }
.chapanim .s4-u3 { stroke-dasharray: 23.5 32.5; }
.chapanim .s4-u3 { animation: s4U3 17.40s linear 0.30s infinite; }
@keyframes s4U3 { from { stroke-dashoffset: 56.0; } to { stroke-dashoffset: 0; } }
.chapanim .s4-egg { stroke-dasharray: 55.4 76.6; }
.chapanim .s4-egg { animation: s4Egg 6.77s linear 0.00s infinite; }
@keyframes s4Egg { from { stroke-dashoffset: 132.0; } to { stroke-dashoffset: 0; } }
.chapanim .s4-cup { stroke-dasharray: 84.0 116.0; }
.chapanim .s4-cup { animation: s4Cup 7.17s linear 0.12s infinite; }
@keyframes s4Cup { from { stroke-dashoffset: 200.0; } to { stroke-dashoffset: 0; } }
.chapanim .s4-rim { stroke-dasharray: 28.6 39.4; }
.chapanim .s4-rim { animation: s4Rim 7.48s linear 0.20s infinite; }
@keyframes s4Rim { from { stroke-dashoffset: 68.0; } to { stroke-dashoffset: 0; } }
.chapanim .s4-ft { stroke-dasharray: 51.2 70.8; }
.chapanim .s4-ft { animation: s4Ft 7.86s linear 0.28s infinite; }
@keyframes s4Ft { from { stroke-dashoffset: 122.0; } to { stroke-dashoffset: 0; } }
.chapanim .s4-sh { stroke-dasharray: 46.2 63.8; }
.chapanim .s4-sh { animation: s4Sh 8.28s linear 0.30s infinite; }
@keyframes s4Sh { from { stroke-dashoffset: 110.0; } to { stroke-dashoffset: 0; } }
.chapanim .s4-sb { stroke-dasharray: 42.0 58.0; }
.chapanim .s4-sb { animation: s4Sb 8.70s linear 0.40s infinite; }
@keyframes s4Sb { from { stroke-dashoffset: 100.0; } to { stroke-dashoffset: 0; } }

/* scene 5 -- a miner's cap-lamp */
.chapanim .s5-u0 { stroke-dasharray: 118.9 164.3; }
.chapanim .s5-u0 { animation: s5U0 16.88s linear 0.00s infinite; }
@keyframes s5U0 { from { stroke-dashoffset: 283.2; } to { stroke-dashoffset: 0; } }
.chapanim .s5-u1 { stroke-dasharray: 96.8 133.6; }
.chapanim .s5-u1 { animation: s5U1 17.25s linear 0.14s infinite; }
@keyframes s5U1 { from { stroke-dashoffset: 230.4; } to { stroke-dashoffset: 0; } }
.chapanim .s5-u2 { stroke-dasharray: 74.6 103.0; }
.chapanim .s5-u2 { animation: s5U2 17.62s linear 0.28s infinite; }
@keyframes s5U2 { from { stroke-dashoffset: 177.6; } to { stroke-dashoffset: 0; } }
.chapanim .s5-body { stroke-dasharray: 117.6 162.4; }
.chapanim .s5-body { animation: s5Body 7.18s linear 0.00s infinite; }
@keyframes s5Body { from { stroke-dashoffset: 280.0; } to { stroke-dashoffset: 0; } }
.chapanim .s5-spout { stroke-dasharray: 63.0 87.0; }
.chapanim .s5-spout { animation: s5Spout 7.55s linear 0.12s infinite; }
@keyframes s5Spout { from { stroke-dashoffset: 150.0; } to { stroke-dashoffset: 0; } }
.chapanim .s5-hook { stroke-dasharray: 39.5 54.5; }
.chapanim .s5-hook { animation: s5Hook 7.97s linear 0.20s infinite; }
@keyframes s5Hook { from { stroke-dashoffset: 94.0; } to { stroke-dashoffset: 0; } }
.chapanim .s5-band { stroke-dasharray: 40.3 55.7; }
.chapanim .s5-band { animation: s5Band 8.35s linear 0.28s infinite; }
@keyframes s5Band { from { stroke-dashoffset: 96.0; } to { stroke-dashoffset: 0; } }
.chapanim .s5-ry0 { stroke-dasharray: 12.6 17.4; }
.chapanim .s5-ry0 { animation: s5Ry0 8.79s linear 0.00s infinite; }
@keyframes s5Ry0 { from { stroke-dashoffset: 30.0; } to { stroke-dashoffset: 0; } }
.chapanim .s5-ry1 { stroke-dasharray: 12.6 17.4; }
.chapanim .s5-ry1 { animation: s5Ry1 9.11s linear 0.10s infinite; }
@keyframes s5Ry1 { from { stroke-dashoffset: 30.0; } to { stroke-dashoffset: 0; } }
.chapanim .s5-ry2 { stroke-dasharray: 12.6 17.4; }
.chapanim .s5-ry2 { animation: s5Ry2 9.29s linear 0.20s infinite; }
@keyframes s5Ry2 { from { stroke-dashoffset: 30.0; } to { stroke-dashoffset: 0; } }
.chapanim .s5-ry3 { stroke-dasharray: 12.6 17.4; }
.chapanim .s5-ry3 { animation: s5Ry3 9.54s linear 0.30s infinite; }
@keyframes s5Ry3 { from { stroke-dashoffset: 30.0; } to { stroke-dashoffset: 0; } }

/* scene 6 -- a pickaxe and a shovel crossed under a gallery arch */
.chapanim .s6-u0 { stroke-dasharray: 14.3 19.7; }
.chapanim .s6-u0 { animation: s6U0 17.29s linear 0.00s infinite; }
@keyframes s6U0 { from { stroke-dashoffset: 34.0; } to { stroke-dashoffset: 0; } }
.chapanim .s6-u1 { stroke-dasharray: 14.3 19.7; }
.chapanim .s6-u1 { animation: s6U1 17.52s linear 0.07s infinite; }
@keyframes s6U1 { from { stroke-dashoffset: 34.0; } to { stroke-dashoffset: 0; } }
.chapanim .s6-u2 { stroke-dasharray: 14.3 19.7; }
.chapanim .s6-u2 { animation: s6U2 17.75s linear 0.14s infinite; }
@keyframes s6U2 { from { stroke-dashoffset: 34.0; } to { stroke-dashoffset: 0; } }
.chapanim .s6-u3 { stroke-dasharray: 14.3 19.7; }
.chapanim .s6-u3 { animation: s6U3 17.98s linear 0.21s infinite; }
@keyframes s6U3 { from { stroke-dashoffset: 34.0; } to { stroke-dashoffset: 0; } }
.chapanim .s6-u4 { stroke-dasharray: 14.3 19.7; }
.chapanim .s6-u4 { animation: s6U4 18.21s linear 0.28s infinite; }
@keyframes s6U4 { from { stroke-dashoffset: 34.0; } to { stroke-dashoffset: 0; } }
.chapanim .s6-u5 { stroke-dasharray: 14.3 19.7; }
.chapanim .s6-u5 { animation: s6U5 18.44s linear 0.35s infinite; }
@keyframes s6U5 { from { stroke-dashoffset: 34.0; } to { stroke-dashoffset: 0; } }
.chapanim .s6-u6 { stroke-dasharray: 14.3 19.7; }
.chapanim .s6-u6 { animation: s6U6 18.67s linear 0.42s infinite; }
@keyframes s6U6 { from { stroke-dashoffset: 34.0; } to { stroke-dashoffset: 0; } }
.chapanim .s6-ur { stroke-dasharray: 97.4 134.6; }
.chapanim .s6-ur { animation: s6Ur 19.20s linear 0.30s infinite; }
@keyframes s6Ur { from { stroke-dashoffset: 232.0; } to { stroke-dashoffset: 0; } }
.chapanim .s6-fr1 { stroke-dasharray: 52.1 71.9; }
.chapanim .s6-fr1 { animation: s6Fr1 7.66s linear 0.00s infinite; }
@keyframes s6Fr1 { from { stroke-dashoffset: 124.0; } to { stroke-dashoffset: 0; } }
.chapanim .s6-fr2 { stroke-dasharray: 52.1 71.9; }
.chapanim .s6-fr2 { animation: s6Fr2 7.95s linear 0.06s infinite; }
@keyframes s6Fr2 { from { stroke-dashoffset: 124.0; } to { stroke-dashoffset: 0; } }
.chapanim .s6-br1 { stroke-dasharray: 53.8 74.2; }
.chapanim .s6-br1 { animation: s6Br1 8.18s linear 0.12s infinite; }
@keyframes s6Br1 { from { stroke-dashoffset: 128.0; } to { stroke-dashoffset: 0; } }
.chapanim .s6-drum { stroke-dasharray: 161.3 222.7; }
.chapanim .s6-drum { animation: s6Drum 8.55s linear 0.18s infinite; }
@keyframes s6Drum { from { stroke-dashoffset: 384.0; } to { stroke-dashoffset: 0; } }
.chapanim .s6-end { stroke-dasharray: 44.5 61.5; }
.chapanim .s6-end { animation: s6End 8.78s linear 0.24s infinite; }
@keyframes s6End { from { stroke-dashoffset: 106.0; } to { stroke-dashoffset: 0; } }
.chapanim .s6-crk { stroke-dasharray: 41.2 56.8; }
.chapanim .s6-crk { animation: s6Crk 9.08s linear 0.30s infinite; }
@keyframes s6Crk { from { stroke-dashoffset: 98.0; } to { stroke-dashoffset: 0; } }
.chapanim .s6-rope { stroke-dasharray: 28.6 39.4; }
.chapanim .s6-rope { animation: s6Rope 9.38s linear 0.36s infinite; }
@keyframes s6Rope { from { stroke-dashoffset: 68.0; } to { stroke-dashoffset: 0; } }
.chapanim .s6-bkt { stroke-dasharray: 49.6 68.4; }
.chapanim .s6-bkt { animation: s6Bkt 9.68s linear 0.40s infinite; }
@keyframes s6Bkt { from { stroke-dashoffset: 118.0; } to { stroke-dashoffset: 0; } }
.chapanim .s6-gr { stroke-dasharray: 114.2 157.8; }
.chapanim .s6-gr { animation: s6Gr 9.98s linear 0.44s infinite; }
@keyframes s6Gr { from { stroke-dashoffset: 272.0; } to { stroke-dashoffset: 0; } }

/* scene 7 -- a strapped chest */
.chapanim .s7-u0 { stroke-dasharray: 21.0 29.0; }
.chapanim .s7-u0 { animation: s7U0 17.70s linear 0.00s infinite; }
@keyframes s7U0 { from { stroke-dashoffset: 50.0; } to { stroke-dashoffset: 0; } }
.chapanim .s7-u1 { stroke-dasharray: 21.0 29.0; }
.chapanim .s7-u1 { animation: s7U1 17.99s linear 0.09s infinite; }
@keyframes s7U1 { from { stroke-dashoffset: 50.0; } to { stroke-dashoffset: 0; } }
.chapanim .s7-u2 { stroke-dasharray: 21.0 29.0; }
.chapanim .s7-u2 { animation: s7U2 18.28s linear 0.18s infinite; }
@keyframes s7U2 { from { stroke-dashoffset: 50.0; } to { stroke-dashoffset: 0; } }
.chapanim .s7-u3 { stroke-dasharray: 21.0 29.0; }
.chapanim .s7-u3 { animation: s7U3 18.57s linear 0.27s infinite; }
@keyframes s7U3 { from { stroke-dashoffset: 50.0; } to { stroke-dashoffset: 0; } }
.chapanim .s7-bx { stroke-dasharray: 241.9 334.1; }
.chapanim .s7-bx { animation: s7Bx 8.00s linear 0.00s infinite; }
@keyframes s7Bx { from { stroke-dashoffset: 576.0; } to { stroke-dashoffset: 0; } }
.chapanim .s7-lid { stroke-dasharray: 88.2 121.8; }
.chapanim .s7-lid { animation: s7Lid 8.46s linear 0.12s infinite; }
@keyframes s7Lid { from { stroke-dashoffset: 210.0; } to { stroke-dashoffset: 0; } }
.chapanim .s7-s0 { stroke-dasharray: 50.4 69.6; }
.chapanim .s7-s0 { animation: s7S0 8.83s linear 0.00s infinite; }
@keyframes s7S0 { from { stroke-dashoffset: 120.0; } to { stroke-dashoffset: 0; } }
.chapanim .s7-s1 { stroke-dasharray: 50.4 69.6; }
.chapanim .s7-s1 { animation: s7S1 9.10s linear 0.10s infinite; }
@keyframes s7S1 { from { stroke-dashoffset: 120.0; } to { stroke-dashoffset: 0; } }
.chapanim .s7-lk { stroke-dasharray: 37.0 51.0; }
.chapanim .s7-lk { animation: s7Lk 9.51s linear 0.30s infinite; }
@keyframes s7Lk { from { stroke-dashoffset: 88.0; } to { stroke-dashoffset: 0; } }
.chapanim .s7-ft { stroke-dasharray: 80.6 111.4; }
.chapanim .s7-ft { animation: s7Ft 9.93s linear 0.40s infinite; }
@keyframes s7Ft { from { stroke-dashoffset: 192.0; } to { stroke-dashoffset: 0; } }

/* scene 8 -- a throne cut from a block of ore, on a stepped dais */
.chapanim .s8-u0 { stroke-dasharray: 30.2 41.8; }
.chapanim .s8-u0 { animation: s8U0 18.11s linear 0.00s infinite; }
@keyframes s8U0 { from { stroke-dashoffset: 72.0; } to { stroke-dashoffset: 0; } }
.chapanim .s8-u1 { stroke-dasharray: 20.2 27.8; }
.chapanim .s8-u1 { animation: s8U1 18.42s linear 0.10s infinite; }
@keyframes s8U1 { from { stroke-dashoffset: 48.0; } to { stroke-dashoffset: 0; } }
.chapanim .s8-u2 { stroke-dasharray: 33.6 46.4; }
.chapanim .s8-u2 { animation: s8U2 18.73s linear 0.20s infinite; }
@keyframes s8U2 { from { stroke-dashoffset: 80.0; } to { stroke-dashoffset: 0; } }
.chapanim .s8-u3 { stroke-dasharray: 23.5 32.5; }
.chapanim .s8-u3 { animation: s8U3 19.04s linear 0.30s infinite; }
@keyframes s8U3 { from { stroke-dashoffset: 56.0; } to { stroke-dashoffset: 0; } }
.chapanim .s8-st0 { stroke-dasharray: 201.6 278.4; }
.chapanim .s8-st0 { animation: s8St0 8.41s linear 0.00s infinite; }
@keyframes s8St0 { from { stroke-dashoffset: 480.0; } to { stroke-dashoffset: 0; } }
.chapanim .s8-st1 { stroke-dasharray: 171.4 236.6; }
.chapanim .s8-st1 { animation: s8St1 8.74s linear 0.10s infinite; }
@keyframes s8St1 { from { stroke-dashoffset: 408.0; } to { stroke-dashoffset: 0; } }
.chapanim .s8-st2 { stroke-dasharray: 141.1 194.9; }
.chapanim .s8-st2 { animation: s8St2 9.07s linear 0.20s infinite; }
@keyframes s8St2 { from { stroke-dashoffset: 336.0; } to { stroke-dashoffset: 0; } }
.chapanim .s8-seat { stroke-dasharray: 105.0 145.0; }
.chapanim .s8-seat { animation: s8Seat 9.58s linear 0.25s infinite; }
@keyframes s8Seat { from { stroke-dashoffset: 250.0; } to { stroke-dashoffset: 0; } }
.chapanim .s8-back { stroke-dasharray: 84.0 116.0; }
.chapanim .s8-back { animation: s8Back 10.00s linear 0.30s infinite; }
@keyframes s8Back { from { stroke-dashoffset: 200.0; } to { stroke-dashoffset: 0; } }
.chapanim .s8-fac { stroke-dasharray: 42.0 58.0; }
.chapanim .s8-fac { animation: s8Fac 10.44s linear 0.35s infinite; }
@keyframes s8Fac { from { stroke-dashoffset: 100.0; } to { stroke-dashoffset: 0; } }

/* scene 9 -- a pennon on its lance */
.chapanim .s9-u0 { stroke-dasharray: 118.9 164.3; }
.chapanim .s9-u0 { animation: s9U0 18.52s linear 0.00s infinite; }
@keyframes s9U0 { from { stroke-dashoffset: 283.2; } to { stroke-dashoffset: 0; } }
.chapanim .s9-u1 { stroke-dasharray: 96.8 133.6; }
.chapanim .s9-u1 { animation: s9U1 18.89s linear 0.14s infinite; }
@keyframes s9U1 { from { stroke-dashoffset: 230.4; } to { stroke-dashoffset: 0; } }
.chapanim .s9-u2 { stroke-dasharray: 74.6 103.0; }
.chapanim .s9-u2 { animation: s9U2 19.26s linear 0.28s infinite; }
@keyframes s9U2 { from { stroke-dashoffset: 177.6; } to { stroke-dashoffset: 0; } }
.chapanim .s9-lance { stroke-dasharray: 119.7 165.3; }
.chapanim .s9-lance { animation: s9Lance 8.82s linear 0.00s infinite; }
@keyframes s9Lance { from { stroke-dashoffset: 285.0; } to { stroke-dashoffset: 0; } }
.chapanim .s9-tip { stroke-dasharray: 25.2 34.8; }
.chapanim .s9-tip { animation: s9Tip 9.13s linear 0.08s infinite; }
@keyframes s9Tip { from { stroke-dashoffset: 60.0; } to { stroke-dashoffset: 0; } }
.chapanim .s9-grip { stroke-dasharray: 11.8 16.2; }
.chapanim .s9-grip { animation: s9Grip 9.45s linear 0.14s infinite; }
@keyframes s9Grip { from { stroke-dashoffset: 28.0; } to { stroke-dashoffset: 0; } }
.chapanim .s9-gd { stroke-dasharray: 38.6 53.4; }
.chapanim .s9-gd { animation: s9Gd 9.77s linear 0.20s infinite; }
@keyframes s9Gd { from { stroke-dashoffset: 92.0; } to { stroke-dashoffset: 0; } }
.chapanim .s9-pen { stroke-dasharray: 126.0 174.0; }
.chapanim .s9-pen { animation: s9Pen 10.09s linear 0.26s infinite; }
@keyframes s9Pen { from { stroke-dashoffset: 300.0; } to { stroke-dashoffset: 0; } }
.chapanim .s9-fold { stroke-dasharray: 34.4 47.6; }
.chapanim .s9-fold { animation: s9Fold 10.41s linear 0.30s infinite; }
@keyframes s9Fold { from { stroke-dashoffset: 82.0; } to { stroke-dashoffset: 0; } }
.chapanim .s9-butt { stroke-dasharray: 6.3 8.7; }
.chapanim .s9-butt { animation: s9Butt 10.73s linear 0.34s infinite; }
@keyframes s9Butt { from { stroke-dashoffset: 15.0; } to { stroke-dashoffset: 0; } }
.chapanim .s9-gr { stroke-dasharray: 117.6 162.4; }
.chapanim .s9-gr { animation: s9Gr 11.05s linear 0.40s infinite; }
@keyframes s9Gr { from { stroke-dashoffset: 280.0; } to { stroke-dashoffset: 0; } }

/* scene 10 -- a silver casket, open */
.chapanim .s10-u0 { stroke-dasharray: 14.3 19.7; }
.chapanim .s10-u0 { animation: s10U0 18.93s linear 0.00s infinite; }
@keyframes s10U0 { from { stroke-dashoffset: 34.0; } to { stroke-dashoffset: 0; } }
.chapanim .s10-u1 { stroke-dasharray: 14.3 19.7; }
.chapanim .s10-u1 { animation: s10U1 19.16s linear 0.07s infinite; }
@keyframes s10U1 { from { stroke-dashoffset: 34.0; } to { stroke-dashoffset: 0; } }
.chapanim .s10-u2 { stroke-dasharray: 14.3 19.7; }
.chapanim .s10-u2 { animation: s10U2 19.39s linear 0.14s infinite; }
@keyframes s10U2 { from { stroke-dashoffset: 34.0; } to { stroke-dashoffset: 0; } }
.chapanim .s10-u3 { stroke-dasharray: 14.3 19.7; }
.chapanim .s10-u3 { animation: s10U3 19.62s linear 0.21s infinite; }
@keyframes s10U3 { from { stroke-dashoffset: 34.0; } to { stroke-dashoffset: 0; } }
.chapanim .s10-u4 { stroke-dasharray: 14.3 19.7; }
.chapanim .s10-u4 { animation: s10U4 19.85s linear 0.28s infinite; }
@keyframes s10U4 { from { stroke-dashoffset: 34.0; } to { stroke-dashoffset: 0; } }
.chapanim .s10-u5 { stroke-dasharray: 14.3 19.7; }
.chapanim .s10-u5 { animation: s10U5 20.08s linear 0.35s infinite; }
@keyframes s10U5 { from { stroke-dashoffset: 34.0; } to { stroke-dashoffset: 0; } }
.chapanim .s10-u6 { stroke-dasharray: 14.3 19.7; }
.chapanim .s10-u6 { animation: s10U6 20.31s linear 0.42s infinite; }
@keyframes s10U6 { from { stroke-dashoffset: 34.0; } to { stroke-dashoffset: 0; } }
.chapanim .s10-ur { stroke-dasharray: 97.4 134.6; }
.chapanim .s10-ur { animation: s10Ur 20.84s linear 0.30s infinite; }
@keyframes s10Ur { from { stroke-dashoffset: 232.0; } to { stroke-dashoffset: 0; } }
.chapanim .s10-bx { stroke-dasharray: 194.9 269.1; }
.chapanim .s10-bx { animation: s10Bx 9.23s linear 0.00s infinite; }
@keyframes s10Bx { from { stroke-dashoffset: 464.0; } to { stroke-dashoffset: 0; } }
.chapanim .s10-lid { stroke-dasharray: 126.0 174.0; }
.chapanim .s10-lid { animation: s10Lid 9.64s linear 0.12s infinite; }
@keyframes s10Lid { from { stroke-dashoffset: 300.0; } to { stroke-dashoffset: 0; } }
.chapanim .s10-in { stroke-dasharray: 17.6 24.4; }
.chapanim .s10-in { animation: s10In 10.06s linear 0.20s infinite; }
@keyframes s10In { from { stroke-dashoffset: 42.0; } to { stroke-dashoffset: 0; } }
.chapanim .s10-cl { stroke-dasharray: 28.6 39.4; }
.chapanim .s10-cl { animation: s10Cl 10.42s linear 0.26s infinite; }
@keyframes s10Cl { from { stroke-dashoffset: 68.0; } to { stroke-dashoffset: 0; } }
.chapanim .s10-g0 { stroke-dasharray: 26.9 37.1; }
.chapanim .s10-g0 { animation: s10G0 10.80s linear 0.00s infinite; }
@keyframes s10G0 { from { stroke-dashoffset: 64.0; } to { stroke-dashoffset: 0; } }
.chapanim .s10-g1 { stroke-dasharray: 26.9 37.1; }
.chapanim .s10-g1 { animation: s10G1 11.09s linear 0.10s infinite; }
@keyframes s10G1 { from { stroke-dashoffset: 64.0; } to { stroke-dashoffset: 0; } }
.chapanim .s10-g2 { stroke-dasharray: 26.9 37.1; }
.chapanim .s10-g2 { animation: s10G2 11.38s linear 0.20s infinite; }
@keyframes s10G2 { from { stroke-dashoffset: 64.0; } to { stroke-dashoffset: 0; } }
.chapanim .s10-ft { stroke-dasharray: 67.2 92.8; }
.chapanim .s10-ft { animation: s10Ft 11.74s linear 0.40s infinite; }
@keyframes s10Ft { from { stroke-dashoffset: 160.0; } to { stroke-dashoffset: 0; } }

/* scene 11 -- a three-legged stool and a bowl */
.chapanim .s11-u0 { stroke-dasharray: 21.0 29.0; }
.chapanim .s11-u0 { animation: s11U0 19.34s linear 0.00s infinite; }
@keyframes s11U0 { from { stroke-dashoffset: 50.0; } to { stroke-dashoffset: 0; } }
.chapanim .s11-u1 { stroke-dasharray: 21.0 29.0; }
.chapanim .s11-u1 { animation: s11U1 19.63s linear 0.09s infinite; }
@keyframes s11U1 { from { stroke-dashoffset: 50.0; } to { stroke-dashoffset: 0; } }
.chapanim .s11-u2 { stroke-dasharray: 21.0 29.0; }
.chapanim .s11-u2 { animation: s11U2 19.92s linear 0.18s infinite; }
@keyframes s11U2 { from { stroke-dashoffset: 50.0; } to { stroke-dashoffset: 0; } }
.chapanim .s11-u3 { stroke-dasharray: 21.0 29.0; }
.chapanim .s11-u3 { animation: s11U3 20.21s linear 0.27s infinite; }
@keyframes s11U3 { from { stroke-dashoffset: 50.0; } to { stroke-dashoffset: 0; } }
.chapanim .s11-top { stroke-dasharray: 99.1 136.9; }
.chapanim .s11-top { animation: s11Top 9.71s linear 0.00s infinite; }
@keyframes s11Top { from { stroke-dashoffset: 236.0; } to { stroke-dashoffset: 0; } }
.chapanim .s11-lg0 { stroke-dasharray: 29.4 40.6; }
.chapanim .s11-lg0 { animation: s11Lg0 10.03s linear 0.00s infinite; }
@keyframes s11Lg0 { from { stroke-dashoffset: 70.0; } to { stroke-dashoffset: 0; } }
.chapanim .s11-lg1 { stroke-dasharray: 29.4 40.6; }
.chapanim .s11-lg1 { animation: s11Lg1 10.30s linear 0.10s infinite; }
@keyframes s11Lg1 { from { stroke-dashoffset: 70.0; } to { stroke-dashoffset: 0; } }
.chapanim .s11-lg2 { stroke-dasharray: 29.4 40.6; }
.chapanim .s11-lg2 { animation: s11Lg2 10.57s linear 0.20s infinite; }
@keyframes s11Lg2 { from { stroke-dashoffset: 70.0; } to { stroke-dashoffset: 0; } }
.chapanim .s11-bw { stroke-dasharray: 79.8 110.2; }
.chapanim .s11-bw { animation: s11Bw 10.93s linear 0.30s infinite; }
@keyframes s11Bw { from { stroke-dashoffset: 190.0; } to { stroke-dashoffset: 0; } }
.chapanim .s11-br { stroke-dasharray: 47.0 65.0; }
.chapanim .s11-br { animation: s11Br 11.35s linear 0.36s infinite; }
@keyframes s11Br { from { stroke-dashoffset: 112.0; } to { stroke-dashoffset: 0; } }
.chapanim .s11-fl { stroke-dasharray: 31.1 42.9; }
.chapanim .s11-fl { animation: s11Fl 11.77s linear 0.42s infinite; }
@keyframes s11Fl { from { stroke-dashoffset: 74.0; } to { stroke-dashoffset: 0; } }

/* scene 12 -- a lattice window and its sill */
.chapanim .s12-u0 { stroke-dasharray: 30.2 41.8; }
.chapanim .s12-u0 { animation: s12U0 19.75s linear 0.00s infinite; }
@keyframes s12U0 { from { stroke-dashoffset: 72.0; } to { stroke-dashoffset: 0; } }
.chapanim .s12-u1 { stroke-dasharray: 20.2 27.8; }
.chapanim .s12-u1 { animation: s12U1 20.06s linear 0.10s infinite; }
@keyframes s12U1 { from { stroke-dashoffset: 48.0; } to { stroke-dashoffset: 0; } }
.chapanim .s12-u2 { stroke-dasharray: 33.6 46.4; }
.chapanim .s12-u2 { animation: s12U2 20.37s linear 0.20s infinite; }
@keyframes s12U2 { from { stroke-dashoffset: 80.0; } to { stroke-dashoffset: 0; } }
.chapanim .s12-u3 { stroke-dasharray: 23.5 32.5; }
.chapanim .s12-u3 { animation: s12U3 20.68s linear 0.30s infinite; }
@keyframes s12U3 { from { stroke-dashoffset: 56.0; } to { stroke-dashoffset: 0; } }
.chapanim .s12-fr { stroke-dasharray: 248.6 343.4; }
.chapanim .s12-fr { animation: s12Fr 10.05s linear 0.00s infinite; }
@keyframes s12Fr { from { stroke-dashoffset: 592.0; } to { stroke-dashoffset: 0; } }
.chapanim .s12-v1 { stroke-dasharray: 50.4 69.6; }
.chapanim .s12-v1 { animation: s12V1 10.65s linear 0.06s infinite; }
@keyframes s12V1 { from { stroke-dashoffset: 120.0; } to { stroke-dashoffset: 0; } }
.chapanim .s12-v2 { stroke-dasharray: 50.4 69.6; }
.chapanim .s12-v2 { animation: s12V2 10.88s linear 0.12s infinite; }
@keyframes s12V2 { from { stroke-dashoffset: 120.0; } to { stroke-dashoffset: 0; } }
.chapanim .s12-v3 { stroke-dasharray: 50.4 69.6; }
.chapanim .s12-v3 { animation: s12V3 11.11s linear 0.18s infinite; }
@keyframes s12V3 { from { stroke-dashoffset: 120.0; } to { stroke-dashoffset: 0; } }
.chapanim .s12-h1 { stroke-dasharray: 73.9 102.1; }
.chapanim .s12-h1 { animation: s12H1 11.63s linear 0.08s infinite; }
@keyframes s12H1 { from { stroke-dashoffset: 176.0; } to { stroke-dashoffset: 0; } }
.chapanim .s12-h2 { stroke-dasharray: 73.9 102.1; }
.chapanim .s12-h2 { animation: s12H2 11.97s linear 0.16s infinite; }
@keyframes s12H2 { from { stroke-dashoffset: 176.0; } to { stroke-dashoffset: 0; } }
.chapanim .s12-sill { stroke-dasharray: 180.6 249.4; }
.chapanim .s12-sill { animation: s12Sill 12.02s linear 0.35s infinite; }
@keyframes s12Sill { from { stroke-dashoffset: 430.0; } to { stroke-dashoffset: 0; } }
.chapanim .s12-cat { stroke-dasharray: 16.0 22.0; }
.chapanim .s12-cat { animation: s12Cat 12.48s linear 0.40s infinite; }
@keyframes s12Cat { from { stroke-dashoffset: 38.0; } to { stroke-dashoffset: 0; } }

/* scene 13 -- a doll's house, open at the front */
.chapanim .s13-u0 { stroke-dasharray: 118.9 164.3; }
.chapanim .s13-u0 { animation: s13U0 20.16s linear 0.00s infinite; }
@keyframes s13U0 { from { stroke-dashoffset: 283.2; } to { stroke-dashoffset: 0; } }
.chapanim .s13-u1 { stroke-dasharray: 96.8 133.6; }
.chapanim .s13-u1 { animation: s13U1 20.53s linear 0.14s infinite; }
@keyframes s13U1 { from { stroke-dashoffset: 230.4; } to { stroke-dashoffset: 0; } }
.chapanim .s13-u2 { stroke-dasharray: 74.6 103.0; }
.chapanim .s13-u2 { animation: s13U2 20.90s linear 0.28s infinite; }
@keyframes s13U2 { from { stroke-dashoffset: 177.6; } to { stroke-dashoffset: 0; } }
.chapanim .s13-bx { stroke-dasharray: 248.6 343.4; }
.chapanim .s13-bx { animation: s13Bx 10.46s linear 0.00s infinite; }
@keyframes s13Bx { from { stroke-dashoffset: 592.0; } to { stroke-dashoffset: 0; } }
.chapanim .s13-rf { stroke-dasharray: 92.4 127.6; }
.chapanim .s13-rf { animation: s13Rf 10.87s linear 0.12s infinite; }
@keyframes s13Rf { from { stroke-dashoffset: 220.0; } to { stroke-dashoffset: 0; } }
.chapanim .s13-hz { stroke-dasharray: 77.3 106.7; }
.chapanim .s13-hz { animation: s13Hz 11.29s linear 0.20s infinite; }
@keyframes s13Hz { from { stroke-dashoffset: 184.0; } to { stroke-dashoffset: 0; } }
.chapanim .s13-vt { stroke-dasharray: 47.0 65.0; }
.chapanim .s13-vt { animation: s13Vt 11.69s linear 0.26s infinite; }
@keyframes s13Vt { from { stroke-dashoffset: 112.0; } to { stroke-dashoffset: 0; } }
.chapanim .s13-w0 { stroke-dasharray: 45.4 62.6; }
.chapanim .s13-w0 { animation: s13W0 12.07s linear 0.00s infinite; }
@keyframes s13W0 { from { stroke-dashoffset: 108.0; } to { stroke-dashoffset: 0; } }
.chapanim .s13-w1 { stroke-dasharray: 45.4 62.6; }
.chapanim .s13-w1 { animation: s13W1 12.36s linear 0.10s infinite; }
@keyframes s13W1 { from { stroke-dashoffset: 108.0; } to { stroke-dashoffset: 0; } }
.chapanim .s13-w2 { stroke-dasharray: 45.4 62.6; }
.chapanim .s13-w2 { animation: s13W2 12.65s linear 0.20s infinite; }
@keyframes s13W2 { from { stroke-dashoffset: 108.0; } to { stroke-dashoffset: 0; } }
.chapanim .s13-dr { stroke-dasharray: 50.4 69.6; }
.chapanim .s13-dr { animation: s13Dr 12.99s linear 0.38s infinite; }
@keyframes s13Dr { from { stroke-dashoffset: 120.0; } to { stroke-dashoffset: 0; } }

/* scene 14 -- a distaff, wound */
.chapanim .s14-u0 { stroke-dasharray: 14.3 19.7; }
.chapanim .s14-u0 { animation: s14U0 20.57s linear 0.00s infinite; }
@keyframes s14U0 { from { stroke-dashoffset: 34.0; } to { stroke-dashoffset: 0; } }
.chapanim .s14-u1 { stroke-dasharray: 14.3 19.7; }
.chapanim .s14-u1 { animation: s14U1 20.80s linear 0.07s infinite; }
@keyframes s14U1 { from { stroke-dashoffset: 34.0; } to { stroke-dashoffset: 0; } }
.chapanim .s14-u2 { stroke-dasharray: 14.3 19.7; }
.chapanim .s14-u2 { animation: s14U2 21.03s linear 0.14s infinite; }
@keyframes s14U2 { from { stroke-dashoffset: 34.0; } to { stroke-dashoffset: 0; } }
.chapanim .s14-u3 { stroke-dasharray: 14.3 19.7; }
.chapanim .s14-u3 { animation: s14U3 21.26s linear 0.21s infinite; }
@keyframes s14U3 { from { stroke-dashoffset: 34.0; } to { stroke-dashoffset: 0; } }
.chapanim .s14-u4 { stroke-dasharray: 14.3 19.7; }
.chapanim .s14-u4 { animation: s14U4 21.49s linear 0.28s infinite; }
@keyframes s14U4 { from { stroke-dashoffset: 34.0; } to { stroke-dashoffset: 0; } }
.chapanim .s14-u5 { stroke-dasharray: 14.3 19.7; }
.chapanim .s14-u5 { animation: s14U5 21.72s linear 0.35s infinite; }
@keyframes s14U5 { from { stroke-dashoffset: 34.0; } to { stroke-dashoffset: 0; } }
.chapanim .s14-u6 { stroke-dasharray: 14.3 19.7; }
.chapanim .s14-u6 { animation: s14U6 21.95s linear 0.42s infinite; }
@keyframes s14U6 { from { stroke-dashoffset: 34.0; } to { stroke-dashoffset: 0; } }
.chapanim .s14-ur { stroke-dasharray: 97.4 134.6; }
.chapanim .s14-ur { animation: s14Ur 22.48s linear 0.30s infinite; }
@keyframes s14Ur { from { stroke-dashoffset: 232.0; } to { stroke-dashoffset: 0; } }
.chapanim .s14-rod { stroke-dasharray: 65.5 90.5; }
.chapanim .s14-rod { animation: s14Rod 10.94s linear 0.00s infinite; }
@keyframes s14Rod { from { stroke-dashoffset: 156.0; } to { stroke-dashoffset: 0; } }
.chapanim .s14-wd { stroke-dasharray: 84.0 116.0; }
.chapanim .s14-wd { animation: s14Wd 11.24s linear 0.12s infinite; }
@keyframes s14Wd { from { stroke-dashoffset: 200.0; } to { stroke-dashoffset: 0; } }
.chapanim .s14-t0 { stroke-dasharray: 38.6 53.4; }
.chapanim .s14-t0 { animation: s14T0 11.66s linear 0.00s infinite; }
@keyframes s14T0 { from { stroke-dashoffset: 92.0; } to { stroke-dashoffset: 0; } }
.chapanim .s14-t1 { stroke-dasharray: 38.6 53.4; }
.chapanim .s14-t1 { animation: s14T1 11.91s linear 0.07s infinite; }
@keyframes s14T1 { from { stroke-dashoffset: 92.0; } to { stroke-dashoffset: 0; } }
.chapanim .s14-t2 { stroke-dasharray: 38.6 53.4; }
.chapanim .s14-t2 { animation: s14T2 12.16s linear 0.14s infinite; }
@keyframes s14T2 { from { stroke-dashoffset: 92.0; } to { stroke-dashoffset: 0; } }
.chapanim .s14-t3 { stroke-dasharray: 38.6 53.4; }
.chapanim .s14-t3 { animation: s14T3 12.41s linear 0.21s infinite; }
@keyframes s14T3 { from { stroke-dashoffset: 92.0; } to { stroke-dashoffset: 0; } }
.chapanim .s14-th { stroke-dasharray: 88.2 121.8; }
.chapanim .s14-th { animation: s14Th 12.74s linear 0.34s infinite; }
@keyframes s14Th { from { stroke-dashoffset: 210.0; } to { stroke-dashoffset: 0; } }
.chapanim .s14-ft { stroke-dasharray: 57.1 78.9; }
.chapanim .s14-ft { animation: s14Ft 13.18s linear 0.40s infinite; }
@keyframes s14Ft { from { stroke-dashoffset: 136.0; } to { stroke-dashoffset: 0; } }

/* scene 15 -- a ring set with one stone */
.chapanim .s15-u0 { stroke-dasharray: 21.0 29.0; }
.chapanim .s15-u0 { animation: s15U0 20.98s linear 0.00s infinite; }
@keyframes s15U0 { from { stroke-dashoffset: 50.0; } to { stroke-dashoffset: 0; } }
.chapanim .s15-u1 { stroke-dasharray: 21.0 29.0; }
.chapanim .s15-u1 { animation: s15U1 21.27s linear 0.09s infinite; }
@keyframes s15U1 { from { stroke-dashoffset: 50.0; } to { stroke-dashoffset: 0; } }
.chapanim .s15-u2 { stroke-dasharray: 21.0 29.0; }
.chapanim .s15-u2 { animation: s15U2 21.56s linear 0.18s infinite; }
@keyframes s15U2 { from { stroke-dashoffset: 50.0; } to { stroke-dashoffset: 0; } }
.chapanim .s15-u3 { stroke-dasharray: 21.0 29.0; }
.chapanim .s15-u3 { animation: s15U3 21.85s linear 0.27s infinite; }
@keyframes s15U3 { from { stroke-dashoffset: 50.0; } to { stroke-dashoffset: 0; } }
.chapanim .s15-bd { stroke-dasharray: 152.9 211.1; }
.chapanim .s15-bd { animation: s15Bd 11.28s linear 0.00s infinite; }
@keyframes s15Bd { from { stroke-dashoffset: 364.0; } to { stroke-dashoffset: 0; } }
.chapanim .s15-bd2 { stroke-dasharray: 121.4 167.6; }
.chapanim .s15-bd2 { animation: s15Bd2 11.61s linear 0.12s infinite; }
@keyframes s15Bd2 { from { stroke-dashoffset: 289.0; } to { stroke-dashoffset: 0; } }
.chapanim .s15-shd { stroke-dasharray: 53.8 74.2; }
.chapanim .s15-shd { animation: s15Shd 11.99s linear 0.20s infinite; }
@keyframes s15Shd { from { stroke-dashoffset: 128.0; } to { stroke-dashoffset: 0; } }
.chapanim .s15-stn { stroke-dasharray: 42.0 58.0; }
.chapanim .s15-stn { animation: s15Stn 12.37s linear 0.26s infinite; }
@keyframes s15Stn { from { stroke-dashoffset: 100.0; } to { stroke-dashoffset: 0; } }
.chapanim .s15-fct { stroke-dasharray: 28.6 39.4; }
.chapanim .s15-fct { animation: s15Fct 12.75s linear 0.30s infinite; }
@keyframes s15Fct { from { stroke-dashoffset: 68.0; } to { stroke-dashoffset: 0; } }
.chapanim .s15-gl { stroke-dasharray: 87.4 120.6; }
.chapanim .s15-gl { animation: s15Gl 13.19s linear 0.38s infinite; }
@keyframes s15Gl { from { stroke-dashoffset: 208.0; } to { stroke-dashoffset: 0; } }

/* scene 16 -- a garden trellis and its gate posts */
.chapanim .s16-u0 { stroke-dasharray: 30.2 41.8; }
.chapanim .s16-u0 { animation: s16U0 21.39s linear 0.00s infinite; }
@keyframes s16U0 { from { stroke-dashoffset: 72.0; } to { stroke-dashoffset: 0; } }
.chapanim .s16-u1 { stroke-dasharray: 20.2 27.8; }
.chapanim .s16-u1 { animation: s16U1 21.70s linear 0.10s infinite; }
@keyframes s16U1 { from { stroke-dashoffset: 48.0; } to { stroke-dashoffset: 0; } }
.chapanim .s16-u2 { stroke-dasharray: 33.6 46.4; }
.chapanim .s16-u2 { animation: s16U2 22.01s linear 0.20s infinite; }
@keyframes s16U2 { from { stroke-dashoffset: 80.0; } to { stroke-dashoffset: 0; } }
.chapanim .s16-u3 { stroke-dasharray: 23.5 32.5; }
.chapanim .s16-u3 { animation: s16U3 22.32s linear 0.30s infinite; }
@keyframes s16U3 { from { stroke-dashoffset: 56.0; } to { stroke-dashoffset: 0; } }
.chapanim .s16-a0 { stroke-dasharray: 42.8 59.2; }
.chapanim .s16-a0 { animation: s16A0 11.76s linear 0.00s infinite; }
@keyframes s16A0 { from { stroke-dashoffset: 102.0; } to { stroke-dashoffset: 0; } }
.chapanim .s16-c0 { stroke-dasharray: 42.8 59.2; }
.chapanim .s16-c0 { animation: s16C0 13.00s linear 0.00s infinite; }
@keyframes s16C0 { from { stroke-dashoffset: 102.0; } to { stroke-dashoffset: 0; } }
.chapanim .s16-a1 { stroke-dasharray: 42.8 59.2; }
.chapanim .s16-a1 { animation: s16A1 12.04s linear 0.05s infinite; }
@keyframes s16A1 { from { stroke-dashoffset: 102.0; } to { stroke-dashoffset: 0; } }
.chapanim .s16-c1 { stroke-dasharray: 42.8 59.2; }
.chapanim .s16-c1 { animation: s16C1 13.21s linear 0.05s infinite; }
@keyframes s16C1 { from { stroke-dashoffset: 102.0; } to { stroke-dashoffset: 0; } }
.chapanim .s16-a2 { stroke-dasharray: 42.8 59.2; }
.chapanim .s16-a2 { animation: s16A2 12.11s linear 0.10s infinite; }
@keyframes s16A2 { from { stroke-dashoffset: 102.0; } to { stroke-dashoffset: 0; } }
.chapanim .s16-c2 { stroke-dasharray: 42.8 59.2; }
.chapanim .s16-c2 { animation: s16C2 13.42s linear 0.10s infinite; }
@keyframes s16C2 { from { stroke-dashoffset: 102.0; } to { stroke-dashoffset: 0; } }
.chapanim .s16-a3 { stroke-dasharray: 42.8 59.2; }
.chapanim .s16-a3 { animation: s16A3 12.32s linear 0.15s infinite; }
@keyframes s16A3 { from { stroke-dashoffset: 102.0; } to { stroke-dashoffset: 0; } }
.chapanim .s16-c3 { stroke-dasharray: 42.8 59.2; }
.chapanim .s16-c3 { animation: s16C3 13.63s linear 0.15s infinite; }
@keyframes s16C3 { from { stroke-dashoffset: 102.0; } to { stroke-dashoffset: 0; } }
.chapanim .s16-a4 { stroke-dasharray: 42.8 59.2; }
.chapanim .s16-a4 { animation: s16A4 12.53s linear 0.20s infinite; }
@keyframes s16A4 { from { stroke-dashoffset: 102.0; } to { stroke-dashoffset: 0; } }
.chapanim .s16-c4 { stroke-dasharray: 42.8 59.2; }
.chapanim .s16-c4 { animation: s16C4 13.84s linear 0.20s infinite; }
@keyframes s16C4 { from { stroke-dashoffset: 102.0; } to { stroke-dashoffset: 0; } }
.chapanim .s16-a5 { stroke-dasharray: 42.8 59.2; }
.chapanim .s16-a5 { animation: s16A5 12.81s linear 0.25s infinite; }
@keyframes s16A5 { from { stroke-dashoffset: 102.0; } to { stroke-dashoffset: 0; } }
.chapanim .s16-c5 { stroke-dasharray: 42.8 59.2; }
.chapanim .s16-c5 { animation: s16C5 14.05s linear 0.25s infinite; }
@keyframes s16C5 { from { stroke-dashoffset: 102.0; } to { stroke-dashoffset: 0; } }
.chapanim .s16-top { stroke-dasharray: 117.6 162.4; }
.chapanim .s16-top { animation: s16Top 14.32s linear 0.30s infinite; }
@keyframes s16Top { from { stroke-dashoffset: 280.0; } to { stroke-dashoffset: 0; } }
.chapanim .s16-bot { stroke-dasharray: 117.6 162.4; }
.chapanim .s16-bot { animation: s16Bot 14.70s linear 0.36s infinite; }
@keyframes s16Bot { from { stroke-dashoffset: 280.0; } to { stroke-dashoffset: 0; } }
.chapanim .s16-post { stroke-dasharray: 40.3 55.7; }
.chapanim .s16-post { animation: s16Post 15.12s linear 0.40s infinite; }
@keyframes s16Post { from { stroke-dashoffset: 96.0; } to { stroke-dashoffset: 0; } }

/* scene 17 -- a ball of string, anchored to a pickaxe */
.chapanim .s17-u0 { stroke-dasharray: 118.9 164.3; }
.chapanim .s17-u0 { animation: s17U0 21.80s linear 0.00s infinite; }
@keyframes s17U0 { from { stroke-dashoffset: 283.2; } to { stroke-dashoffset: 0; } }
.chapanim .s17-u1 { stroke-dasharray: 96.8 133.6; }
.chapanim .s17-u1 { animation: s17U1 22.17s linear 0.14s infinite; }
@keyframes s17U1 { from { stroke-dashoffset: 230.4; } to { stroke-dashoffset: 0; } }
.chapanim .s17-u2 { stroke-dasharray: 74.6 103.0; }
.chapanim .s17-u2 { animation: s17U2 22.54s linear 0.28s infinite; }
@keyframes s17U2 { from { stroke-dashoffset: 177.6; } to { stroke-dashoffset: 0; } }
.chapanim .s17-bl { stroke-dasharray: 121.4 167.6; }
.chapanim .s17-bl { animation: s17Bl 12.10s linear 0.00s infinite; }
@keyframes s17Bl { from { stroke-dashoffset: 289.0; } to { stroke-dashoffset: 0; } }
.chapanim .s17-w0 { stroke-dasharray: 92.4 127.6; }
.chapanim .s17-w0 { animation: s17W0 12.45s linear 0.00s infinite; }
@keyframes s17W0 { from { stroke-dashoffset: 220.0; } to { stroke-dashoffset: 0; } }
.chapanim .s17-w1 { stroke-dasharray: 75.6 104.4; }
.chapanim .s17-w1 { animation: s17W1 12.70s linear 0.07s infinite; }
@keyframes s17W1 { from { stroke-dashoffset: 180.0; } to { stroke-dashoffset: 0; } }
.chapanim .s17-w2 { stroke-dasharray: 58.8 81.2; }
.chapanim .s17-w2 { animation: s17W2 12.95s linear 0.14s infinite; }
@keyframes s17W2 { from { stroke-dashoffset: 140.0; } to { stroke-dashoffset: 0; } }
.chapanim .s17-w3 { stroke-dasharray: 42.0 58.0; }
.chapanim .s17-w3 { animation: s17W3 13.20s linear 0.21s infinite; }
@keyframes s17W3 { from { stroke-dashoffset: 100.0; } to { stroke-dashoffset: 0; } }
.chapanim .s17-th { stroke-dasharray: 63.0 87.0; }
.chapanim .s17-th { animation: s17Th 13.65s linear 0.30s infinite; }
@keyframes s17Th { from { stroke-dashoffset: 150.0; } to { stroke-dashoffset: 0; } }
.chapanim .s17-hf { stroke-dasharray: 50.4 69.6; }
.chapanim .s17-hf { animation: s17Hf 14.11s linear 0.36s infinite; }
@keyframes s17Hf { from { stroke-dashoffset: 120.0; } to { stroke-dashoffset: 0; } }
.chapanim .s17-hd { stroke-dasharray: 26.0 36.0; }
.chapanim .s17-hd { animation: s17Hd 14.57s linear 0.42s infinite; }
@keyframes s17Hd { from { stroke-dashoffset: 62.0; } to { stroke-dashoffset: 0; } }

/* scene 18 -- a bolted door, its braces and its ring */
.chapanim .s18-u0 { stroke-dasharray: 14.3 19.7; }
.chapanim .s18-u0 { animation: s18U0 22.21s linear 0.00s infinite; }
@keyframes s18U0 { from { stroke-dashoffset: 34.0; } to { stroke-dashoffset: 0; } }
.chapanim .s18-u1 { stroke-dasharray: 14.3 19.7; }
.chapanim .s18-u1 { animation: s18U1 22.44s linear 0.07s infinite; }
@keyframes s18U1 { from { stroke-dashoffset: 34.0; } to { stroke-dashoffset: 0; } }
.chapanim .s18-u2 { stroke-dasharray: 14.3 19.7; }
.chapanim .s18-u2 { animation: s18U2 22.67s linear 0.14s infinite; }
@keyframes s18U2 { from { stroke-dashoffset: 34.0; } to { stroke-dashoffset: 0; } }
.chapanim .s18-u3 { stroke-dasharray: 14.3 19.7; }
.chapanim .s18-u3 { animation: s18U3 22.90s linear 0.21s infinite; }
@keyframes s18U3 { from { stroke-dashoffset: 34.0; } to { stroke-dashoffset: 0; } }
.chapanim .s18-u4 { stroke-dasharray: 14.3 19.7; }
.chapanim .s18-u4 { animation: s18U4 23.13s linear 0.28s infinite; }
@keyframes s18U4 { from { stroke-dashoffset: 34.0; } to { stroke-dashoffset: 0; } }
.chapanim .s18-u5 { stroke-dasharray: 14.3 19.7; }
.chapanim .s18-u5 { animation: s18U5 23.36s linear 0.35s infinite; }
@keyframes s18U5 { from { stroke-dashoffset: 34.0; } to { stroke-dashoffset: 0; } }
.chapanim .s18-u6 { stroke-dasharray: 14.3 19.7; }
.chapanim .s18-u6 { animation: s18U6 23.59s linear 0.42s infinite; }
@keyframes s18U6 { from { stroke-dashoffset: 34.0; } to { stroke-dashoffset: 0; } }
.chapanim .s18-ur { stroke-dasharray: 97.4 134.6; }
.chapanim .s18-ur { animation: s18Ur 24.12s linear 0.30s infinite; }
@keyframes s18Ur { from { stroke-dashoffset: 232.0; } to { stroke-dashoffset: 0; } }
.chapanim .s18-fr { stroke-dasharray: 295.7 408.3; }
.chapanim .s18-fr { animation: s18Fr 12.51s linear 0.00s infinite; }
@keyframes s18Fr { from { stroke-dashoffset: 704.0; } to { stroke-dashoffset: 0; } }
.chapanim .s18-pl1 { stroke-dasharray: 67.2 92.8; }
.chapanim .s18-pl1 { animation: s18Pl1 13.03s linear 0.06s infinite; }
@keyframes s18Pl1 { from { stroke-dashoffset: 160.0; } to { stroke-dashoffset: 0; } }
.chapanim .s18-pl2 { stroke-dasharray: 67.2 92.8; }
.chapanim .s18-pl2 { animation: s18Pl2 13.26s linear 0.12s infinite; }
@keyframes s18Pl2 { from { stroke-dashoffset: 160.0; } to { stroke-dashoffset: 0; } }
.chapanim .s18-pl3 { stroke-dasharray: 67.2 92.8; }
.chapanim .s18-pl3 { animation: s18Pl3 13.49s linear 0.18s infinite; }
@keyframes s18Pl3 { from { stroke-dashoffset: 160.0; } to { stroke-dashoffset: 0; } }
.chapanim .s18-br0 { stroke-dasharray: 176.4 243.6; }
.chapanim .s18-br0 { animation: s18Br0 13.70s linear 0.00s infinite; }
@keyframes s18Br0 { from { stroke-dashoffset: 420.0; } to { stroke-dashoffset: 0; } }
.chapanim .s18-br1 { stroke-dasharray: 176.4 243.6; }
.chapanim .s18-br1 { animation: s18Br1 13.97s linear 0.10s infinite; }
@keyframes s18Br1 { from { stroke-dashoffset: 420.0; } to { stroke-dashoffset: 0; } }
.chapanim .s18-bolt { stroke-dasharray: 55.4 76.6; }
.chapanim .s18-bolt { animation: s18Bolt 14.30s linear 0.30s infinite; }
@keyframes s18Bolt { from { stroke-dashoffset: 132.0; } to { stroke-dashoffset: 0; } }
.chapanim .s18-kp { stroke-dasharray: 31.9 44.1; }
.chapanim .s18-kp { animation: s18Kp 14.62s linear 0.34s infinite; }
@keyframes s18Kp { from { stroke-dashoffset: 76.0; } to { stroke-dashoffset: 0; } }
.chapanim .s18-knb { stroke-dasharray: 30.2 41.8; }
.chapanim .s18-knb { animation: s18Knb 14.94s linear 0.38s infinite; }
@keyframes s18Knb { from { stroke-dashoffset: 72.0; } to { stroke-dashoffset: 0; } }
.chapanim .s18-ring { stroke-dasharray: 50.4 69.6; }
.chapanim .s18-ring { animation: s18Ring 15.26s linear 0.42s infinite; }
@keyframes s18Ring { from { stroke-dashoffset: 120.0; } to { stroke-dashoffset: 0; } }
.chapanim .s18-sill { stroke-dasharray: 94.1 129.9; }
.chapanim .s18-sill { animation: s18Sill 15.58s linear 0.46s infinite; }
@keyframes s18Sill { from { stroke-dashoffset: 224.0; } to { stroke-dashoffset: 0; } }

/* scene 19 -- an arched opening with a stream running out of it */
.chapanim .s19-u0 { stroke-dasharray: 21.0 29.0; }
.chapanim .s19-u0 { animation: s19U0 22.62s linear 0.00s infinite; }
@keyframes s19U0 { from { stroke-dashoffset: 50.0; } to { stroke-dashoffset: 0; } }
.chapanim .s19-u1 { stroke-dasharray: 21.0 29.0; }
.chapanim .s19-u1 { animation: s19U1 22.91s linear 0.09s infinite; }
@keyframes s19U1 { from { stroke-dashoffset: 50.0; } to { stroke-dashoffset: 0; } }
.chapanim .s19-u2 { stroke-dasharray: 21.0 29.0; }
.chapanim .s19-u2 { animation: s19U2 23.20s linear 0.18s infinite; }
@keyframes s19U2 { from { stroke-dashoffset: 50.0; } to { stroke-dashoffset: 0; } }
.chapanim .s19-u3 { stroke-dasharray: 21.0 29.0; }
.chapanim .s19-u3 { animation: s19U3 23.49s linear 0.27s infinite; }
@keyframes s19U3 { from { stroke-dashoffset: 50.0; } to { stroke-dashoffset: 0; } }
.chapanim .s19-arch { stroke-dasharray: 159.6 220.4; }
.chapanim .s19-arch { animation: s19Arch 12.92s linear 0.00s infinite; }
@keyframes s19Arch { from { stroke-dashoffset: 380.0; } to { stroke-dashoffset: 0; } }
.chapanim .s19-in { stroke-dasharray: 134.4 185.6; }
.chapanim .s19-in { animation: s19In 13.31s linear 0.12s infinite; }
@keyframes s19In { from { stroke-dashoffset: 320.0; } to { stroke-dashoffset: 0; } }
.chapanim .s19-w0 { stroke-dasharray: 121.8 168.2; }
.chapanim .s19-w0 { animation: s19W0 13.75s linear 0.00s infinite; }
@keyframes s19W0 { from { stroke-dashoffset: 290.0; } to { stroke-dashoffset: 0; } }
.chapanim .s19-w1 { stroke-dasharray: 121.8 168.2; }
.chapanim .s19-w1 { animation: s19W1 14.04s linear 0.10s infinite; }
@keyframes s19W1 { from { stroke-dashoffset: 290.0; } to { stroke-dashoffset: 0; } }
.chapanim .s19-w2 { stroke-dasharray: 121.8 168.2; }
.chapanim .s19-w2 { animation: s19W2 14.33s linear 0.20s infinite; }
@keyframes s19W2 { from { stroke-dashoffset: 290.0; } to { stroke-dashoffset: 0; } }
.chapanim .s19-key { stroke-dasharray: 22.7 31.3; }
.chapanim .s19-key { animation: s19Key 14.89s linear 0.36s infinite; }
@keyframes s19Key { from { stroke-dashoffset: 54.0; } to { stroke-dashoffset: 0; } }

/* scene 20 -- a slab tipped off a heap of stones */
.chapanim .s20-u0 { stroke-dasharray: 30.2 41.8; }
.chapanim .s20-u0 { animation: s20U0 23.03s linear 0.00s infinite; }
@keyframes s20U0 { from { stroke-dashoffset: 72.0; } to { stroke-dashoffset: 0; } }
.chapanim .s20-u1 { stroke-dasharray: 20.2 27.8; }
.chapanim .s20-u1 { animation: s20U1 23.34s linear 0.10s infinite; }
@keyframes s20U1 { from { stroke-dashoffset: 48.0; } to { stroke-dashoffset: 0; } }
.chapanim .s20-u2 { stroke-dasharray: 33.6 46.4; }
.chapanim .s20-u2 { animation: s20U2 23.65s linear 0.20s infinite; }
@keyframes s20U2 { from { stroke-dashoffset: 80.0; } to { stroke-dashoffset: 0; } }
.chapanim .s20-u3 { stroke-dasharray: 23.5 32.5; }
.chapanim .s20-u3 { animation: s20U3 23.96s linear 0.30s infinite; }
@keyframes s20U3 { from { stroke-dashoffset: 56.0; } to { stroke-dashoffset: 0; } }
.chapanim .s20-sl { stroke-dasharray: 184.8 255.2; }
.chapanim .s20-sl { animation: s20Sl 13.33s linear 0.00s infinite; }
@keyframes s20Sl { from { stroke-dashoffset: 440.0; } to { stroke-dashoffset: 0; } }
.chapanim .s20-ed { stroke-dasharray: 54.6 75.4; }
.chapanim .s20-ed { animation: s20Ed 13.74s linear 0.12s infinite; }
@keyframes s20Ed { from { stroke-dashoffset: 130.0; } to { stroke-dashoffset: 0; } }
.chapanim .s20-st0 { stroke-dasharray: 68.8 95.0; }
.chapanim .s20-st0 { animation: s20St0 14.18s linear 0.00s infinite; }
@keyframes s20St0 { from { stroke-dashoffset: 163.8; } to { stroke-dashoffset: 0; } }
.chapanim .s20-st1 { stroke-dasharray: 52.9 73.1; }
.chapanim .s20-st1 { animation: s20St1 14.45s linear 0.08s infinite; }
@keyframes s20St1 { from { stroke-dashoffset: 126.0; } to { stroke-dashoffset: 0; } }
.chapanim .s20-st2 { stroke-dasharray: 58.2 80.4; }
.chapanim .s20-st2 { animation: s20St2 14.72s linear 0.16s infinite; }
@keyframes s20St2 { from { stroke-dashoffset: 138.6; } to { stroke-dashoffset: 0; } }
.chapanim .s20-st3 { stroke-dasharray: 39.7 54.8; }
.chapanim .s20-st3 { animation: s20St3 14.99s linear 0.24s infinite; }
@keyframes s20St3 { from { stroke-dashoffset: 94.5; } to { stroke-dashoffset: 0; } }
.chapanim .s20-gr { stroke-dasharray: 115.9 160.1; }
.chapanim .s20-gr { animation: s20Gr 15.56s linear 0.40s infinite; }
@keyframes s20Gr { from { stroke-dashoffset: 276.0; } to { stroke-dashoffset: 0; } }

/* scene 21 -- a silver bath with no bottom to it */
.chapanim .s21-u0 { stroke-dasharray: 118.9 164.3; }
.chapanim .s21-u0 { animation: s21U0 23.44s linear 0.00s infinite; }
@keyframes s21U0 { from { stroke-dashoffset: 283.2; } to { stroke-dashoffset: 0; } }
.chapanim .s21-u1 { stroke-dasharray: 96.8 133.6; }
.chapanim .s21-u1 { animation: s21U1 23.81s linear 0.14s infinite; }
@keyframes s21U1 { from { stroke-dashoffset: 230.4; } to { stroke-dashoffset: 0; } }
.chapanim .s21-u2 { stroke-dasharray: 74.6 103.0; }
.chapanim .s21-u2 { animation: s21U2 24.18s linear 0.28s infinite; }
@keyframes s21U2 { from { stroke-dashoffset: 177.6; } to { stroke-dashoffset: 0; } }
.chapanim .s21-rim { stroke-dasharray: 197.4 272.6; }
.chapanim .s21-rim { animation: s21Rim 13.81s linear 0.00s infinite; }
@keyframes s21Rim { from { stroke-dashoffset: 470.0; } to { stroke-dashoffset: 0; } }
.chapanim .s21-bwl { stroke-dasharray: 126.0 174.0; }
.chapanim .s21-bwl { animation: s21Bwl 14.13s linear 0.12s infinite; }
@keyframes s21Bwl { from { stroke-dashoffset: 300.0; } to { stroke-dashoffset: 0; } }
.chapanim .s21-in { stroke-dasharray: 168.0 232.0; }
.chapanim .s21-in { animation: s21In 14.55s linear 0.20s infinite; }
@keyframes s21In { from { stroke-dashoffset: 400.0; } to { stroke-dashoffset: 0; } }
.chapanim .s21-sk0 { stroke-dasharray: 26.9 37.1; }
.chapanim .s21-sk0 { animation: s21Sk0 14.97s linear 0.00s infinite; }
@keyframes s21Sk0 { from { stroke-dashoffset: 64.0; } to { stroke-dashoffset: 0; } }
.chapanim .s21-sk1 { stroke-dasharray: 37.0 51.0; }
.chapanim .s21-sk1 { animation: s21Sk1 15.33s linear 0.09s infinite; }
@keyframes s21Sk1 { from { stroke-dashoffset: 88.0; } to { stroke-dashoffset: 0; } }
.chapanim .s21-sk2 { stroke-dasharray: 23.5 32.5; }
.chapanim .s21-sk2 { animation: s21Sk2 15.55s linear 0.18s infinite; }
@keyframes s21Sk2 { from { stroke-dashoffset: 56.0; } to { stroke-dashoffset: 0; } }
.chapanim .s21-sk3 { stroke-dasharray: 30.2 41.8; }
.chapanim .s21-sk3 { animation: s21Sk3 15.84s linear 0.27s infinite; }
@keyframes s21Sk3 { from { stroke-dashoffset: 72.0; } to { stroke-dashoffset: 0; } }
.chapanim .s21-ft { stroke-dasharray: 50.4 69.6; }
.chapanim .s21-ft { animation: s21Ft 16.21s linear 0.40s infinite; }
@keyframes s21Ft { from { stroke-dashoffset: 120.0; } to { stroke-dashoffset: 0; } }

/* scene 22 -- a globe of light, and the ray let down from it */
.chapanim .s22-u0 { stroke-dasharray: 14.3 19.7; }
.chapanim .s22-u0 { animation: s22U0 23.85s linear 0.00s infinite; }
@keyframes s22U0 { from { stroke-dashoffset: 34.0; } to { stroke-dashoffset: 0; } }
.chapanim .s22-u1 { stroke-dasharray: 14.3 19.7; }
.chapanim .s22-u1 { animation: s22U1 24.08s linear 0.07s infinite; }
@keyframes s22U1 { from { stroke-dashoffset: 34.0; } to { stroke-dashoffset: 0; } }
.chapanim .s22-u2 { stroke-dasharray: 14.3 19.7; }
.chapanim .s22-u2 { animation: s22U2 24.31s linear 0.14s infinite; }
@keyframes s22U2 { from { stroke-dashoffset: 34.0; } to { stroke-dashoffset: 0; } }
.chapanim .s22-u3 { stroke-dasharray: 14.3 19.7; }
.chapanim .s22-u3 { animation: s22U3 24.54s linear 0.21s infinite; }
@keyframes s22U3 { from { stroke-dashoffset: 34.0; } to { stroke-dashoffset: 0; } }
.chapanim .s22-u4 { stroke-dasharray: 14.3 19.7; }
.chapanim .s22-u4 { animation: s22U4 24.77s linear 0.28s infinite; }
@keyframes s22U4 { from { stroke-dashoffset: 34.0; } to { stroke-dashoffset: 0; } }
.chapanim .s22-u5 { stroke-dasharray: 14.3 19.7; }
.chapanim .s22-u5 { animation: s22U5 25.00s linear 0.35s infinite; }
@keyframes s22U5 { from { stroke-dashoffset: 34.0; } to { stroke-dashoffset: 0; } }
.chapanim .s22-u6 { stroke-dasharray: 14.3 19.7; }
.chapanim .s22-u6 { animation: s22U6 25.23s linear 0.42s infinite; }
@keyframes s22U6 { from { stroke-dashoffset: 34.0; } to { stroke-dashoffset: 0; } }
.chapanim .s22-ur { stroke-dasharray: 97.4 134.6; }
.chapanim .s22-ur { animation: s22Ur 25.76s linear 0.30s infinite; }
@keyframes s22Ur { from { stroke-dashoffset: 232.0; } to { stroke-dashoffset: 0; } }
.chapanim .s22-gl { stroke-dasharray: 116.3 160.7; }
.chapanim .s22-gl { animation: s22Gl 14.15s linear 0.00s infinite; }
@keyframes s22Gl { from { stroke-dashoffset: 277.0; } to { stroke-dashoffset: 0; } }
.chapanim .s22-g2 { stroke-dasharray: 84.4 116.6; }
.chapanim .s22-g2 { animation: s22G2 14.48s linear 0.12s infinite; }
@keyframes s22G2 { from { stroke-dashoffset: 201.0; } to { stroke-dashoffset: 0; } }
.chapanim .s22-ray { stroke-dasharray: 176.4 243.6; }
.chapanim .s22-ray { animation: s22Ray 14.88s linear 0.20s infinite; }
@keyframes s22Ray { from { stroke-dashoffset: 420.0; } to { stroke-dashoffset: 0; } }
.chapanim .s22-b0 { stroke-dasharray: 46.2 63.8; }
.chapanim .s22-b0 { animation: s22B0 15.32s linear 0.00s infinite; }
@keyframes s22B0 { from { stroke-dashoffset: 110.0; } to { stroke-dashoffset: 0; } }
.chapanim .s22-b1 { stroke-dasharray: 46.2 63.8; }
.chapanim .s22-b1 { animation: s22B1 15.59s linear 0.09s infinite; }
@keyframes s22B1 { from { stroke-dashoffset: 110.0; } to { stroke-dashoffset: 0; } }
.chapanim .s22-b2 { stroke-dasharray: 46.2 63.8; }
.chapanim .s22-b2 { animation: s22B2 15.86s linear 0.18s infinite; }
@keyframes s22B2 { from { stroke-dashoffset: 110.0; } to { stroke-dashoffset: 0; } }
.chapanim .s22-pg { stroke-dasharray: 31.9 44.1; }
.chapanim .s22-pg { animation: s22Pg 16.18s linear 0.38s infinite; }
@keyframes s22Pg { from { stroke-dashoffset: 76.0; } to { stroke-dashoffset: 0; } }

/* scene 23 -- a four-poster, its curtains drawn back */
.chapanim .s23-u0 { stroke-dasharray: 21.0 29.0; }
.chapanim .s23-u0 { animation: s23U0 24.26s linear 0.00s infinite; }
@keyframes s23U0 { from { stroke-dashoffset: 50.0; } to { stroke-dashoffset: 0; } }
.chapanim .s23-u1 { stroke-dasharray: 21.0 29.0; }
.chapanim .s23-u1 { animation: s23U1 24.55s linear 0.09s infinite; }
@keyframes s23U1 { from { stroke-dashoffset: 50.0; } to { stroke-dashoffset: 0; } }
.chapanim .s23-u2 { stroke-dasharray: 21.0 29.0; }
.chapanim .s23-u2 { animation: s23U2 24.84s linear 0.18s infinite; }
@keyframes s23U2 { from { stroke-dashoffset: 50.0; } to { stroke-dashoffset: 0; } }
.chapanim .s23-u3 { stroke-dasharray: 21.0 29.0; }
.chapanim .s23-u3 { animation: s23U3 25.13s linear 0.27s infinite; }
@keyframes s23U3 { from { stroke-dashoffset: 50.0; } to { stroke-dashoffset: 0; } }
.chapanim .s23-bed { stroke-dasharray: 198.2 273.8; }
.chapanim .s23-bed { animation: s23Bed 14.56s linear 0.00s infinite; }
@keyframes s23Bed { from { stroke-dashoffset: 472.0; } to { stroke-dashoffset: 0; } }
.chapanim .s23-p1 { stroke-dasharray: 75.6 104.4; }
.chapanim .s23-p1 { animation: s23P1 14.95s linear 0.12s infinite; }
@keyframes s23P1 { from { stroke-dashoffset: 180.0; } to { stroke-dashoffset: 0; } }
.chapanim .s23-can { stroke-dasharray: 90.7 125.3; }
.chapanim .s23-can { animation: s23Can 15.37s linear 0.20s infinite; }
@keyframes s23Can { from { stroke-dashoffset: 216.0; } to { stroke-dashoffset: 0; } }
.chapanim .s23-vl { stroke-dasharray: 38.6 53.4; }
.chapanim .s23-vl { animation: s23Vl 15.75s linear 0.26s infinite; }
@keyframes s23Vl { from { stroke-dashoffset: 92.0; } to { stroke-dashoffset: 0; } }
.chapanim .s23-vr { stroke-dasharray: 38.6 53.4; }
.chapanim .s23-vr { animation: s23Vr 16.13s linear 0.30s infinite; }
@keyframes s23Vr { from { stroke-dashoffset: 92.0; } to { stroke-dashoffset: 0; } }
.chapanim .s23-ft { stroke-dasharray: 18.5 25.5; }
.chapanim .s23-ft { animation: s23Ft 16.55s linear 0.36s infinite; }
@keyframes s23Ft { from { stroke-dashoffset: 44.0; } to { stroke-dashoffset: 0; } }

/* scene 24 -- a crossbow, spanned */
.chapanim .s24-u0 { stroke-dasharray: 30.2 41.8; }
.chapanim .s24-u0 { animation: s24U0 24.67s linear 0.00s infinite; }
@keyframes s24U0 { from { stroke-dashoffset: 72.0; } to { stroke-dashoffset: 0; } }
.chapanim .s24-u1 { stroke-dasharray: 20.2 27.8; }
.chapanim .s24-u1 { animation: s24U1 24.98s linear 0.10s infinite; }
@keyframes s24U1 { from { stroke-dashoffset: 48.0; } to { stroke-dashoffset: 0; } }
.chapanim .s24-u2 { stroke-dasharray: 33.6 46.4; }
.chapanim .s24-u2 { animation: s24U2 25.29s linear 0.20s infinite; }
@keyframes s24U2 { from { stroke-dashoffset: 80.0; } to { stroke-dashoffset: 0; } }
.chapanim .s24-u3 { stroke-dasharray: 23.5 32.5; }
.chapanim .s24-u3 { animation: s24U3 25.60s linear 0.30s infinite; }
@keyframes s24U3 { from { stroke-dashoffset: 56.0; } to { stroke-dashoffset: 0; } }
.chapanim .s24-stk { stroke-dasharray: 184.8 255.2; }
.chapanim .s24-stk { animation: s24Stk 15.04s linear 0.00s infinite; }
@keyframes s24Stk { from { stroke-dashoffset: 440.0; } to { stroke-dashoffset: 0; } }
.chapanim .s24-bow { stroke-dasharray: 71.4 98.6; }
.chapanim .s24-bow { animation: s24Bow 15.38s linear 0.12s infinite; }
@keyframes s24Bow { from { stroke-dashoffset: 170.0; } to { stroke-dashoffset: 0; } }
.chapanim .s24-str { stroke-dasharray: 105.0 145.0; }
.chapanim .s24-str { animation: s24Str 15.80s linear 0.20s infinite; }
@keyframes s24Str { from { stroke-dashoffset: 250.0; } to { stroke-dashoffset: 0; } }
.chapanim .s24-blt { stroke-dasharray: 69.7 96.3; }
.chapanim .s24-blt { animation: s24Blt 16.22s linear 0.28s infinite; }
@keyframes s24Blt { from { stroke-dashoffset: 166.0; } to { stroke-dashoffset: 0; } }
.chapanim .s24-hd { stroke-dasharray: 19.3 26.7; }
.chapanim .s24-hd { animation: s24Hd 16.71s linear 0.34s infinite; }
@keyframes s24Hd { from { stroke-dashoffset: 46.0; } to { stroke-dashoffset: 0; } }
.chapanim .s24-trg { stroke-dasharray: 14.3 19.7; }
.chapanim .s24-trg { animation: s24Trg 17.06s linear 0.40s infinite; }
@keyframes s24Trg { from { stroke-dashoffset: 34.0; } to { stroke-dashoffset: 0; } }

/* scene 25 -- a round block on an inclined plane */
.chapanim .s25-u0 { stroke-dasharray: 118.9 164.3; }
.chapanim .s25-u0 { animation: s25U0 25.08s linear 0.00s infinite; }
@keyframes s25U0 { from { stroke-dashoffset: 283.2; } to { stroke-dashoffset: 0; } }
.chapanim .s25-u1 { stroke-dasharray: 96.8 133.6; }
.chapanim .s25-u1 { animation: s25U1 25.45s linear 0.14s infinite; }
@keyframes s25U1 { from { stroke-dashoffset: 230.4; } to { stroke-dashoffset: 0; } }
.chapanim .s25-u2 { stroke-dasharray: 74.6 103.0; }
.chapanim .s25-u2 { animation: s25U2 25.82s linear 0.28s infinite; }
@keyframes s25U2 { from { stroke-dashoffset: 177.6; } to { stroke-dashoffset: 0; } }
.chapanim .s25-pl { stroke-dasharray: 126.8 175.2; }
.chapanim .s25-pl { animation: s25Pl 15.52s linear 0.00s infinite; }
@keyframes s25Pl { from { stroke-dashoffset: 302.0; } to { stroke-dashoffset: 0; } }
.chapanim .s25-pl2 { stroke-dasharray: 126.8 175.2; }
.chapanim .s25-pl2 { animation: s25Pl2 15.71s linear 0.12s infinite; }
@keyframes s25Pl2 { from { stroke-dashoffset: 302.0; } to { stroke-dashoffset: 0; } }
.chapanim .s25-bk { stroke-dasharray: 137.3 189.7; }
.chapanim .s25-bk { animation: s25Bk 16.09s linear 0.20s infinite; }
@keyframes s25Bk { from { stroke-dashoffset: 327.0; } to { stroke-dashoffset: 0; } }
.chapanim .s25-f0 { stroke-dasharray: 34.4 47.6; }
.chapanim .s25-f0 { animation: s25F0 16.51s linear 0.00s infinite; }
@keyframes s25F0 { from { stroke-dashoffset: 82.0; } to { stroke-dashoffset: 0; } }
.chapanim .s25-f1 { stroke-dasharray: 34.4 47.6; }
.chapanim .s25-f1 { animation: s25F1 16.85s linear 0.09s infinite; }
@keyframes s25F1 { from { stroke-dashoffset: 82.0; } to { stroke-dashoffset: 0; } }
.chapanim .s25-f2 { stroke-dasharray: 34.4 47.6; }
.chapanim .s25-f2 { animation: s25F2 17.05s linear 0.18s infinite; }
@keyframes s25F2 { from { stroke-dashoffset: 82.0; } to { stroke-dashoffset: 0; } }
.chapanim .s25-d0 { stroke-dasharray: 12.2 16.8; }
.chapanim .s25-d0 { animation: s25D0 17.39s linear 0.00s infinite; }
@keyframes s25D0 { from { stroke-dashoffset: 29.0; } to { stroke-dashoffset: 0; } }
.chapanim .s25-d1 { stroke-dasharray: 12.2 16.8; }
.chapanim .s25-d1 { animation: s25D1 17.64s linear 0.10s infinite; }
@keyframes s25D1 { from { stroke-dashoffset: 29.0; } to { stroke-dashoffset: 0; } }
.chapanim .s25-d2 { stroke-dasharray: 12.2 16.8; }
.chapanim .s25-d2 { animation: s25D2 17.89s linear 0.20s infinite; }
@keyframes s25D2 { from { stroke-dashoffset: 29.0; } to { stroke-dashoffset: 0; } }

/* scene 26 -- a cask on its stand, and the tap */
.chapanim .s26-u0 { stroke-dasharray: 14.3 19.7; }
.chapanim .s26-u0 { animation: s26U0 25.49s linear 0.00s infinite; }
@keyframes s26U0 { from { stroke-dashoffset: 34.0; } to { stroke-dashoffset: 0; } }
.chapanim .s26-u1 { stroke-dasharray: 14.3 19.7; }
.chapanim .s26-u1 { animation: s26U1 25.72s linear 0.07s infinite; }
@keyframes s26U1 { from { stroke-dashoffset: 34.0; } to { stroke-dashoffset: 0; } }
.chapanim .s26-u2 { stroke-dasharray: 14.3 19.7; }
.chapanim .s26-u2 { animation: s26U2 25.95s linear 0.14s infinite; }
@keyframes s26U2 { from { stroke-dashoffset: 34.0; } to { stroke-dashoffset: 0; } }
.chapanim .s26-u3 { stroke-dasharray: 14.3 19.7; }
.chapanim .s26-u3 { animation: s26U3 26.18s linear 0.21s infinite; }
@keyframes s26U3 { from { stroke-dashoffset: 34.0; } to { stroke-dashoffset: 0; } }
.chapanim .s26-u4 { stroke-dasharray: 14.3 19.7; }
.chapanim .s26-u4 { animation: s26U4 26.41s linear 0.28s infinite; }
@keyframes s26U4 { from { stroke-dashoffset: 34.0; } to { stroke-dashoffset: 0; } }
.chapanim .s26-u5 { stroke-dasharray: 14.3 19.7; }
.chapanim .s26-u5 { animation: s26U5 26.64s linear 0.35s infinite; }
@keyframes s26U5 { from { stroke-dashoffset: 34.0; } to { stroke-dashoffset: 0; } }
.chapanim .s26-u6 { stroke-dasharray: 14.3 19.7; }
.chapanim .s26-u6 { animation: s26U6 26.87s linear 0.42s infinite; }
@keyframes s26U6 { from { stroke-dashoffset: 34.0; } to { stroke-dashoffset: 0; } }
.chapanim .s26-ur { stroke-dasharray: 97.4 134.6; }
.chapanim .s26-ur { animation: s26Ur 27.40s linear 0.30s infinite; }
@keyframes s26Ur { from { stroke-dashoffset: 232.0; } to { stroke-dashoffset: 0; } }
.chapanim .s26-bl { stroke-dasharray: 55.4 76.6; }
.chapanim .s26-bl { animation: s26Bl 15.79s linear 0.00s infinite; }
@keyframes s26Bl { from { stroke-dashoffset: 132.0; } to { stroke-dashoffset: 0; } }
.chapanim .s26-br { stroke-dasharray: 55.4 76.6; }
.chapanim .s26-br { animation: s26Br 16.12s linear 0.10s infinite; }
@keyframes s26Br { from { stroke-dashoffset: 132.0; } to { stroke-dashoffset: 0; } }
.chapanim .s26-tp { stroke-dasharray: 72.2 99.8; }
.chapanim .s26-tp { animation: s26Tp 16.48s linear 0.18s infinite; }
@keyframes s26Tp { from { stroke-dashoffset: 172.0; } to { stroke-dashoffset: 0; } }
.chapanim .s26-bt { stroke-dasharray: 72.2 99.8; }
.chapanim .s26-bt { animation: s26Bt 16.84s linear 0.24s infinite; }
@keyframes s26Bt { from { stroke-dashoffset: 172.0; } to { stroke-dashoffset: 0; } }
.chapanim .s26-hp0 { stroke-dasharray: 84.0 116.0; }
.chapanim .s26-hp0 { animation: s26Hp0 17.22s linear 0.00s infinite; }
@keyframes s26Hp0 { from { stroke-dashoffset: 200.0; } to { stroke-dashoffset: 0; } }
.chapanim .s26-hp1 { stroke-dasharray: 84.0 116.0; }
.chapanim .s26-hp1 { animation: s26Hp1 17.51s linear 0.10s infinite; }
@keyframes s26Hp1 { from { stroke-dashoffset: 200.0; } to { stroke-dashoffset: 0; } }
.chapanim .s26-tap { stroke-dasharray: 24.4 33.6; }
.chapanim .s26-tap { animation: s26Tap 17.92s linear 0.34s infinite; }
@keyframes s26Tap { from { stroke-dashoffset: 58.0; } to { stroke-dashoffset: 0; } }

/* scene 27 -- a thread through three eyelets */
.chapanim .s27-u0 { stroke-dasharray: 21.0 29.0; }
.chapanim .s27-u0 { animation: s27U0 25.90s linear 0.00s infinite; }
@keyframes s27U0 { from { stroke-dashoffset: 50.0; } to { stroke-dashoffset: 0; } }
.chapanim .s27-u1 { stroke-dasharray: 21.0 29.0; }
.chapanim .s27-u1 { animation: s27U1 26.19s linear 0.09s infinite; }
@keyframes s27U1 { from { stroke-dashoffset: 50.0; } to { stroke-dashoffset: 0; } }
.chapanim .s27-u2 { stroke-dasharray: 21.0 29.0; }
.chapanim .s27-u2 { animation: s27U2 26.48s linear 0.18s infinite; }
@keyframes s27U2 { from { stroke-dashoffset: 50.0; } to { stroke-dashoffset: 0; } }
.chapanim .s27-u3 { stroke-dasharray: 21.0 29.0; }
.chapanim .s27-u3 { animation: s27U3 26.77s linear 0.27s infinite; }
@keyframes s27U3 { from { stroke-dashoffset: 50.0; } to { stroke-dashoffset: 0; } }
.chapanim .s27-e0 { stroke-dasharray: 58.0 80.0; }
.chapanim .s27-e0 { animation: s27E0 16.20s linear 0.00s infinite; }
@keyframes s27E0 { from { stroke-dashoffset: 138.0; } to { stroke-dashoffset: 0; } }
.chapanim .s27-i0 { stroke-dasharray: 34.4 47.6; }
.chapanim .s27-i0 { animation: s27I0 17.43s linear 0.00s infinite; }
@keyframes s27I0 { from { stroke-dashoffset: 82.0; } to { stroke-dashoffset: 0; } }
.chapanim .s27-e1 { stroke-dasharray: 58.0 80.0; }
.chapanim .s27-e1 { animation: s27E1 16.58s linear 0.08s infinite; }
@keyframes s27E1 { from { stroke-dashoffset: 138.0; } to { stroke-dashoffset: 0; } }
.chapanim .s27-i1 { stroke-dasharray: 34.4 47.6; }
.chapanim .s27-i1 { animation: s27I1 17.77s linear 0.08s infinite; }
@keyframes s27I1 { from { stroke-dashoffset: 82.0; } to { stroke-dashoffset: 0; } }
.chapanim .s27-e2 { stroke-dasharray: 58.0 80.0; }
.chapanim .s27-e2 { animation: s27E2 16.82s linear 0.16s infinite; }
@keyframes s27E2 { from { stroke-dashoffset: 138.0; } to { stroke-dashoffset: 0; } }
.chapanim .s27-i2 { stroke-dasharray: 34.4 47.6; }
.chapanim .s27-i2 { animation: s27I2 17.97s linear 0.16s infinite; }
@keyframes s27I2 { from { stroke-dashoffset: 82.0; } to { stroke-dashoffset: 0; } }
.chapanim .s27-th { stroke-dasharray: 168.0 232.0; }
.chapanim .s27-th { animation: s27Th 18.37s linear 0.30s infinite; }
@keyframes s27Th { from { stroke-dashoffset: 400.0; } to { stroke-dashoffset: 0; } }
.chapanim .s27-gr { stroke-dasharray: 117.6 162.4; }
.chapanim .s27-gr { animation: s27Gr 18.83s linear 0.40s infinite; }
@keyframes s27Gr { from { stroke-dashoffset: 280.0; } to { stroke-dashoffset: 0; } }

/* scene 28 -- a square, a plumb, and the blocks not yet laid */
.chapanim .s28-u0 { stroke-dasharray: 30.2 41.8; }
.chapanim .s28-u0 { animation: s28U0 26.31s linear 0.00s infinite; }
@keyframes s28U0 { from { stroke-dashoffset: 72.0; } to { stroke-dashoffset: 0; } }
.chapanim .s28-u1 { stroke-dasharray: 20.2 27.8; }
.chapanim .s28-u1 { animation: s28U1 26.62s linear 0.10s infinite; }
@keyframes s28U1 { from { stroke-dashoffset: 48.0; } to { stroke-dashoffset: 0; } }
.chapanim .s28-u2 { stroke-dasharray: 33.6 46.4; }
.chapanim .s28-u2 { animation: s28U2 26.93s linear 0.20s infinite; }
@keyframes s28U2 { from { stroke-dashoffset: 80.0; } to { stroke-dashoffset: 0; } }
.chapanim .s28-u3 { stroke-dasharray: 23.5 32.5; }
.chapanim .s28-u3 { animation: s28U3 27.24s linear 0.30s infinite; }
@keyframes s28U3 { from { stroke-dashoffset: 56.0; } to { stroke-dashoffset: 0; } }
.chapanim .s28-sq1 { stroke-dasharray: 109.2 150.8; }
.chapanim .s28-sq1 { animation: s28Sq1 16.61s linear 0.00s infinite; }
@keyframes s28Sq1 { from { stroke-dashoffset: 260.0; } to { stroke-dashoffset: 0; } }
.chapanim .s28-sq2 { stroke-dasharray: 95.8 132.2; }
.chapanim .s28-sq2 { animation: s28Sq2 16.92s linear 0.08s infinite; }
@keyframes s28Sq2 { from { stroke-dashoffset: 228.0; } to { stroke-dashoffset: 0; } }
.chapanim .s28-sq3 { stroke-dasharray: 6.7 9.3; }
.chapanim .s28-sq3 { animation: s28Sq3 17.24s linear 0.14s infinite; }
@keyframes s28Sq3 { from { stroke-dashoffset: 16.0; } to { stroke-dashoffset: 0; } }
.chapanim .s28-str { stroke-dasharray: 32.8 45.2; }
.chapanim .s28-str { animation: s28Str 17.63s linear 0.20s infinite; }
@keyframes s28Str { from { stroke-dashoffset: 78.0; } to { stroke-dashoffset: 0; } }
.chapanim .s28-bob { stroke-dasharray: 31.1 42.9; }
.chapanim .s28-bob { animation: s28Bob 17.88s linear 0.26s infinite; }
@keyframes s28Bob { from { stroke-dashoffset: 74.0; } to { stroke-dashoffset: 0; } }
.chapanim .s28-s0 { stroke-dasharray: 90.7 125.3; }
.chapanim .s28-s0 { animation: s28S0 18.20s linear 0.00s infinite; }
@keyframes s28S0 { from { stroke-dashoffset: 216.0; } to { stroke-dashoffset: 0; } }
.chapanim .s28-s1 { stroke-dasharray: 90.7 125.3; }
.chapanim .s28-s1 { animation: s28S1 18.49s linear 0.10s infinite; }
@keyframes s28S1 { from { stroke-dashoffset: 216.0; } to { stroke-dashoffset: 0; } }
.chapanim .s28-s2 { stroke-dasharray: 90.7 125.3; }
.chapanim .s28-s2 { animation: s28S2 18.78s linear 0.20s infinite; }
@keyframes s28S2 { from { stroke-dashoffset: 216.0; } to { stroke-dashoffset: 0; } }
.chapanim .s28-gr { stroke-dasharray: 114.2 157.8; }
.chapanim .s28-gr { animation: s28Gr 19.12s linear 0.42s infinite; }
@keyframes s28Gr { from { stroke-dashoffset: 272.0; } to { stroke-dashoffset: 0; } }

/* scene 29 -- a circlet set with stones */
.chapanim .s29-u0 { stroke-dasharray: 118.9 164.3; }
.chapanim .s29-u0 { animation: s29U0 26.72s linear 0.00s infinite; }
@keyframes s29U0 { from { stroke-dashoffset: 283.2; } to { stroke-dashoffset: 0; } }
.chapanim .s29-u1 { stroke-dasharray: 96.8 133.6; }
.chapanim .s29-u1 { animation: s29U1 27.09s linear 0.14s infinite; }
@keyframes s29U1 { from { stroke-dashoffset: 230.4; } to { stroke-dashoffset: 0; } }
.chapanim .s29-u2 { stroke-dasharray: 74.6 103.0; }
.chapanim .s29-u2 { animation: s29U2 27.46s linear 0.28s infinite; }
@keyframes s29U2 { from { stroke-dashoffset: 177.6; } to { stroke-dashoffset: 0; } }
.chapanim .s29-o { stroke-dasharray: 210.0 290.0; }
.chapanim .s29-o { animation: s29O 17.02s linear 0.00s infinite; }
@keyframes s29O { from { stroke-dashoffset: 500.0; } to { stroke-dashoffset: 0; } }
.chapanim .s29-i { stroke-dasharray: 210.0 290.0; }
.chapanim .s29-i { animation: s29I 17.37s linear 0.12s infinite; }
@keyframes s29I { from { stroke-dashoffset: 500.0; } to { stroke-dashoffset: 0; } }
.chapanim .s29-j0 { stroke-dasharray: 33.6 46.4; }
.chapanim .s29-j0 { animation: s29J0 17.84s linear 0.00s infinite; }
@keyframes s29J0 { from { stroke-dashoffset: 80.0; } to { stroke-dashoffset: 0; } }
.chapanim .s29-j1 { stroke-dasharray: 33.6 46.4; }
.chapanim .s29-j1 { animation: s29J1 18.02s linear 0.06s infinite; }
@keyframes s29J1 { from { stroke-dashoffset: 80.0; } to { stroke-dashoffset: 0; } }
.chapanim .s29-j2 { stroke-dasharray: 33.6 46.4; }
.chapanim .s29-j2 { animation: s29J2 18.27s linear 0.12s infinite; }
@keyframes s29J2 { from { stroke-dashoffset: 80.0; } to { stroke-dashoffset: 0; } }
.chapanim .s29-j3 { stroke-dasharray: 33.6 46.4; }
.chapanim .s29-j3 { animation: s29J3 18.59s linear 0.18s infinite; }
@keyframes s29J3 { from { stroke-dashoffset: 80.0; } to { stroke-dashoffset: 0; } }
.chapanim .s29-j4 { stroke-dasharray: 33.6 46.4; }
.chapanim .s29-j4 { animation: s29J4 18.77s linear 0.24s infinite; }
@keyframes s29J4 { from { stroke-dashoffset: 80.0; } to { stroke-dashoffset: 0; } }
.chapanim .s29-pk { stroke-dasharray: 63.8 88.2; }
.chapanim .s29-pk { animation: s29Pk 19.05s linear 0.34s infinite; }
@keyframes s29Pk { from { stroke-dashoffset: 152.0; } to { stroke-dashoffset: 0; } }
.chapanim .s29-sh { stroke-dasharray: 134.4 185.6; }
.chapanim .s29-sh { animation: s29Sh 19.49s linear 0.40s infinite; }
@keyframes s29Sh { from { stroke-dashoffset: 320.0; } to { stroke-dashoffset: 0; } }

/* scene 30 -- a sluice gate, and the channel under it */
.chapanim .s30-u0 { stroke-dasharray: 14.3 19.7; }
.chapanim .s30-u0 { animation: s30U0 27.13s linear 0.00s infinite; }
@keyframes s30U0 { from { stroke-dashoffset: 34.0; } to { stroke-dashoffset: 0; } }
.chapanim .s30-u1 { stroke-dasharray: 14.3 19.7; }
.chapanim .s30-u1 { animation: s30U1 27.36s linear 0.07s infinite; }
@keyframes s30U1 { from { stroke-dashoffset: 34.0; } to { stroke-dashoffset: 0; } }
.chapanim .s30-u2 { stroke-dasharray: 14.3 19.7; }
.chapanim .s30-u2 { animation: s30U2 27.59s linear 0.14s infinite; }
@keyframes s30U2 { from { stroke-dashoffset: 34.0; } to { stroke-dashoffset: 0; } }
.chapanim .s30-u3 { stroke-dasharray: 14.3 19.7; }
.chapanim .s30-u3 { animation: s30U3 27.82s linear 0.21s infinite; }
@keyframes s30U3 { from { stroke-dashoffset: 34.0; } to { stroke-dashoffset: 0; } }
.chapanim .s30-u4 { stroke-dasharray: 14.3 19.7; }
.chapanim .s30-u4 { animation: s30U4 28.05s linear 0.28s infinite; }
@keyframes s30U4 { from { stroke-dashoffset: 34.0; } to { stroke-dashoffset: 0; } }
.chapanim .s30-u5 { stroke-dasharray: 14.3 19.7; }
.chapanim .s30-u5 { animation: s30U5 28.28s linear 0.35s infinite; }
@keyframes s30U5 { from { stroke-dashoffset: 34.0; } to { stroke-dashoffset: 0; } }
.chapanim .s30-u6 { stroke-dasharray: 14.3 19.7; }
.chapanim .s30-u6 { animation: s30U6 28.51s linear 0.42s infinite; }
@keyframes s30U6 { from { stroke-dashoffset: 34.0; } to { stroke-dashoffset: 0; } }
.chapanim .s30-ur { stroke-dasharray: 97.4 134.6; }
.chapanim .s30-ur { animation: s30Ur 29.04s linear 0.30s infinite; }
@keyframes s30Ur { from { stroke-dashoffset: 232.0; } to { stroke-dashoffset: 0; } }
.chapanim .s30-jl { stroke-dasharray: 156.2 215.8; }
.chapanim .s30-jl { animation: s30Jl 17.50s linear 0.00s infinite; }
@keyframes s30Jl { from { stroke-dashoffset: 372.0; } to { stroke-dashoffset: 0; } }
.chapanim .s30-jr { stroke-dasharray: 156.2 215.8; }
.chapanim .s30-jr { animation: s30Jr 17.72s linear 0.06s infinite; }
@keyframes s30Jr { from { stroke-dashoffset: 372.0; } to { stroke-dashoffset: 0; } }
.chapanim .s30-gate { stroke-dasharray: 205.0 283.0; }
.chapanim .s30-gate { animation: s30Gate 18.09s linear 0.12s infinite; }
@keyframes s30Gate { from { stroke-dashoffset: 488.0; } to { stroke-dashoffset: 0; } }
.chapanim .s30-sl1 { stroke-dasharray: 70.6 97.4; }
.chapanim .s30-sl1 { animation: s30Sl1 18.55s linear 0.06s infinite; }
@keyframes s30Sl1 { from { stroke-dashoffset: 168.0; } to { stroke-dashoffset: 0; } }
.chapanim .s30-sl2 { stroke-dasharray: 70.6 97.4; }
.chapanim .s30-sl2 { animation: s30Sl2 18.85s linear 0.12s infinite; }
@keyframes s30Sl2 { from { stroke-dashoffset: 168.0; } to { stroke-dashoffset: 0; } }
.chapanim .s30-sl3 { stroke-dasharray: 70.6 97.4; }
.chapanim .s30-sl3 { animation: s30Sl3 19.01s linear 0.18s infinite; }
@keyframes s30Sl3 { from { stroke-dashoffset: 168.0; } to { stroke-dashoffset: 0; } }
.chapanim .s30-ch0 { stroke-dasharray: 17.2 23.8; }
.chapanim .s30-ch0 { animation: s30Ch0 19.22s linear 0.00s infinite; }
@keyframes s30Ch0 { from { stroke-dashoffset: 41.0; } to { stroke-dashoffset: 0; } }
.chapanim .s30-ch1 { stroke-dasharray: 17.2 23.8; }
.chapanim .s30-ch1 { animation: s30Ch1 19.47s linear 0.08s infinite; }
@keyframes s30Ch1 { from { stroke-dashoffset: 41.0; } to { stroke-dashoffset: 0; } }
.chapanim .s30-ch2 { stroke-dasharray: 17.2 23.8; }
.chapanim .s30-ch2 { animation: s30Ch2 19.72s linear 0.16s infinite; }
@keyframes s30Ch2 { from { stroke-dashoffset: 41.0; } to { stroke-dashoffset: 0; } }
.chapanim .s30-w0 { stroke-dasharray: 73.9 102.1; }
.chapanim .s30-w0 { animation: s30W0 20.04s linear 0.00s infinite; }
@keyframes s30W0 { from { stroke-dashoffset: 176.0; } to { stroke-dashoffset: 0; } }
.chapanim .s30-w1 { stroke-dasharray: 73.9 102.1; }
.chapanim .s30-w1 { animation: s30W1 20.38s linear 0.10s infinite; }
@keyframes s30W1 { from { stroke-dashoffset: 176.0; } to { stroke-dashoffset: 0; } }
.chapanim .s30-w2 { stroke-dasharray: 73.9 102.1; }
.chapanim .s30-w2 { animation: s30W2 20.58s linear 0.20s infinite; }
@keyframes s30W2 { from { stroke-dashoffset: 176.0; } to { stroke-dashoffset: 0; } }
.chapanim .s30-sill { stroke-dasharray: 114.2 157.8; }
.chapanim .s30-sill { animation: s30Sill 20.86s linear 0.44s infinite; }
@keyframes s30Sill { from { stroke-dashoffset: 272.0; } to { stroke-dashoffset: 0; } }

/* scene 31 -- an arch, built up and coursed */
.chapanim .s31-u0 { stroke-dasharray: 21.0 29.0; }
.chapanim .s31-u0 { animation: s31U0 27.54s linear 0.00s infinite; }
@keyframes s31U0 { from { stroke-dashoffset: 50.0; } to { stroke-dashoffset: 0; } }
.chapanim .s31-u1 { stroke-dasharray: 21.0 29.0; }
.chapanim .s31-u1 { animation: s31U1 27.83s linear 0.09s infinite; }
@keyframes s31U1 { from { stroke-dashoffset: 50.0; } to { stroke-dashoffset: 0; } }
.chapanim .s31-u2 { stroke-dasharray: 21.0 29.0; }
.chapanim .s31-u2 { animation: s31U2 28.12s linear 0.18s infinite; }
@keyframes s31U2 { from { stroke-dashoffset: 50.0; } to { stroke-dashoffset: 0; } }
.chapanim .s31-u3 { stroke-dasharray: 21.0 29.0; }
.chapanim .s31-u3 { animation: s31U3 28.41s linear 0.27s infinite; }
@keyframes s31U3 { from { stroke-dashoffset: 50.0; } to { stroke-dashoffset: 0; } }
.chapanim .s31-out { stroke-dasharray: 168.0 232.0; }
.chapanim .s31-out { animation: s31Out 17.91s linear 0.00s infinite; }
@keyframes s31Out { from { stroke-dashoffset: 400.0; } to { stroke-dashoffset: 0; } }
.chapanim .s31-in { stroke-dasharray: 126.0 174.0; }
.chapanim .s31-in { animation: s31In 18.35s linear 0.12s infinite; }
@keyframes s31In { from { stroke-dashoffset: 300.0; } to { stroke-dashoffset: 0; } }
.chapanim .s31-cl0 { stroke-dasharray: 30.2 41.8; }
.chapanim .s31-cl0 { animation: s31Cl0 18.63s linear 0.00s infinite; }
@keyframes s31Cl0 { from { stroke-dashoffset: 72.0; } to { stroke-dashoffset: 0; } }
.chapanim .s31-cl1 { stroke-dasharray: 30.2 41.8; }
.chapanim .s31-cl1 { animation: s31Cl1 18.90s linear 0.09s infinite; }
@keyframes s31Cl1 { from { stroke-dashoffset: 72.0; } to { stroke-dashoffset: 0; } }
.chapanim .s31-cl2 { stroke-dasharray: 30.2 41.8; }
.chapanim .s31-cl2 { animation: s31Cl2 19.17s linear 0.18s infinite; }
@keyframes s31Cl2 { from { stroke-dashoffset: 72.0; } to { stroke-dashoffset: 0; } }
.chapanim .s31-vo0 { stroke-dasharray: 18.5 25.5; }
.chapanim .s31-vo0 { animation: s31Vo0 19.51s linear 0.00s infinite; }
@keyframes s31Vo0 { from { stroke-dashoffset: 44.0; } to { stroke-dashoffset: 0; } }
.chapanim .s31-vo1 { stroke-dasharray: 18.5 25.5; }
.chapanim .s31-vo1 { animation: s31Vo1 19.80s linear 0.10s infinite; }
@keyframes s31Vo1 { from { stroke-dashoffset: 44.0; } to { stroke-dashoffset: 0; } }
.chapanim .s31-vo2 { stroke-dasharray: 18.5 25.5; }
.chapanim .s31-vo2 { animation: s31Vo2 20.09s linear 0.20s infinite; }
@keyframes s31Vo2 { from { stroke-dashoffset: 44.0; } to { stroke-dashoffset: 0; } }
.chapanim .s31-gr { stroke-dasharray: 107.5 148.5; }
.chapanim .s31-gr { animation: s31Gr 20.43s linear 0.40s infinite; }
@keyframes s31Gr { from { stroke-dashoffset: 256.0; } to { stroke-dashoffset: 0; } }



/* goblin cover. Scoped under .cover-front. */

/* The reset every illustrated cover needs. Without it the engine
   keeps its own 3px double gold border at inset 7%, which the
   600x820 artwork overflows, and keeps rendering .cover-sub from
   the book config, whose &nbsp;-joined words cannot wrap and run
   off both edges. The SVG sets its own lettering. */
.cover-front .cover-frame { padding: 0; border: 0; }
.cover-front .cover-title { width: 100%; font-size: 1em; letter-spacing: 0; text-shadow: none; }
.cover-front svg.cvsvg { width: 100%; height: auto; display: block; }
.cover-front .cover-orn, .cover-front .cover-sub, .cover-front .cover-author { display: none; }

/* The engine also stamps an embossed border of its own on every
   cover: .cover-inner::before repeats a diamond band along all
   four edges at 2.2% inset, and ::after sets rosettes in the four
   corners at 1.4%. Both are drawn as a dark copy offset against a
   light one -- the emboss technique. On a full-bleed illustration
   that reads as a frame the art is trapped inside, so it is off
   here. The back cover keeps it. */
.cover-front .cover-inner::before,
.cover-front .cover-inner::after { display: none; }

.cover-front .cvsvg text { font-family: Georgia,'Times New Roman',serif; text-anchor: middle; }

.cover-front, .cover-back { background: radial-gradient(ellipse at 30% 25%, rgba(255,255,255,.05), rgba(255,255,255,0) 55%), linear-gradient(135deg, #07020f 0%, #3a0d63 52%, #07020f 100%); }
.cover-front .halo { animation: gbHalo 12.70s ease-in-out 0.00s infinite; }
@keyframes gbHalo { 0%,100% { opacity:.62; } 50% { opacity:1; } }
.cover-front .globe { animation: gbGlobe 15.30s ease-in-out 0.50s infinite; }
@keyframes gbGlobe { 0%,100% { opacity:.92; } 50% { opacity:1; } }
.cover-front .rim { animation: gbRim 17.90s ease-in-out 0.90s infinite; }
@keyframes gbRim { 0%,100% { stroke-opacity:.32; } 50% { stroke-opacity:.7; } }
.cover-front .sh0 { animation: gbShell0 21.10s ease-in-out 0.40s infinite; }
@keyframes gbShell0 { 0%,100% { transform: translate(0,0); } 50% { transform: translate(3.0px, -2.4px); } }
.cover-front .sh1 { animation: gbShell1 23.40s ease-in-out 1.20s infinite; }
@keyframes gbShell1 { 0%,100% { transform: translate(0,0); } 50% { transform: translate(1.4px, -1.1px); } }
.cover-front .bd0 { animation: gbBand0 9.10s ease-in-out 0.00s infinite; }
@keyframes gbBand0 { 0%,100% { opacity:.34; transform: translate(0,0); } 50%  { opacity:.9; transform: translate(-14px, 16px); } }
.cover-front .redge { animation: gbEdge 13.70s ease-in-out 1.20s infinite; }
@keyframes gbEdge { 0%,100% { stroke-opacity:.26; } 50% { stroke-opacity:.66; } }
.cover-front .hwin { animation: gbWin 18.50s ease-in-out 1.60s infinite; }
@keyframes gbWin { 0%,100% { opacity:.55; } 50% { opacity:1; } }
.cover-front .sp0 { animation: gbSp0 5.30s ease-in-out 0.30s infinite; }
@keyframes gbSp0 { 0%,100% { opacity:.22; } 50% { opacity:.8; } }
.cover-front .sp1 { animation: gbSp1 7.90s ease-in-out 0.90s infinite; }
@keyframes gbSp1 { 0%,100% { opacity:.22; } 50% { opacity:.8; } }
.cover-front .sp2 { animation: gbSp2 10.10s ease-in-out 1.50s infinite; }
@keyframes gbSp2 { 0%,100% { opacity:.22; } 50% { opacity:.8; } }
.cover-front .sp3 { animation: gbSp3 14.50s ease-in-out 2.10s infinite; }
@keyframes gbSp3 { 0%,100% { opacity:.22; } 50% { opacity:.8; } }
.cover-front .sp4 { animation: gbSp4 16.30s ease-in-out 2.70s infinite; }
@keyframes gbSp4 { 0%,100% { opacity:.22; } 50% { opacity:.8; } }
.cover-front .sp5 { animation: gbSp5 19.70s ease-in-out 3.30s infinite; }
@keyframes gbSp5 { 0%,100% { opacity:.22; } 50% { opacity:.8; } }
.cover-front .t0 { opacity:0; animation: cvT0 1.00s cubic-bezier(.22,.9,.3,1) 0.28s both; }
@keyframes cvT0 { from { opacity:0; transform:translateY(-14px); } to { opacity:1; transform:none; } }
.cover-front .t1 { opacity:0; animation: cvT1 1.00s cubic-bezier(.22,.9,.3,1) 0.48s both; }
@keyframes cvT1 { from { opacity:0; transform:translateY(-14px); } to { opacity:1; transform:none; } }
.cover-front .t2 { opacity:0; animation: cvT2 1.00s cubic-bezier(.22,.9,.3,1) 0.68s both; }
@keyframes cvT2 { from { opacity:0; transform:translateY(-14px); } to { opacity:1; transform:none; } }
.cover-front .byl { opacity:0; animation: cvByl 1.20s ease-out 1.48s both; }
@keyframes cvByl { from { opacity:0; } to { opacity:1; } }
.cover-front .ftr { opacity:0; animation: cvFtr 1.20s ease-out 3.00s both; }
@keyframes cvFtr { from { opacity:0; } to { opacity:1; } }
