/* Only signage changes typeface; reading copy keeps Satoshi. */
.led-sign{position:relative;display:block;width:fit-content;max-width:100%;font-family:"Clash Display",var(--display),sans-serif;font-weight:600;line-height:.95}
.led-sign{letter-spacing:inherit}
.led-sign[data-led-ready="true"]{color:transparent!important;text-shadow:none!important}
.led-sign canvas{position:absolute;left:-14px;top:-14px;width:calc(100% + 28px);height:calc(100% + 28px);pointer-events:none}
/* Feather the moving window itself; cached letter artwork stays sharp and aligned. */
.led-refresh{position:absolute;left:-14px;top:-14px;width:calc(100% + 28px);height:var(--led-scan-band);overflow:hidden;pointer-events:none;opacity:var(--led-scan-alpha);mask-image:linear-gradient(to bottom,transparent,#0008 25%,#000 50%,#0008 75%,transparent);animation:led-scan-window var(--led-refresh-ms) linear infinite;animation-play-state:paused}
.led-sign .led-refresh-art{left:0;top:0;width:100%;animation:led-scan-art var(--led-refresh-ms) linear infinite;animation-play-state:paused}
.led-refresh-1,.led-refresh-1 .led-refresh-art{animation-delay:var(--led-refresh-delay)}
.led-sign.is-led-visible .led-refresh,.led-sign.is-led-visible .led-refresh-art{animation-play-state:running;will-change:transform}
.led-sign.led-scrambling .led-refresh{opacity:0}
@keyframes led-scan-window{from{transform:translate3d(0,calc(-1 * var(--led-scan-band)),0)}to{transform:translate3d(0,var(--led-scan-height),0)}}
@keyframes led-scan-art{from{transform:translate3d(0,var(--led-scan-band),0)}to{transform:translate3d(0,calc(-1 * var(--led-scan-height)),0)}}
.led-halo{animation:led-breathe 3.2s cubic-bezier(.45,0,.55,1) infinite}
.led-sign::selection{background:rgba(255,200,120,.35);color:transparent}
#about-title.led-sign,#work-title.led-sign,#dark-title.led-sign{font-size:clamp(40px,4.4vw,62px);line-height:1.06;font-weight:500}
.shero-word.led-sign{letter-spacing:-.015em}
#about-title.led-sign,#work-title.led-sign,#dark-title.led-sign{letter-spacing:.005em}
.gentry-title.led-sign{letter-spacing:.01em}
.gentry-title.led-sign,.gentry-item.is-featured .gentry-title.led-sign{font-size:clamp(27px,2.5vw,36px);line-height:1.12}
#daytimeT.led-sign{font-size:21px;line-height:1.1;min-width:4.3em}
#dark-kicker.led-sign{font-size:15px;line-height:1.3;letter-spacing:.16em}
.dark-strip b.led-sign{font-family:"Clash Display",var(--display),sans-serif;font-weight:600;font-size:clamp(22px,1.65vw,26px);line-height:1.2;letter-spacing:.01em;margin-bottom:4px}
/* The subtitle's general span rule must not add margins to scan windows. */
.dark-strip .led-refresh{margin:0;font-size:inherit;color:inherit}
/* Preserve the hero's established white/difference lettering over its dark film.
   Day artwork is black; the existing moving name acts as its photographic negative. */
html.light:not(.night-zone) .shero-title .led-sign canvas{filter:invert(1)}
@keyframes led-breathe{0%,100%{opacity:.75}50%{opacity:1}}
body.story-open .led-halo,body.story-chrome-hidden .led-halo{animation-play-state:paused}
html.led-paused .led-refresh,html.led-paused .led-refresh-art,body.story-open .led-refresh,body.story-open .led-refresh-art,body.story-chrome-hidden .led-refresh,body.story-chrome-hidden .led-refresh-art{animation-play-state:paused!important}
@media(prefers-reduced-motion:reduce){.led-halo{animation:none}.led-refresh{display:none}}
/* The night bloom is wider than the canvas padding, so it was cut into a visible box. Feather the halo's
   outer 14px so the glow always fades out softly instead of ending at a hard rectangle. */
.led-sign canvas.led-halo{
  -webkit-mask:linear-gradient(to right,transparent,#000 14px,#000 calc(100% - 14px),transparent),linear-gradient(to bottom,transparent,#000 14px,#000 calc(100% - 14px),transparent);
  -webkit-mask-composite:source-in;
  mask:linear-gradient(to right,transparent,#000 14px,#000 calc(100% - 14px),transparent),linear-gradient(to bottom,transparent,#000 14px,#000 calc(100% - 14px),transparent);
  mask-composite:intersect}
