@font-face{font-family:'Anton';font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/anton-400.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/ibm-plex-mono-400.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/ibm-plex-mono-500.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/ibm-plex-mono-600.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
@font-face{font-family:'IBM Plex Sans';font-style:normal;font-weight:400 600;font-display:swap;src:url(/fonts/ibm-plex-sans.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
/* The fallback that stands in until IBM Plex Sans arrives, sized to occupy the same lines so the swap moves nothing (2.8.1).
   Figures read from the font files by lib/fontMetrics.js: node lib/fontMetrics.js web/fonts/ibm-plex-sans.woff2 <arial.ttf> */
@font-face{font-family:"IBM Plex Sans Fallback";src:local("Arial"),local("Liberation Sans"),local("Arimo"),local("Helvetica");size-adjust:101.54%;ascent-override:100.95%;descent-override:27.08%;line-gap-override:0.00%}
:root{
  --ground:#0A0D12; --surface:#131922; --raise:#1B2430; --hair:#222C39;
  --ink:#E9EEF6; --ink-2:#A4B0C2; --muted:#6C7889;
  --hot:#F5A524;
  --warn:#C8320A; --dead:#E0574D; --cool:#5AA9E6; --none:#4A5666;
  --shadow:0 1px 0 rgba(255,255,255,.03);
}
@media (prefers-color-scheme:light){:root:not([data-theme="dark"]){
  --ground:#F6F4EF; --surface:#FFFFFF; --raise:#EFEBE2; --hair:#E1DDD3;
  --ink:#14181E; --ink-2:#4A535F; --muted:#7A8493;
  --hot:#B3730A;
  --warn:#C8320A; --dead:#AF4034; --cool:#2F6E9E; --none:#A8AFB8;
  --shadow:0 1px 2px rgba(20,24,30,.05);
}}
:root[data-theme="light"]{
  --ground:#F6F4EF; --surface:#FFFFFF; --raise:#EFEBE2; --hair:#E1DDD3;
  --ink:#14181E; --ink-2:#4A535F; --muted:#7A8493;
  --hot:#B3730A;
  --warn:#C8320A; --dead:#AF4034; --cool:#2F6E9E; --none:#A8AFB8;
  --shadow:0 1px 2px rgba(20,24,30,.05);
}
*{box-sizing:border-box}
/* The artifact host ships this reset; served anywhere else, .more{display:block} beats [hidden]
   and the "Show more" button stays up with stale text. */
[hidden]{display:none!important}
/* the top of the list as plain HTML (build-web.js) — on screen only until the script draws the rows */
.static-top{margin:0;padding:0 0 0 1.5rem;color:var(--ink-2);font-size:.9rem;line-height:1.7}
.static-top b{color:var(--ink);font-weight:600}
body{background:var(--ground);color:var(--ink);margin:0;
  font-family:"IBM Plex Sans","IBM Plex Sans Fallback",-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
  font-size:15px;line-height:1.5;padding:0 clamp(.75rem,3vw,2rem) 5rem}
.wrap{max-width:1300px;margin:0 auto}

.masthead{padding:clamp(2rem,5vw,3.5rem) 0 1.35rem}
h1{font-family:Anton,Impact,"Arial Narrow",sans-serif;font-weight:400;
  font-size:clamp(3rem,10vw,6.5rem);line-height:.86;text-transform:uppercase;margin:0 0 .9rem}
h1 em{font-style:normal;color:var(--hot);display:block}
h1 .boom{font-family:Anton,Impact,sans-serif;font-style:normal;font-size:.24em;
  color:var(--cool);letter-spacing:.01em;display:inline-block;transform:rotate(-6deg);
  vertical-align:.62em;margin:0 .1em 0 .14em;white-space:nowrap}
@media (prefers-reduced-motion:no-preference){
  h1 .boom{transition:transform .18s ease} h1:hover .boom{transform:rotate(-6deg) scale(1.08)}}
.standfirst{font-size:1.02rem;color:var(--ink-2);max-width:64ch;margin:0}
.standfirst b{color:var(--ink);font-weight:600}
.rule{height:3px;background:var(--ink);margin:1.35rem 0 0}

.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));border-bottom:1px solid var(--hair)}
.stats div{padding:.85rem 1rem .85rem 0}
.stats dt{font-family:"IBM Plex Mono",monospace;font-size:.6rem;letter-spacing:.13em;
  text-transform:uppercase;color:var(--muted);margin:0 0 .18rem}
