/* ==========================================================================
   trelleborgfaehre.de — Design-Layer „TrelleborgFähre“ (Relaunch Oktober 2026)
   Verbindlich: tools/relaunch/SPEC.md (§ 2 Palette, § 3 Typografie, § 4 Chrome,
   § 5 Klassen-Vokabular, § 8 Aufbau).

   Lädt NACH dem Inline-<style> jeder Seite. Die Bestandsseiten behalten ihre
   :root-Blöcke und ihr seitenspezifisches CSS; dieser Layer
     · mappt die Legacy-Tokens (--primary, --accent, --light …) auf die Palette,
     · liefert Header/Drawer, Breadcrumb, Footer, Mobile-CTA (Templates),
     · stylt die Bestandskomponenten (hero, btn, faq-item, cta-section …).

   Spezifität: Das Inline-CSS der Seiten ist unkontrolliert (12–22 KB je Seite).
   Wo der Layer Farben/Formen zuverlässig übernehmen muss, hängt er :not(#tf-x)
   an (zählt wie eine ID, ohne dass es diese ID gibt). Nur dort, sonst nicht.

   Keine externen Ressourcen. Keine !important außer in Abschnitt 18.
   Breakpoints (mobile-first): 600 · 768 · 992 · 1240 px.
   ========================================================================== */


/* ==========================================================================
   00 · FONTS — Figtree variable 300–900, selbst gehostet (/fonts/, OFL)
   ========================================================================== */
