
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;
}

.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;
}
/* 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; }
.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; }


/* ---------- 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 -- the workhouse bed */
.chapanim .s0-head { stroke-dasharray: 130.7 196.0; }
.chapanim .s0-head { animation: s0Head 11.30s linear 0.00s infinite; }
@keyframes s0Head { from { stroke-dashoffset: 326.7; } to { stroke-dashoffset: 0; } }
.chapanim .s0-foot { stroke-dasharray: 93.3 140.0; }
.chapanim .s0-foot { animation: s0Foot 14.90s linear 0.90s infinite; }
@keyframes s0Foot { from { stroke-dashoffset: 233.3; } to { stroke-dashoffset: 0; } }
.chapanim .s0-finial { stroke-dasharray: 19.3 29.0; }
.chapanim .s0-finial { animation: s0Finial 18.70s linear 1.80s infinite; }
@keyframes s0Finial { from { stroke-dashoffset: 48.3; } to { stroke-dashoffset: 0; } }
.chapanim .s0-finial2 { stroke-dasharray: 19.3 29.0; }
.chapanim .s0-finial2 { animation: s0Finial2 23.10s linear 2.70s infinite; }
@keyframes s0Finial2 { from { stroke-dashoffset: 48.3; } to { stroke-dashoffset: 0; } }
.chapanim .s0-mattress { stroke-dasharray: 248.9 373.3; }
.chapanim .s0-mattress { animation: s0Mattress 27.50s linear 3.60s infinite; }
@keyframes s0Mattress { from { stroke-dashoffset: 622.2; } to { stroke-dashoffset: 0; } }
.chapanim .s0-blanket { stroke-dasharray: 122.7 184.0; }
.chapanim .s0-blanket { animation: s0Blanket 31.90s linear 4.50s infinite; }
@keyframes s0Blanket { from { stroke-dashoffset: 306.7; } to { stroke-dashoffset: 0; } }
.chapanim .s0-gnd { stroke-dasharray: 144.0 216.0; }
.chapanim .s0-gnd { animation: s0Gnd 11.61s linear 5.40s infinite; }
@keyframes s0Gnd { from { stroke-dashoffset: 360.0; } to { stroke-dashoffset: 0; } }

/* scene 1 -- the porringer */
.chapanim .s1-bowl { stroke-dasharray: 87.1 130.6; }
.chapanim .s1-bowl { animation: s1Bowl 11.30s linear 0.00s infinite; }
@keyframes s1Bowl { from { stroke-dashoffset: 217.6; } to { stroke-dashoffset: 0; } }
.chapanim .s1-rim { stroke-dasharray: 67.6 101.3; }
.chapanim .s1-rim { animation: s1Rim 14.90s linear 0.90s infinite; }
@keyframes s1Rim { from { stroke-dashoffset: 168.9; } to { stroke-dashoffset: 0; } }
.chapanim .s1-foot { stroke-dasharray: 48.7 73.0; }
.chapanim .s1-foot { animation: s1Foot 18.70s linear 1.80s infinite; }
@keyframes s1Foot { from { stroke-dashoffset: 121.6; } to { stroke-dashoffset: 0; } }
.chapanim .s1-spoon { stroke-dasharray: 46.2 69.3; }
.chapanim .s1-spoon { animation: s1Spoon 23.10s linear 2.70s infinite; }
@keyframes s1Spoon { from { stroke-dashoffset: 115.5; } to { stroke-dashoffset: 0; } }
.chapanim .s1-bowlsp { stroke-dasharray: 42.8 64.2; }
.chapanim .s1-bowlsp { animation: s1Bowlsp 27.50s linear 3.60s infinite; }
@keyframes s1Bowlsp { from { stroke-dashoffset: 107.1; } to { stroke-dashoffset: 0; } }
.chapanim .s1-gnd { stroke-dasharray: 144.0 216.0; }
.chapanim .s1-gnd { animation: s1Gnd 31.90s linear 4.50s infinite; }
@keyframes s1Gnd { from { stroke-dashoffset: 360.0; } to { stroke-dashoffset: 0; } }

/* scene 2 -- the chimney pots */
.chapanim .s2-roof { stroke-dasharray: 169.7 254.5; }
.chapanim .s2-roof { animation: s2Roof 11.30s linear 0.00s infinite; }
@keyframes s2Roof { from { stroke-dashoffset: 424.1; } to { stroke-dashoffset: 0; } }
.chapanim .s2-pot { stroke-dasharray: 75.8 113.8; }
.chapanim .s2-pot { animation: s2Pot 14.90s linear 0.90s infinite; }
@keyframes s2Pot { from { stroke-dashoffset: 189.6; } to { stroke-dashoffset: 0; } }
.chapanim .s2-pot2 { stroke-dasharray: 75.8 113.8; }
.chapanim .s2-pot2 { animation: s2Pot2 18.70s linear 1.80s infinite; }
@keyframes s2Pot2 { from { stroke-dashoffset: 189.6; } to { stroke-dashoffset: 0; } }
.chapanim .s2-pot3 { stroke-dasharray: 66.2 99.4; }
.chapanim .s2-pot3 { animation: s2Pot3 23.10s linear 2.70s infinite; }
@keyframes s2Pot3 { from { stroke-dashoffset: 165.6; } to { stroke-dashoffset: 0; } }
.chapanim .s2-smoke { stroke-dasharray: 40.3 60.5; }
.chapanim .s2-smoke { animation: s2Smoke 27.50s linear 3.60s infinite; }
@keyframes s2Smoke { from { stroke-dashoffset: 100.8; } to { stroke-dashoffset: 0; } }
.chapanim .s2-brush { stroke-dasharray: 191.9 287.9; }
.chapanim .s2-brush { animation: s2Brush 31.90s linear 4.50s infinite; }
@keyframes s2Brush { from { stroke-dashoffset: 479.8; } to { stroke-dashoffset: 0; } }

/* scene 3 -- the coffin plate */
.chapanim .s3-coffin { stroke-dasharray: 210.6 315.9; }
.chapanim .s3-coffin { animation: s3Coffin 11.30s linear 0.00s infinite; }
@keyframes s3Coffin { from { stroke-dashoffset: 526.6; } to { stroke-dashoffset: 0; } }
.chapanim .s3-plate { stroke-dasharray: 69.3 104.0; }
.chapanim .s3-plate { animation: s3Plate 14.90s linear 0.90s infinite; }
@keyframes s3Plate { from { stroke-dashoffset: 173.3; } to { stroke-dashoffset: 0; } }
.chapanim .s3-board { stroke-dasharray: 129.4 194.1; }
.chapanim .s3-board { animation: s3Board 18.70s linear 1.80s infinite; }
@keyframes s3Board { from { stroke-dashoffset: 323.6; } to { stroke-dashoffset: 0; } }
.chapanim .s3-board2 { stroke-dasharray: 122.3 183.5; }
.chapanim .s3-board2 { animation: s3Board2 23.10s linear 2.70s infinite; }
@keyframes s3Board2 { from { stroke-dashoffset: 305.8; } to { stroke-dashoffset: 0; } }
.chapanim .s3-trestle { stroke-dasharray: 79.0 118.4; }
.chapanim .s3-trestle { animation: s3Trestle 27.50s linear 3.60s infinite; }
@keyframes s3Trestle { from { stroke-dashoffset: 197.4; } to { stroke-dashoffset: 0; } }
.chapanim .s3-gnd { stroke-dasharray: 144.0 216.0; }
.chapanim .s3-gnd { animation: s3Gnd 31.90s linear 4.50s infinite; }
@keyframes s3Gnd { from { stroke-dashoffset: 360.0; } to { stroke-dashoffset: 0; } }

/* scene 4 -- the parish grave */
.chapanim .s4-stone { stroke-dasharray: 118.3 177.4; }
.chapanim .s4-stone { animation: s4Stone 11.30s linear 0.00s infinite; }
@keyframes s4Stone { from { stroke-dashoffset: 295.7; } to { stroke-dashoffset: 0; } }
.chapanim .s4-stone2 { stroke-dasharray: 87.5 131.3; }
.chapanim .s4-stone2 { animation: s4Stone2 14.90s linear 0.90s infinite; }
@keyframes s4Stone2 { from { stroke-dashoffset: 218.9; } to { stroke-dashoffset: 0; } }
.chapanim .s4-mound { stroke-dasharray: 74.8 112.2; }
.chapanim .s4-mound { animation: s4Mound 18.70s linear 1.80s infinite; }
@keyframes s4Mound { from { stroke-dashoffset: 187.0; } to { stroke-dashoffset: 0; } }
.chapanim .s4-spade { stroke-dasharray: 45.3 68.0; }
.chapanim .s4-spade { animation: s4Spade 23.10s linear 2.70s infinite; }
@keyframes s4Spade { from { stroke-dashoffset: 113.3; } to { stroke-dashoffset: 0; } }
.chapanim .s4-blade { stroke-dasharray: 60.4 90.7; }
.chapanim .s4-blade { animation: s4Blade 27.50s linear 3.60s infinite; }
@keyframes s4Blade { from { stroke-dashoffset: 151.1; } to { stroke-dashoffset: 0; } }
.chapanim .s4-nettle { stroke-dasharray: 47.9 71.8; }
.chapanim .s4-nettle { animation: s4Nettle 31.90s linear 4.50s infinite; }
@keyframes s4Nettle { from { stroke-dashoffset: 119.6; } to { stroke-dashoffset: 0; } }
.chapanim .s4-gnd { stroke-dasharray: 144.0 216.0; }
.chapanim .s4-gnd { animation: s4Gnd 11.61s linear 5.40s infinite; }
@keyframes s4Gnd { from { stroke-dashoffset: 360.0; } to { stroke-dashoffset: 0; } }

/* scene 5 -- the overturned table */
.chapanim .s5-top { stroke-dasharray: 215.6 323.3; }
.chapanim .s5-top { animation: s5Top 11.30s linear 0.00s infinite; }
@keyframes s5Top { from { stroke-dashoffset: 538.9; } to { stroke-dashoffset: 0; } }
.chapanim .s5-leg0 { stroke-dasharray: 31.8 47.7; }
.chapanim .s5-leg0 { animation: s5Leg0 14.90s linear 0.90s infinite; }
@keyframes s5Leg0 { from { stroke-dashoffset: 79.5; } to { stroke-dashoffset: 0; } }
.chapanim .s5-leg1 { stroke-dasharray: 31.8 47.7; }
.chapanim .s5-leg1 { animation: s5Leg1 18.70s linear 1.80s infinite; }
@keyframes s5Leg1 { from { stroke-dashoffset: 79.5; } to { stroke-dashoffset: 0; } }
.chapanim .s5-leg2 { stroke-dasharray: 31.8 47.7; }
.chapanim .s5-leg2 { animation: s5Leg2 23.10s linear 2.70s infinite; }
@keyframes s5Leg2 { from { stroke-dashoffset: 79.5; } to { stroke-dashoffset: 0; } }
.chapanim .s5-leg3 { stroke-dasharray: 31.8 47.7; }
.chapanim .s5-leg3 { animation: s5Leg3 27.50s linear 3.60s infinite; }
@keyframes s5Leg3 { from { stroke-dashoffset: 79.5; } to { stroke-dashoffset: 0; } }
.chapanim .s5-rail { stroke-dasharray: 77.7 116.6; }
.chapanim .s5-rail { animation: s5Rail 31.90s linear 4.50s infinite; }
@keyframes s5Rail { from { stroke-dashoffset: 194.4; } to { stroke-dashoffset: 0; } }
.chapanim .s5-plate { stroke-dasharray: 64.6 96.9; }
.chapanim .s5-plate { animation: s5Plate 11.61s linear 5.40s infinite; }
@keyframes s5Plate { from { stroke-dashoffset: 161.4; } to { stroke-dashoffset: 0; } }
.chapanim .s5-gnd { stroke-dasharray: 143.1 214.7; }
.chapanim .s5-gnd { animation: s5Gnd 15.21s linear 6.30s infinite; }
@keyframes s5Gnd { from { stroke-dashoffset: 357.8; } to { stroke-dashoffset: 0; } }

/* scene 6 -- the bolted cellar door */
.chapanim .s6-door { stroke-dasharray: 266.7 400.0; }
.chapanim .s6-door { animation: s6Door 11.30s linear 0.00s infinite; }
@keyframes s6Door { from { stroke-dashoffset: 666.7; } to { stroke-dashoffset: 0; } }
.chapanim .s6-plank { stroke-dasharray: 67.6 101.3; }
.chapanim .s6-plank { animation: s6Plank 14.90s linear 0.90s infinite; }
@keyframes s6Plank { from { stroke-dashoffset: 168.9; } to { stroke-dashoffset: 0; } }
.chapanim .s6-plank2 { stroke-dasharray: 67.6 101.3; }
.chapanim .s6-plank2 { animation: s6Plank2 18.70s linear 1.80s infinite; }
@keyframes s6Plank2 { from { stroke-dashoffset: 168.9; } to { stroke-dashoffset: 0; } }
.chapanim .s6-plank3 { stroke-dasharray: 67.6 101.3; }
.chapanim .s6-plank3 { animation: s6Plank3 23.10s linear 2.70s infinite; }
@keyframes s6Plank3 { from { stroke-dashoffset: 168.9; } to { stroke-dashoffset: 0; } }
.chapanim .s6-bolt { stroke-dasharray: 33.8 50.7; }
.chapanim .s6-bolt { animation: s6Bolt 27.50s linear 3.60s infinite; }
@keyframes s6Bolt { from { stroke-dashoffset: 84.4; } to { stroke-dashoffset: 0; } }
.chapanim .s6-keep { stroke-dasharray: 28.4 42.7; }
.chapanim .s6-keep { animation: s6Keep 31.90s linear 4.50s infinite; }
@keyframes s6Keep { from { stroke-dashoffset: 71.1; } to { stroke-dashoffset: 0; } }
.chapanim .s6-step { stroke-dasharray: 47.1 70.7; }
.chapanim .s6-step { animation: s6Step 11.61s linear 5.40s infinite; }
@keyframes s6Step { from { stroke-dashoffset: 117.8; } to { stroke-dashoffset: 0; } }
.chapanim .s6-gnd { stroke-dasharray: 144.0 216.0; }
.chapanim .s6-gnd { animation: s6Gnd 15.21s linear 6.30s infinite; }
@keyframes s6Gnd { from { stroke-dashoffset: 360.0; } to { stroke-dashoffset: 0; } }

