/* White companion metric: keep the number/zone large, the BPM unit compact. */
.theme-signal .signal-tv-white b{white-space:nowrap}
.theme-signal .signal-tv-side-label{font:900 .34em/1 system-ui;font-style:normal;letter-spacing:-.04em;margin-left:.12em;vertical-align:baseline}
.theme-signal .signal-tv-zone-near .signal-tv-metric-row{gap:clamp(8px,.8vw,16px)}.theme-signal .signal-tv-zone-near .signal-tv-metric-row>div:first-child{flex:0 0 auto}.theme-signal .signal-tv-zone-near .signal-tv-white{flex:0 0 auto;max-width:none;align-self:center;padding:0}.theme-signal .signal-tv-zone-near .signal-tv-white b{font-size:clamp(46px,6vw,96px)}.theme-signal .signal-tv-zone-near .signal-tv-white small{display:none}
.theme-signal .signal-tv-zone-close .signal-tv-metric-row{display:grid;grid-template-columns:minmax(0,min(54%,300px)) minmax(0,1fr);column-gap:clamp(12px,1vw,18px);align-items:end}.theme-signal .signal-tv-zone-close .signal-tv-metric-row>div:first-child,.theme-signal .signal-tv-zone-close .signal-tv-white{min-width:0;max-width:none;overflow:hidden}.theme-signal .signal-tv-zone-close .signal-tv-metric-row>div:first-child{width:auto;flex:none}.theme-signal .signal-tv-zone-close .signal-tv-white{width:auto;flex:none;align-self:end}
.theme-signal .signal-tv-stable-metrics .signal-tv-metric-row{display:grid;grid-template-columns:58% minmax(0,1fr);column-gap:clamp(12px,1.6vw,28px);align-items:end}.theme-signal .signal-tv-stable-metrics .signal-tv-metric-row>div:first-child,.theme-signal .signal-tv-stable-metrics .signal-tv-white{min-width:0;max-width:none;overflow:hidden}.theme-signal .signal-tv-stable-metrics .signal-tv-metric-row>div:first-child{width:auto;flex:none}.theme-signal .signal-tv-stable-metrics .signal-tv-white{width:auto;flex:none;align-self:end}
.theme-signal .signal-tv-fill-cards.signal-tv-all{height:calc(100vh - 128px);grid-auto-rows:minmax(0,1fr);align-content:stretch}.theme-signal .signal-tv-fill-cards.signal-tv-all .signal-tv-all-card{min-height:0;height:auto}.theme-signal .signal-tv-fill-cards.signal-tv-all .signal-tv-metric-row{margin:clamp(72px,16vh,240px) 0 14px}

/* Zone option D (approved 2026-10-14, Claude copy): in "Όλοι μεγάλοι" the BPM box always reserves 888 (8888 for kcal)
   in tabular digits, BPM is right-aligned against it, and the zone sits a fixed .28em-of-BPM gap after it.
   Nothing depends on card width, so window and fullscreen keep the same distance, and growing kcal/time never shifts it. */
.theme-signal .signal-tv-all .signal-tv-metric-row{display:grid;grid-template-columns:auto auto;justify-content:start;column-gap:clamp(23px,2.52vw,42px);align-items:end}
.theme-signal .signal-tv-all .signal-tv-metric-row>div:first-child{min-width:0;width:auto;flex:none}
.theme-signal .signal-tv-all .signal-tv-bpm-box{display:grid}
.theme-signal .signal-tv-all .signal-tv-bpm-box>.signal-tv-main-value{grid-area:1/1;text-align:right;font-variant-numeric:tabular-nums}
.theme-signal .signal-tv-all .signal-tv-ghost{visibility:hidden}
.theme-signal .signal-tv-all .signal-tv-white{width:auto;max-width:none;flex:none;align-self:end;overflow:visible}
.theme-signal .signal-tv-all .signal-tv-white b{font-variant-numeric:tabular-nums}
.theme-signal .signal-tv-all .signal-tv-white small{white-space:pre;overflow-wrap:normal}
/* D, narrow cards (4–10 athletes): BPM size follows the card width, never only the screen width, so the zone can't overlap the number.
   1.92em = 888 box (~1.64em) + .28em gap; 110px = zone/kcal column. Proportions stay those of option D. */
