/* ============================================================
   app.css – ersetzt den Tailwind-CDN.
   Enthält nur die Klassen, die diese Seite wirklich benutzt.
   Neue Tailwind-Klasse im HTML? Dann hier ergänzen, sonst
   bleibt sie wirkungslos.
   ============================================================ */

:root{
  --ink:#080C14;
  --bar:#0A1620;
  --up:#35E06A;
  --down:#FF4D6D;
  --cyan:#22D3EE;
  --blue:#3BA3E8;
  --green:#35E06A;
  --slate-100:#F1F5F9;
  --slate-300:#CBD5E1;
  --slate-400:#94A3B8;
  --slate-500:#64748B;
  --font-sans:Inter,system-ui,-apple-system,"Segoe UI",sans-serif;
  --font-display:"Chakra Petch",var(--font-sans);
  --font-mono:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
}

/* ---------- Reset ---------- */
*,*::before,*::after{box-sizing:border-box;border:0 solid rgba(255,255,255,.1)}
html,body,h1,h2,p,dl,dd,figure{margin:0}
html{line-height:1.5;-webkit-tap-highlight-color:transparent}
body{font-family:var(--font-sans);line-height:1.5}
h1,h2{font-size:inherit;font-weight:inherit}
img,svg,canvas{display:block}
img{max-width:100%;height:auto}
a{color:inherit;text-decoration:none}

/* ---------- Layout ---------- */
.relative{position:relative}
.absolute{position:absolute}
.sticky{position:sticky}
.top-0{top:0}
.-right-24{right:-6rem}
.-top-24{top:-6rem}
.z-50{z-index:50}
.mx-auto{margin-left:auto;margin-right:auto}
.ml-auto{margin-left:auto}
.max-w-5xl{max-width:64rem}
.max-w-lg{max-width:32rem}
.min-w-0{min-width:0}
.min-h-screen{min-height:100vh}
.flex{display:flex}
.grid{display:grid}
.flex-1{flex:1 1 0%}
.flex-col-reverse{flex-direction:column-reverse}
.shrink-0{flex-shrink:0}
.items-center{align-items:center}
.justify-between{justify-content:space-between}
.place-items-center{place-items:center}
.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}
.overflow-hidden{overflow:hidden}
.pointer-events-none{pointer-events:none}

/* ---------- Abstände ---------- */
.gap-2{gap:.5rem}
.gap-2\.5{gap:.625rem}
.gap-3{gap:.75rem}
.gap-4{gap:1rem}
.gap-5{gap:1.25rem}
.p-5{padding:1.25rem}
.px-1{padding-left:.25rem;padding-right:.25rem}
.px-3{padding-left:.75rem;padding-right:.75rem}
.px-4{padding-left:1rem;padding-right:1rem}
.px-5{padding-left:1.25rem;padding-right:1.25rem}
.py-2{padding-top:.5rem;padding-bottom:.5rem}
.py-2\.5{padding-top:.625rem;padding-bottom:.625rem}
.py-3\.5{padding-top:.875rem;padding-bottom:.875rem}
.py-6{padding-top:1.5rem;padding-bottom:1.5rem}
.py-8{padding-top:2rem;padding-bottom:2rem}
.pt-6{padding-top:1.5rem}
.pb-16{padding-bottom:4rem}
.mt-1{margin-top:.25rem}
.mt-2{margin-top:.5rem}
.mt-6{margin-top:1.5rem}
.mt-10{margin-top:2.5rem}
.mb-3{margin-bottom:.75rem}

/* ---------- Größen ---------- */
.h-2\.5{height:.625rem}
.w-2\.5{width:.625rem}
.h-5{height:1.25rem}
.w-5{width:1.25rem}
.h-8{height:2rem}
.w-8{width:2rem}
.h-16{height:4rem}
.w-16{width:4rem}
.h-64{height:16rem}
.w-64{width:16rem}