/* scene 7 -- the milestone */
.chapanim .s7-stone { stroke-dasharray: 170.3 255.5; }
.chapanim .s7-stone { animation: s7Stone 11.30s linear 0.00s infinite; }
@keyframes s7Stone { from { stroke-dashoffset: 425.8; } to { stroke-dashoffset: 0; } }
.chapanim .s7-cut { stroke-dasharray: 24.9 37.3; }
.chapanim .s7-cut { animation: s7Cut 14.90s linear 0.90s infinite; }
@keyframes s7Cut { from { stroke-dashoffset: 62.2; } to { stroke-dashoffset: 0; } }
.chapanim .s7-cut2 { stroke-dasharray: 19.6 29.3; }
.chapanim .s7-cut2 { animation: s7Cut2 18.70s linear 1.80s infinite; }
@keyframes s7Cut2 { from { stroke-dashoffset: 48.9; } to { stroke-dashoffset: 0; } }
.chapanim .s7-road { stroke-dasharray: 175.9 263.8; }
.chapanim .s7-road { animation: s7Road 23.10s linear 2.70s infinite; }
@keyframes s7Road { from { stroke-dashoffset: 439.7; } to { stroke-dashoffset: 0; } }
.chapanim .s7-hedge { stroke-dasharray: 84.0 126.0; }
.chapanim .s7-hedge { animation: s7Hedge 27.50s linear 3.60s infinite; }
@keyframes s7Hedge { from { stroke-dashoffset: 210.0; } to { stroke-dashoffset: 0; } }
.chapanim .s7-hedge2 { stroke-dasharray: 84.0 126.0; }
.chapanim .s7-hedge2 { animation: s7Hedge2 31.90s linear 4.50s infinite; }
@keyframes s7Hedge2 { from { stroke-dashoffset: 210.0; } to { stroke-dashoffset: 0; } }

/* scene 8 -- the clothes-horse */
.chapanim .s8-bar { stroke-dasharray: 120.9 181.3; }
.chapanim .s8-bar { animation: s8Bar 11.30s linear 0.00s infinite; }
@keyframes s8Bar { from { stroke-dashoffset: 302.2; } to { stroke-dashoffset: 0; } }
.chapanim .s8-leg { stroke-dasharray: 63.6 95.4; }
.chapanim .s8-leg { animation: s8Leg 14.90s linear 0.90s infinite; }
@keyframes s8Leg { from { stroke-dashoffset: 159.0; } to { stroke-dashoffset: 0; } }
.chapanim .s8-leg2 { stroke-dasharray: 63.6 95.4; }
.chapanim .s8-leg2 { animation: s8Leg2 18.70s linear 1.80s infinite; }
@keyframes s8Leg2 { from { stroke-dashoffset: 159.0; } to { stroke-dashoffset: 0; } }
.chapanim .s8-wipe0 { stroke-dasharray: 77.0 115.4; }
.chapanim .s8-wipe0 { animation: s8Wipe0 23.10s linear 2.70s infinite; }
@keyframes s8Wipe0 { from { stroke-dashoffset: 192.4; } to { stroke-dashoffset: 0; } }
.chapanim .s8-wipe1 { stroke-dasharray: 74.2 111.3; }
.chapanim .s8-wipe1 { animation: s8Wipe1 27.50s linear 3.60s infinite; }
@keyframes s8Wipe1 { from { stroke-dashoffset: 185.5; } to { stroke-dashoffset: 0; } }
.chapanim .s8-wipe2 { stroke-dasharray: 77.0 115.4; }
.chapanim .s8-wipe2 { animation: s8Wipe2 31.90s linear 4.50s infinite; }
@keyframes s8Wipe2 { from { stroke-dashoffset: 192.4; } to { stroke-dashoffset: 0; } }
.chapanim .s8-wipe3 { stroke-dasharray: 74.2 111.3; }
.chapanim .s8-wipe3 { animation: s8Wipe3 11.61s linear 5.40s infinite; }
@keyframes s8Wipe3 { from { stroke-dashoffset: 185.5; } to { stroke-dashoffset: 0; } }
.chapanim .s8-gnd { stroke-dasharray: 144.0 216.0; }
.chapanim .s8-gnd { animation: s8Gnd 15.21s linear 6.30s infinite; }
@keyframes s8Gnd { from { stroke-dashoffset: 360.0; } to { stroke-dashoffset: 0; } }

/* scene 9 -- the book-stall */
.chapanim .s9-board { stroke-dasharray: 248.9 373.3; }
.chapanim .s9-board { animation: s9Board 11.30s linear 0.00s infinite; }
@keyframes s9Board { from { stroke-dashoffset: 622.2; } to { stroke-dashoffset: 0; } }
.chapanim .s9-bk0 { stroke-dasharray: 53.3 80.0; }
.chapanim .s9-bk0 { animation: s9Bk0 14.90s linear 0.90s infinite; }
@keyframes s9Bk0 { from { stroke-dashoffset: 133.3; } to { stroke-dashoffset: 0; } }
.chapanim .s9-bk1 { stroke-dasharray: 60.4 90.7; }
.chapanim .s9-bk1 { animation: s9Bk1 18.70s linear 1.80s infinite; }
@keyframes s9Bk1 { from { stroke-dashoffset: 151.1; } to { stroke-dashoffset: 0; } }
.chapanim .s9-bk2 { stroke-dasharray: 67.6 101.3; }
.chapanim .s9-bk2 { animation: s9Bk2 23.10s linear 2.70s infinite; }
@keyframes s9Bk2 { from { stroke-dashoffset: 168.9; } to { stroke-dashoffset: 0; } }
.chapanim .s9-bk3 { stroke-dasharray: 53.3 80.0; }
.chapanim .s9-bk3 { animation: s9Bk3 27.50s linear 3.60s infinite; }
@keyframes s9Bk3 { from { stroke-dashoffset: 133.3; } to { stroke-dashoffset: 0; } }
.chapanim .s9-bk4 { stroke-dasharray: 60.4 90.7; }
.chapanim .s9-bk4 { animation: s9Bk4 31.90s linear 4.50s infinite; }
@keyframes s9Bk4 { from { stroke-dashoffset: 151.1; } to { stroke-dashoffset: 0; } }
.chapanim .s9-bk5 { stroke-dasharray: 67.6 101.3; }
.chapanim .s9-bk5 { animation: s9Bk5 11.61s linear 5.40s infinite; }
@keyframes s9Bk5 { from { stroke-dashoffset: 168.9; } to { stroke-dashoffset: 0; } }
.chapanim .s9-bk6 { stroke-dasharray: 53.3 80.0; }
.chapanim .s9-bk6 { animation: s9Bk6 15.21s linear 6.30s infinite; }
@keyframes s9Bk6 { from { stroke-dashoffset: 133.3; } to { stroke-dashoffset: 0; } }
.chapanim .s9-bk7 { stroke-dasharray: 60.4 90.7; }
.chapanim .s9-bk7 { animation: s9Bk7 19.01s linear 7.20s infinite; }
@keyframes s9Bk7 { from { stroke-dashoffset: 151.1; } to { stroke-dashoffset: 0; } }
.chapanim .s9-trestle { stroke-dasharray: 168.2 252.3; }
.chapanim .s9-trestle { animation: s9Trestle 23.41s linear 8.10s infinite; }
@keyframes s9Trestle { from { stroke-dashoffset: 420.5; } to { stroke-dashoffset: 0; } }
.chapanim .s9-gnd { stroke-dasharray: 144.0 216.0; }
.chapanim .s9-gnd { animation: s9Gnd 27.81s linear 9.00s infinite; }
@keyframes s9Gnd { from { stroke-dashoffset: 360.0; } to { stroke-dashoffset: 0; } }

/* scene 10 -- the magistrate's bench */
.chapanim .s10-desk { stroke-dasharray: 215.1 322.7; }
.chapanim .s10-desk { animation: s10Desk 11.30s linear 0.00s infinite; }
@keyframes s10Desk { from { stroke-dashoffset: 537.8; } to { stroke-dashoffset: 0; } }
.chapanim .s10-panel { stroke-dasharray: 174.2 261.3; }
.chapanim .s10-panel { animation: s10Panel 14.90s linear 0.90s infinite; }
@keyframes s10Panel { from { stroke-dashoffset: 435.6; } to { stroke-dashoffset: 0; } }
.chapanim .s10-rail { stroke-dasharray: 106.7 160.0; }
.chapanim .s10-rail { animation: s10Rail 18.70s linear 1.80s infinite; }
@keyframes s10Rail { from { stroke-dashoffset: 266.7; } to { stroke-dashoffset: 0; } }
.chapanim .s10-ink { stroke-dasharray: 42.9 64.4; }
.chapanim .s10-ink { animation: s10Ink 23.10s linear 2.70s infinite; }
@keyframes s10Ink { from { stroke-dashoffset: 107.3; } to { stroke-dashoffset: 0; } }
.chapanim .s10-quill { stroke-dasharray: 25.6 38.4; }
.chapanim .s10-quill { animation: s10Quill 27.50s linear 3.60s infinite; }
@keyframes s10Quill { from { stroke-dashoffset: 64.0; } to { stroke-dashoffset: 0; } }
.chapanim .s10-dock { stroke-dasharray: 75.6 113.3; }
.chapanim .s10-dock { animation: s10Dock 31.90s linear 4.50s infinite; }
@keyframes s10Dock { from { stroke-dashoffset: 188.9; } to { stroke-dashoffset: 0; } }
.chapanim .s10-gnd { stroke-dasharray: 144.0 216.0; }
.chapanim .s10-gnd { animation: s10Gnd 11.61s linear 5.40s infinite; }
@keyframes s10Gnd { from { stroke-dashoffset: 360.0; } to { stroke-dashoffset: 0; } }

/* scene 11 -- the portrait */
.chapanim .s11-frame { stroke-dasharray: 378.1 567.1; }
.chapanim .s11-frame { animation: s11Frame 11.30s linear 0.00s infinite; }
@keyframes s11Frame { from { stroke-dashoffset: 945.2; } to { stroke-dashoffset: 0; } }
.chapanim .s11-inner { stroke-dasharray: 293.0 439.5; }
.chapanim .s11-inner { animation: s11Inner 14.90s linear 0.90s infinite; }
@keyframes s11Inner { from { stroke-dashoffset: 732.5; } to { stroke-dashoffset: 0; } }
.chapanim .s11-head { stroke-dasharray: 96.2 144.3; }
.chapanim .s11-head { animation: s11Head 18.70s linear 1.80s infinite; }
@keyframes s11Head { from { stroke-dashoffset: 240.6; } to { stroke-dashoffset: 0; } }
.chapanim .s11-shoulder { stroke-dasharray: 76.8 115.2; }
.chapanim .s11-shoulder { animation: s11Shoulder 23.10s linear 2.70s infinite; }
@keyframes s11Shoulder { from { stroke-dashoffset: 192.0; } to { stroke-dashoffset: 0; } }
.chapanim .s11-cord { stroke-dasharray: 41.3 62.0; }
.chapanim .s11-cord { animation: s11Cord 27.50s linear 3.60s infinite; }
@keyframes s11Cord { from { stroke-dashoffset: 103.3; } to { stroke-dashoffset: 0; } }
.chapanim .s11-hook { stroke-dasharray: 18.3 27.4; }
.chapanim .s11-hook { animation: s11Hook 31.90s linear 4.50s infinite; }
@keyframes s11Hook { from { stroke-dashoffset: 45.6; } to { stroke-dashoffset: 0; } }

/* scene 12 -- the white dog */
.chapanim .s12-back { stroke-dasharray: 118.2 177.2; }
.chapanim .s12-back { animation: s12Back 11.30s linear 0.00s infinite; }
@keyframes s12Back { from { stroke-dashoffset: 295.4; } to { stroke-dashoffset: 0; } }
.chapanim .s12-head { stroke-dasharray: 50.3 75.5; }
.chapanim .s12-head { animation: s12Head 14.90s linear 0.90s infinite; }
@keyframes s12Head { from { stroke-dashoffset: 125.8; } to { stroke-dashoffset: 0; } }
.chapanim .s12-ear { stroke-dasharray: 26.7 40.0; }
.chapanim .s12-ear { animation: s12Ear 18.70s linear 1.80s infinite; }
@keyframes s12Ear { from { stroke-dashoffset: 66.7; } to { stroke-dashoffset: 0; } }
.chapanim .s12-leg { stroke-dasharray: 11.7 17.5; }
.chapanim .s12-leg { animation: s12Leg 23.10s linear 2.70s infinite; }
@keyframes s12Leg { from { stroke-dashoffset: 29.2; } to { stroke-dashoffset: 0; } }
.chapanim .s12-leg2 { stroke-dasharray: 11.6 17.4; }
.chapanim .s12-leg2 { animation: s12Leg2 27.50s linear 3.60s infinite; }
@keyframes s12Leg2 { from { stroke-dashoffset: 29.0; } to { stroke-dashoffset: 0; } }
.chapanim .s12-leg3 { stroke-dasharray: 10.8 16.2; }
.chapanim .s12-leg3 { animation: s12Leg3 31.90s linear 4.50s infinite; }
@keyframes s12Leg3 { from { stroke-dashoffset: 27.0; } to { stroke-dashoffset: 0; } }
.chapanim .s12-leg4 { stroke-dasharray: 9.9 14.9; }
.chapanim .s12-leg4 { animation: s12Leg4 11.61s linear 5.40s infinite; }
@keyframes s12Leg4 { from { stroke-dashoffset: 24.8; } to { stroke-dashoffset: 0; } }
.chapanim .s12-tail { stroke-dasharray: 32.3 48.5; }
.chapanim .s12-tail { animation: s12Tail 15.21s linear 6.30s infinite; }
@keyframes s12Tail { from { stroke-dashoffset: 80.8; } to { stroke-dashoffset: 0; } }
.chapanim .s12-gnd { stroke-dasharray: 144.0 216.0; }
.chapanim .s12-gnd { animation: s12Gnd 19.01s linear 7.20s infinite; }
@keyframes s12Gnd { from { stroke-dashoffset: 360.0; } to { stroke-dashoffset: 0; } }

