/* Generated by build.py from art/out/*.css — do not edit.
   These rules live here rather than inline because the site's CSP has no
   'unsafe-inline' in style-src and refuses inline <style> blocks outright. */

/* ---------------- coal-headframe ---------------- */
html,body{background:#0a0a0a}
.hf-svg{display:block;width:100%;height:auto}
.hf-svg text{font-family:"JetBrains Mono",ui-monospace,SFMono-Regular,Menlo,monospace;
  letter-spacing:.06em;text-transform:uppercase;fill:#7d7a76;font-size:11.5px}
.hf-svg .hf-dim{fill:#7d7a76;opacity:.62}

/* stroke system: hairline / far steel / near steel / heavy member */
.hf-h {fill:none;stroke:#1c1b1a;stroke-width:1}
.hf-a {fill:none;stroke:#2a2826;stroke-width:1.1}
.hf-b {fill:none;stroke:#7d7a76;stroke-width:1.5}
.hf-c {fill:none;stroke:#7d7a76;stroke-width:2.4;stroke-linecap:square}
.hf-r {fill:none;stroke:#7d7a76;stroke-width:1.5}
.hf-rf{fill:none;stroke:#7d7a76;stroke-width:1.3;opacity:.6}
.hf-cr{fill:none;stroke:#7d7a76;stroke-width:.8;opacity:.5}
.hf-sk{fill:#0a0a0a;stroke:#7d7a76;stroke-width:1.1}
.hf-fill{fill:#0a0a0a}

/* motion */
.hf-wA{transform-box:view-box;transform-origin:372px 332px;animation:hf-spinA 11.1s linear infinite}
.hf-wB{transform-box:view-box;transform-origin:418px 268px;animation:hf-spinB 8.4s linear infinite}
@keyframes hf-spinA{to{transform:rotate(-360deg)}}
@keyframes hf-spinB{to{transform:rotate(360deg)}}

.hf-cageA{transform-box:view-box;animation:hf-hoistA 7.2s cubic-bezier(.42,0,.58,1) infinite}
.hf-cageB{transform-box:view-box;animation:hf-hoistB 7.2s cubic-bezier(.42,0,.58,1) infinite}
@keyframes hf-hoistA{0%,3%{transform:translateY(0)}34%,60%{transform:translateY(400px)}93%,100%{transform:translateY(0)}}
@keyframes hf-hoistB{0%,30%{transform:translateY(374px)}58%,70%{transform:translateY(0)}96%,100%{transform:translateY(374px)}}

.hf-glow{animation:hf-breathe 9s ease-in-out infinite}
@keyframes hf-breathe{0%,100%{opacity:.84}50%{opacity:1}}

.hf-d{transform-box:view-box;opacity:.16;animation-iteration-count:infinite;animation-timing-function:linear}
.hf-dA{animation-name:hf-driftA}
.hf-dB{animation-name:hf-driftB}
.hf-dC{animation-name:hf-driftC}
@keyframes hf-driftA{0%{transform:translate(0,0);opacity:0}12%{opacity:.30}72%{opacity:.22}100%{transform:translate(264px,-92px);opacity:0}}
@keyframes hf-driftB{0%{transform:translate(0,0);opacity:0}18%{opacity:.22}70%{opacity:.15}100%{transform:translate(-196px,-134px);opacity:0}}
@keyframes hf-driftC{0%{transform:translate(0,0);opacity:0}20%{opacity:.18}66%{opacity:.13}100%{transform:translate(158px,124px);opacity:0}}

/* small screens: drop the fine surveyor numerals, show coarse type, thicken line */
.hf-coarse{display:none}
@media (max-width:640px){
  .hf-fine{display:none}
  .hf-coarse{display:block}
  .hf-h{stroke-width:1.7}
  .hf-a{stroke-width:1.9}
  .hf-b{stroke-width:2.4}
  .hf-c{stroke-width:3.6}
  .hf-r{stroke-width:2.2}
  .hf-rf{stroke-width:1.9}
  .hf-cr{stroke-width:1.5}
  .hf-sk{stroke-width:1.9}
}
@media (prefers-reduced-motion: reduce){*{animation:none !important}}
/* hoisted from style="" attributes — CSP refuses those */
.headframi1{animation-duration:26s;animation-delay:-4s}
.headframi2{animation-duration:34s;animation-delay:-19s}
.headframi3{animation-duration:31s;animation-delay:-11s}
.headframi4{animation-duration:29s;animation-delay:-25s}
.headframi5{animation-duration:24s;animation-delay:-7s}
.headframi6{animation-duration:38s;animation-delay:-30s}
.headframi7{animation-duration:27s;animation-delay:-15s}
.headframi8{animation-duration:33s;animation-delay:-2s}
.headframi9{animation-duration:22s;animation-delay:-13s}
.headframi10{animation-duration:36s;animation-delay:-9s}
.headframi11{animation-duration:30s;animation-delay:-22s}
.headframi12{font-size:27px}
.headframi13{font-size:25px}

/* ---------------- coal-pickaxe ---------------- */
html,body{background:#0a0a0a}
.pk-svg{display:block;width:100%;height:auto}
.pk-svg text{font-family:"JetBrains Mono",ui-monospace,SFMono-Regular,Menlo,monospace;
  letter-spacing:.06em;text-transform:uppercase;fill:#7d7a76;font-size:11.5px}
.pk-svg .pk-dim{opacity:.6}

/* stroke system: rock hairline / cleat / lit rock edge / rim light / hot rim */
.pk-h  {fill:none;stroke:#1c1b1a;stroke-width:.8}
.pk-h2 {fill:none;stroke:#2a2826;stroke-width:1}
.pk-lit{fill:none;stroke:#7d7a76;stroke-width:1.1;opacity:.5;stroke-linecap:round}
.pk-rim{fill:none;stroke:#e8e6e3;stroke-width:1.6;opacity:.8;stroke-linecap:round}
.pk-rim2{fill:none;stroke:#a5a29e;stroke-width:2.6;opacity:.3;stroke-linecap:round}
.pk-crease{fill:none;stroke:#2a2826;stroke-width:1.2;stroke-linecap:round}

/* ---------- motion: master loop 4.8 s = three blows of 1.6 s ---------- */
.pk-body {transform-box:view-box;transform-origin:285px 500px;animation:pk-drive 4.8s infinite}
.pk-torso{transform-box:view-box;transform-origin:285px 382px;animation:pk-lean  4.8s infinite}
.pk-arm  {transform-box:view-box;transform-origin:300px 258px;animation:pk-swing 4.8s infinite}
.pk-lag  {animation-delay:.055s}

@keyframes pk-swing{
  0%,33.333%,66.667%     {transform:rotate(-62deg); animation-timing-function:cubic-bezier(.25,.6,.35,1)}
  15%,48.333%,81.667%    {transform:rotate(-112deg);animation-timing-function:cubic-bezier(.9,0,.96,.34)}
  20.6%,53.933%,87.267%  {transform:rotate(0deg);   animation-timing-function:cubic-bezier(.15,.75,.4,1)}
  22.2%,55.533%,88.867%  {transform:rotate(9deg);   animation-timing-function:cubic-bezier(.4,0,.5,1)}
  27%,60.333%,93.667%    {transform:rotate(-28deg); animation-timing-function:cubic-bezier(.45,0,.55,1)}
  100%                   {transform:rotate(-62deg)}
}
@keyframes pk-lean{
  0%,33.333%,66.667%     {transform:rotate(-4deg);  animation-timing-function:cubic-bezier(.25,.6,.35,1)}
  15%,48.333%,81.667%    {transform:rotate(-10deg); animation-timing-function:cubic-bezier(.9,0,.96,.34)}
  20.6%,53.933%,87.267%  {transform:rotate(0deg);   animation-timing-function:cubic-bezier(.15,.75,.4,1)}
  22.2%,55.533%,88.867%  {transform:rotate(3.5deg); animation-timing-function:cubic-bezier(.4,0,.5,1)}
  27%,60.333%,93.667%    {transform:rotate(-2deg);  animation-timing-function:cubic-bezier(.45,0,.55,1)}
  100%                   {transform:rotate(-4deg)}
}
@keyframes pk-drive{
  0%,33.333%,66.667%     {transform:translateY(0);    animation-timing-function:cubic-bezier(.25,.6,.35,1)}
  15%,48.333%,81.667%    {transform:translateY(-4px); animation-timing-function:cubic-bezier(.9,0,.96,.34)}
  20.6%,53.933%,87.267%  {transform:translateY(3px);  animation-timing-function:cubic-bezier(.15,.75,.4,1)}
  22.2%,55.533%,88.867%  {transform:translateY(2px);  animation-timing-function:cubic-bezier(.4,0,.5,1)}
  27%,60.333%,93.667%    {transform:translateY(-1px); animation-timing-function:cubic-bezier(.45,0,.55,1)}
  100%                   {transform:translateY(0)}
}

/* smear of the steel, only while the blow is falling */
.pk-trail{opacity:0;animation:pk-trailop 4.8s linear infinite}
@keyframes pk-trailop{
  0%,15.5%,25%,33.333%,48.833%,58.333%,66.667%,82.167%,91.667%,100%{opacity:0}
  18%,51.333%,84.667%{opacity:.34}
  20.8%,54.133%,87.467%{opacity:.2}
}

/* the spark, struck once a blow */
.pk-spark{transform-box:view-box;transform-origin:525px 273px;animation:pk-spark 4.8s linear infinite}
@keyframes pk-spark{
  0%,20.4%,33.333%,53.7%,66.667%,87.05%,100%{opacity:0;transform:scale(.3)}
  20.6%,53.933%,87.267%{opacity:1;transform:scale(1)}
  21.7%,55.033%,88.367%{opacity:.8;transform:scale(1.55)}
  24.2%,57.533%,90.867%{opacity:0;transform:scale(2.15)}
}

/* chips: one burst a blow, ballistic, tumbling */
.pk-chip{transform-box:view-box;transform-origin:0 0;animation-duration:1.6s;
  animation-iteration-count:infinite;animation-timing-function:linear}
.pk-spin{transform-box:view-box;transform-origin:0 0;animation-name:pk-spin;
  animation-iteration-count:infinite;animation-timing-function:linear}
@keyframes pk-spin{to{transform:rotate(360deg)}}
.pk-sa{animation-duration:.8s}
.pk-sb{animation-duration:1.6s;animation-direction:reverse}
.pk-sc{animation-duration:.6s}
.pk-sd{animation-duration:1.2s;animation-direction:reverse}
.pk-se{animation-duration:2.4s}

@keyframes pk-c1{0%,61.8%{opacity:0;transform:translate(95px,20px)}62%{opacity:1;transform:translate(95px,20px)}
 71.5%{transform:translate(48px,-23px)}81%{transform:translate(0,0)}90.5%{opacity:1;transform:translate(-48px,88px)}100%{opacity:0;transform:translate(-95px,240px)}}
@keyframes pk-c2{0%,61.8%{opacity:0;transform:translate(60px,50px)}62%{opacity:1;transform:translate(60px,50px)}
 71.5%{transform:translate(30px,-10px)}81%{transform:translate(0,0)}90.5%{opacity:1;transform:translate(-30px,80px)}100%{opacity:0;transform:translate(-60px,230px)}}
@keyframes pk-c3{0%,61.8%{opacity:0;transform:translate(110px,-5px)}62%{opacity:1;transform:translate(110px,-5px)}
 71.5%{transform:translate(55px,-28px)}81%{transform:translate(0,0)}90.5%{opacity:1;transform:translate(-55px,78px)}100%{opacity:0;transform:translate(-110px,205px)}}
@keyframes pk-c4{0%,61.8%{opacity:0;transform:translate(30px,60px)}62%{opacity:1;transform:translate(30px,60px)}
 71.5%{transform:translate(15px,-8px)}81%{transform:translate(0,0)}90.5%{opacity:1;transform:translate(-15px,83px)}100%{opacity:0;transform:translate(-30px,240px)}}
@keyframes pk-c5{0%,61.8%{opacity:0;transform:translate(-20px,15px)}62%{opacity:1;transform:translate(-20px,15px)}
 71.5%{transform:translate(-10px,-21px)}81%{transform:translate(0,0)}90.5%{opacity:1;transform:translate(10px,79px)}100%{opacity:0;transform:translate(20px,215px)}}
@keyframes pk-c6{0%,61.8%{opacity:0;transform:translate(75px,-15px)}62%{opacity:1;transform:translate(75px,-15px)}
 71.5%{transform:translate(38px,-26px)}81%{transform:translate(0,0)}90.5%{opacity:1;transform:translate(-38px,64px)}100%{opacity:0;transform:translate(-75px,165px)}}
@keyframes pk-c7{0%,61.8%{opacity:0;transform:translate(100px,55px)}62%{opacity:1;transform:translate(100px,55px)}
 71.5%{transform:translate(50px,-1px)}81%{transform:translate(0,0)}90.5%{opacity:1;transform:translate(-50px,59px)}100%{opacity:0;transform:translate(-100px,175px)}}
@keyframes pk-c8{0%,61.8%{opacity:0;transform:translate(45px,5px)}62%{opacity:1;transform:translate(45px,5px)}
 71.5%{transform:translate(23px,-21px)}81%{transform:translate(0,0)}90.5%{opacity:1;transform:translate(-23px,69px)}100%{opacity:0;transform:translate(-45px,185px)}}
@keyframes pk-c9{0%,61.8%{opacity:0;transform:translate(-35px,0)}62%{opacity:1;transform:translate(-35px,0)}
 71.5%{transform:translate(-18px,-20px)}81%{transform:translate(0,0)}90.5%{opacity:1;transform:translate(18px,60px)}100%{opacity:0;transform:translate(35px,160px)}}
@keyframes pk-c10{0%,61.8%{opacity:0;transform:translate(120px,30px)}62%{opacity:1;transform:translate(120px,30px)}
 71.5%{transform:translate(60px,-10px)}81%{transform:translate(0,0)}90.5%{opacity:1;transform:translate(-60px,60px)}100%{opacity:0;transform:translate(-120px,170px)}}
@keyframes pk-c11{0%,61.8%{opacity:0;transform:translate(20px,70px)}62%{opacity:1;transform:translate(20px,70px)}
 71.5%{transform:translate(10px,-5px)}81%{transform:translate(0,0)}90.5%{opacity:1;transform:translate(-10px,85px)}100%{opacity:0;transform:translate(-20px,250px)}}

/* dust */
.pk-dust{transform-box:view-box;transform-origin:0 0;opacity:.3;
  animation:pk-dust 1.6s ease-out infinite}
@keyframes pk-dust{
  0%,61.8%{opacity:0;transform:translate(8px,12px) scale(.3)}
  68%{opacity:.4}
  84%{opacity:.26}
  100%{opacity:0;transform:translate(-34px,-30px) scale(1.95)}
}

/* the bites; they stay cut, then the loop resets */
.pk-n1{opacity:0;animation:pk-n1 4.8s steps(1,end) infinite}
.pk-n2{opacity:0;animation:pk-n2 4.8s steps(1,end) infinite}
.pk-n3{opacity:1;animation:pk-n3 4.8s steps(1,end) infinite}
@keyframes pk-n1{0%,20.5%{opacity:0}20.6%,96%{opacity:1}96.5%,100%{opacity:0}}
@keyframes pk-n2{0%,53.8%{opacity:0}53.933%,96%{opacity:1}96.5%,100%{opacity:0}}
@keyframes pk-n3{0%,87.1%{opacity:0}87.267%,96%{opacity:1}96.5%,100%{opacity:0}}

.pk-lampglow{animation:pk-flick 1.2s ease-in-out infinite}
@keyframes pk-flick{0%,100%{opacity:.9}28%{opacity:1}54%{opacity:.8}76%{opacity:.97}}

.pk-coarse{display:none}
@media (max-width:640px){
  .pk-fine{display:none}
  .pk-coarse{display:block}
  .pk-h{stroke-width:1.4}
  .pk-h2{stroke-width:1.7}
  .pk-lit{stroke-width:1.9}
  .pk-rim{stroke-width:2.7}
  .pk-rim2{stroke-width:4}
  .pk-crease{stroke-width:2}
}
@media (prefers-reduced-motion: reduce){*{animation:none !important}}
/* hoisted from style="" attributes — CSP refuses those */
.pickaxei1{animation-delay:.02s}
.pickaxei2{animation-delay:.09s}
.pickaxei3{animation-delay:.15s}
.pickaxei4{animation-name:pk-c1}
.pickaxei5{animation-name:pk-c2}
.pickaxei6{animation-name:pk-c3}
.pickaxei7{animation-name:pk-c4}
.pickaxei8{animation-name:pk-c5}
.pickaxei9{animation-name:pk-c6}
.pickaxei10{animation-name:pk-c7}
.pickaxei11{animation-name:pk-c8}
.pickaxei12{animation-name:pk-c9}
.pickaxei13{animation-name:pk-c10}
.pickaxei14{animation-name:pk-c11}
.pickaxei15{font-size:9.5px}
.pickaxei16{font-size:28px}
.pickaxei17{font-size:23px}

/* ---------------- coal-emblem ---------------- */
html,body{background:#0a0a0a}
.em-block .em-full{display:block;width:100%;max-width:260px;height:auto;margin:0 auto}
.em-block .em-small{display:block;width:64px;height:auto;margin:0 auto}
.em-block .em-mono{font-family:"JetBrains Mono",ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}
.em-block .em-cap{font-family:"JetBrains Mono",ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
  font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:#7d7a76;text-align:center;margin:16px 0 0}
.em-block .em-rule{height:1px;background:#1c1b1a;margin:42px 0 40px}
.em-block .em-sweep{animation:em-sweep 6.4s cubic-bezier(.35,.06,.65,.94) infinite}
.em-block .em-sweep-s{animation:em-sweep-s 6.4s cubic-bezier(.35,.06,.65,.94) infinite}
@keyframes em-sweep{0%,7%{transform:translateX(0)}93%,100%{transform:translateX(436px)}}
@keyframes em-sweep-s{0%,7%{transform:translateX(0)}93%,100%{transform:translateX(114px)}}
@media (prefers-reduced-motion: reduce){*{animation:none !important}}

/* ---------------- coal-lumps ---------------- */
html,body{background:#0a0a0a}
.lm-wrap{--lm-mono:"JetBrains Mono",ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}
.lm-sprite{position:absolute;width:0;height:0;overflow:hidden}
.lm-svg{display:block;width:100%;height:auto;font-family:var(--lm-mono)}
.lm-mob{display:none}
@media (max-width:640px){.lm-desk{display:none}.lm-mob{display:block}}
.lm-t{font-size:12.5px;letter-spacing:.06em;fill:#a5a29e}
.lm-s{font-size:11px;letter-spacing:.06em;fill:#7d7a76}
.lm-c{font-size:11px;letter-spacing:.06em;fill:#7d7a76}
.lm-c2{font-size:11px;letter-spacing:.06em;fill:#4f4c48}
.lm-n{font-size:11px;letter-spacing:.06em;fill:#35322f}
.lm-mob .lm-t,.lm-mob .lm-s,.lm-mob .lm-c{font-size:12.5px}
.lm-sweep{animation:lm-travel 8s linear infinite;will-change:transform}
.lm-sweepm{animation:lm-travelm 8s linear infinite;will-change:transform}
@keyframes lm-travel{from{transform:translateX(0)}to{transform:translateX(1526px)}}
@keyframes lm-travelm{from{transform:translateX(0)}to{transform:translateX(800px)}}
@media (prefers-reduced-motion:reduce){
  *{animation:none !important}
  .lm-sweep{transform:translateX(800px)}
  .lm-sweepm{transform:translateX(380px)}
}

/* ---------------- coal-seam ---------------- */
html,body{background:#0a0a0a}
.sm-svg{display:block;width:100%;height:auto}
.sm-svg text{font-family:"JetBrains Mono",ui-monospace,SFMono-Regular,Menlo,monospace;
  letter-spacing:.06em;text-transform:uppercase}
.sm-narrow{display:none}
@media (max-width:640px){.sm-wide{display:none}.sm-narrow{display:block}}

.sm-gnA{opacity:.085;animation:sm-gA 8s ease-in-out infinite}
.sm-gnB{opacity:.035;animation:sm-gB 8s ease-in-out infinite}
.sm-lmA{opacity:.11;animation:sm-gC 8s ease-in-out infinite}
.sm-lmB{opacity:.045;animation:sm-gD 8s ease-in-out infinite}
@keyframes sm-gA{0%,100%{opacity:.085}50%{opacity:.03}}
@keyframes sm-gB{0%,100%{opacity:.035}50%{opacity:.09}}
@keyframes sm-gC{0%,100%{opacity:.11}50%{opacity:.045}}
@keyframes sm-gD{0%,100%{opacity:.045}50%{opacity:.11}}

.sm-cageA{transform-box:view-box;animation:sm-hoistA 8s cubic-bezier(.45,0,.55,1) infinite}
.sm-cageB{transform-box:view-box;animation:sm-hoistB 8s cubic-bezier(.45,0,.55,1) infinite}
@keyframes sm-hoistA{0%,4%{transform:translateY(0)}
  46%,54%{transform:translateY(431.19px)}96%,100%{transform:translateY(0)}}
@keyframes sm-hoistB{0%,4%{transform:translateY(0)}
  46%,54%{transform:translateY(-431.19px)}96%,100%{transform:translateY(0)}}
.sm-narrow .sm-cageA{animation-name:sm-hoistAn}
.sm-narrow .sm-cageB{animation-name:sm-hoistBn}
@keyframes sm-hoistAn{0%,4%{transform:translateY(0)}
  46%,54%{transform:translateY(407.1px)}96%,100%{transform:translateY(0)}}
@keyframes sm-hoistBn{0%,4%{transform:translateY(0)}
  46%,54%{transform:translateY(-407.1px)}96%,100%{transform:translateY(0)}}

.sm-whA{transform-box:view-box;animation:sm-spinA 8s cubic-bezier(.45,0,.55,1) infinite}
.sm-whB{transform-box:view-box;animation:sm-spinB 8s cubic-bezier(.45,0,.55,1) infinite}
@keyframes sm-spinA{0%,4%{transform:rotate(0)}46%,54%{transform:rotate(228deg)}
  96%,100%{transform:rotate(0)}}
@keyframes sm-spinB{0%,4%{transform:rotate(0)}46%,54%{transform:rotate(-228deg)}
  96%,100%{transform:rotate(0)}}

.sm-flick{animation:sm-flick 4s linear infinite}
@keyframes sm-flick{
  0%{opacity:.85}6%{opacity:.85}7%{opacity:.44}11%{opacity:.92}12%{opacity:.9}
  19%{opacity:.9}20%{opacity:.38}22%{opacity:.8}31%{opacity:.78}
  33%{opacity:.98}34%{opacity:.55}36%{opacity:.86}48%{opacity:.84}
  50%{opacity:.3}52%{opacity:.74}61%{opacity:.8}63%{opacity:.46}
  65%{opacity:.94}74%{opacity:.88}76%{opacity:.4}78%{opacity:.8}
  88%{opacity:.82}90%{opacity:.52}92%{opacity:.9}100%{opacity:.85}}

@media (prefers-reduced-motion: reduce){*{animation:none !important}}
/* hoisted from style="" attributes — CSP refuses those */
.seami1{transform-origin:148px 65.94px}
.seami2{transform-origin:158.5px 54.05px}
.seami3{transform-origin:105.17px 67.02px}
.seami4{transform-origin:108.2px 60.48px}

/* ---------------- coal-checks ---------------- */
html,body{background:#0a0a0a}
.ck-svg{display:block;width:100%;height:auto}
.ck-svg text{font-family:"JetBrains Mono",ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:.06em;text-transform:uppercase;fill:#7d7a76;font-size:11.5px}
.ck-svg text.ck-lab{fill:#a5a29e;font-size:12.5px}
.ck-svg text.ck-dim{fill:#7d7a76;opacity:.68}
.ck-svg text.ck-stn{font-size:8.6px;letter-spacing:.05em;fill:#7d7a76;opacity:.4}
.ck-svg text.ck-stnb{opacity:.82;fill:#a5a29e}
.ck-svg text.ck-dd{font-size:10.6px;letter-spacing:.02em;fill:#0a0a0a;opacity:.88}
.ck-svg text.ck-dl{font-size:10.6px;letter-spacing:.02em;fill:#e8e6e3;opacity:.34}
.ck-wipe{animation:ck-wipe 1.6s cubic-bezier(.24,.66,.2,1) both}
@keyframes ck-wipe{from{transform:translateX(-1760px)}to{transform:translateX(0)}}
.ck-fade{animation:ck-fade 1.3s ease-out .5s both}
@keyframes ck-fade{from{opacity:0}}
.ck-lamp{animation:ck-fade 1.7s ease-out .1s both,ck-breathe 9.4s ease-in-out 1.9s infinite}
@keyframes ck-breathe{0%,100%{opacity:.8}50%{opacity:1}}
.ck-glint{transform:translateX(-62px);animation:ck-glint 17s linear infinite}
@keyframes ck-glint{0%{transform:translateX(-62px)}5.4%,100%{transform:translateX(62px)}}
.ck-wash{animation:ck-wash 17s linear infinite}
@keyframes ck-wash{0%{transform:translateX(0)}66%,100%{transform:translateX(1820px)}}
.ck-go,.ck-go2{transform-box:view-box;animation-name:ck-leave;animation-timing-function:ease-in-out;animation-iteration-count:infinite}
.ck-go2{animation-name:ck-leave2}
@keyframes ck-leave{0%,6%{transform:rotate(0deg) translate(0px,0px);opacity:1}6.9%{transform:rotate(-3deg) translate(-1px,-7px);opacity:1}7.9%{transform:rotate(10deg) translate(4px,-10px);opacity:1}9%{transform:rotate(-8deg) translate(-1px,-14px);opacity:1}10.1%{transform:rotate(6.5deg) translate(7px,-20px);opacity:1}11.2%{transform:rotate(-5deg) translate(12px,-30px);opacity:0.75}12.4%{transform:rotate(4deg) translate(19px,-46px);opacity:0.28}13.5%,63%{transform:rotate(2deg) translate(26px,-64px);opacity:0}64.6%{transform:rotate(-7deg) translate(-22px,-52px);opacity:0}66%{transform:rotate(-7deg) translate(-14px,-30px);opacity:0.6}67.6%{transform:rotate(6.5deg) translate(1px,-10px);opacity:1}69.4%{transform:rotate(-4.5deg) translate(0px,-3px);opacity:1}71.4%{transform:rotate(3deg) translate(0px,0px);opacity:1}73.6%{transform:rotate(-1.8deg) translate(0px,0px);opacity:1}76%{transform:rotate(1deg) translate(0px,0px);opacity:1}78.6%,100%{transform:rotate(0deg) translate(0px,0px);opacity:1}}
@keyframes ck-leave2{0%,6%{transform:rotate(0deg) translate(0px,0px);opacity:1}6.9%{transform:rotate(3deg) translate(1px,-7px);opacity:1}7.9%{transform:rotate(-10deg) translate(-4px,-10px);opacity:1}9%{transform:rotate(8deg) translate(1px,-14px);opacity:1}10.1%{transform:rotate(-6.5deg) translate(-7px,-20px);opacity:1}11.2%{transform:rotate(5deg) translate(-12px,-30px);opacity:0.75}12.4%{transform:rotate(-4deg) translate(-19px,-46px);opacity:0.28}13.5%,63%{transform:rotate(-2deg) translate(-26px,-64px);opacity:0}64.6%{transform:rotate(7deg) translate(22px,-52px);opacity:0}66%{transform:rotate(7deg) translate(14px,-30px);opacity:0.6}67.6%{transform:rotate(-6.5deg) translate(-1px,-10px);opacity:1}69.4%{transform:rotate(4.5deg) translate(0px,-3px);opacity:1}71.4%{transform:rotate(-3deg) translate(0px,0px);opacity:1}73.6%{transform:rotate(1.8deg) translate(0px,0px);opacity:1}76%{transform:rotate(-1deg) translate(0px,0px);opacity:1}78.6%,100%{transform:rotate(0deg) translate(0px,0px);opacity:1}}
.ck-numgo{animation-name:ck-numlit;animation-timing-function:ease;animation-iteration-count:infinite}
@keyframes ck-numlit{0%,11.5%{opacity:.4}13.5%,62%{opacity:.85;fill:#a5a29e}68%,100%{opacity:.4}}

.ck-m-svg{display:block;width:100%;height:auto}
.ck-m-svg text{font-family:"JetBrains Mono",ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:.06em;text-transform:uppercase;fill:#7d7a76;font-size:17.59px}
.ck-m-svg text.ck-m-lab{fill:#a5a29e;font-size:19.12px}
.ck-m-svg text.ck-m-dim{fill:#7d7a76;opacity:.68}
.ck-m-svg text.ck-m-stn{font-size:13.16px;letter-spacing:.05em;fill:#7d7a76;opacity:.4}
.ck-m-svg text.ck-m-stnb{opacity:.82;fill:#a5a29e}
.ck-m-svg text.ck-m-dd{font-size:16.22px;letter-spacing:.02em;fill:#0a0a0a;opacity:.88}
.ck-m-svg text.ck-m-dl{font-size:16.22px;letter-spacing:.02em;fill:#e8e6e3;opacity:.34}
.ck-m-wipe{animation:ck-m-wipe 1.6s cubic-bezier(.24,.66,.2,1) both}
@keyframes ck-m-wipe{from{transform:translateX(-990px)}to{transform:translateX(0)}}
.ck-m-fade{animation:ck-m-fade 1.3s ease-out .5s both}
@keyframes ck-m-fade{from{opacity:0}}
.ck-m-lamp{animation:ck-m-fade 1.7s ease-out .1s both,ck-m-breathe 9.4s ease-in-out 1.9s infinite}
@keyframes ck-m-breathe{0%,100%{opacity:.8}50%{opacity:1}}
.ck-m-glint{transform:translateX(-94px);animation:ck-m-glint 17s linear infinite}
@keyframes ck-m-glint{0%{transform:translateX(-94px)}5.4%,100%{transform:translateX(94px)}}
.ck-m-wash{animation:ck-m-wash 17s linear infinite}
@keyframes ck-m-wash{0%{transform:translateX(0)}66%,100%{transform:translateX(1000px)}}
.ck-m-go,.ck-m-go2{transform-box:view-box;animation-name:ck-m-leave;animation-timing-function:ease-in-out;animation-iteration-count:infinite}
.ck-m-go2{animation-name:ck-m-leave2}
@keyframes ck-m-leave{0%,6%{transform:rotate(0deg) translate(0px,0px);opacity:1}6.9%{transform:rotate(-3deg) translate(-1.53px,-10.71px);opacity:1}7.9%{transform:rotate(10deg) translate(6.12px,-15.3px);opacity:1}9%{transform:rotate(-8deg) translate(-1.53px,-21.42px);opacity:1}10.1%{transform:rotate(6.5deg) translate(10.71px,-30.6px);opacity:1}11.2%{transform:rotate(-5deg) translate(18.36px,-45.9px);opacity:0.75}12.4%{transform:rotate(4deg) translate(29.07px,-70.38px);opacity:0.28}13.5%,63%{transform:rotate(2deg) translate(39.78px,-97.92px);opacity:0}64.6%{transform:rotate(-7deg) translate(-33.66px,-79.56px);opacity:0}66%{transform:rotate(-7deg) translate(-21.42px,-45.9px);opacity:0.6}67.6%{transform:rotate(6.5deg) translate(1.53px,-15.3px);opacity:1}69.4%{transform:rotate(-4.5deg) translate(0px,-4.59px);opacity:1}71.4%{transform:rotate(3deg) translate(0px,0px);opacity:1}73.6%{transform:rotate(-1.8deg) translate(0px,0px);opacity:1}76%{transform:rotate(1deg) translate(0px,0px);opacity:1}78.6%,100%{transform:rotate(0deg) translate(0px,0px);opacity:1}}
@keyframes ck-m-leave2{0%,6%{transform:rotate(0deg) translate(0px,0px);opacity:1}6.9%{transform:rotate(3deg) translate(1.53px,-10.71px);opacity:1}7.9%{transform:rotate(-10deg) translate(-6.12px,-15.3px);opacity:1}9%{transform:rotate(8deg) translate(1.53px,-21.42px);opacity:1}10.1%{transform:rotate(-6.5deg) translate(-10.71px,-30.6px);opacity:1}11.2%{transform:rotate(5deg) translate(-18.36px,-45.9px);opacity:0.75}12.4%{transform:rotate(-4deg) translate(-29.07px,-70.38px);opacity:0.28}13.5%,63%{transform:rotate(-2deg) translate(-39.78px,-97.92px);opacity:0}64.6%{transform:rotate(7deg) translate(33.66px,-79.56px);opacity:0}66%{transform:rotate(7deg) translate(21.42px,-45.9px);opacity:0.6}67.6%{transform:rotate(-6.5deg) translate(-1.53px,-15.3px);opacity:1}69.4%{transform:rotate(4.5deg) translate(0px,-4.59px);opacity:1}71.4%{transform:rotate(-3deg) translate(0px,0px);opacity:1}73.6%{transform:rotate(1.8deg) translate(0px,0px);opacity:1}76%{transform:rotate(-1deg) translate(0px,0px);opacity:1}78.6%,100%{transform:rotate(0deg) translate(0px,0px);opacity:1}}
.ck-m-numgo{animation-name:ck-m-numlit;animation-timing-function:ease;animation-iteration-count:infinite}
@keyframes ck-m-numlit{0%,11.5%{opacity:.4}13.5%,62%{opacity:.85;fill:#a5a29e}68%,100%{opacity:.4}}

.ck-m-svg{display:none}
@media (max-width:640px){
  .ck-svg{display:none}
  .ck-m-svg{display:block}
}
@media (prefers-reduced-motion: reduce){*{animation:none !important}}
/* hoisted from style="" attributes — CSP refuses those */
.checksi1{animation-delay:-2.05s}
.checksi2{animation-delay:-2.52s}
.checksi3{animation-delay:-2.99s}
.checksi4{animation-delay:-3.93s}
.checksi5{animation-delay:-4.4s}
.checksi6{animation-delay:-4.86s}
.checksi7{animation-delay:-5.33s}
.checksi8{animation-duration:29s;animation-delay:6.6s}
.checksi9{transform-origin:714px 82px;animation-duration:29s;animation-delay:6.6s}
.checksi10{animation-delay:-5.8s}
.checksi11{animation-delay:-6.27s}
.checksi12{animation-delay:-6.74s}
.checksi13{animation-delay:-7.68s}
.checksi14{animation-delay:-8.14s}
.checksi15{animation-delay:-3.46s}
.checksi16{animation-duration:34s;animation-delay:0s}
.checksi17{transform-origin:410px 156px;animation-duration:34s;animation-delay:0s}
.checksi18{animation-delay:-7.21s}
.checksi19{animation-duration:41s;animation-delay:12.8s}
.checksi20{transform-origin:486px 230px;animation-duration:41s;animation-delay:12.8s}
.checksi21{animation-duration:31s;animation-delay:36.5s}
.checksi22{transform-origin:1018px 230px;animation-duration:31s;animation-delay:36.5s}
.checksi23{animation-duration:26s;animation-delay:20.4s}
.checksi24{transform-origin:790px 304px;animation-duration:26s;animation-delay:20.4s}
.checksi25{animation-duration:37s;animation-delay:28s}
.checksi26{transform-origin:562px 378px;animation-duration:37s;animation-delay:28s}
.checksi27{animation-delay:-2.64s}
.checksi28{animation-delay:-3.65s}
.checksi29{animation-delay:-5.66s}
.checksi30{animation-duration:30s;animation-delay:0s}
.checksi31{transform-origin:435px 68px;animation-duration:30s;animation-delay:0s}
.checksi32{animation-delay:-6.67s}
.checksi33{animation-duration:23s;animation-delay:9.5s}
.checksi34{transform-origin:165px 180px;animation-duration:23s;animation-delay:9.5s}
.checksi35{animation-delay:-4.66s}

/* ---------------- coal-cart ---------------- */
html,body{background:#0a0a0a}
.ct-wrap{--ct-mono:"JetBrains Mono",ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}
.ct-sprite{position:absolute;width:0;height:0;overflow:hidden}
svg.ct-fig{display:block;width:100%;height:auto;font-family:var(--ct-mono)}
svg.ct-mob{display:none}
@media (max-width:640px){svg.ct-desk{display:none}svg.ct-mob{display:block}}
.ct-t{font-size:12.5px;letter-spacing:.07em;fill:#a5a29e}
.ct-s{font-size:11px;letter-spacing:.07em;fill:#7d7a76}
.ct-n{font-size:11px;letter-spacing:.07em;fill:#35322f}
.ct-mob .ct-t{font-size:13px}.ct-mob .ct-s{font-size:12px}.ct-mob .ct-n{font-size:12px}

@keyframes ct-run{from{transform:translateX(0)}to{transform:translateX(1190px)}}
@keyframes ct-roll{from{transform:rotate(0deg)}to{transform:rotate(3543.85deg)}}
@keyframes ct-runm{from{transform:translateX(0)}to{transform:translateX(905px)}}
@keyframes ct-rollm{from{transform:rotate(0deg)}to{transform:rotate(2939.06deg)}}
@keyframes ct-scroll{from{transform:translateX(0)}to{transform:translateX(-480px)}}
@keyframes ct-rock{
  0%{transform:rotate(.30deg) translateY(0)}
  25%{transform:rotate(-.26deg) translateY(.55px)}
  50%{transform:rotate(.20deg) translateY(-.35px)}
  75%{transform:rotate(-.30deg) translateY(.50px)}
  100%{transform:rotate(.30deg) translateY(0)}}
@keyframes ct-jog{
  0%{transform:translateY(0) rotate(0deg)}
  16%{transform:translateY(-2.4px) rotate(1.4deg)}
  38%{transform:translateY(.4px) rotate(-.6deg)}
  58%{transform:translateY(-1px) rotate(.7deg)}
  80%{transform:translateY(.2px) rotate(-.2deg)}
  100%{transform:translateY(0) rotate(0deg)}}
@keyframes ct-puff{
  0%{opacity:0;transform:translate(0,0) scale(.4)}
  12%{opacity:.62}
  100%{opacity:0;transform:translate(-70px,-28px) scale(2)}}
@keyframes ct-fine{
  0%{opacity:0;transform:translate(0,0)}
  10%{opacity:.55}
  100%{opacity:0;transform:translate(-26px,60px)}}
@keyframes ct-chain{0%{transform:rotate(5deg)}50%{transform:rotate(-6deg)}100%{transform:rotate(5deg)}}

.ct-run{animation:ct-run 6.4s linear infinite}
.ct-runm{animation:ct-runm 6.4s linear infinite}
.ct-rollm{transform-box:view-box;transform-origin:0 0;animation:ct-rollm 6.4s linear infinite}
.ct-scroll{animation:ct-scroll 6.4s linear infinite}
.ct-roll{transform-box:view-box;transform-origin:0 0;animation:ct-roll 6.4s linear infinite}
.ct-rock{transform-box:view-box;transform-origin:0 0;animation:ct-rock .4s ease-in-out infinite}
.ct-jog{transform-box:view-box;transform-origin:0 0;animation:ct-jog .8s ease-in-out infinite}
.ct-chain{transform-box:view-box;transform-origin:0 0;animation:ct-chain 1.6s ease-in-out infinite}
.ct-puff{transform-box:view-box;transform-origin:0 0;animation:ct-puff 3.2s linear infinite}
.ct-fine{transform-box:view-box;transform-origin:0 0;animation:ct-fine 1.6s linear infinite}
.ct-p2{animation-delay:-.64s}.ct-p3{animation-delay:-1.28s}
.ct-p4{animation-delay:-1.92s}.ct-p5{animation-delay:-2.56s}
.ct-f2{animation-delay:-.55s}.ct-f3{animation-delay:-1.1s}

@media (prefers-reduced-motion: reduce){
  *{animation:none !important}
  .ct-run{transform:translateX(555px)}
  .ct-runm{transform:translateX(413px)}
  .ct-rollm{transform:rotate(-13deg)}
  .ct-scroll{transform:translateX(-186px)}
  .ct-roll{transform:rotate(-13deg)}
  .ct-rock{transform:rotate(.16deg)}
  .ct-jog{transform:translateY(-1.4px) rotate(.8deg)}
  .ct-fine{opacity:0}
  .ct-puff{opacity:.24;transform:translate(-12px,-5px) scale(.85)}
  .ct-p2{opacity:.30;transform:translate(-27px,-11px) scale(1.25)}
  .ct-p3{opacity:.24;transform:translate(-42px,-17px) scale(1.55)}
  .ct-p4{opacity:.15;transform:translate(-57px,-23px) scale(1.8)}
  .ct-p5{opacity:.08;transform:translate(-67px,-27px) scale(2)}
}
/* hoisted from style="" attributes — CSP refuses those */
.carti1{font-family:'JetBrains Mono',ui-monospace,monospace;letter-spacing:.09em}

/* ---------------- coal-payoffice ---------------- */
html,body{background:#0a0a0a}
.po-fig{margin:0}
.po-svg{display:block;width:100%;height:auto}
.po-narrow{display:none}
@media (max-width:640px){.po-wide{display:none}.po-narrow{display:block}}

.po-lab{font-family:"JetBrains Mono",ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;
  letter-spacing:.06em;fill:#7d7a76}
.po-lab .po-n{fill:#e8e6e3}
.po-labn{font-size:14px}
.po-cap{font-family:"JetBrains Mono",ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11px;
  letter-spacing:.06em;fill:#7d7a76;opacity:.7}
.po-mini{font-family:"JetBrains Mono",ui-monospace,SFMono-Regular,Menlo,monospace;font-size:8px;
  letter-spacing:.06em;fill:#a5a29e;opacity:.5}

/* ---- entrance: the room comes up, the lamp catches, the page falls open ---- */
@keyframes po-lift{from{opacity:.62}to{opacity:1}}
.po-lit{animation:po-lift 1s ease-out .05s both}

@keyframes po-ignite{0%{opacity:0}9%{opacity:.5}16%{opacity:.14}30%{opacity:.9}
 39%{opacity:.36}52%{opacity:1}64%{opacity:.82}78%{opacity:1}100%{opacity:1}}
.po-glow{animation:po-ignite 1.15s ease-out .18s both}

@keyframes po-openpage{0%{transform:scaleX(.05);opacity:.15}26%{opacity:1}
 58%{transform:scaleX(1.05)}78%{transform:scaleX(.982)}100%{transform:scaleX(1);opacity:1}}
.po-pageR{transform-box:fill-box;transform-origin:0% 50%;
  animation:po-openpage .92s cubic-bezier(.2,.82,.28,1) .38s both}
@keyframes po-fade{from{opacity:0}to{opacity:1}}
.po-book{animation:po-fade .55s ease-out .22s both}
@keyframes po-penin{from{opacity:0;transform:translate(7px,-13px) rotate(-3deg)}
 to{opacity:1;transform:none}}
.po-pen{transform-box:fill-box;transform-origin:50% 50%;animation:po-penin .6s cubic-bezier(.2,.8,.3,1) 1.02s both}

/* ---- the deal: one coin at a time, fast at first, slowing ---- */
@keyframes po-drop{0%{opacity:0;transform:translateY(-82px)}20%{opacity:1}
 56%{transform:translateY(0)}68%{transform:translateY(-3.6px)}
 82%{transform:translateY(0)}91%{transform:translateY(-1.1px)}100%{transform:translateY(0)}}
.po-coin{animation:po-drop .46s cubic-bezier(.32,.7,.4,1) both}
.po-shfade{animation:po-fade 1.7s ease-out 1.05s both,po-swayb 8s ease-in-out infinite}
.po-labg{animation:po-fade .7s ease-out both}
.po-t1{animation-delay:1.095s}.po-t2{animation-delay:1.143s}.po-t3{animation-delay:1.193s}.po-t4{animation-delay:1.247s}.po-t5{animation-delay:1.304s}.po-t6{animation-delay:1.364s}.po-t7{animation-delay:1.428s}.po-t8{animation-delay:1.496s}.po-t9{animation-delay:1.567s}.po-t10{animation-delay:1.643s}.po-t11{animation-delay:1.724s}.po-t12{animation-delay:1.809s}.po-t13{animation-delay:1.9s}.po-t14{animation-delay:1.996s}.po-t15{animation-delay:2.098s}.po-t16{animation-delay:2.206s}.po-t17{animation-delay:2.32s}.po-t18{animation-delay:2.441s}.po-t19{animation-delay:2.57s}.po-t20{animation-delay:2.706s}.po-t21{animation-delay:2.85s}.po-t22{animation-delay:3.003s}.po-t23{animation-delay:3.166s}.po-t24{animation-delay:3.338s}.po-t25{animation-delay:3.52s}.po-t26{animation-delay:3.713s}.po-l1{animation-delay:4.02s}.po-l2{animation-delay:4.09s}.po-l3{animation-delay:4.159999999999999s}.po-l4{animation-delay:4.2299999999999995s}.po-m1{animation-delay:2.72s}.po-m2{animation-delay:2.79s}.po-m3{animation-delay:2.8600000000000003s}.po-m4{animation-delay:2.93s}

/* ---- the loop: the lamp breathes on its flex, the highlights travel,
        the top line is underscored again and again ---- */
@keyframes po-swing{0%{transform:rotate(-1.15deg)}50%{transform:rotate(1.15deg)}100%{transform:rotate(-1.15deg)}}
.po-lamp,.po-lamp2{transform-box:fill-box;transform-origin:50% 0%;
  animation:po-swing 8s ease-in-out infinite}
.po-lamp2{animation-name:po-swing}
@keyframes po-swaya{0%{transform:translateX(-14px)}50%{transform:translateX(14px)}100%{transform:translateX(-14px)}}
.po-poolg{animation:po-ignite 1.15s ease-out .18s both,po-swaya 8s ease-in-out infinite}
@keyframes po-swayb{0%{transform:translateX(-2.4px)}50%{transform:translateX(2.4px)}100%{transform:translateX(-2.4px)}}
@keyframes po-swayc{0%{transform:translateX(-1.9px)}50%{transform:translateX(1.9px)}100%{transform:translateX(-1.9px)}}
.po-barlite{animation:po-swayc 8s ease-in-out infinite}

.po-rim{stroke-dasharray:17 400}
.po-rimA{stroke-dashoffset:-34.5;animation:po-rimA 8s ease-in-out infinite}
.po-rimB{stroke-dashoffset:-9.5;animation:po-rimB 8s ease-in-out infinite}
@keyframes po-rimA{0%{stroke-dashoffset:-28}50%{stroke-dashoffset:-41}100%{stroke-dashoffset:-28}}
@keyframes po-rimB{0%{stroke-dashoffset:-3}50%{stroke-dashoffset:-16}100%{stroke-dashoffset:-3}}

.po-under{stroke-dasharray:230;stroke-dashoffset:0}
@keyframes po-underscore{0%{stroke-dashoffset:230;opacity:0}4%{opacity:.95}
 34%{stroke-dashoffset:0}62%{stroke-dashoffset:0;opacity:.95}
 84%{stroke-dashoffset:0;opacity:0}85%{stroke-dashoffset:230;opacity:0}100%{stroke-dashoffset:230;opacity:0}}
.po-under{animation:po-underscore 8s ease-in-out 4.3s infinite}

@media (prefers-reduced-motion: reduce){*{animation:none !important}}
/* hoisted from style="" attributes — CSP refuses those */
.payoffici1{mix-blend-mode:soft-light}

/* ---------------- coal-lamp ---------------- */
html,body{background:#0a0a0a}
.lp-lamp{display:block;width:100%;height:auto}
.lp-lamp .lp-body,.lp-lamp .lp-drift,.lp-lamp .lp-bloom,.lp-lamp .lp-bloom2,
.lp-lamp .lp-pool,.lp-lamp .lp-air{transform-box:view-box;transform-origin:210px 440px}
.lp-lamp .lp-body{animation:lp-flick 5.6s linear infinite}
.lp-lamp .lp-drift{animation:lp-drift 5.6s ease-in-out infinite}
.lp-lamp .lp-bloom{animation:lp-bloom 5.6s ease-in-out infinite}
.lp-lamp .lp-bloom2{animation:lp-bloom 5.6s ease-in-out infinite;animation-delay:-.08s}
.lp-lamp .lp-lum{animation:lp-lum 5.6s ease-in-out infinite;animation-delay:-.06s}
.lp-lamp .lp-wash{animation:lp-lum 5.6s ease-in-out infinite;animation-delay:-.15s}
.lp-lamp .lp-air{animation:lp-lum 4.3s ease-in-out infinite}
.lp-lamp .lp-glint{animation:lp-glint 4.3s ease-in-out infinite}
.lp-lamp .lp-pool{animation:lp-pool 5.6s ease-in-out infinite;animation-delay:-.22s}

/* Irregular on purpose: two long steady stretches, a near-gutter at 39-46% where
   the flame also leans and dims, a recovery flare just after, and no repeated
   interval anywhere. 0% and 100% are identical so the loop cannot jump. */
@keyframes lp-flick{
0%{transform:scale(1,1)}      3%{transform:scale(1.02,.97)}   7%{transform:scale(.985,1.05)}
11%{transform:scale(1.012,.995)} 15%{transform:scale(.955,1.105)} 18%{transform:scale(1.03,.985)}
23%{transform:scale(.99,1.03)} 27%{transform:scale(1.05,.93)}  31%{transform:scale(.968,1.075)}
35%{transform:scale(1.008,1)}  39%{transform:scale(.94,.86)}   42%{transform:scale(.9,.735)}
45%{transform:scale(.952,.825)} 49%{transform:scale(1.062,1.09)} 53%{transform:scale(.99,.99)}
57%{transform:scale(1.022,1.04)} 61%{transform:scale(.972,.962)} 64%{transform:scale(1.04,1.018)}
68%{transform:scale(.982,1.078)} 72%{transform:scale(1.002,.99)} 76%{transform:scale(1.032,.942)}
80%{transform:scale(.962,1.05)} 84%{transform:scale(1.018,1.01)} 88%{transform:scale(.99,.952)}
92%{transform:scale(1.012,1.03)} 96%{transform:scale(.996,.988)} 100%{transform:scale(1,1)}}

@keyframes lp-drift{
0%{transform:translate(0,0) rotate(0)}      6%{transform:translate(.6px,0) rotate(.5deg)}
12%{transform:translate(-.4px,0) rotate(-.3deg)} 17%{transform:translate(.95px,0) rotate(.8deg)}
22%{transform:translate(.2px,0) rotate(.1deg)}  28%{transform:translate(-.85px,0) rotate(-.7deg)}
34%{transform:translate(.3px,0) rotate(.2deg)}  40%{transform:translate(-1.7px,0) rotate(-1.5deg)}
43%{transform:translate(-2.3px,0) rotate(-2deg)} 47%{transform:translate(-1px,0) rotate(-.8deg)}
52%{transform:translate(.75px,0) rotate(.6deg)} 58%{transform:translate(-.3px,0) rotate(-.2deg)}
65%{transform:translate(.85px,0) rotate(.7deg)} 71%{transform:translate(-.6px,0) rotate(-.5deg)}
78%{transform:translate(.4px,0) rotate(.3deg)}  85%{transform:translate(-.55px,0) rotate(-.4deg)}
92%{transform:translate(.3px,0) rotate(.2deg)}  100%{transform:translate(0,0) rotate(0)}}

@keyframes lp-bloom{
0%{opacity:.78;transform:scale(1,1)}   8%{opacity:.86;transform:scale(1.02,1.03)}
15%{opacity:.72;transform:scale(.98,1)} 22%{opacity:.9;transform:scale(1.04,1.05)}
30%{opacity:.76;transform:scale(1,1.01)} 38%{opacity:.6;transform:scale(.95,.94)}
42%{opacity:.36;transform:scale(.88,.84)} 46%{opacity:.56;transform:scale(.94,.92)}
50%{opacity:.96;transform:scale(1.07,1.08)} 56%{opacity:.78;transform:scale(1,1.01)}
63%{opacity:.85;transform:scale(1.03,1.02)} 70%{opacity:.72;transform:scale(.98,.99)}
78%{opacity:.87;transform:scale(1.03,1.04)} 86%{opacity:.74;transform:scale(.99,.99)}
93%{opacity:.81;transform:scale(1.01,1.01)} 100%{opacity:.78;transform:scale(1,1)}}

/* on wrapper groups only, so each element keeps its own base opacity underneath */
@keyframes lp-lum{
0%{opacity:.88} 8%{opacity:.95} 15%{opacity:.83} 22%{opacity:1} 30%{opacity:.86}
38%{opacity:.68} 42%{opacity:.44} 46%{opacity:.64} 50%{opacity:1} 56%{opacity:.88}
63%{opacity:.93} 70%{opacity:.82} 78%{opacity:.96} 86%{opacity:.84} 93%{opacity:.9} 100%{opacity:.88}}

@keyframes lp-pool{
0%{opacity:.9;transform:scale(1,1)} 12%{opacity:.98;transform:scale(1.02,1.03)}
26%{opacity:.86;transform:scale(.99,.98)} 40%{opacity:.7;transform:scale(.94,.92)}
44%{opacity:.5;transform:scale(.89,.86)} 52%{opacity:1;transform:scale(1.05,1.06)}
66%{opacity:.88;transform:scale(1,1)} 80%{opacity:.95;transform:scale(1.02,1.02)}
92%{opacity:.87;transform:scale(.99,.99)} 100%{opacity:.9;transform:scale(1,1)}}

@keyframes lp-glint{
0%{opacity:.2} 18%{opacity:.3} 33%{opacity:.14} 44%{opacity:.07}
56%{opacity:.34} 72%{opacity:.19} 88%{opacity:.26} 100%{opacity:.2}}

.lp-lamp .lp-mote{transform-box:view-box;transform-origin:0 0}
.lp-lamp .lp-mote-a{animation:lp-mote1 7.2s ease-in-out infinite}
.lp-lamp .lp-mote-b{animation:lp-mote2 6.1s ease-in-out infinite}
.lp-lamp .lp-mote-c{animation:lp-mote1 6.7s ease-in-out infinite;animation-delay:-2.4s}
.lp-lamp .lp-mote-d{animation:lp-mote2 7.9s ease-in-out infinite;animation-delay:-3.1s}
@keyframes lp-mote1{
0%{transform:translate(0,0);opacity:0} 14%{opacity:.45} 50%{transform:translate(-5px,-26px);opacity:.3}
82%{opacity:.09} 100%{transform:translate(2px,-52px);opacity:0}}
@keyframes lp-mote2{
0%{transform:translate(0,0);opacity:0} 20%{opacity:.4} 55%{transform:translate(6px,-22px);opacity:.26}
85%{opacity:.07} 100%{transform:translate(-3px,-46px);opacity:0}}

@media (max-width:640px){.lp-lamp .lp-glint{display:none}}
@media (max-width:430px){.lp-lamp .lp-cap{font-size:14px}}
@media (prefers-reduced-motion: reduce){.lp-lamp *{animation:none !important}}
/* hoisted from style="" attributes — CSP refuses those */
.lampi1{mix-blend-mode:overlay}

/* ---------------- coal-props ---------------- */
html,body{background:#0a0a0a}
.pr-wrap{--pr-mono:"JetBrains Mono",ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}
svg.pr-fig{display:block;width:100%;height:auto;font-family:var(--pr-mono)}
svg.pr-mob{display:none}
@media (max-width:640px){svg.pr-desk{display:none}svg.pr-mob{display:block}}
.pr-fig text{letter-spacing:.06em;text-transform:uppercase}
.pr-t{font-size:12.5px;fill:#a5a29e}
.pr-s{font-size:11px;fill:#7d7a76}
.pr-n{font-size:11px;fill:#35322f}
.pr-l{font-size:11px;fill:#7d7a76;opacity:.62;letter-spacing:.07em}
.pr-mob .pr-t{font-size:12.5px}.pr-mob .pr-s{font-size:12px}
.pr-bay,.pr-assy,.pr-slab,.pr-shear,.pr-deb,.pr-dust,.pr-swing,.pr-travel,.pr-curt{transform-box:view-box}
.pr-assy,.pr-slab,.pr-shear,.pr-deb,.pr-dust{animation-delay:var(--d,0s);animation-iteration-count:infinite}
.pr-desk .pr-assy{animation-name:pr-pull7;animation-duration:16.8s}
.pr-desk .pr-x{--unused:0}
.pr-desk .pr-slab{animation-name:pr-slab7;animation-duration:16.8s}
.pr-desk .pr-shear{animation-name:pr-shear7;animation-duration:16.8s}
.pr-desk .pr-dA{animation-name:pr-debA7;animation-duration:16.8s}
.pr-desk .pr-dB{animation-name:pr-debB7;animation-duration:16.8s}
.pr-desk .pr-dC{animation-name:pr-debC7;animation-duration:16.8s}
.pr-desk .pr-dust{animation-name:pr-dust7;animation-duration:16.8s}
.pr-mob .pr-assy{animation-name:pr-pull3;animation-duration:7.2s}
.pr-mob .pr-x{--unused:0}
.pr-mob .pr-slab{animation-name:pr-slab3;animation-duration:7.2s}
.pr-mob .pr-shear{animation-name:pr-shear3;animation-duration:7.2s}
.pr-mob .pr-dA{animation-name:pr-debA3;animation-duration:7.2s}
.pr-mob .pr-dB{animation-name:pr-debB3;animation-duration:7.2s}
.pr-mob .pr-dC{animation-name:pr-debC3;animation-duration:7.2s}
.pr-mob .pr-dust{animation-name:pr-dust3;animation-duration:7.2s}
.pr-desk{--dgx:46px;--dgy:18px;--stx:30px;--sty:7px}
.pr-mob{--dgx:28px;--dgy:11px;--stx:18px;--sty:4px}
.pr-slab{transform:scaleY(0)}
.pr-shear{opacity:0}
.pr-deb{opacity:0}
.pr-dust{opacity:0}
@keyframes pr-in-d{0%{transform:translate(-150px,320px)}55%{transform:translate(165.6px,304px)}100%{transform:translate(376px,208px)}}
@keyframes pr-in-m{0%{transform:translate(-70px,196px)}55%{transform:translate(48.8px,186px)}100%{transform:translate(128px,132px)}}
.pr-desk .pr-travel{transform:translate(376px,208px);animation:pr-in-d 1.9s cubic-bezier(.2,.62,.24,1) .1s both}
.pr-mob .pr-travel{transform:translate(128px,132px);animation:pr-in-m 1.7s cubic-bezier(.2,.62,.24,1) .1s both}
@keyframes pr-swing{0%{transform:rotate(3.4deg)}50%{transform:rotate(-3.1deg)}100%{transform:rotate(3.4deg)}}
.pr-swing{transform-origin:0 0;animation:pr-swing 3.6s cubic-bezier(.45,0,.55,1) infinite}
@keyframes pr-flame{0%{transform:scale(1,1);opacity:.92}18%{transform:scale(.9,1.14);opacity:1}37%{transform:scale(1.06,.9);opacity:.8}58%{transform:scale(.94,1.08);opacity:.96}78%{transform:scale(1.02,.96);opacity:.86}100%{transform:scale(1,1);opacity:.92}}
.pr-flame{transform-box:view-box;transform-origin:0 0;animation:pr-flame 2.3s ease-in-out infinite}
@keyframes pr-wipe-d{0%{transform:translateX(-240px)}100%{transform:translateX(1184px)}}
@keyframes pr-wipe-m{0%{transform:translateX(-140px)}100%{transform:translateX(382px)}}
.pr-curt{transform:translateX(1184px)}
.pr-desk .pr-curt{animation:pr-wipe-d 1.75s cubic-bezier(.3,.5,.3,1) both}
.pr-mob .pr-curt{transform:translateX(382px);animation:pr-wipe-m 1.6s cubic-bezier(.3,.5,.3,1) both}
@keyframes pr-fade{from{opacity:0}to{opacity:1}}
.pr-fade1{animation:pr-fade .8s ease .15s both}
.pr-fade2{animation:pr-fade .8s ease .55s both}
.pr-fade3{animation:pr-fade .9s ease 1.5s both}
.pr-ink{animation:pr-fade 1s ease 2.1s both}
@media (prefers-reduced-motion: reduce){*{animation:none !important}.pr-desk .pr-b4 .pr-slab{transform:scaleY(1)}.pr-desk .pr-b4 .pr-assy{transform:translate(42px,9px) rotate(20deg) scaleY(1)}.pr-desk .pr-b4 .pr-shear{opacity:1}.pr-desk .pr-b4 .pr-deb{opacity:.9;transform:translate(4px,42px) rotate(40deg)}.pr-desk .pr-b4 .pr-dB{opacity:.85;transform:translate(-6px,84px) rotate(-70deg)}.pr-desk .pr-b4 .pr-dC{opacity:.6;transform:translate(9px,132px) rotate(160deg)}.pr-desk .pr-b4 .pr-dust{opacity:.34;transform:translate(2px,-6px) scale(1.5)}.pr-mob .pr-b2 .pr-slab{transform:scaleY(1)}.pr-mob .pr-b2 .pr-assy{transform:translate(30px,6px) rotate(23deg) scaleY(1)}.pr-mob .pr-b2 .pr-shear{opacity:1}.pr-mob .pr-b2 .pr-deb{opacity:.9;transform:translate(3px,18px) rotate(40deg)}.pr-mob .pr-b2 .pr-dB{opacity:.85;transform:translate(-4px,48px) rotate(-70deg)}.pr-mob .pr-b2 .pr-dC{opacity:.6;transform:translate(6px,78px) rotate(160deg)}.pr-mob .pr-b2 .pr-dust{opacity:.34;transform:translate(2px,-4px) scale(1.5)}}
@keyframes pr-pull7{0%{transform:translate(0px,0px) rotate(0deg) scaleY(1);opacity:1}1.1%{transform:translate(0px,0px) rotate(0deg) scaleY(1);opacity:1;animation-timing-function:cubic-bezier(.5,.1,.8,.3)}1.8%{transform:translate(-2px,0px) rotate(-3deg) scaleY(1);opacity:1;animation-timing-function:cubic-bezier(.35,.5,.6,1)}3.8%{transform:translate(var(--dgx),var(--dgy)) rotate(24deg) scaleY(1);opacity:0}8.3%{transform:translate(var(--dgx),var(--dgy)) rotate(24deg) scaleY(1);opacity:0}8.8%{transform:translate(var(--dgx),var(--dgy)) rotate(23deg) scaleY(var(--sq));opacity:0}9.3%{transform:translate(var(--stx),var(--sty)) rotate(17deg) scaleY(var(--sq));opacity:1;animation-timing-function:cubic-bezier(.25,.7,.3,1)}10.8%{transform:translate(0px,0px) rotate(0deg) scaleY(var(--sq));opacity:1;animation-timing-function:cubic-bezier(.4,0,.28,1)}12.7%{transform:translate(0px,0px) rotate(0deg) scaleY(1);opacity:1}100%{transform:translate(0px,0px) rotate(0deg) scaleY(1);opacity:1}}
@keyframes pr-slab7{0%{transform:scaleY(0)}2.5%{transform:scaleY(0);animation-timing-function:cubic-bezier(.65,0,.9,.45)}4.5%{transform:scaleY(1);animation-timing-function:cubic-bezier(.3,0,.4,1)}5.2%{transform:scaleY(.93);animation-timing-function:cubic-bezier(.5,0,.5,1)}6.1%{transform:scaleY(1)}10.8%{transform:scaleY(1);animation-timing-function:cubic-bezier(.4,0,.28,1)}12.7%{transform:scaleY(0)}100%{transform:scaleY(0)}}
@keyframes pr-shear7{0%{opacity:0}3.2%{opacity:0}4.8%{opacity:1}10.8%{opacity:1}12.7%{opacity:0}100%{opacity:0}}
@keyframes pr-debA7{0%{opacity:0;transform:translate(0px,0px) rotate(0deg)}3%{opacity:0;transform:translate(0px,0px) rotate(0deg);animation-timing-function:cubic-bezier(.4,0,.85,.45)}3.4%{opacity:.92}6.3%{opacity:.92}7.3%{opacity:0;transform:translate(var(--dx),var(--dy)) rotate(var(--rz))}7.4%{opacity:0;transform:translate(0px,0px) rotate(0deg)}100%{opacity:0;transform:translate(0px,0px) rotate(0deg)}}
@keyframes pr-debB7{0%{opacity:0;transform:translate(0px,0px) rotate(0deg)}3.9%{opacity:0;transform:translate(0px,0px) rotate(0deg);animation-timing-function:cubic-bezier(.4,0,.85,.45)}4.3%{opacity:.85}7.6%{opacity:.85}8.6%{opacity:0;transform:translate(var(--dx),var(--dy)) rotate(var(--rz))}8.7%{opacity:0;transform:translate(0px,0px) rotate(0deg)}100%{opacity:0;transform:translate(0px,0px) rotate(0deg)}}
@keyframes pr-debC7{0%{opacity:0;transform:translate(0px,0px) rotate(0deg)}2%{opacity:0;transform:translate(0px,0px) rotate(0deg);animation-timing-function:cubic-bezier(.4,0,.85,.45)}2.4%{opacity:.55}3.8%{opacity:.55}4.8%{opacity:0;transform:translate(var(--dx),var(--dy)) rotate(var(--rz))}4.9%{opacity:0;transform:translate(0px,0px) rotate(0deg)}100%{opacity:0;transform:translate(0px,0px) rotate(0deg)}}
@keyframes pr-dust7{0%{opacity:0;transform:translate(0px,0px) scale(.3)}3.8%{opacity:0;transform:translate(0px,0px) scale(.3);animation-timing-function:cubic-bezier(.2,.6,.4,1)}5.8%{opacity:.4}13.6%{opacity:0;transform:translate(var(--dx),-15px) scale(2.05)}13.9%{opacity:0;transform:translate(0px,0px) scale(.3)}100%{opacity:0;transform:translate(0px,0px) scale(.3)}}
@keyframes pr-pull3{0%{transform:translate(0px,0px) rotate(0deg) scaleY(1);opacity:1}2.5%{transform:translate(0px,0px) rotate(0deg) scaleY(1);opacity:1;animation-timing-function:cubic-bezier(.5,.1,.8,.3)}4.2%{transform:translate(-2px,0px) rotate(-3deg) scaleY(1);opacity:1;animation-timing-function:cubic-bezier(.35,.5,.6,1)}8.9%{transform:translate(var(--dgx),var(--dgy)) rotate(24deg) scaleY(1);opacity:0}19.4%{transform:translate(var(--dgx),var(--dgy)) rotate(24deg) scaleY(1);opacity:0}20.6%{transform:translate(var(--dgx),var(--dgy)) rotate(23deg) scaleY(var(--sq));opacity:0}21.7%{transform:translate(var(--stx),var(--sty)) rotate(17deg) scaleY(var(--sq));opacity:1;animation-timing-function:cubic-bezier(.25,.7,.3,1)}25.3%{transform:translate(0px,0px) rotate(0deg) scaleY(var(--sq));opacity:1;animation-timing-function:cubic-bezier(.4,0,.28,1)}29.7%{transform:translate(0px,0px) rotate(0deg) scaleY(1);opacity:1}100%{transform:translate(0px,0px) rotate(0deg) scaleY(1);opacity:1}}
@keyframes pr-slab3{0%{transform:scaleY(0)}5.8%{transform:scaleY(0);animation-timing-function:cubic-bezier(.65,0,.9,.45)}10.6%{transform:scaleY(1);animation-timing-function:cubic-bezier(.3,0,.4,1)}12.2%{transform:scaleY(.93);animation-timing-function:cubic-bezier(.5,0,.5,1)}14.2%{transform:scaleY(1)}25.3%{transform:scaleY(1);animation-timing-function:cubic-bezier(.4,0,.28,1)}29.7%{transform:scaleY(0)}100%{transform:scaleY(0)}}
@keyframes pr-shear3{0%{opacity:0}7.5%{opacity:0}11.1%{opacity:1}25.3%{opacity:1}29.7%{opacity:0}100%{opacity:0}}
@keyframes pr-debA3{0%{opacity:0;transform:translate(0px,0px) rotate(0deg)}6.9%{opacity:0;transform:translate(0px,0px) rotate(0deg);animation-timing-function:cubic-bezier(.4,0,.85,.45)}7.9%{opacity:.92}14.7%{opacity:.92}16.9%{opacity:0;transform:translate(var(--dx),var(--dy)) rotate(var(--rz))}17.2%{opacity:0;transform:translate(0px,0px) rotate(0deg)}100%{opacity:0;transform:translate(0px,0px) rotate(0deg)}}
@keyframes pr-debB3{0%{opacity:0;transform:translate(0px,0px) rotate(0deg)}9.2%{opacity:0;transform:translate(0px,0px) rotate(0deg);animation-timing-function:cubic-bezier(.4,0,.85,.45)}10.1%{opacity:.85}17.8%{opacity:.85}20%{opacity:0;transform:translate(var(--dx),var(--dy)) rotate(var(--rz))}20.3%{opacity:0;transform:translate(0px,0px) rotate(0deg)}100%{opacity:0;transform:translate(0px,0px) rotate(0deg)}}
@keyframes pr-debC3{0%{opacity:0;transform:translate(0px,0px) rotate(0deg)}4.7%{opacity:0;transform:translate(0px,0px) rotate(0deg);animation-timing-function:cubic-bezier(.4,0,.85,.45)}5.7%{opacity:.55}8.9%{opacity:.55}11.1%{opacity:0;transform:translate(var(--dx),var(--dy)) rotate(var(--rz))}11.4%{opacity:0;transform:translate(0px,0px) rotate(0deg)}100%{opacity:0;transform:translate(0px,0px) rotate(0deg)}}
@keyframes pr-dust3{0%{opacity:0;transform:translate(0px,0px) scale(.3)}8.9%{opacity:0;transform:translate(0px,0px) scale(.3);animation-timing-function:cubic-bezier(.2,.6,.4,1)}13.6%{opacity:.4}31.7%{opacity:0;transform:translate(var(--dx),-15px) scale(2.05)}32.5%{opacity:0;transform:translate(0px,0px) scale(.3)}100%{opacity:0;transform:translate(0px,0px) scale(.3)}}
/* hoisted from style="" attributes — CSP refuses those */
.propsi1{transform-origin:0px 32.9px}
.propsi2{--d:1.7s;--sq:0.836}
.propsi3{transform-origin:170px 199px}
.propsi4{transform-origin:170px 383.9px}
.propsi5{--dx:-10.5px;--dy:175.6px;--rz:177.6deg;transform-origin:200.8px 205.8px}
.propsi6{--dx:-2.3px;--dy:165.9px;--rz:-223.2deg;transform-origin:217.1px 206.2px}
.propsi7{--dx:-1.6px;--dy:173px;--rz:-213deg;transform-origin:151.1px 202.4px}
.propsi8{--dx:-14px;--dy:179.3px;--rz:177.3deg;transform-origin:185px 200.1px}
.propsi9{--dx:-17px;--dy:169.2px;--rz:30.7deg;transform-origin:223.4px 207.8px}
.propsi10{--dx:-3.2px;--dy:180.4px;--rz:-194.1deg;transform-origin:141.8px 201.7px}
.propsi11{--dx:2px;--dy:167.8px;--rz:-164.6deg;transform-origin:201.5px 205.4px}
.propsi12{--dx:-8.9px;--dy:175.8px;--rz:182.7deg;transform-origin:189.4px 204.2px}
.propsi13{--dx:-16.1px;--dy:172.3px;--rz:214.4deg;transform-origin:214.7px 206.8px}
.propsi14{--dx:12.8px;--dy:166.7px;--rz:219.7deg;transform-origin:210px 206.3px}
.propsi15{--dx:1.7px;--dy:179.9px;--rz:96.4deg;transform-origin:179.8px 200.4px}
.propsi16{--dx:15.9px;--dy:166.7px;--rz:214.9deg;transform-origin:204.1px 205.9px}
.propsi17{--dx:4.2px;--dy:173px;--rz:191.1deg;transform-origin:190px 203.4px}
.propsi18{--dx:-1.3px;--dy:169.6px;--rz:-71deg;transform-origin:211px 206.6px}
.propsi19{--dx:11.5px;--dy:173.5px;--rz:-223.6deg;transform-origin:216.3px 206.4px}
.propsi20{--dx:7.6px;--dy:177.8px;--rz:-170.1deg;transform-origin:150.8px 201.1px}
.propsi21{--dx:9.6px;transform-origin:150.1px 376.7px}
.propsi22{--dx:13.7px;transform-origin:180.7px 377.5px}
.propsi23{--d:4.1s;--sq:0.831}
.propsi24{transform-origin:322px 197.7px}
.propsi25{transform-origin:322px 377.3px}
.propsi26{--dx:12.6px;--dy:164.9px;--rz:257.5deg;transform-origin:323.3px 201.8px}
.propsi27{--dx:12.9px;--dy:174.6px;--rz:31.4deg;transform-origin:343.9px 198.7px}
.propsi28{--dx:15.6px;--dy:176.4px;--rz:37.7deg;transform-origin:334.8px 199.2px}
.propsi29{--dx:-6.9px;--dy:175.4px;--rz:-195.1deg;transform-origin:327.6px 200.6px}
.propsi30{--dx:3.1px;--dy:168.6px;--rz:45.6deg;transform-origin:277px 207.1px}
.propsi31{--dx:-10.5px;--dy:171.6px;--rz:-115.5deg;transform-origin:331.8px 198.2px}
.propsi32{--dx:-11.5px;--dy:168.1px;--rz:-31.1deg;transform-origin:278.1px 204.8px}
.propsi33{--dx:-8.6px;--dy:175.3px;--rz:104.5deg;transform-origin:365.8px 195.4px}
.propsi34{--dx:4.4px;--dy:172.9px;--rz:247.8deg;transform-origin:373.1px 196.1px}
.propsi35{--dx:-10.9px;--dy:163.2px;--rz:205.5deg;transform-origin:305.9px 204.1px}
.propsi36{--dx:-2.8px;--dy:165.5px;--rz:245.4deg;transform-origin:289.6px 207.4px}
.propsi37{--dx:-13.4px;--dy:171.9px;--rz:224.6deg;transform-origin:280.2px 206.5px}
.propsi38{--dx:-14.6px;--dy:181.4px;--rz:248.7deg;transform-origin:371.8px 196.8px}
.propsi39{--dx:5.8px;--dy:162px;--rz:180deg;transform-origin:287.1px 209.1px}
.propsi40{--dx:15px;--dy:166.6px;--rz:253deg;transform-origin:313.4px 202.4px}
.propsi41{--dx:0px;--dy:171.8px;--rz:-232.7deg;transform-origin:329.7px 197.3px}
.propsi42{--dx:14px;transform-origin:303.4px 371.4px}
.propsi43{--dx:-3.7px;transform-origin:340.2px 371px}
.propsi44{--d:6.5s;--sq:0.844}
.propsi45{transform-origin:474px 190.1px}
.propsi46{transform-origin:474px 384.1px}
.propsi47{--dx:-11.5px;--dy:182.7px;--rz:126deg;transform-origin:469.8px 194.7px}
.propsi48{--dx:7.2px;--dy:185.3px;--rz:186.1deg;transform-origin:461.4px 192.1px}
.propsi49{--dx:2.6px;--dy:179.8px;--rz:-44.6deg;transform-origin:451.9px 193.3px}
.propsi50{--dx:-2.2px;--dy:186px;--rz:-79.9deg;transform-origin:445.5px 191.3px}
.propsi51{--dx:-8.9px;--dy:181.4px;--rz:130.1deg;transform-origin:468.1px 194.5px}
.propsi52{--dx:11.7px;--dy:186.4px;--rz:43deg;transform-origin:468.4px 192.8px}
.propsi53{--dx:2.1px;--dy:187.9px;--rz:-58deg;transform-origin:461px 192.8px}
.propsi54{--dx:9.3px;--dy:185.6px;--rz:231.7deg;transform-origin:425.1px 191.2px}
.propsi55{--dx:4.3px;--dy:186.7px;--rz:5.7deg;transform-origin:508.2px 193.5px}
.propsi56{--dx:-7px;--dy:188.6px;--rz:-44.9deg;transform-origin:491.3px 195.2px}
.propsi57{--dx:-5.6px;--dy:188.5px;--rz:67.6deg;transform-origin:458px 190.6px}
.propsi58{--dx:-1.2px;--dy:178.8px;--rz:179.4deg;transform-origin:494px 193.9px}
.propsi59{--dx:-2.3px;--dy:188px;--rz:-133.1deg;transform-origin:432.2px 192.1px}
.propsi60{--dx:-7.2px;--dy:190.9px;--rz:-182.9deg;transform-origin:443.2px 190.9px}
.propsi61{--dx:11.4px;--dy:183.7px;--rz:-226.6deg;transform-origin:458.3px 190.6px}
.propsi62{--dx:-7.4px;--dy:183.1px;--rz:-31.9deg;transform-origin:464.2px 191.6px}
.propsi63{--dx:-1px;transform-origin:456px 379.3px}
.propsi64{--dx:8.6px;transform-origin:472.7px 378.2px}
.propsi65{--d:8.9s;--sq:0.845}
.propsi66{transform-origin:626px 196.6px}
.propsi67{transform-origin:626px 390.6px}
.propsi68{--dx:-8.3px;--dy:181.1px;--rz:65.6deg;transform-origin:585.3px 197.1px}
.propsi69{--dx:9.9px;--dy:179.4px;--rz:-238.5deg;transform-origin:580.1px 197.3px}
.propsi70{--dx:-6.2px;--dy:181.7px;--rz:50.4deg;transform-origin:635.9px 199.6px}
.propsi71{--dx:0.8px;--dy:183.5px;--rz:-179.6deg;transform-origin:630.5px 199.3px}
.propsi72{--dx:5.2px;--dy:173.6px;--rz:-202deg;transform-origin:658.7px 202.7px}
.propsi73{--dx:-11.9px;--dy:189.2px;--rz:150.5deg;transform-origin:603.8px 199.7px}
.propsi74{--dx:12.4px;--dy:181.7px;--rz:93.1deg;transform-origin:632.3px 198.8px}
.propsi75{--dx:-15.2px;--dy:189.6px;--rz:-212.9deg;transform-origin:614.2px 197.6px}
.propsi76{--dx:15.9px;--dy:185.9px;--rz:-183.9deg;transform-origin:619.2px 198.8px}
.propsi77{--dx:5.5px;--dy:184.7px;--rz:-132.2deg;transform-origin:624.1px 198.1px}
.propsi78{--dx:-15.7px;--dy:181px;--rz:56.6deg;transform-origin:619.9px 199.2px}
.propsi79{--dx:-16.9px;--dy:178.6px;--rz:152.1deg;transform-origin:677.6px 203.9px}
.propsi80{--dx:12.5px;--dy:187px;--rz:-12.6deg;transform-origin:637.3px 201.6px}
.propsi81{--dx:-14.2px;--dy:181.3px;--rz:-255.9deg;transform-origin:590.4px 200.9px}
.propsi82{--dx:-7.6px;--dy:190.4px;--rz:-74.3deg;transform-origin:613.2px 195.9px}
.propsi83{--dx:6.4px;--dy:179.5px;--rz:-234.7deg;transform-origin:586.3px 201px}
.propsi84{--dx:-9.6px;transform-origin:654.9px 382.3px}
.propsi85{--dx:14.7px;transform-origin:656.3px 382.3px}
.propsi86{--d:11.3s;--sq:0.747}
.propsi87{transform-origin:778px 219.6px}
.propsi88{transform-origin:778px 383.2px}
.propsi89{--dx:-13.1px;--dy:150.6px;--rz:-153.7deg;transform-origin:840.7px 223.7px}
.propsi90{--dx:-2.5px;--dy:160.6px;--rz:108.9deg;transform-origin:745.1px 215.5px}
.propsi91{--dx:1.9px;--dy:149.6px;--rz:-20.8deg;transform-origin:788px 224.8px}
.propsi92{--dx:-11.6px;--dy:157.1px;--rz:219.7deg;transform-origin:736.6px 213.6px}
.propsi93{--dx:4.1px;--dy:154.8px;--rz:208.4deg;transform-origin:843.5px 225.8px}
.propsi94{--dx:-15.2px;--dy:154.9px;--rz:-161.2deg;transform-origin:762.8px 217.9px}
.propsi95{--dx:12.3px;--dy:158px;--rz:-178.3deg;transform-origin:771.8px 221.5px}
.propsi96{--dx:-9.1px;--dy:149.3px;--rz:142.4deg;transform-origin:777.8px 223px}
.propsi97{--dx:14.8px;--dy:160.4px;--rz:207deg;transform-origin:724px 213.2px}
.propsi98{--dx:5.5px;--dy:157.7px;--rz:-4.3deg;transform-origin:785.6px 223.6px}
.propsi99{--dx:-4.7px;--dy:164.1px;--rz:151.5deg;transform-origin:713px 210.8px}
.propsi100{--dx:-16.4px;--dy:147.2px;--rz:250.1deg;transform-origin:800.7px 225.8px}
.propsi101{--dx:-5.8px;--dy:164.7px;--rz:46.8deg;transform-origin:715.3px 209.4px}
.propsi102{--dx:9.3px;--dy:150.3px;--rz:-32.1deg;transform-origin:777px 223.7px}
.propsi103{--dx:10.2px;--dy:149.9px;--rz:100deg;transform-origin:786.8px 222.7px}
.propsi104{--dx:-8.9px;--dy:153.8px;--rz:41.5deg;transform-origin:790.8px 225.3px}
.propsi105{--dx:-13.5px;transform-origin:766.2px 377px}
.propsi106{--dx:4.4px;transform-origin:755.3px 376.3px}
.propsi107{--d:13.7s;--sq:0.819}
.propsi108{transform-origin:930px 209.8px}
.propsi109{transform-origin:930px 378.6px}
.propsi110{--dx:7.4px;--dy:156px;--rz:-26.1deg;transform-origin:876.4px 218.1px}
.propsi111{--dx:9.9px;--dy:154.1px;--rz:-94.8deg;transform-origin:892.7px 219.2px}
.propsi112{--dx:4.6px;--dy:159px;--rz:39.4deg;transform-origin:934.3px 210.9px}
.propsi113{--dx:16.8px;--dy:159.3px;--rz:-80deg;transform-origin:904.8px 214.7px}
.propsi114{--dx:-2.4px;--dy:169.4px;--rz:-125.8deg;transform-origin:963.4px 210px}
.propsi115{--dx:4.5px;--dy:164.9px;--rz:191.6deg;transform-origin:964.7px 208.4px}
.propsi116{--dx:-10.3px;--dy:164px;--rz:-33.6deg;transform-origin:954px 211.9px}
.propsi117{--dx:4px;--dy:151.6px;--rz:-51.5deg;transform-origin:893.9px 215.3px}
.propsi118{--dx:-13.7px;--dy:156.1px;--rz:35.7deg;transform-origin:919.9px 214.5px}
.propsi119{--dx:-14.9px;--dy:170.3px;--rz:207.1deg;transform-origin:985px 207.4px}
.propsi120{--dx:7.4px;--dy:156.5px;--rz:-22deg;transform-origin:911.3px 214.9px}
.propsi121{--dx:1.5px;--dy:166.5px;--rz:36.7deg;transform-origin:971.4px 208.1px}
.propsi122{--dx:14.6px;--dy:163.8px;--rz:-16deg;transform-origin:954.3px 209.2px}
.propsi123{--dx:5.8px;--dy:154.8px;--rz:-211.3deg;transform-origin:904.5px 213.5px}
.propsi124{--dx:7.9px;--dy:151.9px;--rz:-19.2deg;transform-origin:918.6px 216.6px}
.propsi125{--dx:11.1px;--dy:166.3px;--rz:236.9deg;transform-origin:936.3px 211.9px}
.propsi126{--dx:-7.9px;transform-origin:924.4px 372.3px}
.propsi127{--dx:-12.2px;transform-origin:956.9px 374.5px}
.propsi128{--d:16.1s;--sq:0.830}
.propsi129{transform-origin:1082px 205.9px}
.propsi130{transform-origin:1082px 384.3px}
.propsi131{--dx:0.5px;--dy:173.7px;--rz:164.6deg;transform-origin:1089.8px 208.7px}
.propsi132{--dx:-13px;--dy:172.4px;--rz:-150.7deg;transform-origin:1107.8px 210.3px}
.propsi133{--dx:-10.6px;--dy:171.8px;--rz:-92.9deg;transform-origin:1081.6px 209.6px}
.propsi134{--dx:-16.9px;--dy:170.9px;--rz:7.2deg;transform-origin:1105.9px 209.8px}
.propsi135{--dx:3.9px;--dy:174.2px;--rz:-226.9deg;transform-origin:1027.9px 207.8px}
.propsi136{--dx:9.1px;--dy:170.2px;--rz:140.9deg;transform-origin:1032.7px 208.2px}
.propsi137{--dx:-13.9px;--dy:180px;--rz:-56deg;transform-origin:1043.6px 202px}
.propsi138{--dx:2.9px;--dy:174px;--rz:30.2deg;transform-origin:1035.3px 205.3px}
.propsi139{--dx:4.2px;--dy:178.9px;--rz:-202.4deg;transform-origin:1041.4px 204.2px}
.propsi140{--dx:11.5px;--dy:168.1px;--rz:132deg;transform-origin:1050.7px 205.8px}
.propsi141{--dx:14.8px;--dy:173.5px;--rz:-11deg;transform-origin:1074.9px 209.8px}
.propsi142{--dx:-15.6px;--dy:166.6px;--rz:-52.3deg;transform-origin:1101.3px 207.4px}
.propsi143{--dx:-5.5px;--dy:167px;--rz:-18.7deg;transform-origin:1125.8px 208.4px}
.propsi144{--dx:5.9px;--dy:164.2px;--rz:197.2deg;transform-origin:1113.1px 210.2px}
.propsi145{--dx:-4.3px;--dy:172.3px;--rz:-211.2deg;transform-origin:1032px 209.1px}
.propsi146{--dx:12.9px;--dy:175.1px;--rz:-143.9deg;transform-origin:1027.4px 208.1px}
.propsi147{--dx:16.2px;transform-origin:1051.5px 379.5px}
.propsi148{--dx:16px;transform-origin:1093.5px 378.3px}
.propsi149{transform-origin:0px 22.3px}
.propsi150{--d:1.5s;--sq:0.822}
.propsi151{transform-origin:100px 116.6px}
.propsi152{transform-origin:100px 227.8px}
.propsi153{--dx:-6.8px;--dy:103.2px;--rz:177.6deg;transform-origin:118.6px 122.5px}
.propsi154{--dx:-1.5px;--dy:96.3px;--rz:-223.2deg;transform-origin:128.4px 122.6px}
.propsi155{--dx:-1.1px;--dy:102.3px;--rz:-213deg;transform-origin:88.6px 120px}
.propsi156{--dx:-9px;--dy:105.2px;--rz:177.3deg;transform-origin:109.1px 120.1px}
.propsi157{--dx:-11px;--dy:98.1px;--rz:30.7deg;transform-origin:132.2px 123.7px}
.propsi158{--dx:-2px;--dy:107.7px;--rz:-194.1deg;transform-origin:83px 119.2px}
.propsi159{--dx:1.3px;--dy:98.1px;--rz:-164.6deg;transform-origin:119px 122.1px}
.propsi160{--dx:-5.7px;--dy:102.3px;--rz:182.7deg;transform-origin:111.7px 123.2px}
.propsi161{--dx:-10.4px;--dy:100.5px;--rz:214.4deg;transform-origin:127px 123.2px}
.propsi162{--dx:8.3px;--dy:96.9px;--rz:219.7deg;transform-origin:124.1px 123px}
.propsi163{--dx:1.1px;--dy:106.9px;--rz:96.4deg;transform-origin:105.9px 118.9px}
.propsi164{--dx:3.1px;transform-origin:112.5px 224.2px}
.propsi165{--dx:6.1px;transform-origin:120.5px 223.8px}
.propsi166{--d:3.9s;--sq:0.749}
.propsi167{transform-origin:190px 120px}
.propsi168{transform-origin:190px 227px}
.propsi169{--dx:1.9px;--dy:96.6px;--rz:136.6deg;transform-origin:167.2px 126.3px}
.propsi170{--dx:-5.2px;--dy:93.7px;--rz:192.9deg;transform-origin:151.6px 123.4px}
.propsi171{--dx:-6.8px;--dy:105.6px;--rz:196.7deg;transform-origin:229.3px 119.4px}
.propsi172{--dx:-10.4px;--dy:101.4px;--rz:238.2deg;transform-origin:194.8px 122.2px}
.propsi173{--dx:7.1px;--dy:98.6px;--rz:-104.9deg;transform-origin:195.8px 122.1px}
.propsi174{--dx:5.5px;--dy:95.8px;--rz:46.7deg;transform-origin:160.2px 122.6px}
.propsi175{--dx:9.5px;--dy:103.2px;--rz:-160.9deg;transform-origin:197px 122.5px}
.propsi176{--dx:4.4px;--dy:102.3px;--rz:-175.6deg;transform-origin:172.4px 122.5px}
.propsi177{--dx:9.1px;--dy:97.5px;--rz:-131.1deg;transform-origin:185.3px 125.6px}
.propsi178{--dx:10px;--dy:99.4px;--rz:67.9deg;transform-origin:206px 124.3px}
.propsi179{--dx:8.8px;--dy:104.7px;--rz:-166.3deg;transform-origin:227.8px 118.3px}
.propsi180{--dx:-6.4px;transform-origin:209.1px 225.5px}
.propsi181{--dx:-0.4px;transform-origin:200.9px 224.3px}
.propsi182{--d:6.3s;--sq:0.830}
.propsi183{transform-origin:280px 114.4px}
.propsi184{transform-origin:280px 230.4px}
.propsi185{--dx:-7.5px;--dy:106.1px;--rz:126deg;transform-origin:277.4px 119.2px}
.propsi186{--dx:4.6px;--dy:107.1px;--rz:186.1deg;transform-origin:272.4px 117.2px}
.propsi187{--dx:1.7px;--dy:101.6px;--rz:-44.6deg;transform-origin:266.7px 119.6px}
.propsi188{--dx:-1.4px;--dy:106.2px;--rz:-79.9deg;transform-origin:262.8px 117.7px}
.propsi189{--dx:-5.8px;--dy:104.9px;--rz:130.1deg;transform-origin:276.4px 119.2px}
.propsi190{--dx:7.6px;--dy:108.9px;--rz:43deg;transform-origin:276.6px 117.4px}
.propsi191{--dx:1.4px;--dy:108.5px;--rz:-58deg;transform-origin:272.2px 117.9px}
.propsi192{--dx:6px;--dy:104.9px;--rz:231.7deg;transform-origin:250.5px 117.9px}
.propsi193{--dx:2.8px;--dy:114.4px;--rz:5.7deg;transform-origin:300.6px 115.1px}
.propsi194{--dx:-4.6px;--dy:112.9px;--rz:-44.9deg;transform-origin:290.5px 118.6px}
.propsi195{--dx:-3.6px;--dy:109.2px;--rz:67.6deg;transform-origin:270.4px 116px}
.propsi196{--dx:-1px;transform-origin:287.3px 227.4px}
.propsi197{--dx:9.2px;transform-origin:297.8px 228.1px}

/* ---------------- coal-weigh ---------------- */
html,body{background:#0a0a0a}
.wg-fig{display:block;width:100%;height:auto}
.wg-fig text{font-family:"JetBrains Mono",ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
  letter-spacing:.06em;text-transform:uppercase;fill:#7d7a76;font-size:11.5px}
.wg-fig .wg-t{font-size:12.5px;fill:#a5a29e}
.wg-fig .wg-tt{font-size:12.5px;fill:#a5a29e;letter-spacing:.11em}
.wg-h{fill:none;stroke:#1c1b1a;stroke-width:1}
.wg-a{fill:none;stroke:#2a2826;stroke-width:1.1}
.wg-b{fill:none;stroke:#57544f;stroke-width:1.2}
.wg-c{fill:none;stroke:#7d7a76;stroke-width:1.5}
.wg-lead{fill:none;stroke:#3a3835;stroke-width:.9}
.wg-ink{fill:none;stroke:#e8e6e3;stroke-width:1.4;stroke-linecap:round;stroke-linejoin:round;
  stroke-dasharray:100;stroke-dashoffset:0}
.wg-narrow{display:none}
@media (max-width:640px){
  body{padding:18px !important}
  .wg-wide{display:none}
  .wg-narrow{display:block}
}

/* ---- arrival: the light comes up from the machine outward =============== */
@keyframes wg-fade{from{opacity:0}to{opacity:1}}
@keyframes wg-rise{0%{opacity:0;transform:translateY(8px)}62%{opacity:1}100%{opacity:1;transform:translateY(0)}}
@keyframes wg-open{0%{opacity:0;transform:scale(.16)}55%{opacity:1}100%{opacity:1;transform:scale(1)}}
@keyframes wg-grainin{from{opacity:0}to{opacity:.055}}
.wg-halo{transform-box:view-box;animation:wg-open 1.3s cubic-bezier(.15,.74,.28,1) both}
.wg-c1{transform-box:view-box;animation:wg-rise .7s .04s cubic-bezier(.16,.8,.28,1) both}
.wg-c2{transform-box:view-box;animation:wg-rise .78s .32s cubic-bezier(.16,.8,.28,1) both}
.wg-c3{animation:wg-fade .95s .5s ease-out both}
.wg-lab{animation:wg-fade .9s .92s ease-out both}
.wg-grain{opacity:.055;animation:wg-grainin 1.9s ease-out both}

/* ---- the loop: 8 seconds, starting the instant the arrival lands ======== */
@keyframes wg-tub{
  0%{transform:translateX(-58px);opacity:0;animation-timing-function:cubic-bezier(.19,.72,.34,1)}
  2%{opacity:1;animation-timing-function:cubic-bezier(.19,.72,.34,1)}
  9%{transform:translateX(0)}
  86%{transform:translateX(0);opacity:1;animation-timing-function:cubic-bezier(.55,0,.85,.55)}
  96%{transform:translateX(142px);opacity:0}
  96.01%{transform:translateX(-58px);opacity:0}
  100%{transform:translateX(-58px);opacity:0}}
@keyframes wg-wheel{
  0%{transform:rotate(0);animation-timing-function:cubic-bezier(.19,.72,.34,1)}
  9%{transform:rotate(372deg)}
  86%{transform:rotate(372deg);animation-timing-function:cubic-bezier(.55,0,.85,.55)}
  96%{transform:rotate(1282deg)}
  96.01%{transform:rotate(0)}
  100%{transform:rotate(0)}}
@keyframes wg-mtub{
  0%{transform:translateX(-42px);opacity:0;animation-timing-function:cubic-bezier(.19,.72,.34,1)}
  2%{opacity:1;animation-timing-function:cubic-bezier(.19,.72,.34,1)}
  9%{transform:translateX(0)}
  86%{transform:translateX(0);opacity:1;animation-timing-function:cubic-bezier(.55,0,.85,.55)}
  96%{transform:translateX(104px);opacity:0}
  96.01%{transform:translateX(-42px);opacity:0}
  100%{transform:translateX(-42px);opacity:0}}
@keyframes wg-mwheel{
  0%{transform:rotate(0);animation-timing-function:cubic-bezier(.19,.72,.34,1)}
  9%{transform:rotate(384deg)}
  86%{transform:rotate(384deg);animation-timing-function:cubic-bezier(.55,0,.85,.55)}
  96%{transform:rotate(1335deg)}
  96.01%{transform:rotate(0)}
  100%{transform:rotate(0)}}
/* the platform takes the load, drops on its knife edges, and stays down */
@keyframes wg-plat{
  0%,8%{transform:translateY(0)}
  11%{transform:translateY(3px)}15%{transform:translateY(.7px)}
  19%{transform:translateY(2.4px)}24%{transform:translateY(1.4px)}
  29%{transform:translateY(2.05px)}34%{transform:translateY(1.75px)}
  40%,88%{transform:translateY(1.9px)}
  95%,100%{transform:translateY(0)}}
@keyframes wg-mplat{
  0%,8%{transform:translateY(0)}
  11%{transform:translateY(2px)}15%{transform:translateY(.5px)}
  19%{transform:translateY(1.6px)}24%{transform:translateY(.9px)}
  29%{transform:translateY(1.35px)}34%{transform:translateY(1.15px)}
  40%,88%{transform:translateY(1.25px)}
  95%,100%{transform:translateY(0)}}
/* the needle: thrown over, overshoots, damps, dead on a graduation at 8.5 cwt */
@keyframes wg-ptr{
  0%,8.5%{transform:rotate(0deg)}
  16%{transform:rotate(162deg)}
  20%{transform:rotate(117.5deg)}
  24%{transform:rotate(148.4deg)}
  28%{transform:rotate(127.6deg)}
  31.5%{transform:rotate(141.2deg)}
  34.5%{transform:rotate(132.4deg)}
  37%{transform:rotate(138deg)}
  39%{transform:rotate(134.6deg)}
  40.6%{transform:rotate(136.7deg)}
  42%,86%{transform:rotate(136deg)}
  92%{transform:rotate(-4.4deg)}
  95%{transform:rotate(1.8deg)}
  97.5%{transform:rotate(-.6deg)}
  99%,100%{transform:rotate(0deg)}}
/* the pen: one ruled line into the left book, then the same into the right */
@keyframes wg-writeL{
  0%,42%{stroke-dashoffset:100;opacity:1;animation-timing-function:cubic-bezier(.35,.05,.2,1)}
  50%,83%{stroke-dashoffset:0;opacity:1}
  90%{stroke-dashoffset:0;opacity:0}
  90.01%,100%{stroke-dashoffset:100;opacity:1}}
@keyframes wg-writeR{
  0%,50.5%{stroke-dashoffset:100;opacity:1;animation-timing-function:cubic-bezier(.35,.05,.2,1)}
  58.5%,83%{stroke-dashoffset:0;opacity:1}
  90%{stroke-dashoffset:0;opacity:0}
  90.01%,100%{stroke-dashoffset:100;opacity:1}}
@keyframes wg-read{0%,36%{opacity:0}42%,84%{opacity:1}90%,100%{opacity:0}}
@keyframes wg-flick{0%,100%{opacity:.93}17%{opacity:1}31%{opacity:.85}48%{opacity:.98}
  63%{opacity:.88}79%{opacity:1}}
@keyframes wg-breathe{0%,100%{opacity:.88}50%{opacity:1}}

.wg-tub{transform-box:view-box;animation:wg-tub 8s 1.24s infinite backwards}
.wg-wh{transform-box:view-box;animation:wg-wheel 8s 1.24s infinite backwards}
.wg-plat{transform-box:view-box;animation:wg-plat 8s 1.24s ease-in-out infinite backwards}
.wg-ptr{transform-box:view-box;transform-origin:600px 100px;transform:rotate(136deg);
  animation:wg-ptr 8s 1.24s cubic-bezier(.4,.06,.3,.96) infinite backwards}
.wg-inkL{animation:wg-writeL 8s 1.24s infinite backwards}
.wg-inkR{animation:wg-writeR 8s 1.24s infinite backwards}
.wg-read{animation:wg-read 8s 1.24s ease-in-out infinite backwards}
.wg-flame{animation:wg-flick 3.7s ease-in-out infinite}
.wg-glow{animation:wg-breathe 6.4s ease-in-out infinite}
.wg-mtub{transform-box:view-box;animation:wg-mtub 8s 1.24s infinite backwards}
.wg-mwh{transform-box:view-box;animation:wg-mwheel 8s 1.24s infinite backwards}
.wg-mplat{transform-box:view-box;animation:wg-mplat 8s 1.24s ease-in-out infinite backwards}
.wg-mptr{transform-box:view-box;transform-origin:280px 84px;transform:rotate(136deg);
  animation:wg-ptr 8s 1.24s cubic-bezier(.4,.06,.3,.96) infinite backwards}

@media (prefers-reduced-motion: reduce){*{animation:none !important}}
/* hoisted from style="" attributes — CSP refuses those */
.weighi1{transform-origin:540px 396px}
.weighi2{transform-origin:570px 407px}
.weighi3{transform-origin:630px 407px}
.weighi4{mix-blend-mode:overlay}
.weighi5{transform-origin:250px 286px}
.weighi6{transform-origin:254px 293px}
.weighi7{transform-origin:306px 293px}

/* ---------------- coal-capped ---------------- */
html,body{background:#0a0a0a}
.cp-fig{display:block;width:100%;height:auto}
.cp-fig text{font-family:"JetBrains Mono",ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
  letter-spacing:.06em;text-transform:uppercase;fill:#7d7a76;font-size:11.5px}
.cp-fig .cp-t{font-size:12.5px;fill:#a5a29e}
.cp-fig .cp-ttl{font-family:"Inter",system-ui,-apple-system,"Segoe UI",Helvetica,Arial,sans-serif;
  font-size:27px;font-weight:600;letter-spacing:.22em;fill:#e8e6e3}
.cp-lead{fill:none;stroke:#3a3835;stroke-width:.9}
.cp-mob{display:none}
@media (max-width:640px){
  body{padding:20px !important}
  .cp-desk{display:none}
  .cp-mob{display:block}
}

/* ---- arrival ------------------------------------------------------------ */
@keyframes cp-fade{from{opacity:0}to{opacity:1}}
@keyframes cp-up{0%{opacity:0;transform:translateY(9px)}55%{opacity:1}100%{opacity:1;transform:translateY(0)}}
@keyframes cp-dawn{0%{opacity:0;transform:scaleY(.66)}16%{opacity:.4}100%{opacity:1;transform:scaleY(1)}}
.cp-sky{animation:cp-fade .6s ease-out both}
.cp-dawn{transform-box:view-box;transform-origin:660px 412px;animation:cp-dawn 3.6s cubic-bezier(.2,.62,.28,1) both}
.cp-band{animation:cp-fade 4.4s .7s ease-out both}
.cp-world{transform-box:view-box;animation:cp-up 1.3s cubic-bezier(.16,.8,.28,1) both}
.cp-lab{animation:cp-fade 1.1s 1.15s ease-out both}
.cp-ttlg{animation:cp-fade 1.2s 1.45s ease-out both}
.cp-grain{opacity:.05;animation:cp-grainin 2.2s ease-out both}
@keyframes cp-grainin{from{opacity:0}to{opacity:.05}}

/* ---- the loop: three things move, none of them turn ---------------------- */
/* every sway starts and ends at rest, so nothing jumps when the settle hands over */
@keyframes cp-swayA{0%{transform:rotate(0)}26%{transform:rotate(.52deg)}74%{transform:rotate(-.52deg)}100%{transform:rotate(0)}}
@keyframes cp-swayB{0%{transform:rotate(0)}24%{transform:rotate(-1deg)}72%{transform:rotate(.95deg)}100%{transform:rotate(0)}}
@keyframes cp-swayC{0%{transform:rotate(0)}28%{transform:rotate(-.62deg)}70%{transform:rotate(.58deg)}100%{transform:rotate(0)}}
@keyframes cp-swayD{0%{transform:rotate(0)}30%{transform:rotate(.2deg)}70%{transform:rotate(-.18deg)}100%{transform:rotate(0)}}
@keyframes cp-setA{0%{transform:rotate(1.9deg)}30%{transform:rotate(-1.05deg)}56%{transform:rotate(.58deg)}
  78%{transform:rotate(-.26deg)}100%{transform:rotate(0)}}
@keyframes cp-setB{0%{transform:rotate(-2.6deg)}32%{transform:rotate(1.5deg)}58%{transform:rotate(-.8deg)}
  80%{transform:rotate(.3deg)}100%{transform:rotate(0)}}
@keyframes cp-setC{0%{transform:rotate(-1.5deg)}34%{transform:rotate(.9deg)}62%{transform:rotate(-.45deg)}
  82%{transform:rotate(.18deg)}100%{transform:rotate(0)}}
@keyframes cp-drift1{0%{transform:translate(0,0);opacity:0}22%{opacity:.55}76%{opacity:.4}100%{transform:translate(62px,-7px);opacity:0}}
@keyframes cp-drift2{0%{transform:translate(-34px,5px);opacity:0}28%{opacity:.4}74%{opacity:.28}100%{transform:translate(48px,-10px);opacity:0}}

.cp-rope{transform-box:view-box;transform-origin:536px 146px;
  animation:cp-setA 4.8s cubic-bezier(.25,.7,.3,1) both, cp-swayA 9s 4.7s ease-in-out infinite}
.cp-tail{transform-box:view-box;transform-origin:495px 301px;
  animation:cp-setB 5.4s cubic-bezier(.25,.7,.3,1) both, cp-swayB 9s 5.3s ease-in-out infinite}
.cp-ropeA{transform-box:view-box;transform-origin:764px 202px;animation:cp-swayD 15s 2s ease-in-out infinite}
.cp-board{transform-box:view-box;transform-origin:228px 316px;
  animation:cp-setC 6.2s cubic-bezier(.25,.7,.3,1) both, cp-swayC 13s 6.1s ease-in-out infinite}
.cp-d1{transform-box:view-box;animation:cp-drift1 14s 1.4s linear infinite}
.cp-d2{transform-box:view-box;animation:cp-drift2 19s 4.8s linear infinite}

.cp-mrope{transform-box:view-box;transform-origin:242px 136px;
  animation:cp-setA 4.8s cubic-bezier(.25,.7,.3,1) both, cp-swayA 9s 4.7s ease-in-out infinite}
.cp-mtail{transform-box:view-box;transform-origin:221px 215px;
  animation:cp-setB 5.4s cubic-bezier(.25,.7,.3,1) both, cp-swayB 9s 5.3s ease-in-out infinite}
.cp-mboard{transform-box:view-box;transform-origin:77px 207px;
  animation:cp-setC 6.2s cubic-bezier(.25,.7,.3,1) both, cp-swayC 13s 6.1s ease-in-out infinite}

@media (prefers-reduced-motion: reduce){*{animation:none !important}}
/* hoisted from style="" attributes — CSP refuses those */
.cappedi1{transform-origin:272px 268px}
.cappedi2{font-size:24px;letter-spacing:.18em}
.cappedi3{font-size:15.5px}
.cappedi4{font-size:15px}

/* ---------------- seam gutter ticks ---------------- */
.tick--0{top:19.00%}
.tick--1{top:35.48%}
.tick--2{top:51.97%}
.tick--3{top:68.45%}
.tick--4{top:87.00%}