/* ---------- Rahmen & Radien ---------- */
.border{border-width:1px}
.border-b{border-bottom-width:1px}
.border-t{border-top-width:1px}
.border-white\/5{border-color:rgba(255,255,255,.05)}
.border-white\/10{border-color:rgba(255,255,255,.1)}
.divide-y>*+*{border-top-width:1px}
.divide-white\/5>*+*{border-top-color:rgba(255,255,255,.05)}
.rounded-full{border-radius:9999px}
.rounded-xl{border-radius:.75rem}
.rounded-2xl{border-radius:1rem}
.rounded-3xl{border-radius:1.5rem}

/* ---------- Flächen ---------- */
.bg-ink{background-color:var(--ink)}
.bg-bar\/80{background-color:rgba(10,22,32,.8)}
.bg-white\/\[\.03\]{background-color:rgba(255,255,255,.03)}
.bg-white\/\[\.04\]{background-color:rgba(255,255,255,.04)}
.hover\:bg-white\/\[\.03\]:hover{background-color:rgba(255,255,255,.03)}

/* ---------- Effekte ---------- */
.backdrop-blur-xl{backdrop-filter:blur(24px);-webkit-backdrop-filter:blur(24px)}
.blur-3xl{filter:blur(64px)}
.opacity-25{opacity:.25}
.object-contain{object-fit:contain}
.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}
.transition-transform{transition:transform .3s ease}
.transition-colors{transition:background-color .2s ease,color .2s ease}
.duration-300{transition-duration:.3s}
.group:hover .group-hover\:scale-105{transform:scale(1.05)}

/* ---------- Typografie ---------- */
.font-sans{font-family:var(--font-sans)}
.font-display{font-family:var(--font-display)}
.font-mono{font-family:var(--font-mono)}
.font-medium{font-weight:500}
.font-semibold{font-weight:600}
.font-bold{font-weight:700}
.italic{font-style:italic}
.uppercase{text-transform:uppercase}
.leading-tight{line-height:1.2}
.leading-relaxed{line-height:1.65}
.tracking-tight{letter-spacing:-.015em}
.tracking-wide{letter-spacing:.025em}
.tracking-wider{letter-spacing:.05em}
.text-center{text-align:center}
.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.whitespace-nowrap{white-space:nowrap}

.text-\[10px\]{font-size:10px}
.text-\[11px\]{font-size:11px}
.text-\[13px\]{font-size:13px}
.text-\[15px\]{font-size:15px}
.text-xs{font-size:.75rem;line-height:1.1rem}
.text-sm{font-size:.875rem;line-height:1.35rem}
.text-base{font-size:1rem;line-height:1.5rem}
.text-lg{font-size:1.125rem;line-height:1.65rem}
.text-xl{font-size:1.25rem;line-height:1.75rem}

