Spaces:
Sleeping
Sleeping
File size: 3,436 Bytes
78738de | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 | /* 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;
}
|