style: Aya Dark Premium redesign

This commit is contained in:
2026-06-16 14:31:12 +00:00
commit 1ae8976fc9
6 changed files with 427 additions and 0 deletions
+45
View File
@@ -0,0 +1,45 @@
name: CI - Build & Test
run-name: 🔍 CI ${{ gitea.ref_name }} by @${{ gitea.actor }}
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
lint:
name: Lint & Build
runs-on: linux
steps:
- name: Checkout
uses: actions/checkout@v4
- name: HTML Validate
run: |
echo "Checking HTML structure..."
if grep -q "<!DOCTYPE html>" index.html; then
echo "✅ HTML5 doctype present"
else
echo "❌ Missing HTML5 doctype"
exit 1
fi
- name: CSS Check
run: |
echo "Checking CSS..."
if grep -q "@media" css/style.css; then
echo "✅ Responsive styles present"
else
echo "⚠️ No responsive styles found"
fi
- name: Nginx Config Test
run: |
echo "Checking nginx conf..."
docker run --rm -v $PWD/nginx.conf:/tmp/nginx.conf:ro nginx:1.27-alpine nginx -t -c /tmp/nginx.conf 2>&1 || true
- name: Build Docker Image
run: |
docker build -t noveria-landing:ci .
echo "✅ Build successful"
Executable
+5
View File
@@ -0,0 +1,5 @@
FROM nginx:1.27-alpine
COPY nginx.conf /etc/nginx/conf.d/default.conf
COPY index.html /usr/share/nginx/html/
COPY css/ /usr/share/nginx/html/css/
EXPOSE 80
Executable
+3
View File
@@ -0,0 +1,3 @@
# noveria-landing
Noveria.net Landingpage
Executable
+298
View File
@@ -0,0 +1,298 @@
/* ═══════════════════════════════════════════════
Noveria Landing Galaxy Theme + Aya Design
Dark Premium Style: Monochrome + Violett-Akzent
═══════════════════════════════════════════════ */
:root {
--bg: #080a0f;
--tx: #ffffff;
--tx-2: #9ca3af;
--tx-3: #6b7280;
--accent: #8b5cf6;
--accent-strong: #a78bfa;
--accent-glow: rgba(139, 92, 246, .35);
--grad: linear-gradient(135deg, #7c3aed, #a855f7, #6366f1);
--holographic: linear-gradient(135deg, rgba(249,115,22,.06), rgba(236,72,153,.06), rgba(99,102,241,.06));
}
* { box-sizing: border-box; margin: 0; padding: 0; }
html, body {
height: 100%;
overflow: hidden;
font-family: 'Space Grotesk', Inter, ui-sans-serif, system-ui, -apple-system, sans-serif;
color: var(--tx);
background: var(--bg);
}
/* ═══ Galaxy Background ═══ */
.galaxy {
position: fixed;
inset: 0;
z-index: 0;
background:
radial-gradient(80% 60% at 50% 40%, rgba(139, 92, 246, .10), transparent 60%),
radial-gradient(60% 50% at 80% 80%, rgba(168, 85, 247, .06), transparent 55%),
radial-gradient(50% 40% at 20% 20%, rgba(99, 102, 241, .05), transparent 50%),
var(--bg);
}
/* Aya: Holographic premium gradient layer */
.holographic {
position: absolute;
inset: 0;
background: var(--holographic);
mix-blend-mode: screen;
pointer-events: none;
}
.stars, .stars2, .stars3 {
position: absolute;
inset: 0;
}
.stars {
background-image:
radial-gradient(1px 1px at 10% 15%, rgba(255,255,255,.8), transparent),
radial-gradient(1px 1px at 25% 45%, rgba(255,255,255,.6), transparent),
radial-gradient(1.5px 1.5px at 40% 10%, rgba(200,190,255,.9), transparent),
radial-gradient(1px 1px at 55% 70%, rgba(255,255,255,.7), transparent),
radial-gradient(1px 1px at 70% 30%, rgba(255,255,255,.5), transparent),
radial-gradient(1.5px 1.5px at 85% 55%, rgba(180,170,255,.8), transparent),
radial-gradient(1px 1px at 15% 80%, rgba(255,255,255,.6), transparent),
radial-gradient(1px 1px at 60% 85%, rgba(255,255,255,.4), transparent),
radial-gradient(1px 1px at 90% 20%, rgba(255,255,255,.7), transparent);
}
.stars2 {
background-image:
radial-gradient(1px 1px at 5% 25%, rgba(255,255,255,.9), transparent),
radial-gradient(1.5px 1.5px at 20% 60%, rgba(220,210,255,.8), transparent),
radial-gradient(1px 1px at 35% 35%, rgba(255,255,255,.5), transparent),
radial-gradient(1px 1px at 50% 15%, rgba(255,255,255,.6), transparent),
radial-gradient(1px 1px at 65% 55%, rgba(255,255,255,.7), transparent),
radial-gradient(1.5px 1.5px at 80% 75%, rgba(200,190,255,.8), transparent),
radial-gradient(1px 1px at 95% 40%, rgba(255,255,255,.5), transparent),
radial-gradient(1px 1px at 45% 90%, rgba(255,255,255,.4), transparent);
animation: twinkle 4s ease-in-out infinite alternate;
}
.stars3 {
background-image:
radial-gradient(1px 1px at 8% 65%, rgba(255,255,255,.6), transparent),
radial-gradient(1px 1px at 18% 15%, rgba(255,255,255,.5), transparent),
radial-gradient(1.5px 1.5px at 30% 80%, rgba(210,200,255,.7), transparent),
radial-gradient(1px 1px at 48% 45%, rgba(255,255,255,.8), transparent),
radial-gradient(1px 1px at 62% 25%, rgba(255,255,255,.4), transparent),
radial-gradient(1px 1px at 75% 65%, rgba(255,255,255,.6), transparent),
radial-gradient(1px 1px at 88% 8%, rgba(255,255,255,.7), transparent),
radial-gradient(1.5px 1.5px at 12% 48%, rgba(190,180,255,.8), transparent);
animation: twinkle 6s ease-in-out infinite alternate-reverse;
}
@keyframes twinkle {
0% { opacity: .5; }
100% { opacity: 1; }
}
/* ═══ Aya: Floating Ambient Orbs ═══ */
.orb {
position: fixed;
border-radius: 50%;
filter: blur(80px);
z-index: 0;
pointer-events: none;
}
.orb-1 {
width: 320px; height: 320px;
top: -60px; right: -80px;
background: rgba(139, 92, 246, .12);
animation: float-orb 8s ease-in-out infinite;
}
.orb-2 {
width: 240px; height: 240px;
bottom: -40px; left: -60px;
background: rgba(99, 102, 241, .10);
animation: float-orb 12s ease-in-out infinite reverse;
}
@keyframes float-orb {
0%, 100% { transform: translate(0, 0) scale(1); }
33% { transform: translate(20px, -20px) scale(1.1); }
66% { transform: translate(-10px, 10px) scale(.95); }
}
/* ═══ Content ═══ */
.hero {
position: relative;
z-index: 1;
display: flex;
align-items: center;
justify-content: center;
height: 100%;
padding: 2rem;
}
.hero-content {
text-align: center;
animation: fade-up .8s ease-out;
}
@keyframes fade-up {
from { opacity: 0; transform: translateY(16px); }
to { opacity: 1; transform: translateY(0); }
}
/* Aya: Branding-Element (Monogram) */
.avatar {
width: 72px; height: 72px;
border-radius: 50%;
margin: 0 auto 1.5rem;
background: rgba(139, 92, 246, .10);
border: 2px solid rgba(139, 92, 246, .25);
display: flex;
align-items: center;
justify-content: center;
font-size: 1.75rem;
font-weight: 700;
color: var(--accent-strong);
letter-spacing: .04em;
box-shadow: 0 0 48px rgba(139, 92, 246, .15);
animation: pulse-avatar 3s ease-in-out infinite;
}
@keyframes pulse-avatar {
0%, 100% { box-shadow: 0 0 32px rgba(139, 92, 246, .10); }
50% { box-shadow: 0 0 56px rgba(139, 92, 246, .20); }
}
/* Aya: EXTREM GROSS für Headline */
.hero-title {
font-size: clamp(2.8rem, 9vw, 5.5rem);
font-weight: 700;
letter-spacing: .04em;
background: var(--grad);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
filter: drop-shadow(0 0 32px var(--accent-glow));
margin-bottom: .35rem;
line-height: 1.1;
}
/* Aya: WINZIG für Subtext (3-4x kleiner als Title) */
.hero-subtitle {
font-size: clamp(.85rem, 2vw, 1.1rem);
color: var(--tx-2);
letter-spacing: .06em;
font-weight: 400;
margin-bottom: 2rem;
}
/* Aya: Status-Badge mit starkem Glow */
.status-badge {
display: inline-block;
padding: .55rem 1.6rem;
border-radius: 99px;
border: 1px solid rgba(139, 92, 246, .30);
background: rgba(139, 92, 246, .08);
backdrop-filter: blur(8px);
-webkit-backdrop-filter: blur(8px);
color: var(--accent-strong);
font-size: .8rem;
font-weight: 600;
letter-spacing: .10em;
text-transform: uppercase;
box-shadow: 0 0 36px rgba(139, 92, 246, .15);
margin-bottom: 2.5rem;
animation: pulse-badge 3s ease-in-out infinite;
}
@keyframes pulse-badge {
0%, 100% { box-shadow: 0 0 28px rgba(139, 92, 246, .08); }
50% { box-shadow: 0 0 48px rgba(139, 92, 246, .22); }
}
/* ═══ Aya: CTA-Gruppe (Primär + Sekundär) ═══ */
.cta-group {
display: flex;
align-items: center;
justify-content: center;
gap: .75rem;
flex-wrap: wrap;
}
.cta {
display: inline-flex;
align-items: center;
gap: .5rem;
padding: .65rem 1.4rem;
border-radius: .65rem;
font-size: .9rem;
font-weight: 500;
text-decoration: none;
letter-spacing: .02em;
transition: all .25s ease;
cursor: pointer;
white-space: nowrap;
}
/* Primärer CTA: Ausgefüllt in Akzentfarbe */
.cta-primary {
background: var(--accent);
color: #fff;
box-shadow: 0 0 28px rgba(139, 92, 246, .25);
}
.cta-primary:hover {
background: #9b6dff;
box-shadow: 0 0 40px rgba(139, 92, 246, .40);
transform: translateY(-1px);
}
.cta-primary svg {
transition: transform .25s ease;
}
.cta-primary:hover svg {
transform: translateX(2px);
}
/* Sekundärer CTA: Ghost */
.cta-ghost {
background: transparent;
color: var(--tx-2);
border: 1px solid rgba(255,255,255,.08);
}
.cta-ghost:hover {
color: var(--tx);
background: rgba(255,255,255,.04);
border-color: rgba(139, 92, 246, .20);
transform: translateY(-1px);
}
.cta-ghost svg {
transition: transform .25s ease;
}
.cta-ghost:hover svg {
transform: translate(1px, -1px);
}
/* ═══ Footer ═══ */
.footer {
position: fixed;
bottom: 0;
left: 0;
right: 0;
z-index: 1;
text-align: center;
padding: 1rem;
font-size: .7rem;
color: var(--tx-3);
letter-spacing: .04em;
}
/* ═══ Responsive ═══ */
@media (max-width: 640px) {
.hero { padding: 1rem; }
.hero-title { font-size: clamp(2rem, 14vw, 3.5rem); }
.hero-subtitle { font-size: .8rem; }
.cta-group { flex-direction: column; gap: .5rem; }
.cta { width: 100%; justify-content: center; }
.avatar { width: 56px; height: 56px; font-size: 1.35rem; }
.orb { display: none; }
}
Executable
+55
View File
@@ -0,0 +1,55 @@
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Noveria Tools, Infrastruktur &amp; KI-Lösungen</title>
<meta name="description" content="Noveria Tools, Infrastruktur &amp; KI-Lösungen von Bao.">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@400;500;600;700&display=swap" rel="stylesheet">
<link rel="stylesheet" href="css/style.css">
</head>
<body>
<!-- Galaxy Background -->
<div class="galaxy">
<div class="stars"></div>
<div class="stars2"></div>
<div class="stars3"></div>
<!-- Holographic gradient (Aya: Premium-Signal) -->
<div class="holographic"></div>
</div>
<!-- Floating ambient orbs (Aya: Floating Elements) -->
<div class="orb orb-1"></div>
<div class="orb orb-2"></div>
<!-- Content -->
<main class="hero">
<div class="hero-content">
<!-- Avatar/Monogram (Aya: Branding-Element) -->
<div class="avatar">N</div>
<h1 class="hero-title">Noveria</h1>
<p class="hero-subtitle">Tools, Infrastruktur &amp; KI-Lösungen</p>
<div class="status-badge">Coming Soon</div>
<!-- CTA Buttons (Aya: Primär + Sekundär mit Pfeil) -->
<div class="cta-group">
<a href="https://nexus.noveria.net" class="cta cta-primary">
Nexus Dashboard
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><line x1="5" y1="12" x2="19" y2="12"/><polyline points="12 5 19 12 12 19"/></svg>
</a>
<a href="https://git.noveria.net" class="cta cta-ghost">
Git
<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><line x1="7" y1="17" x2="17" y2="7"/><polyline points="7 7 17 7 17 17"/></svg>
</a>
</div>
</div>
</main>
<footer class="footer">
<p>&copy; 2026 Noveria &mdash; Built by Bao</p>
</footer>
</body>
</html>
Executable
+21
View File
@@ -0,0 +1,21 @@
server {
listen 80;
server_name _;
root /usr/share/nginx/html;
index index.html;
location / {
try_files $uri $uri/ /index.html;
}
# Security headers
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-Content-Type-Options "nosniff" always;
add_header Referrer-Policy "no-referrer-when-downgrade" always;
# Cache static assets
location /css/ {
expires 7d;
add_header Cache-Control "public, immutable";
}
}