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