The Great Refactoring

This commit is contained in:
2026-06-06 10:27:33 +02:00
parent f543405964
commit 06f862c68a
16 changed files with 2168 additions and 2055 deletions
+217
View File
@@ -0,0 +1,217 @@
/*
* Hier liegen alle Styles für den Anmelde- und Registrierungsprozess.
* Das umfasst das Formular, die eingabefelder, buttons, Checkboxen und die Hilfslinks
*/
#register-form {
pointer-events: auto;
width: 500px;
height: 500px;
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
}
.input-group label {
display: none;
}
.input-group input {
position: absolute;
width: 300px;
height: 50px;
left: 115px;
box-sizing: border-box;
padding: 10px 15px;
background: transparent;
border: none;
outline: none;
color: var(--color-text-main);
font-size: 16px;
font-family: inherit;
transition: text-shadow 0.2s ease;
}
#username { top: 135px; }
#email { top: 200px; }
#password { top: 265px; }
.input-group input::placeholder {
color: var(--color-text-placeholder);
}
.input-group input:focus {
text-shadow: 0 0 8px var(--color-cyan-dark);
background: transparent;
box-shadow: none;
}
#btn-register {
position: absolute;
width: 370px;
height: 55px;
left: 65px;
top: 390px;
background: transparent;
border: none;
color: var(--color-text-main);
font-size: 18px;
font-weight: bold;
font-family: inherit;
letter-spacing: 2px;
cursor: pointer;
transition: all 0.2s ease;
}
#btn-register:hover {
background: transparent;
color: var(--color-text-main);
text-shadow: 0 0 15px var(--color-text-main), 0 0 30px var(--color-green-bright);
}
.tab-btn {
position: absolute;
height: 40px;
width: 180px;
top: 60px;
background: transparent;
border: none;
color: var(--color-text-inactive);
font-size: 14px;
font-family: inherit;
text-transform: uppercase;
cursor: pointer;
outline: none;
transition: color 0.2s ease;
}
#tab-login { left: 65px; }
#tab-register { left: 255px; }
.tab-btn.active {
color: var(--color-text-main);
text-shadow: 0 0 8px var(--color-cyan-bright);
}
.tab-btn:hover:not(.active) {
color: var(--color-text-main);
}
.checkbox-group {
position: absolute;
left: 115px;
display: flex;
align-items: center;
gap: 10px;
}
#group-remember { top: 300px; }
#group-agb { top: 325px; }
.checkbox-group label {
color: var(--color-text-main);
font-size: 14px;
cursor: pointer;
}
.checkbox-group input[type="checkbox"] {
appearance: none;
width: 18px;
height: 18px;
border: 1px solid var(--color-cyan-dark);
background: var(--color-checkbox-bg);
cursor: pointer;
position: relative;
}
.checkbox-group input[type="checkbox"]:checked::after {
content: '✔';
position: absolute;
color: var(--color-cyan-bright);
font-size: 14px;
top: -2px;
left: 2px;
}
#otp-instruction {
display: none;
position: absolute;
top: 120px;
left: 65px;
width: 370px;
text-align: center;
color: var(--color-text-main);
font-size: 15px;
margin: 0;
}
#msg-box {
position: absolute;
top: 350px;
left: 65px;
width: 370px;
height: 30px;
color: var(--color-error);
font-size: 14px;
text-align: center;
font-weight: bold;
display: flex;
align-items: center;
justify-content: center;
}
#resend-otp-link {
position: absolute;
top: 250px;
left: 65px;
width: 370px;
text-align: center;
color: var(--color-text-inactive);
font-size: 14px;
text-decoration: underline;
cursor: pointer;
pointer-events: auto;
transition: color 0.2s ease, text-shadow 0.2s ease;
}
#resend-otp-link:hover, #forgot-password-link:hover, #back-link:hover {
color: var(--color-cyan-bright);
text-shadow: 0 0 8px var(--color-cyan-bright);
}
#forgot-password-link {
position: absolute;
top: 255px;
left: 120px;
color: var(--color-text-inactive);
font-size: 14px;
text-decoration: underline;
cursor: pointer;
pointer-events: auto;
transition: color 0.2s ease, text-shadow 0.2s ease;
}
#discord-link {
position: absolute;
left: 640px;
top: 380px;
width: 280px;
height: 85px;
background: transparent;
text-decoration: none;
cursor: pointer;
pointer-events: auto;
}
#back-link {
position: absolute;
top: 70px;
left: 65px;
color: var(--color-text-inactive);
font-size: 15px;
text-decoration: none;
cursor: pointer;
pointer-events: auto;
transition: color 0.2s ease, text-shadow 0.2s ease;
}
+43
View File
@@ -0,0 +1,43 @@
/*
* Beinhaltet das absolute Grundgerüst der Seite.
* Reset-Regeln uns die Positionierung der Haupt-Container (Z-Index Ebenen).
*/
body, html {
margin: 0;
padding: 0;
width: 100%;
height: 100%;
overflow: hidden;
background-color: var(--color-bg-page);
font-family: var(--font-main);
/* NEU: Verbietet mobilen Browsern das eigenmächtige Vergrößern der Schrift */
-webkit-text-size-adjust: 100%;
text-size-adjust: 100%;
}
#game-wrapper {
position: relative;
width: 100%;
height: 100%;
}
#pixi-container {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
z-index: 0;
}
#ui-layer {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
z-index: 10;
pointer-events: none;
}
+287
View File
@@ -0,0 +1,287 @@
/*
* Hier liegen alle Styles für die Lobb-Ansicht (nach dem Login)
* Das umfasst die Top-Bar, Dropdowns, der Footer und die Sektor-Karten
*/
#lobby-ui {
position: absolute;
top: 0; left: 0;
width: 100%; height: 100%;
pointer-events: none;
z-index: 15;
}
#top-bar {
width: 100%; height: 50px;
background: transparent;
border-bottom: none;
box-shadow: none;
display: flex; justify-content: space-between; align-items: center;
padding: 0 20px; box-sizing: border-box;
pointer-events: auto;
}
.top-bar-right {
display: flex; align-items: center; gap: 20px;
}
.custom-dropdown {
position: relative;
font-family: var(--font-main);
color: var(--color-text-main);
}
.dropdown-toggle {
display: flex; align-items: center; gap: 8px;
cursor: pointer;
padding: 5px 10px;
border: 1px solid transparent;
transition: all 0.2s ease;
user-select: none;
}
.dropdown-toggle:hover {
border: 1px solid var(--color-cyan-dark);
background: rgba(0, 240, 255, 0.05);
}
.dropdown-arrow {
font-size: 10px;
color: var(--color-cyan-dark);
}
.flag-icon { font-size: 16px; }
.dropdown-menu {
position: absolute;
top: 100%;
right: 0;
margin-top: 10px;
background: rgba(11, 25, 44, 0.95);
border: 1px solid var(--color-cyan-dark);
box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);
list-style: none;
padding: 5px 0;
min-width: 150px;
opacity: 0;
pointer-events: none;
transform: translateY(-10px);
transition: all 0.2s ease;
}
.dropdown-menu.show {
opacity: 1;
pointer-events: auto;
transform: translateY(0);
}
.user-menu { min-width: 220px; }
.dropdown-item {
padding: 10px 15px;
cursor: pointer;
display: flex;
align-items: center;
gap: 10px;
font-size: 14px;
transition: background 0.2s ease, color 0.2s ease;
}
.dropdown-item:hover:not(.disabled) {
background: rgba(0, 240, 255, 0.1);
color: var(--color-cyan-bright);
}
.dropdown-item.disabled, .dropdown-header.disabled {
color: var(--color-text-inactive);
cursor: not-allowed;
}
.dropdown-header {
padding: 10px 15px;
font-size: 14px;
line-height: 1.4;
}
.premium-text {
color: var(--color-cyan-bright);
font-weight: bold;
}
.dropdown-divider {
height: 1px;
background: var(--color-cyan-dark);
margin: 5px 0;
opacity: 0.5;
}
.logout-item {
color: var(--color-error);
font-weight: bold;
}
.logout-item:hover {
background: rgba(255, 68, 68, 0.1) !important;
color: var(--color-error) !important;
}
#game-footer {
position: absolute; bottom: 0; left: 0; width: 100%;
height: 40px;
z-index: 20;
pointer-events: none;
display: flex; justify-content: space-between; align-items: center;
padding: 0 40px; box-sizing: border-box;
color: var(--color-text-inactive);
font-size: 12px;
font-family: inherit;
border-top: 1px solid var(--color-text-inactive);
background: transparent;
}
.footer-left { flex: 1; text-align: left; }
.footer-center { flex: 1; text-align: center; }
.footer-right { flex: 1; text-align: right; }
#game-footer a {
color: var(--color-text-inactive); text-decoration: none;
transition: color 0.2s ease, text-shadow 0.2s ease;
pointer-events: auto;
}
#game-footer a:hover {
color: var(--color-cyan-bright);
text-shadow: 0 0 8px var(--color-cyan-bright);
}
#sector-browser-layer {
position: absolute;
width: 1240px;
height: 650px;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
pointer-events: auto;
}
#sector-tab-container {
position: absolute;
top: 20px;
width: 100%;
height: 40px;
display: flex;
justify-content: center;
gap: 20px;
}
#sector-tab-container .tab-btn {
position: relative;
left: 0 !important;
top: 0 !important;
}
#tab-my-sectors { left: 45px; }
#tab-new-sectors { left: 235px; }
#sector-list-container {
position: absolute;
top: 80px;
width: 100%;
height: 540px;
overflow-y: auto;
overflow-x: hidden;
padding: 20px 40px;
box-sizing: border-box;
display: grid;
grid-template-columns: repeat(4, 270px);
gap: 20px 25px;
justify-content: flex-start;
}
.sector-card-link {
display: block;
width: 270px;
height: 90px;
text-decoration: none;
color: var(--color-text-main);
position: relative;
cursor: pointer;
box-sizing: border-box;
}
.sector-card-content {
position: relative;
width: 100%;
height: 100%;
padding: 15px 25px;
box-sizing: border-box;
display: flex;
flex-direction: column;
justify-content: center;
}
.sector-row-top {
display: flex;
align-items: center;
gap: 15px;
font-size: 18px;
font-weight: bold;
letter-spacing: 1px;
}
.sector-details-icon {
font-size: 14px;
color: var(--color-text-inactive);
transition: transform 0.2s ease, color 0.2s ease;
}
.sector-card-link:hover .sector-details-icon {
color: var(--color-cyan-bright);
transform: scale(1.2) rotate(10deg);
}
.sector-status {
margin-left: auto;
font-size: 14px;
text-transform: uppercase;
letter-spacing: 1px;
}
.status-online {
color: var(--color-green-bright);
text-shadow: 0 0 8px rgba(0, 255, 0, 0.6);
}
.status-maintenance {
color: var(--color-error);
text-shadow: 0 0 8px rgba(255, 68, 68, 0.6);
}
.sector-row-mid {
display: flex;
gap: 30px;
font-size: 13px;
color: var(--color-text-placeholder);
margin-top: 5px;
}
.sector-row-bottom {
font-size: 12px;
color: var(--color-cyan-bright);
margin-top: 4px;
font-style: italic;
}
#sector-list-container::-webkit-scrollbar {
width: 6px;
height: 6px;
}
#sector-list-container::-webkit-scrollbar-track {
background: rgba(11, 25, 44, 0.3);
}
#sector-list-container::-webkit-scrollbar-thumb {
background: var(--color-cyan-dark);
border-radius: 3px;
}
+33
View File
@@ -0,0 +1,33 @@
/*
* Hier definieren wir auschließlich globale Variable und laden Schriftarten.
*/
@font-face {
font-family: 'UI Font';
/* .otf Dateien bekommen das Format 'opentype', .ttf Dateien 'truetype' */
src: url('../assets/fonts/WDXLLubrifontSC-Regular.ttf') format('truetype');
font-weight: normal;
font-style: normal;
}
@font-face {
font-family: 'Logo Font';
src: url('../assets/fonts/Quantico-Bold.ttf') format('truetype');
font-weight: normal;
font-style: normal;
}
:root {
--color-bg-page: #000000;
--color-text-main: #ffffff;
--color-text-placeholder: rgba(255, 255, 255, 0.4);
--color-text-inactive: rgba(255, 255, 255, 0.5);
--color-cyan-bright: #00f0ff;
--color-cyan-dark: #00a0aa;
--color-green-bright: #00ff00;
--color-error: #ff4444;
--color-checkbox-bg: rgba(11, 25, 44, 0.8);
--font-main: 'UI Font', sans-serif;
}