.stats dd{margin:0;font-family:Anton,Impact,sans-serif;font-size:1.9rem;line-height:1;color:var(--ink)}
.stats dd small{font-family:"IBM Plex Mono",monospace;font-size:.62rem;color:var(--muted);
  display:block;margin-top:.28rem;line-height:1.35}

/* Filters. Top row: the everyday actions — search, quick picks, sort. Below: three labelled
   groups. A quick pick only SETS the two score selects, so there is a single filter state. */
.filters{position:sticky;top:0;z-index:20;background:var(--ground);
  padding:.8rem 0 .75rem;border-bottom:1px solid var(--hair)}
.ftop,.fgroups,.fgroup{display:flex;flex-wrap:wrap;align-items:flex-end}
.ftop{gap:.55rem .8rem}
.fgroups{gap:.65rem 2rem;margin-top:.7rem;padding-top:.7rem;border-top:1px solid var(--hair)}
/* no dividers: the coloured caption marks each group, so nothing dangles when one wraps */
.fgroup{gap:.5rem}
.gcap{min-height:34px;display:flex;align-items:center;padding-right:.25rem;
  font-family:"IBM Plex Mono",monospace;font-size:.6rem;font-weight:600;letter-spacing:.14em;
  text-transform:uppercase;color:var(--hot)}
.field{display:flex;flex-direction:column;gap:.25rem;min-width:0}
.field label,.flabel{font-family:"IBM Plex Mono",monospace;font-size:.58rem;letter-spacing:.13em;
  text-transform:uppercase;color:var(--muted)}
.field select,.field input{font-family:"IBM Plex Mono",monospace;font-size:.8rem;color:var(--ink);
  background:var(--surface);border:1px solid var(--hair);border-radius:0;
  padding:.42rem .55rem;min-height:34px;box-shadow:var(--shadow);max-width:10.5rem}
#sort{max-width:none}
.search{flex:1 1 14rem}
.search input{width:100%;max-width:none}
select:focus-visible,input:focus-visible,button:focus-visible{outline:2px solid var(--hot);outline-offset:1px}
.picks{display:flex;flex-wrap:wrap;gap:.35rem}
.pick,button.reset{font-family:"IBM Plex Mono",monospace;font-size:.72rem;color:var(--ink-2);
  background:var(--surface);border:1px solid var(--hair);padding:.45rem .75rem;min-height:34px;
  cursor:pointer;white-space:nowrap;box-shadow:var(--shadow)}
.pick:hover,button.reset:hover:not(:disabled){border-color:var(--hot);color:var(--hot)}
.pick.boom:hover{border-color:var(--cool);color:var(--cool)}
.pick.demo:hover{border-color:var(--ink);color:var(--ink)}
.pick[aria-pressed="true"]{background:var(--hot);border-color:var(--hot);color:var(--ground)}
.pick.boom[aria-pressed="true"]{background:var(--cool);border-color:var(--cool);color:var(--ground)}
.pick.demo[aria-pressed="true"]{background:var(--ink);border-color:var(--ink);color:var(--ground)}
button.reset:disabled{opacity:.5;cursor:default}
.fend{display:flex;align-items:flex-end;gap:.8rem;margin-left:auto}
.count{font-family:"IBM Plex Mono",monospace;font-size:.75rem;color:var(--muted);white-space:nowrap;padding-bottom:.5rem;margin:0}
.count b{color:var(--hot);font-variant-numeric:tabular-nums;font-weight:600}
@media (max-width:780px){
  .filters{position:static}
  .fgroup{width:100%}
  .gcap{flex-basis:100%;min-height:0}
  .fgroup .field{flex:1 1 8.5rem}
  .fgroup .field select{width:100%;max-width:none}
  .fend{margin-left:0;width:100%;justify-content:space-between}
}