/* scene 13 -- the watch between them */
.chapanim .s13-case { stroke-dasharray: 159.0 238.6; }
.chapanim .s13-case { animation: s13Case 11.30s linear 0.00s infinite; }
@keyframes s13Case { from { stroke-dashoffset: 397.6; } to { stroke-dashoffset: 0; } }
.chapanim .s13-bezel { stroke-dasharray: 127.2 190.7; }
.chapanim .s13-bezel { animation: s13Bezel 14.90s linear 0.90s infinite; }
@keyframes s13Bezel { from { stroke-dashoffset: 317.9; } to { stroke-dashoffset: 0; } }
.chapanim .s13-hands { stroke-dasharray: 45.5 68.2; }
.chapanim .s13-hands { animation: s13Hands 18.70s linear 1.80s infinite; }
@keyframes s13Hands { from { stroke-dashoffset: 113.7; } to { stroke-dashoffset: 0; } }
.chapanim .s13-bow { stroke-dasharray: 33.8 50.6; }
.chapanim .s13-bow { animation: s13Bow 23.10s linear 2.70s infinite; }
@keyframes s13Bow { from { stroke-dashoffset: 84.4; } to { stroke-dashoffset: 0; } }
.chapanim .s13-table { stroke-dasharray: 144.0 216.0; }
.chapanim .s13-table { animation: s13Table 27.50s linear 3.60s infinite; }
@keyframes s13Table { from { stroke-dashoffset: 360.0; } to { stroke-dashoffset: 0; } }
.chapanim .s13-chair { stroke-dasharray: 79.0 118.5; }
.chapanim .s13-chair { animation: s13Chair 31.90s linear 4.50s infinite; }
@keyframes s13Chair { from { stroke-dashoffset: 197.6; } to { stroke-dashoffset: 0; } }
.chapanim .s13-chair2 { stroke-dasharray: 79.0 118.5; }
.chapanim .s13-chair2 { animation: s13Chair2 11.61s linear 5.40s infinite; }
@keyframes s13Chair2 { from { stroke-dashoffset: 197.6; } to { stroke-dashoffset: 0; } }

/* scene 14 -- the poker and the knife */
.chapanim .s14-poker { stroke-dasharray: 87.9 131.8; }
.chapanim .s14-poker { animation: s14Poker 11.30s linear 0.00s infinite; }
@keyframes s14Poker { from { stroke-dashoffset: 219.7; } to { stroke-dashoffset: 0; } }
.chapanim .s14-hook { stroke-dasharray: 30.0 44.9; }
.chapanim .s14-hook { animation: s14Hook 14.90s linear 0.90s infinite; }
@keyframes s14Hook { from { stroke-dashoffset: 74.9; } to { stroke-dashoffset: 0; } }
.chapanim .s14-blade { stroke-dasharray: 205.8 308.7; }
.chapanim .s14-blade { animation: s14Blade 18.70s linear 1.80s infinite; }
@keyframes s14Blade { from { stroke-dashoffset: 514.6; } to { stroke-dashoffset: 0; } }
.chapanim .s14-handle { stroke-dasharray: 54.1 81.2; }
.chapanim .s14-handle { animation: s14Handle 23.10s linear 2.70s infinite; }
@keyframes s14Handle { from { stroke-dashoffset: 135.3; } to { stroke-dashoffset: 0; } }
.chapanim .s14-grate { stroke-dasharray: 193.8 290.7; }
.chapanim .s14-grate { animation: s14Grate 27.50s linear 3.60s infinite; }
@keyframes s14Grate { from { stroke-dashoffset: 484.5; } to { stroke-dashoffset: 0; } }
.chapanim .s14-bars { stroke-dasharray: 215.5 323.2; }
.chapanim .s14-bars { animation: s14Bars 31.90s linear 4.50s infinite; }
@keyframes s14Bars { from { stroke-dashoffset: 538.6; } to { stroke-dashoffset: 0; } }

/* scene 15 -- Smithfield, and the bell */
.chapanim .s15-pen { stroke-dasharray: 174.2 261.3; }
.chapanim .s15-pen { animation: s15Pen 11.30s linear 0.00s infinite; }
@keyframes s15Pen { from { stroke-dashoffset: 435.6; } to { stroke-dashoffset: 0; } }
.chapanim .s15-pen2 { stroke-dasharray: 174.2 261.3; }
.chapanim .s15-pen2 { animation: s15Pen2 14.90s linear 0.90s infinite; }
@keyframes s15Pen2 { from { stroke-dashoffset: 435.6; } to { stroke-dashoffset: 0; } }
.chapanim .s15-rail { stroke-dasharray: 56.9 85.3; }
.chapanim .s15-rail { animation: s15Rail 18.70s linear 1.80s infinite; }
@keyframes s15Rail { from { stroke-dashoffset: 142.2; } to { stroke-dashoffset: 0; } }
.chapanim .s15-rail2 { stroke-dasharray: 56.9 85.3; }
.chapanim .s15-rail2 { animation: s15Rail2 23.10s linear 2.70s infinite; }
@keyframes s15Rail2 { from { stroke-dashoffset: 142.2; } to { stroke-dashoffset: 0; } }
.chapanim .s15-bell { stroke-dasharray: 69.5 104.3; }
.chapanim .s15-bell { animation: s15Bell 27.50s linear 3.60s infinite; }
@keyframes s15Bell { from { stroke-dashoffset: 173.8; } to { stroke-dashoffset: 0; } }
.chapanim .s15-clapper { stroke-dasharray: 5.3 8.0; }
.chapanim .s15-clapper { animation: s15Clapper 31.90s linear 4.50s infinite; }
@keyframes s15Clapper { from { stroke-dashoffset: 13.3; } to { stroke-dashoffset: 0; } }
.chapanim .s15-mist { stroke-dasharray: 158.9 238.3; }
.chapanim .s15-mist { animation: s15Mist 11.61s linear 5.40s infinite; }
@keyframes s15Mist { from { stroke-dashoffset: 397.2; } to { stroke-dashoffset: 0; } }

/* scene 16 -- the London coach */
.chapanim .s16-body { stroke-dasharray: 235.3 353.0; }
.chapanim .s16-body { animation: s16Body 11.30s linear 0.00s infinite; }
@keyframes s16Body { from { stroke-dashoffset: 588.3; } to { stroke-dashoffset: 0; } }
.chapanim .s16-roof { stroke-dasharray: 101.3 152.0; }
.chapanim .s16-roof { animation: s16Roof 14.90s linear 0.90s infinite; }
@keyframes s16Roof { from { stroke-dashoffset: 253.3; } to { stroke-dashoffset: 0; } }
.chapanim .s16-win { stroke-dasharray: 69.3 104.0; }
.chapanim .s16-win { animation: s16Win 18.70s linear 1.80s infinite; }
@keyframes s16Win { from { stroke-dashoffset: 173.3; } to { stroke-dashoffset: 0; } }
.chapanim .s16-win2 { stroke-dasharray: 69.3 104.0; }
.chapanim .s16-win2 { animation: s16Win2 23.10s linear 2.70s infinite; }
@keyframes s16Win2 { from { stroke-dashoffset: 173.3; } to { stroke-dashoffset: 0; } }
.chapanim .s16-wheel { stroke-dasharray: 72.4 108.6; }
.chapanim .s16-wheel { animation: s16Wheel 27.50s linear 3.60s infinite; }
@keyframes s16Wheel { from { stroke-dashoffset: 181.0; } to { stroke-dashoffset: 0; } }
.chapanim .s16-wheel2 { stroke-dasharray: 72.4 108.6; }
.chapanim .s16-wheel2 { animation: s16Wheel2 31.90s linear 4.50s infinite; }
@keyframes s16Wheel2 { from { stroke-dashoffset: 181.0; } to { stroke-dashoffset: 0; } }
.chapanim .s16-spokes { stroke-dasharray: 127.5 191.2; }
.chapanim .s16-spokes { animation: s16Spokes 11.61s linear 5.40s infinite; }
@keyframes s16Spokes { from { stroke-dashoffset: 318.7; } to { stroke-dashoffset: 0; } }
.chapanim .s16-gnd { stroke-dasharray: 144.0 216.0; }
.chapanim .s16-gnd { animation: s16Gnd 15.21s linear 6.30s infinite; }
@keyframes s16Gnd { from { stroke-dashoffset: 360.0; } to { stroke-dashoffset: 0; } }

/* scene 17 -- the boots and the pipe */
.chapanim .s17-boot { stroke-dasharray: 171.2 256.8; }
.chapanim .s17-boot { animation: s17Boot 11.30s linear 0.00s infinite; }
@keyframes s17Boot { from { stroke-dashoffset: 428.1; } to { stroke-dashoffset: 0; } }
.chapanim .s17-boot2 { stroke-dasharray: 156.4 234.7; }
.chapanim .s17-boot2 { animation: s17Boot2 14.90s linear 0.90s infinite; }
@keyframes s17Boot2 { from { stroke-dashoffset: 391.1; } to { stroke-dashoffset: 0; } }
.chapanim .s17-pipe { stroke-dasharray: 32.2 48.3; }
.chapanim .s17-pipe { animation: s17Pipe 18.70s linear 1.80s infinite; }
@keyframes s17Pipe { from { stroke-dashoffset: 80.5; } to { stroke-dashoffset: 0; } }
.chapanim .s17-bowlp { stroke-dasharray: 24.0 36.0; }
.chapanim .s17-bowlp { animation: s17Bowlp 23.10s linear 2.70s infinite; }
@keyframes s17Bowlp { from { stroke-dashoffset: 60.0; } to { stroke-dashoffset: 0; } }
.chapanim .s17-smoke { stroke-dasharray: 18.1 27.1; }
.chapanim .s17-smoke { animation: s17Smoke 27.50s linear 3.60s infinite; }
@keyframes s17Smoke { from { stroke-dashoffset: 45.2; } to { stroke-dashoffset: 0; } }
.chapanim .s17-gnd { stroke-dasharray: 140.5 210.8; }
.chapanim .s17-gnd { animation: s17Gnd 31.90s linear 4.50s infinite; }
@keyframes s17Gnd { from { stroke-dashoffset: 351.3; } to { stroke-dashoffset: 0; } }

/* scene 18 -- the housebreaking tools */
.chapanim .s18-lamp { stroke-dasharray: 176.0 264.0; }
.chapanim .s18-lamp { animation: s18Lamp 11.30s linear 0.00s infinite; }
@keyframes s18Lamp { from { stroke-dashoffset: 440.0; } to { stroke-dashoffset: 0; } }
.chapanim .s18-lens { stroke-dasharray: 83.6 125.4; }
.chapanim .s18-lens { animation: s18Lens 14.90s linear 0.90s infinite; }
@keyframes s18Lens { from { stroke-dashoffset: 208.9; } to { stroke-dashoffset: 0; } }
.chapanim .s18-lensin { stroke-dasharray: 55.7 83.5; }
.chapanim .s18-lensin { animation: s18Lensin 18.70s linear 1.80s infinite; }
@keyframes s18Lensin { from { stroke-dashoffset: 139.2; } to { stroke-dashoffset: 0; } }
.chapanim .s18-chimney { stroke-dasharray: 47.2 70.8; }
.chapanim .s18-chimney { animation: s18Chimney 23.10s linear 2.70s infinite; }
@keyframes s18Chimney { from { stroke-dashoffset: 118.0; } to { stroke-dashoffset: 0; } }
.chapanim .s18-bail { stroke-dasharray: 32.2 48.3; }
.chapanim .s18-bail { animation: s18Bail 27.50s linear 3.60s infinite; }
@keyframes s18Bail { from { stroke-dashoffset: 80.6; } to { stroke-dashoffset: 0; } }
.chapanim .s18-crow { stroke-dasharray: 84.9 127.4; }
.chapanim .s18-crow { animation: s18Crow 31.90s linear 4.50s infinite; }
@keyframes s18Crow { from { stroke-dashoffset: 212.3; } to { stroke-dashoffset: 0; } }
.chapanim .s18-claw { stroke-dasharray: 34.5 51.8; }
.chapanim .s18-claw { animation: s18Claw 11.61s linear 5.40s infinite; }
@keyframes s18Claw { from { stroke-dashoffset: 86.3; } to { stroke-dashoffset: 0; } }
.chapanim .s18-gnd { stroke-dasharray: 144.0 216.0; }
.chapanim .s18-gnd { animation: s18Gnd 15.21s linear 6.30s infinite; }
@keyframes s18Gnd { from { stroke-dashoffset: 360.0; } to { stroke-dashoffset: 0; } }

/* scene 19 -- the loaded pistol */
.chapanim .s19-pistol { stroke-dasharray: 238.6 357.9; }
.chapanim .s19-pistol { animation: s19Pistol 11.30s linear 0.00s infinite; }
@keyframes s19Pistol { from { stroke-dashoffset: 596.5; } to { stroke-dashoffset: 0; } }
.chapanim .s19-barrel { stroke-dasharray: 59.7 89.6; }
.chapanim .s19-barrel { animation: s19Barrel 14.90s linear 0.90s infinite; }
@keyframes s19Barrel { from { stroke-dashoffset: 149.3; } to { stroke-dashoffset: 0; } }
.chapanim .s19-guard { stroke-dasharray: 21.6 32.4; }
.chapanim .s19-guard { animation: s19Guard 18.70s linear 1.80s infinite; }
@keyframes s19Guard { from { stroke-dashoffset: 54.1; } to { stroke-dashoffset: 0; } }
.chapanim .s19-book { stroke-dasharray: 151.1 226.7; }
.chapanim .s19-book { animation: s19Book 23.10s linear 2.70s infinite; }
@keyframes s19Book { from { stroke-dashoffset: 377.8; } to { stroke-dashoffset: 0; } }
.chapanim .s19-leaf { stroke-dasharray: 32.9 49.3; }
.chapanim .s19-leaf { animation: s19Leaf 27.50s linear 3.60s infinite; }
@keyframes s19Leaf { from { stroke-dashoffset: 82.2; } to { stroke-dashoffset: 0; } }
.chapanim .s19-leaf2 { stroke-dasharray: 32.9 49.3; }
.chapanim .s19-leaf2 { animation: s19Leaf2 31.90s linear 4.50s infinite; }
@keyframes s19Leaf2 { from { stroke-dashoffset: 82.2; } to { stroke-dashoffset: 0; } }
.chapanim .s19-gnd { stroke-dasharray: 144.0 216.0; }
.chapanim .s19-gnd { animation: s19Gnd 11.61s linear 5.40s infinite; }
@keyframes s19Gnd { from { stroke-dashoffset: 360.0; } to { stroke-dashoffset: 0; } }

