Files
WKVS/www/displays/css/display.css
2026-04-12 21:25:44 +02:00

372 lines
7.2 KiB
CSS
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
:root {
--bg: #111827;
--panel: #020617;
--panel-soft: #0b1120;
--accent: #38bdf8;
--accent-soft: rgba(56, 189, 248, 0.15);
--text-main: #e5e7eb;
--text-muted: #9ca3af;
--danger: #ef4444;
--success: #22c55e;
--radius-lg: 18px;
--border-subtle: 1px solid rgba(148, 163, 184, 0.35);
--shadow-soft: 0 20px 45px rgba(15, 23, 42, 0.85);
--transition-fast: 180ms ease-out;
--colorStartDiv: #0b1120;
--panelBgLogo: #4a2f96;
--font-heading: clamp(1.5rem, 6vh, 4rem);
--font-sub: clamp(1rem, 3.5vh, 2.2rem);
--logo-size: clamp(150px, 40vh, 500px);
}
* {
box-sizing: border-box;
}
head > * {
pointer-events: none;
}
html,
body {
margin: 0;
padding: 0;
height: 100vh;
width: 100vw;
overflow: hidden;
position: fixed;
}
body {
display: flex;
justify-content: center;
align-items: stretch;
font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
background-color: var(--bg);
color: var(--text-main);
overflow: hidden;
}
/* WebSocket error overlay */
.errorws {
position: fixed;
inset: 0;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
gap: 16px;
padding: 5vh 5vw;
background: radial-gradient(circle at top, #020617 0, #020617 55%);
z-index: 10000;
}
.errorws .logoimg {
max-width: var(--logo-size);
height: auto;
margin-bottom: 2vh;
filter: drop-shadow(0 12px 30px rgba(0, 0, 0, 0.65));
}
.errortext {
margin: 0;
font-size: clamp(1.8rem, 8vw, 5rem);
line-height: 1.1;
max-width: 90vw;
font-weight: 500;
letter-spacing: 0.12em;
text-transform: uppercase;
color: var(--text-main);
text-align: center;
}
.errortextSmall {
margin: 10px;
font-size: clamp(1rem, 3vw, 2rem);
opacity: 0.8;
font-weight: 300;
letter-spacing: 0.12em;
color: var(--text-main);
text-align: center;
}
/* Startup logo overlay */
.logobg {
padding: 4vh;
position: fixed;
inset: 0;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
gap: 12px;
background-color: var(--panelBgLogo);
z-index: 1000;
transition: opacity 0.5s ease;
}
.logoimg {
width: auto;
max-height: 45vh;
max-width: 80vw;
object-fit: contain;
/* filter: drop-shadow(0 18px 40px rgba(15, 23, 42, 0.4)); */
}
.logotext {
margin: 0;
font-size: clamp(1.8rem, 7vh, 6rem);
text-align: center;
width: 90vw;
line-height: 1.2;
/* Forces single line for names/titles to prevent overflow */
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.logotext, .logoctext {
color: var(--text-color) !important;
text-align: center;
font-weight: 400;
margin-top: 1vh;
}
.logoctext {
margin: 0;
font-size: clamp(2rem, 7vw, 12rem);
}
/* 4. Responsive adjustments for different screen ratios */
@media (aspect-ratio: 4/3), (aspect-ratio: 10/7) {
/* Tablet specific tweaks (iPad/Android Tabs) */
:root {
--logo-size: 30vh;
}
.logotext {
font-size: 5vh;
}
}
@media (min-width: 1921px) {
/* Ultra-large TV/4K tweaks */
.logotext {
letter-spacing: 0.25em; /* Better legibility at distance */
}
}
/* Main scoreboard container full screen */
.pagediv {
flex: 1;
height: 100%;
width: 100vw;
display: flex;
flex-direction: column;
gap: 2vh;
padding: 2.2vh 2.4vw;
box-sizing: border-box;
background:
radial-gradient(circle at top left, var(--bg-soft), transparent 60%),
radial-gradient(circle at bottom right, var(--bg-soft), transparent 60%);
}
.pagediv.manuel {
padding-right: clamp(60px, 2.4vw, 2.4vw);
}
/* Common row styling */
.display-row {
flex: 1;
display: flex;
align-items: center;
padding: 30px;
border-radius: var(--radius-lg);
background: linear-gradient(135deg, var(--panel-soft), var(--panel));
border-bottom: var(--border-subtle);
position: relative;
overflow: hidden;
box-shadow: var(--shadow-soft);
}
.display-row::before {
content: "";
position: absolute;
inset: 0;
background: radial-gradient(circle at top left, var(--bg-soft), transparent 55%);
opacity: 0.5;
pointer-events: none;
}
.row1text,
.row2text p,
.row3 > p,
.start_text {
margin: 0;
padding: 0;
line-height: 1.1;
}
/* Row 1: athlete name */
.row1text {
font-size: min(8vh, 4.6vw);
font-weight: 600;
letter-spacing: 0.08em;
text-transform: uppercase;
white-space: nowrap;
}
/* Row 2: club, program, start/stop */
.row2 {
justify-content: space-between;
gap: 2vw;
}
.row2::after {
content: "";
position: absolute;
inset: 0;
background: radial-gradient(circle at bottom right, var(--colorStartDiv), transparent 55%);
opacity: 0.5;
pointer-events: none;
}
.row2text {
display: flex;
flex-direction: column;
gap: 0.8vh;
width: 50vw;
height: 100%;
}
.row2_1text {
color: var(--text-muted);
}
.row2_2text {
font-weight: 600;
}
/* Start / stop pill */
.start_div {
width: 35vw;
height: 100%;
display: flex;
justify-content: end;
align-items: center;
}
.start_text {
display: flex;
font-weight: 700;
letter-spacing: 0.1em;
text-transform: uppercase;
}
/* Row 3: D-score and total */
.row3 {
justify-content: space-between;
gap: 2vw;
}
.row3 > p {
font-size: min(9vh, 5vw);
font-weight: 700;
}
.row3_1text {
color: var(--color-note-l);
}
.row3_2text {
color: var(--color-note-r);
}
/* Existing #score and char/row styles if you use them elsewhere */
#score {
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
width: 100%;
height: 100%;
}
.char {
display: flex;
justify-content: center;
align-items: center;
font-size: 40vw;
line-height: 1;
}
.row {
display: flex;
justify-content: center;
align-items: center;
width: 100%;
font-size: 20vw;
}
/* Landscape / portrait logo scaling */
@media (orientation: landscape) {
.logoimg {
max-height: 60vh;
}
}
@media (orientation: portrait) {
.logoimg {
max-width: 60vw;
}
}
/* Small screens keep everything readable */
@media (max-width: 768px) {
.pagediv {
padding: 1.6vh 3vw;
gap: 1.4vh;
}
.display-row {
padding: 1.4vh 3vw;
}
.row2 {
flex-direction: column;
align-items: flex-start;
}
.start_div {
align-self: flex-end;
min-width: 40vw;
}
}
.noWsConnection {
position: fixed;
bottom: 20px;
right: 20px;
transform: rotate(270deg);
transform-origin: right bottom;
}
.rotator {
display: flex;
align-items: center;
gap: 6px;
transform: translateX(100%);
}
.noWsConnection img {
width: 20px;
height: 20px;
object-fit: contain;
}
.noWsConnection p {
font-size: 20px;
color: var(--text-muted);
margin: 0;
letter-spacing: 1.1px;
}