.key{display:flex;flex-wrap:wrap;gap:.35rem 1.4rem;align-items:center;
  font-family:"IBM Plex Mono",monospace;font-size:.66rem;color:var(--muted);
  padding:.6rem 0;border-bottom:1px solid var(--hair)}
.key b{font-weight:400;color:var(--ink-2)}
.swatch{display:inline-flex;gap:2px;vertical-align:-2px;margin-right:.35rem}
.swatch i{width:9px;height:9px;background:var(--hot);display:block}
.swatch i:nth-child(1){opacity:.18}.swatch i:nth-child(2){opacity:.5}.swatch i:nth-child(3){opacity:1}
.deadkey{display:inline-block;width:9px;height:9px;margin-right:.35rem;vertical-align:-1px;border:1.5px solid var(--dead)}

.row{display:grid;grid-template-columns:2.4rem 68px 4.9rem 4.4rem minmax(150px,1fr) 5.6rem 8.8rem;
  gap:0 1rem;align-items:center;padding:.75rem 0;border-bottom:1px solid var(--hair);cursor:pointer}
.row:hover,.row[aria-expanded="true"]{background:var(--surface)}
.poster{width:68px;height:102px;object-fit:cover;background:var(--raise);border-radius:2px;display:block;box-shadow:var(--shadow)}
.noart{width:68px;height:102px;background:var(--raise);border-radius:2px;display:flex;
  align-items:center;justify-content:center;font-family:"IBM Plex Mono",monospace;
  font-size:.5rem;color:var(--muted);text-align:center;line-height:1.3}
.rank{font-family:"IBM Plex Mono",monospace;font-size:.72rem;color:var(--muted);
  font-variant-numeric:tabular-nums;text-align:right}

.scoreblk,.boomblk{display:flex;flex-direction:column;align-items:flex-start;gap:.2rem}
.big{font-family:Anton,Impact,sans-serif;font-size:2.05rem;line-height:.92;
  color:var(--hot);font-variant-numeric:tabular-nums}
.boomblk .big{color:var(--cool)}
.big span{font-family:"IBM Plex Mono",monospace;font-size:.6rem;color:var(--muted);letter-spacing:.05em;margin-left:.1rem}
.big.na{color:var(--none)}
.stars{position:relative;width:70px;height:8px}
.stars i{position:absolute;left:0;top:0;bottom:0;
  -webkit-mask:var(--sm) left center/7px 8px repeat-x;mask:var(--sm) left center/7px 8px repeat-x}
.stars .t{right:0;background:var(--hair)} .stars .f{background:var(--hot)}
.boomblk .stars .f{background:var(--cool)}
.qflag{font-family:"IBM Plex Mono",monospace;font-size:.5rem;letter-spacing:.06em;
  color:var(--muted);text-transform:uppercase;min-height:.7rem}

.titleblk h3{margin:0;font-size:1rem;font-weight:600;line-height:1.25}
.titleblk h3 a.tl{color:inherit;text-decoration:none} .titleblk h3 a.tl:hover{color:var(--hot);text-decoration:underline}
.yr{font-weight:400;color:var(--ink-2);font-variant-numeric:tabular-nums}
.meta{display:block;font-family:"IBM Plex Mono",monospace;font-size:.66rem;color:var(--muted);margin-top:.15rem}
/* Rating pills in their owners' colours: IMDb gold #F5C518 (IMDb's brand page), Rotten Tomatoes red
   #FA320A and Metacritic black / #F2F2F2 / #FFBD3F (their logo files). The Metascore sits in its band
   colour; Metacritic publishes the bands, not the green and red values used here.
   Text pills, never the logos — README, "Ratings". */
.pill{display:inline-flex;align-items:center;gap:.28rem;font-family:"IBM Plex Mono",monospace;font-size:.6rem;
  font-weight:600;line-height:1;padding:.22rem .42rem;border-radius:3px;text-decoration:none;white-space:nowrap}