/* scene 20 -- the cart before dawn */
.chapanim .s20-cart { stroke-dasharray: 243.6 365.4; }
.chapanim .s20-cart { animation: s20Cart 11.30s linear 0.00s infinite; }
@keyframes s20Cart { from { stroke-dashoffset: 608.9; } to { stroke-dashoffset: 0; } }
.chapanim .s20-shaft { stroke-dasharray: 42.8 64.3; }
.chapanim .s20-shaft { animation: s20Shaft 14.90s linear 0.90s infinite; }
@keyframes s20Shaft { from { stroke-dashoffset: 107.1; } to { stroke-dashoffset: 0; } }
.chapanim .s20-wheel { stroke-dasharray: 82.4 123.7; }
.chapanim .s20-wheel { animation: s20Wheel 18.70s linear 1.80s infinite; }
@keyframes s20Wheel { from { stroke-dashoffset: 206.1; } to { stroke-dashoffset: 0; } }
.chapanim .s20-wheel2 { stroke-dasharray: 82.4 123.7; }
.chapanim .s20-wheel2 { animation: s20Wheel2 23.10s linear 2.70s infinite; }
@keyframes s20Wheel2 { from { stroke-dashoffset: 206.1; } to { stroke-dashoffset: 0; } }
.chapanim .s20-dawn { stroke-dasharray: 132.0 198.0; }
.chapanim .s20-dawn { animation: s20Dawn 27.50s linear 3.60s infinite; }
@keyframes s20Dawn { from { stroke-dashoffset: 329.9; } to { stroke-dashoffset: 0; } }
.chapanim .s20-ray { stroke-dasharray: 327.7 491.6; }
.chapanim .s20-ray { animation: s20Ray 31.90s linear 4.50s infinite; }
@keyframes s20Ray { from { stroke-dashoffset: 819.3; } to { stroke-dashoffset: 0; } }

/* scene 21 -- the lattice window */
.chapanim .s21-shutter { stroke-dasharray: 204.4 306.6; }
.chapanim .s21-shutter { animation: s21Shutter 11.30s linear 0.00s infinite; }
@keyframes s21Shutter { from { stroke-dashoffset: 511.0; } to { stroke-dashoffset: 0; } }
.chapanim .s21-slat { stroke-dasharray: 34.4 51.6; }
.chapanim .s21-slat { animation: s21Slat 14.90s linear 0.90s infinite; }
@keyframes s21Slat { from { stroke-dashoffset: 85.9; } to { stroke-dashoffset: 0; } }
.chapanim .s21-slat2 { stroke-dasharray: 34.4 51.6; }
.chapanim .s21-slat2 { animation: s21Slat2 18.70s linear 1.80s infinite; }
@keyframes s21Slat2 { from { stroke-dashoffset: 85.9; } to { stroke-dashoffset: 0; } }
.chapanim .s21-slat3 { stroke-dasharray: 34.4 51.6; }
.chapanim .s21-slat3 { animation: s21Slat3 23.10s linear 2.70s infinite; }
@keyframes s21Slat3 { from { stroke-dashoffset: 85.9; } to { stroke-dashoffset: 0; } }
.chapanim .s21-lattice { stroke-dasharray: 208.1 312.2; }
.chapanim .s21-lattice { animation: s21Lattice 27.50s linear 3.60s infinite; }
@keyframes s21Lattice { from { stroke-dashoffset: 520.3; } to { stroke-dashoffset: 0; } }
.chapanim .s21-mullion { stroke-dasharray: 49.2 73.9; }
.chapanim .s21-mullion { animation: s21Mullion 31.90s linear 4.50s infinite; }
@keyframes s21Mullion { from { stroke-dashoffset: 123.1; } to { stroke-dashoffset: 0; } }
.chapanim .s21-transom { stroke-dasharray: 54.8 82.2; }
.chapanim .s21-transom { animation: s21Transom 11.61s linear 5.40s infinite; }
@keyframes s21Transom { from { stroke-dashoffset: 137.0; } to { stroke-dashoffset: 0; } }
.chapanim .s21-sill { stroke-dasharray: 137.5 206.2; }
.chapanim .s21-sill { animation: s21Sill 15.21s linear 6.30s infinite; }
@keyframes s21Sill { from { stroke-dashoffset: 343.7; } to { stroke-dashoffset: 0; } }
.chapanim .s21-course { stroke-dasharray: 144.0 216.0; }
.chapanim .s21-course { animation: s21Course 19.01s linear 7.20s infinite; }
@keyframes s21Course { from { stroke-dashoffset: 360.0; } to { stroke-dashoffset: 0; } }

/* scene 22 -- the matron's teapot */
.chapanim .s22-pot { stroke-dasharray: 76.5 114.7; }
.chapanim .s22-pot { animation: s22Pot 11.30s linear 0.00s infinite; }
@keyframes s22Pot { from { stroke-dashoffset: 191.2; } to { stroke-dashoffset: 0; } }
.chapanim .s22-lid { stroke-dasharray: 102.9 154.3; }
.chapanim .s22-lid { animation: s22Lid 14.90s linear 0.90s infinite; }
@keyframes s22Lid { from { stroke-dashoffset: 257.2; } to { stroke-dashoffset: 0; } }
.chapanim .s22-knob { stroke-dasharray: 16.5 24.7; }
.chapanim .s22-knob { animation: s22Knob 18.70s linear 1.80s infinite; }
@keyframes s22Knob { from { stroke-dashoffset: 41.2; } to { stroke-dashoffset: 0; } }
.chapanim .s22-spout { stroke-dasharray: 48.9 73.3; }
.chapanim .s22-spout { animation: s22Spout 23.10s linear 2.70s infinite; }
@keyframes s22Spout { from { stroke-dashoffset: 122.2; } to { stroke-dashoffset: 0; } }
.chapanim .s22-handle { stroke-dasharray: 53.0 79.4; }
.chapanim .s22-handle { animation: s22Handle 27.50s linear 3.60s infinite; }
@keyframes s22Handle { from { stroke-dashoffset: 132.4; } to { stroke-dashoffset: 0; } }
.chapanim .s22-cup { stroke-dasharray: 29.3 43.9; }
.chapanim .s22-cup { animation: s22Cup 31.90s linear 4.50s infinite; }
@keyframes s22Cup { from { stroke-dashoffset: 73.1; } to { stroke-dashoffset: 0; } }
.chapanim .s22-gnd { stroke-dasharray: 144.0 216.0; }
.chapanim .s22-gnd { animation: s22Gnd 11.61s linear 5.40s infinite; }
@keyframes s22Gnd { from { stroke-dashoffset: 360.0; } to { stroke-dashoffset: 0; } }

/* scene 23 -- the snuff-box */
.chapanim .s23-box { stroke-dasharray: 170.7 256.0; }
.chapanim .s23-box { animation: s23Box 11.30s linear 0.00s infinite; }
@keyframes s23Box { from { stroke-dashoffset: 426.7; } to { stroke-dashoffset: 0; } }
.chapanim .s23-boxlid { stroke-dasharray: 91.9 137.9; }
.chapanim .s23-boxlid { animation: s23Boxlid 14.90s linear 0.90s infinite; }
@keyframes s23Boxlid { from { stroke-dashoffset: 229.8; } to { stroke-dashoffset: 0; } }
.chapanim .s23-boxend { stroke-dasharray: 39.3 58.9; }
.chapanim .s23-boxend { animation: s23Boxend 18.70s linear 1.80s infinite; }
@keyframes s23Boxend { from { stroke-dashoffset: 98.2; } to { stroke-dashoffset: 0; } }
.chapanim .s23-candle { stroke-dasharray: 113.8 170.7; }
.chapanim .s23-candle { animation: s23Candle 23.10s linear 2.70s infinite; }
@keyframes s23Candle { from { stroke-dashoffset: 284.4; } to { stroke-dashoffset: 0; } }
.chapanim .s23-flame { stroke-dasharray: 48.1 72.2; }
.chapanim .s23-flame { animation: s23Flame 27.50s linear 3.60s infinite; }
@keyframes s23Flame { from { stroke-dashoffset: 120.3; } to { stroke-dashoffset: 0; } }
.chapanim .s23-wick { stroke-dasharray: 4.4 6.7; }
.chapanim .s23-wick { animation: s23Wick 31.90s linear 4.50s infinite; }
@keyframes s23Wick { from { stroke-dashoffset: 11.1; } to { stroke-dashoffset: 0; } }
.chapanim .s23-gnd { stroke-dasharray: 144.0 216.0; }
.chapanim .s23-gnd { animation: s23Gnd 11.61s linear 5.40s infinite; }
@keyframes s23Gnd { from { stroke-dashoffset: 360.0; } to { stroke-dashoffset: 0; } }

/* scene 24 -- the whist table */
.chapanim .s24-card { stroke-dasharray: 205.7 308.5; }
.chapanim .s24-card { animation: s24Card 11.30s linear 0.00s infinite; }
@keyframes s24Card { from { stroke-dashoffset: 514.2; } to { stroke-dashoffset: 0; } }
.chapanim .s24-card2 { stroke-dasharray: 216.6 324.9; }
.chapanim .s24-card2 { animation: s24Card2 14.90s linear 0.90s infinite; }
@keyframes s24Card2 { from { stroke-dashoffset: 541.5; } to { stroke-dashoffset: 0; } }
.chapanim .s24-card3 { stroke-dasharray: 205.7 308.5; }
.chapanim .s24-card3 { animation: s24Card3 18.70s linear 1.80s infinite; }
@keyframes s24Card3 { from { stroke-dashoffset: 514.2; } to { stroke-dashoffset: 0; } }
.chapanim .s24-pip { stroke-dasharray: 45.4 68.1; }
.chapanim .s24-pip { animation: s24Pip 23.10s linear 2.70s infinite; }
@keyframes s24Pip { from { stroke-dashoffset: 113.5; } to { stroke-dashoffset: 0; } }
.chapanim .s24-pip2 { stroke-dasharray: 45.4 68.1; }
.chapanim .s24-pip2 { animation: s24Pip2 27.50s linear 3.60s infinite; }
@keyframes s24Pip2 { from { stroke-dashoffset: 113.5; } to { stroke-dashoffset: 0; } }
.chapanim .s24-pip3 { stroke-dasharray: 45.4 68.1; }
.chapanim .s24-pip3 { animation: s24Pip3 31.90s linear 4.50s infinite; }
@keyframes s24Pip3 { from { stroke-dashoffset: 113.5; } to { stroke-dashoffset: 0; } }

/* scene 25 -- the Three Cripples */
.chapanim .s25-bracket { stroke-dasharray: 45.7 68.6; }
.chapanim .s25-bracket { animation: s25Bracket 11.30s linear 0.00s infinite; }
@keyframes s25Bracket { from { stroke-dashoffset: 114.3; } to { stroke-dashoffset: 0; } }
.chapanim .s25-stay { stroke-dasharray: 21.4 32.1; }
.chapanim .s25-stay { animation: s25Stay 14.90s linear 0.90s infinite; }
@keyframes s25Stay { from { stroke-dashoffset: 53.6; } to { stroke-dashoffset: 0; } }
.chapanim .s25-chain { stroke-dasharray: 7.8 11.7; }
.chapanim .s25-chain { animation: s25Chain 18.70s linear 1.80s infinite; }
@keyframes s25Chain { from { stroke-dashoffset: 19.5; } to { stroke-dashoffset: 0; } }
.chapanim .s25-board { stroke-dasharray: 332.8 499.1; }
.chapanim .s25-board { animation: s25Board 23.10s linear 2.70s infinite; }
@keyframes s25Board { from { stroke-dashoffset: 831.9; } to { stroke-dashoffset: 0; } }
.chapanim .s25-crutch0 { stroke-dasharray: 91.9 137.9; }
.chapanim .s25-crutch0 { animation: s25Crutch0 27.50s linear 3.60s infinite; }
@keyframes s25Crutch0 { from { stroke-dashoffset: 229.9; } to { stroke-dashoffset: 0; } }
.chapanim .s25-crutch1 { stroke-dasharray: 91.9 137.9; }
.chapanim .s25-crutch1 { animation: s25Crutch1 31.90s linear 4.50s infinite; }
@keyframes s25Crutch1 { from { stroke-dashoffset: 229.9; } to { stroke-dashoffset: 0; } }
.chapanim .s25-crutch2 { stroke-dasharray: 91.9 137.9; }
.chapanim .s25-crutch2 { animation: s25Crutch2 11.61s linear 5.40s infinite; }
@keyframes s25Crutch2 { from { stroke-dashoffset: 229.9; } to { stroke-dashoffset: 0; } }

/* scene 26 -- the padlocked box */
.chapanim .s26-chest { stroke-dasharray: 304.0 456.0; }
.chapanim .s26-chest { animation: s26Chest 11.30s linear 0.00s infinite; }
@keyframes s26Chest { from { stroke-dashoffset: 760.0; } to { stroke-dashoffset: 0; } }
.chapanim .s26-drawer { stroke-dasharray: 88.9 133.3; }
.chapanim .s26-drawer { animation: s26Drawer 14.90s linear 0.90s infinite; }
@keyframes s26Drawer { from { stroke-dashoffset: 222.2; } to { stroke-dashoffset: 0; } }
.chapanim .s26-drawer2 { stroke-dasharray: 88.9 133.3; }
.chapanim .s26-drawer2 { animation: s26Drawer2 18.70s linear 1.80s infinite; }
@keyframes s26Drawer2 { from { stroke-dashoffset: 222.2; } to { stroke-dashoffset: 0; } }
.chapanim .s26-pull { stroke-dasharray: 22.1 33.1; }
.chapanim .s26-pull { animation: s26Pull 23.10s linear 2.70s infinite; }
@keyframes s26Pull { from { stroke-dashoffset: 55.2; } to { stroke-dashoffset: 0; } }
.chapanim .s26-pull2 { stroke-dasharray: 22.1 33.1; }
.chapanim .s26-pull2 { animation: s26Pull2 27.50s linear 3.60s infinite; }
@keyframes s26Pull2 { from { stroke-dashoffset: 55.2; } to { stroke-dashoffset: 0; } }
.chapanim .s26-box { stroke-dasharray: 110.2 165.3; }
.chapanim .s26-box { animation: s26Box 31.90s linear 4.50s infinite; }
@keyframes s26Box { from { stroke-dashoffset: 275.6; } to { stroke-dashoffset: 0; } }
.chapanim .s26-shackle { stroke-dasharray: 29.4 44.1; }
.chapanim .s26-shackle { animation: s26Shackle 11.61s linear 5.40s infinite; }
@keyframes s26Shackle { from { stroke-dashoffset: 73.5; } to { stroke-dashoffset: 0; } }
.chapanim .s26-gnd { stroke-dasharray: 144.0 216.0; }
.chapanim .s26-gnd { animation: s26Gnd 15.21s linear 6.30s infinite; }
@keyframes s26Gnd { from { stroke-dashoffset: 360.0; } to { stroke-dashoffset: 0; } }

