/* ==========================================================================
   Basis-Stylesheet — Variablen, lokale Schriftarten, Reset, Barrierefreiheit
   Wird von allen Seiten eingebunden. Keine externen Ressourcen (Datenschutz).
   ========================================================================== */

/* ---------- lokale Schriftarten (kein Google Fonts, keine IP-Übertragung an Dritte) ---------- */
@font-face{
  font-family:'Inter';font-style:normal;font-weight:400;font-display:swap;
  src:url('../fonts/inter-400.woff2') format('woff2');
}
@font-face{
  font-family:'Inter';font-style:normal;font-weight:500;font-display:swap;
  src:url('../fonts/inter-500.woff2') format('woff2');
}
@font-face{
  font-family:'Inter';font-style:normal;font-weight:600;font-display:swap;
  src:url('../fonts/inter-600.woff2') format('woff2');
}
@font-face{
  font-family:'Inter';font-style:normal;font-weight:700;font-display:swap;
  src:url('../fonts/inter-700.woff2') format('woff2');
}
@font-face{
  font-family:'Bricolage Grotesque';font-style:normal;font-weight:400;font-display:swap;
  src:url('../fonts/bricolage-400.woff2') format('woff2');
}
@font-face{
  font-family:'Bricolage Grotesque';font-style:normal;font-weight:600;font-display:swap;
  src:url('../fonts/bricolage-600.woff2') format('woff2');
}
@font-face{
  font-family:'Bricolage Grotesque';font-style:normal;font-weight:700;font-display:swap;
  src:url('../fonts/bricolage-700.woff2') format('woff2');
}
@font-face{
  font-family:'Bricolage Grotesque';font-style:normal;font-weight:800;font-display:swap;
  src:url('../fonts/bricolage-800.woff2') format('woff2');
}
@font-face{
  font-family:'JetBrains Mono';font-style:normal;font-weight:400;font-display:swap;
  src:url('../fonts/jetbrains-mono-400.woff2') format('woff2');
}
@font-face{
  font-family:'JetBrains Mono';font-style:normal;font-weight:500;font-display:swap;
  src:url('../fonts/jetbrains-mono-500.woff2') format('woff2');
}

/* ---------- Variablen ---------- */
:root{
  --bg:#040406;
  --glass:rgba(255,255,255,0.045);
  --glass-line:rgba(255,255,255,0.11);
  --ink:#f4f4f7;
  --ink-dim:#9b9ba5;
  --violet:#8b5cf6;
  --cyan:#22e0d6;
  --focus:#ffd166;
  --grad:linear-gradient(115deg,#8b5cf6,#22e0d6);
}

/* ---------- Reset ---------- */
*{margin:0;padding:0;box-sizing:border-box;}
html{scroll-behavior:smooth;}
body{
  background:var(--bg);color:var(--ink);
  font-family:'Inter',system-ui,sans-serif;
  -webkit-font-smoothing:antialiased;
}
img{max-width:100%;display:block;}
::selection{background:var(--violet);color:#fff;}

@media (prefers-reduced-motion: reduce){
  html{scroll-behavior:auto;}
  *{animation-duration:0.001ms !important;animation-iteration-count:1 !important;transition-duration:0.001ms !important;}
}

h1,h2,h3{font-family:'Bricolage Grotesque',system-ui,sans-serif;font-weight:700;letter-spacing:-0.02em;}

/* ---------- Barrierefreiheit: Fokus & Sprungmarke ---------- */
.skip-link{
  position:absolute;left:1rem;top:-4rem;z-index:100;
  background:var(--ink);color:var(--bg);font-family:'JetBrains Mono',monospace;
  font-size:0.82rem;font-weight:600;padding:0.8rem 1.2rem;border-radius:10px;
  text-decoration:none;transition:top .2s ease;
}
.skip-link:focus{top:1rem;}

.visually-hidden{
  position:absolute !important;width:1px;height:1px;padding:0;margin:-1px;
  overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0;
}

:focus-visible{
  outline:3px solid var(--focus);
  outline-offset:3px;
  border-radius:4px;
}
a:focus-visible,button:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible,
.btn:focus-visible,.demo-card:focus-within{
  outline:3px solid var(--focus);
  outline-offset:3px;
}
