*, *::before, *::after { margin:0; padding:0; box-sizing:border-box; } :root { --red: #dc143c; --red-glow: rgba(220,20,60,0.5); --dark: #05050a; /* Speaker size — a CSS variable so everything shares it */ --sp: min(54vw, 54vh); /* diameter */ } @media(max-width:600px) { :root { --sp: min(82vw, 54vh); } } html, body { width:100%; height:100%; background:var(--dark); color:#fff; font-family:'Inter',sans-serif; overflow:hidden; -webkit-font-smoothing:antialiased; } /* ── Canvas fills background ── */ #bgCanvas { position:fixed; inset:0; z-index:0; } /* ── Scanlines ── */ .scanlines { position:fixed; inset:0; z-index:1; pointer-events:none; background:repeating-linear-gradient(0deg,transparent,transparent 2px,rgba(0,0,0,0.1) 2px,rgba(0,0,0,0.1) 4px); } /* ── HUD corners ── */ .corner { position:fixed; width:40px; height:40px; z-index:8; pointer-events:none; } .corner::before, .corner::after { content:''; position:absolute; background:var(--red); } .corner::before { width:100%; height:2px; } .corner::after { width:2px; height:100%; } .corner.tl { top:14px; left:14px; } .corner.tl::before,.corner.tl::after { top:0; left:0; } .corner.tr { top:14px; right:14px; } .corner.tr::before { top:0; right:0; } .corner.tr::after { top:0; right:0; } .corner.bl { bottom:14px; left:14px; } .corner.bl::before { bottom:0; left:0; } .corner.bl::after { bottom:0; left:0; } .corner.br { bottom:14px; right:14px; } .corner.br::before { bottom:0; right:0; } .corner.br::after { bottom:0; right:0; } /* ── HUD text ── */ .hud { position:fixed; z-index:8; pointer-events:none; font-family:'Share Tech Mono',monospace; font-size:0.55rem; color:rgba(255,255,255,0.28); letter-spacing:0.1em; line-height:1.6; } .hud small { display:block; color:rgba(220,20,60,0.65); font-size:0.5rem; letter-spacing:0.2em; } .hud.bl { bottom:24px; left:24px; } .hud.br { bottom:24px; right:24px; text-align:right; } /* ════════════════════════════════════════════════════ MAIN LAYOUT — 3-row flex column, full viewport ════════════════════════════════════════════════════ */ .page { position:fixed; inset:0; z-index:5; display:flex; flex-direction:column; align-items:center; justify-content:space-between; padding:0 0 0 0; } /* ── Row 1: Title at top ── */ .title-row { width:100%; text-align:center; padding: 1.4rem 1rem 0; flex-shrink:0; } .main-title { font-family:'Bebas Neue',cursive; font-size:clamp(2rem,6vw,5rem); letter-spacing:0.14em; line-height:1; text-shadow:0 0 40px rgba(220,20,60,0.25); white-space:nowrap; } .main-title .red { color:var(--red); } .tagline { font-family:'Share Tech Mono',monospace; font-size:clamp(0.42rem,1vw,0.62rem); letter-spacing:0.28em; text-transform:uppercase; color:var(--red); margin-top:0.35rem; font-weight:700; } .cursor { display:inline-block; width:2px; height:1em; background:var(--red); margin-left:2px; vertical-align:middle; animation:blink 1s step-end infinite; } /* ── Row 2: Speaker + its overlays ── */ .speaker-row { flex:1; display:flex; align-items:center; justify-content:center; min-height:0; /* allow shrink */ } /* The speaker container — same size as canvas speaker */ .speaker-wrap { position:relative; width:var(--sp); height:var(--sp); border-radius:50%; flex-shrink:0; } /* 4-quadrant click grid inside the circle */ .speaker-grid { position:absolute; inset:0; display:grid; grid-template-columns:1fr 1fr; grid-template-rows:1fr 1fr; border-radius:50%; overflow:hidden; } .quad { display:flex; align-items:center; justify-content:center; text-decoration:none; color:rgba(255,255,255,0.6); transition:background 0.3s; cursor:pointer; position:relative; } .quad:hover { background:rgba(220,20,60,0.14); } /* Each label perfectly centered in its quadrant */ .quad-inner { display:flex; flex-direction:column; align-items:center; gap:0.4rem; } /* Shift them slightly outward from the exact center of the quadrant so they clear the logo more nicely */ .quad.tl .quad-inner { transform: translate(-10%, -10%); } .quad.tr .quad-inner { transform: translate(10%, -10%); } .quad.bl .quad-inner { transform: translate(-10%, 10%); } .quad.br .quad-inner { transform: translate(10%, 10%); } @media(max-width:500px){ .quad.tl .quad-inner, .quad.tr .quad-inner, .quad.bl .quad-inner, .quad.br .quad-inner { transform: none; } } .quad-inner i { font-size:clamp(0.9rem,2.2vw,1.3rem); color:var(--red); filter:drop-shadow(0 0 6px var(--red-glow)); transition:transform 0.3s; } .quad:hover .quad-inner i { transform:scale(1.2); } .quad-inner span.label { font-family:'Share Tech Mono',monospace; font-size:clamp(0.44rem,1.1vw,0.62rem); letter-spacing:0.2em; text-transform:uppercase; color:#fff; transition:color 0.3s; font-weight:700; } .quad-inner span.sub { font-family:'Share Tech Mono',monospace; font-size:clamp(0.36rem,0.85vw,0.5rem); letter-spacing:0.1em; text-transform:uppercase; color:var(--red); transition:color 0.3s; white-space:nowrap; font-weight:700; } .quad:hover .quad-inner span.label { color:#fff; } .quad:hover .quad-inner span.sub { color:#fff; } /* swap to white on hover for contrast */ /* Center logo link — positioned at dust cap */ .center-logo { position:absolute; top:50%; left:50%; transform:translate(-50%,-50%); z-index:10; width:calc(var(--sp) * 0.18); height:calc(var(--sp) * 0.18); display:flex; align-items:center; justify-content:center; border-radius:50%; transition:filter 0.3s; } .center-logo img { width:100%; height:auto; filter:drop-shadow(0 0 10px var(--red-glow)); transition:filter 0.3s, transform 0.3s; } .center-logo:hover img { filter:drop-shadow(0 0 20px var(--red-glow)) brightness(1.3); transform:scale(1.1); } /* ── Row 3: Bottom bar — audio controls + enter link + EQ ── */ .bottom-row { width:100%; flex-shrink:0; display:flex; flex-direction:column; align-items:center; gap:0.3rem; padding-bottom:0; } .audio-controls { display:none; align-items:center; gap:0.4rem; font-family:'Share Tech Mono',monospace; font-size:0.55rem; color:rgba(255,255,255,0.3); letter-spacing:0.15em; padding:0.2rem 0; } .audio-controls button { background:none; border:1px solid rgba(220,20,60,0.3); color:rgba(255,255,255,0.4); padding:0.28rem 0.6rem; border-radius:3px; cursor:pointer; font-family:'Share Tech Mono',monospace; font-size:0.52rem; letter-spacing:0.15em; transition:all 0.3s; display:flex; align-items:center; gap:0.3rem; justify-content:center; } .audio-controls button#toggleBtn { padding: 0.28rem 0.8rem; min-width: 80px; } .audio-controls button:hover { background:rgba(220,20,60,0.15); border-color:var(--red); color:#fff; } .track-time { margin-left: 0.5rem; min-width:35px; text-align:right; } .enter-link { font-family:'Share Tech Mono',monospace; font-size:clamp(0.65rem, 1.5vw, 0.9rem); letter-spacing:0.3em; text-transform:uppercase; font-weight:700; color:#fff; text-decoration:none; display:inline-flex; align-items:center; gap:0.6rem; transition:color 0.3s; margin-top:1.2rem; } .enter-link span { width:30px; height:1px; background:currentColor; display:block; transition:width 0.3s; } .enter-link:hover { color:var(--red); } .enter-link:hover span { width:50px; } /* EQ strip */ .eq-strip { width:100%; height:60px; display:flex; align-items:flex-end; justify-content:center; gap:3px; padding:0 0.5rem 0.5rem; pointer-events:none; } .eq-bar { width:5px; border-radius:2px 2px 0 0; min-height:3px; background:linear-gradient(to top,var(--red),rgba(220,20,60,0.12)); } /* Toast */ #audioToast { position:fixed; bottom:68px; left:50%; transform:translateX(-50%); z-index:20; font-family:'Share Tech Mono',monospace; font-size:0.56rem; letter-spacing:0.18em; text-transform:uppercase; background:rgba(220,20,60,0.1); border:1px solid rgba(220,20,60,0.3); color:rgba(255,255,255,0.45); padding:0.4rem 1.1rem; border-radius:3px; backdrop-filter:blur(8px); cursor:pointer; transition:opacity 0.5s; white-space:nowrap; } #audioToast.hidden { opacity:0; pointer-events:none; } @keyframes blink { 0%,100%{opacity:1;} 50%{opacity:0;} }
STATUS--:--:--
NOW PLAYINGDJ MASS — PEACE & WAR

DJ SENTER

Enter Full Site
0:00