/* scene 27 -- the ditch and the hedge */
.chapanim .s27-hedge { stroke-dasharray: 232.6 348.9; }
.chapanim .s27-hedge { animation: s27Hedge 11.30s linear 0.00s infinite; }
@keyframes s27Hedge { from { stroke-dashoffset: 581.5; } to { stroke-dashoffset: 0; } }
.chapanim .s27-hedge2 { stroke-dasharray: 218.1 327.1; }
.chapanim .s27-hedge2 { animation: s27Hedge2 14.90s linear 0.90s infinite; }
@keyframes s27Hedge2 { from { stroke-dashoffset: 545.2; } to { stroke-dashoffset: 0; } }
.chapanim .s27-gate { stroke-dasharray: 107.6 161.3; }
.chapanim .s27-gate { animation: s27Gate 18.70s linear 1.80s infinite; }
@keyframes s27Gate { from { stroke-dashoffset: 268.9; } to { stroke-dashoffset: 0; } }
.chapanim .s27-gatebar { stroke-dasharray: 43.6 65.3; }
.chapanim .s27-gatebar { animation: s27Gatebar 23.10s linear 2.70s infinite; }
@keyframes s27Gatebar { from { stroke-dashoffset: 108.9; } to { stroke-dashoffset: 0; } }
.chapanim .s27-gatediag { stroke-dasharray: 54.0 81.1; }
.chapanim .s27-gatediag { animation: s27Gatediag 27.50s linear 3.60s infinite; }
@keyframes s27Gatediag { from { stroke-dashoffset: 135.1; } to { stroke-dashoffset: 0; } }
.chapanim .s27-ditch { stroke-dasharray: 125.8 188.7; }
.chapanim .s27-ditch { animation: s27Ditch 31.90s linear 4.50s infinite; }
@keyframes s27Ditch { from { stroke-dashoffset: 314.5; } to { stroke-dashoffset: 0; } }

/* scene 28 -- the breakfast table */
.chapanim .s28-cloth { stroke-dasharray: 324.7 487.0; }
.chapanim .s28-cloth { animation: s28Cloth 11.30s linear 0.00s infinite; }
@keyframes s28Cloth { from { stroke-dashoffset: 811.7; } to { stroke-dashoffset: 0; } }
.chapanim .s28-urn { stroke-dasharray: 96.2 144.4; }
.chapanim .s28-urn { animation: s28Urn 14.90s linear 0.90s infinite; }
@keyframes s28Urn { from { stroke-dashoffset: 240.6; } to { stroke-dashoffset: 0; } }
.chapanim .s28-urnlid { stroke-dasharray: 36.7 55.0; }
.chapanim .s28-urnlid { animation: s28Urnlid 18.70s linear 1.80s infinite; }
@keyframes s28Urnlid { from { stroke-dashoffset: 91.7; } to { stroke-dashoffset: 0; } }
.chapanim .s28-knob { stroke-dasharray: 17.8 26.7; }
.chapanim .s28-knob { animation: s28Knob 23.10s linear 2.70s infinite; }
@keyframes s28Knob { from { stroke-dashoffset: 44.5; } to { stroke-dashoffset: 0; } }
.chapanim .s28-cup { stroke-dasharray: 30.0 45.0; }
.chapanim .s28-cup { animation: s28Cup 27.50s linear 3.60s infinite; }
@keyframes s28Cup { from { stroke-dashoffset: 74.9; } to { stroke-dashoffset: 0; } }
.chapanim .s28-cup2 { stroke-dasharray: 30.0 45.0; }
.chapanim .s28-cup2 { animation: s28Cup2 31.90s linear 4.50s infinite; }
@keyframes s28Cup2 { from { stroke-dashoffset: 74.9; } to { stroke-dashoffset: 0; } }
.chapanim .s28-plate { stroke-dasharray: 68.5 102.8; }
.chapanim .s28-plate { animation: s28Plate 11.61s linear 5.40s infinite; }
@keyframes s28Plate { from { stroke-dashoffset: 171.3; } to { stroke-dashoffset: 0; } }

/* scene 29 -- the curtained bed */
.chapanim .s29-rail { stroke-dasharray: 144.0 216.0; }
.chapanim .s29-rail { animation: s29Rail 11.30s linear 0.00s infinite; }
@keyframes s29Rail { from { stroke-dashoffset: 360.0; } to { stroke-dashoffset: 0; } }
.chapanim .s29-post { stroke-dasharray: 76.8 115.2; }
.chapanim .s29-post { animation: s29Post 14.90s linear 0.90s infinite; }
@keyframes s29Post { from { stroke-dashoffset: 192.0; } to { stroke-dashoffset: 0; } }
.chapanim .s29-post2 { stroke-dasharray: 76.8 115.2; }
.chapanim .s29-post2 { animation: s29Post2 18.70s linear 1.80s infinite; }
@keyframes s29Post2 { from { stroke-dashoffset: 192.0; } to { stroke-dashoffset: 0; } }
.chapanim .s29-curtain { stroke-dasharray: 79.4 119.2; }
.chapanim .s29-curtain { animation: s29Curtain 23.10s linear 2.70s infinite; }
@keyframes s29Curtain { from { stroke-dashoffset: 198.6; } to { stroke-dashoffset: 0; } }
.chapanim .s29-curtain2 { stroke-dasharray: 79.4 119.2; }
.chapanim .s29-curtain2 { animation: s29Curtain2 27.50s linear 3.60s infinite; }
@keyframes s29Curtain2 { from { stroke-dashoffset: 198.6; } to { stroke-dashoffset: 0; } }
.chapanim .s29-drape { stroke-dasharray: 138.8 208.2; }
.chapanim .s29-drape { animation: s29Drape 31.90s linear 4.50s infinite; }
@keyframes s29Drape { from { stroke-dashoffset: 347.0; } to { stroke-dashoffset: 0; } }
.chapanim .s29-bed { stroke-dasharray: 218.9 328.3; }
.chapanim .s29-bed { animation: s29Bed 11.61s linear 5.40s infinite; }
@keyframes s29Bed { from { stroke-dashoffset: 547.2; } to { stroke-dashoffset: 0; } }
.chapanim .s29-pillow { stroke-dasharray: 36.3 54.5; }
.chapanim .s29-pillow { animation: s29Pillow 15.21s linear 6.30s infinite; }
@keyframes s29Pillow { from { stroke-dashoffset: 90.8; } to { stroke-dashoffset: 0; } }

/* scene 30 -- the handcuffs */
.chapanim .s30-cuff { stroke-dasharray: 183.4 275.2; }
.chapanim .s30-cuff { animation: s30Cuff 11.30s linear 0.00s infinite; }
@keyframes s30Cuff { from { stroke-dashoffset: 458.6; } to { stroke-dashoffset: 0; } }
.chapanim .s30-cuff2 { stroke-dasharray: 183.4 275.2; }
.chapanim .s30-cuff2 { animation: s30Cuff2 14.90s linear 0.90s infinite; }
@keyframes s30Cuff2 { from { stroke-dashoffset: 458.6; } to { stroke-dashoffset: 0; } }
.chapanim .s30-chain { stroke-dasharray: 52.0 78.0; }
.chapanim .s30-chain { animation: s30Chain 18.70s linear 1.80s infinite; }
@keyframes s30Chain { from { stroke-dashoffset: 130.0; } to { stroke-dashoffset: 0; } }
.chapanim .s30-hinge { stroke-dasharray: 42.8 64.1; }
.chapanim .s30-hinge { animation: s30Hinge 23.10s linear 2.70s infinite; }
@keyframes s30Hinge { from { stroke-dashoffset: 106.9; } to { stroke-dashoffset: 0; } }
.chapanim .s30-hinge2 { stroke-dasharray: 42.8 64.1; }
.chapanim .s30-hinge2 { animation: s30Hinge2 27.50s linear 3.60s infinite; }
@keyframes s30Hinge2 { from { stroke-dashoffset: 106.9; } to { stroke-dashoffset: 0; } }
.chapanim .s30-bar { stroke-dasharray: 27.0 40.5; }
.chapanim .s30-bar { animation: s30Bar 31.90s linear 4.50s infinite; }
@keyframes s30Bar { from { stroke-dashoffset: 67.5; } to { stroke-dashoffset: 0; } }

/* scene 31 -- the cottage */
.chapanim .s31-roof { stroke-dasharray: 168.1 252.2; }
.chapanim .s31-roof { animation: s31Roof 11.30s linear 0.00s infinite; }
@keyframes s31Roof { from { stroke-dashoffset: 420.3; } to { stroke-dashoffset: 0; } }
.chapanim .s31-wall { stroke-dasharray: 291.9 437.9; }
.chapanim .s31-wall { animation: s31Wall 14.90s linear 0.90s infinite; }
@keyframes s31Wall { from { stroke-dashoffset: 729.9; } to { stroke-dashoffset: 0; } }
.chapanim .s31-door { stroke-dasharray: 96.7 145.0; }
.chapanim .s31-door { animation: s31Door 18.70s linear 1.80s infinite; }
@keyframes s31Door { from { stroke-dashoffset: 241.6; } to { stroke-dashoffset: 0; } }
.chapanim .s31-win { stroke-dasharray: 71.0 106.5; }
.chapanim .s31-win { animation: s31Win 23.10s linear 2.70s infinite; }
@keyframes s31Win { from { stroke-dashoffset: 177.5; } to { stroke-dashoffset: 0; } }
.chapanim .s31-win2 { stroke-dasharray: 71.0 106.5; }
.chapanim .s31-win2 { animation: s31Win2 27.50s linear 3.60s infinite; }
@keyframes s31Win2 { from { stroke-dashoffset: 177.5; } to { stroke-dashoffset: 0; } }
.chapanim .s31-vine { stroke-dasharray: 73.5 110.2; }
.chapanim .s31-vine { animation: s31Vine 31.90s linear 4.50s infinite; }
@keyframes s31Vine { from { stroke-dashoffset: 183.6; } to { stroke-dashoffset: 0; } }
.chapanim .s31-rose { stroke-dasharray: 33.8 50.7; }
.chapanim .s31-rose { animation: s31Rose 11.61s linear 5.40s infinite; }
@keyframes s31Rose { from { stroke-dashoffset: 84.5; } to { stroke-dashoffset: 0; } }
.chapanim .s31-rose2 { stroke-dasharray: 30.7 46.1; }
.chapanim .s31-rose2 { animation: s31Rose2 15.21s linear 6.30s infinite; }
@keyframes s31Rose2 { from { stroke-dashoffset: 76.8; } to { stroke-dashoffset: 0; } }
.chapanim .s31-rose3 { stroke-dasharray: 33.8 50.7; }
.chapanim .s31-rose3 { animation: s31Rose3 19.01s linear 7.20s infinite; }
@keyframes s31Rose3 { from { stroke-dashoffset: 84.5; } to { stroke-dashoffset: 0; } }

/* scene 32 -- the piano keys */
.chapanim .s32-lid { stroke-dasharray: 335.9 503.9; }
.chapanim .s32-lid { animation: s32Lid 11.30s linear 0.00s infinite; }
@keyframes s32Lid { from { stroke-dashoffset: 839.8; } to { stroke-dashoffset: 0; } }
.chapanim .s32-front { stroke-dasharray: 309.0 463.6; }
.chapanim .s32-front { animation: s32Front 14.90s linear 0.90s infinite; }
@keyframes s32Front { from { stroke-dashoffset: 772.6; } to { stroke-dashoffset: 0; } }
.chapanim .s32-k0 { stroke-dasharray: 44.3 66.5; }
.chapanim .s32-k0 { animation: s32K0 18.70s linear 1.80s infinite; }
@keyframes s32K0 { from { stroke-dashoffset: 110.8; } to { stroke-dashoffset: 0; } }
.chapanim .s32-k1 { stroke-dasharray: 44.3 66.5; }
.chapanim .s32-k1 { animation: s32K1 23.10s linear 2.70s infinite; }
@keyframes s32K1 { from { stroke-dashoffset: 110.8; } to { stroke-dashoffset: 0; } }
.chapanim .s32-k2 { stroke-dasharray: 44.3 66.5; }
.chapanim .s32-k2 { animation: s32K2 27.50s linear 3.60s infinite; }
@keyframes s32K2 { from { stroke-dashoffset: 110.8; } to { stroke-dashoffset: 0; } }
.chapanim .s32-k3 { stroke-dasharray: 44.3 66.5; }
.chapanim .s32-k3 { animation: s32K3 31.90s linear 4.50s infinite; }
@keyframes s32K3 { from { stroke-dashoffset: 110.8; } to { stroke-dashoffset: 0; } }
.chapanim .s32-k4 { stroke-dasharray: 44.3 66.5; }
.chapanim .s32-k4 { animation: s32K4 11.61s linear 5.40s infinite; }
@keyframes s32K4 { from { stroke-dashoffset: 110.8; } to { stroke-dashoffset: 0; } }
.chapanim .s32-k5 { stroke-dasharray: 44.3 66.5; }
.chapanim .s32-k5 { animation: s32K5 15.21s linear 6.30s infinite; }
@keyframes s32K5 { from { stroke-dashoffset: 110.8; } to { stroke-dashoffset: 0; } }
.chapanim .s32-k6 { stroke-dasharray: 44.3 66.5; }
.chapanim .s32-k6 { animation: s32K6 19.01s linear 7.20s infinite; }
@keyframes s32K6 { from { stroke-dashoffset: 110.8; } to { stroke-dashoffset: 0; } }
.chapanim .s32-k7 { stroke-dasharray: 44.3 66.5; }
.chapanim .s32-k7 { animation: s32K7 23.41s linear 8.10s infinite; }
@keyframes s32K7 { from { stroke-dashoffset: 110.8; } to { stroke-dashoffset: 0; } }
.chapanim .s32-leg { stroke-dasharray: 11.7 17.5; }
.chapanim .s32-leg { animation: s32Leg 27.81s linear 9.00s infinite; }
@keyframes s32Leg { from { stroke-dashoffset: 29.2; } to { stroke-dashoffset: 0; } }