.text-white{color:#fff}
.text-slate-100{color:var(--slate-100)}
.text-slate-300{color:var(--slate-300)}
.text-slate-400{color:var(--slate-400)}
.text-slate-500{color:var(--slate-500)}
.text-up{color:var(--up)}
.text-down{color:var(--down)}
.text-brand-blue{color:var(--blue)}
.text-brand-cyan{color:var(--cyan)}
.hover\:text-brand-green:hover{color:var(--green)}

/* ---------- Ab Tablet (640px) ---------- */
@media (min-width:640px){
  .sm\:flex-row{flex-direction:row}
  .sm\:items-center{align-items:center}
  .sm\:justify-between{justify-content:space-between}
  .sm\:text-left{text-align:left}
  .sm\:gap-3{gap:.75rem}
  .sm\:gap-4{gap:1rem}
  .sm\:gap-6{gap:1.5rem}
  .sm\:p-8{padding:2rem}
  .sm\:px-4{padding-left:1rem;padding-right:1rem}
  .sm\:px-5{padding-left:1.25rem;padding-right:1.25rem}
  .sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}
  .sm\:py-2\.5{padding-top:.625rem;padding-bottom:.625rem}
  .sm\:py-3{padding-top:.75rem;padding-bottom:.75rem}
  .sm\:py-4{padding-top:1rem;padding-bottom:1rem}
  .sm\:pt-12{padding-top:3rem}
  .sm\:pb-20{padding-bottom:5rem}
  .sm\:mt-3{margin-top:.75rem}
  .sm\:mb-4{margin-bottom:1rem}
  .sm\:h-9{height:2.25rem}
  .sm\:w-9{width:2.25rem}
  .sm\:h-10{height:2.5rem}
  .sm\:w-10{width:2.5rem}
  .sm\:h-28{height:7rem}
  .sm\:w-28{width:7rem}
  .sm\:text-\[11px\]{font-size:11px}
  .sm\:text-xs{font-size:.75rem;line-height:1.1rem}
  .sm\:text-sm{font-size:.875rem;line-height:1.35rem}
  .sm\:text-base{font-size:1rem;line-height:1.5rem}
  .sm\:text-lg{font-size:1.125rem;line-height:1.65rem}
  .sm\:text-xl{font-size:1.25rem;line-height:1.75rem}
  .sm\:text-4xl{font-size:2.25rem;line-height:2.5rem}
}

/* ============================================================
   Basis: Hintergrund, Karten, Animationen
   ============================================================ */

html{
  background:var(--ink);
  -webkit-text-size-adjust:100%;   /* iOS vergrößert Text sonst eigenmächtig */
}

body{
  color:var(--slate-300);
  background-color:var(--ink);
  background-image:
    radial-gradient(65rem 45rem at 4% -6%,   rgba(11,34,48,.95), transparent 60%),
    radial-gradient(60rem 45rem at 100% 92%, rgba(14,36,32,.90), transparent 58%),
    radial-gradient(45rem 35rem at 50% 30%,  rgba(13,41,51,.45), transparent 70%);
  background-attachment:fixed;
  background-repeat:no-repeat;
  overflow-x:hidden;
  padding-left:env(safe-area-inset-left);
  padding-right:env(safe-area-inset-right);
}

/* Knotenmuster über der Farbfläche, unter dem Inhalt */
#bgNet{position:absolute;top:0;left:0;pointer-events:none;z-index:0}
header,main,footer{position:relative;z-index:1}

.glass{
  background:linear-gradient(160deg, rgba(255,255,255,.055), rgba(255,255,255,.015));
  border:1px solid rgba(255,255,255,.07);
  backdrop-filter:blur(16px);
  -webkit-backdrop-filter:blur(16px);
  box-shadow:0 24px 60px -30px rgba(0,0,0,.95), inset 0 1px 0 rgba(255,255,255,.05);
}

.dot{position:relative}
.dot::after{
  content:"";position:absolute;inset:-5px;border-radius:9999px;
  background:inherit;animation:ping 2.4s cubic-bezier(0,0,.2,1) infinite;
}
@keyframes ping{0%{transform:scale(.5);opacity:.55}100%{transform:scale(1.6);opacity:0}}

.node{animation:breathe 3.2s ease-in-out infinite}
@keyframes breathe{0%,100%{opacity:.45}50%{opacity:1}}

a:focus-visible,[tabindex]:focus-visible{outline:2px solid var(--cyan);outline-offset:3px;border-radius:6px}

::-webkit-scrollbar{width:10px;height:10px}
::-webkit-scrollbar-track{background:var(--ink)}
::-webkit-scrollbar-thumb{background:#13303a;border-radius:99px}
::-webkit-scrollbar-thumb:hover{background:#1a4652}

/* Handys: fixierte Verläufe ruckeln beim Scrollen, starker Blur kostet Leistung */
@media (max-width:640px){
  body{background-attachment:scroll}
  .glass{backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}
}

@media (prefers-reduced-motion:reduce){
  .dot::after,.node{animation:none}
  .dot::after{opacity:0}
  *{scroll-behavior:auto!important}
}
