Files
the-nexus/style.css
Alexander Whitestone abb626afd2
Some checks failed
CI / validate (pull_request) Failing after 16s
feat: add animated holographic signs near each portal (#108)
- Build complete Three.js scene with stars, fog, grid and portal rings
  loaded from portals.json
- Each portal has a canvas-rendered holographic sign showing name,
  description and status, colour-matched to the portal colour
- Signs float up/down, pulse opacity, and have a drifting scanline
  overlay for a holographic look
- Portal rings spin slowly; point lights pulse intensity in sync
- Vertical connecting beam links each sign to its portal ring
- Full HTML with Three.js import map (v0.183), HUD elements, CSS design
  system with dark-space theme and CSS variables

Fixes #108
2026-03-23 23:58:48 -04:00

115 lines
2.2 KiB
CSS

/* === DESIGN SYSTEM: NEXUS — DARK SPACE THEME === */
:root {
--color-bg: #000814;
--color-primary: #00f5ff;
--color-secondary: #7b00ff;
--color-accent: #ff006e;
--color-text: #e0e0e0;
--color-text-muted: #888888;
--color-panel-bg: rgba(0, 8, 20, 0.82);
--color-panel-border: rgba(0, 245, 255, 0.3);
--font-body: "Courier New", "Courier", monospace;
--font-display: "Courier New", "Courier", monospace;
}
*, *::before, *::after {
box-sizing: border-box;
}
html, body {
margin: 0;
padding: 0;
width: 100%;
height: 100%;
overflow: hidden;
background: var(--color-bg);
color: var(--color-text);
font-family: var(--font-body);
}
/* Three.js canvas fills the viewport */
canvas {
display: block;
position: fixed;
top: 0; left: 0;
width: 100%;
height: 100%;
z-index: 0;
}
/* === HUD PANELS === */
.hud-panel {
position: fixed;
z-index: 10;
background: var(--color-panel-bg);
border: 1px solid var(--color-panel-border);
border-radius: 4px;
padding: 6px 14px;
display: flex;
flex-direction: column;
gap: 2px;
pointer-events: none;
backdrop-filter: blur(4px);
}
#hud-title {
top: 14px;
left: 14px;
}
.hud-label {
font-size: 13px;
font-weight: bold;
color: var(--color-primary);
letter-spacing: 0.12em;
text-shadow: 0 0 8px var(--color-primary);
}
.hud-sub {
font-size: 10px;
color: var(--color-text-muted);
letter-spacing: 0.06em;
}
.hud-bottom {
bottom: 14px;
left: 50%;
transform: translateX(-50%);
flex-direction: row;
align-items: center;
gap: 8px;
}
/* === AUDIO TOGGLE === */
.hud-controls {
position: fixed;
top: 14px;
right: 14px;
z-index: 10;
}
#audio-toggle {
font-size: 14px;
background: var(--color-panel-bg);
color: var(--color-primary);
border: 1px solid var(--color-panel-border);
padding: 5px 10px;
border-radius: 4px;
font-family: var(--font-body);
cursor: pointer;
transition: background-color 0.2s, box-shadow 0.2s;
backdrop-filter: blur(4px);
}
#audio-toggle:hover {
background: rgba(0, 245, 255, 0.1);
box-shadow: 0 0 10px var(--color-primary);
}
#audio-toggle.muted {
color: var(--color-text-muted);
border-color: rgba(136, 136, 136, 0.3);
}