Created
March 2, 2025 10:43
-
-
Save foeken/6b53410a43190c521057b1cb33053590 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* Retro Gaming Console CSS for Tana System */ | |
/* Import pixel fonts */ | |
@import url('https://fonts.googleapis.com/css2?family=Press+Start+2P&display=swap'); | |
/* Base styles and color palette */ | |
:root { | |
--primary: #ff0066; | |
--secondary: #00ccff; | |
--accent: #ffcc00; | |
--dark: #222034; | |
--light: #f2f2f2; | |
--console-border: #444444; | |
--console-body: #303030; | |
--screen-glow: 0 0 10px rgba(0, 204, 255, 0.7); | |
--button-glow: 0 0 8px rgba(255, 204, 0, 0.7); | |
} | |
/* Global reset and base styles */ | |
* { | |
margin: 0; | |
padding: 0; | |
box-sizing: border-box; | |
transition: all 0.2s ease; | |
} | |
body { | |
font-family: 'Press Start 2P', cursive; | |
background-color: var(--dark); | |
color: var(--light); | |
line-height: 1.6; | |
font-size: 14px; | |
overflow-x: hidden; | |
padding: 20px; | |
background-image: | |
linear-gradient(rgba(34, 32, 52, 0.95), rgba(34, 32, 52, 0.95)), | |
repeating-linear-gradient(0deg, transparent, transparent 2px, rgba(255, 255, 255, 0.05) 2px, rgba(255, 255, 255, 0.05) 4px); | |
} | |
/* Console container */ | |
.container, main, #main, .tana-container { | |
max-width: 1000px; | |
margin: 0 auto; | |
background-color: var(--console-body); | |
border: 15px solid var(--console-border); | |
border-radius: 20px; | |
padding: 25px; | |
position: relative; | |
box-shadow: | |
0 0 0 5px rgba(0, 0, 0, 0.3), | |
inset 0 0 20px rgba(0, 0, 0, 0.5); | |
animation: power-on 1.5s ease-in-out 0.5s backwards; | |
} | |
/* Header styling */ | |
header, .header, .tana-header { | |
margin-bottom: 30px; | |
padding-bottom: 15px; | |
border-bottom: 4px solid var(--primary); | |
position: relative; | |
text-align: center; | |
} | |
h1, .title, .tana-title { | |
color: var(--accent); | |
font-size: 28px; | |
text-shadow: 4px 4px 0 var(--dark); | |
letter-spacing: 2px; | |
margin-bottom: 15px; | |
animation: title-flicker 3s infinite; | |
} | |
/* Screen effect */ | |
.content, .tana-content { | |
background-color: rgba(0, 0, 0, 0.7); | |
border-radius: 10px; | |
padding: 20px; | |
margin-bottom: 20px; | |
border: 4px solid var(--secondary); | |
position: relative; | |
overflow: hidden; | |
box-shadow: var(--screen-glow), inset 0 0 50px rgba(0, 204, 255, 0.2); | |
} | |
.content::before, .tana-content::before { | |
content: ""; | |
position: absolute; | |
top: 0; | |
left: 0; | |
right: 0; | |
height: 3px; | |
background: linear-gradient(90deg, transparent, var(--secondary), transparent); | |
animation: scan-line 8s linear infinite; | |
opacity: 0.3; | |
} | |
/* Links with button effect */ | |
a, .link, .tana-link { | |
color: var(--accent); | |
text-decoration: none; | |
display: inline-block; | |
padding: 5px 10px; | |
border: 2px solid var(--accent); | |
border-radius: 4px; | |
margin: 5px; | |
background-color: var(--dark); | |
transition: all 0.2s; | |
position: relative; | |
overflow: hidden; | |
} | |
a:hover, .link:hover, .tana-link:hover { | |
transform: scale(1.05); | |
box-shadow: var(--button-glow); | |
cursor: pointer; | |
} | |
a:active, .link:active, .tana-link:active { | |
transform: scale(0.95); | |
background-color: var(--accent); | |
color: var(--dark); | |
} | |
/* List items as menu options */ | |
ul, ol, .list, .tana-list { | |
list-style-type: none; | |
padding: 10px; | |
} | |
li, .list-item, .tana-list-item { | |
margin-bottom: 10px; | |
padding: 8px; | |
border-left: 4px solid var(--primary); | |
background-color: rgba(255, 0, 102, 0.1); | |
} | |
li:hover, .list-item:hover, .tana-list-item:hover { | |
background-color: rgba(255, 0, 102, 0.2); | |
transform: translateX(5px); | |
} | |
/* Buttons */ | |
button, .button, .tana-button { | |
font-family: 'Press Start 2P', cursive; | |
background-color: var(--secondary); | |
color: var(--dark); | |
border: none; | |
padding: 10px 20px; | |
margin: 10px 5px; | |
border-radius: 4px; | |
cursor: pointer; | |
box-shadow: 0 4px 0 rgba(0, 0, 0, 0.3); | |
position: relative; | |
overflow: hidden; | |
} | |
button:hover, .button:hover, .tana-button:hover { | |
background-color: var(--primary); | |
transform: translateY(-2px); | |
box-shadow: 0 6px 0 rgba(0, 0, 0, 0.3); | |
} | |
button:active, .button:active, .tana-button:active { | |
transform: translateY(2px); | |
box-shadow: 0 2px 0 rgba(0, 0, 0, 0.3); | |
} | |
/* Form elements */ | |
input, textarea, select { | |
font-family: 'Press Start 2P', cursive; | |
background-color: var(--dark); | |
border: 2px solid var(--secondary); | |
color: var(--light); | |
padding: 10px; | |
margin: 5px 0; | |
border-radius: 4px; | |
width: 100%; | |
} | |
input:focus, textarea:focus, select:focus { | |
outline: none; | |
border-color: var(--accent); | |
box-shadow: var(--button-glow); | |
} | |
/* D-pad control styling */ | |
.controls, .tana-controls { | |
display: flex; | |
justify-content: center; | |
margin: 20px 0; | |
} | |
.d-pad { | |
position: relative; | |
width: 100px; | |
height: 100px; | |
} | |
.d-pad-button { | |
position: absolute; | |
width: 30px; | |
height: 30px; | |
background-color: var(--primary); | |
display: flex; | |
align-items: center; | |
justify-content: center; | |
cursor: pointer; | |
} | |
.d-pad-up { top: 0; left: 35px; border-radius: 5px 5px 0 0; } | |
.d-pad-right { right: 0; top: 35px; border-radius: 0 5px 5px 0; } | |
.d-pad-down { bottom: 0; left: 35px; border-radius: 0 0 5px 5px; } | |
.d-pad-left { left: 0; top: 35px; border-radius: 5px 0 0 5px; } | |
.d-pad-center { | |
left: 35px; | |
top: 35px; | |
width: 30px; | |
height: 30px; | |
background-color: var(--accent); | |
border-radius: 50%; | |
} | |
/* Footer */ | |
footer, .footer, .tana-footer { | |
margin-top: 30px; | |
padding-top: 15px; | |
border-top: 4px solid var(--primary); | |
text-align: center; | |
font-size: 12px; | |
color: var(--secondary); | |
} | |
/* Specific Tana elements */ | |
.tana-node { | |
margin: 15px 0; | |
padding: 10px; | |
border-left: 3px solid var(--secondary); | |
animation: pulse 4s infinite alternate; | |
} | |
.tana-tag { | |
display: inline-block; | |
background-color: var(--primary); | |
color: var(--light); | |
padding: 3px 6px; | |
border-radius: 4px; | |
margin: 2px; | |
font-size: 10px; | |
} | |
.tana-supertag { | |
background-color: var(--accent); | |
color: var(--dark); | |
} | |
/* Pixel art decorations */ | |
.pixel-art { | |
position: absolute; | |
width: 40px; | |
height: 40px; | |
background-color: transparent; | |
} | |
.pixel-art.character { | |
top: 20px; | |
right: 20px; | |
background-image: linear-gradient( | |
to bottom, | |
transparent 0%, transparent 20%, | |
var(--primary) 20%, var(--primary) 40%, | |
var(--light) 40%, var(--light) 60%, | |
var(--secondary) 60%, var(--secondary) 80%, | |
var(--accent) 80%, var(--accent) 100% | |
); | |
animation: bounce 2s infinite alternate; | |
} | |
.pixel-art.item { | |
bottom: 20px; | |
left: 20px; | |
background-color: var(--accent); | |
border-radius: 5px; | |
box-shadow: 0 0 10px rgba(255, 204, 0, 0.8); | |
animation: rotate 4s linear infinite; | |
} | |
/* Animations */ | |
@keyframes scan-line { | |
0% { | |
transform: translateY(-100px); | |
} | |
100% { | |
transform: translateY(1000px); | |
} | |
} | |
@keyframes title-flicker { | |
0%, 19.999%, 22%, 62.999%, 64%, 64.999%, 70%, 100% { | |
opacity: 1; | |
text-shadow: 4px 4px 0 var(--dark), | |
-2px -2px 0 var(--secondary), | |
2px 2px 0 var(--primary); | |
} | |
20%, 21.999%, 63%, 63.999%, 65%, 69.999% { | |
opacity: 0.8; | |
text-shadow: none; | |
} | |
} | |
@keyframes bounce { | |
0%, 100% { | |
transform: translateY(0); | |
} | |
50% { | |
transform: translateY(-10px); | |
} | |
} | |
@keyframes rotate { | |
0% { | |
transform: rotate(0deg); | |
} | |
100% { | |
transform: rotate(360deg); | |
} | |
} | |
@keyframes pulse { | |
0% { | |
box-shadow: 0 0 5px rgba(0, 204, 255, 0.1); | |
} | |
100% { | |
box-shadow: 0 0 15px rgba(0, 204, 255, 0.4); | |
} | |
} | |
@keyframes power-on { | |
0% { | |
opacity: 0; | |
transform: scale(0.8); | |
} | |
20% { | |
opacity: 0.2; | |
} | |
40% { | |
opacity: 0.4; | |
transform: scale(0.9); | |
} | |
60% { | |
opacity: 0.1; | |
} | |
80% { | |
opacity: 0.9; | |
transform: scale(1.01); | |
} | |
90% { | |
opacity: 0.7; | |
} | |
100% { | |
opacity: 1; | |
transform: scale(1); | |
} | |
} | |
/* Add console buttons on top */ | |
.container::before, main::before, #main::before, .tana-container::before { | |
content: ""; | |
position: absolute; | |
top: -30px; | |
left: 50px; | |
width: 20px; | |
height: 20px; | |
background-color: var(--primary); | |
border-radius: 50%; | |
box-shadow: 0 0 10px rgba(255, 0, 102, 0.7); | |
animation: blink 2s infinite alternate; | |
} | |
.container::after, main::after, #main::after, .tana-container::after { | |
content: ""; | |
position: absolute; | |
top: -30px; | |
left: 80px; | |
width: 20px; | |
height: 20px; | |
background-color: var(--accent); | |
border-radius: 50%; | |
box-shadow: 0 0 10px rgba(255, 204, 0, 0.7); | |
animation: blink 3s infinite alternate; | |
} | |
@keyframes blink { | |
0%, 100% { | |
opacity: 1; | |
} | |
50% { | |
opacity: 0.5; | |
} | |
} | |
/* Media Queries */ | |
@media (max-width: 768px) { | |
body { | |
font-size: 12px; | |
padding: 10px; | |
} | |
h1, .title, .tana-title { | |
font-size: 20px; | |
} | |
.container, main, #main, .tana-container { | |
border-width: 10px; | |
padding: 15px; | |
} | |
} | |
/* Add CRT effect */ | |
.crt-effect { | |
position: fixed; | |
top: 0; | |
left: 0; | |
width: 100%; | |
height: 100%; | |
pointer-events: none; | |
z-index: 9999; | |
background: linear-gradient( | |
rgba(18, 16, 16, 0) 50%, | |
rgba(0, 0, 0, 0.1) 50% | |
), | |
linear-gradient( | |
90deg, | |
rgba(255, 0, 0, 0.03), | |
rgba(0, 255, 0, 0.02), | |
rgba(0, 0, 255, 0.03) | |
); | |
background-size: 100% 2px, 3px 100%; | |
animation: flicker 0.3s infinite; | |
} | |
@keyframes flicker { | |
0% { | |
opacity: 0.97; | |
} | |
5% { | |
opacity: 0.95; | |
} | |
10% { | |
opacity: 0.97; | |
} | |
15% { | |
opacity: 0.94; | |
} | |
20% { | |
opacity: 0.98; | |
} | |
50% { | |
opacity: 0.94; | |
} | |
80% { | |
opacity: 0.98; | |
} | |
85% { | |
opacity: 0.96; | |
} | |
90% { | |
opacity: 0.97; | |
} | |
100% { | |
opacity: 0.94; | |
} | |
} | |
/* For Tana specific elements */ | |
.supertag, .tag, [data-type="supertag"], [data-type="tag"] { | |
color: var(--accent); | |
font-weight: bold; | |
padding: 0 3px; | |
} | |
.field, [data-type="field"] { | |
color: var(--secondary); | |
font-weight: bold; | |
} | |
/* Add this at the end of your CSS */ | |
body::after { | |
content: ""; | |
position: fixed; | |
top: 0; | |
left: 0; | |
width: 100%; | |
height: 100%; | |
background: repeating-linear-gradient( | |
0deg, | |
rgba(0, 0, 0, 0.15), | |
rgba(0, 0, 0, 0.15) 1px, | |
transparent 1px, | |
transparent 2px | |
); | |
pointer-events: none; | |
z-index: 1000; | |
opacity: 0.3; | |
} | |
/* Add a startup sequence animation */ | |
body { | |
animation: startup 4s linear; | |
} | |
@keyframes startup { | |
0% { | |
opacity: 0; | |
} | |
10% { | |
opacity: 0.1; | |
} | |
15% { | |
opacity: 0.3; | |
} | |
20% { | |
opacity: 0; | |
} | |
30% { | |
opacity: 0.5; | |
} | |
40% { | |
opacity: 0.1; | |
} | |
50% { | |
opacity: 0.7; | |
} | |
60% { | |
opacity: 0.2; | |
} | |
70% { | |
opacity: 1; | |
} | |
80% { | |
opacity: 0.4; | |
} | |
100% { | |
opacity: 1; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment