37 lines
64 KiB
HTML
37 lines
64 KiB
HTML
|
|
<!DOCTYPE html><html lang="de" class="inter_c15e96cb-module__0bjUvq__variable instrument_serif_65aa5ea5-module__1VeVaa__variable jetbrains_mono_7ea1d0f9-module__6GV5LG__variable dark bg-background"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/_next/static/chunks/%5Broot-of-the-server%5D__12s657j._.css" data-precedence="next_static/chunks/[root-of-the-server]__12s657j._.css"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/%5Bturbopack%5D_browser_dev_hmr-client_hmr-client_ts_0o_pxrq._.js"/><script src="/_next/static/chunks/0tk4_next_dist_compiled_next-devtools_index_0wz-254.js" async=""></script><script src="/_next/static/chunks/04n-_dist_compiled_react-dom-experimental_cjs_react-dom-client_development_0l1q_ue.js" async=""></script><script src="/_next/static/chunks/0tk4_next_dist_compiled_react-dom-experimental_cjs_react-dom_development_0hd9guj.js" async=""></script><script src="/_next/static/chunks/0tk4_next_dist_compiled_react-dom-experimental_041bf.r._.js" async=""></script><script src="/_next/static/chunks/0tk4_next_dist_compiled_react-server-dom-turbopack-experimental_10zaf~-._.js" async=""></script><script src="/_next/static/chunks/0tk4_next_dist_compiled_0oe.i43._.js" async=""></script><script src="/_next/static/chunks/0tk4_next_dist_client_12yjol2._.js" async=""></script><script src="/_next/static/chunks/0tk4_next_dist_0m.cgud._.js" async=""></script><script src="/_next/static/chunks/0i4a_%40swc_helpers_cjs_0hvz.20._.js" async=""></script><script src="/_next/static/chunks/_0rqeker._.js" async=""></script><script src="/_next/static/chunks/turbopack-_0cbp1h3._.js" async=""></script><script src="/_next/static/chunks/node_modules__pnpm_0mbgbvl._.js" async=""></script><script src="/_next/static/chunks/app_layout_tsx_0bitdh9._.js" async=""></script><script src="/_next/static/chunks/_0p57tr6._.js" async=""></script><script src="/_next/static/chunks/0t3j_tailwind-merge_dist_bundle-mjs_mjs_11gnmpl._.js" async=""></script><script src="/_next/static/chunks/095l_motion-dom_dist_es_0ril_e2._.js" async=""></script><script src="/_next/static/chunks/0nan_framer-motion_dist_es_0zinqa1._.js" async=""></script><script src="/_next/static/chunks/node_modules__pnpm_0~nn5fw._.js" async=""></script><script src="/_next/static/chunks/app_page_tsx_0j54u8h._.js" async=""></script><script src="/_next/static/chunks/_0ibxwco._.js" async=""></script><script src="/_next/static/chunks/app_global-error_tsx_0j54u8h._.js" async=""></script><link rel="expect" href="#_R_" blocking="render"/><meta name="next-size-adjust" content=""/><meta name="theme-color" content="#faf9f7" media="(prefers-color-scheme: light)"/><meta name="theme-color" content="#1a1a1f" media="(prefers-color-scheme: dark)"/><title>Jamulix | 40 Jahre Code</title><meta name="description" content="Seit 40 Jahren Code. Von Fortran IV bis KI-Projekte in Python und Rust. Erfahrener Programmierer, Linux-Veteran und KI-Entwickler."/><meta name="author" content="Jamulix"/><meta name="keywords" content="Programmierung,Linux,KI,Python,Rust,Software-Entwicklung,AI,Fortran,Unix"/><meta name="creator" content="Jamulix"/><meta name="robots" content="index, follow"/><meta property="og:title" content="Jamulix | 40 Jahre Code"/><meta property="og:description" content="Seit 40 Jahren Code. Von Fortran IV bis KI-Projekte in Python und Rust."/><meta property="og:url" content="https://jamulix.de"/><meta property="og:site_name" content="Jamulix"/><meta property="og:locale" content="de_DE"/><meta property="og:type" content="website"/><meta name="twitter:card" content="summary_large_image"/><meta name="twitter:title" content="Jamulix | 40 Jahre Code"/><meta name="twitter:description" content="Seit 40 Jahren Code. Von Fortran IV bis KI-Projekte in Python und Rust."/><script>
|
|||
|
|
(function() {
|
|||
|
|
const stored = localStorage.getItem('theme');
|
|||
|
|
const prefersDark = window.matchMedia('(prefers-color-scheme: dark)').matches;
|
|||
|
|
const theme = stored || (prefersDark ? 'dark' : 'light');
|
|||
|
|
document.documentElement.classList.toggle('dark', theme === 'dark');
|
|||
|
|
})();
|
|||
|
|
</script><script src="/_next/static/chunks/0tk4_next_dist_build_polyfills_polyfill-nomodule.js" noModule=""></script><script>window.__V0_SANDBOX_ID__="sb-4c9q0u44wjgi"</script><script async src="/v0-runtime-dist.js"></script></head><body class="font-sans antialiased min-h-screen"><div hidden=""><!--$--><!--/$--></div><header class="fixed top-0 left-0 right-0 z-50 transition-all duration-300 bg-transparent"><div class="max-w-6xl mx-auto px-6 lg:px-8"><nav class="flex items-center justify-between h-16 lg:h-20"><a class="font-mono text-lg tracking-tight text-foreground hover:text-accent transition-colors" href="/">Jamulix</a><div class="hidden md:flex items-center gap-8"><a class="text-sm text-muted-foreground hover:text-foreground transition-colors" href="#projekte">Projekte</a><a class="text-sm text-muted-foreground hover:text-foreground transition-colors" href="#ueber">Über</a><a class="text-sm text-muted-foreground hover:text-foreground transition-colors" href="#fokus">Fokus</a><a class="text-sm text-muted-foreground hover:text-foreground transition-colors" href="#philosophie">Philosophie</a><a class="text-sm text-muted-foreground hover:text-foreground transition-colors" href="#kontakt">Kontakt</a><button data-slot="button" class="inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50 size-9 text-muted-foreground"><span class="sr-only">Theme umschalten</span></button></div><div class="flex items-center gap-2 md:hidden"><button data-slot="button" class="inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50 size-9 text-muted-foreground"><span class="sr-only">Theme umschalten</span></button><button data-slot="button" class="inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50 size-9 text-muted-foreground" aria-label="Menü öffnen"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-menu size-5" aria-hidden="true"><path d="M4 5h16"></path><path d="M4 12h16"></path><path d="M4 19h16"></path></svg></button></div></nav></div></header><main><section class="relative min-h-screen flex items-center pt-20 lg:pt-0"><div class="absolute inset-0 overflow-hidden"><div class="absolute inset-0 opacity-[0.02] dark:opacity-[0.04]" style="background-image:linear-gradient(to right, currentColor 1px, transparent 1px),
|
|||
|
|
linear-gradient(to bottom, currentColor 1px, transparent 1px);background-size:60px 60px"></div></div><div class="relative max-w-6xl mx-auto px-6 lg:px-8 py-20 lg:py-32"><div class="grid lg:grid-cols-12 gap-12 lg:gap-16 items-center"><div class="lg:col-span-7 space-y-8"><div style="opacity:0;transform:translateY(20px)"><span class="inline-block font-mono text-xs tracking-wider text-accent uppercase mb-6">1984 – heute</span><h1 class="font-serif text-4xl sm:text-5xl lg:text-6xl xl:text-7xl leading-[1.1] tracking-tight text-balance">Seit 40 Jahren Code. Von Fortran<!-- --> <!-- -->IV bis KI-Projekte in Python und Rust.</h1></div><p class="text-lg lg:text-xl text-muted-foreground leading-relaxed max-w-2xl" style="opacity:0;transform:translateY(20px)">Erste Programmiersprache: Fortran<!-- --> <!-- -->IV. Dann C und 68000-Assembler auf dem Atari<!-- --> <!-- -->ST. An der Universität Unix entdeckt – und Linux nie wieder losgelassen. Seit Ende 2022 konzentriert auf KI-Tools und KI-Programmierung. Heute: Python und Rust.</p><div class="flex flex-col sm:flex-row gap-4 pt-4" style="opacity:0;transform:translateY(20px)"><a data-slot="button" class="inline-flex items-center justify-center gap-2 whitespace-nowrap text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive bg-primary text-primary-foreground hover:bg-primary/90 h-10 rounded-md px-6 has-[>svg]:px-4 group" href="#projekte">Projekte ansehen<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-arrow-down ml-2 size-4 transition-transform group-hover:translate-y-0.5" aria-hidden="true"><path d="M12 5v14"></path><path d="m19 12-7 7-7-7"></path></svg></a><a data-slot="button" class="inline-flex items-center justify-center gap-2 whitespace-nowrap text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50 h-10 rounded-md px-6 has-[>svg]:px-4 group" href="#ueber">Über Jamulix<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-arrow-right ml-2 size-4 transition-transform group-hover:translate-x-0.5" aria-hidden="true"><path d="M5 12h14"></path><path d="m12 5 7 7-7 7"></path></svg></a></div></div><div class="lg:col-span-5 hidden lg:block" style="opacity:0;transform:scale(0.95)"><div class="relative aspect-square w-full max-w-md mx-auto"><svg class="absolute inset-0 w-full h-full" viewBox="0 0 100 100" preserveAspectRatio="xMidYMid meet"><defs><linearGradient id="lineGradient" x1="0%" y1="0%" x2="100%" y2="100%"><stop offset="0%" stop-color="currentColor" stop-opacity="0.1"></stop><stop offset="50%" stop-color="currentColor" stop-opacity="0.3"></stop><stop offset="100%" stop-color="currentColor" stop-opacity="0.1"></stop></linearGradient></defs><line x1="20" y1="15" x2="45" y2="25" stroke="url(#lineGradient)" stroke-width="0.5" class="text-accent" opacity="0" pathLength="1" stroke-dashoffset="0" stroke-dasharray="0 1"></line><line x1="45" y1="25" x2="75" y2="20" stroke="url(#lineGradient)" stroke-width="0.5" class="text-accent" opacity="0" pathLength="1" stroke-dashoffset="0" str
|
|||
|
|
relative h-full p-6 lg:p-8 rounded-lg border border-border
|
|||
|
|
bg-card transition-all duration-300
|
|||
|
|
hover:border-accent/50 hover:bg-card/80
|
|||
|
|
"><div class="flex items-center justify-between mb-4"><span class="
|
|||
|
|
font-mono text-xs px-2 py-1 rounded
|
|||
|
|
bg-accent/10 text-accent
|
|||
|
|
">Aktiv</span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-arrow-up-right size-5 text-muted-foreground group-hover:text-accent transition-colors" aria-hidden="true"><path d="M7 7h10v10"></path><path d="M7 17 17 7"></path></svg></div><h3 class="font-serif text-xl lg:text-2xl mb-3 group-hover:text-accent transition-colors">Hacker News Reader</h3><p class="text-muted-foreground leading-relaxed mb-6">Ein minimalistischer, schneller Hacker News Client. Fokus auf Lesbarkeit und schnelles Laden.</p><div class="flex flex-wrap gap-2 mb-6"><span class="font-mono text-xs px-2 py-1 bg-secondary text-secondary-foreground rounded">Python</span><span class="font-mono text-xs px-2 py-1 bg-secondary text-secondary-foreground rounded">FastAPI</span><span class="font-mono text-xs px-2 py-1 bg-secondary text-secondary-foreground rounded">HTMX</span></div><a target="_blank" rel="noopener noreferrer" data-slot="button" class="inline-flex items-center justify-center whitespace-nowrap text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50 h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5 group/btn" href="https://jamulix.de/hackernews/">Ansehen<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-external-link ml-2 size-3 transition-transform group-hover/btn:translate-x-0.5" aria-hidden="true"><path d="M15 3h6v6"></path><path d="M10 14 21 3"></path><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path></svg></a></div></article><article class="group relative lg:col-span-1" style="opacity:0;transform:translateY(30px)"><div class="
|
|||
|
|
relative h-full p-6 lg:p-8 rounded-lg border border-border
|
|||
|
|
bg-card transition-all duration-300
|
|||
|
|
hover:border-accent/50 hover:bg-card/80
|
|||
|
|
"><div class="flex items-center justify-between mb-4"><span class="
|
|||
|
|
font-mono text-xs px-2 py-1 rounded
|
|||
|
|
bg-accent/10 text-accent
|
|||
|
|
">Aktiv</span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-arrow-up-right size-5 text-muted-foreground group-hover:text-accent transition-colors" aria-hidden="true"><path d="M7 7h10v10"></path><path d="M7 17 17 7"></path></svg></div><h3 class="font-serif text-xl lg:text-2xl mb-3 group-hover:text-accent transition-colors">Sorting Visualizer</h3><p class="text-muted-foreground leading-relaxed mb-6">Interaktive Visualisierung verschiedener Sortieralgorithmen. Didaktisches Werkzeug für Algorithmen-Verständnis.</p><div class="flex flex-wrap gap-2 mb-6"><span class="font-mono text-xs px-2 py-1 bg-secondary text-secondary-foreground rounded">Rust</span><span class="font-mono text-xs px-2 py-1 bg-secondary text-secondary-foreground rounded">WASM</span><span class="font-mono text-xs px-2 py-1 bg-secondary text-secondary-foreground rounded">Canvas</span></div><a target="_blank" rel="noopener noreferrer" data-slot="button" class="inline-flex items-center justify-center whitespace-nowrap text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50 h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5 group/btn" href="https://jamulix.de/sorting">Ansehen<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-external-link ml-2 size-3 transition-transform group-hover/btn:translate-x-0.5" aria-hidden="true"><path d="M15 3h6v6"></path><path d="M10 14 21 3"></path><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path></svg></a></div></article><article class="group relative " style="opacity:0;transform:translateY(30px)"><div class="
|
|||
|
|
relative h-full p-6 lg:p-8 rounded-lg border border-border
|
|||
|
|
bg-card transition-all duration-300
|
|||
|
|
opacity-70
|
|||
|
|
"><div class="flex items-center justify-between mb-4"><span class="
|
|||
|
|
font-mono text-xs px-2 py-1 rounded
|
|||
|
|
bg-secondary text-muted-foreground
|
|||
|
|
">In Entwicklung</span></div><h3 class="font-serif text-xl lg:text-2xl mb-3 group-hover:text-accent transition-colors">Projekt in Arbeit</h3><p class="text-muted-foreground leading-relaxed mb-6">KI-gestütztes Werkzeug für Code-Analyse und Dokumentation. Details folgen.</p><div class="flex flex-wrap gap-2 mb-6"><span class="font-mono text-xs px-2 py-1 bg-secondary text-secondary-foreground rounded">Python</span><span class="font-mono text-xs px-2 py-1 bg-secondary text-secondary-foreground rounded">LLM</span><span class="font-mono text-xs px-2 py-1 bg-secondary text-secondary-foreground rounded">AST</span></div></div></article><article class="group relative " style="opacity:0;transform:translateY(30px)"><div class="
|
|||
|
|
relative h-full p-6 lg:p-8 rounded-lg border border-border
|
|||
|
|
bg-card transition-all duration-300
|
|||
|
|
opacity-70
|
|||
|
|
"><div class="flex items-center justify-between mb-4"><span class="
|
|||
|
|
font-mono text-xs px-2 py-1 rounded
|
|||
|
|
bg-secondary/50 text-muted-foreground/70
|
|||
|
|
">Geplant</span></div><h3 class="font-serif text-xl lg:text-2xl mb-3 group-hover:text-accent transition-colors">Geplant</h3><p class="text-muted-foreground leading-relaxed mb-6">Self-hosted Infrastruktur-Monitoring. Lightweight, ohne Cloud-Abhängigkeiten.</p><div class="flex flex-wrap gap-2 mb-6"><span class="font-mono text-xs px-2 py-1 bg-secondary text-secondary-foreground rounded">Rust</span><span class="font-mono text-xs px-2 py-1 bg-secondary text-secondary-foreground rounded">Linux</span><span class="font-mono text-xs px-2 py-1 bg-secondary text-secondary-foreground rounded">SQLite</span></div></div></article></div></div></section><section id="fokus" class="py-24 lg:py-32"><div class="max-w-6xl mx-auto px-6 lg:px-8"><div class="mb-16" style="opacity:0;transform:translateY(20px)"><span class="font-mono text-xs tracking-wider text-accent uppercase">Aktuell</span><h2 class="font-serif text-3xl sm:text-4xl lg:text-5xl mt-4 text-balance">Technologien & Fokus</h2><p class="mt-6 text-lg text-muted-foreground max-w-2xl">Die Werkzeuge und Themen, mit denen ich aktuell arbeite. Kein Buzzword-Bingo, sondern tägliche Praxis.</p></div><div class="grid sm:grid-cols-2 lg:grid-cols-4 gap-8 lg:gap-6"><div style="opacity:0;transform:translateY(30px)"><h3 class="font-mono text-sm text-accent mb-6 pb-3 border-b border-border">Sprachen</h3><ul class="space-y-4"><li class="group" style="opacity:0;transform:translateX(-10px)"><span class="block font-medium text-foreground group-hover:text-accent transition-colors">Python</span><span class="block text-sm text-muted-foreground mt-0.5">Haupt-Sprache für KI und Automatisierung</span></li><li class="group" style="opacity:0;transform:translateX(-10px)"><span class="block font-medium text-foreground group-hover:text-accent transition-colors">Rust</span><span class="block text-sm text-muted-foreground mt-0.5">Für performante Systemtools</span></li><li class="group" style="opacity:0;transform:translateX(-10px)"><span class="block font-medium text-foreground group-hover:text-accent transition-colors">Shell/Bash</span><span class="block text-sm text-muted-foreground mt-0.5">Tägliches Werkzeug</span></li></ul></div><div style="opacity:0;transform:translateY(30px)"><h3 class="font-mono text-sm text-accent mb-6 pb-3 border-b border-border">Systeme</h3><ul class="space-y-4"><li class="group" style="opacity:0;transform:translateX(-10px)"><span class="block font-medium text-foreground group-hover:text-accent transition-colors">Linux</span><span class="block text-sm text-muted-foreground mt-0.5">Arch, Debian, NixOS</span></li><li class="group" style="opacity:0;transform:translateX(-10px)"><span class="block font-medium text-foreground group-hover:text-accent transition-colors">Self-Hosting</span><span class="block text-sm text-muted-foreground mt-0.5">Eigene Infrastruktur</span></li><li class="group" style="opacity:0;transform:translateX(-10px)"><span class="block font-medium text-foreground group-hover:text-accent transition-colors">Containers</span><span class="block text-sm text-muted-foreground mt-0.5">Docker, Podman</span></li></ul></div><div style="opacity:0;transform:translateY(30px)"><h3 class="font-mono text-sm text-accent mb-6 pb-3 border-b border-border">KI & ML</h3><ul class="space-y-4"><li class="group" style="opacity:0;transform:translateX(-10px)"><span class="block font-medium text-foreground group-hover:text-accent transition-colors">LLMs</span><span class="block text-sm text-muted-foreground mt-0.5">GPT, Claude, lokale Modelle</span></li><li class="group" style="opacity:0;transform:translateX(-10px)"><span class="block font-medium text-foreground group-hover:text-accent transition-colors">KI-Tools</span><span class="block text-sm text-muted-foreground mt-0.5">Cursor, Copilot, Aider</span></li><li class="group" style="opacity:0;transform:translateX(-10px)"><span class="block font-medium text-foreground group-hover:text-accent transition-colors">ML Ops</span><span class="block text-sm text-muted-foreground mt-0.5">Training, Deployment</span></li></ul></div><div sty
|