/* www/html/css/fl-brand.css — V10.0
   FoundLux Design-System (oeffentliche Seiten + App): Farb-/Typo-Tokens aus dem Logo (Marineblau + Orange) und alle Basis-Bausteine.
   Aenderungs-Historie: git log / git blame. */

/* ═══════════════════════════════════════════════════════════════════
   1 · TOKENS
   Palette kommt aus dem Logo: Marineblau als Basis, Orange als
   EINZIGE Akzentfarbe. Gruen/Rot ausschliesslich fuer Marktdaten.
   ═══════════════════════════════════════════════════════════════════ */
:root{
  /* Flaechen — von tief nach hoch */
  --fl-bg:        #070b14;
  --fl-bg-2:      #0a1120;
  --fl-surface:   #0e1626;
  --fl-surface-2: #142033;
  --fl-line:      #1c2942;
  --fl-line-2:    #2b3c5c;

  /* Text */
  --fl-txt:   #e8ecf4;
  --fl-muted: #94a3b8;
  --fl-dim:   #64748b;

  /* Marke */
  --fl-orange:    #f97316;
  --fl-orange-lt: #fb923c;
  --fl-orange-dk: #c2530a;
  --fl-blue:      #2b4c9b;
  --fl-blue-lt:   #4d7cdb;
  --fl-blue-dk:   #1b3269;

  /* Marktdaten — nur fuer Zahlen, nie fuer Deko */
  --fl-up:   #16c784;
  --fl-down: #ea3943;
  --fl-warn: #eab308;

  /* Typografie */
  --fl-font:   'Inter', system-ui, -apple-system, sans-serif;
  --fl-font-h: 'Sora', 'Inter', sans-serif;
  --fl-font-m: 'JetBrains Mono', ui-monospace, monospace;

  /* Form */
  --fl-r-sm: 8px;
  --fl-r:    12px;
  --fl-r-lg: 16px;
  --fl-shadow:    0 18px 40px rgba(0,0,0,.45);
  --fl-shadow-lg: 0 28px 64px rgba(0,0,0,.55);
  --fl-ring:      0 0 0 1px var(--fl-line);
  --fl-ease:      cubic-bezier(.16,1,.3,1);
}

/* ═══════════════════════════════════════════════════════════════════
   2 · BASIS
   ═══════════════════════════════════════════════════════════════════ */
*,*::before,*::after{box-sizing:border-box}
/* color-scheme sagt dem Browser, dass diese Seite dunkel ist. Ohne die Angabe nimmt er
   „hell" an und malt ALLE Flaechen, die er selbst zeichnet, in Hell — die Navigationsleiste
   des Handys unten, Rollbalken, Formularfelder, die Flaeche neben der Seite. Das ist der
   weisse Streifen unter der Seite am Handy: er gehoert dem System, nicht uns, und laesst
   sich nur ueber diese Erklaerung einfaerben. */
html{scroll-behavior:smooth;background:var(--fl-bg);-webkit-text-size-adjust:100%;color-scheme:dark}
body{
  margin:0;background:var(--fl-bg);color:var(--fl-txt);
  font-family:var(--fl-font);font-size:16px;line-height:1.65;
  /* Bleibt HIDDEN und gehoert auf den Koerper, nicht auf <html>. Solange <html> keine
     eigene Angabe hat, reicht der Browser diese hier ans Fenster durch — der Koerper
     wird also NICHT zu einem eigenen Rollbereich. Setzt man es zusaetzlich auf <html>
     (oder auf `clip`), kippt genau das: dann entsteht ein Zuschneide-Bereich, in dem
     der feste Hintergrund und die klebende Navigation haengenbleiben koennen. */
  overflow-x:hidden;-webkit-font-smoothing:antialiased;
}
h1,h2,h3,h4,h5{font-family:var(--fl-font-h);margin:0;line-height:1.15;letter-spacing:-.02em}
p{margin:0}
a{color:inherit;text-decoration:none}
img,svg{max-width:100%;display:block}
button{font:inherit;color:inherit}
::selection{background:rgba(249,115,22,.28)}

/* Selbstgemalte Rollleiste NUR bei Maus/Trackpad. `::-webkit-scrollbar` ersetzt die Leiste
   des Systems komplett — auf Touch-Geraeten verliert man damit die eingebaute, die breiter
   ist und richtig sitzt, und behaelt 10 px, die kein Finger trifft. Bei Grobzeigern deshalb
   nur umfaerben (Standard-Eigenschaft), Breite und Verhalten bleiben die des Systems. */
@media (hover:hover) and (pointer:fine){
  ::-webkit-scrollbar{width:10px;height:10px}
  ::-webkit-scrollbar-track{background:var(--fl-bg)}
  ::-webkit-scrollbar-thumb{background:var(--fl-line-2);border-radius:6px}
  ::-webkit-scrollbar-thumb:hover{background:var(--fl-orange-dk)}
}
@media (pointer:coarse){
  html{scrollbar-color:var(--fl-line-2) var(--fl-bg)}
}

:focus-visible{outline:2px solid var(--fl-orange);outline-offset:3px;border-radius:4px}

/* ═══════════════════════════════════════════════════════════════════
   3 · LAYOUT
   ═══════════════════════════════════════════════════════════════════ */
/* Die env()-Werte sind auf Geraeten ohne Aussparung 0 — der Zusatz kostet dort nichts.
   Quer gehaltene Handys mit Notch schieben die Seite sonst unter die Aussparung. */