.theme-signal .signal-tv-all .signal-tv-all-card{container-type:inline-size}
.theme-signal .signal-tv-all .signal-tv-metric-row{--bpm-fs:min(clamp(82px,9vw,150px),calc((100cqw - 110px) / 1.92));column-gap:calc(var(--bpm-fs) * .28)}
.theme-signal .signal-tv-all .signal-tv-bpm-box>.signal-tv-main-value{font-size:var(--bpm-fs)}
.theme-signal .signal-tv-all .signal-tv-white b{font-size:min(clamp(30px,3.2vw,54px),calc(var(--bpm-fs) * .36))}

/* Fit "Όλοι μεγάλοι" to one screen (Claude copy, 2026-10-14): signal-tv.js picks columns, row height and BPM size; compact cards when rows are short. */
.theme-signal .signal-tv-all.signal-tv-fit{grid-template-columns:repeat(var(--tv-cols,3),minmax(0,1fr));grid-auto-rows:var(--tv-row-h,360px);height:auto;align-content:start}
.theme-signal .signal-tv-all.signal-tv-fit .signal-tv-all-card{min-height:0;height:100%;box-sizing:border-box;display:flex;flex-direction:column;overflow:hidden}
.theme-signal .signal-tv-all.signal-tv-fit .signal-tv-all-card h2{margin-top:clamp(8px,2.2vh,30px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.theme-signal .signal-tv-all.signal-tv-fit .signal-tv-metric-row{margin:auto 0 12px;--bpm-fs:var(--tv-bpm-fs,120px)}
.theme-signal .signal-tv-all.signal-tv-fit.signal-tv-compact .signal-tv-all-card{padding:12px 14px}
.theme-signal .signal-tv-all.signal-tv-fit.signal-tv-compact .signal-tv-kicker{display:none}
.theme-signal .signal-tv-all.signal-tv-fit.signal-tv-compact .signal-tv-all-card h2{margin-top:0;font-size:20px}
.theme-signal .signal-tv-all.signal-tv-fit.signal-tv-compact .signal-tv-metric-row{margin:auto 0 8px}
.theme-signal .signal-tv-all.signal-tv-fit.signal-tv-compact .signal-tv-white small{font-size:12px;margin-top:8px}
.theme-signal .signal-tv-all.signal-tv-fit.signal-tv-compact .signal-tv-card-status{padding-top:5px}

/* Leader layouts (Claude copy, 2026-10-14): same rules as option D for the big reading — fixed 888/8888 box, right-aligned number,
   side value at a fixed .28em gap — and the size comes from the space actually available (--lead-fs from signal-tv.js). */
.theme-signal .signal-tv-lead-fit .signal-tv-lead-reading{display:grid;grid-template-columns:auto auto;justify-content:start;align-items:end;column-gap:calc(var(--lead-fs) * .28);margin-top:clamp(16px,4vh,10vh)}
.theme-signal .signal-tv-lead-fit .signal-tv-lead-reading>div:first-child{min-width:0;width:auto;flex:none}
.theme-signal .signal-tv-lead-fit .signal-tv-bpm-box{display:grid}
.theme-signal .signal-tv-lead-fit .signal-tv-bpm-box>.signal-tv-main-value{grid-area:1/1;text-align:right;font-variant-numeric:tabular-nums;font-size:var(--lead-fs)}
.theme-signal .signal-tv-lead-fit .signal-tv-ghost{visibility:hidden}
.theme-signal .signal-tv-lead-fit .signal-tv-lead-reading .signal-tv-white{width:auto;max-width:none;flex:none;align-self:end;overflow:visible}
.theme-signal .signal-tv-lead-fit .signal-tv-lead-reading .signal-tv-white b{font-size:calc(var(--lead-fs) * .31);font-variant-numeric:tabular-nums}
.theme-signal .signal-tv-lead-fit .signal-tv-lead-reading .signal-tv-white small{white-space:pre;overflow-wrap:normal}
/* Small cards fill the column; their number grows with the card instead of leaving empty space. */
.theme-signal .signal-tv-lead-fit.signal-tv-leader-plus .signal-tv-others{grid-auto-rows:minmax(0,1fr);align-content:stretch}
.theme-signal .signal-tv-lead-fit.signal-tv-leader-plus .signal-tv-others .signal-tv-other{min-height:0;display:flex;flex-direction:column;overflow:hidden}
.theme-signal .signal-tv-lead-fit.signal-tv-leader-plus .signal-tv-others .signal-tv-other[hidden]{display:none}
/* Small cards (review 14/10): everything grouped — name, number with its white side value, label, kcal/zone-time line. */
.theme-signal .signal-tv-lead-fit.signal-tv-leader-plus .signal-tv-others .signal-tv-other{justify-content:center;gap:calc(var(--other-fs,48px) * .1);padding:16px}
.theme-signal .signal-tv-lead-fit.signal-tv-leader-plus .signal-tv-other .o-name{font:900 clamp(12px,calc(var(--other-fs,48px) * .17),22px)/1.1 system-ui;letter-spacing:-.02em;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.theme-signal .signal-tv-lead-fit.signal-tv-leader-plus .signal-tv-other .o-row{display:flex;align-items:flex-end;gap:calc(var(--other-fs,48px) * .2);min-width:0}
.theme-signal .signal-tv-lead-fit.signal-tv-leader-plus .signal-tv-others .signal-tv-other strong{float:none;display:block;font-size:var(--other-fs,48px);margin:0;line-height:.82;font-variant-numeric:tabular-nums;white-space:nowrap}
.theme-signal .signal-tv-lead-fit.signal-tv-leader-plus .signal-tv-other .o-side{color:#fff;font:900 calc(var(--other-fs,48px) * .42)/.85 system-ui;letter-spacing:-.04em;white-space:nowrap;padding-bottom:.08em}
.theme-signal .signal-tv-lead-fit.signal-tv-leader-plus .signal-tv-other .o-label{display:block;margin:0;color:#ff5038;font:900 clamp(9px,calc(var(--other-fs,48px) * .1),13px) ui-monospace,monospace;letter-spacing:.8px}
.theme-signal .signal-tv-lead-fit.signal-tv-leader-plus .signal-tv-other .o-meta{font:900 min(var(--other-meta-fs,12px),20px)/1.2 ui-monospace,monospace;font-style:normal;letter-spacing:.4px;color:#fff;white-space:pre;overflow:hidden;text-overflow:ellipsis}
/* Only the leader (review 14/10): zone, kcal and zone time on one line under the number. */
.theme-signal .signal-tv-lead-fit.signal-tv-leader .signal-tv-lead-reading{grid-template-columns:auto;row-gap:calc(var(--lead-fs) * .1)}
.theme-signal .signal-tv-lead-fit.signal-tv-leader .signal-tv-lead-reading .signal-tv-white{display:flex;align-items:baseline;gap:calc(var(--lead-fs) * .08);padding:0}
.theme-signal .signal-tv-lead-fit.signal-tv-leader .signal-tv-lead-reading .signal-tv-white b{font-size:calc(var(--lead-fs) * .22)}
.theme-signal .signal-tv-lead-fit.signal-tv-leader .signal-tv-lead-reading .signal-tv-white small{margin:0;font-size:clamp(14px,calc(var(--lead-fs) * .08),30px);white-space:pre}

/* Small cards keep a fixed 888/8888 box too (option D rule), so the white side value never moves. */
.theme-signal .signal-tv-lead-fit.signal-tv-leader-plus .signal-tv-other .o-box{display:grid}
.theme-signal .signal-tv-lead-fit.signal-tv-leader-plus .signal-tv-other .o-box>strong{grid-area:1/1;text-align:right}
.theme-signal .signal-tv-lead-fit.signal-tv-leader-plus .signal-tv-other .o-ghost{visibility:hidden}

/* Review round 3 (14/10): the zone appears once — zone + its time on top, kcal below on the number's baseline
   (kcal mode: BPM on top, zone + time below). Same structure for all cards, the leader and the small cards. */
.theme-signal .signal-tv-all .signal-tv-white{padding-bottom:23px}
.theme-signal .signal-tv-all .signal-tv-white b{font-size:calc(var(--bpm-fs) * .26)}
.theme-signal .signal-tv-all .signal-tv-white small{font-size:calc(var(--bpm-fs) * .14);line-height:1;margin-top:calc(var(--bpm-fs) * .08);white-space:pre}
.theme-signal .signal-tv-all .signal-tv-side-label,.theme-signal .signal-tv-lead-fit .signal-tv-side-label{font:900 .55em/1 ui-monospace,monospace;letter-spacing:0;margin-left:.3em;white-space:pre}
.theme-signal .signal-tv-lead-fit .signal-tv-lead-reading .signal-tv-white{padding-bottom:23px}
.theme-signal .signal-tv-lead-fit .signal-tv-lead-reading .signal-tv-white b{font-size:calc(var(--lead-fs) * .26)}
.theme-signal .signal-tv-lead-fit .signal-tv-lead-reading .signal-tv-white small{font-size:calc(var(--lead-fs) * .14);line-height:1;margin-top:calc(var(--lead-fs) * .08);white-space:pre}
.theme-signal .signal-tv-lead-fit.signal-tv-leader .signal-tv-lead-reading .signal-tv-white{padding-bottom:0;align-items:baseline}
.theme-signal .signal-tv-lead-fit.signal-tv-leader .signal-tv-lead-reading .signal-tv-white b{font-size:calc(var(--lead-fs) * .22)}
.theme-signal .signal-tv-lead-fit.signal-tv-leader .signal-tv-lead-reading .signal-tv-white small{margin:0 0 0 calc(var(--lead-fs) * .08);font-size:calc(var(--lead-fs) * .11)}
.theme-signal .signal-tv-lead-fit.signal-tv-leader-plus .signal-tv-other .o-row{align-items:flex-end;flex-wrap:nowrap}
.theme-signal .signal-tv-lead-fit.signal-tv-leader-plus .signal-tv-other .o-col{display:flex;flex-direction:column;gap:calc(var(--other-fs,48px) * .08);min-width:0;padding-bottom:.06em}
.theme-signal .signal-tv-lead-fit.signal-tv-leader-plus .signal-tv-other .o-side{font-size:calc(var(--other-fs,48px) * .3);line-height:.9;white-space:nowrap}
.theme-signal .signal-tv-lead-fit.signal-tv-leader-plus .signal-tv-other .o-tag{font:900 .53em/1 ui-monospace,monospace;font-style:normal;margin-left:.3em;white-space:pre}
.theme-signal .signal-tv-lead-fit.signal-tv-leader-plus .signal-tv-other .o-meta{font-size:calc(var(--other-fs,48px) * .16);line-height:1;white-space:pre}
.theme-signal .signal-tv-lead-fit.signal-tv-leader-plus .o-wrap .signal-tv-other .o-row{flex-wrap:wrap;row-gap:calc(var(--other-fs,48px) * .12)}
.theme-signal .signal-tv-lead-fit.signal-tv-leader-plus .o-wrap .signal-tv-other .o-col{flex-basis:100%}
/* Compact cards follow the same proportions (the old fixed 12px kcal made the side column wider than the fit allowed). */
.theme-signal .signal-tv-all.signal-tv-fit.signal-tv-compact .signal-tv-white small{font-size:calc(var(--bpm-fs) * .14);margin-top:calc(var(--bpm-fs) * .08)}
/* The old small-card rule styled every <span> as 10px mono; the zone and its column must inherit the computed sizes instead. */
.theme-signal .signal-tv-lead-fit.signal-tv-leader-plus .signal-tv-other .o-col,.theme-signal .signal-tv-lead-fit.signal-tv-leader-plus .signal-tv-other .o-box{font:inherit;letter-spacing:normal;color:inherit}
.theme-signal .signal-tv-lead-fit.signal-tv-leader-plus .signal-tv-other .o-big{font:900 1em/.9 system-ui;letter-spacing:-.04em;color:#fff}
/* Review 3, comment 4: back to the original faces — the BPM tag and the zone time use the same bold sans as the numbers,
   not the typewriter mono; the leader's name gets a little air between letters. */
.theme-signal .signal-tv-all .signal-tv-side-label,.theme-signal .signal-tv-lead-fit .signal-tv-side-label{font:900 .55em/1 system-ui,-apple-system,"Helvetica Neue",sans-serif;letter-spacing:-.01em;font-variant-numeric:tabular-nums}
.theme-signal .signal-tv-lead-fit.signal-tv-leader-plus .signal-tv-other .o-tag{font:900 .53em/1 system-ui,-apple-system,"Helvetica Neue",sans-serif;letter-spacing:-.01em;font-variant-numeric:tabular-nums}
.theme-signal .signal-tv-lead-fit .signal-tv-name{letter-spacing:-.035em}
/* 16/10 review: "Μόνο ο πρώτος μεγάλος" uses the leader-plus form — zone+time and kcal in a column to the right of the number (same number size). */
.theme-signal .signal-tv-lead-fit.signal-tv-leader .signal-tv-lead-reading{grid-template-columns:auto auto;row-gap:0}
.theme-signal .signal-tv-lead-fit.signal-tv-leader .signal-tv-lead-reading .signal-tv-white{display:block;padding-bottom:calc(var(--lead-fs) * .07)}
.theme-signal .signal-tv-lead-fit.signal-tv-leader .signal-tv-lead-reading .signal-tv-white b{font-size:calc(var(--lead-fs) * .26)}
.theme-signal .signal-tv-lead-fit.signal-tv-leader .signal-tv-lead-reading .signal-tv-white small{display:block;margin:calc(var(--lead-fs) * .08) 0 0;font-size:calc(var(--lead-fs) * .14);line-height:1}
/* 16/10 review: small cards drop the word BPM (kept as KCAL in calories mode). */
.theme-signal .signal-tv-lead-fit.signal-tv-leader-plus .signal-tv-other .o-label:empty{display:none}
/* 16/10 r5: BPM back on the small cards, right under the number (like the big card); names bigger and at the top of the card. */
.theme-signal .signal-tv-lead-fit.signal-tv-leader-plus .signal-tv-other .o-box{position:relative}
.theme-signal .signal-tv-lead-fit.signal-tv-leader-plus .signal-tv-other .o-box>.o-label{position:absolute;top:100%;left:.06em;margin-top:calc(var(--other-fs,48px) * .1);font-size:clamp(10px,calc(var(--other-fs,48px) * .13),18px);line-height:1;white-space:nowrap}
.theme-signal .signal-tv-lead-fit.signal-tv-leader-plus .o-wrap .signal-tv-other .o-box>.o-label{position:static;grid-area:2/1;justify-self:start;margin-top:calc(var(--other-fs,48px) * .06)}
.theme-signal .signal-tv-lead-fit.signal-tv-leader-plus .signal-tv-other .o-name{font-size:clamp(16px,calc(var(--other-fs,48px) * .3),40px);margin-bottom:auto}
.theme-signal .signal-tv-lead-fit.signal-tv-leader-plus .signal-tv-other .o-row{margin-bottom:auto}
