MCPanel/app/static/style.css
2025-04-10 23:10:40 +02:00

535 lines
11 KiB
CSS

/* Reset & Base Styles */
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
html {
font-size: 16px;
}
body {
font-family: 'Inter', sans-serif;
background: linear-gradient(145deg, #0a0a0f, #000000);
color: #f0f0f0;
min-height: 100vh;
padding: 32px 20px;
display: flex;
flex-direction: column;
align-items: center;
overflow-x: hidden;
}
/* Glowing cursor */
*,
*::before,
*::after {
cursor: none !important;
}
body::after {
content: '';
position: fixed;
top: var(--cursor-y, 0);
left: var(--cursor-x, 0);
width: 60px;
height: 60px;
background: radial-gradient(circle, rgba(109, 125, 251, 0.35) 0%, transparent 80%);
border-radius: 50%;
pointer-events: none;
transform: translate(-50%, -50%);
z-index: 9999;
transition: top 0.08s ease-out, left 0.08s ease-out;
}
.cursor-glow {
position: fixed;
top: 0;
left: 0;
width: 24px;
height: 24px;
border-radius: 50%;
pointer-events: none;
mix-blend-mode: screen;
z-index: 999999;
transition: transform 0.05s linear;
}
.cursor-glow:nth-child(1) { background: radial-gradient(circle, #b9c5ff 0%, transparent 80%); }
.cursor-glow:nth-child(2) { background: radial-gradient(circle, rgba(179, 192, 253, 0.53) 0%, transparent 80%); width: 28px; height: 28px; }
.cursor-glow:nth-child(3) { background: radial-gradient(circle, rgba(175, 187, 248, 0.33) 0%, transparent 80%); width: 32px; height: 32px; }
.cursor-glow:nth-child(4) { background: radial-gradient(circle, rgba(160, 170, 243, 0.2) 0%, transparent 80%); width: 36px; height: 36px; }
.cursor-glow:nth-child(5) { background: radial-gradient(circle, rgba(130, 140, 230, 0.1) 0%, transparent 80%); width: 40px; height: 40px; }
.cursor-glow:nth-child(6) { background: radial-gradient(circle, rgba(100, 110, 210, 0.05) 0%, transparent 80%); width: 44px; height: 44px; }
/* Headings */
h2 {
font-size: clamp(1.8rem, 2.5vw, 2.3rem);
color: #ffffff;
margin-bottom: 24px;
text-align: center;
letter-spacing: 1px;
}
/* Card Container */
.dashboard-card {
background: linear-gradient(to bottom right, #0e0e1a, #10101c);
position:relative;
backdrop-filter: blur(14px);
border: 1px solid #1a1a2a;
box-shadow: 0 0 25px rgba(74, 90, 239, 0.2);
border-radius: 20px;
padding: 28px;
width: 100%;
max-width: 80%;
transition: all 0.3s ease;
}
/* Tabs */
.tabs {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));
gap: 14px;
margin-bottom: 26px;
}
.tab-button {
padding: 14px;
border: none;
background-color: #151520;
border-radius: 12px;
font-size: 0.95rem;
cursor: pointer;
color: #ccc;
transition: background-color 0.25s, transform 0.2s;
box-shadow: 0 0 8px transparent;
}
.tab-button:hover {
background-color: #1e1e2f;
transform: scale(1.03);
}
.tab-button.active {
background: linear-gradient(145deg, #4a5aef, #6c7bff);
color: white;
box-shadow: 0 0 14px #4a5aef99;
}
.square-button {
aspect-ratio: 1 / 1;
width: 100px;
background-color: #1a1a2e;
border: 2px solid #2c2c3c;
border-radius: 16px;
margin: 10px;
padding: 12px;
cursor: pointer;
transition: 0.3s ease;
box-shadow: 0 0 6px rgba(0, 0, 0, 0.3);
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
color: #ccc;
font-size: 14px;
font-weight: 500;
}
.square-button:hover {
background-color: #23233a;
border-color: #4a4a6a;
color: #fff;
transform: translateY(-2px);
}
.square-button img {
width: 40px;
height: auto;
margin-bottom: 8px;
filter: brightness(0.9);
}
.square-button.selected {
background-color: #3b3b5c;
border-color: #6a6af0;
color: #fff;
box-shadow: 0 0 10px rgba(106, 106, 240, 0.5);
}
/* Panels */
.tab-content {
margin-top: 12px;
width: 100%;
}
.tab-panel {
display: none;
}
.tab-panel.active {
display: block;
}
/* Buttons */
.btn {
padding: 14px 24px;
border: none;
border-radius: 10px;
font-weight: 600;
font-size: 0.95rem;
margin: 6px 4px;
cursor: pointer;
transition: 0.2s ease;
text-align: center;
min-width: 110px;
box-shadow: 0 0 8px transparent;
}
.btn:hover {
opacity: 0.95;
transform: translateY(-2px);
}
.btn-primary { background: #4a5aef; color: white; box-shadow: 0 0 10px #4a5aef99; }
.btn-success { background: #2ecc71; color: white; box-shadow: 0 0 10px #2ecc7199; }
.btn-danger { background: #e74c3c; color: white; box-shadow: 0 0 10px #e74c3c99; }
.btn-warning { background: #f39c12; color: black; box-shadow: 0 0 10px #f39c1288; }
.btn-info { background: #3498db; color: white; box-shadow: 0 0 10px #3498db99; }
/* Console Output */
.console-output {
background: #0d0d13;
color: #e0e0e0;
padding: 18px;
border-radius: 10px;
height: 240px;
overflow-y: auto;
font-family: 'Fira Code', monospace;
font-size: 0.9rem;
border: 1px solid #29293a;
white-space: pre-wrap;
margin-bottom: 14px;
}
/* Console Input */
.console-input {
margin-top: 10px;
display: flex;
gap: 10px;
}
.console-input input {
flex: 1;
padding: 6px 10px;
background: #1e1e1e;
border: 1px solid #333;
color: #fff;
border-radius: 4px;
}
.console-input button {
padding: 6px 12px;
background-color: #444;
color: white;
border: none;
border-radius: 4px;
cursor: pointer;
}
.console-input button:hover {
background-color: #666;
}
/* Chart Container */
.chart-container {
background: #12121c;
padding: 20px;
border-radius: 14px;
margin-top: 30px;
border: 1px solid #232334;
box-shadow: 0 0 12px #1a1a2a;
overflow-x: auto;
}
body > *:not(script):not(style):not(.cursor-glow) {
animation: growIn 0.6s ease-out;
}
/* Page load transition */
@keyframes growIn {
0% {
opacity: 0;
transform: scale(0.95);
filter: blur(4px);
}
100% {
opacity: 1;
transform: scale(1);
filter: blur(0);
}
}
.grow-in {
animation: growIn 0.6s ease-out forwards;
}
/* Files */
#drop-zone {
border: 2px dashed #aaa;
border-radius: 10px;
padding: 40px;
text-align: center;
cursor: pointer;
margin: 20px;
transition: background-color 0.3s ease;
}
#drop-zone.dragover {
background-color: #f3f3f3;
}
#upload-progress {
margin-top: 15px;
width: 100%;
height: 20px;
background: #ddd;
border-radius: 10px;
overflow: hidden;
}
#progress-bar {
height: 100%;
width: 0%;
background: #4caf50;
transition: width 0.2s ease;
}
.hidden {
display: none;
}
/* General Input and Checkbox */
input[type="text"], input[type="number"], input[type="checkbox"], select {
background-color: #1e1e1e;
border: 1px solid #333;
color: #fff;
font-size: 1rem;
border-radius: 4px;
padding: 8px 12px;
margin: 8px 0;
width: auto;
transition: background-color 0.3s, border-color 0.3s;
}
input[type="checkbox"] {
width: auto;
margin-right: 8px;
}
input[type="text"]:focus, input[type="number"]:focus, select:focus {
border-color: #4a5aef;
background-color: #151520;
outline: none;
}
input[type="checkbox"]:checked {
background-color: #4a5aef;
border-color: #4a5aef;
}
label {
font-size: 1rem;
color: #ccc;
display: block;
margin-bottom: 6px;
}
input[type="checkbox"] {
accent-color: #4a5aef;
}
/* Number Inputs */
input[type="number"] {
-moz-appearance: textfield;
appearance: textfield;
}
input[type="number"]::-webkit-outer-spin-button,
input[type="number"]::-webkit-inner-spin-button {
-webkit-appearance: none;
margin: 0;
}
/* Dropdown */
select {
background-color: #1e1e1e;
color: #fff;
border: 1px solid #333;
padding: 8px 12px;
font-size: 1rem;
border-radius: 4px;
width: auto;
transition: background-color 0.3s, border-color 0.3s;
}
select:focus {
border-color: #4a5aef;
background-color: #151520;
outline: none;
}
form {
display: flex;
flex-direction: column;
gap: 16px;
max-width: 600px;
margin: 0 auto;
}
.checkbox-group {
display: flex;
gap: 20px;
flex-wrap: wrap;
}
.checkbox-group label {
font-size: 1rem;
color: #ccc;
margin-right: 10px;
}
/* Background */
#particle-background {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
z-index: -1; /* Keep the particles behind other content */
pointer-events: none;
overflow: hidden;
}
.particle {
position: absolute;
width: 4px;
height: 4px;
background-color: rgba(255, 255, 255, 0.2); /* More transparent */
border-radius: 50%; /* Keep particles circular but will make them fade out quickly */
animation: particle-move 4s infinite;
}
@keyframes particle-move {
0% {
transform: scale(1) translate(0, 0);
opacity: 1;
}
100% {
transform: scale(0.5) translate(var(--x-move), var(--y-move)); /* Move in random directions */
opacity: 0;
}
}
/* Navigation */
.top-nav {
width: 100%;
max-width: 1280px;
display: flex;
justify-content: space-between;
align-items: center;
padding: 16px 24px;
margin-bottom: 24px;
background: #0e0e1a;
border-radius: 14px;
border: 1px solid #1a1a2a;
box-shadow: 0 0 14px rgba(74, 90, 239, 0.15);
}
.nav-logo {
font-size: 1.3rem;
font-weight: bold;
color: #b9c5ff;
}
.nav-links a {
margin-left: 20px;
color: #ccc;
text-decoration: none;
font-size: 1rem;
}
.nav-links a:hover {
color: #fff;
text-shadow: 0 0 6px #4a5aef;
}
/* Links */
a {
color: #4a5aef;
text-decoration: none;
transition: color 0.2s ease, text-shadow 0.2s ease;
}
a:hover {
color: #999cdc;
text-shadow: 0 0 6px #8085d8;
}
a:active {
color: #bbbeee;
}
a.non-link {
color: inherit;
text-decoration: none;
cursor: default;
}
a.non-link:hover {
color: inherit;
text-shadow: none;
}
/* Charts */
.charts-row {
display: flex;
gap: 20px;
justify-content: center;
flex-wrap: wrap;
}
.chart-container {
background: #12121c;
padding: 20px;
border-radius: 14px;
border: 1px solid #232334;
box-shadow: 0 0 12px #1a1a2a;
width: 360px;
height: 240px;
max-width: 100%;
display: flex;
align-items: center;
justify-content: center;
}
/* Mobile Tweaks */
@media (max-width: 600px) {
body {
padding: 24px 12px;
}
.dashboard-card {
padding: 20px;
}
.btn {
width: 100%;
margin: 8px 0;
}
.console-output {
height: 180px;
}
}