/* scene 33 -- the post-chaise */
.chapanim .s33-body { stroke-dasharray: 102.4 153.6; }
.chapanim .s33-body { animation: s33Body 11.30s linear 0.00s infinite; }
@keyframes s33Body { from { stroke-dashoffset: 256.1; } to { stroke-dashoffset: 0; } }
.chapanim .s33-floor { stroke-dasharray: 81.8 122.7; }
.chapanim .s33-floor { animation: s33Floor 14.90s linear 0.90s infinite; }
@keyframes s33Floor { from { stroke-dashoffset: 204.4; } to { stroke-dashoffset: 0; } }
.chapanim .s33-door { stroke-dasharray: 94.2 141.3; }
.chapanim .s33-door { animation: s33Door 18.70s linear 1.80s infinite; }
@keyframes s33Door { from { stroke-dashoffset: 235.6; } to { stroke-dashoffset: 0; } }
.chapanim .s33-wheel { stroke-dasharray: 83.6 125.4; }
.chapanim .s33-wheel { animation: s33Wheel 23.10s linear 2.70s infinite; }
@keyframes s33Wheel { from { stroke-dashoffset: 208.9; } to { stroke-dashoffset: 0; } }
.chapanim .s33-wheel2 { stroke-dasharray: 83.6 125.4; }
.chapanim .s33-wheel2 { animation: s33Wheel2 27.50s linear 3.60s infinite; }
@keyframes s33Wheel2 { from { stroke-dashoffset: 208.9; } to { stroke-dashoffset: 0; } }
.chapanim .s33-spokes { stroke-dasharray: 148.5 222.7; }
.chapanim .s33-spokes { animation: s33Spokes 31.90s linear 4.50s infinite; }
@keyframes s33Spokes { from { stroke-dashoffset: 371.1; } to { stroke-dashoffset: 0; } }
.chapanim .s33-lamp { stroke-dasharray: 36.0 54.0; }
.chapanim .s33-lamp { animation: s33Lamp 11.61s linear 5.40s infinite; }
@keyframes s33Lamp { from { stroke-dashoffset: 90.0; } to { stroke-dashoffset: 0; } }
.chapanim .s33-gnd { stroke-dasharray: 144.0 216.0; }
.chapanim .s33-gnd { animation: s33Gnd 15.21s linear 6.30s infinite; }
@keyframes s33Gnd { from { stroke-dashoffset: 360.0; } to { stroke-dashoffset: 0; } }

/* scene 34 -- the empty field */
.chapanim .s34-field { stroke-dasharray: 151.3 227.0; }
.chapanim .s34-field { animation: s34Field 11.30s linear 0.00s infinite; }
@keyframes s34Field { from { stroke-dashoffset: 378.4; } to { stroke-dashoffset: 0; } }
.chapanim .s34-field2 { stroke-dasharray: 155.0 232.4; }
.chapanim .s34-field2 { animation: s34Field2 14.90s linear 0.90s infinite; }
@keyframes s34Field2 { from { stroke-dashoffset: 387.4; } to { stroke-dashoffset: 0; } }
.chapanim .s34-gap { stroke-dasharray: 64.4 96.7; }
.chapanim .s34-gap { animation: s34Gap 18.70s linear 1.80s infinite; }
@keyframes s34Gap { from { stroke-dashoffset: 161.1; } to { stroke-dashoffset: 0; } }
.chapanim .s34-print { stroke-dasharray: 39.1 58.6; }
.chapanim .s34-print { animation: s34Print 23.10s linear 2.70s infinite; }
@keyframes s34Print { from { stroke-dashoffset: 97.7; } to { stroke-dashoffset: 0; } }
.chapanim .s34-print2 { stroke-dasharray: 39.1 58.6; }
.chapanim .s34-print2 { animation: s34Print2 27.50s linear 3.60s infinite; }
@keyframes s34Print2 { from { stroke-dashoffset: 97.7; } to { stroke-dashoffset: 0; } }
.chapanim .s34-print3 { stroke-dasharray: 39.1 58.6; }
.chapanim .s34-print3 { animation: s34Print3 31.90s linear 4.50s infinite; }
@keyframes s34Print3 { from { stroke-dashoffset: 97.7; } to { stroke-dashoffset: 0; } }
.chapanim .s34-print4 { stroke-dasharray: 39.1 58.6; }
.chapanim .s34-print4 { animation: s34Print4 11.61s linear 5.40s infinite; }
@keyframes s34Print4 { from { stroke-dashoffset: 97.7; } to { stroke-dashoffset: 0; } }

/* scene 35 -- the key */
.chapanim .s35-bow { stroke-dasharray: 145.2 217.8; }
.chapanim .s35-bow { animation: s35Bow 11.30s linear 0.00s infinite; }
@keyframes s35Bow { from { stroke-dashoffset: 363.0; } to { stroke-dashoffset: 0; } }
.chapanim .s35-bowin { stroke-dasharray: 82.0 123.0; }
.chapanim .s35-bowin { animation: s35Bowin 14.90s linear 0.90s infinite; }
@keyframes s35Bowin { from { stroke-dashoffset: 204.9; } to { stroke-dashoffset: 0; } }
.chapanim .s35-shank { stroke-dasharray: 97.7 146.5; }
.chapanim .s35-shank { animation: s35Shank 18.70s linear 1.80s infinite; }
@keyframes s35Shank { from { stroke-dashoffset: 244.2; } to { stroke-dashoffset: 0; } }
.chapanim .s35-ward { stroke-dasharray: 55.4 83.1; }
.chapanim .s35-ward { animation: s35Ward 23.10s linear 2.70s infinite; }
@keyframes s35Ward { from { stroke-dashoffset: 138.5; } to { stroke-dashoffset: 0; } }
.chapanim .s35-ward2 { stroke-dasharray: 17.1 25.7; }
.chapanim .s35-ward2 { animation: s35Ward2 27.50s linear 3.60s infinite; }
@keyframes s35Ward2 { from { stroke-dashoffset: 42.8; } to { stroke-dashoffset: 0; } }

/* scene 36 -- the cocked hat laid by */
.chapanim .s36-hat { stroke-dasharray: 289.1 433.7; }
.chapanim .s36-hat { animation: s36Hat 11.30s linear 0.00s infinite; }
@keyframes s36Hat { from { stroke-dashoffset: 722.8; } to { stroke-dashoffset: 0; } }
.chapanim .s36-brim { stroke-dasharray: 139.8 209.7; }
.chapanim .s36-brim { animation: s36Brim 14.90s linear 0.90s infinite; }
@keyframes s36Brim { from { stroke-dashoffset: 349.5; } to { stroke-dashoffset: 0; } }
.chapanim .s36-cord { stroke-dasharray: 109.3 163.9; }
.chapanim .s36-cord { animation: s36Cord 18.70s linear 1.80s infinite; }
@keyframes s36Cord { from { stroke-dashoffset: 273.1; } to { stroke-dashoffset: 0; } }
.chapanim .s36-cockade { stroke-dasharray: 36.0 54.0; }
.chapanim .s36-cockade { animation: s36Cockade 23.10s linear 2.70s infinite; }
@keyframes s36Cockade { from { stroke-dashoffset: 90.0; } to { stroke-dashoffset: 0; } }
.chapanim .s36-shelf { stroke-dasharray: 144.0 216.0; }
.chapanim .s36-shelf { animation: s36Shelf 27.50s linear 3.60s infinite; }
@keyframes s36Shelf { from { stroke-dashoffset: 360.0; } to { stroke-dashoffset: 0; } }

/* scene 37 -- the house on the ditch */
.chapanim .s37-gable { stroke-dasharray: 190.7 286.1; }
.chapanim .s37-gable { animation: s37Gable 11.30s linear 0.00s infinite; }
@keyframes s37Gable { from { stroke-dashoffset: 476.8; } to { stroke-dashoffset: 0; } }
.chapanim .s37-win { stroke-dasharray: 74.7 112.0; }
.chapanim .s37-win { animation: s37Win 14.90s linear 0.90s infinite; }
@keyframes s37Win { from { stroke-dashoffset: 186.7; } to { stroke-dashoffset: 0; } }
.chapanim .s37-win2 { stroke-dasharray: 74.7 112.0; }
.chapanim .s37-win2 { animation: s37Win2 18.70s linear 1.80s infinite; }
@keyframes s37Win2 { from { stroke-dashoffset: 186.7; } to { stroke-dashoffset: 0; } }
.chapanim .s37-sill { stroke-dasharray: 117.3 176.0; }
.chapanim .s37-sill { animation: s37Sill 23.10s linear 2.70s infinite; }
@keyframes s37Sill { from { stroke-dashoffset: 293.3; } to { stroke-dashoffset: 0; } }
.chapanim .s37-pile { stroke-dasharray: 16.0 24.0; }
.chapanim .s37-pile { animation: s37Pile 27.50s linear 3.60s infinite; }
@keyframes s37Pile { from { stroke-dashoffset: 40.0; } to { stroke-dashoffset: 0; } }
.chapanim .s37-pile2 { stroke-dasharray: 17.8 26.7; }
.chapanim .s37-pile2 { animation: s37Pile2 31.90s linear 4.50s infinite; }
@keyframes s37Pile2 { from { stroke-dashoffset: 44.4; } to { stroke-dashoffset: 0; } }
.chapanim .s37-pile3 { stroke-dasharray: 16.0 24.0; }
.chapanim .s37-pile3 { animation: s37Pile3 11.61s linear 5.40s infinite; }
@keyframes s37Pile3 { from { stroke-dashoffset: 40.0; } to { stroke-dashoffset: 0; } }
.chapanim .s37-current { stroke-dasharray: 177.0 265.5; }
.chapanim .s37-current { animation: s37Current 15.21s linear 6.30s infinite; }
@keyframes s37Current { from { stroke-dashoffset: 442.6; } to { stroke-dashoffset: 0; } }

/* scene 38 -- the locket and the ring */
.chapanim .s38-locket { stroke-dasharray: 134.0 201.0; }
.chapanim .s38-locket { animation: s38Locket 11.30s linear 0.00s infinite; }
@keyframes s38Locket { from { stroke-dashoffset: 335.0; } to { stroke-dashoffset: 0; } }
.chapanim .s38-bail { stroke-dasharray: 16.7 25.1; }
.chapanim .s38-bail { animation: s38Bail 14.90s linear 0.90s infinite; }
@keyframes s38Bail { from { stroke-dashoffset: 41.8; } to { stroke-dashoffset: 0; } }
.chapanim .s38-seam { stroke-dasharray: 39.1 58.7; }
.chapanim .s38-seam { animation: s38Seam 18.70s linear 1.80s infinite; }
@keyframes s38Seam { from { stroke-dashoffset: 97.8; } to { stroke-dashoffset: 0; } }
.chapanim .s38-ring { stroke-dasharray: 111.5 167.2; }
.chapanim .s38-ring { animation: s38Ring 23.10s linear 2.70s infinite; }
@keyframes s38Ring { from { stroke-dashoffset: 278.7; } to { stroke-dashoffset: 0; } }
.chapanim .s38-ring2 { stroke-dasharray: 83.5 125.3; }
.chapanim .s38-ring2 { animation: s38Ring2 27.50s linear 3.60s infinite; }
@keyframes s38Ring2 { from { stroke-dashoffset: 208.8; } to { stroke-dashoffset: 0; } }
.chapanim .s38-water { stroke-dasharray: 170.2 255.2; }
.chapanim .s38-water { animation: s38Water 31.90s linear 4.50s infinite; }
@keyframes s38Water { from { stroke-dashoffset: 425.4; } to { stroke-dashoffset: 0; } }

/* scene 39 -- the lamp on the stair */
.chapanim .s39-lamp { stroke-dasharray: 158.9 238.3; }
.chapanim .s39-lamp { animation: s39Lamp 11.30s linear 0.00s infinite; }
@keyframes s39Lamp { from { stroke-dashoffset: 397.2; } to { stroke-dashoffset: 0; } }
.chapanim .s39-cord { stroke-dasharray: 10.9 16.4; }
.chapanim .s39-cord { animation: s39Cord 14.90s linear 0.90s infinite; }
@keyframes s39Cord { from { stroke-dashoffset: 27.3; } to { stroke-dashoffset: 0; } }
.chapanim .s39-glow { stroke-dasharray: 211.5 317.3; }
.chapanim .s39-glow { animation: s39Glow 18.70s linear 1.80s infinite; }
@keyframes s39Glow { from { stroke-dashoffset: 528.9; } to { stroke-dashoffset: 0; } }
.chapanim .s39-stair { stroke-dasharray: 201.5 302.2; }
.chapanim .s39-stair { animation: s39Stair 23.10s linear 2.70s infinite; }
@keyframes s39Stair { from { stroke-dashoffset: 503.7; } to { stroke-dashoffset: 0; } }
.chapanim .s39-rail { stroke-dasharray: 145.2 217.8; }
.chapanim .s39-rail { animation: s39Rail 27.50s linear 3.60s infinite; }
@keyframes s39Rail { from { stroke-dashoffset: 363.0; } to { stroke-dashoffset: 0; } }

/* scene 40 -- the door in Craven Street */
.chapanim .s40-door { stroke-dasharray: 243.6 365.3; }
.chapanim .s40-door { animation: s40Door 11.30s linear 0.00s infinite; }
@keyframes s40Door { from { stroke-dashoffset: 608.9; } to { stroke-dashoffset: 0; } }
.chapanim .s40-fan { stroke-dasharray: 71.5 107.3; }
.chapanim .s40-fan { animation: s40Fan 14.90s linear 0.90s infinite; }
@keyframes s40Fan { from { stroke-dashoffset: 178.8; } to { stroke-dashoffset: 0; } }
.chapanim .s40-knob { stroke-dasharray: 22.1 33.1; }
.chapanim .s40-knob { animation: s40Knob 18.70s linear 1.80s infinite; }
@keyframes s40Knob { from { stroke-dashoffset: 55.2; } to { stroke-dashoffset: 0; } }
.chapanim .s40-panel { stroke-dasharray: 76.4 114.7; }
.chapanim .s40-panel { animation: s40Panel 23.10s linear 2.70s infinite; }
@keyframes s40Panel { from { stroke-dashoffset: 191.1; } to { stroke-dashoffset: 0; } }
.chapanim .s40-panel2 { stroke-dasharray: 76.4 114.7; }
.chapanim .s40-panel2 { animation: s40Panel2 27.50s linear 3.60s infinite; }
@keyframes s40Panel2 { from { stroke-dashoffset: 191.1; } to { stroke-dashoffset: 0; } }
.chapanim .s40-panel3 { stroke-dasharray: 76.4 114.7; }
.chapanim .s40-panel3 { animation: s40Panel3 31.90s linear 4.50s infinite; }
@keyframes s40Panel3 { from { stroke-dashoffset: 191.1; } to { stroke-dashoffset: 0; } }
.chapanim .s40-panel4 { stroke-dasharray: 76.4 114.7; }
.chapanim .s40-panel4 { animation: s40Panel4 11.61s linear 5.40s infinite; }
@keyframes s40Panel4 { from { stroke-dashoffset: 191.1; } to { stroke-dashoffset: 0; } }
.chapanim .s40-gnd { stroke-dasharray: 144.0 216.0; }
.chapanim .s40-gnd { animation: s40Gnd 15.21s linear 6.30s infinite; }
@keyframes s40Gnd { from { stroke-dashoffset: 360.0; } to { stroke-dashoffset: 0; } }

