1
0
Files
test.br0tcraft.de/style.css
2026-08-20 20:36:47 +02:00

1080 lines
22 KiB
CSS

/* --- VARIABLES & RESET --- */
:root {
--bg-body: #0a0505;
--bg-card: #140a0a;
--bg-glass: rgba(20, 10, 10, 0.85);
/* Etwas dunkler für bessere Lesbarkeit */
--accent-primary: #ff4d4d;
--accent-dim: #661f1f;
--accent-glow: rgba(255, 77, 77, 0.2);
--text-main: #e0e0e0;
--text-muted: #a0a0a0;
--font-display: 'Orbitron', sans-serif;
--font-body: 'Inter', sans-serif;
--font-code: 'Fira Code', monospace;
--spacing-container: max(20px, 5vw);
--radius: 12px;
}
* {
box-sizing: border-box;
margin: 0;
padding: 0;
}
body {
background-color: var(--bg-body);
color: var(--text-main);
font-family: var(--font-body);
line-height: 1.6;
overflow-x: hidden;
padding-top: 80px;
/* Platz für fixed navbar */
}
a {
text-decoration: none;
color: inherit;
transition: 0.2s;
}
ul {
list-style: none;
}
img {
max-width: 100%;
display: block;
border-radius: var(--radius);
}
/* --- NAVIGATION --- */
.navbar {
position: fixed;
top: 0;
left: 0;
width: 100%;
padding: 1rem var(--spacing-container);
display: flex;
justify-content: space-between;
align-items: center;
z-index: 100;
background: var(--bg-glass);
backdrop-filter: blur(12px);
border-bottom: 1px solid rgba(255, 255, 255, 0.05);
}
.brand {
font-family: var(--font-display);
font-size: 1.2rem;
color: var(--accent-primary);
font-weight: 700;
letter-spacing: 1px;
}
.nav-links {
display: flex;
gap: 2rem;
}
.nav-links a {
font-size: 0.95rem;
font-weight: 500;
}
.nav-links a:hover,
.nav-links a.active {
color: var(--accent-primary);
}
/* --- MOBILE FIXES --- */
@media (max-width: 768px) {
.navbar {
flex-direction: column;
gap: 1rem;
padding: 1rem;
}
.nav-links {
gap: 1.5rem;
font-size: 0.9rem;
}
.hero h1 {
font-size: 2.5rem !important;
}
.tutorial-grid {
grid-template-columns: 1fr !important;
}
}
/* --- LAYOUT UTILS --- */
.container {
padding: 0 var(--spacing-container);
max-width: 1000px;
/* Etwas schmaler für bessere Lesbarkeit */
margin: 0 auto;
}
.section {
margin: 6rem 0;
}
.btn {
display: inline-block;
padding: 10px 20px;
border: 1px solid var(--accent-primary);
background: rgba(255, 77, 77, 0.05);
border-radius: var(--radius);
color: var(--accent-primary);
font-family: var(--font-code);
font-weight: 600;
cursor: pointer;
margin-top: 1rem;
}
.btn:hover {
background: var(--accent-primary);
color: #000;
box-shadow: 0 0 15px var(--accent-glow);
}
/* --- CONTRIBUTION SECTION --- */
.contribution-grid {
display: grid;
grid-template-columns: 1fr;
gap: 2.5rem;
margin-top: 2rem;
}
.contribution-card {
background: linear-gradient(145deg, rgba(255, 255, 255, 0.03) 0%, rgba(255, 255, 255, 0.01) 100%);
border: 1px solid rgba(255, 255, 255, 0.08);
border-radius: calc(var(--radius) * 1.5);
padding: 2.5rem;
position: relative;
overflow: hidden;
transition: all 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.275);
}
.contribution-card::before {
content: '';
position: absolute;
top: 0;
left: 0;
width: 4px;
height: 100%;
background: var(--accent-primary);
opacity: 0.5;
}
.contribution-card:hover {
transform: scale(1.01);
border-color: rgba(255, 77, 77, 0.3);
box-shadow: 0 20px 40px rgba(0, 0, 0, 0.4);
}
.contribution-header {
display: flex;
align-items: center;
gap: 1.5rem;
margin-bottom: 2rem;
}
.contribution-logo {
width: 64px;
height: 64px;
border-radius: 16px;
object-fit: cover;
background: #1a1a1a;
padding: 8px;
border: 1px solid rgba(255, 255, 255, 0.1);
box-shadow: 0 8px 16px rgba(0, 0, 0, 0.3);
}
.contribution-title-area h3 {
font-family: var(--font-display);
font-size: 1.5rem;
color: #fff;
margin-bottom: 0.5rem;
margin-top: 0;
}
.contribution-links {
display: flex;
gap: 1rem;
}
.contribution-link {
font-family: var(--font-code);
font-size: 0.8rem !important;
color: var(--text-muted) !important;
display: flex;
align-items: center;
gap: 0.5rem;
background: rgba(255, 255, 255, 0.05);
padding: 4px 10px;
border-radius: 6px;
transition: 0.2s;
border-bottom: none !important;
}
.contribution-link:hover {
color: #fff !important;
background: rgba(255, 255, 255, 0.1);
}
.contribution-link img {
width: 14px;
height: 14px;
filter: brightness(0.8);
display: inline-block;
vertical-align: middle;
}
.contribution-body p {
font-size: 1.05rem;
color: var(--text-main);
line-height: 1.7;
margin-bottom: 1.5rem;
max-width: 700px;
}
.contribution-points {
list-style: none;
padding-left: 0;
display: grid;
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
gap: 1rem;
margin-bottom: 2rem;
}
.contribution-points li {
font-size: 0.9rem;
color: var(--text-muted);
display: flex;
align-items: flex-start;
gap: 0.75rem;
margin-bottom: 0;
}
.contribution-points li::before {
content: '→';
color: var(--accent-primary);
font-weight: bold;
}
.status-tag {
display: inline-block;
font-family: var(--font-code);
font-size: 0.7rem;
text-transform: uppercase;
letter-spacing: 1px;
color: var(--accent-primary);
background: rgba(255, 77, 77, 0.1);
padding: 4px 12px;
border-radius: 20px;
border: 1px solid rgba(255, 77, 77, 0.2);
}
/* --- HERO SECTION --- */
.hero {
min-height: 60vh;
display: flex;
flex-direction: column;
justify-content: center;
align-items: flex-start;
}
.hero h1 {
font-size: clamp(3rem, 6vw, 5rem);
line-height: 1.1;
font-weight: 800;
margin-bottom: 1rem;
color: #fff;
}
.hero p {
max-width: 600px;
font-size: 1.15rem;
color: var(--text-muted);
margin-bottom: 2rem;
}
/* Social Icons im Hero */
.social-row {
display: flex;
gap: 1.5rem;
margin-bottom: 2rem;
}
.social-link img {
width: 32px;
height: 32px;
filter: grayscale(100%);
transition: 0.3s;
}
.social-link:hover img {
filter: grayscale(0%);
transform: scale(1.1);
}
/* SKILLS (Integrated) */
.tech-stack {
display: flex;
gap: 1rem;
flex-wrap: wrap;
margin-top: 1rem;
}
.tech-tag {
background: rgba(255, 255, 255, 0.05);
padding: 5px 12px;
border-radius: 20px;
font-size: 0.9rem;
font-family: var(--font-code);
border: 1px solid transparent;
}
.tech-tag:hover {
border-color: var(--accent-primary);
}
/* --- CARDS & GRID --- */
.grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
gap: 2rem;
}
.card {
background: var(--bg-card);
border: 1px solid rgba(255, 255, 255, 0.05);
border-radius: var(--radius);
overflow: hidden;
transition: transform 0.3s ease;
display: flex;
flex-direction: column;
}
.card:hover {
transform: translateY(-5px);
border-color: var(--accent-dim);
}
.card-content {
padding: 1.5rem;
flex-grow: 1;
display: flex;
flex-direction: column;
}
.card-title {
font-size: 1.2rem;
margin-bottom: 0.5rem;
color: #fff;
font-family: var(--font-display);
}
.card-desc {
font-size: 0.95rem;
color: var(--text-muted);
margin-bottom: 1rem;
}
/* Card link styling */
.card-image-link {
display: block;
text-decoration: none;
color: inherit;
}
.card-title a {
text-decoration: none;
color: inherit;
transition: color 0.2s;
}
.card-title a:hover {
color: var(--accent-primary);
}
/* --- MARKDOWN CONTENT STYLING (Automatisch generiert) --- */
#markdown-content {
color: var(--text-main);
font-size: 1.1rem;
line-height: 1.8;
max-width: 100%; /* Erlaubt volle Breite auf Mobile */
width: 100%;
}
@media (min-width: 1025px) {
#markdown-content {
max-width: 800px; /* Begrenzung nur auf Desktop für Lesbarkeit */
}
}
/* Headings */
#markdown-content h1,
#markdown-content h2,
#markdown-content h3 {
color: #fff;
font-family: var(--font-display);
margin-top: 3rem;
margin-bottom: 1.5rem;
letter-spacing: 1px;
position: relative;
scroll-margin-top: 100px;
}
#markdown-content h1 {
font-size: 2.5rem;
border-bottom: 2px solid var(--accent-primary);
padding-bottom: 1rem;
text-shadow: 0 0 10px var(--accent-dim);
}
#markdown-content h2 {
font-size: 1.8rem;
border-left: 4px solid var(--accent-primary);
padding-left: 1rem;
}
/* Standard Text */
#markdown-content p {
margin-bottom: 1.8rem;
line-height: 1.8;
letter-spacing: 0.3px;
}
/* Links */
#markdown-content a {
color: var(--accent-primary);
text-decoration: none;
border-bottom: 1px dotted var(--accent-primary);
transition: all 0.3s ease;
}
#markdown-content a:hover {
background: var(--accent-dim);
color: #fff;
}
/* Listen */
#markdown-content ul,
#markdown-content ol {
margin-left: 2rem;
margin-bottom: 2rem;
color: var(--text-muted);
}
#markdown-content li {
margin-bottom: 0.8rem;
line-height: 1.7;
}
#markdown-content ul > li::marker {
color: var(--accent-primary);
}
/* Inline Code (e.g. `const x`) */
#markdown-content p code,
#markdown-content li code {
background: rgba(255, 255, 255, 0.1);
padding: 0.2rem 0.4rem;
border-radius: 4px;
font-family: var(--font-code);
font-size: 0.9em;
color: #ff9999;
border: 1px solid rgba(255, 255, 255, 0.05);
}
/* --- BLOCKQUOTE STYLE --- */
#markdown-content blockquote {
border-left: 4px solid var(--accent-primary);
background: linear-gradient(90deg, rgba(255, 77, 77, 0.1) 0%, transparent 100%);
margin: 2rem 0;
padding: 1rem 1.5rem;
border-radius: 0 var(--radius) var(--radius) 0;
font-style: italic;
color: #fff;
}
/* --- TABLE STYLING (Rund & Stylisch) --- */
#markdown-content table {
width: 100%;
border-collapse: separate;
/* Wichtig für Border-Radius */
border-spacing: 0;
margin: 2rem 0;
background: var(--bg-panel);
border: 1px solid #333;
border-radius: var(--radius);
overflow: hidden;
/* Damit Ecken rund bleiben */
}
#markdown-content th {
background: #222;
color: var(--accent-primary);
font-family: var(--font-display);
font-size: 0.9rem;
text-transform: uppercase;
padding: 1rem;
text-align: left;
border-bottom: 2px solid #333;
}
#markdown-content td {
padding: 1rem;
border-bottom: 1px solid #2a2a2a;
font-size: 0.95rem;
}
#markdown-content tr:last-child td {
border-bottom: none;
}
#markdown-content tr:hover td {
background: rgba(255, 255, 255, 0.02);
}
.anchor-link {
position: absolute;
left: -1.75rem; /* Etwas weiter weg vom Text */
top: 50%;
transform: translateY(-50%);
opacity: 0;
transition: opacity 0.2s ease, color 0.2s ease;
text-decoration: none !important;
border: none !important;
background: none !important;
padding-right: 0.5rem;
font-size: 0.8em;
cursor: pointer;
color: var(--accent-primary) !important;
}
#markdown-content h1:hover .anchor-link,
#markdown-content h2:hover .anchor-link,
#markdown-content h3:hover .anchor-link,
.anchor-link:hover {
opacity: 1;
color: var(--accent-primary) !important;
}
/* Damit man auf Mobile Geräten den Link sieht (da kein Hover) */
@media (max-width: 768px) {
.anchor-link {
opacity: 0.5;
left: -1.2rem;
}
}
/* --- CODE BLOCK STYLING (Mac/Tech Style) --- */
/* Der Container um den Code */
#markdown-content pre {
background: #1e1e1e !important;
/* One Dark Background */
border-radius: var(--radius);
margin-bottom: 2.5rem;
box-shadow: 0 10px 30px rgba(0, 0, 0, 0.5);
border: 1px solid #333;
position: relative;
padding: 0;
/* Padding wird intern geregelt */
overflow: hidden;
transition: all 0.3s ease;
}
#markdown-content pre:hover {
box-shadow: 0 15px 40px rgba(0, 0, 0, 0.7), 0 0 15px rgba(255, 77, 77, 0.1);
border-color: rgba(255, 77, 77, 0.3);
}
/* Der Header Balken den wir per JS einfügen */
.code-header {
background: #2a2a2a;
padding: 0.5rem 1rem;
display: flex;
justify-content: space-between;
align-items: center;
border-bottom: 1px solid #333;
}
.lang-tag {
font-family: var(--font-display);
font-size: 0.75rem;
color: #888;
letter-spacing: 1px;
font-weight: bold;
}
/* Die 3 Punkte rechts (Deko) */
.window-controls {
display: flex;
gap: 6px;
}
.window-controls span {
width: 10px;
height: 10px;
border-radius: 50%;
background-color: #444;
}
.window-controls span:nth-child(1) {
background: #ff5f56;
}
.window-controls span:nth-child(2) {
background: #ffbd2e;
}
.window-controls span:nth-child(3) {
background: #27c93f;
}
/* Der eigentliche Code Bereich */
#markdown-content pre code {
display: block;
padding: 1.5rem;
overflow-x: auto;
font-family: var(--font-code);
font-size: 0.95rem;
line-height: 1.6;
background: transparent;
/* Verhindert doppelte Hintergründe */
color: #abb2bf;
/* Standard Textfarbe One Dark */
}
/* Bilder responsive machen */
#markdown-content img {
max-width: 100%;
height: auto;
border-radius: var(--radius);
border: 1px solid #333;
margin: 1.5rem 0;
}
/* --- HERO AVATAR --- */
.hero-content {
display: flex;
align-items: center;
gap: 3rem;
/* Abstand zwischen Text und Bild */
}
.avatar-wrapper {
position: relative;
flex-shrink: 0;
/* Verhindert, dass das Bild gequetscht wird */
}
.avatar {
width: 180px;
height: 180px;
border-radius: 50%;
object-fit: cover;
border: 2px solid var(--accent-primary);
/* Der Glow-Effekt */
box-shadow: 0 0 30px rgba(255, 77, 77, 0.2);
transition: transform 0.3s ease, box-shadow 0.3s ease;
}
.avatar:hover {
transform: scale(1.05) rotate(3deg);
box-shadow: 0 0 50px rgba(255, 77, 77, 0.5);
}
@media (max-width: 900px) {
.hero-content {
flex-direction: column-reverse;
/* Bild oben, Text unten auf Handy */
align-items: flex-start;
gap: 2rem;
}
.avatar {
width: 120px;
height: 120px;
}
}
.container-docs {
width: 100%;
max-width: 1100px; /* Reduziert für kompakte Zentrierung */
margin: 0 auto;
padding: 0 1.5rem;
}
.docs-layout {
display: grid;
grid-template-columns: 200px 1fr; /* Sidebar schmaler (200px) */
gap: 2.5rem;
align-items: start;
transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
}
.docs-layout.sidebar-collapsed {
grid-template-columns: 0px 1fr;
gap: 0;
}
.docs-sidebar {
position: sticky;
top: 100px;
height: calc(100vh - 120px);
overflow-y: auto;
border-right: 1px solid rgba(255, 255, 255, 0.05);
padding-right: 1rem;
transition: transform 0.4s, opacity 0.3s, padding 0.4s;
}
.docs-layout.sidebar-collapsed .docs-sidebar {
transform: translateX(-20px);
opacity: 0;
pointer-events: none;
padding: 0;
}
/* --- MOBILE NAVIGATION (SIDEBAR) --- */
.mobile-menu-btn {
display: none;
position: fixed;
bottom: 2rem;
right: 2rem;
width: 56px;
height: 56px;
border-radius: 50%;
background: var(--accent-primary);
border: none;
box-shadow: 0 4px 15px rgba(255, 77, 77, 0.4);
z-index: 1001;
cursor: pointer;
align-items: center;
justify-content: center;
}
.mobile-menu-btn span {
display: block;
width: 24px;
height: 2px;
background: #000;
position: relative;
transition: 0.3s;
}
.mobile-menu-btn span::before,
.mobile-menu-btn span::after {
content: '';
position: absolute;
width: 24px;
height: 2px;
background: #000;
left: 0;
transition: 0.3s;
}
.mobile-menu-btn span::before { top: -8px; }
.mobile-menu-btn span::after { top: 8px; }
.mobile-menu-btn.active span { background: transparent; }
.mobile-menu-btn.active span::before { transform: rotate(45deg); top: 0; }
.mobile-menu-btn.active span::after { transform: rotate(-45deg); top: 0; }
@media (max-width: 1024px) {
.docs-layout {
grid-template-columns: 1fr;
gap: 0;
}
.docs-sidebar {
display: block;
position: fixed;
top: 0;
left: -100%;
width: 85%;
max-width: 320px;
height: 100vh;
background: #0d0707;
z-index: 1000;
padding: 5rem 1.5rem 2rem 1.5rem;
transition: 0.4s cubic-bezier(0.4, 0, 0.2, 1);
border-right: 1px solid var(--accent-dim);
}
.docs-sidebar.active {
left: 0;
box-shadow: 20px 0 60px rgba(0,0,0,0.9);
}
.mobile-menu-btn {
display: flex;
}
.sidebar-toggle-desktop, .sidebar-collapsed-trigger {
display: none !important;
}
.sidebar-overlay {
display: none;
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: rgba(0,0,0,0.8);
backdrop-filter: blur(4px);
z-index: 999;
}
.sidebar-overlay.active { display: block; }
}
/* Der Content-Bereich (Lesbarkeit behalten) */
#markdown-content {
max-width: 900px; /* Verhindert, dass Zeilen auf Riesen-Monitoren zu lang werden */
}
/* Tab System */
.tab-wrapper {
margin: 2.5rem 0;
background: #1e1e1e;
border: 1px solid #333;
border-radius: var(--radius);
overflow: hidden;
box-shadow: 0 10px 30px rgba(0, 0, 0, 0.3);
}
.tab-header-row {
display: flex;
background: #2a2a2a;
border-bottom: 1px solid #333;
padding-left: 0.5rem;
}
.tab-trigger {
background: transparent;
border: none;
padding: 12px 20px;
color: #888;
cursor: pointer;
font-family: var(--font-code);
font-size: 0.85rem;
transition: 0.3s;
border-bottom: 2px solid transparent;
}
.tab-trigger.active {
color: var(--accent-primary);
background: #1e1e1e;
border-bottom-color: var(--accent-primary);
}
.tab-panel {
display: none;
}
.tab-panel.active {
display: block;
}
.tab-panel pre {
margin: 0 !important;
border: none !important;
border-radius: 0 !important;
}
/* Copy Button */
.copy-btn {
background: rgba(255, 255, 255, 0.05);
border: 1px solid rgba(255, 255, 255, 0.1);
color: #888;
padding: 4px 10px;
border-radius: 4px;
font-size: 0.7rem;
cursor: pointer;
display: flex;
align-items: center;
gap: 6px;
transition: 0.2s;
}
.copy-btn:hover {
color: #fff;
background: rgba(255, 255, 255, 0.15);
}
/* Konsolidierung auf 1024px Breakpoint */
/* --- DOCUMENTATION SIDEBAR --- */
.sidebar-link {
display: block;
padding: 0.6rem 0;
font-size: 0.9rem;
color: var(--text-muted);
transition: 0.2s;
}
.sidebar-link:hover {
color: #fff;
padding-left: 5px;
}
.sidebar-link.active {
color: var(--accent-primary);
font-weight: 600;
}
.sidebar-category {
margin-top: 1.5rem;
margin-bottom: 0.5rem;
padding: 0.5rem 0;
font-family: var(--font-code);
font-size: 0.75rem;
text-transform: uppercase;
letter-spacing: 0.15em;
color: #999; /* Heller gemacht */
cursor: pointer;
display: flex;
align-items: center;
gap: 8px;
user-select: none;
}
.sidebar-category::before {
content: '▼';
font-size: 0.6rem;
transition: transform 0.3s;
}
.sidebar-category.collapsed::before {
transform: rotate(-90deg);
}
.sidebar-child-group {
overflow: hidden;
transition: max-height 0.3s ease-out, opacity 0.3s;
}
.sidebar-child-group.collapsed {
max-height: 0;
opacity: 0;
pointer-events: none;
}
/* --- DOC PAGINATION (Kleiner gemacht) --- */
.doc-pagination {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 1rem;
margin-top: 3rem;
padding-top: 2rem;
border-top: 1px solid rgba(255, 255, 255, 0.05);
}
.nav-page-btn {
display: flex;
flex-direction: column;
padding: 0.75rem 1rem; /* Deutlich kompakter */
background: rgba(255, 255, 255, 0.02);
border: 1px solid rgba(255, 255, 255, 0.05);
border-radius: 8px;
transition: 0.2s ease;
}
.nav-page-btn.prev { align-items: flex-start; text-align: left; }
.nav-page-btn.next { align-items: flex-end; text-align: right; }
.nav-page-btn:hover {
background: rgba(255, 255, 255, 0.04);
border-color: var(--accent-primary);
}
.nav-label {
font-family: var(--font-code);
font-size: 0.65rem;
text-transform: uppercase;
color: #555;
margin-bottom: 0.2rem;
}
.nav-title {
font-family: var(--font-body); /* Body font wirkt bei kleineren Buttons sauberer */
font-size: 0.85rem;
color: var(--text-muted);
font-weight: 500;
}
.nav-page-btn:hover .nav-title {
color: #fff;
}
.sidebar-group h4 {
font-family: var(--font-display);
font-size: 0.85rem;
color: #fff;
margin-bottom: 1.5rem;
text-transform: uppercase;
letter-spacing: 2px;
}
@media (max-width: 600px) {
.doc-pagination {
grid-template-columns: 1fr;
}
}
/* Sidebar Toggle Desktop */
.sidebar-toggle-desktop {
background: rgba(255,255,255,0.03);
border: 1px solid rgba(255,255,255,0.05);
color: #666;
padding: 6px 12px;
border-radius: 6px;
font-family: var(--font-code);
font-size: 0.7rem;
cursor: pointer;
margin-bottom: 2rem;
display: flex;
align-items: center;
gap: 8px;
transition: 0.2s;
width: fit-content;
}
.sidebar-toggle-desktop:hover {
color: var(--accent-primary);
border-color: var(--accent-dim);
}
.sidebar-collapsed-trigger {
position: fixed;
left: 1rem;
top: 100px;
z-index: 90;
display: none;
background: var(--bg-card);
border: 1px solid var(--accent-dim);
width: 32px;
height: 32px;
border-radius: 4px;
color: var(--accent-primary);
align-items: center;
justify-content: center;
cursor: pointer;
}
.docs-layout.sidebar-collapsed .sidebar-collapsed-trigger {
display: flex;
}