

:root{
  --fx-k:#000000;
  --fx-w:#FFFFFF;
  --fx-g:#8A8A8A;
  --fx-r:#E32B16;
  --fx-ease:cubic-bezier(.16,1,.3,1);
  --fx-sans:"Archivo","Noto Sans SC",-apple-system,"PingFang SC","Microsoft YaHei",sans-serif;
  --fx-mono:"Space Mono","Noto Sans SC",ui-monospace,monospace;
  --fx-pad:clamp(20px,4vw,64px);
}


@font-face{
  font-family:"Archivo";
  font-style:normal;font-weight:900;font-display:swap;
  src:url("fonts/archivo-latin-900.woff2") format("woff2");
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215;
}
@font-face{
  font-family:"Space Mono";
  font-style:normal;font-weight:400;font-display:swap;
  src:url("fonts/space-mono-latin-400.woff2") format("woff2");
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215;
}
@font-face{
  font-family:"Space Mono";
  font-style:normal;font-weight:700;font-display:swap;
  src:url("fonts/space-mono-latin-700.woff2") format("woff2");
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215;
}

@font-face{
  font-family:"Noto Sans SC";
  font-style:normal;font-weight:400;font-display:swap;
  src:url("fonts/noto-sans-sc-400-gb.woff2") format("woff2");
}
@font-face{
  font-family:"Noto Sans SC";
  font-style:normal;font-weight:900;font-display:swap;
  src:url("fonts/noto-sans-sc-900-gb.woff2") format("woff2");
}


.fx-body{
  margin:0;padding:0;
  background:var(--fx-k);color:var(--fx-w);
  font-family:var(--fx-sans);font-weight:400;
  overflow-x:hidden;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
}
.fx-body *,.fx-body *::before,.fx-body *::after{box-sizing:border-box;}
.fx-body ::selection{background:var(--fx-w);color:var(--fx-k);}
.fx-body img,.fx-body video{display:block;max-width:100%;}
.fx-body a{color:inherit;text-decoration:none;}


.fx-lenis html,html.lenis{height:auto;}
.lenis.lenis-smooth{scroll-behavior:auto !important;}
.lenis.lenis-stopped{overscroll-behavior:contain;}


.fx-label{
  font-family:var(--fx-mono);font-weight:400;
  font-size:11px;letter-spacing:.18em;
  text-transform:uppercase;line-height:1.7;
  margin:0;
}
.fx-label--dim{color:var(--fx-g);}
.fx-display{
  font-family:var(--fx-sans);font-weight:900;
  letter-spacing:-.04em;line-height:.98;margin:0;
}
.fx-num{font-variant-numeric:tabular-nums;}


.fx-chapnum{color:var(--fx-r);}


.fx-blend{color:var(--fx-w);mix-blend-mode:difference;}


.fx-sr{
  position:absolute !important;width:1px;height:1px;
  overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);
  white-space:nowrap;
}


.fx-js .fx-hide{visibility:hidden;}
.fx-reduced .fx-hide{visibility:visible;}


.fx-line{
  
  display:inline-block;overflow:hidden;vertical-align:top;
  
  padding-bottom:.08em;margin-bottom:-.08em;
}
.fx-line__in{display:block;will-change:transform;}
.fx-word{display:inline-block;white-space:nowrap;}
.fx-char{display:inline-block;will-change:transform;}


.fx-curtain{
  position:fixed;inset:0;z-index:900;
  pointer-events:none;
  display:flex;align-items:center;justify-content:center;
}
.fx-curtain--dark{background:var(--fx-k);color:var(--fx-w);}
.fx-curtain--light{background:var(--fx-w);color:var(--fx-k);}
.fx-curtain__card{
  font-family:var(--fx-mono);font-weight:400;
  font-size:clamp(12px,1.2vw,15px);
  letter-spacing:.18em;text-transform:uppercase;
  display:flex;gap:.9em;align-items:baseline;
  font-variant-numeric:tabular-nums;
}
.fx-curtain__num{color:var(--fx-r);font-weight:700;}

.fx-curtain--eyelid{background:none;display:block;}
.fx-curtain__lid{
  position:absolute;left:0;right:0;height:calc(50% - 1px);
  will-change:transform;
}
.fx-curtain__lid--top{top:0;}
.fx-curtain__lid--bot{bottom:0;}
.fx-curtain--dark .fx-curtain__lid{background:var(--fx-k);}
.fx-curtain--light .fx-curtain__lid{background:var(--fx-w);}
.fx-curtain--eyelid .fx-curtain__card{
  position:absolute;left:var(--fx-pad);bottom:calc(50% + 24px);
}
.fx-curtain--eyelid.fx-curtain--dark .fx-curtain__card{color:var(--fx-w);}
.fx-curtain--eyelid.fx-curtain--light .fx-curtain__card{color:var(--fx-k);}


.fx-marquee{overflow:hidden;width:100%;}
.fx-marquee__track{
  display:flex;width:max-content;
  will-change:transform;
}
.fx-marquee__chunk{
  display:flex;flex:none;align-items:center;
  white-space:nowrap;
}


@media (prefers-reduced-motion:reduce){
  .fx-line__in,.fx-char,.fx-marquee__track{transform:none !important;}
}
