poolcoach / app /static /tv /tv.css
masterdanh's picture
deploy: snapshot for HF Space
78738de
Raw
History Blame Contribute Delete
3.44 kB
/* PoolCoach TV (bàn giao 15) — layout nhìn xa 2–3 m, nền tối, chữ to.
Class RIÊNG toàn bộ — trang TV không nạp style.css của app (không mượn
class có event binding; bài học .btn-play 04/08). Đơn vị chữ theo vmin
để cùng một tỉ lệ trên TV 32" lẫn cửa sổ dev nhỏ. */
* { box-sizing: border-box; margin: 0; padding: 0; }
:root {
--bg: #0b0f13;
--text: #e8edf2;
--muted: #93a1ad;
--green: #17a35a;
--card: #141a21;
--card-b: #2a333d;
}
html, body { height: 100%; }
body {
background: var(--bg);
color: var(--text);
font-family: system-ui, "Segoe UI", sans-serif;
overflow: hidden;
}
.hidden { display: none !important; }
.scr { height: 100vh; width: 100vw; }
/* ------------------------------------------------ màn pair / màn chờ */
#scr-pair, #scr-wait { display: flex; align-items: center; justify-content: center; }
.center-box { text-align: center; }
.brand {
font-size: 6vmin;
font-weight: 650;
color: var(--muted);
margin-bottom: 4vmin;
}
.pair-code {
font-size: 22vmin;
font-weight: 800;
letter-spacing: 2.5vmin;
font-variant-numeric: tabular-nums;
color: var(--text);
text-shadow: 0 0 4vmin rgba(23, 163, 90, .35);
margin-bottom: 4vmin;
}
.wait-ok {
font-size: 9vmin;
font-weight: 700;
color: var(--green);
margin-bottom: 4vmin;
}
.hint { font-size: 3.6vmin; line-height: 1.5; color: var(--muted); }
.hint b { color: var(--text); }
/* --------------------------------------------------- màn cú đánh (bước 4) */
#scr-shot {
display: grid;
grid-template-columns: 1fr minmax(24vw, 30vw);
gap: 1.5vmin;
padding: 1.5vmin;
}
#tv-table-wrap {
display: flex;
align-items: center;
justify-content: center;
min-width: 0;
}
.tv-panel {
display: flex;
flex-direction: column;
gap: 1.5vmin;
padding: 2vmin;
background: var(--card);
border: 1px solid var(--card-b);
border-radius: 1.5vmin;
overflow: hidden;
}
.tv-describe {
font-size: 2.7vmin;
line-height: 1.45;
white-space: pre-wrap;
}
.tv-viz { display: flex; align-items: center; gap: 2vmin; }
#tv-spin { width: 11vmin; height: 11vmin; flex: none; }
.tv-chips { display: flex; flex-direction: column; gap: 1.2vmin; min-width: 0; }
.tv-chip {
font-size: 3.2vmin;
font-weight: 700;
padding: 1vmin 1.8vmin;
background: #1d242c;
border: 1px solid var(--card-b);
border-radius: 1.2vmin;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.tv-alts { display: flex; flex-direction: column; gap: 1vmin; margin-top: auto; }
.tv-alt {
font-size: 2.2vmin;
color: var(--muted);
padding: 1vmin 1.4vmin;
border: 1px dashed var(--card-b);
border-radius: 1vmin;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.tv-alt b { color: var(--text); }
/* ------------------------------------------------------- góc màn hình */
.tv-corner {
position: fixed;
right: 1.8vmin;
bottom: 1.4vmin;
display: flex;
gap: 2vmin;
font-size: 2.4vmin;
color: var(--muted);
font-variant-numeric: tabular-nums;
}
/* chỗ confidence CV — ĐỂ TRỐNG có chủ đích (chưa có CV, bàn giao sau) */
.tv-cv { opacity: .35; }
.ws-down {
position: fixed;
left: 50%;
bottom: 3vmin;
transform: translateX(-50%);
padding: 1.4vmin 3vmin;
font-size: 2.8vmin;
color: #ffd9d9;
background: rgba(120, 25, 25, .92);
border-radius: 1.2vmin;
}