.fl-wrap{max-width:1180px;margin:0 auto;
  padding:0 calc(22px + env(safe-area-inset-right,0px)) 0 calc(22px + env(safe-area-inset-left,0px))}
.fl-wrap--narrow{max-width:860px}
.fl-sec{padding:clamp(56px,8vw,104px) 0;position:relative}
.fl-sec--alt{background:var(--fl-bg-2);border-block:1px solid var(--fl-line)}
.fl-center{text-align:center}
.fl-center .fl-lead{margin-inline:auto}
.fl-center .fl-eyebrow{justify-content:center}

.fl-cols{display:grid;gap:20px}
.fl-cols--2{grid-template-columns:repeat(2,1fr)}
.fl-cols--3{grid-template-columns:repeat(3,1fr)}
.fl-cols--4{grid-template-columns:repeat(4,1fr)}
.fl-split{display:grid;grid-template-columns:1fr 1fr;gap:32px;align-items:center}

/* Hintergrund: Blaupausen-Raster + zwei sehr weiche Lichter.
   Bewusst dezent — kein flaechiges Glassmorphism. */
.fl-bgfx{position:fixed;inset:0;z-index:-1;overflow:hidden;pointer-events:none}
.fl-bgfx__grid{
  position:absolute;inset:0;
  background-image:
    linear-gradient(rgba(148,163,184,.045) 1px,transparent 1px),
    linear-gradient(90deg,rgba(148,163,184,.045) 1px,transparent 1px);
  background-size:52px 52px;
  -webkit-mask-image:radial-gradient(ellipse 90% 60% at 50% 0%,#000 10%,transparent 75%);
          mask-image:radial-gradient(ellipse 90% 60% at 50% 0%,#000 10%,transparent 75%);
}
.fl-bgfx__glow{position:absolute;border-radius:50%;filter:blur(120px)}
.fl-bgfx__glow--a{top:-18%;right:-8%;width:560px;height:560px;background:radial-gradient(circle,rgba(249,115,22,.16),transparent 70%)}
.fl-bgfx__glow--b{bottom:-22%;left:-10%;width:680px;height:680px;background:radial-gradient(circle,rgba(43,76,155,.30),transparent 70%)}

/* ═══════════════════════════════════════════════════════════════════
   4 · TYPOGRAFIE + LOGO-MOTIV
   Der orangene Balken aus dem Logo ist das wiederkehrende Zeichen:
   er markiert Eyebrows, Sektionen und aktive Zustaende.
   ═══════════════════════════════════════════════════════════════════ */
.fl-eyebrow{
  display:inline-flex;align-items:center;gap:11px;
  font-family:var(--fl-font-m);font-size:12px;font-weight:600;
  letter-spacing:.16em;text-transform:uppercase;color:var(--fl-orange);
}
.fl-eyebrow::before{content:"";width:24px;height:3px;border-radius:2px;background:var(--fl-orange);flex:none}

.fl-h1{font-size:clamp(34px,5.4vw,58px);font-weight:800;letter-spacing:-.035em;margin:16px 0}
.fl-h2{font-size:clamp(27px,4vw,40px);font-weight:800;letter-spacing:-.03em;margin:12px 0 14px}
.fl-h3{font-size:clamp(19px,2vw,22px);font-weight:700;margin:0 0 8px}
.fl-h4{font-size:16px;font-weight:700;margin:0}

/* Verlaufs-Text NUR fuer ein einzelnes Schluesselwort pro Seite. */
.fl-accent{
  background:linear-gradient(100deg,var(--fl-orange-lt),var(--fl-orange));
  -webkit-background-clip:text;background-clip:text;color:transparent;
}
.fl-lead{color:var(--fl-muted);font-size:clamp(15px,1.6vw,18px);max-width:680px}
.fl-small{font-size:13.5px;color:var(--fl-muted)}
.fl-mono{font-family:var(--fl-font-m)}
.fl-num{font-family:var(--fl-font-m);font-variant-numeric:tabular-nums;font-weight:700}
.fl-up{color:var(--fl-up)} .fl-down{color:var(--fl-down)} .fl-am{color:var(--fl-orange)}

/* Kurzer orangener Strich unter Sektions-Ueberschriften */
.fl-rule{width:44px;height:3px;border-radius:2px;background:var(--fl-orange);margin:18px 0 0}
.fl-center .fl-rule{margin-inline:auto}

/* ═══════════════════════════════════════════════════════════════════
   5 · BUTTONS
   ═══════════════════════════════════════════════════════════════════ */
.fl-btn{
  display:inline-flex;align-items:center;justify-content:center;gap:10px;
  font-family:var(--fl-font-h);font-weight:600;font-size:15px;line-height:1;
  padding:14px 22px;border-radius:var(--fl-r);border:1px solid transparent;
  cursor:pointer;white-space:nowrap;background:none;
  transition:transform .25s var(--fl-ease),background .2s,border-color .2s,box-shadow .25s;
}
.fl-btn:active{transform:translateY(1px)}

.fl-btn--primary{
  background:linear-gradient(135deg,var(--fl-orange-lt),var(--fl-orange));
  color:#160c02;box-shadow:0 8px 24px rgba(249,115,22,.24);
}
.fl-btn--primary:hover{transform:translateY(-2px);box-shadow:0 14px 34px rgba(249,115,22,.34)}

.fl-btn--ghost{background:rgba(255,255,255,.035);border-color:var(--fl-line-2);color:var(--fl-txt)}
.fl-btn--ghost:hover{background:rgba(255,255,255,.07);border-color:var(--fl-orange)}

.fl-btn--blue{background:var(--fl-blue);color:#fff;box-shadow:0 8px 24px rgba(43,76,155,.3)}
.fl-btn--blue:hover{background:var(--fl-blue-lt);transform:translateY(-2px)}

.fl-btn--quiet{color:var(--fl-muted);padding:10px 12px}
.fl-btn--quiet:hover{color:var(--fl-txt)}

.fl-btn--sm{font-size:13.5px;padding:10px 16px;border-radius:var(--fl-r-sm)}
.fl-btn--lg{font-size:16.5px;padding:17px 30px}
.fl-btn--block{width:100%}
.fl-btnrow{display:flex;gap:13px;flex-wrap:wrap}
.fl-center .fl-btnrow{justify-content:center}

/* ═══════════════════════════════════════════════════════════════════
   6 · BADGES · CHIPS · TAGS
   ═══════════════════════════════════════════════════════════════════ */
.fl-badge{
  display:inline-flex;align-items:center;gap:9px;
  font-family:var(--fl-font-m);font-size:12px;font-weight:600;letter-spacing:.04em;
  padding:7px 14px;border-radius:999px;
  border:1px solid var(--fl-line-2);background:rgba(255,255,255,.03);color:var(--fl-muted);
}
.fl-dot{width:7px;height:7px;border-radius:50%;background:var(--fl-up);box-shadow:0 0 9px var(--fl-up);flex:none;animation:fl-pulse 1.9s infinite}
@keyframes fl-pulse{50%{opacity:.35}}

.fl-chip{
  display:inline-flex;align-items:center;gap:7px;
  font-family:var(--fl-font-m);font-size:12.5px;
  padding:6px 11px;border-radius:var(--fl-r-sm);
  border:1px solid var(--fl-line);background:rgba(255,255,255,.02);color:var(--fl-muted);
}
.fl-chip b{color:var(--fl-txt);font-weight:600}

.fl-tag{
  display:inline-block;font-family:var(--fl-font-m);font-size:11px;font-weight:700;
  letter-spacing:.08em;padding:4px 9px;border-radius:5px;border:1px solid currentColor;
}
.fl-tag--orange{color:var(--fl-orange)}
.fl-tag--blue{color:var(--fl-blue-lt)}
.fl-tag--up{color:var(--fl-up)}
.fl-tag--down{color:var(--fl-down)}
.fl-tag--muted{color:var(--fl-dim)}

/* ═══════════════════════════════════════════════════════════════════
   7 · KARTEN · PANELS
   Solide Flaechen mit 1px-Linie — kein Milchglas.
   ═══════════════════════════════════════════════════════════════════ */
.fl-card{
  background:var(--fl-surface);border:1px solid var(--fl-line);border-radius:var(--fl-r-lg);
  padding:26px;transition:transform .3s var(--fl-ease),border-color .25s,box-shadow .3s;
  position:relative;
}
.fl-card:hover{transform:translateY(-4px);border-color:var(--fl-line-2);box-shadow:var(--fl-shadow)}
/* Orangener Balken oben links = Logo-Motiv, erscheint beim Hover */
.fl-card--mark::before{
  content:"";position:absolute;top:-1px;left:26px;width:34px;height:3px;border-radius:0 0 2px 2px;
  background:var(--fl-orange);opacity:0;transition:opacity .25s;
}
.fl-card--mark:hover::before{opacity:1}

.fl-card__ic{
  width:46px;height:46px;border-radius:var(--fl-r);display:grid;place-items:center;
  font-size:19px;margin-bottom:16px;
  background:rgba(249,115,22,.10);color:var(--fl-orange);border:1px solid rgba(249,115,22,.18);
}
.fl-card__ic--blue{background:rgba(77,124,219,.10);color:var(--fl-blue-lt);border-color:rgba(77,124,219,.20)}
.fl-card__ic--up{background:rgba(22,199,132,.10);color:var(--fl-up);border-color:rgba(22,199,132,.20)}
.fl-card p{color:var(--fl-muted);font-size:14.5px}

.fl-list{list-style:none;margin:16px 0 0;padding:0;display:flex;flex-direction:column;gap:9px}
.fl-list li{font-size:13.5px;color:var(--fl-muted);display:flex;gap:10px;align-items:flex-start}
.fl-list li::before{content:"";width:5px;height:5px;margin-top:8px;border-radius:1px;background:var(--fl-orange);flex:none}

.fl-panel{background:var(--fl-bg-2);border:1px solid var(--fl-line);border-radius:var(--fl-r);padding:18px}
.fl-panel__h{
  display:flex;align-items:center;justify-content:space-between;gap:10px;
  font-family:var(--fl-font-h);font-size:14px;font-weight:700;
  padding-bottom:11px;margin-bottom:14px;border-bottom:1px solid var(--fl-line);
}
.fl-panel__h .fl-small{font-weight:400}

/* ═══════════════════════════════════════════════════════════════════
   8 · KENNZAHLEN · METER · TABELLE
   ═══════════════════════════════════════════════════════════════════ */
.fl-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}
.fl-stat{background:rgba(255,255,255,.02);border:1px solid var(--fl-line);border-radius:var(--fl-r);padding:15px}
.fl-stat__k{font-size:11px;color:var(--fl-dim);text-transform:uppercase;letter-spacing:.09em;display:block;margin-bottom:5px}
.fl-stat__v{font-family:var(--fl-font-m);font-variant-numeric:tabular-nums;font-size:23px;font-weight:700;line-height:1.1}

.fl-meter{margin-top:14px}
.fl-meter__top{display:flex;justify-content:space-between;font-family:var(--fl-font-m);font-size:12.5px;margin-bottom:8px;color:var(--fl-muted)}
.fl-bar{height:7px;border-radius:99px;background:rgba(255,255,255,.06);overflow:hidden}
.fl-bar>i{display:block;height:100%;border-radius:99px;background:linear-gradient(90deg,var(--fl-blue-lt),var(--fl-orange));transition:width .5s var(--fl-ease)}

.fl-table{width:100%;border-collapse:collapse;font-size:14px}
.fl-table th{
  text-align:left;font-family:var(--fl-font-m);font-size:11px;font-weight:600;
  letter-spacing:.09em;text-transform:uppercase;color:var(--fl-dim);
  padding:0 14px 10px;border-bottom:1px solid var(--fl-line);white-space:nowrap;
}
.fl-table td{padding:12px 14px;border-bottom:1px solid var(--fl-line);color:var(--fl-muted)}
.fl-table tr:last-child td{border-bottom:0}
.fl-table tbody tr{transition:background .2s}
.fl-table tbody tr:hover{background:rgba(255,255,255,.022)}
.fl-table td:first-child{color:var(--fl-txt);font-weight:600}
.fl-table .fl-num{color:var(--fl-txt)}
.fl-tablewrap{overflow-x:auto;border:1px solid var(--fl-line);border-radius:var(--fl-r);background:var(--fl-surface);padding:16px 2px 4px}

/* ═══════════════════════════════════════════════════════════════════
   9 · LOG-TERMINAL
   ═══════════════════════════════════════════════════════════════════ */
.fl-term{background:#04070e;border:1px solid var(--fl-line);border-radius:var(--fl-r);overflow:hidden;box-shadow:var(--fl-shadow)}
.fl-term__h{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:12px 16px;background:var(--fl-bg-2);border-bottom:1px solid var(--fl-line)}
.fl-term__dots{display:flex;gap:7px;flex:none}
.fl-term__dots i{width:10px;height:10px;border-radius:50%;display:block;background:var(--fl-line-2)}
.fl-term__t{font-family:var(--fl-font-m);font-size:12px;color:var(--fl-dim);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.fl-term__b{padding:16px;height:280px;overflow:hidden;font-family:var(--fl-font-m);font-size:12.5px;display:flex;flex-direction:column;gap:6px}
.fl-log{display:flex;gap:11px;line-height:1.5;animation:fl-in .35s var(--fl-ease) both}
@keyframes fl-in{from{opacity:0;transform:translateY(6px)}}
.fl-log__t{color:var(--fl-dim);flex:none}
.fl-log__s{font-weight:700;flex:none}
.fl-log__m{color:#b9c4d6;min-width:0}
.fl-log__s[data-s="FEED"]{color:var(--fl-blue-lt)}
.fl-log__s[data-s="BOT"]{color:var(--fl-orange)}
.fl-log__s[data-s="PAPER"]{color:var(--fl-up)}
.fl-log__s[data-s="AGG"]{color:var(--fl-warn)}
.fl-log__s[data-s="EQUITY"]{color:#a78bfa}

/* ═══════════════════════════════════════════════════════════════════
   10 · FORMULAR-ELEMENTE
   ═══════════════════════════════════════════════════════════════════ */
.fl-field{margin-bottom:20px}
.fl-field__lab{display:flex;justify-content:space-between;align-items:baseline;gap:12px;font-size:14px;margin-bottom:10px;color:var(--fl-muted)}
.fl-field__lab b{font-family:var(--fl-font-m);color:var(--fl-orange);font-size:15px}

.fl-range{
  -webkit-appearance:none;appearance:none;width:100%;height:6px;border-radius:99px;
  background:rgba(255,255,255,.08);outline:none;cursor:pointer;
}
.fl-range::-webkit-slider-thumb{
  -webkit-appearance:none;appearance:none;width:19px;height:19px;border-radius:50%;
  background:var(--fl-orange);cursor:pointer;border:3px solid var(--fl-bg);
  box-shadow:0 0 0 1px var(--fl-orange),0 0 12px rgba(249,115,22,.5);
}
.fl-range::-moz-range-thumb{
  width:15px;height:15px;border-radius:50%;background:var(--fl-orange);cursor:pointer;
  border:3px solid var(--fl-bg);box-shadow:0 0 0 1px var(--fl-orange);
}

.fl-seg{display:flex;gap:7px;flex-wrap:wrap}
.fl-seg button{
  font-family:var(--fl-font-m);font-size:13px;padding:8px 14px;border-radius:var(--fl-r-sm);
  border:1px solid var(--fl-line);background:transparent;color:var(--fl-muted);cursor:pointer;
  transition:.2s;
}
.fl-seg button:hover{border-color:var(--fl-line-2);color:var(--fl-txt)}
.fl-seg button[aria-pressed="true"]{border-color:var(--fl-orange);background:rgba(249,115,22,.12);color:var(--fl-txt)}
.fl-seg--blue button[aria-pressed="true"]{border-color:var(--fl-blue-lt);background:rgba(77,124,219,.12)}

.fl-switch{display:inline-flex;align-items:center;gap:11px;cursor:pointer;font-size:14px;color:var(--fl-muted)}
.fl-switch input{position:absolute;opacity:0;pointer-events:none}
.fl-switch__t{width:42px;height:23px;border-radius:99px;background:var(--fl-line);position:relative;transition:background .25s;flex:none}
.fl-switch__t::after{content:"";position:absolute;top:3px;left:3px;width:17px;height:17px;border-radius:50%;background:var(--fl-dim);transition:transform .25s var(--fl-ease),background .25s}
.fl-switch input:checked + .fl-switch__t{background:rgba(249,115,22,.28)}
.fl-switch input:checked + .fl-switch__t::after{transform:translateX(19px);background:var(--fl-orange)}
.fl-switch input:focus-visible + .fl-switch__t{outline:2px solid var(--fl-orange);outline-offset:3px}

/* ═══════════════════════════════════════════════════════════════════
   11 · AKKORDEON
   ═══════════════════════════════════════════════════════════════════ */
.fl-acc{display:flex;flex-direction:column;gap:12px}
.fl-acc__i{border:1px solid var(--fl-line);border-radius:var(--fl-r);background:var(--fl-surface);overflow:hidden;transition:border-color .25s}
.fl-acc__i[open],.fl-acc__i:hover{border-color:var(--fl-line-2)}
.fl-acc__h{
  display:flex;align-items:center;justify-content:space-between;gap:16px;width:100%;
  padding:19px 22px;cursor:pointer;background:none;border:0;text-align:left;
  font-family:var(--fl-font-h);font-size:16px;font-weight:700;color:var(--fl-txt);
}
.fl-acc__x{width:16px;height:16px;flex:none;position:relative;transition:transform .3s var(--fl-ease)}
.fl-acc__x::before,.fl-acc__x::after{content:"";position:absolute;background:var(--fl-orange);border-radius:1px;inset:0;margin:auto}
.fl-acc__x::before{width:16px;height:2px}
.fl-acc__x::after{width:2px;height:16px;transition:opacity .3s}
.fl-acc__i[open] .fl-acc__x{transform:rotate(180deg)}
.fl-acc__i[open] .fl-acc__x::after{opacity:0}
.fl-acc__b{padding:0 22px 22px;color:var(--fl-muted);font-size:14.5px}
.fl-acc__b code{background:#04070e;border:1px solid var(--fl-line);border-radius:5px;padding:2px 7px;font-family:var(--fl-font-m);font-size:12.5px;color:var(--fl-txt)}

/* ═══════════════════════════════════════════════════════════════════
   11b · SIGNAL-BRUECKE
   Terminal → Bruecke → Exchange. Bewusst ohne Canvas gebaut: als HTML
   bleibt der Text gestochen scharf, vorlesbar und umbruchfaehig.
   Der wandernde Puls laeuft NUR, wenn der Reveal-Beobachter den Block
   auf [data-in] gesetzt hat — ausserhalb des Sichtfelds ruht er.
   ═══════════════════════════════════════════════════════════════════ */
.fl-bridge{display:grid;grid-template-columns:1fr minmax(30px,86px) 1fr minmax(30px,86px) 1fr;align-items:center}
.fl-bridge__node{background:var(--fl-surface);border:1px solid var(--fl-line);border-radius:var(--fl-r-lg);padding:24px 16px;text-align:center}
.fl-bridge__node--key{border-color:rgba(249,115,22,.55);box-shadow:0 0 34px rgba(249,115,22,.10)}
.fl-bridge__ic{
  width:46px;height:46px;margin:0 auto 13px;border-radius:var(--fl-r);display:grid;place-items:center;
  background:rgba(249,115,22,.10);color:var(--fl-orange);border:1px solid rgba(249,115,22,.18);
}
.fl-bridge__t{font-family:var(--fl-font-h);font-size:14px;font-weight:700;letter-spacing:.07em;text-transform:uppercase}
.fl-bridge__s{font-size:12.5px;color:var(--fl-dim);margin-top:5px}
.fl-bridge__link{height:2px;border-radius:2px;background:var(--fl-line);position:relative;overflow:hidden}
.fl-bridge__link::after{
  content:"";position:absolute;inset:0;
  background:linear-gradient(90deg,transparent,var(--fl-orange),transparent);
  background-size:60% 100%;background-repeat:no-repeat;background-position:-60% 0;
}
[data-in] .fl-bridge__link::after{animation:fl-flow 2.6s linear infinite}
[data-in] .fl-bridge__link--b::after{animation-delay:.75s}
@keyframes fl-flow{from{background-position:-60% 0}to{background-position:160% 0}}
@keyframes fl-flow-v{from{background-position:0 -60%}to{background-position:0 160%}}

@media (max-width:700px){
  .fl-bridge{grid-template-columns:1fr}
  .fl-bridge__link{height:30px;width:2px;margin:0 auto}
  .fl-bridge__link::after{
    background:linear-gradient(180deg,transparent,var(--fl-orange),transparent);
    background-size:100% 60%;background-position:0 -60%;
  }
  [data-in] .fl-bridge__link::after{animation-name:fl-flow-v}
}

/* ═══════════════════════════════════════════════════════════════════
   11c · MASKOTTCHEN "LUX"
   Aus derselben Formsprache wie das Logo gebaut: grosse weiche
   Rundungen, konstante Strichstaerke, der orangene Balken als Zeichen
   auf der Brust und als Augenform. Bewegung laeuft nur bei [data-in],
   also nur wenn der Block im Sichtfeld ist.
   ═══════════════════════════════════════════════════════════════════ */
.fl-bot{display:block;width:100%;height:auto;overflow:visible}
.fl-bot__shadow{fill:#000;opacity:.34}
.fl-bot__body,.fl-bot__shadow,.fl-bot__eye,.fl-bot__ping{transform-box:fill-box;transform-origin:center}
.fl-bot__eyes{transform-box:fill-box;transform-origin:center;transition:transform .38s var(--fl-ease)}
.fl-bot__eye{transition:transform .09s ease}
.fl-bot__eye[data-shut]{transform:scaleY(.12)}
.fl-bot__glow{filter:drop-shadow(0 0 7px rgba(249,115,22,.55))}

[data-in] .fl-bot__body  {animation:fl-bot-bob    3.8s ease-in-out infinite}
[data-in] .fl-bot__shadow{animation:fl-bot-shadow 3.8s ease-in-out infinite}
[data-in] .fl-bot__ping  {animation:fl-bot-ping   2.4s ease-in-out infinite}
@keyframes fl-bot-bob   {50%{transform:translateY(-7px)}}
@keyframes fl-bot-shadow{50%{transform:scaleX(.86);opacity:.22}}
@keyframes fl-bot-ping  {50%{opacity:.45;transform:scale(.82)}}

/* ═══════════════════════════════════════════════════════════════════
   11d · BOT-WAEHLER
   Liste links, Steckbrief rechts. Alle Steckbriefe stehen im HTML und
   werden nur ein-/ausgeblendet — so findet die Suchmaschine den Text
   aller sechs Bots, nicht nur den des gerade sichtbaren.
   ═══════════════════════════════════════════════════════════════════ */
.fl-botsel{display:grid;grid-template-columns:330px 1fr;gap:22px;align-items:start}
.fl-botsel__list{display:flex;flex-direction:column;gap:10px}
.fl-botsel__btn{
  display:flex;align-items:center;gap:14px;width:100%;text-align:left;
  padding:15px 16px;background:var(--fl-surface);border:1px solid var(--fl-line);
  border-radius:var(--fl-r);cursor:pointer;transition:border-color .22s,background .22s;
}
.fl-botsel__btn:hover{border-color:var(--fl-line-2)}
.fl-botsel__btn[aria-selected="true"]{border-color:var(--fl-orange);background:rgba(249,115,22,.07)}
.fl-botsel__ic{
  width:38px;height:38px;border-radius:10px;display:grid;place-items:center;flex:none;
  background:rgba(77,124,219,.10);color:var(--fl-blue-lt);border:1px solid rgba(77,124,219,.20);
  transition:.22s;
}
.fl-botsel__btn[aria-selected="true"] .fl-botsel__ic{
  background:rgba(249,115,22,.12);color:var(--fl-orange);border-color:rgba(249,115,22,.25);
}
.fl-botsel__n{font-family:var(--fl-font-h);font-weight:700;font-size:15px;line-height:1.25}
.fl-botsel__s{font-size:12.5px;color:var(--fl-dim);margin-top:3px}
.fl-botsel__chev{margin-left:auto;flex:none;color:var(--fl-dim);transition:.22s}
.fl-botsel__btn[aria-selected="true"] .fl-botsel__chev{color:var(--fl-orange);transform:translateX(2px)}
.fl-botpanel{display:none}
.fl-botpanel[data-on]{display:block;animation:fl-in .35s var(--fl-ease) both}

/* Kennwert-Kaesten (Indikator-Basis, Einsatzgebiet …) */
.fl-kv{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:18px 0}
.fl-kv__i{background:rgba(255,255,255,.02);border:1px solid var(--fl-line);border-radius:10px;padding:13px 15px}
.fl-kv__k{font-family:var(--fl-font-m);font-size:10.5px;letter-spacing:.09em;text-transform:uppercase;color:var(--fl-dim)}
.fl-kv__v{font-family:var(--fl-font-m);font-size:13.5px;color:var(--fl-txt);margin-top:5px}

@media (max-width:860px){.fl-botsel{grid-template-columns:1fr}}
@media (max-width:560px){.fl-kv{grid-template-columns:1fr}}

/* ═══════════════════════════════════════════════════════════════════
   11e · SCHRITT-FOLGE + NACHGEBAUTE FORMULARE
   Zeigt einen Ablauf (z. B. "so entsteht ein Bot") Schritt fuer Schritt.
   Die Formularfelder rechts sind Nachbauten, keine Screenshots: sie
   bleiben in jeder Groesse scharf, sind vorlesbar und veralten nicht,
   wenn sich die Oberflaeche aendert.
   ═══════════════════════════════════════════════════════════════════ */
.fl-steps{display:grid;grid-template-columns:300px 1fr;gap:24px;align-items:start}
.fl-steps__list{display:flex;flex-direction:column;gap:8px;position:relative}
.fl-steps__btn{
  display:flex;align-items:flex-start;gap:14px;width:100%;text-align:left;
  padding:14px 15px;background:transparent;border:1px solid transparent;
  border-radius:var(--fl-r);cursor:pointer;transition:.22s;
}
.fl-steps__btn:hover{background:rgba(255,255,255,.025)}
.fl-steps__btn[aria-selected="true"]{background:var(--fl-surface);border-color:var(--fl-orange)}
.fl-steps__no{
  width:28px;height:28px;border-radius:50%;flex:none;display:grid;place-items:center;
  font-family:var(--fl-font-m);font-size:12.5px;font-weight:700;
  background:rgba(255,255,255,.05);color:var(--fl-dim);border:1px solid var(--fl-line);transition:.22s;
}
.fl-steps__btn[aria-selected="true"] .fl-steps__no{
  background:var(--fl-orange);color:#160c02;border-color:var(--fl-orange);
}
.fl-steps__n{font-family:var(--fl-font-h);font-weight:700;font-size:14.5px;line-height:1.3}
.fl-steps__s{font-size:12.5px;color:var(--fl-dim);margin-top:3px}
.fl-steppanel{display:none}
.fl-steppanel[data-on]{display:block;animation:fl-in .35s var(--fl-ease) both}

/* Nachgebaute Eingabefelder */
.fl-mock{display:grid;gap:12px}
.fl-mock--2{grid-template-columns:1fr 1fr}
.fl-mock--3{grid-template-columns:repeat(3,1fr)}
.fl-mockf{background:var(--fl-bg-2);border:1px solid var(--fl-line);border-radius:10px;padding:11px 14px}
.fl-mockf__k{font-family:var(--fl-font-m);font-size:10.5px;letter-spacing:.09em;text-transform:uppercase;color:var(--fl-dim)}
.fl-mockf__v{font-family:var(--fl-font-m);font-size:15px;font-weight:600;color:var(--fl-txt);margin-top:6px;
  display:flex;align-items:center;gap:8px}
.fl-mockf__v small{font-family:var(--fl-font);font-size:12px;font-weight:400;color:var(--fl-dim)}
.fl-mockf--hi{border-color:rgba(249,115,22,.42);background:rgba(249,115,22,.06)}

@media (max-width:860px){.fl-steps{grid-template-columns:1fr}}
@media (max-width:560px){.fl-mock--2,.fl-mock--3{grid-template-columns:1fr}}

/* ═══════════════════════════════════════════════════════════════════
   11f · CHART-SIMULATOR
   Chart links, Kennzahlen-Panels rechts. Ab Tablet-Breite untereinander.
   ═══════════════════════════════════════════════════════════════════ */
.fl-sim{display:grid;grid-template-columns:1fr 316px;gap:18px;align-items:start}
.fl-sim__side{display:flex;flex-direction:column;gap:16px}
.fl-sim__bar{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:14px}
@media (max-width:1000px){.fl-sim{grid-template-columns:1fr}}
@media (max-width:520px){
  .fl-sim__bar .fl-seg button{padding:7px 11px;font-size:12px}
}

/* ═══════════════════════════════════════════════════════════════════
   11g · VORFUEHR-BEREICH
   Karte anklicken -> darunter laeuft die passende Vorfuehrung. Alle
   Leinwaende liegen im HTML und werden nur ein-/ausgeblendet; eine
   ausgeblendete hat Groesse 0 und ihre Buehne pausiert damit von selbst.
   ═══════════════════════════════════════════════════════════════════ */
.fl-card__more{
  margin-top:18px;display:inline-flex;align-items:center;gap:8px;
  background:none;border:0;padding:0;cursor:pointer;
  font-family:var(--fl-font-h);font-weight:600;font-size:14px;color:var(--fl-orange);
  transition:gap .2s var(--fl-ease);
}
.fl-card__more:hover{gap:12px}
.fl-card[data-picked]{border-color:var(--fl-orange)}
.fl-card[data-picked]::before{opacity:1}

.fl-demo__stage{position:relative}
/* Der Elternteil steht bewusst mit im Selektor: .fl-canvas{display:block} weiter
   unten in dieser Datei ist genauso spezifisch und wuerde sonst gewinnen — dann
   liegen alle fuenf Vorfuehrungen gleichzeitig untereinander. */
.fl-demo__stage .fl-demo__c{display:none;height:330px}
.fl-demo__stage .fl-demo__c[data-on]{display:block}
@media (max-width:620px){.fl-demo__stage .fl-demo__c{height:250px}}

/* Schaubild in der Bot-Karte */
.fl-botfig{height:190px;margin:16px 0 4px;background:var(--fl-bg-2);
  border:1px solid var(--fl-line);border-radius:var(--fl-r)}

/* ═══════════════════════════════════════════════════════════════════
   12 · HINWEISE
   ═══════════════════════════════════════════════════════════════════ */
.fl-note{border:1px solid var(--fl-line-2);background:rgba(255,255,255,.02);border-left:3px solid var(--fl-orange);border-radius:var(--fl-r-sm);padding:14px 17px;font-size:13.5px;color:var(--fl-muted)}
.fl-note b{color:var(--fl-txt)}
.fl-note--risk{border-color:rgba(234,57,67,.3);border-left-color:var(--fl-down);background:rgba(234,57,67,.06);color:#f6b0b5}
.fl-note--risk b{color:#ffd7da}

/* ═══════════════════════════════════════════════════════════════════
   13 · NAVIGATION
   ═══════════════════════════════════════════════════════════════════ */
.fl-nav{
  position:fixed;top:0;left:0;width:100%;z-index:200;
  background:rgba(7,11,20,.78);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);
  border-bottom:1px solid var(--fl-line);transition:box-shadow .3s;
}
.fl-nav[data-scrolled]{box-shadow:0 8px 30px rgba(0,0,0,.4)}
.fl-nav__in{display:flex;align-items:center;justify-content:space-between;gap:20px;height:66px}
.fl-nav__prog{position:absolute;left:0;bottom:-1px;height:2px;width:0;background:var(--fl-orange);transition:width .1s linear}

.fl-brand{display:flex;align-items:center;gap:11px;font-family:var(--fl-font-h);font-weight:800;font-size:19px;letter-spacing:-.03em;flex:none}
.fl-brand img{height:30px;width:auto}
.fl-brand b{color:var(--fl-orange);font-weight:800}

.fl-nav__links{display:flex;align-items:center;gap:28px}
.fl-nav__links a{color:var(--fl-muted);font-size:14.5px;font-weight:500;position:relative;padding:4px 0;transition:color .2s}
.fl-nav__links a::after{content:"";position:absolute;left:0;bottom:0;height:2px;width:0;background:var(--fl-orange);border-radius:2px;transition:width .25s var(--fl-ease)}
.fl-nav__links a:hover{color:var(--fl-txt)}
.fl-nav__links a:hover::after,.fl-nav__links a[aria-current]::after{width:100%}
.fl-nav__links a[aria-current]{color:var(--fl-txt)}

.fl-nav__cta{display:flex;align-items:center;gap:10px;flex:none}
.fl-burger{display:none;background:none;border:1px solid var(--fl-line-2);border-radius:var(--fl-r-sm);width:40px;height:40px;cursor:pointer;color:var(--fl-txt);align-items:center;justify-content:center}
.fl-mobile{display:none;flex-direction:column;padding:10px 22px 20px;background:rgba(7,11,20,.98);border-bottom:1px solid var(--fl-line)}
.fl-mobile[data-open]{display:flex}
.fl-mobile a{padding:13px 4px;color:var(--fl-muted);font-weight:600;border-bottom:1px solid var(--fl-line)}
.fl-mobile a:last-child{border-bottom:0}

/* ═══════════════════════════════════════════════════════════════════
   14 · FUSSZEILE
   ═══════════════════════════════════════════════════════════════════ */
/* Unten Platz fuer die Navigationsleiste des Handys lassen, sonst klebt die letzte Zeile
   der Fusszeile daran bzw. verschwindet bei Gestensteuerung dahinter. Ohne Systemleiste
   ist env() gleich 0 und es bleiben die gewohnten 24px. */
.fl-footer{border-top:1px solid var(--fl-line);background:var(--fl-bg-2);
  padding:52px 0 calc(24px + env(safe-area-inset-bottom,0px));margin-top:40px}
.fl-footer__grid{display:grid;grid-template-columns:1.5fr 1fr 1fr 1fr;gap:34px}
.fl-footer h5{font-family:var(--fl-font-m);font-size:11px;text-transform:uppercase;letter-spacing:.11em;color:var(--fl-dim);margin:0 0 15px}
.fl-footer ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}
.fl-footer a,.fl-footer button{color:var(--fl-muted);font-size:14px;background:none;border:0;padding:0;cursor:pointer;text-align:left;font-family:inherit;transition:color .2s}
.fl-footer a:hover,.fl-footer button:hover{color:var(--fl-orange)}
.fl-footer__bottom{display:flex;justify-content:space-between;gap:14px;flex-wrap:wrap;border-top:1px solid var(--fl-line);margin-top:36px;padding-top:22px;color:var(--fl-dim);font-size:13px}

/* ═══════════════════════════════════════════════════════════════════
   15 · BEWEGUNG
   ═══════════════════════════════════════════════════════════════════ */
.fl-reveal{opacity:0;transform:translateY(22px);transition:opacity .7s ease,transform .7s var(--fl-ease)}
.fl-reveal[data-in]{opacity:1;transform:none}
.fl-reveal[data-delay="1"]{transition-delay:.08s}
.fl-reveal[data-delay="2"]{transition-delay:.16s}
.fl-reveal[data-delay="3"]{transition-delay:.24s}

.fl-canvas{display:block;width:100%}

@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{animation-duration:.001ms !important;animation-iteration-count:1 !important;transition-duration:.001ms !important}
  .fl-reveal{opacity:1;transform:none}
}

/* ═══════════════════════════════════════════════════════════════════
   16 · RESPONSIV
   ═══════════════════════════════════════════════════════════════════ */
@media (max-width:960px){
  .fl-cols--3,.fl-cols--4{grid-template-columns:repeat(2,1fr)}
  .fl-split{grid-template-columns:1fr;gap:26px}
  .fl-nav__links,.fl-nav__cta .fl-btn--ghost{display:none}
  .fl-burger{display:inline-flex}
  .fl-footer__grid{grid-template-columns:1fr 1fr}
}
@media (max-width:620px){
  .fl-cols--2,.fl-cols--3,.fl-cols--4{grid-template-columns:1fr}
  .fl-stats{grid-template-columns:1fr 1fr}
  .fl-footer__grid{grid-template-columns:1fr}
  .fl-card{padding:22px}
  .fl-term__b{height:240px;font-size:11.5px}
}
