Spaces:
Running
Running
/* Components styled using tokens from styles/theme.css */ | |
/* Layout layers */ | |
.ui-layer { | |
position: fixed; | |
inset: 0; | |
pointer-events: none; | |
z-index: 10; | |
} | |
.hud { | |
pointer-events: none; | |
position: fixed; | |
top: var(--s-6); | |
left: var(--s-6); | |
right: var(--s-6); | |
display: flex; | |
align-items: center; | |
justify-content: space-between; | |
gap: var(--s-6); | |
z-index: 20; | |
} | |
/* Panels */ | |
.panel { | |
pointer-events: auto; | |
background: linear-gradient(180deg, var(--bg-2), var(--bg-1)); | |
border-radius: var(--r-2); | |
box-shadow: var(--shadow-1), var(--inset-1); | |
border: 1px solid var(--panel-border); | |
} | |
.panel--compact { | |
padding: var(--s-4) var(--s-5); | |
} | |
.panel--std { | |
padding: var(--s-6); | |
} | |
.panel-title { | |
font-family: var(--font-display); | |
font-weight: 700; | |
font-size: var(--fs-14); | |
letter-spacing: .04em; | |
color: var(--text-2); | |
text-transform: uppercase; | |
margin-bottom: var(--s-4); | |
} | |
/* Chips */ | |
.chips { | |
display: flex; | |
gap: var(--s-3); | |
align-items: center; | |
} | |
.chip { | |
display: inline-flex; | |
align-items: center; | |
gap: var(--s-3); | |
padding: var(--s-2) var(--s-4); | |
border-radius: var(--r-1); | |
background: var(--bg-3); | |
border: 1px solid var(--panel-border); | |
box-shadow: var(--inset-1); | |
font-family: var(--font-mono); | |
font-size: var(--fs-12); | |
color: var(--text-1); | |
} | |
.chip__label { | |
font-family: var(--font-display); | |
font-size: var(--fs-12); | |
letter-spacing: .06em; | |
color: var(--text-3); | |
text-transform: uppercase; | |
} | |
/* Speed Controls */ | |
.speed-controls { | |
pointer-events: auto; | |
position: fixed; | |
top: var(--s-6); | |
right: var(--s-6); | |
display: flex; | |
gap: var(--s-3); | |
padding: var(--s-3) var(--s-4); | |
border-radius: var(--r-2); | |
background: linear-gradient(180deg, var(--bg-2), var(--bg-1)); | |
border: 1px solid var(--panel-border); | |
box-shadow: var(--shadow-1), var(--inset-1); | |
z-index: 30; | |
} | |
.btn { | |
appearance: none; | |
border: 1px solid var(--panel-border); | |
background: #0f1518; | |
color: var(--text-1); | |
padding: var(--s-2) var(--s-4); | |
border-radius: var(--r-1); | |
font-size: var(--fs-12); | |
font-family: var(--font-display); | |
letter-spacing: .06em; | |
text-transform: uppercase; | |
cursor: pointer; | |
transition: background var(--t-fast), color var(--t-fast), box-shadow var(--t-fast), transform var(--t-fast), border-color var(--t-fast); | |
min-width: 44px; | |
} | |
.btn:active { | |
transform: translateY(1px); | |
background: #0e1518; | |
} | |
.btn:disabled, | |
.btn[disabled] { | |
opacity: .5; | |
cursor: not-allowed; | |
} | |
.btn--primary { | |
background: linear-gradient(180deg, var(--accent-300), var(--accent)); | |
color: #041012; | |
border-color: var(--accent-700); | |
box-shadow: 0 2px 0 0 rgba(0,0,0,.3) inset; | |
} | |
.btn--primary:hover { | |
box-shadow: 0 0 0 2px var(--accent-200)55 inset, var(--glow-1); | |
} | |
.btn--toggle[aria-pressed="true"] { | |
background: var(--accent); | |
color: #041012; | |
box-shadow: 0 0 0 2px var(--accent-200)55 inset; | |
border-color: var(--accent-700); | |
} | |
/* Upgrade Panel */ | |
.upgrade-panel { | |
pointer-events: auto; | |
position: fixed; | |
bottom: var(--s-6); | |
left: var(--s-6); | |
right: var(--s-6); | |
max-width: 560px; | |
background: linear-gradient(180deg, var(--bg-2), var(--bg-1)); | |
border: 1px solid var(--panel-border); | |
border-radius: var(--r-3); | |
box-shadow: var(--shadow-2), var(--inset-1); | |
padding: var(--s-6); | |
z-index: 20; | |
} | |
.stat-grid { | |
display: grid; | |
grid-template-columns: auto 1fr; | |
gap: var(--s-3) var(--s-6); | |
align-items: center; | |
margin-bottom: var(--s-6); | |
} | |
.stat-label { | |
color: var(--text-3); | |
font-family: var(--font-display); | |
font-size: var(--fs-12); | |
text-transform: uppercase; | |
letter-spacing: .06em; | |
} | |
.stat-value { | |
font-family: var(--font-mono); | |
font-size: var(--fs-14); | |
} | |
/* Tower Palette (floating menu) */ | |
.palette { | |
pointer-events: auto; | |
position: fixed; | |
background: linear-gradient(180deg, var(--bg-2), var(--bg-1)); | |
border: 1px solid var(--panel-border); | |
border-radius: var(--r-2); | |
padding: var(--s-5); | |
color: var(--text-1); | |
box-shadow: var(--shadow-2), var(--inset-1); | |
width: 200px; | |
z-index: 1000; | |
} | |
.palette-title { | |
font-family: var(--font-display); | |
font-size: var(--fs-12); | |
color: var(--text-3); | |
letter-spacing: .06em; | |
text-transform: uppercase; | |
margin-bottom: var(--s-4); | |
} | |
.palette-list { | |
display: flex; | |
flex-direction: column; | |
gap: var(--s-3); | |
} | |
.palette-item { | |
display: flex; | |
align-items: center; | |
justify-content: space-between; | |
gap: var(--s-3); | |
padding: var(--s-3) var(--s-4); | |
border-radius: var(--r-1); | |
border: 1px solid var(--panel-border); | |
background: #122026; | |
color: var(--text-1); | |
cursor: pointer; | |
transition: transform var(--t-fast), box-shadow var(--t-fast), background var(--t-fast), color var(--t-fast); | |
} | |
.palette-item:hover { | |
transform: translateY(-1px); | |
box-shadow: var(--glow-1); | |
background: #14262c; | |
} | |
.palette-item[aria-disabled="true"] { | |
opacity: .5; | |
} | |
/* Messages bar */ | |
.message-bar { | |
pointer-events: none; | |
position: fixed; | |
top: calc(48px + var(--s-6)); | |
left: 50%; | |
transform: translateX(-50%); | |
min-width: 320px; | |
max-width: 70vw; | |
text-align: center; | |
background: var(--bg-3); | |
border: 1px solid var(--panel-border); | |
border-radius: var(--r-2); | |
padding: var(--s-3) var(--s-5); | |
color: var(--text-2); | |
box-shadow: var(--shadow-1), var(--inset-1); | |
z-index: 15; | |
} | |
/* Focus ring for accessibility */ | |
:focus-visible { | |
outline: none; | |
box-shadow: 0 0 0 2px #000 inset, 0 0 0 3px var(--accent-300); | |
border-radius: var(--r-1); | |
} |