@font-face {
  font-family: 'Figtree';
  font-style: normal;
  font-weight: 300 900;
  font-display: swap;
  src: url('/fonts/figtree-latin-ext.woff2') format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'Figtree';
  font-style: normal;
  font-weight: 300 900;
  font-display: swap;
  src: url('/fonts/figtree-latin.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Figtree';
  font-style: italic;
  font-weight: 300 900;
  font-display: swap;
  src: url('/fonts/figtree-latin-ext-italic.woff2') format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'Figtree';
  font-style: italic;
  font-weight: 300 900;
  font-display: swap;
  src: url('/fonts/figtree-latin-italic.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}


/* ==========================================================================
   01 · TOKENS + LEGACY-MAPPING
   ========================================================================== */
:root {
  color-scheme: light;

  --tf-navy: #0B2545;
  --tf-navy-2: #143C73;
  --tf-blue: #1E5AA8;
  --tf-blue-deep: #164887;
  --tf-sky: #E8F1FB;
  --tf-sky-2: #BFD7F2;
  --tf-yellow: #FFCD00;
  --tf-yellow-hover: #F0BE00;
  --tf-gold: #806000;             /* SPEC nannte #9A7400 (real 4,3:1 auf Weiß, 3,85:1 auf Sand) → abgedunkelt: 5,8:1 Weiß / 5,2:1 Sand */
  --tf-green: #1E7F4F;
  --tf-green-tint: #E9F5EE;
  --tf-red: #B42318;
  --tf-sand: #F5F2EA;
  --tf-sand-2: #EBE6D9;
  --tf-ink: #13203A;
  --tf-muted: #5B6676;
  --tf-line: #E2E7EE;
  --tf-line-strong: #8792A2;      /* Formularrahmen, ≥ 3:1 auf Weiß */
  --tf-bg: #FFFFFF;
  --tf-on-navy: #D5DFEC;          /* Fließtext auf Navy (11:1) */
  --tf-on-navy-muted: #AFC0D6;    /* Sekundärtext auf Navy (8:1) */

  --tf-font: 'Figtree', system-ui, -apple-system, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;

  --tf-radius-sm: 10px;
  --tf-radius: 14px;
  --tf-radius-lg: 20px;
  --tf-shadow-sm: 0 1px 2px rgba(11, 37, 69, .06);
  --tf-shadow: 0 1px 2px rgba(11, 37, 69, .06), 0 6px 20px rgba(11, 37, 69, .08);
  --tf-shadow-lg: 0 2px 6px rgba(11, 37, 69, .06), 0 16px 40px rgba(11, 37, 69, .14);

  --tf-header-h: 68px;
  --tf-container: 1200px;
  --tf-gutter: 1rem;
  --tf-ease: cubic-bezier(.2, .7, .2, 1);

  --tf-hero-grad: linear-gradient(160deg, #0B2545 0%, #143C73 60%, #1E5AA8 100%);
  --tf-hero-overlay: linear-gradient(180deg, rgba(11, 37, 69, .62), rgba(11, 37, 69, .28) 50%, rgba(11, 37, 69, .70));
  --tf-wave: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='240' height='48' viewBox='0 0 240 48'%3E%3Cpath d='M0 18c20-10 40-10 60 0s40 10 60 0 40-10 60 0 40 10 60 0' fill='none' stroke='%23fff' stroke-width='2'/%3E%3Cpath d='M0 36c20-10 40-10 60 0s40 10 60 0 40-10 60 0 40 10 60 0' fill='none' stroke='%23fff' stroke-width='2'/%3E%3C/svg%3E");
  --tf-chevron: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");
  --tf-focus: var(--tf-blue);

  /* ---- Legacy-Mapping (SPEC § 2) — die :root-Blöcke der Seiten bleiben stehen ---- */
  --primary: var(--tf-navy);
  --primary-light: var(--tf-navy-2);
  --primary-dark: var(--tf-navy);
  --secondary: var(--tf-sky-2);
  --accent: var(--tf-gold);
  --accent-hover: #6A4F00;
  --success: var(--tf-green);
  --warning: var(--tf-gold);
  --info: var(--tf-blue);
  --dark: var(--tf-ink);
  --text-dark: var(--tf-ink);
  --light: var(--tf-sand);
  --gray: var(--tf-muted);
  --light-gray: var(--tf-line);
  --gray-light: var(--tf-line);
  --border: var(--tf-line);
  --white: #FFFFFF;
  --ttline-blue: var(--tf-navy);
  --border-radius: 14px;
  --shadow: var(--tf-shadow);
  --shadow-sm: var(--tf-shadow-sm);
  --shadow-md: 0 1px 2px rgba(11, 37, 69, .06), 0 4px 14px rgba(11, 37, 69, .08);
  --shadow-lg: var(--tf-shadow-lg);
  --shadow-hover: 0 2px 4px rgba(11, 37, 69, .06), 0 12px 32px rgba(11, 37, 69, .12);
  --container-width: 1200px;
  --header-height: 68px;
  --transition: .2s ease;
  --spacing-xs: .5rem;
  --spacing-sm: 1rem;
  --spacing-md: 1.5rem;
  --spacing-lg: 2rem;
  --spacing-xl: 3rem;
  --spacing-2xl: 4rem;
}


/* ==========================================================================
   02 · RESET / BASIS
   ========================================================================== */
html {
  font-size: 100%;
  -webkit-text-size-adjust: 100%;
  text-size-adjust: 100%;
  scroll-padding-top: calc(var(--tf-header-h) + 16px);
}

body {
  margin: 0;
  padding-top: 0;
  font-family: var(--tf-font);
  font-size: 1.0625rem;
  font-weight: 400;
  line-height: 1.65;
  color: var(--tf-ink);
  background-color: var(--tf-bg);
  overflow-x: clip;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-rendering: optimizeLegibility;
}

button, input, select, textarea { font-family: var(--tf-font); }
h1, h2, h3, h4, h5, h6 { font-family: inherit; }

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

::selection { background: var(--tf-yellow); color: var(--tf-ink); }

:focus-visible { outline: 3px solid var(--tf-focus); outline-offset: 2px; }
.tf-hero, .cta-section, .tf-section--navy, .tf-footer { --tf-focus: var(--tf-yellow); }
main:focus, #main:focus, #main-content:focus { outline: none; }


/* ==========================================================================
   03 · TYPOGRAFIE
   Bewusst niedrige Spezifität: Element-Regeln des Inline-CSS werden durch die
   Ladereihenfolge ersetzt, Komponenten-Regeln (z. B. .cta-section h2) bleiben.
   ========================================================================== */
h1, h2, h3, h4 { color: var(--tf-navy); text-wrap: balance; }
h1 { font-size: clamp(2rem, 1.3rem + 2.8vw, 3.1rem); font-weight: 800; line-height: 1.08; letter-spacing: -.02em; }
h2 { font-size: clamp(1.5rem, 1.15rem + 1.4vw, 2.1rem); font-weight: 700; line-height: 1.18; letter-spacing: -.012em; }
h3 { font-size: 1.25rem; font-weight: 700; line-height: 1.3; letter-spacing: -.005em; }
h4 { font-size: 1.05rem; font-weight: 700; line-height: 1.35; }
h5, h6 { font-weight: 700; }

p { text-wrap: pretty; }
strong, b { font-weight: 700; }
small { font-size: .875em; }

/* Nur-Text-Links im Inhalt (ohne Klasse): blau, unterstrichen. :where() hält die
   Spezifität bei (0,1,1), damit Komponenten-Links ihre Regeln behalten. */
:where(main, article, section, .container, .content-section) :where(p, li, td, th, dd, dt, figcaption, blockquote, address) a:not([class]):not(.nl-box a) {
  color: var(--tf-blue);
  text-decoration: underline;
  text-decoration-thickness: 1px;
  text-underline-offset: 2px;
}
:where(main, article, section, .container, .content-section) :where(p, li, td, th, dd, dt, figcaption, blockquote, address) a:not([class]):not(.nl-box a):hover {
  color: var(--tf-blue-deep);
  text-decoration-thickness: 2px;
}

.tf-eyebrow,
.eyebrow {
  display: block;
  margin: 0 0 .6rem;
  font-size: .8rem;
  font-weight: 700;
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--tf-blue);
}
.tf-lede,
.lede,
.intro-text > p:first-child {
  font-size: clamp(1.08rem, 1rem + .3vw, 1.2rem);
  line-height: 1.6;
}
.tf-lede { color: var(--tf-muted); max-width: 62ch; }

blockquote {
  margin: 1.5rem 0;
  padding: .25rem 0 .25rem 1.25rem;
  border-left: 3px solid var(--tf-sky-2);
  color: var(--tf-ink);
}

code, kbd, samp { font-size: .92em; }
hr { border: 0; border-top: 1px solid var(--tf-line); margin: 2rem 0; }


/* ==========================================================================
   04 · LAYOUT — Container, Sektionen
   ========================================================================== */
.tf-container,
.container:not(#tf-x) {
  width: 100%;
  max-width: var(--tf-container);
  margin-left: auto;
  margin-right: auto;
  padding-left: var(--tf-gutter);
  padding-right: var(--tf-gutter);
  box-sizing: border-box;
}
.tf-container--narrow,
.container-narrow:not(#tf-x) { max-width: 820px; }
@media (min-width: 768px) {
  :root { --tf-gutter: 1.5rem; }
}

/* Lesebreite: Fließtext direkt in Inhaltssektionen nicht über ~72 Zeichen ziehen.
   Linke Kante bleibt bündig mit Karten/Tabellen (kein Zickzack-Layout). */
.content-section > :is(p, ul, ol),
.content-section > .container > :is(p, ul, ol),
section.container > :is(p, ul, ol) {
  max-width: 72ch;
}

.tf-section { padding: clamp(2.5rem, 5vw, 4.5rem) 0; }
.tf-section--sand { background: var(--tf-sand); }
.tf-section--sky { background: var(--tf-sky); }
.tf-section--navy { background: var(--tf-navy); color: var(--tf-on-navy); }
.tf-section--navy :is(h2, h3, h4) { color: #fff; }
.tf-section--navy a:not(.tf-btn) { color: #fff; }
.tf-section--navy .tf-eyebrow { color: var(--tf-yellow); }
.tf-section--navy .tf-lede { color: var(--tf-on-navy-muted); }

.tf-section__head { margin: 0 0 clamp(1.5rem, 3vw, 2.5rem); max-width: 760px; }
.tf-section__head h2 { margin: 0 0 .6rem; }
.tf-section__head .tf-lede { margin: 0; }

/* Sicherheitsnetz gegen horizontales Überlaufen im Bestand (SPEC § 5 Mobile-Pflicht) */
:where([class*="grid"], [class*="-row"], [class*="cards"], .hero-features, .hero-meta, .trust-signals, .quick-facts) > * { min-width: 0; }
:where(h1, h2, h3, h4, td, th, li, p) { overflow-wrap: break-word; }
@media (max-width: 599.98px) {
  main :is(h1, h2, h3), .tf-hero :is(h1, p) { overflow-wrap: anywhere; hyphens: auto; }
}


/* ==========================================================================
   05 · HEADER + DRAWER
   Ein einziger Satz Nav-Links im DOM: ≥ 1100 px Leiste mit Dropdowns,
   < 1100 px dieselbe <nav> als Drawer von rechts (tf.js).
   Gemessen (Figtree, 7 Labels lt. SPEC = 48,05 em Text bei 600): Leiste + Wortmarke
   + CTA brauchen ≈ 1.250 px Inhaltsbreite. Daher: Drawer bis 1099 px, 1100–1239 px
   kompakt mit Bildmarke allein, ab 1240 px Header-Zeile bis 1320 px breit.
   ========================================================================== */
.tf-header {
  position: sticky;
  top: 0;
  z-index: 1000;
  height: auto;
  margin: 0;
  padding: 0;
  background: #fff;
  border-bottom: 1px solid var(--tf-line);
  box-shadow: none;
  transition: box-shadow .2s ease;
  font-family: var(--tf-font);
  line-height: 1.3;
}
.tf-header.is-scrolled { box-shadow: 0 8px 24px -14px rgba(11, 37, 69, .35); }

.tf-header__inner {
  display: flex;
  align-items: center;
  gap: .75rem;
  height: var(--tf-header-h);
}

/* Wortmarke + Bildmarke */
.tf-logo {
  display: inline-flex;
  align-items: center;
  gap: .6rem;
  flex: none;
  margin-right: auto;
  color: var(--tf-navy);
  text-decoration: none;
  border-radius: 8px;
}
.tf-logo:hover { color: var(--tf-navy); }
.tf-logo__mark { display: block; width: 36px; height: 36px; flex: none; }
.tf-logo__text {
  font-size: 1.16rem;
  font-weight: 600;
  letter-spacing: -.015em;
  line-height: 1;
  white-space: nowrap;
  color: var(--tf-navy);
}
.tf-logo__text b { font-weight: 800; color: var(--tf-navy); }
.tf-logo__tld { font-weight: 500; color: var(--tf-muted); }

/* Header-CTA */
.tf-header .tf-header__cta { flex: none; padding: .6rem 1.15rem; font-size: .95rem; }
@media (max-width: 599.98px) {
  .tf-header .tf-header__cta { display: none; }
}

/* Burger */
.tf-burger {
  display: inline-flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  gap: 5px;
  width: 44px;
  height: 44px;
  margin: 0 -6px 0 0;
  padding: 0;
  background: transparent;
  border: 0;
  border-radius: 10px;
  color: var(--tf-navy);
  cursor: pointer;
}
.tf-burger:hover { background: var(--tf-sky); }
.tf-burger span {
  display: block;
  width: 22px;
  height: 2px;
  margin: 0;
  border-radius: 2px;
  background: currentColor;
}

/* Nav: gemeinsame Basis */
.tf-nav {
  font-family: var(--tf-font);
}
.tf-nav ul,
.tf-nav li {
  list-style: none;
  margin: 0;
  padding: 0;
  border: 0;
}
.tf-nav__list { display: flex; }
.tf-nav__item { position: relative; display: flex; align-items: center; }
.tf-nav .tf-nav__link {
  display: block;
  position: relative;
  color: var(--tf-ink);
  font-weight: 600;
  text-decoration: none;
  text-transform: none;
  letter-spacing: 0;
  white-space: nowrap;
  background: none;
  transition: color .15s ease, background-color .15s ease;
}
.tf-nav .tf-nav__link:hover { color: var(--tf-blue); }
.tf-nav .tf-nav__item.is-active > .tf-nav__link { color: var(--tf-blue); }

.tf-nav__toggle {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: none;
  margin: 0;
  padding: 0;
  background: transparent;
  border: 0;
  color: var(--tf-muted);
  cursor: pointer;
}
.tf-nav__toggle svg { width: 14px; height: 14px; transition: transform .2s ease; }
.tf-nav__item.is-open > .tf-nav__toggle svg { transform: rotate(180deg); }
.tf-nav__toggle:hover { color: var(--tf-blue); }

.tf-nav .tf-nav__sub a {
  display: block;
  color: var(--tf-ink);
  text-decoration: none;
  font-weight: 500;
  line-height: 1.35;
}
.tf-nav .tf-nav__sub a:hover { color: var(--tf-blue); background: var(--tf-sky); }
.tf-nav .tf-nav__sub a[aria-current="page"] { color: var(--tf-blue); font-weight: 700; }

.tf-nav__head { display: none; }
.tf-nav-overlay { display: none; }

/* ---------- Mobil / Tablet / kleine Laptops: Drawer ---------- */
@media (max-width: 1099.98px) {
  .tf-nav {
    position: fixed;
    top: 0;
    right: 0;
    bottom: 0;
    z-index: 2;
    display: flex;
    flex-direction: column;
    width: min(88vw, 400px);
    height: 100%;
    max-height: none;
    margin: 0;
    padding: 0;
    background: #fff;
    box-shadow: -18px 0 48px rgba(11, 37, 69, .22);
    overflow-y: auto;
    overscroll-behavior: contain;
    transform: translateX(104%);
    visibility: hidden;
    transition: transform .3s var(--tf-ease), visibility 0s linear .3s;
  }
  .tf-nav.is-open {
    transform: none;
    visibility: visible;
    transition: transform .3s var(--tf-ease), visibility 0s;
  }

  .tf-nav__head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex: none;
    min-height: var(--tf-header-h);
    padding: 0 .5rem 0 1.25rem;
    border-bottom: 1px solid var(--tf-line);
  }
  .tf-nav__title { font-size: .8rem; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: var(--tf-muted); }
  .tf-nav__close {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 44px;
    height: 44px;
    margin: 0;
    padding: 0;
    background: transparent;
    border: 0;
    border-radius: 10px;
    color: var(--tf-navy);
    cursor: pointer;
  }
  .tf-nav__close:hover { background: var(--tf-sky); }
  .tf-nav__close svg { width: 22px; height: 22px; }

  .tf-nav__list { flex-direction: column; padding: .25rem 0 1.5rem; }
  .tf-nav .tf-nav__item { flex-wrap: wrap; border-bottom: 1px solid var(--tf-line); }
  .tf-nav .tf-nav__link {
    flex: 1 1 0;
    min-width: 0;
    padding: .95rem 1.25rem;
    font-size: 1.05rem;
    white-space: normal;
  }
  .tf-nav .tf-nav__item.is-active > .tf-nav__link { box-shadow: inset 3px 0 0 var(--tf-blue); }
  .tf-nav__toggle { width: 56px; align-self: stretch; min-height: 52px; border-left: 1px solid var(--tf-line); }
  .tf-nav__toggle svg { width: 18px; height: 18px; }
  .tf-nav .tf-nav__sub {
    display: none;
    flex: 0 0 100%;
    padding: .25rem 0 .75rem;
    background: var(--tf-sand);
  }
  .tf-nav__item.is-open > .tf-nav__sub { display: block; }
  .tf-nav .tf-nav__sub a { padding: .65rem 1.25rem .65rem 2rem; font-size: 1rem; }

  .tf-nav-overlay {
    display: block;
    position: fixed;
    inset: 0;
    z-index: 1;
    background: rgba(11, 37, 69, .48);
    opacity: 0;
    visibility: hidden;
    transition: opacity .3s ease, visibility 0s linear .3s;
  }
  .tf-nav-open .tf-nav-overlay { opacity: 1; visibility: visible; transition: opacity .3s ease, visibility 0s; }
  html.tf-nav-open, html.tf-nav-open body { overflow: hidden; }

  /* Ohne JS: Hauptpunkte als scrollbare Zeile unter dem Logo statt Drawer */
  html:not(.tf-js) .tf-header__inner { height: auto; min-height: var(--tf-header-h); flex-wrap: wrap; padding-top: .5rem; padding-bottom: .5rem; }
  html:not(.tf-js) .tf-burger { display: none; }
  html:not(.tf-js) .tf-nav {
    position: static; order: 3; flex: 0 0 100%; width: auto; height: auto;
    transform: none; visibility: visible; box-shadow: none; overflow-x: auto; background: transparent;
  }
  html:not(.tf-js) .tf-nav__head,
  html:not(.tf-js) .tf-nav__toggle,
  html:not(.tf-js) .tf-nav__sub { display: none; }
  html:not(.tf-js) .tf-nav__list { flex-direction: row; padding: 0; }
  html:not(.tf-js) .tf-nav .tf-nav__item { border: 0; }
  html:not(.tf-js) .tf-nav .tf-nav__link { padding: .4rem .6rem; font-size: .95rem; white-space: nowrap; }
}

/* ---------- Desktop: Leiste + Dropdowns ---------- */
@media (min-width: 1100px) {
  .tf-burger { display: none; }
  .tf-header__inner { gap: 1rem; }
  .tf-logo { margin-right: 0; }
  .tf-nav { display: flex; flex: 1 1 auto; justify-content: flex-end; min-width: 0; }
  .tf-nav__list { align-items: center; gap: .1rem; }
  .tf-nav .tf-nav__link { padding: .5rem .2rem .5rem .55rem; font-size: .95rem; border-radius: 8px; }
  .tf-nav .tf-nav__item:not(.tf-nav__item--has-sub) > .tf-nav__link { padding-right: .55rem; }
  .tf-nav .tf-nav__item.is-active > .tf-nav__link::after {
    content: '';
    position: absolute;
    left: .55rem;
    right: .2rem;
    bottom: -.55rem;
    height: 3px;
    border-radius: 3px 3px 0 0;
    background: var(--tf-blue);
  }
  .tf-nav__toggle { width: 1.15rem; height: 2rem; margin-right: .2rem; border-radius: 6px; }
  .tf-nav__toggle svg { width: 13px; height: 13px; }

  .tf-nav .tf-nav__sub {
    position: absolute;
    top: calc(100% + .55rem);
    left: 0;
    z-index: 10;
    min-width: 248px;
    padding: .45rem;
    background: #fff;
    border: 1px solid var(--tf-line);
    border-radius: var(--tf-radius);
    box-shadow: var(--tf-shadow-lg);
    opacity: 0;
    visibility: hidden;
    transform: translateY(6px);
    transition: opacity .16s ease, transform .16s ease, visibility 0s linear .16s;
  }
  /* unsichtbare Brücke, damit der Hover beim Wechsel ins Dropdown nicht abreißt */
  .tf-nav .tf-nav__sub::before { content: ''; position: absolute; left: 0; right: 0; top: -.7rem; height: .7rem; }
  .tf-nav .tf-nav__item:nth-last-child(-n+2) > .tf-nav__sub { left: auto; right: 0; }
  .tf-nav .tf-nav__sub a { padding: .55rem .8rem; border-radius: 8px; font-size: .95rem; white-space: nowrap; }

  .tf-nav__item.is-open > .tf-nav__sub,
  html:not(.tf-js) .tf-nav__item:hover > .tf-nav__sub,
  html:not(.tf-js) .tf-nav__item:focus-within > .tf-nav__sub {
    opacity: 1;
    visibility: visible;
    transform: none;
    transition: opacity .16s ease, transform .16s ease, visibility 0s;
  }
}

/* Kompakt ab 1100 px (SPEC § 4 „kompakt“): .875rem, enge Abstände.
   1100–1239 px nur Bildmarke (Link behält sein aria-label), ab 1240 px Wortmarke. Header-Zeile ab 1240 px bis 1320 px
   breit (Inhalt bleibt 1200 px). Messwerte: siehe Relaunch-Report. */
@media (min-width: 1100px) {
  .tf-header__inner { gap: .75rem; }
  .tf-nav__list { gap: .1rem; }
  .tf-nav .tf-nav__link { padding: .45rem .15rem .45rem .4rem; font-size: .875rem; }
  .tf-nav .tf-nav__item:not(.tf-nav__item--has-sub) > .tf-nav__link { padding-right: .4rem; }
  .tf-nav .tf-nav__item.is-active > .tf-nav__link::after { left: .4rem; right: .15rem; }
  .tf-nav__toggle { width: .85rem; margin-right: .1rem; }
  .tf-nav__toggle svg { width: 11px; height: 11px; }
  .tf-header .tf-header__cta { padding: .55rem .95rem; font-size: .875rem; }
  .tf-logo__text { font-size: 1.05rem; }
}
@media (min-width: 1100px) and (max-width: 1239.98px) {
  .tf-logo__text { display: none; }
}
@media (min-width: 1240px) {
  .tf-header .tf-header__inner { max-width: 1320px; }
}
@media (min-width: 1400px) {
  .tf-header__inner { gap: .9rem; }
  .tf-logo__text { font-size: 1.16rem; }
  .tf-nav .tf-nav__link { padding: .5rem .15rem .5rem .5rem; font-size: .9rem; }
  .tf-nav .tf-nav__item:not(.tf-nav__item--has-sub) > .tf-nav__link { padding-right: .5rem; }
  .tf-nav .tf-nav__item.is-active > .tf-nav__link::after { left: .5rem; }
  .tf-nav__toggle { width: .95rem; margin-right: .15rem; }
  .tf-nav__toggle svg { width: 12px; height: 12px; }
  .tf-header .tf-header__cta { padding: .6rem 1.15rem; font-size: .95rem; }
}


/* ==========================================================================
   06 · BREADCRUMB
   ========================================================================== */
.tf-breadcrumb {
  background: #fff;
  border-bottom: 1px solid var(--tf-line);
  font-size: .875rem;
  line-height: 1.4;
  color: var(--tf-muted);
}
.tf-breadcrumb ol {
  display: flex;
  align-items: center;
  flex-wrap: nowrap;
  gap: 0;
  margin-top: 0;
  margin-bottom: 0;
  padding-top: .6rem;
  padding-bottom: .6rem;
  list-style: none;
  overflow: hidden;
}
.tf-breadcrumb li {
  display: flex;
  align-items: center;
  flex: none;
  min-width: 0;
  margin: 0;
  padding: 0;
  white-space: nowrap;
}
.tf-breadcrumb li + li::before {
  content: '›';
  margin: 0 .5rem;
  color: #8792A2;
  font-weight: 600;
}
.tf-breadcrumb li[aria-current] { flex: 1 1 auto; overflow: hidden; }
.tf-breadcrumb li[aria-current] span { overflow: hidden; text-overflow: ellipsis; color: var(--tf-ink); font-weight: 500; }
.tf-breadcrumb a { color: var(--tf-blue); text-decoration: none; }
.tf-breadcrumb a:hover { text-decoration: underline; text-underline-offset: 2px; }


/* ==========================================================================
   07 · HERO
   Das Skript setzt .tf-hero auf das erste Element mit Klassen-Token „hero“.
   ========================================================================== */
.tf-hero:not(#tf-x) {
  position: relative;
  isolation: isolate;
  overflow: hidden;
  margin: 0;
  padding: clamp(3rem, 8vw, 5.5rem) 0;
  min-height: 0;
  background: var(--tf-hero-grad);
  color: #fff;
  text-align: left;
  border: 0;
  border-radius: 0;
}
/* Wellenlinien unten, Opazität ≤ .08 */
.tf-hero:not(#tf-x)::after {
  content: '';
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: -1;
  height: 72px;
  background: var(--tf-wave) repeat-x left bottom / 240px 48px;
  opacity: .07;
  pointer-events: none;
}
/* Pseudo-Elemente/Overlays aus dem Inline-CSS ruhigstellen */
.tf-hero:not(#tf-x)::before { content: none; }

.tf-hero--photo:not(#tf-x) {
  display: flex;
  align-items: flex-end;
  min-height: min(60vh, 640px);
  min-height: min(60svh, 640px);
  padding: clamp(5rem, 14vw, 7rem) 0 3.25rem;
  background: linear-gradient(180deg, rgba(11, 37, 69, .55) 0%, rgba(11, 37, 69, .72) 45%, rgba(11, 37, 69, .82) 100%), var(--tf-navy) var(--tf-hero-img-sm, var(--tf-hero-img)) 62% 50% / cover no-repeat;
}
@media (min-width: 768px) {
  .tf-hero--photo:not(#tf-x) {
    align-items: center;
    background: linear-gradient(180deg, rgba(11, 37, 69, .55) 0%, rgba(11, 37, 69, .72) 45%, rgba(11, 37, 69, .82) 100%), var(--tf-navy) var(--tf-hero-img, var(--tf-hero-img-sm)) 62% 50% / cover no-repeat;
  }
}
/* Desktop: Text links auf dunklem Verlauf, Motiv rechts frei (SPEC-Overlay + Seitenverlauf für Lesbarkeit) */
@media (min-width: 992px) {
  .tf-hero--photo:not(#tf-x) {
    background: linear-gradient(90deg, rgba(11, 37, 69, .80) 0%, rgba(11, 37, 69, .58) 45%, rgba(11, 37, 69, 0) 78%), var(--tf-hero-overlay), var(--tf-navy) var(--tf-hero-img, var(--tf-hero-img-sm)) 65% 55% / cover no-repeat;
  }
}
.tf-hero--photo:not(#tf-x)::after { content: none; }
.tf-hero--photo > :is(.container, .tf-container) { position: relative; }

.tf-hero :is(.container, .hero-content):not(#tf-x) { text-align: left; }
.tf-hero .hero-content:not(.container):not(#tf-x) { max-width: 760px; margin-left: 0; margin-right: 0; padding-left: 0; padding-right: 0; }
.tf-hero--photo .hero-content:not(.container):not(#tf-x),
.tf-hero--photo :is(.container, .hero-content) > :is(h1, p, .hero-subtitle, .quick-facts, .trust-signals, .hero-features, .hero-meta):not(#tf-x) { max-width: 640px; }

.tf-hero h1:not(#tf-x) {
  max-width: 20ch;
  margin: 0 0 1rem;
  color: #fff;
  font-size: clamp(2rem, 1.3rem + 2.8vw, 3.1rem);
  font-weight: 800;
  line-height: 1.08;
  letter-spacing: -.02em;
  text-shadow: none;
}
.tf-hero--photo h1:not(#tf-x) { text-shadow: 0 1px 24px rgba(11, 37, 69, .35); }

.tf-hero :is(p, .hero-subtitle, .lead, .lede, .hero-description):not(#tf-x) {
  max-width: 62ch;
  margin: 0 0 1.5rem;
  color: rgba(255, 255, 255, .9);
  font-size: clamp(1.05rem, 1rem + .35vw, 1.2rem);
  line-height: 1.55;
  opacity: 1;
}
.tf-hero :is(h2, h3, h4, strong):not(#tf-x) { color: #fff; }
.tf-hero a:not([class]):not(#tf-x) { color: #fff; text-decoration: underline; text-underline-offset: 2px; }

/* Preiszeile im Hero: Gelb als Text auf Navy (11:1) */
.tf-hero .hero-price:not(#tf-x) {
  display: block;
  margin: 0 0 1.25rem;
  padding: 0;
  background: none;
  color: var(--tf-yellow);
  font-size: clamp(1.15rem, 1rem + .6vw, 1.45rem);
  font-weight: 700;
  font-variant-numeric: tabular-nums;
  text-shadow: none;
}

/* Chips: hero-features / hero-feature / hero-meta / trust-signals */
.tf-hero :is(.hero-features, .hero-meta, .trust-signals, .hero-badges):not(#tf-x) {
  display: flex;
  flex-wrap: wrap;
  flex-direction: row;
  justify-content: flex-start;
  align-items: center;
  gap: .5rem;
  margin: 0 0 1.75rem;
  padding: 0;
  list-style: none;
}
.tf-hero :is(.hero-features > span, .hero-features > li, .hero-feature, .hero-meta > span, .hero-meta > li, .trust-signal, .hero-badge):not(#tf-x),
.tf-chip {
  display: inline-flex;
  align-items: center;
  gap: .4rem;
  min-width: 0;
  max-width: 100%;
  margin: 0;
  padding: .42rem .85rem;
  background: rgba(255, 255, 255, .14);
  border: 1px solid rgba(255, 255, 255, .25);
  border-radius: 999px;
  color: #fff;
  font-size: .9rem;
  font-weight: 600;
  line-height: 1.3;
  text-align: left;
  box-shadow: none;
  -webkit-backdrop-filter: none;
  backdrop-filter: none;
  overflow-wrap: anywhere;
}
.tf-hero :is(.hero-feature, .trust-signal):not(#tf-x)::before { content: none; }
.tf-hero :is(.hero-features, .hero-meta) strong:not(#tf-x) { font-weight: 700; }
.tf-hero .hero-feature-icon:not(#tf-x) {
  width: auto;
  height: auto;
  margin: 0;
  background: none;
  font-size: 1rem;
}

/* Kennzahlen im Hero (Startseite .quick-facts > .quick-fact) */
.tf-hero .quick-facts:not(#tf-x) {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: .5rem;
  max-width: 640px;
  margin: 0 0 1.75rem;
  padding: 0;
  background: none;
  box-shadow: none;
}
@media (min-width: 600px) {
  .tf-hero .quick-facts:not(#tf-x) { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}
.tf-hero .quick-fact:not(#tf-x) {
  display: flex;
  flex-direction: column;
  gap: .1rem;
  margin: 0;
  padding: .7rem .85rem;
  background: rgba(255, 255, 255, .12);
  border: 1px solid rgba(255, 255, 255, .22);
  border-radius: 12px;
  box-shadow: none;
  -webkit-backdrop-filter: none;
  backdrop-filter: none;
  color: #fff;
  text-align: left;
}
.tf-hero .quick-fact:not(#tf-x):hover { box-shadow: none; transform: none; }
.tf-hero .quick-fact-value:not(#tf-x) { display: block; color: #fff; font-size: 1.1rem; font-weight: 700; line-height: 1.2; font-variant-numeric: tabular-nums; }
.tf-hero .quick-fact-label:not(#tf-x) { display: block; color: rgba(255, 255, 255, .82); font-size: .8rem; font-weight: 500; text-transform: none; letter-spacing: 0; }

/* Buttons im Hero: Primär gelb, Sekundär weiß-outline (siehe 08) */
.tf-hero :is(.cta-primary, .hero-cta, .cta-buttons, .hero-buttons, .btn-row) { margin-top: .25rem; }
.tf-hero :is(.btn, .btn-lg, .btn-large, .btn-hero, .btn-primary, .cta-primary, .cta-button, .btn-book):not(#tf-x) { width: auto; margin-bottom: 1.25rem; }
.tf-hero :is(.cta-buttons, .hero-buttons, .btn-row, .hero-actions):not(#tf-x) { display: flex; flex-wrap: wrap; gap: .75rem; justify-content: flex-start; }
.tf-hero .price-highlight:not(#tf-x) { color: inherit; background: none; font-weight: 800; }

/* Foto-Credit unten rechts (Startseite) */
.tf-hero__credit {
  position: absolute;
  right: .75rem;
  bottom: .5rem;
  z-index: 1;
  margin: 0;
  max-width: calc(100% - 1.5rem);
  color: rgba(255, 255, 255, .85);
  font-size: .72rem;
  line-height: 1.3;
  text-align: right;
  text-shadow: 0 1px 2px rgba(0, 0, 0, .5);
}
.tf-hero .tf-hero__credit a:not(#tf-x) { color: inherit; text-decoration: underline; text-underline-offset: 2px; }


/* ==========================================================================
   08 · BUTTONS + LINKS
   Alle Bestandsklassen explizit (SPEC § 5) — unabhängig vom Inline-CSS.
   ========================================================================== */
.tf-btn,
:is(.btn, .btn-primary, .btn-hero, .btn-book, .btn-package, .btn-nav, .cta-button, a.button, .book-button,
    .btn-lg, .btn-large, .cta-primary, .btn-fs-search, .calculate-btn, .search-button):not(#tf-x) {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: .45rem;
  max-width: 100%;
  margin-top: 0;
  padding: .8rem 1.4rem;
  background: var(--tf-yellow);
  background-image: none;
  color: var(--tf-ink);
  border: 1px solid transparent;
  border-radius: 999px;
  box-shadow: 0 1px 2px rgba(11, 37, 69, .08), 0 4px 14px rgba(11, 37, 69, .10);
  font-family: var(--tf-font);
  font-size: 1rem;
  font-weight: 700;
  line-height: 1.25;
  letter-spacing: 0;
  text-align: center;
  text-decoration: none;
  text-transform: none;
  text-shadow: none;
  white-space: normal;
  cursor: pointer;
  animation: none;
  transition: background-color .15s ease, box-shadow .15s ease, transform .15s ease, color .15s ease, border-color .15s ease;
  -webkit-tap-highlight-color: transparent;
}
.tf-btn:hover,
:is(.btn, .btn-primary, .btn-hero, .btn-book, .btn-package, .btn-nav, .cta-button, a.button, .book-button,
    .btn-lg, .btn-large, .cta-primary, .btn-fs-search, .calculate-btn, .search-button):not(#tf-x):hover {
  background: var(--tf-yellow-hover);
  color: var(--tf-ink);
  border-color: transparent;
  transform: translateY(-1px);
  box-shadow: 0 2px 4px rgba(11, 37, 69, .10), 0 8px 22px rgba(11, 37, 69, .14);
  text-decoration: none;
}
.tf-btn:active,
:is(.btn, .btn-primary, .btn-hero, .btn-book, .btn-package, .cta-button, .btn-lg, .btn-large, .cta-primary):not(#tf-x):active {
  transform: none;
}
:is(.btn-lg, .btn-large):not(#tf-x) { padding: .95rem 1.7rem; font-size: 1.06rem; }
:is(.btn, .btn-lg, .btn-large, .btn-book, .cta-primary, .btn-package):not(#tf-x)::before { content: none; }

/* Sekundär: auf hellem Grund navy-outline … */
.tf-btn--outline,
:is(.btn-secondary, .btn-outline, .btn-outline-light, .btn-white):not(#tf-x) {
  background: #fff;
  color: var(--tf-navy);
  border: 1.5px solid var(--tf-navy);
  box-shadow: none;
}
.tf-btn--outline:hover,
:is(.btn-secondary, .btn-outline, .btn-outline-light, .btn-white):not(#tf-x):hover {
  background: var(--tf-sky);
  color: var(--tf-navy);
  border-color: var(--tf-navy);
  box-shadow: none;
}
/* … auf Navy/Hero/CTA-Sektion weiß-outline */
.tf-btn--light,
:is(.tf-hero, .cta-section, .tf-section--navy, .final-cta) :is(.btn-secondary, .btn-outline, .btn-outline-light, .btn-white):not(#tf-x) {
  background: transparent;
  color: #fff;
  border: 1.5px solid rgba(255, 255, 255, .7);
  box-shadow: none;
}
.tf-btn--light:hover,
:is(.tf-hero, .cta-section, .tf-section--navy, .final-cta) :is(.btn-secondary, .btn-outline, .btn-outline-light, .btn-white):not(#tf-x):hover {
  background: rgba(255, 255, 255, .12);
  color: #fff;
  border-color: #fff;
}
.tf-btn--primary { background: var(--tf-yellow); color: var(--tf-ink); }
.tf-btn--block { display: flex; width: 100%; }
.tf-btn--sm { padding: .55rem 1rem; font-size: .9rem; }

/* Preis-Hervorhebung in Buttons: keine zweite Farbe, nur Gewicht */
:is(.btn, .btn-lg, .btn-book, .cta-primary, .cta-button) :is(.price-highlight, .price, small):not(#tf-x) {
  color: inherit;
  background: none;
  padding: 0;
  font-weight: 800;
}

/* Fokus auf gelben Buttons: Navy-Ring statt Gelb-auf-Gelb */
.tf-btn:focus-visible,
:is(.btn, .btn-primary, .btn-hero, .btn-book, .btn-package, .cta-button, .btn-lg, .btn-large, .cta-primary):focus-visible {
  outline: 3px solid var(--tf-navy);
  outline-offset: 2px;
}
:is(.tf-hero, .cta-section, .tf-section--navy, .tf-footer) :is(.tf-btn, .btn, .btn-lg, .cta-primary, .btn-hero):focus-visible { outline-color: #fff; }

/* Button-Gruppen */
:is(.cta-buttons, .btn-row, .button-group, .hero-buttons):not(#tf-x) { display: flex; flex-wrap: wrap; gap: .75rem; align-items: center; }
@media (max-width: 599.98px) {
  :is(.cta-buttons, .btn-row, .button-group, .hero-buttons) > :is(.btn, .tf-btn, a) { flex: 1 1 100%; }
}


/* ==========================================================================
   09 · CHIPS + BADGES
   ========================================================================== */
.tf-chip--light {
  background: var(--tf-sky);
  border-color: var(--tf-sky-2);
  color: var(--tf-navy);
}
.tf-badge,
:is(.badge, .price-badge, .ship-badge, .nav-badge):not(#tf-x) {
  display: inline-flex;
  align-items: center;
  gap: .3rem;
  padding: .2rem .6rem;
  background: var(--tf-sky);
  color: var(--tf-navy);
  border: 0;
  border-radius: 999px;
  font-size: .78rem;
  font-weight: 700;
  line-height: 1.4;
  letter-spacing: .01em;
  text-transform: none;
  font-variant-numeric: tabular-nums;
}
.recommended :is(.badge, .price-badge):not(#tf-x),
.tf-badge--yellow { background: var(--tf-yellow); color: var(--tf-ink); }
.tf-badge--green { background: var(--tf-green-tint); color: var(--tf-green); }


/* ==========================================================================
   10 · KARTEN + BOXEN
   ========================================================================== */
:is(.feature-card, .price-card, .key-fact, .quick-fact, .tip-card, .comparison-card, .route-card, .package-card,
    .hotel-card, .fact-card, .fact-item, .related-card, .info-card, .attraction-card, .destination-card, .ship-card,
    .restaurant-card, .season-card, .link-card, .highlight-card, .travel-info-card, .spec-item, .experience-box):not(#tf-x) {
  background: #fff;
  border: 1px solid var(--tf-line);
  border-radius: var(--tf-radius);
  box-shadow: var(--tf-shadow);
  color: var(--tf-ink);
  transform: none;
  transition: box-shadow .2s ease, border-color .2s ease;
}
:is(.feature-card, .price-card, .key-fact, .quick-fact, .tip-card, .comparison-card, .route-card, .package-card,
    .hotel-card, .fact-card, .fact-item, .related-card, .info-card, .attraction-card, .destination-card, .ship-card,
    .restaurant-card, .season-card, .link-card, .highlight-card, .travel-info-card, .spec-item):not(#tf-x):hover {
  transform: none;
  box-shadow: var(--tf-shadow-lg);
}
/* Polsterung nur für Karten ohne eigene Bild-/Body-Struktur */
:is(.feature-card, .key-fact, .quick-fact, .tip-card, .comparison-card, .fact-card, .fact-item, .info-card, .season-card,
    .link-card, .travel-info-card, .spec-item):not(#tf-x):not(:has(> :is(img, picture, figure, .card-image, .card-images, .attraction-image, .destination-image))) {
  padding: clamp(1.15rem, 1rem + .5vw, 1.5rem);
}
:is(.price-card, .route-card, .comparison-card, .ship-card, .restaurant-card):not(#tf-x):not(:has(> :is(.price-card-header, .restaurant-header, .card-header, img))) { padding: clamp(1.15rem, 1rem + .5vw, 1.5rem); }
:is(.price-card, .restaurant-card):not(#tf-x):has(> :is(.price-card-header, .restaurant-header)) { padding: 0; overflow: hidden; }
.price-card-header:not(#tf-x) {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  justify-content: space-between;
  gap: .25rem 1rem;
  padding: 1rem 1.25rem;
  background: var(--tf-sand);
  border-bottom: 1px solid var(--tf-sand-2);
}
.price-card-details:not(#tf-x) { padding: 1rem 1.25rem 1.25rem; }
.price-detail:not(#tf-x) { display: flex; flex-wrap: wrap; justify-content: space-between; gap: .1rem 1rem; padding: .45rem 0; border-bottom: 1px solid var(--tf-line); }
.price-detail:not(#tf-x):last-of-type { border-bottom: 0; }
:is(.price-tag, .price-display, .price):not(#tf-x):not(.btn *) { color: var(--tf-navy); font-weight: 800; font-variant-numeric: tabular-nums; }
.price-note:not(#tf-x) { color: var(--tf-muted); font-size: .875rem; }
:is(.attraction-card, .destination-card, .package-card, .hotel-card, .related-card, .highlight-card):not(#tf-x) { overflow: hidden; }
a:is(.feature-card, .related-card, .link-card, .destination-card, .route-card):not(#tf-x) { display: block; color: var(--tf-ink); text-decoration: none; }
a:is(.feature-card, .related-card, .link-card, .destination-card, .route-card):not(#tf-x):hover { border-color: var(--tf-sky-2); }
:is(.feature-card, .tip-card, .fact-card, .fact-item, .info-card, .related-card, .travel-info-card) :is(h3, h4):not(#tf-x) { margin-top: 0; color: var(--tf-navy); }
:is(.feature-card, .tip-card, .fact-card, .fact-item, .info-card, .related-card, .travel-info-card) p:not(#tf-x) { color: var(--tf-muted); }
:is(.feature-card, .tip-card, .fact-card, .fact-item, .info-card, .travel-info-card) > :last-child { margin-bottom: 0; }

/* Empfohlene Karte */
:is(.price-card, .comparison-card, .package-card).recommended:not(#tf-x),
:is(.price-card, .comparison-card).featured:not(#tf-x) { border: 2px solid var(--tf-blue); }

/* Info-/Hinweis-Boxen mit Balken links */
.info-box:not(#tf-x),
.info-callout:not(#tf-x),
.tips-box:not(#tf-x) {
  margin: 1.5rem 0;
  padding: 1.15rem 1.35rem;
  background: var(--tf-sky);
  border: 0;
  border-left: 4px solid var(--tf-blue);
  border-radius: 0 var(--tf-radius) var(--tf-radius) 0;
  box-shadow: none;
  color: var(--tf-ink);
}
:is(.highlight-box, .warning-box, .alert, .warning, .info-box-warning, .alert-warning):not(#tf-x) {
  margin: 1.5rem 0;
  padding: 1.15rem 1.35rem;
  background: var(--tf-sand);
  border: 0;
  border-left: 4px solid var(--tf-gold);
  border-radius: 0 var(--tf-radius) var(--tf-radius) 0;
  box-shadow: none;
  color: var(--tf-ink);
}
:is(.success-box, .success, .info-box-success, .alert-success):not(#tf-x) {
  margin: 1.5rem 0;
  padding: 1.15rem 1.35rem;
  background: var(--tf-green-tint);
  border: 0;
  border-left: 4px solid var(--tf-green);
  border-radius: 0 var(--tf-radius) var(--tf-radius) 0;
  box-shadow: none;
  color: var(--tf-ink);
}
:is(.info-box, .info-callout, .tips-box, .highlight-box, .warning-box, .alert, .success-box) :is(h3, h4, h5):not(#tf-x) {
  margin: 0 0 .5rem;
  color: var(--tf-navy);
  font-size: 1.08rem;
}
:is(.info-box, .info-callout, .tips-box, .highlight-box, .warning-box, .alert, .success-box) > :last-child { margin-bottom: 0; }
:is(.info-box, .info-callout, .tips-box, .highlight-box, .warning-box, .alert, .success-box) p:not(#tf-x) { color: var(--tf-ink); }

/* Icon-Kacheln: Emoji bleiben Content, wirken in der ruhigen Fläche aber gesetzt */
:is(.feature-icon, .fact-icon, .key-fact-icon, .quick-fact-icon, .tip-icon, .info-card-icon, div.icon, span.icon):not(#tf-x) {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: none;
  width: 48px;
  height: 48px;
  margin: 0 0 .85rem;
  padding: 0;
  background: var(--tf-sky);
  border: 0;
  border-radius: 12px;
  color: var(--tf-navy);
  font-size: 1.4rem;
  line-height: 1;
  box-shadow: none;
}
.hero-feature-icon:not(#tf-x) {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 48px;
  height: 48px;
  background: var(--tf-sky);
  border-radius: 12px;
  font-size: 1.4rem;
  line-height: 1;
}
/* zentrierte Altkarten: Kachel mittig halten */
:is(.feature-card, .fact-card, .fact-item, .quick-fact, .key-fact)[style*="center"] :is(.feature-icon, .fact-icon, .quick-fact-icon) { margin-left: auto; margin-right: auto; }

/* Kennzahlen (Fakten-Kacheln) */
:is(.quick-fact-value, .fact-value, .key-fact-value, .stat-value, .stat-number):not(#tf-x) {
  color: var(--tf-navy);
  font-weight: 700;
  font-variant-numeric: tabular-nums;
}
:is(.quick-fact-label, .fact-label, .key-fact-label, .stat-label):not(#tf-x) {
  color: var(--tf-muted);
  font-weight: 500;
}

/* Responsive Raster (SPEC § 5) */
div.quick-facts:not(#tf-x):not(.tf-hero *):has(> :is(.quick-fact, .fact-card, .fact-item, .key-fact)),
section.quick-facts:not(#tf-x):not(.tf-hero *):has(> :is(.quick-fact, .fact-card, .fact-item, .key-fact)),
:is(.key-facts-grid, .trust-signals, .price-cards, .facts-grid, .quick-facts-grid, .feature-cards, .tips-grid, .related-grid):not(#tf-x) {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 150px), 1fr));
  gap: .75rem;
}
:is(.feature-cards, .tips-grid, .related-grid):not(#tf-x) { grid-template-columns: repeat(auto-fit, minmax(min(100%, 240px), 1fr)); }
.price-cards:not(#tf-x) { grid-template-columns: repeat(auto-fit, minmax(min(100%, 300px), 1fr)); margin: 1.5rem 0; }
.trust-signals:not(#tf-x) { gap: .6rem; }
.trust-signals > .trust-signal:not(#tf-x):not(.tf-hero *) {
  padding: .65rem .9rem;
  background: var(--tf-sky);
  border-radius: 12px;
  color: var(--tf-navy);
  font-weight: 600;
  font-size: .95rem;
}

/* Bilder in Inhalt/Karten */
:is(main, .content-section, article) img:not([class*="logo"]):not([class*="leaflet"]):not([class^="lhc"]):not([width="16"]):not([width="20"]):not([width="24"]) { border-radius: 12px; }
figure { margin: 1.5rem 0; }
figcaption { margin-top: .5rem; color: var(--tf-muted); font-size: .85rem; line-height: 1.45; }

/* Zitat-/Feature-Antwortbox (Startseite „Schnellantwort“) */
.featured-answer:not(#tf-x) {
  margin: clamp(1.5rem, 4vw, 2.5rem) 0 0;
  padding: clamp(1.25rem, 1rem + 1vw, 2rem);
  background: #fff;
  border: 1px solid var(--tf-line);
  border-radius: var(--tf-radius-lg);
  box-shadow: var(--tf-shadow);
}
.featured-answer-label:not(#tf-x) {
  display: inline-block;
  margin: 0 0 .5rem;
  padding: 0;
  background: none;
  color: var(--tf-blue);
  font-size: .8rem;
  font-weight: 700;
  letter-spacing: .08em;
  text-transform: uppercase;
}


/* ==========================================================================
   11 · TABELLEN
   ========================================================================== */
:is(.tf-table-wrap, .table-wrapper, div.comparison-table, .table-responsive, .table-container):not(#tf-x) {
  width: 100%;
  max-width: 100%;
  margin: 1.5rem 0;
  padding: 0;
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
  background: #fff;
  border: 1px solid var(--tf-line);
  border-radius: var(--tf-radius);
  box-shadow: var(--tf-shadow-sm);
}
:is(.tf-table-wrap, .table-wrapper, div.comparison-table, .table-responsive, .table-container) :is(.tf-table-wrap, .table-wrapper, div.comparison-table, .table-responsive, .table-container):not(#tf-x) {
  margin: 0;
  border: 0;
  border-radius: 0;
  box-shadow: none;
}
table:not(#tf-x) {
  width: 100%;
  margin: 1.5rem 0;
  border-collapse: collapse;
  border-spacing: 0;
  background: #fff;
  font-size: .95rem;
  line-height: 1.45;
  font-variant-numeric: tabular-nums;
}
:is(.tf-table-wrap, .table-wrapper, div.comparison-table, .table-responsive, .table-container) table:not(#tf-x) {
  margin: 0;
  border: 0;
  border-radius: 0;
  box-shadow: none;
}
table:not(#tf-x) :is(th, td) {
  padding: .75rem 1rem;
  border: 0;
  border-bottom: 1px solid var(--tf-line);
  text-align: left;
  vertical-align: top;
}
:is(.tf-table-wrap, .table-wrapper, div.comparison-table, .table-responsive) table:not(#tf-x) :is(th, td) { min-width: 6.5rem; }
table:not(#tf-x) th { font-weight: 600; }
table:not(#tf-x) thead th,
table:not(#tf-x) > tr:first-child > th {
  background: var(--tf-navy);
  color: #fff;
  border-bottom: 0;
  white-space: nowrap;
}
table:not(#tf-x) tbody tr:nth-child(even) > * { background: var(--tf-sand); }
table:not(#tf-x) tbody tr:nth-child(odd) > * { background: #fff; }
table:not(#tf-x) tbody tr:last-child > * { border-bottom: 0; }
table:not(#tf-x) tbody th { color: var(--tf-navy); }
table:not(#tf-x) caption { padding: .75rem 1rem; color: var(--tf-muted); font-size: .875rem; text-align: left; caption-side: bottom; }
/* Hervorgehobene Zeilen/Zellen im Bestand */
table:not(#tf-x) :is(tr.highlight, tr.highlight-row, .highlight-row) > * { background: #FFF6CC; }
table:not(#tf-x) :is(.check, .yes) { color: var(--tf-green); font-weight: 700; }
table:not(#tf-x) :is(.cross, .no) { color: var(--tf-red); font-weight: 700; }


/* ==========================================================================
   12 · FAQ (Optik; Verhalten bleibt im Inline-Script der Seite)
   ========================================================================== */
.faq-section:not(#tf-x) { background-color: transparent; }
.faq-item:not(#tf-x) {
  margin: 0 0 .75rem;
  padding: 0;
  background: #fff;
  border: 1px solid var(--tf-line);
  border-radius: var(--tf-radius);
  box-shadow: var(--tf-shadow-sm);
  overflow: hidden;
  transition: box-shadow .2s ease, border-color .2s ease;
}
.faq-item:not(#tf-x):hover { box-shadow: var(--tf-shadow); }
/* Statische FAQ-Karten ohne Toggle (z. B. Startseite: .faq-item > h3 + p) */
.faq-item:not(#tf-x):not(:has(.faq-question)) { padding: 1.15rem 1.35rem; }
.faq-item:not(:has(.faq-question)) > :is(h3, h4):not(#tf-x) { margin: 0 0 .5rem; padding: 0; color: var(--tf-navy); font-size: 1.08rem; line-height: 1.35; }
.faq-item:not(:has(.faq-question)) > p:not(#tf-x) { margin: 0; padding: 0; color: var(--tf-ink); font-size: 1rem; }
:is(.faq-item.active, .faq-item.open):not(#tf-x),
.faq-item:not(#tf-x):has(> .faq-question[aria-expanded="true"]) { border-color: var(--tf-sky-2); box-shadow: var(--tf-shadow); }

.faq-question:not(#tf-x) {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  width: 100%;
  margin: 0;
  padding: 1.05rem 1.25rem;
  background: transparent;
  border: 0;
  border-radius: 0;
  color: var(--tf-navy);
  font-family: var(--tf-font);
  font-size: 1.05rem;
  font-weight: 700;
  line-height: 1.4;
  text-align: left;
  cursor: pointer;
  list-style: none;
}
.faq-question:not(#tf-x):hover { color: var(--tf-blue); background: transparent; }
.faq-question:not(#tf-x)::-webkit-details-marker { display: none; }
/* Chevron (übernimmt das Inline-„+“; Skript entfernt .faq-question::after) */
.faq-question:not(#tf-x)::after,
:is(.faq-item.active, .faq-item.open) .faq-question:not(#tf-x)::after,
.faq-question.active:not(#tf-x)::after {
  content: '';
  position: static;
  display: block;
  flex: none;
  width: 1.15rem;
  height: 1.15rem;
  margin: 0;
  padding: 0;
  background: currentColor;
  border: 0;
  border-radius: 0;
  font-size: 0;
  -webkit-mask: var(--tf-chevron) center / contain no-repeat;
  mask: var(--tf-chevron) center / contain no-repeat;
  color: var(--tf-blue);
  transform: none;
  transition: transform .2s ease;
}
:is(.faq-item.active, .faq-item.open) .faq-question:not(#tf-x)::after,
.faq-question.active:not(#tf-x)::after,
.faq-question[aria-expanded="true"]:not(#tf-x)::after { transform: rotate(180deg); }
.faq-question:not(#tf-x)::before { content: none; }
.faq-question .faq-icon:not(#tf-x) { display: none; }
.faq-question :is(h3, h4, span):not(#tf-x) { margin: 0; color: inherit; font-size: inherit; font-weight: inherit; line-height: inherit; }

.faq-answer:not(#tf-x) { color: var(--tf-ink); font-size: 1rem; line-height: 1.65; }
/* Offen-Zustände aller Toggle-Varianten: sichtbar, ungekappt, gepolstert */
:is(.faq-item.active, .faq-item.open) > .faq-answer:not(#tf-x),
:is(.faq-item.active, .faq-item.open) .faq-answer:not(#tf-x),
.faq-question.active + .faq-answer:not(#tf-x),
.faq-question[aria-expanded="true"] + .faq-answer:not(#tf-x),
.faq-answer.active:not(#tf-x) {
  display: block;
  max-height: none;
  overflow: visible;
  visibility: visible;
  opacity: 1;
  padding: 0 1.25rem 1.2rem;
}
:is(.faq-item.active, .faq-item.open) .faq-answer:not(#tf-x):has(> .faq-answer-content),
.faq-question[aria-expanded="true"] + .faq-answer:not(#tf-x):has(> .faq-answer-content),
.faq-answer.active:not(#tf-x):has(> .faq-answer-content) { padding: 0; }
.faq-answer-content:not(#tf-x) { padding: 0 1.25rem 1.2rem; color: var(--tf-ink); }
/* Polsterung sitzt an .faq-answer bzw. .faq-answer-content — Absatz-Polster des Bestands (z. B. „.faq-answer p { padding: 0 1.5rem 1.5rem }“) neutralisieren */
.faq-answer > p:not(#tf-x),
.faq-answer-content > p:not(#tf-x) { padding: 0; }
.faq-answer > :is(ul, ol):not(#tf-x) { padding-top: 0; padding-right: 0; padding-bottom: 0; }
.faq-answer :is(p, ul, ol):last-child { margin-bottom: 0; }


/* ==========================================================================
   13 · CTA-SEKTION
   ========================================================================== */
:is(.cta-section, .final-cta):not(#tf-x) {
  position: relative;
  isolation: isolate;
  overflow: hidden;
  margin: clamp(2rem, 5vw, 3.5rem) 0;
  padding: clamp(2rem, 5vw, 3.5rem) clamp(1.25rem, 4vw, 3rem);
  background: linear-gradient(150deg, #0B2545 0%, #143C73 70%, #1E5AA8 100%);
  border: 0;
  border-radius: var(--tf-radius-lg);
  box-shadow: none;
  color: var(--tf-on-navy);
  text-align: left;
}
section:is(.cta-section, .final-cta):not(#tf-x) { margin: 0; border-radius: 0; padding: clamp(2.75rem, 6vw, 4.5rem) 0; }
:is(.cta-section, .final-cta):not(#tf-x)::after {
  content: '';
  position: absolute;
  right: -40px;
  bottom: -8px;
  z-index: -1;
  width: 420px;
  height: 72px;
  background: var(--tf-wave) repeat-x left bottom / 240px 48px;
  opacity: .07;
  pointer-events: none;
}
:is(.cta-section, .final-cta):not(#tf-x)::before { content: none; }
:is(.cta-section, .final-cta) :is(h2, h3, h4):not(#tf-x) {
  max-width: 28ch;
  margin: 0 0 .75rem;
  color: #fff;
  text-shadow: none;
}
:is(.cta-section, .final-cta) p:not(#tf-x) {
  max-width: 60ch;
  margin: 0 0 1.5rem;
  color: var(--tf-on-navy);
  font-size: 1.1rem;
  opacity: 1;
}
:is(.cta-section, .final-cta) :is(strong, b):not(#tf-x) { color: #fff; }
:is(.cta-section, .final-cta) a:not([class]):not(#tf-x) { color: #fff; text-decoration: underline; text-underline-offset: 2px; }
:is(.cta-section, .final-cta) :is(small, .small, .cta-note, .disclaimer):not(#tf-x) { color: var(--tf-on-navy-muted); font-size: .85rem; }
/* zentrierte Alt-CTAs (text-align:center im Inline-CSS) bleiben zentriert lesbar */
:is(.cta-section, .final-cta)[style*="center"] :is(h2, h3, p) { margin-left: auto; margin-right: auto; }

/* Hellere CTA-Boxen im Inhalt */
.cta-box:not(#tf-x) {
  margin: 2rem 0;
  padding: clamp(1.25rem, 1rem + 1vw, 2rem);
  background: var(--tf-sand);
  border: 1px solid var(--tf-sand-2);
  border-radius: var(--tf-radius-lg);
  box-shadow: none;
  color: var(--tf-ink);
}
.cta-box :is(h2, h3, h4):not(#tf-x) { margin-top: 0; color: var(--tf-navy); }
.cta-box p:not(#tf-x) { color: var(--tf-ink); }


/* ==========================================================================
   14 · FORMULARE (Fahrplan-Suche, Hotelfilter)
   ========================================================================== */
:is(input[type="text"], input[type="email"], input[type="search"], input[type="date"], input[type="number"], input[type="tel"], select, textarea):not(#tf-x):not([class^="nl-"]):not(.live-controls *) {
  min-height: 44px;
  padding: .6rem .8rem;
  background-color: #fff;
  border: 1px solid var(--tf-line-strong);
  border-radius: var(--tf-radius-sm);
  color: var(--tf-ink);
  font-family: var(--tf-font);
  font-size: 1rem;
  line-height: 1.4;
  box-shadow: none;
}
:is(input, select, textarea):not(#tf-x):not([class^="nl-"]):not(.live-controls *):focus {
  border-color: var(--tf-blue);
  outline: 3px solid rgba(30, 90, 168, .25);
  outline-offset: 0;
}
label:not(#tf-x):not(.live-controls *) { color: var(--tf-ink); font-weight: 600; }

.ferry-search-form:not(#tf-x) {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-end;
  gap: .9rem;
  padding: clamp(1rem, .8rem + 1vw, 1.5rem);
  background: #fff;
  border: 1px solid var(--tf-line);
  border-radius: var(--tf-radius);
  box-shadow: var(--tf-shadow);
}
.ferry-search-form > *:not(#tf-x) { flex: 1 1 200px; min-width: 0; }
.ferry-search-form label:not(#tf-x) { display: block; margin: 0 0 .35rem; font-size: .9rem; }
.ferry-search-form :is(input, select):not(#tf-x) { width: 100%; }


/* ==========================================================================
   15 · STAY22 / WIDGET — nur Rahmen/Radius angleichen, Komponente unverändert
   ========================================================================== */
.live-hero-band:not(#tf-x) { background: var(--tf-sand); }
.live-hero-band h2:not(#tf-x) { color: var(--tf-navy); }
.live-hotel-card:not(#tf-x) {
  border: 1px solid var(--tf-line);
  border-radius: var(--tf-radius);
  box-shadow: var(--tf-shadow);
  overflow: hidden;
}
.live-controls :is(select, input):not(#tf-x) { border-radius: var(--tf-radius-sm); }
.lhc-btn:not(#tf-x) { border-radius: 999px; font-weight: 700; }
.lhc-more-btn:not(#tf-x) { border-radius: 999px; }
/* Kontrast-Audit: Sterne (#FFB400, 1,8:1) und Anbieterzeile (#9098A0, 2,9:1) auf Weiß zu hell */
.lhc-stars:not(#tf-x) { color: #9A6700; }
.lhc-provider:not(#tf-x) { color: var(--tf-muted); }
:is(.fk-widget, .ferry-widget, [data-ferry-widget]):not(#tf-x) { border-radius: var(--tf-radius); }

#map:not(#tf-x),
.map-container:not(#tf-x),
.leaflet-container:not(#tf-x) {
  border: 1px solid var(--tf-line);
  border-radius: var(--tf-radius);
  font-family: var(--tf-font);
}
.leaflet-container a:not(#tf-x) { color: var(--tf-blue); }
/* Leaflet-Controls (z-index 800/1000) dürfen nicht über den Sticky-Header ragen */
.leaflet-container:not(#tf-x) { z-index: 0; isolation: isolate; }


/* ==========================================================================
   16 · FOOTER
   ========================================================================== */
.tf-credits {
  margin: 0;
  padding: 1rem 0;
  background: #fff;
  border-top: 1px solid var(--tf-line);
  color: var(--tf-muted);
  font-size: .8rem;
  line-height: 1.5;
}
.tf-credits p { margin: 0; color: var(--tf-muted); }
.tf-credits p + p { margin-top: .35rem; }
.tf-credits a { color: var(--tf-muted); text-decoration: underline; text-underline-offset: 2px; }
.tf-credits a:hover { color: var(--tf-ink); }

.tf-footer {
  margin: 0;
  padding: clamp(2.5rem, 6vw, 4rem) 0 0;
  background: var(--tf-navy);
  color: var(--tf-on-navy);
  font-family: var(--tf-font);
  font-size: .95rem;
  line-height: 1.55;
  text-align: left;
}
.tf-footer__brand {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: .5rem 1rem;
  margin: 0 0 2rem;
  padding: 0 0 1.75rem;
  border-bottom: 1px solid rgba(255, 255, 255, .12);
}
.tf-footer__logo { display: inline-flex; align-items: center; gap: .6rem; color: #fff; }
.tf-footer__logo .tf-logo__mark { border-radius: 9px; box-shadow: 0 0 0 1px rgba(255, 255, 255, .22); }
.tf-footer__logo .tf-logo__text { color: #fff; }
.tf-footer__logo .tf-logo__text b { color: #fff; }
.tf-footer__logo .tf-logo__tld { color: var(--tf-on-navy-muted); }
.tf-footer__tagline { margin: 0; color: var(--tf-on-navy-muted); font-size: .95rem; }

.tf-footer__grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 1.75rem 2rem;
}
@media (min-width: 360px) { .tf-footer__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1.75rem 1.25rem; } }
@media (min-width: 992px) { .tf-footer__grid { grid-template-columns: repeat(4, minmax(0, 1fr)); } }

.tf-footer .tf-footer__title {
  margin: 0 0 .85rem;
  padding: 0;
  color: #fff;
  font-size: .8rem;
  font-weight: 700;
  letter-spacing: .08em;
  line-height: 1.3;
  text-transform: uppercase;
  border: 0;
}
.tf-footer ul { list-style: none; margin: 0; padding: 0; }
.tf-footer li { margin: 0; padding: 0; border: 0; }
.tf-footer li + li { margin-top: .15rem; }
.tf-footer a {
  display: inline-block;
  padding: .2rem 0;
  color: var(--tf-on-navy);
  text-decoration: none;
  transition: color .15s ease;
}
.tf-footer a:hover { color: #fff; text-decoration: underline; text-underline-offset: 3px; }

.tf-footer__bottom {
  margin-top: clamp(2rem, 5vw, 3rem);
  padding: 1.5rem 0 1.75rem;
  border-top: 1px solid rgba(255, 255, 255, .12);
  color: var(--tf-on-navy-muted);
  font-size: .85rem;
  line-height: 1.55;
}
.tf-footer__bottom p { margin: 0; max-width: 90ch; color: var(--tf-on-navy-muted); }
.tf-footer__bottom p + p { margin-top: .5rem; }
.tf-footer__bottom strong { color: var(--tf-on-navy); font-weight: 600; }


/* ==========================================================================
   17 · MOBILE-CTA (< 992 px)
   ========================================================================== */
.tf-mobile-cta {
  position: fixed;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: 900;
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: .5rem;
  padding: .6rem var(--tf-gutter);
  padding-bottom: calc(.6rem + env(safe-area-inset-bottom, 0px));
  background: rgba(255, 255, 255, .98);
  border-top: 1px solid var(--tf-line);
  box-shadow: 0 -8px 24px -12px rgba(11, 37, 69, .25);
  transform: translateY(110%);
  visibility: hidden;
  transition: transform .3s var(--tf-ease), visibility 0s linear .3s;
}
.tf-mobile-cta.is-visible,
html:not(.tf-js) .tf-mobile-cta {
  transform: none;
  visibility: visible;
  transition: transform .3s var(--tf-ease), visibility 0s;
}
.tf-mobile-cta .tf-btn {
  min-height: 46px;
  padding: .6rem .6rem;
  font-size: .95rem;
  white-space: nowrap;
  box-shadow: none;
}
.tf-mobile-cta .tf-btn:hover { transform: none; box-shadow: none; }
@media (max-width: 359.98px) {
  .tf-mobile-cta .tf-btn { font-size: .875rem; white-space: normal; }
}
@media (min-width: 992px) {
  .tf-mobile-cta { display: none; }
}
@media (max-width: 991.98px) {
  body.tf-has-mobile-cta { padding-bottom: var(--tf-mobile-cta-h, 0px); }
  html:not(.tf-js) body:has(.tf-mobile-cta) { padding-bottom: 72px; }

  /* Preisalarm-Slide-in (nl.js .nl-slide): nl.js hebt die Box per [data-nl-offset]
     selbst an, außer auf Geräten mit Maus ≥ 768 px — dort übernimmt diese Regel. */
  .nl-slide:not(#tf-x) { bottom: calc(16px + var(--tf-mobile-cta-h, 0px)); }
  /* Zurück-nach-oben-Knopf des Bestands über die Leiste heben */
  .back-to-top:not(#tf-x) { bottom: calc(1rem + var(--tf-mobile-cta-h, 0px)); }
}
@media (max-width: 767.98px) {
  .nl-slide:not(#tf-x) { bottom: var(--tf-mobile-cta-h, 0px); }
}


/* ==========================================================================
   18 · UTILITIES / A11Y / PRINT
   ========================================================================== */
.skip-link:not(#tf-x) {
  position: absolute;
  left: 12px;
  top: -100px;
  z-index: 2000;
  padding: .7rem 1.1rem;
  background: var(--tf-navy);
  color: #fff;
  border-radius: var(--tf-radius-sm);
  font-weight: 700;
  text-decoration: none;
  transition: top .15s ease;
}
.skip-link:not(#tf-x):focus,
.skip-link:not(#tf-x):focus-visible { top: 10px; color: #fff; outline: 3px solid var(--tf-yellow); outline-offset: 2px; }

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

/* Bootstrap-artige Kleinst-Utilities, die die Stay22-Box ohne Bootstrap nutzt */
.text-muted:not(#tf-x) { color: var(--tf-muted); }
.text-center:not(#tf-x) { text-align: center; }
.small:not(#tf-x) { font-size: .875rem; }
.mb-0:not(#tf-x) { margin-bottom: 0; }
.mb-2:not(#tf-x) { margin-bottom: .5rem; }
.mb-3:not(#tf-x) { margin-bottom: 1rem; }
.mt-0:not(#tf-x) { margin-top: 0; }
.mt-3:not(#tf-x) { margin-top: 1rem; }

/* Zurück-nach-oben (Bestand, 45 Seiten): ruhig, rund */
.back-to-top:not(#tf-x) {
  width: 44px;
  height: 44px;
  background: #fff;
  color: var(--tf-navy);
  border: 1px solid var(--tf-line);
  border-radius: 999px;
  box-shadow: var(--tf-shadow);
}
.back-to-top:not(#tf-x):hover { background: var(--tf-sky); color: var(--tf-navy); }

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: .01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0s !important;  /* nicht .01ms: sonst wird jede Stiländerung zur Transition */
    transition-delay: 0s !important;
    scroll-behavior: auto !important;
  }
}

@media print {
  .tf-header, .tf-nav, .tf-nav-overlay, .tf-breadcrumb, .tf-mobile-cta, .tf-footer__grid, .back-to-top, .nl-slide, .skip-link { display: none !important; }
  body { padding: 0 !important; color: #000 !important; background: #fff !important; font-size: 11pt !important; }
  .tf-hero, .cta-section { background: none !important; color: #000 !important; padding: 1rem 0 !important; min-height: 0 !important; }
  .tf-hero *, .cta-section * { color: #000 !important; text-shadow: none !important; }
  .tf-footer { background: none !important; color: #000 !important; padding: 0 !important; }
  .tf-footer * { color: #000 !important; }
  a[href^="http"]:not(.btn):not(.tf-btn)::after { content: " (" attr(href) ")"; font-size: 9pt; word-break: break-all; }
  .faq-answer { max-height: none !important; display: block !important; overflow: visible !important; }
  table, .faq-item, .info-box, .feature-card { break-inside: avoid; box-shadow: none !important; }
}


/* ==========================================================================
   19 · BESTAND trelleborgfaehre.de — seitenspezifische Korrekturen
   ========================================================================== */

/* Früher position:fixed-Header: Ausgleichsabstände entfallen (Header ist jetzt sticky) */
:is(.tf-header, .tf-breadcrumb) + :is(main, section, div, article):not(#tf-x) { margin-top: 0; }

/* Direkt auf den Hero folgende .container-Sektion (häufig ohne eigenes Padding):
   Abstand, damit Karten nicht an der Hero-Kante kleben */
.tf-hero + .container:not(#tf-x) { padding-top: clamp(1.75rem, 4vw, 2.75rem); }
.tf-hero + .container > :first-child:is(.featured-answer, .feature-cards, .quick-facts, .features, .facts-grid):not(#tf-x) { margin-top: 0; }

/* Startseite: Schnellnavigation (.quick-nav-tabs) als Pills in Sky */
.quick-nav:not(#tf-x) {
  position: static;
  margin: 0;
  padding: 1.25rem 0 .5rem;
  background: transparent;
  border: 0;
  box-shadow: none;
}
.quick-nav-tabs:not(#tf-x) {
  display: flex;
  flex-wrap: nowrap;
  gap: .5rem;
  margin: 0;
  padding: 0 0 .25rem;
  overflow-x: auto;
  scrollbar-width: none;
  border: 0;
}
.quick-nav-tabs:not(#tf-x)::-webkit-scrollbar { display: none; }
.quick-nav-tab:not(#tf-x) {
  flex: none;
  padding: .5rem 1rem;
  background: var(--tf-sky);
  border: 1px solid transparent;
  border-radius: 999px;
  color: var(--tf-navy);
  font-size: .95rem;
  font-weight: 600;
  text-decoration: none;
  white-space: nowrap;
}
.quick-nav-tab:not(#tf-x):hover { background: #fff; border-color: var(--tf-sky-2); color: var(--tf-blue); }
.quick-nav-tab.active:not(#tf-x) { background: var(--tf-navy); color: #fff; }
@media (min-width: 768px) { .quick-nav-tabs:not(#tf-x) { flex-wrap: wrap; overflow: visible; } }

/* Startseite: .key-facts-grid in der Schnellantwort-Box */
.key-fact:not(#tf-x) { display: flex; flex-direction: column; gap: .2rem; padding: .9rem 1rem; box-shadow: none; background: var(--tf-sand); border-color: var(--tf-sand-2); }
.key-fact:not(#tf-x):hover { box-shadow: none; }
.key-fact-value:not(#tf-x) { font-size: 1.15rem; }
.key-fact-label:not(#tf-x) { font-size: .85rem; }

/* Inline-gestylte Farbflächen mit weißer Schrift (z. B. Spar-Tipp-Box Startseite):
   globales „strong { color: var(--primary) }“ des Inline-CSS würde dort Navy auf Grün setzen */
:is([style*="color: white"], [style*="color:white"], [style*="color: #fff"], [style*="color:#fff"]) strong:not(#tf-x) { color: inherit; }

/* Altseiten mit Rot-Pulsen (#e63946) an Nav-Highlights: Animation global aus */
.highlight-nav:not(#tf-x), .highlight-nav a:not(#tf-x) { animation: none; }

/* Zeitstrahl (TT-Line u. a.): Punkte/Linie in Palette */
.timeline-dot:not(#tf-x) { background: var(--tf-blue); border-color: #fff; box-shadow: 0 0 0 3px var(--tf-sky-2); }
.timeline-year:not(#tf-x) { color: var(--tf-blue); font-weight: 800; font-variant-numeric: tabular-nums; }
.timeline:not(#tf-x)::before { background: var(--tf-sky-2); }

/* Kurzreise-Pakete: Preis-Zeile in Navy statt Rot */
.card-price-amount:not(#tf-x) { color: var(--tf-navy); font-weight: 800; font-variant-numeric: tabular-nums; }
.card-image-label:not(#tf-x) { background: rgba(11, 37, 69, .82); color: #fff; border-radius: 999px; }

/* Bootstrap-4-Seiten ohne Bootstrap-CSS: minimales 12-Spalten-Flex-Grid (SPEC § 9) */
.row:not(#tf-x) { display: flex; flex-wrap: wrap; margin-left: -.75rem; margin-right: -.75rem; }
.row > [class*="col"]:not(#tf-x) { position: relative; flex: 1 0 100%; max-width: 100%; padding-left: .75rem; padding-right: .75rem; box-sizing: border-box; }
.row > .col:not(#tf-x) { flex: 1 0 0%; }
.row > .col-12:not(#tf-x) { flex: 0 0 100%; max-width: 100%; }
@media (min-width: 768px) {
  .row > .col-md-3:not(#tf-x) { flex: 0 0 25%; max-width: 25%; }
  .row > .col-md-4:not(#tf-x) { flex: 0 0 33.3333%; max-width: 33.3333%; }
  .row > .col-md-6:not(#tf-x) { flex: 0 0 50%; max-width: 50%; }
  .row > .col-md-8:not(#tf-x) { flex: 0 0 66.6667%; max-width: 66.6667%; }
  .row > .col-md-12:not(#tf-x) { flex: 0 0 100%; max-width: 100%; }
}
@media (min-width: 992px) {
  .row > .col-lg-3:not(#tf-x) { flex: 0 0 25%; max-width: 25%; }
  .row > .col-lg-4:not(#tf-x) { flex: 0 0 33.3333%; max-width: 33.3333%; }
  .row > .col-lg-6:not(#tf-x) { flex: 0 0 50%; max-width: 50%; }
  .row > .col-lg-8:not(#tf-x) { flex: 0 0 66.6667%; max-width: 66.6667%; }
}
.card:not(#tf-x) { background: #fff; border: 1px solid var(--tf-line); border-radius: var(--tf-radius); box-shadow: var(--tf-shadow); overflow: hidden; }
.card-body:not(#tf-x) { padding: 1.25rem; }
