/* --- 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; }