/* ==========================================================================
   Follery Base Stylesheet
   Globale Defaults + wiederverwendbare Komponenten (Praefix .fl-*, damit
   bestehende Inline-Styles nicht kollidieren). Baut auf tokens.css auf.
   Wird in head-assets.php VOR den seiteneigenen <style>-Bloecken geladen,
   d. h. bestehende Seiten behalten ihren Look, bis sie migriert werden.
   ========================================================================== */

*, *::before, *::after { box-sizing: border-box; }

body {
  font-family: var(--font-body);
  font-size: var(--text-base);
  line-height: var(--leading-normal);
  color: var(--color-text);
  background-color: var(--color-bg);
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}

h1, h2, h3 {
  font-family: var(--font-heading);
  font-weight: 800;
  line-height: var(--leading-tight);
  color: inherit; /* erbt Abschnittsfarbe -> lesbar auch auf dunklen Sektionen */
}
h1 { font-size: var(--text-3xl); }
h2 { font-size: var(--text-2xl); }
h3 { font-size: var(--text-xl); }

a { color: var(--color-primary-dark); text-decoration-color: var(--color-border); }
a:hover { color: var(--color-primary); }

img, svg, video { max-width: 100%; height: auto; }

:focus-visible {
  outline: 2px solid var(--color-primary);
  outline-offset: 2px;
}

/* --- Schmuckschrift-Helper --- */
.fl-accent { font-family: var(--font-accent); font-weight: 400; }

/* --- Layout-Container --- */
.fl-container {
  width: 100%;
  max-width: var(--container-max);
  margin-inline: auto;
  padding-inline: var(--space-4);
}

/* --- Buttons --- */
.fl-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--space-2);
  font-family: var(--font-body);
  font-size: var(--text-base);
  font-weight: 700;
  line-height: 1;
  padding: var(--space-3) var(--space-4);
  border: 1px solid transparent;
  border-radius: var(--radius-md);
  cursor: pointer;
  transition: transform .15s ease, box-shadow .15s ease, background-color .15s ease;
}
.fl-btn:hover { transform: translateY(-1px); box-shadow: var(--shadow-sm); }
.fl-btn:active { transform: none; }

/* Button-System v2 (CI): Primaer = Tuerkis-Flaeche + dunkler Text,
   Sekundaer = Outline, Aktion = Tiefsee (die eine Commit-Aktion). */
.fl-btn--primary {
  background-color: var(--color-primary);
  color: var(--color-primary-contrast);
}
.fl-btn--primary:hover { background-color: var(--color-primary-dark); color: #FFFFFF; }

.fl-btn--secondary {
  background-color: transparent;
  color: var(--color-text);
  border-color: var(--color-text);
}
.fl-btn--secondary:hover { background-color: rgba(11, 21, 23, 0.06); }

.fl-btn--action {
  background-color: var(--color-text);
  color: #FFFFFF;
}
.fl-btn--action:hover { background-color: #1A2A2D; }

.fl-btn--ghost { background-color: transparent; color: var(--color-primary-dark); }
.fl-btn--ghost:hover { background-color: var(--color-info-soft); }

/* Icon-Button (quadratisch) */
.fl-icon-btn {
  display: inline-flex; align-items: center; justify-content: center;
  width: 40px; height: 40px;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
  background: var(--color-surface);
  color: var(--color-text);
  cursor: pointer;
}
.fl-icon-btn:hover { border-color: var(--color-primary); color: var(--color-primary); }

/* --- Icons --- */
.fl-icon { width: 24px; height: 24px; display: inline-block; vertical-align: middle; color: currentColor; flex-shrink: 0; }
.fl-icon--xs { width: 16px; height: 16px; }
.fl-icon--sm { width: 18px; height: 18px; }
.fl-icon--lg { width: 32px; height: 32px; }
.fl-icon--xl { width: 40px; height: 40px; }
.fl-icon--accent { color: var(--color-primary); }

/* --- Karten / Panels --- */
.fl-card {
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-sm);
  padding: var(--space-6);
}

/* --- Formularfelder --- */
.fl-field {
  width: 100%;
  font-family: var(--font-body);
  font-size: var(--text-base);
  color: var(--color-text);
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
  padding: var(--space-3) var(--space-4);
}
.fl-field:focus { outline: none; border-color: var(--color-primary); box-shadow: 0 0 0 3px var(--color-info-soft); }
.fl-label { display: block; font-size: var(--text-sm); font-weight: 700; margin-bottom: var(--space-1); color: var(--color-text); }

/* --- Badges / Status-Pills --- */
.fl-badge {
  display: inline-flex; align-items: center; gap: var(--space-1);
  font-size: var(--text-xs); font-weight: 700;
  padding: 2px var(--space-2);
  border-radius: var(--radius-full);
}
.fl-badge--success { background: var(--color-success-soft); color: var(--color-success); }
.fl-badge--warning { background: var(--color-warning-soft); color: var(--color-warning); }
.fl-badge--danger  { background: var(--color-danger-soft);  color: var(--color-danger); }
.fl-badge--info    { background: var(--color-info-soft);    color: var(--color-primary-dark); }

/* --- Alerts --- */
.fl-alert {
  border-radius: var(--radius-md);
  padding: var(--space-3) var(--space-4);
  border: 1px solid transparent;
  font-size: var(--text-sm);
}
.fl-alert--success { background: var(--color-success-soft); border-color: var(--color-success); color: var(--color-success); }
.fl-alert--warning { background: var(--color-warning-soft); border-color: var(--color-warning); color: #8a5a00; }
.fl-alert--danger  { background: var(--color-danger-soft);  border-color: var(--color-danger);  color: var(--color-danger); }
.fl-alert--info    { background: var(--color-info-soft);    border-color: var(--color-primary); color: var(--color-primary-dark); }

/* --- Logo: Inline-SVG-Wortmarke (Inter ExtraBold rendert dank Inline auch mobil korrekt) --- */
.fl-logo { display: block; width: auto; }

/* --- Pin-Liste: Aufzaehlung mit Pin-Marker statt Punkt (Signatur-Motiv) --- */
.fl-pin-list { list-style: none; padding-left: 0; }
.fl-pin-list li { position: relative; padding-left: 1.85em; margin-bottom: 0.4em; }
.fl-pin-list li::before {
  content: "";
  position: absolute;
  left: 0;
  top: 0.15em;
  width: 1.1em;
  height: 1.1em;
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%232BB4C4'%3E%3Cg transform='translate(3 0) scale(0.75)'%3E%3Cpath fill-rule='evenodd' d='M12 0C5.4 0 0 5.4 0 12c0 8.4 12 20 12 20s12-11.6 12-20C24 5.4 18.6 0 12 0zM12 7a5 5 0 100 10 5 5 0 000-10z'/%3E%3C/g%3E%3C/svg%3E") no-repeat center / contain;
}

/* --- Utilities --- */
.fl-text-muted { color: var(--color-text-muted); }
.fl-text-center { text-align: center; }
.fl-stack > * + * { margin-top: var(--space-4); }
.fl-visually-hidden {
  position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px;
  overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0;
}