/* scene 41 -- the Great North Road */
.chapanim .s41-road { stroke-dasharray: 184.5 276.7; }
.chapanim .s41-road { animation: s41Road 11.30s linear 0.00s infinite; }
@keyframes s41Road { from { stroke-dashoffset: 461.2; } to { stroke-dashoffset: 0; } }
.chapanim .s41-post { stroke-dasharray: 49.8 74.7; }
.chapanim .s41-post { animation: s41Post 14.90s linear 0.90s infinite; }
@keyframes s41Post { from { stroke-dashoffset: 124.4; } to { stroke-dashoffset: 0; } }
.chapanim .s41-bundle { stroke-dasharray: 49.9 74.9; }
.chapanim .s41-bundle { animation: s41Bundle 18.70s linear 1.80s infinite; }
@keyframes s41Bundle { from { stroke-dashoffset: 124.9; } to { stroke-dashoffset: 0; } }
.chapanim .s41-stick { stroke-dasharray: 24.6 36.9; }
.chapanim .s41-stick { animation: s41Stick 23.10s linear 2.70s infinite; }
@keyframes s41Stick { from { stroke-dashoffset: 61.5; } to { stroke-dashoffset: 0; } }
.chapanim .s41-hedge { stroke-dasharray: 70.9 106.4; }
.chapanim .s41-hedge { animation: s41Hedge 27.50s linear 3.60s infinite; }
@keyframes s41Hedge { from { stroke-dashoffset: 177.4; } to { stroke-dashoffset: 0; } }
.chapanim .s41-hedge2 { stroke-dasharray: 69.6 104.3; }
.chapanim .s41-hedge2 { animation: s41Hedge2 31.90s linear 4.50s infinite; }
@keyframes s41Hedge2 { from { stroke-dashoffset: 173.9; } to { stroke-dashoffset: 0; } }

/* scene 42 -- the dock */
.chapanim .s42-dock { stroke-dasharray: 295.1 442.7; }
.chapanim .s42-dock { animation: s42Dock 11.30s linear 0.00s infinite; }
@keyframes s42Dock { from { stroke-dashoffset: 737.8; } to { stroke-dashoffset: 0; } }
.chapanim .s42-rail { stroke-dasharray: 103.1 154.7; }
.chapanim .s42-rail { animation: s42Rail 14.90s linear 0.90s infinite; }
@keyframes s42Rail { from { stroke-dashoffset: 257.8; } to { stroke-dashoffset: 0; } }
.chapanim .s42-bar { stroke-dasharray: 92.4 138.7; }
.chapanim .s42-bar { animation: s42Bar 18.70s linear 1.80s infinite; }
@keyframes s42Bar { from { stroke-dashoffset: 231.1; } to { stroke-dashoffset: 0; } }
.chapanim .s42-post { stroke-dasharray: 35.6 53.3; }
.chapanim .s42-post { animation: s42Post 23.10s linear 2.70s infinite; }
@keyframes s42Post { from { stroke-dashoffset: 88.9; } to { stroke-dashoffset: 0; } }
.chapanim .s42-hat { stroke-dasharray: 42.7 64.1; }
.chapanim .s42-hat { animation: s42Hat 27.50s linear 3.60s infinite; }
@keyframes s42Hat { from { stroke-dashoffset: 106.9; } to { stroke-dashoffset: 0; } }
.chapanim .s42-brim { stroke-dasharray: 39.1 58.7; }
.chapanim .s42-brim { animation: s42Brim 31.90s linear 4.50s infinite; }
@keyframes s42Brim { from { stroke-dashoffset: 97.8; } to { stroke-dashoffset: 0; } }
.chapanim .s42-gnd { stroke-dasharray: 144.0 216.0; }
.chapanim .s42-gnd { animation: s42Gnd 11.61s linear 5.40s infinite; }
@keyframes s42Gnd { from { stroke-dashoffset: 360.0; } to { stroke-dashoffset: 0; } }

/* scene 43 -- the bonnet on the press */
.chapanim .s43-press { stroke-dasharray: 288.0 432.0; }
.chapanim .s43-press { animation: s43Press 11.30s linear 0.00s infinite; }
@keyframes s43Press { from { stroke-dashoffset: 720.0; } to { stroke-dashoffset: 0; } }
.chapanim .s43-cornice { stroke-dasharray: 131.6 197.3; }
.chapanim .s43-cornice { animation: s43Cornice 14.90s linear 0.90s infinite; }
@keyframes s43Cornice { from { stroke-dashoffset: 328.9; } to { stroke-dashoffset: 0; } }
.chapanim .s43-door { stroke-dasharray: 37.3 56.0; }
.chapanim .s43-door { animation: s43Door 18.70s linear 1.80s infinite; }
@keyframes s43Door { from { stroke-dashoffset: 93.3; } to { stroke-dashoffset: 0; } }
.chapanim .s43-bonnet { stroke-dasharray: 60.1 90.1; }
.chapanim .s43-bonnet { animation: s43Bonnet 23.10s linear 2.70s infinite; }
@keyframes s43Bonnet { from { stroke-dashoffset: 150.2; } to { stroke-dashoffset: 0; } }
.chapanim .s43-brim { stroke-dasharray: 40.9 61.3; }
.chapanim .s43-brim { animation: s43Brim 27.50s linear 3.60s infinite; }
@keyframes s43Brim { from { stroke-dashoffset: 102.2; } to { stroke-dashoffset: 0; } }
.chapanim .s43-ribbon { stroke-dasharray: 42.2 63.3; }
.chapanim .s43-ribbon { animation: s43Ribbon 31.90s linear 4.50s infinite; }
@keyframes s43Ribbon { from { stroke-dashoffset: 105.5; } to { stroke-dashoffset: 0; } }
.chapanim .s43-gnd { stroke-dasharray: 144.0 216.0; }
.chapanim .s43-gnd { animation: s43Gnd 11.61s linear 5.40s infinite; }
@keyframes s43Gnd { from { stroke-dashoffset: 360.0; } to { stroke-dashoffset: 0; } }

/* scene 44 -- the pane of glass */
.chapanim .s44-wall { stroke-dasharray: 340.4 510.5; }
.chapanim .s44-wall { animation: s44Wall 11.30s linear 0.00s infinite; }
@keyframes s44Wall { from { stroke-dashoffset: 850.9; } to { stroke-dashoffset: 0; } }
.chapanim .s44-pane { stroke-dasharray: 102.9 154.3; }
.chapanim .s44-pane { animation: s44Pane 14.90s linear 0.90s infinite; }
@keyframes s44Pane { from { stroke-dashoffset: 257.1; } to { stroke-dashoffset: 0; } }
.chapanim .s44-curtain { stroke-dasharray: 26.0 39.0; }
.chapanim .s44-curtain { animation: s44Curtain 18.70s linear 1.80s infinite; }
@keyframes s44Curtain { from { stroke-dashoffset: 65.0; } to { stroke-dashoffset: 0; } }
.chapanim .s44-beam { stroke-dasharray: 71.0 106.5; }
.chapanim .s44-beam { animation: s44Beam 23.10s linear 2.70s infinite; }
@keyframes s44Beam { from { stroke-dashoffset: 177.5; } to { stroke-dashoffset: 0; } }
.chapanim .s44-beam2 { stroke-dasharray: 71.0 106.5; }
.chapanim .s44-beam2 { animation: s44Beam2 27.50s linear 3.60s infinite; }
@keyframes s44Beam2 { from { stroke-dashoffset: 177.5; } to { stroke-dashoffset: 0; } }
.chapanim .s44-stool { stroke-dasharray: 52.8 79.2; }
.chapanim .s44-stool { animation: s44Stool 31.90s linear 4.50s infinite; }
@keyframes s44Stool { from { stroke-dashoffset: 132.1; } to { stroke-dashoffset: 0; } }

/* scene 45 -- the bridge steps */
.chapanim .s45-arch { stroke-dasharray: 147.8 221.7; }
.chapanim .s45-arch { animation: s45Arch 11.30s linear 0.00s infinite; }
@keyframes s45Arch { from { stroke-dashoffset: 369.4; } to { stroke-dashoffset: 0; } }
.chapanim .s45-deck { stroke-dasharray: 133.3 200.0; }
.chapanim .s45-deck { animation: s45Deck 14.90s linear 0.90s infinite; }
@keyframes s45Deck { from { stroke-dashoffset: 333.3; } to { stroke-dashoffset: 0; } }
.chapanim .s45-para { stroke-dasharray: 160.0 240.0; }
.chapanim .s45-para { animation: s45Para 18.70s linear 1.80s infinite; }
@keyframes s45Para { from { stroke-dashoffset: 400.0; } to { stroke-dashoffset: 0; } }
.chapanim .s45-steps { stroke-dasharray: 88.9 133.3; }
.chapanim .s45-steps { animation: s45Steps 23.10s linear 2.70s infinite; }
@keyframes s45Steps { from { stroke-dashoffset: 222.2; } to { stroke-dashoffset: 0; } }
.chapanim .s45-tide { stroke-dasharray: 162.1 243.1; }
.chapanim .s45-tide { animation: s45Tide 27.50s linear 3.60s infinite; }
@keyframes s45Tide { from { stroke-dashoffset: 405.1; } to { stroke-dashoffset: 0; } }

/* scene 46 -- the candle in the socket */
.chapanim .s46-stick { stroke-dasharray: 92.9 139.3; }
.chapanim .s46-stick { animation: s46Stick 11.30s linear 0.00s infinite; }
@keyframes s46Stick { from { stroke-dashoffset: 232.2; } to { stroke-dashoffset: 0; } }
.chapanim .s46-pan { stroke-dasharray: 61.0 91.5; }
.chapanim .s46-pan { animation: s46Pan 14.90s linear 0.90s infinite; }
@keyframes s46Pan { from { stroke-dashoffset: 152.5; } to { stroke-dashoffset: 0; } }
.chapanim .s46-stub { stroke-dasharray: 55.1 82.7; }
.chapanim .s46-stub { animation: s46Stub 18.70s linear 1.80s infinite; }
@keyframes s46Stub { from { stroke-dashoffset: 137.8; } to { stroke-dashoffset: 0; } }
.chapanim .s46-flame { stroke-dasharray: 58.8 88.2; }
.chapanim .s46-flame { animation: s46Flame 23.10s linear 2.70s infinite; }
@keyframes s46Flame { from { stroke-dashoffset: 147.0; } to { stroke-dashoffset: 0; } }
.chapanim .s46-smoke { stroke-dasharray: 22.0 33.0; }
.chapanim .s46-smoke { animation: s46Smoke 27.50s linear 3.60s infinite; }
@keyframes s46Smoke { from { stroke-dashoffset: 55.0; } to { stroke-dashoffset: 0; } }
.chapanim .s46-gnd { stroke-dasharray: 144.0 216.0; }
.chapanim .s46-gnd { animation: s46Gnd 31.90s linear 4.50s infinite; }
@keyframes s46Gnd { from { stroke-dashoffset: 360.0; } to { stroke-dashoffset: 0; } }

/* scene 47 -- the poplars and the fire */
.chapanim .s47-pop { stroke-dasharray: 64.8 97.2; }
.chapanim .s47-pop { animation: s47Pop 11.30s linear 0.00s infinite; }
@keyframes s47Pop { from { stroke-dashoffset: 161.9; } to { stroke-dashoffset: 0; } }
.chapanim .s47-pop2 { stroke-dasharray: 77.7 116.6; }
.chapanim .s47-pop2 { animation: s47Pop2 14.90s linear 0.90s infinite; }
@keyframes s47Pop2 { from { stroke-dashoffset: 194.3; } to { stroke-dashoffset: 0; } }
.chapanim .s47-pop3 { stroke-dasharray: 59.8 89.7; }
.chapanim .s47-pop3 { animation: s47Pop3 18.70s linear 1.80s infinite; }
@keyframes s47Pop3 { from { stroke-dashoffset: 149.5; } to { stroke-dashoffset: 0; } }
.chapanim .s47-leaf { stroke-dasharray: 121.8 182.7; }
.chapanim .s47-leaf { animation: s47Leaf 23.10s linear 2.70s infinite; }
@keyframes s47Leaf { from { stroke-dashoffset: 304.5; } to { stroke-dashoffset: 0; } }
.chapanim .s47-leaf2 { stroke-dasharray: 141.6 212.4; }
.chapanim .s47-leaf2 { animation: s47Leaf2 27.50s linear 3.60s infinite; }
@keyframes s47Leaf2 { from { stroke-dashoffset: 354.0; } to { stroke-dashoffset: 0; } }
.chapanim .s47-leaf3 { stroke-dasharray: 114.4 171.5; }
.chapanim .s47-leaf3 { animation: s47Leaf3 31.90s linear 4.50s infinite; }
@keyframes s47Leaf3 { from { stroke-dashoffset: 285.9; } to { stroke-dashoffset: 0; } }
.chapanim .s47-fire { stroke-dasharray: 100.1 150.2; }
.chapanim .s47-fire { animation: s47Fire 11.61s linear 5.40s infinite; }
@keyframes s47Fire { from { stroke-dashoffset: 250.3; } to { stroke-dashoffset: 0; } }
.chapanim .s47-fire2 { stroke-dasharray: 67.7 101.5; }
.chapanim .s47-fire2 { animation: s47Fire2 15.21s linear 6.30s infinite; }
@keyframes s47Fire2 { from { stroke-dashoffset: 169.2; } to { stroke-dashoffset: 0; } }
.chapanim .s47-fire3 { stroke-dasharray: 51.1 76.7; }
.chapanim .s47-fire3 { animation: s47Fire3 19.01s linear 7.20s infinite; }
@keyframes s47Fire3 { from { stroke-dashoffset: 127.8; } to { stroke-dashoffset: 0; } }

