/* THEME */ :root { --blue: #032A83; --white: #ffffff; --shadow: rgba(0, 0, 0, .55); --glow: rgba(3, 42, 131, .65); --music-top: 800px; /* feste Y-Position des Musik-Blocks */ } /* RESET */ * { box-sizing: border-box; margin: 0; padding: 0; } html, body { height: 100%; } /* BASE */ body { font-family: Arial, Helvetica, sans-serif; color: var(--white); background: #000; overflow: hidden; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; } /* FULLSCREEN BACKGROUND VIDEO – ohne Balken */ .bg-video{ position: fixed; top: 50%; left: 50%; min-width: 100vw; min-height: 100vh; width: auto; height: auto; transform: translate(-50%, -50%); object-fit: cover; object-position: center center; z-index: 0; pointer-events: none; backface-visibility: hidden; will-change: transform; } /* Scrim über Video */ .scrim { position: fixed; inset: 0; background: linear-gradient(to bottom, rgba(0, 0, 0, .28), rgba(0, 0, 0, .45)); pointer-events: none; z-index: 1; } /* TYPO UTILS (+2px) */ .title-16 { font-size: 18px; font-weight: 800; text-transform: uppercase; } .value-14 { font-size: 16px; font-weight: 700; color: #fff; } .blue-text { color: var(--blue); } .blue-glow { text-shadow: 0 0 6px var(--glow), 0 0 12px rgba(3, 42, 131, .35), 0 1px 2px var(--shadow); } .text-shadow { text-shadow: 0 1px 2px var(--shadow); } /* TOP BAR */ .top { position: fixed; left: 50%; top: 20px; transform: translateX(-50%); width: 450px; display: flex; justify-content: space-between; user-select: none; z-index: 3; } .top .lbl { text-align: center; } .top .lbl .title-16, .top .lbl .value-14 { display: block; } .top .lbl .value-14 { margin-top: 2px; } /* LOGO-ZONE */ .logo-wrap { position: fixed; left: 50%; top: 260px; bottom: 420px; transform: translateX(-50%); display: flex; align-items: center; justify-content: center; pointer-events: none; z-index: 2; width: min(90vw, 1200px); } /* BOUNCE Logo */ .logo { width: 425px; height: auto; pointer-events: auto; filter: drop-shadow(0 10px 25px rgba(0, 0, 0, .6)); animation: logo-bounce 1.8s ease-in-out infinite; will-change: transform, filter; } @keyframes logo-bounce { 0%, 100% { transform: translateY(0); filter: drop-shadow(0 10px 25px rgba(0, 0, 0, .6)); } 50% { transform: translateY(-16px) scale(1.02); filter: drop-shadow(0 18px 35px rgba(0, 0, 0, .65)); } } @media (prefers-reduced-motion: reduce) { .logo { animation: none; } } /* MUSIK – feste Position, entkoppelt vom Logo */ .music { top: var(--music-top); position: fixed; left: 50%; transform: translateX(-50%); display: flex; flex-direction: column; align-items: center; gap: 10px; text-align: center; z-index: 2; user-select: none; } .music img { width: 53px; height: 32px; filter: drop-shadow(0 2px 4px var(--shadow)); } .music .label { font-size: 14px; font-weight: 700; margin-bottom: 10px; } .music .slider { -webkit-appearance: none; appearance: none; width: 222px; height: 10px; border-radius: 10px; background: var(--blue); outline: none; } .music .slider::-webkit-slider-thumb { -webkit-appearance: none; appearance: none; width: 16px; height: 16px; border-radius: 50%; background: var(--blue); border: 2px solid #d7e7ff; box-shadow: 0 0 0 3px rgba(20, 118, 255, .25); cursor: pointer; } .music .slider::-moz-range-thumb { width: 16px; height: 16px; border-radius: 50%; background: var(--blue); border: 2px solid #d7e7ff; cursor: pointer; } /* PROGRESS */ .progress { position: fixed; left: 50%; bottom: 190px; transform: translateX(-50%); display: flex; flex-direction: column; align-items: center; z-index: 2; width: min(1100px, 95vw); user-select: none; } .percent { font-size: 20px; font-weight: 700; margin-bottom: 40px; } .percent .num { color: #fff; } .percent .unit { color: var(--blue); } .percent .unit.blue-glow { text-shadow: 0 0 6px var(--glow), 0 0 12px rgba(3, 42, 131, .35), 0 1px 2px var(--shadow); } /* DOTS – Kapseln */ .dots { display: flex; gap: 5px; justify-content: center; width: 100%; padding: 0 6px; overflow: hidden; } .dot { width: 14px; height: 22px; border: none; border-radius: 18px; transform: rotate(18deg); background: #ffffff; box-shadow: none; } .dot.filled { background: var(--blue); } /* BOTTOM STATS */ .bottom-stats { position: fixed; left: 50%; bottom: 70px; transform: translateX(-50%); width: min(1200px, 96vw); z-index: 2; white-space: nowrap; } .stats { display: flex; align-items: flex-start; justify-content: center; } .stat { text-align: center; } .stat .title { margin-bottom: 6px; } .spacer { flex: 0 0 auto; } .s187 { width: 220px; } .s167 { width: 250px; }