a.pill:hover{filter:brightness(1.1)}
.pill.imdb{background:#F5C518;color:#000}
.pill.rt{background:#FA320A;color:#fff}
.pill.mc{background:#000;color:#F2F2F2;padding:.14rem .14rem .14rem .42rem;box-shadow:inset 0 0 0 1px rgba(255,255,255,.2)}
.pill.mc b{display:inline-block;min-width:1.5rem;text-align:center;padding:.1rem .2rem;border-radius:2px;color:#000;font-weight:700}
.pill.mc b.g{background:#00CE7A} .pill.mc b.y{background:#FFBD3F} .pill.mc b.r{background:#FF6874}
.pill .sm{display:none}
.tag{display:inline-block;font-family:"IBM Plex Mono",monospace;font-size:.58rem;
  border:1px solid var(--dead);color:var(--dead);padding:0 .25rem;margin-left:.35rem;vertical-align:1px}
.chips{display:flex;flex-wrap:wrap;align-items:center;gap:.22rem;margin-top:.25rem}
.chip{font-family:"IBM Plex Mono",monospace;font-size:.54rem;color:var(--muted);
  border:1px solid var(--hair);padding:0 .28rem;border-radius:2px}
a.chip{color:var(--ink-2);text-decoration:none}
/* the release the BOOM was read from: disc solid, stream dashed */
.chip.disc{color:var(--ink);border:1px solid var(--ink-2)}
.chip.stream{color:var(--cool);border:1px dashed var(--cool)}
a.chip:hover{border-color:var(--hot);color:var(--hot)}
.tag.chk{border-color:var(--hot);color:var(--hot)}
.tag.sub{background:var(--warn);border-color:var(--warn);color:#fff;font-weight:700}
.row .demo{display:inline-block;font-family:"IBM Plex Mono",monospace;font-size:.62rem;font-weight:600;
  border:1px solid var(--ink-2);color:var(--ink);padding:0 .3rem;margin-left:.45rem;vertical-align:1px}
.row .demo.worthy{background:var(--ink);color:var(--ground);border-color:var(--ink)}
.pill .py{font-weight:400;opacity:.85;margin-left:.3rem}

.pills{display:grid;grid-template-columns:1fr;gap:.16rem}
.pl{display:grid;grid-template-columns:1.05rem 1fr 1.5rem;align-items:center;gap:.3rem;
  font-family:"IBM Plex Mono",monospace;font-size:.6rem;color:var(--muted)}
.pl u{display:block;height:3px;background:var(--hair);text-decoration:none;position:relative}
.pl u b{position:absolute;left:0;top:0;bottom:0;background:var(--cool)}
.pl em{font-style:normal;text-align:right;color:var(--ink-2);font-variant-numeric:tabular-nums}

.plan{display:flex;gap:9px;align-items:flex-start;justify-self:end}
.bed,.hgt{display:grid;gap:3px}
.bed{grid-template-columns:repeat(3,12px)} .hgt{grid-template-columns:repeat(2,12px)}
.sp{width:12px;height:12px;background:var(--hot);border-radius:1px;opacity:calc(.10 + .90 * var(--l,0))}
.sp.void{background:none;opacity:1}
.sp.off{background:none;border:1.5px solid var(--dead);opacity:1}
.plancap{font-family:"IBM Plex Mono",monospace;font-size:.5rem;letter-spacing:.1em;
  color:var(--muted);text-transform:uppercase;margin-top:3px;text-align:center}
.noplan{font-family:"IBM Plex Mono",monospace;font-size:.55rem;color:var(--muted);
  justify-self:end;text-align:right;line-height:1.4;max-width:8.5rem}

.detail{grid-column:1/-1;padding:.9rem 0 .4rem;display:none}
.row[aria-expanded="true"] + .detail{display:block}
.dgrid{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(250px,1fr);gap:1.6rem;align-items:start}
/* Channel chart. Bar and the figure above it: the channel's mean level against the film's most
   active channel, drawn LINEARLY so the bar is exactly the number printed on it. Below the name:
   the share of the runtime the channel carries any signal. */
.chans{display:flex;align-items:flex-end;overflow-x:auto;padding-bottom:.2rem}
.cg{display:flex;flex-direction:column;gap:.4rem;padding:0 .85rem;border-left:1px solid var(--hair)}
.cg:first-child{padding-left:0;border-left:0}
.cg:last-child{padding-right:0}
.cgn{font-family:"IBM Plex Mono",monospace;font-size:.55rem;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}
.cgb{display:flex;gap:.4rem}
.ch{display:flex;flex-direction:column;align-items:center;gap:.25rem;width:30px}
.cv{font-family:"IBM Plex Mono",monospace;font-size:.62rem;color:var(--ink);font-variant-numeric:tabular-nums}
.cb{width:100%;height:88px;display:flex;align-items:flex-end;background:var(--raise)}
.cb u{display:block;width:100%;background:var(--hot);text-decoration:none}
.ch.off .cv{color:var(--dead)}
.ch.off .cb{background:repeating-linear-gradient(45deg,var(--dead) 0 1px,transparent 1px 5px);opacity:.55}
.cn{font-family:"IBM Plex Mono",monospace;font-size:.58rem;color:var(--ink-2)}
.cu{font-family:"IBM Plex Mono",monospace;font-size:.55rem;color:var(--muted);font-variant-numeric:tabular-nums}
.chkey{font-family:"IBM Plex Mono",monospace;font-size:.6rem;color:var(--muted);margin:.7rem 0 0;line-height:1.5}
.chkey b{font-weight:500;color:var(--ink-2)}
.facts{font-family:"IBM Plex Mono",monospace;font-size:.7rem;color:var(--ink-2);margin:0}
.facts div{display:flex;justify-content:space-between;gap:1rem;padding:.24rem 0;border-bottom:1px solid var(--hair)}
.facts dt{color:var(--muted)} .facts dd{margin:0;color:var(--ink);text-align:right}
.nochan{font-family:"IBM Plex Mono",monospace;font-size:.7rem;color:var(--muted);line-height:1.6}

.empty{padding:3.5rem 0;text-align:center;color:var(--muted)}
.more{display:block;width:100%;margin:1.3rem 0;padding:.8rem;cursor:pointer;
  font-family:"IBM Plex Mono",monospace;font-size:.76rem;letter-spacing:.06em;text-transform:uppercase;
  color:var(--ink-2);background:var(--surface);border:1px solid var(--hair)}
.more:hover{border-color:var(--hot);color:var(--hot)}

.notes{margin-top:3rem;border-top:3px solid var(--ink);padding-top:1.4rem}
.notes h2{font-family:Anton,Impact,sans-serif;font-weight:400;font-size:1.7rem;text-transform:uppercase;margin:0 0 1.1rem}
.notes ol{margin:0;padding-left:1.25rem;max-width:74ch}
.notes li{margin-bottom:.8rem;color:var(--ink-2)}
.notes li b{color:var(--ink);font-weight:600}
.notes .hot{color:var(--hot);font-weight:600} .notes .cool{color:var(--cool);font-weight:600}
/* the Nvexx brand line: the logo is the N of Nvexx, inlined so the single-file page needs nothing external */
.brand{font-family:Anton,Impact,"Arial Narrow",sans-serif;font-weight:400;font-size:1.7rem;text-transform:uppercase;
  margin:0 0 1.1rem;line-height:1.1;display:flex;align-items:center;flex-wrap:wrap;gap:0 .35em}
.brand a{color:var(--ink);text-decoration:none;display:inline-flex;align-items:center}
.brand a:hover,.brand a:focus-visible{color:var(--hot)}
.brand img{height:1.15em;width:auto;display:block;margin-right:-.02em}
.brand em{font-style:normal;color:var(--hot)}
.brand .boom{font-size:.6em;color:var(--cool);display:inline-block;transform:rotate(-6deg);margin:0 .15em;white-space:nowrap}
.credit{margin-top:2rem;padding-top:1rem;border-top:1px solid var(--hair);
  font-family:"IBM Plex Mono",monospace;font-size:.68rem;color:var(--muted);line-height:1.75}
.credit a{color:var(--hot)}

@media (max-width:1180px){
  .row{grid-template-columns:2.2rem 68px 4.9rem 4.4rem 1fr 8.8rem;gap:.35rem .7rem}
  .pills{display:none}}
@media (max-width:780px){
  .row{grid-template-columns:2rem 68px 4.2rem 4.2rem 1fr}
  .plan,.noplan{display:none} .dgrid{grid-template-columns:1fr}
  .chans{flex-wrap:wrap;row-gap:.9rem} .cg{padding:0 .6rem} .ch{width:24px}
  .pill .lg{display:none} .pill .sm{display:inline}}

/* film pages */
.film-head{display:flex;justify-content:space-between;align-items:baseline;gap:1rem;flex-wrap:wrap;padding:1.2rem 0 .6rem;border-bottom:3px solid var(--ink)}
.film-head a{font-family:Anton,Impact,sans-serif;font-size:1.25rem;text-transform:uppercase;color:var(--ink);text-decoration:none;letter-spacing:.01em}
.film-head a b{color:var(--hot)} .film-head a i{color:var(--cool);font-style:normal;font-size:.7em}
.film-head small{font-family:"IBM Plex Mono",monospace;font-size:.62rem;color:var(--muted);letter-spacing:.1em;text-transform:uppercase}
h1.film{font-family:Anton,Impact,sans-serif;font-weight:400;font-size:clamp(1.8rem,5vw,3rem);line-height:1;margin:1.4rem 0 .3rem;text-transform:uppercase}
h1.film .yr{color:var(--muted);font-size:.6em}
.film-sum{font-size:1.02rem;color:var(--ink-2);max-width:70ch;margin:0 0 1.2rem}
.film-sum b{color:var(--ink)}
.film-hero{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:1.5rem;align-items:start}
.film-art{margin:1.4rem 0 0;width:min(190px,34vw)} .film-art img{width:100%;height:auto;display:block;border-radius:2px;box-shadow:var(--shadow)}
:root{--sm:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='7' height='8'%3E%3Cpath d='M3.5.6l1 2.1 2.3.3-1.7 1.5.4 2.2-2-1.1-2 1.1.4-2.2L.2 3l2.3-.3z' fill='%23000'/%3E%3C/svg%3E")}
.film-page .row{cursor:default;grid-template-columns:2.4rem 4.9rem 4.4rem minmax(150px,1fr) 5.6rem 8.8rem} .film-page .row:hover{background:transparent}
@media (max-width:1180px){.film-page .row{grid-template-columns:2.2rem 4.9rem 4.4rem 1fr 8.8rem}}
@media (max-width:780px){.film-page .row{grid-template-columns:2rem 4.2rem 4.2rem 1fr}}
.film-page .row .rank{visibility:hidden}   /* the slot only: a film's page carries its scores, not its position */
.film-back{margin:1.6rem 0 0;font-family:"IBM Plex Mono",monospace;font-size:.72rem}
.film-back a{color:var(--hot)}
.ver::after{content:" · v2.9"}
.vn::after{content:"2.9 · 23-10-2026 16:35"}

/* the channel chart on a film page (lib/channelChart.js) */
.chan{margin:2.2rem 0 0;border-top:1px solid var(--hair);padding-top:1.3rem}
.chan h2{font-family:Anton,Impact,sans-serif;font-weight:400;font-size:1.35rem;text-transform:uppercase;margin:0 0 .5rem}
.chan p{color:var(--ink-2);max-width:74ch;margin:0 0 1rem;font-size:.95rem} .chan p b{color:var(--ink);font-weight:600} .chan p b.hot{color:var(--hot)}
.chan p.xn{font-size:.8rem;color:var(--muted);margin:.8rem 0 0}
.chan-grid{display:grid;grid-template-columns:2.4rem minmax(0,1fr) 3.4rem;gap:2px .6rem;align-items:center;font-family:"IBM Plex Mono",monospace;font-size:.68rem;font-variant-numeric:tabular-nums}
.chan-grid svg{display:block;width:100%;height:20px;background:var(--surface)}
.chan-grid .xg{grid-column:1/-1;font-size:.6rem;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);margin-top:.55rem}
.chan-grid .xg:first-child{margin-top:0}
.chan-grid .xl{color:var(--ink-2)} .chan-grid .xp{text-align:right;color:var(--hot)} .chan-grid .xd{color:var(--none)}
.chan-grid .xb{fill:var(--cool)} .chan-grid .x1{fill:var(--hot);opacity:.45} .chan-grid .x2{fill:var(--hot)}
.chan-grid .xt{display:flex;justify-content:space-between;color:var(--muted);font-size:.6rem;padding-top:.15rem}