/* scene 48 -- the locked room */
.chapanim .s48-door { stroke-dasharray: 224.0 336.0; }
.chapanim .s48-door { animation: s48Door 11.30s linear 0.00s infinite; }
@keyframes s48Door { from { stroke-dashoffset: 560.0; } to { stroke-dashoffset: 0; } }
.chapanim .s48-panel { stroke-dasharray: 106.7 160.0; }
.chapanim .s48-panel { animation: s48Panel 14.90s linear 0.90s infinite; }
@keyframes s48Panel { from { stroke-dashoffset: 266.7; } to { stroke-dashoffset: 0; } }
.chapanim .s48-lock { stroke-dasharray: 39.1 58.7; }
.chapanim .s48-lock { animation: s48Lock 18.70s linear 1.80s infinite; }
@keyframes s48Lock { from { stroke-dashoffset: 97.8; } to { stroke-dashoffset: 0; } }
.chapanim .s48-chair { stroke-dasharray: 157.2 235.9; }
.chapanim .s48-chair { animation: s48Chair 23.10s linear 2.70s infinite; }
@keyframes s48Chair { from { stroke-dashoffset: 393.1; } to { stroke-dashoffset: 0; } }
.chapanim .s48-back { stroke-dasharray: 105.8 158.7; }
.chapanim .s48-back { animation: s48Back 27.50s linear 3.60s infinite; }
@keyframes s48Back { from { stroke-dashoffset: 264.5; } to { stroke-dashoffset: 0; } }
.chapanim .s48-papers { stroke-dasharray: 56.0 84.0; }
.chapanim .s48-papers { animation: s48Papers 31.90s linear 4.50s infinite; }
@keyframes s48Papers { from { stroke-dashoffset: 140.0; } to { stroke-dashoffset: 0; } }
.chapanim .s48-gnd { stroke-dasharray: 144.0 216.0; }
.chapanim .s48-gnd { animation: s48Gnd 11.61s linear 5.40s infinite; }
@keyframes s48Gnd { from { stroke-dashoffset: 360.0; } to { stroke-dashoffset: 0; } }

/* scene 49 -- the chimney stack */
.chapanim .s49-stack { stroke-dasharray: 213.3 320.0; }
.chapanim .s49-stack { animation: s49Stack 11.30s linear 0.00s infinite; }
@keyframes s49Stack { from { stroke-dashoffset: 533.3; } to { stroke-dashoffset: 0; } }
.chapanim .s49-cap { stroke-dasharray: 67.6 101.3; }
.chapanim .s49-cap { animation: s49Cap 14.90s linear 0.90s infinite; }
@keyframes s49Cap { from { stroke-dashoffset: 168.9; } to { stroke-dashoffset: 0; } }
.chapanim .s49-pot { stroke-dasharray: 51.6 77.3; }
.chapanim .s49-pot { animation: s49Pot 18.70s linear 1.80s infinite; }
@keyframes s49Pot { from { stroke-dashoffset: 128.9; } to { stroke-dashoffset: 0; } }
.chapanim .s49-pot2 { stroke-dasharray: 51.6 77.3; }
.chapanim .s49-pot2 { animation: s49Pot2 23.10s linear 2.70s infinite; }
@keyframes s49Pot2 { from { stroke-dashoffset: 128.9; } to { stroke-dashoffset: 0; } }
.chapanim .s49-rope { stroke-dasharray: 37.8 56.7; }
.chapanim .s49-rope { animation: s49Rope 27.50s linear 3.60s infinite; }
@keyframes s49Rope { from { stroke-dashoffset: 94.6; } to { stroke-dashoffset: 0; } }
.chapanim .s49-noose { stroke-dasharray: 66.8 100.2; }
.chapanim .s49-noose { animation: s49Noose 31.90s linear 4.50s infinite; }
@keyframes s49Noose { from { stroke-dashoffset: 167.0; } to { stroke-dashoffset: 0; } }
.chapanim .s49-roof { stroke-dasharray: 147.6 221.4; }
.chapanim .s49-roof { animation: s49Roof 11.61s linear 5.40s infinite; }
@keyframes s49Roof { from { stroke-dashoffset: 368.9; } to { stroke-dashoffset: 0; } }

/* scene 50 -- the will */
.chapanim .s50-sheet { stroke-dasharray: 449.4 674.1; }
.chapanim .s50-sheet { animation: s50Sheet 11.30s linear 0.00s infinite; }
@keyframes s50Sheet { from { stroke-dashoffset: 1123.5; } to { stroke-dashoffset: 0; } }
.chapanim .s50-fold { stroke-dasharray: 127.7 191.6; }
.chapanim .s50-fold { animation: s50Fold 14.90s linear 0.90s infinite; }
@keyframes s50Fold { from { stroke-dashoffset: 319.3; } to { stroke-dashoffset: 0; } }
.chapanim .s50-l0 { stroke-dasharray: 100.7 151.0; }
.chapanim .s50-l0 { animation: s50L0 18.70s linear 1.80s infinite; }
@keyframes s50L0 { from { stroke-dashoffset: 251.7; } to { stroke-dashoffset: 0; } }
.chapanim .s50-l1 { stroke-dasharray: 68.8 103.1; }
.chapanim .s50-l1 { animation: s50L1 23.10s linear 2.70s infinite; }
@keyframes s50L1 { from { stroke-dashoffset: 171.9; } to { stroke-dashoffset: 0; } }
.chapanim .s50-l2 { stroke-dasharray: 100.7 151.0; }
.chapanim .s50-l2 { animation: s50L2 27.50s linear 3.60s infinite; }
@keyframes s50L2 { from { stroke-dashoffset: 251.7; } to { stroke-dashoffset: 0; } }
.chapanim .s50-l3 { stroke-dasharray: 68.8 103.1; }
.chapanim .s50-l3 { animation: s50L3 31.90s linear 4.50s infinite; }
@keyframes s50L3 { from { stroke-dashoffset: 171.9; } to { stroke-dashoffset: 0; } }
.chapanim .s50-l4 { stroke-dasharray: 100.7 151.0; }
.chapanim .s50-l4 { animation: s50L4 11.61s linear 5.40s infinite; }
@keyframes s50L4 { from { stroke-dashoffset: 251.7; } to { stroke-dashoffset: 0; } }
.chapanim .s50-l5 { stroke-dasharray: 68.8 103.1; }
.chapanim .s50-l5 { animation: s50L5 15.21s linear 6.30s infinite; }
@keyframes s50L5 { from { stroke-dashoffset: 171.9; } to { stroke-dashoffset: 0; } }
.chapanim .s50-seal { stroke-dasharray: 69.1 103.6; }
.chapanim .s50-seal { animation: s50Seal 19.01s linear 7.20s infinite; }
@keyframes s50Seal { from { stroke-dashoffset: 172.7; } to { stroke-dashoffset: 0; } }
.chapanim .s50-ribbon { stroke-dasharray: 20.8 31.2; }
.chapanim .s50-ribbon { animation: s50Ribbon 23.41s linear 8.10s infinite; }
@keyframes s50Ribbon { from { stroke-dashoffset: 52.0; } to { stroke-dashoffset: 0; } }

/* scene 51 -- the condemned cell */
.chapanim .s51-win { stroke-dasharray: 202.7 304.0; }
.chapanim .s51-win { animation: s51Win 11.30s linear 0.00s infinite; }
@keyframes s51Win { from { stroke-dashoffset: 506.7; } to { stroke-dashoffset: 0; } }
.chapanim .s51-bar { stroke-dasharray: 42.7 64.0; }
.chapanim .s51-bar { animation: s51Bar 14.90s linear 0.90s infinite; }
@keyframes s51Bar { from { stroke-dashoffset: 106.7; } to { stroke-dashoffset: 0; } }
.chapanim .s51-bar2 { stroke-dasharray: 42.7 64.0; }
.chapanim .s51-bar2 { animation: s51Bar2 18.70s linear 1.80s infinite; }
@keyframes s51Bar2 { from { stroke-dashoffset: 106.7; } to { stroke-dashoffset: 0; } }
.chapanim .s51-bar3 { stroke-dasharray: 42.7 64.0; }
.chapanim .s51-bar3 { animation: s51Bar3 23.10s linear 2.70s infinite; }
@keyframes s51Bar3 { from { stroke-dashoffset: 106.7; } to { stroke-dashoffset: 0; } }
.chapanim .s51-light { stroke-dasharray: 37.7 56.6; }
.chapanim .s51-light { animation: s51Light 27.50s linear 3.60s infinite; }
@keyframes s51Light { from { stroke-dashoffset: 94.3; } to { stroke-dashoffset: 0; } }
.chapanim .s51-light2 { stroke-dasharray: 37.7 56.6; }
.chapanim .s51-light2 { animation: s51Light2 31.90s linear 4.50s infinite; }
@keyframes s51Light2 { from { stroke-dashoffset: 94.3; } to { stroke-dashoffset: 0; } }
.chapanim .s51-bench { stroke-dasharray: 163.6 245.3; }
.chapanim .s51-bench { animation: s51Bench 11.61s linear 5.40s infinite; }
@keyframes s51Bench { from { stroke-dashoffset: 408.9; } to { stroke-dashoffset: 0; } }
.chapanim .s51-gnd { stroke-dasharray: 144.0 216.0; }
.chapanim .s51-gnd { animation: s51Gnd 15.21s linear 6.30s infinite; }
@keyframes s51Gnd { from { stroke-dashoffset: 360.0; } to { stroke-dashoffset: 0; } }

/* scene 52 -- the marble tablet */
.chapanim .s52-arch { stroke-dasharray: 86.6 129.8; }
.chapanim .s52-arch { animation: s52Arch 11.30s linear 0.00s infinite; }
@keyframes s52Arch { from { stroke-dashoffset: 216.4; } to { stroke-dashoffset: 0; } }
.chapanim .s52-tab { stroke-dasharray: 245.3 368.0; }
.chapanim .s52-tab { animation: s52Tab 14.90s linear 0.90s infinite; }
@keyframes s52Tab { from { stroke-dashoffset: 613.3; } to { stroke-dashoffset: 0; } }
.chapanim .s52-inner { stroke-dasharray: 181.3 272.0; }
.chapanim .s52-inner { animation: s52Inner 18.70s linear 1.80s infinite; }
@keyframes s52Inner { from { stroke-dashoffset: 453.3; } to { stroke-dashoffset: 0; } }
.chapanim .s52-rule { stroke-dasharray: 33.8 50.7; }
.chapanim .s52-rule { animation: s52Rule 23.10s linear 2.70s infinite; }
@keyframes s52Rule { from { stroke-dashoffset: 84.4; } to { stroke-dashoffset: 0; } }
.chapanim .s52-altar { stroke-dasharray: 216.9 325.3; }
.chapanim .s52-altar { animation: s52Altar 27.50s linear 3.60s infinite; }
@keyframes s52Altar { from { stroke-dashoffset: 542.2; } to { stroke-dashoffset: 0; } }
.chapanim .s52-gnd { stroke-dasharray: 144.0 216.0; }
.chapanim .s52-gnd { animation: s52Gnd 31.90s linear 4.50s infinite; }
@keyframes s52Gnd { from { stroke-dashoffset: 360.0; } to { stroke-dashoffset: 0; } }


/* ---------- Oliver Twist: the drawing above, the argument below ----------
   Dickens did not name his chapters, he argued them, and the longest of these
   arguments runs to a hundred and ninety-two characters. Centred on the page
   a block that long runs straight through the drawing, so the page is divided
   instead: the top half belongs to the drawing and the bottom half to the
   title, and the drawings are generated against the same number.

   The division is made with padding rather than by pinning the label's top
   edge, and the difference matters on a narrow screen. Pinned, a title sets
   more lines as the measure narrows and grows downward out of the page, which
   is clipped stock. Centred inside the lower half it grows in both directions
   from the middle of the space it has, so it has twice as far to go before it
   reaches an edge, and it reaches both edges at once rather than silently
   losing its last line.                                                    */
.intropage { justify-content: center; padding-top: 52.1%; }
.intropage .intro-label { padding: 0 11%; }
.intropage .il-txt { font-size: 1.24em; line-height: 1.42; }


/* oliver 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, #090807 0%, #1e1a15 52%, #090807 100%); }
.cover-front .wash { animation: cvFireA 6.40s ease-out 0.00s infinite; }
@keyframes cvFireA { 0%,100% { opacity: .82; } 34% { opacity: 1; } 52% { opacity: .70; } 74% { opacity: .95; } }
.cover-front .spec { animation: cvFireB 6.40s ease-out 0.00s infinite; }
@keyframes cvFireB { 0%,100% { opacity: .82; } 34% { opacity: 1; } 52% { opacity: .70; } 74% { opacity: .95; } }
.cover-front .m0 { transform-box: fill-box; transform-origin: 50% 50%; }
.cover-front .m0 { animation: cvMote0 17.00s linear 0.00s infinite; }
@keyframes cvMote0 { 0%   { transform: translate(0,0); opacity: .18; } 26%  { opacity: .55; } 50%  { transform: translate(26px, -34px); opacity: .42; } 78%  { opacity: .50; } 100% { transform: translate(58px, -76px); opacity: .16; } }
.cover-front .m1 { transform-box: fill-box; transform-origin: 50% 50%; }
.cover-front .m1 { animation: cvMote1 23.30s linear 3.10s infinite; }
@keyframes cvMote1 { 0%   { transform: translate(0,0); opacity: .18; } 26%  { opacity: .55; } 50%  { transform: translate(35px, -42px); opacity: .42; } 78%  { opacity: .50; } 100% { transform: translate(72px, -88px); opacity: .16; } }
.cover-front .m2 { transform-box: fill-box; transform-origin: 50% 50%; }
.cover-front .m2 { animation: cvMote2 29.60s linear 6.20s infinite; }
@keyframes cvMote2 { 0%   { transform: translate(0,0); opacity: .18; } 26%  { opacity: .55; } 50%  { transform: translate(44px, -50px); opacity: .42; } 78%  { opacity: .50; } 100% { transform: translate(86px, -100px); opacity: .16; } }
.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 .byl { opacity:0; animation: cvByl 1.20s ease-out 1.28s 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; } }
