eustlb's picture
eustlb HF Staff
Enlarge the model card shown on hover
d4ba4c0 verified
Raw History Blame Contribute Delete
20.4 kB
/* the page is the whole document here, not a component inside a framework */
* { box-sizing: border-box; }
html, body { margin: 0; padding: 0; }
body {
background: #ffffff;
color: #111111;
font-family: "IBM Plex Sans", system-ui, -apple-system, "Segoe UI", sans-serif;
-webkit-font-smoothing: antialiased;
}
.tts-page { max-width: 1080px; margin: 0 auto; padding: 26px 24px 30px; }
@media (max-width: 600px) { .tts-page { padding: 18px 14px 22px; } }
.tts-chart {
--tts-series: #ff9d00;
--tts-wash: rgba(255, 157, 0, 0.14);
--tts-brand: #ffd21e;
--tts-ink: #111111;
--tts-ink-2: #5b5952;
--tts-muted: #8c8a82;
--tts-grid: #ece9e1;
--tts-axis: #cfccc2;
--tts-hairline: rgba(17, 17, 17, 0.10);
--tts-surface: #ffffff;
--tts-shadow: rgba(17, 17, 17, 0.18);
font-family: "IBM Plex Sans", system-ui, -apple-system, "Segoe UI", sans-serif;
color: var(--tts-ink);
}
.dark .tts-chart {
--tts-series: #ff9d00;
--tts-wash: rgba(255, 157, 0, 0.16);
--tts-ink: #ffffff;
--tts-ink-2: #c3c2b7;
--tts-muted: #8c8a82;
--tts-grid: #2c2c2a;
--tts-axis: #3a3a37;
--tts-hairline: rgba(255, 255, 255, 0.11);
--tts-surface: #232321;
--tts-shadow: rgba(0, 0, 0, 0.6);
}
.tts-chart h1 { margin-bottom: 4px; }
.tts-eyebrow {
display: flex; align-items: center; gap: 9px;
font-family: "IBM Plex Mono", ui-monospace, Menlo, monospace;
font-size: 11px; letter-spacing: 0.14em; text-transform: uppercase;
color: var(--tts-muted);
}
.tts-mark {
width: 11px; height: 11px; border-radius: 3px; flex: none;
background: var(--tts-brand); border: 1px solid var(--tts-hairline);
}
.tts-chart h1 {
font-size: 23px; font-weight: 600; letter-spacing: -0.012em; margin: 0;
color: var(--tts-ink);
}
.tts-totals {
display: flex; flex-wrap: wrap; align-items: baseline; gap: 10px;
font-size: 16px; color: var(--tts-ink-2); margin-bottom: 20px;
}
.tts-asof {
font-family: "IBM Plex Mono", ui-monospace, Menlo, monospace;
font-size: 14px; color: var(--tts-muted);
}
.tts-totals strong {
font-size: 20px; font-weight: 600; color: var(--tts-ink);
font-variant-numeric: tabular-nums;
}
.tts-sep { color: var(--tts-axis); }
.tts-plot { overflow-x: auto; }
.tts-svg { display: block; width: 100%; min-width: 420px; height: auto; }
.tts-bar { transition: opacity 90ms linear; }
.tts-svg:hover .tts-bar { opacity: 0.45; }
/* Hover slots: one per month, drawn above the columns. The highlight path is a
copy of the column so the hovered one stays at full strength while the rest
dim; the tooltip is real SVG revealed by :hover, because gr.HTML strips
scripts and a JS tooltip would never run. */
.tts-slot { cursor: pointer; outline: none; }
.tts-bar-hi, .tts-cross, .tts-tip { opacity: 0; pointer-events: none; }
.tts-slot:hover .tts-bar-hi, .tts-slot:is(:focus-visible,.is-pinned) .tts-bar-hi { opacity: 1; }
.tts-slot:hover .tts-cross, .tts-slot:is(:focus-visible,.is-pinned) .tts-cross { opacity: 1; }
.tts-slot:hover .tts-tip, .tts-slot:is(:focus-visible,.is-pinned) .tts-tip { opacity: 1; }
/* Click (or tab) to a month and its box stays put so the model links inside
are reachable; while one is pinned, passing the cursor over other months
must not swap the box out from under the pointer. */
.tts-svg:has(.tts-slot:is(:focus-visible,.is-pinned)) .tts-slot:hover .tts-tip { opacity: 0; }
.tts-svg:has(.tts-slot:is(:focus-visible,.is-pinned)) .tts-slot:is(:focus-visible,.is-pinned) .tts-tip { opacity: 1; }
.tts-svg:has(.tts-slot:is(:focus-visible,.is-pinned)) .tts-slot:hover .tts-bar-hi,
.tts-svg:has(.tts-slot:is(:focus-visible,.is-pinned)) .tts-slot:hover .tts-cross { opacity: 0; }
.tts-svg:has(.tts-slot:is(:focus-visible,.is-pinned)) .tts-slot:is(:focus-visible,.is-pinned) .tts-bar-hi,
.tts-svg:has(.tts-slot:is(:focus-visible,.is-pinned)) .tts-slot:is(:focus-visible,.is-pinned) .tts-cross { opacity: 1; }
.tts-svg:has(.tts-slot:is(:focus-visible,.is-pinned)) .tts-bar { opacity: 0.45; }
.tts-tip-eyebrow {
fill: var(--tts-muted); font-size: 8.5px; letter-spacing: 0.1em;
font-family: "IBM Plex Mono", ui-monospace, Menlo, monospace;
}
.tts-tip-link text {
fill: var(--tts-ink); font-size: 11.5px; font-weight: 500;
text-decoration: underline; text-underline-offset: 2px;
}
.tts-tip-link:hover text { fill: var(--tts-series); }
.tts-cross { stroke: var(--tts-axis); stroke-width: 1; }
.tts-tip-box {
fill: var(--tts-surface); stroke: var(--tts-hairline); stroke-width: 1;
filter: drop-shadow(0 2px 6px var(--tts-shadow));
}
.tts-tip-swatch { fill: var(--tts-series); }
.tts-tip-title { fill: var(--tts-ink); font-size: 21px; font-weight: 600; }
.tts-tip-label { fill: var(--tts-ink-2); font-size: 19px; }
.tts-tip-value {
fill: var(--tts-ink); font-size: 19px; font-weight: 500; text-anchor: end;
font-family: "IBM Plex Mono", ui-monospace, Menlo, monospace;
font-variant-numeric: tabular-nums;
}
.tts-tip-rule { stroke: var(--tts-hairline); stroke-width: 1; }
.tts-tip-note { fill: var(--tts-ink-2); font-size: 18px; }
@media (prefers-reduced-motion: reduce) {
.tts-bar-hi, .tts-cross, .tts-tip { transition: none; }
}
.tts-tick {
fill: var(--tts-muted); font-size: 22px;
font-family: "IBM Plex Mono", ui-monospace, Menlo, monospace;
font-variant-numeric: tabular-nums;
}
.tts-anno { fill: var(--tts-ink-2); font-size: 11.5px; }
.tts-anno-sub {
fill: var(--tts-muted); font-size: 11px;
font-family: "IBM Plex Mono", ui-monospace, Menlo, monospace;
}
.tts-foot { font-size: 12.5px; color: var(--tts-muted); margin: 12px 0 0; max-width: 80ch; }
/* Release pins: a hairline dropped at the release date, numbered at the top.
The key below resolves the numbers — several releases land within weeks of
each other, so names on the plot would collide. */
.tts-rel-stem { stroke: var(--tts-axis); stroke-width: 1; opacity: 0.55; }
.tts-rel-pin { fill: var(--tts-surface); stroke: var(--tts-axis); stroke-width: 1; }
.tts-rel-num {
fill: var(--tts-ink-2); font-size: 9.5px; text-anchor: middle;
font-family: "IBM Plex Mono", ui-monospace, Menlo, monospace;
}
/* ---- release stream --------------------------------------------------- */
/* Each logo is absolutely placed at its release date as a percentage of the
1040-unit viewBox, so it tracks the chart at any width. Logos overlap where
releases cluster; the surface ring keeps them separable, and hover raises
the one under the cursor above its neighbours. */
.tts-stream {
position: relative;
height: 52px;
margin: 22px 0 0;
min-width: 420px;
}
.tts-rel {
position: absolute; left: var(--x); top: 6px;
transform: translateX(-50%);
width: 32px; height: 32px;
text-decoration: none;
transition: left 240ms cubic-bezier(.2,.8,.3,1);
}
.tts-rel::before {
content: ""; position: absolute; left: 50%; width: 1px;
top: -22px; height: 22px;
background: var(--tts-axis); opacity: 0.3;
transition: background-color 160ms linear, opacity 160ms linear;
}
.tts-av {
width: 32px; height: 32px; border-radius: 50%;
object-fit: cover; display: block;
background: var(--tts-grid);
border: 2px solid var(--tts-surface);
box-shadow: 0 0 0 1px var(--tts-hairline);
transition: transform 180ms cubic-bezier(.2,.8,.3,1), border-color 180ms linear;
transform-origin: center bottom;
}
.tts-rel:hover { z-index: 20; }
.tts-rel:hover .tts-av, .tts-rel:focus-visible .tts-av {
transform: translateY(-5px) scale(1.5);
border-color: var(--tts-series);
}
.tts-rel:hover::before { background: var(--tts-series); opacity: 1; }
/* hover card, floated above the logo over the chart's lower band */
.tts-card {
position: absolute; bottom: calc(100% + 18px); left: 50%;
transform: translateX(-50%) translateY(6px);
display: flex; flex-direction: column; gap: 3px;
min-width: 330px; padding: 18px 22px;
background: var(--tts-surface);
border: 1px solid var(--tts-hairline); border-radius: 10px;
box-shadow: 0 8px 30px var(--tts-shadow);
opacity: 0; pointer-events: none;
transition: opacity 140ms linear, transform 180ms cubic-bezier(.2,.8,.3,1);
}
.tts-card-start .tts-card { left: 0; transform: translateX(0) translateY(4px); }
.tts-card-end .tts-card { left: auto; right: 0; transform: translateX(0) translateY(4px); }
.tts-rel:hover .tts-card, .tts-rel:focus-visible .tts-card {
opacity: 1; transform: translateX(-50%) translateY(0);
}
.tts-card-start:hover .tts-card, .tts-card-end:hover .tts-card {
transform: translateX(0) translateY(0);
}
.tts-card-name {
font-size: 24px; font-weight: 600; letter-spacing: -0.015em;
color: var(--tts-ink); line-height: 1.15;
}
.tts-card-id {
font-family: "IBM Plex Mono", ui-monospace, Menlo, monospace;
font-size: 15px; color: var(--tts-ink-2); overflow-wrap: anywhere;
}
.tts-card-meta {
display: flex; justify-content: space-between; gap: 20px; margin-top: 10px;
padding-top: 10px; border-top: 1px solid var(--tts-hairline);
font-family: "IBM Plex Mono", ui-monospace, Menlo, monospace;
font-size: 14px; color: var(--tts-muted); white-space: nowrap;
}
.tts-stream-cap {
margin: 6px 0 0; padding-left: var(--x0, 5.385%);
font-size: 14px; color: var(--tts-muted);
}
.tts-sr {
position: absolute; width: 1px; height: 1px; overflow: hidden;
clip: rect(0 0 0 0); white-space: nowrap;
}
@media (prefers-reduced-motion: reduce) {
.tts-av, .tts-card { transition: none; }
}
.tts-sub { margin-top: 30px; border-top: 1px solid var(--tts-hairline); padding-top: 18px; }
.tts-sub h2 {
font-size: 14px; font-weight: 600; margin: 0 0 4px; color: var(--tts-ink);
}
.tts-sub > p { margin: 0 0 10px; font-size: 12.5px; color: var(--tts-ink-2); max-width: 84ch; }
.tts-svg-sub { min-width: 640px; }
.tts-bar-sub { opacity: 0.85; }
.tts-bar-sub:hover { opacity: 1; }
.tts-key { margin-top: 22px; border-top: 1px solid var(--tts-hairline); padding-top: 16px; }
.tts-key h2 {
font-family: "IBM Plex Mono", ui-monospace, Menlo, monospace;
font-size: 11px; letter-spacing: 0.14em; text-transform: uppercase;
color: var(--tts-muted); margin: 0 0 14px; font-weight: 500;
}
.tts-key ol {
list-style: none; margin: 0; padding: 0;
display: grid; grid-template-columns: repeat(3, minmax(240px, 1fr)); gap: 11px 28px;
}
.tts-key li {
display: grid; grid-template-columns: 18px minmax(0, 1fr);
column-gap: 9px; row-gap: 1px; font-size: 12.5px; align-items: start;
}
.tts-key-num {
grid-row: span 2;
width: 17px; height: 17px; border-radius: 50%; margin-top: 1px;
border: 1px solid var(--tts-axis); color: var(--tts-muted);
display: inline-flex; align-items: center; justify-content: center;
font-family: "IBM Plex Mono", ui-monospace, Menlo, monospace; font-size: 9.5px;
}
.tts-key-head { display: flex; align-items: baseline; gap: 8px; min-width: 0; }
.tts-key-date {
font-family: "IBM Plex Mono", ui-monospace, Menlo, monospace;
font-size: 11px; color: var(--tts-muted); white-space: nowrap;
}
.tts-key-label { font-weight: 600; color: var(--tts-ink); overflow-wrap: anywhere; }
.tts-key-sub { display: flex; align-items: baseline; gap: 8px; min-width: 0; flex-wrap: wrap; }
.tts-key-id {
color: var(--tts-ink-2); font-size: 11px; text-decoration: none;
overflow-wrap: anywhere; border-bottom: 1px solid transparent;
font-family: "IBM Plex Mono", ui-monospace, Menlo, monospace;
}
.tts-key-id:hover { border-bottom-color: var(--tts-series); color: var(--tts-ink); }
.tts-key-stat {
color: var(--tts-muted); font-size: 11px; white-space: nowrap;
font-variant-numeric: tabular-nums;
}
.tts-key-foot { font-size: 11.5px; color: var(--tts-muted); margin: 16px 0 0; max-width: 92ch; }
@media (max-width: 1040px) { .tts-key ol { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 780px) { .tts-key ol { grid-template-columns: 1fr; } }
@media (prefers-reduced-motion: reduce) { .tts-bar { transition: none; } }
.tts-plot:has(.tts-slot-202210:hover) .tts-rel-202210,.tts-plot:has(.tts-slot-202210.is-pinned) .tts-rel-202210{z-index:5;left:calc(var(--xc) + var(--off))}
.tts-plot:has(.tts-slot-202210:hover) .tts-rel-202210 .tts-av,.tts-plot:has(.tts-slot-202210.is-pinned) .tts-rel-202210 .tts-av{transform:translateY(-5px) scale(1.5);border-color:var(--tts-series)}
.tts-plot:has(.tts-slot-202210:hover) .tts-rel-202210::before,.tts-plot:has(.tts-slot-202210.is-pinned) .tts-rel-202210::before{background:var(--tts-series);opacity:1}
.tts-plot:has(.tts-rel-202210:hover) .tts-slot-202210 .tts-bar-hi,.tts-plot:has(.tts-rel-202210:hover) .tts-slot-202210 .tts-cross{opacity:1}
.tts-plot:has(.tts-slot-202211:hover) .tts-rel-202211,.tts-plot:has(.tts-slot-202211.is-pinned) .tts-rel-202211{z-index:5;left:calc(var(--xc) + var(--off))}
.tts-plot:has(.tts-slot-202211:hover) .tts-rel-202211 .tts-av,.tts-plot:has(.tts-slot-202211.is-pinned) .tts-rel-202211 .tts-av{transform:translateY(-5px) scale(1.5);border-color:var(--tts-series)}
.tts-plot:has(.tts-slot-202211:hover) .tts-rel-202211::before,.tts-plot:has(.tts-slot-202211.is-pinned) .tts-rel-202211::before{background:var(--tts-series);opacity:1}
.tts-plot:has(.tts-rel-202211:hover) .tts-slot-202211 .tts-bar-hi,.tts-plot:has(.tts-rel-202211:hover) .tts-slot-202211 .tts-cross{opacity:1}
.tts-plot:has(.tts-slot-202309:hover) .tts-rel-202309,.tts-plot:has(.tts-slot-202309.is-pinned) .tts-rel-202309{z-index:5;left:calc(var(--xc) + var(--off))}
.tts-plot:has(.tts-slot-202309:hover) .tts-rel-202309 .tts-av,.tts-plot:has(.tts-slot-202309.is-pinned) .tts-rel-202309 .tts-av{transform:translateY(-5px) scale(1.5);border-color:var(--tts-series)}
.tts-plot:has(.tts-slot-202309:hover) .tts-rel-202309::before,.tts-plot:has(.tts-slot-202309.is-pinned) .tts-rel-202309::before{background:var(--tts-series);opacity:1}
.tts-plot:has(.tts-rel-202309:hover) .tts-slot-202309 .tts-bar-hi,.tts-plot:has(.tts-rel-202309:hover) .tts-slot-202309 .tts-cross{opacity:1}
.tts-plot:has(.tts-slot-202402:hover) .tts-rel-202402,.tts-plot:has(.tts-slot-202402.is-pinned) .tts-rel-202402{z-index:5;left:calc(var(--xc) + var(--off))}
.tts-plot:has(.tts-slot-202402:hover) .tts-rel-202402 .tts-av,.tts-plot:has(.tts-slot-202402.is-pinned) .tts-rel-202402 .tts-av{transform:translateY(-5px) scale(1.5);border-color:var(--tts-series)}
.tts-plot:has(.tts-slot-202402:hover) .tts-rel-202402::before,.tts-plot:has(.tts-slot-202402.is-pinned) .tts-rel-202402::before{background:var(--tts-series);opacity:1}
.tts-plot:has(.tts-rel-202402:hover) .tts-slot-202402 .tts-bar-hi,.tts-plot:has(.tts-rel-202402:hover) .tts-slot-202402 .tts-cross{opacity:1}
.tts-plot:has(.tts-slot-202407:hover) .tts-rel-202407,.tts-plot:has(.tts-slot-202407.is-pinned) .tts-rel-202407{z-index:5;left:calc(var(--xc) + var(--off))}
.tts-plot:has(.tts-slot-202407:hover) .tts-rel-202407 .tts-av,.tts-plot:has(.tts-slot-202407.is-pinned) .tts-rel-202407 .tts-av{transform:translateY(-5px) scale(1.5);border-color:var(--tts-series)}
.tts-plot:has(.tts-slot-202407:hover) .tts-rel-202407::before,.tts-plot:has(.tts-slot-202407.is-pinned) .tts-rel-202407::before{background:var(--tts-series);opacity:1}
.tts-plot:has(.tts-rel-202407:hover) .tts-slot-202407 .tts-bar-hi,.tts-plot:has(.tts-rel-202407:hover) .tts-slot-202407 .tts-cross{opacity:1}
.tts-plot:has(.tts-slot-202503:hover) .tts-rel-202503,.tts-plot:has(.tts-slot-202503.is-pinned) .tts-rel-202503{z-index:5;left:calc(var(--xc) + var(--off))}
.tts-plot:has(.tts-slot-202503:hover) .tts-rel-202503 .tts-av,.tts-plot:has(.tts-slot-202503.is-pinned) .tts-rel-202503 .tts-av{transform:translateY(-5px) scale(1.5);border-color:var(--tts-series)}
.tts-plot:has(.tts-slot-202503:hover) .tts-rel-202503::before,.tts-plot:has(.tts-slot-202503.is-pinned) .tts-rel-202503::before{background:var(--tts-series);opacity:1}
.tts-plot:has(.tts-rel-202503:hover) .tts-slot-202503 .tts-bar-hi,.tts-plot:has(.tts-rel-202503:hover) .tts-slot-202503 .tts-cross{opacity:1}
.tts-plot:has(.tts-slot-202504:hover) .tts-rel-202504,.tts-plot:has(.tts-slot-202504.is-pinned) .tts-rel-202504{z-index:5;left:calc(var(--xc) + var(--off))}
.tts-plot:has(.tts-slot-202504:hover) .tts-rel-202504 .tts-av,.tts-plot:has(.tts-slot-202504.is-pinned) .tts-rel-202504 .tts-av{transform:translateY(-5px) scale(1.5);border-color:var(--tts-series)}
.tts-plot:has(.tts-slot-202504:hover) .tts-rel-202504::before,.tts-plot:has(.tts-slot-202504.is-pinned) .tts-rel-202504::before{background:var(--tts-series);opacity:1}
.tts-plot:has(.tts-rel-202504:hover) .tts-slot-202504 .tts-bar-hi,.tts-plot:has(.tts-rel-202504:hover) .tts-slot-202504 .tts-cross{opacity:1}
.tts-plot:has(.tts-slot-202505:hover) .tts-rel-202505,.tts-plot:has(.tts-slot-202505.is-pinned) .tts-rel-202505{z-index:5;left:calc(var(--xc) + var(--off))}
.tts-plot:has(.tts-slot-202505:hover) .tts-rel-202505 .tts-av,.tts-plot:has(.tts-slot-202505.is-pinned) .tts-rel-202505 .tts-av{transform:translateY(-5px) scale(1.5);border-color:var(--tts-series)}
.tts-plot:has(.tts-slot-202505:hover) .tts-rel-202505::before,.tts-plot:has(.tts-slot-202505.is-pinned) .tts-rel-202505::before{background:var(--tts-series);opacity:1}
.tts-plot:has(.tts-rel-202505:hover) .tts-slot-202505 .tts-bar-hi,.tts-plot:has(.tts-rel-202505:hover) .tts-slot-202505 .tts-cross{opacity:1}
.tts-plot:has(.tts-slot-202507:hover) .tts-rel-202507,.tts-plot:has(.tts-slot-202507.is-pinned) .tts-rel-202507{z-index:5;left:calc(var(--xc) + var(--off))}
.tts-plot:has(.tts-slot-202507:hover) .tts-rel-202507 .tts-av,.tts-plot:has(.tts-slot-202507.is-pinned) .tts-rel-202507 .tts-av{transform:translateY(-5px) scale(1.5);border-color:var(--tts-series)}
.tts-plot:has(.tts-slot-202507:hover) .tts-rel-202507::before,.tts-plot:has(.tts-slot-202507.is-pinned) .tts-rel-202507::before{background:var(--tts-series);opacity:1}
.tts-plot:has(.tts-rel-202507:hover) .tts-slot-202507 .tts-bar-hi,.tts-plot:has(.tts-rel-202507:hover) .tts-slot-202507 .tts-cross{opacity:1}
.tts-plot:has(.tts-slot-202509:hover) .tts-rel-202509,.tts-plot:has(.tts-slot-202509.is-pinned) .tts-rel-202509{z-index:5;left:calc(var(--xc) + var(--off))}
.tts-plot:has(.tts-slot-202509:hover) .tts-rel-202509 .tts-av,.tts-plot:has(.tts-slot-202509.is-pinned) .tts-rel-202509 .tts-av{transform:translateY(-5px) scale(1.5);border-color:var(--tts-series)}
.tts-plot:has(.tts-slot-202509:hover) .tts-rel-202509::before,.tts-plot:has(.tts-slot-202509.is-pinned) .tts-rel-202509::before{background:var(--tts-series);opacity:1}
.tts-plot:has(.tts-rel-202509:hover) .tts-slot-202509 .tts-bar-hi,.tts-plot:has(.tts-rel-202509:hover) .tts-slot-202509 .tts-cross{opacity:1}
.tts-plot:has(.tts-slot-202512:hover) .tts-rel-202512,.tts-plot:has(.tts-slot-202512.is-pinned) .tts-rel-202512{z-index:5;left:calc(var(--xc) + var(--off))}
.tts-plot:has(.tts-slot-202512:hover) .tts-rel-202512 .tts-av,.tts-plot:has(.tts-slot-202512.is-pinned) .tts-rel-202512 .tts-av{transform:translateY(-5px) scale(1.5);border-color:var(--tts-series)}
.tts-plot:has(.tts-slot-202512:hover) .tts-rel-202512::before,.tts-plot:has(.tts-slot-202512.is-pinned) .tts-rel-202512::before{background:var(--tts-series);opacity:1}
.tts-plot:has(.tts-rel-202512:hover) .tts-slot-202512 .tts-bar-hi,.tts-plot:has(.tts-rel-202512:hover) .tts-slot-202512 .tts-cross{opacity:1}
.tts-plot:has(.tts-slot-202602:hover) .tts-rel-202602,.tts-plot:has(.tts-slot-202602.is-pinned) .tts-rel-202602{z-index:5;left:calc(var(--xc) + var(--off))}
.tts-plot:has(.tts-slot-202602:hover) .tts-rel-202602 .tts-av,.tts-plot:has(.tts-slot-202602.is-pinned) .tts-rel-202602 .tts-av{transform:translateY(-5px) scale(1.5);border-color:var(--tts-series)}
.tts-plot:has(.tts-slot-202602:hover) .tts-rel-202602::before,.tts-plot:has(.tts-slot-202602.is-pinned) .tts-rel-202602::before{background:var(--tts-series);opacity:1}
.tts-plot:has(.tts-rel-202602:hover) .tts-slot-202602 .tts-bar-hi,.tts-plot:has(.tts-rel-202602:hover) .tts-slot-202602 .tts-cross{opacity:1}
.tts-plot:has(.tts-slot-202609:hover) .tts-rel-202609,.tts-plot:has(.tts-slot-202609.is-pinned) .tts-rel-202609{z-index:5;left:calc(var(--xc) + var(--off))}
.tts-plot:has(.tts-slot-202609:hover) .tts-rel-202609 .tts-av,.tts-plot:has(.tts-slot-202609.is-pinned) .tts-rel-202609 .tts-av{transform:translateY(-5px) scale(1.5);border-color:var(--tts-series)}
.tts-plot:has(.tts-slot-202609:hover) .tts-rel-202609::before,.tts-plot:has(.tts-slot-202609.is-pinned) .tts-rel-202609::before{background:var(--tts-series);opacity:1}
.tts-plot:has(.tts-rel-202609:hover) .tts-slot-202609 .tts-bar-hi,.tts-plot:has(.tts-rel-202609:hover) .tts-slot-202609 .tts-cross{opacity:1}