tab-shooter/popup.css

350 lines
6.2 KiB
CSS

* {
margin: 0;
padding: 0;
box-sizing: border-box;
user-select: none;
}
body {
width: 420px;
height: 600px;
overflow: hidden;
background: #05060f;
color: #e0e0ff;
font-family: "Segoe UI", "Arial", sans-serif;
}
#app {
position: relative;
width: 100%;
height: 100%;
background:
radial-gradient(ellipse at top, #1a1040 0%, transparent 60%),
radial-gradient(ellipse at bottom right, #2a0a40 0%, transparent 50%),
#05060f;
overflow: hidden;
}
/* Starfield background */
#app::before {
content: "";
position: absolute;
inset: 0;
background-image:
radial-gradient(1px 1px at 20% 30%, #ffffff, transparent),
radial-gradient(1px 1px at 60% 70%, #ffffff, transparent),
radial-gradient(2px 2px at 80% 20%, #ffffff, transparent),
radial-gradient(1px 1px at 40% 80%, #aaaaff, transparent),
radial-gradient(1px 1px at 90% 50%, #ffffff, transparent),
radial-gradient(1px 1px at 10% 60%, #ffaaaa, transparent),
radial-gradient(2px 2px at 70% 40%, #ffffff, transparent),
radial-gradient(1px 1px at 30% 10%, #aaffff, transparent);
background-size: 200px 200px;
opacity: 0.6;
pointer-events: none;
}
/* SCREENS */
.screen {
position: absolute;
inset: 0;
display: none;
flex-direction: column;
align-items: center;
justify-content: center;
padding: 24px;
z-index: 10;
}
.screen.visible {
display: flex;
}
#game-screen {
padding: 0;
justify-content: flex-start;
}
/* TITLE */
.title {
font-size: 38px;
font-weight: 800;
letter-spacing: 2px;
text-align: center;
background: linear-gradient(135deg, #00f0ff 0%, #ff00e5 100%);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
text-shadow: 0 0 30px rgba(0, 240, 255, 0.3);
margin-bottom: 8px;
}
.title.small {
font-size: 28px;
margin-bottom: 16px;
}
.title span {
color: #ff00e5;
-webkit-text-fill-color: #ff00e5;
}
.subtitle {
font-size: 14px;
text-align: center;
color: #8888aa;
line-height: 1.5;
margin-bottom: 24px;
}
/* SCOPE SELECT */
.scope-select {
width: 100%;
margin-bottom: 20px;
}
.scope-label {
display: block;
text-align: center;
font-size: 12px;
color: #8888aa;
text-transform: uppercase;
letter-spacing: 1px;
margin-bottom: 10px;
}
.scope-buttons {
display: flex;
gap: 12px;
justify-content: center;
}
.scope-btn {
flex: 1;
background: rgba(255, 255, 255, 0.04);
border: 2px solid rgba(255, 255, 255, 0.1);
border-radius: 12px;
padding: 14px 8px;
color: #e0e0ff;
cursor: pointer;
transition: all 0.2s;
display: flex;
flex-direction: column;
align-items: center;
gap: 6px;
font-family: inherit;
}
.scope-btn:hover {
border-color: rgba(0, 240, 255, 0.4);
background: rgba(0, 240, 255, 0.05);
}
.scope-btn.active {
border-color: #00f0ff;
background: rgba(0, 240, 255, 0.12);
box-shadow: 0 0 20px rgba(0, 240, 255, 0.2);
}
.scope-icon {
font-size: 26px;
}
.scope-text {
font-size: 12px;
line-height: 1.2;
text-align: center;
}
/* BUTTONS */
.primary-btn {
background: linear-gradient(135deg, #00f0ff 0%, #00a0ff 100%);
color: #05060f;
border: none;
padding: 14px 48px;
font-size: 16px;
font-weight: 700;
letter-spacing: 2px;
border-radius: 30px;
cursor: pointer;
transition: all 0.2s;
font-family: inherit;
box-shadow: 0 0 30px rgba(0, 240, 255, 0.4);
margin-bottom: 20px;
}
.primary-btn:hover {
transform: translateY(-2px);
box-shadow: 0 4px 40px rgba(0, 240, 255, 0.6);
}
.primary-btn:active {
transform: translateY(0);
}
.secondary-btn {
background: transparent;
color: #8888aa;
border: 1px solid rgba(255, 255, 255, 0.15);
padding: 10px 32px;
font-size: 13px;
border-radius: 20px;
cursor: pointer;
transition: all 0.2s;
font-family: inherit;
margin-top: 8px;
}
.secondary-btn:hover {
color: #e0e0ff;
border-color: rgba(255, 255, 255, 0.4);
}
/* HIGHSCORE */
.highscore-display {
display: flex;
align-items: center;
gap: 8px;
margin-bottom: 20px;
padding: 8px 20px;
background: rgba(255, 215, 0, 0.06);
border: 1px solid rgba(255, 215, 0, 0.2);
border-radius: 20px;
}
.hs-label {
font-size: 13px;
}
.hs-value {
font-size: 16px;
font-weight: 700;
color: #ffd700;
}
/* CONTROLS HINT */
.controls-hint {
text-align: center;
font-size: 11px;
color: #666688;
line-height: 2;
}
.controls-hint kbd {
display: inline-block;
min-width: 22px;
padding: 2px 6px;
background: rgba(255, 255, 255, 0.08);
border: 1px solid rgba(255, 255, 255, 0.15);
border-radius: 4px;
font-size: 10px;
font-family: monospace;
color: #ccccee;
margin: 0 1px;
}
/* HUD */
#hud {
position: absolute;
top: 0;
left: 0;
right: 0;
display: flex;
justify-content: space-between;
align-items: center;
padding: 8px 12px;
background: linear-gradient(180deg, rgba(0, 0, 0, 0.7) 0%, transparent 100%);
z-index: 20;
pointer-events: none;
}
.hud-item {
display: flex;
flex-direction: column;
align-items: center;
gap: 2px;
}
.hud-label {
font-size: 9px;
color: #666688;
letter-spacing: 1px;
}
.hud-value {
font-size: 14px;
font-weight: 700;
color: #00f0ff;
}
.powerup-indicator {
flex-direction: row;
gap: 4px;
font-size: 16px;
}
#game-canvas {
display: block;
width: 420px;
height: 600px;
}
/* GAME OVER */
.result-stats {
width: 100%;
background: rgba(255, 255, 255, 0.03);
border: 1px solid rgba(255, 255, 255, 0.08);
border-radius: 12px;
padding: 16px;
margin-bottom: 16px;
}
.stat-row {
display: flex;
justify-content: space-between;
padding: 8px 4px;
font-size: 14px;
color: #aaaacc;
border-bottom: 1px solid rgba(255, 255, 255, 0.05);
}
.stat-row:last-child {
border-bottom: none;
}
.stat-row.highlight {
color: #ffd700;
}
.stat-value {
font-weight: 700;
color: #e0e0ff;
}
.stat-row.highlight .stat-value {
color: #ffd700;
}
.new-record {
color: #ffd700;
font-weight: 700;
font-size: 16px;
letter-spacing: 2px;
margin-bottom: 16px;
animation: pulse 1s ease-in-out infinite alternate;
}
.new-record.hidden {
display: none;
}
@keyframes pulse {
from { transform: scale(1); }
to { transform: scale(1.08); }
}
/* EMPTY STATE */
.empty-icon {
font-size: 56px;
margin-bottom: 8px;
}