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); | |
| } |