/*
 * Theme tokens (--ss-*) are injected per-request by `ThemeStyleTag` (see
 * cms-app/components/ThemeStyleTag.tsx) keyed on `<html data-theme="…">`.
 * Source of truth: cms-app/lib/theme/themeTokens.ts and the theme objects in
 * cms-app/lib/theme/themes/*. Do not redeclare them here.
 */

/*
 * Inter + Poppins are now self-hosted via `next/font/google` (see
 * cms-app/app/layout.tsx). The CSS variables `--font-inter` and
 * `--font-poppins` are available on `<html>` and are referenced below
 * in `--ss-font` and `--ss-headline-font`. Keeping the `@import` here
 * would re-trigger a render-blocking request to fonts.googleapis.com.
 */

*,
*::before,
*::after {
  box-sizing: border-box;
}

html {
  scroll-behavior: smooth;
}

body {
  margin: 0;
  font-family: var(--ss-font);
  /* Page-level cascade. The default theme keeps `#ffffff` here so dark
   * gradients still paint white text; light themes flip this to the
   * brand text colour without any rule below having to know. */
  color: var(--ss-page-body);
  background: linear-gradient(135deg, var(--ss-page-start) 0%, var(--ss-page-mid) 55%, var(--ss-page-end) 100%);
  font-size: 16px;
  font-weight: 400;
  line-height: 1.6;
}

img {
  display: block;
  max-width: 100%;
}

a {
  color: inherit;
}

button,
input,
textarea,
select {
  font: inherit;
}

.ss-page {
  position: relative;
  min-height: 100vh;
  /* clip bricht 100vw-Bleeds subpixel-falsch ab; x verstecken vermeidet Scrollbalken-Naht */
  overflow-x: hidden;
  overflow-y: clip;
  background: linear-gradient(135deg, var(--ss-page-start) 0%, var(--ss-page-mid) 55%, var(--ss-page-end) 100%);
}

.ss-container {
  position: relative;
  z-index: 2;
  width: min(calc(100% - 2rem), var(--ss-max-width));
  margin: 0 auto;
}

main > section > .ss-container > * + * {
  margin-top: 1.75rem;
}

.ss-site-header {
  position: sticky;
  top: 0;
  z-index: 30;
  backdrop-filter: blur(12px);
}

/* Slim strip above yellow topbar: USPs + Trustpilot (evenly distributed row) */
.ss-promo-topbar {
  background: var(--ss-promo-bar-bg);
  color: var(--ss-surface-white);
  border-bottom: 1px solid rgba(255, 255, 255, 0.06);
  font-size: 13px;
  line-height: 1.3;
  font-weight: 500;
  letter-spacing: 0.01em;
}

.ss-promo-topbar .ss-container {
  max-width: var(--ss-container-max, 1200px);
  margin-left: auto;
  margin-right: auto;
  padding-left: 1rem;
  padding-right: 1rem;
}

.ss-promo-topbar__inner {
  padding-top: 0.4rem;
  padding-bottom: 0.4rem;
}

.ss-promo-topbar__row {
  display: flex;
  flex-wrap: nowrap;
  align-items: center;
  justify-content: space-between;
  gap: 0.75rem 1.25rem;
  width: 100%;
  min-height: 36px;
  margin: 0;
  padding: 0;
  list-style: none;
}

.ss-promo-topbar__item {
  flex: 0 1 auto;
  display: flex;
  align-items: center;
  min-width: 0;
  color: var(--ss-surface-white);
  white-space: nowrap;
}

/* Micro Star needs ~360–400px for text + stars + Trustpilot logo; narrow max-width clipped the logo */
.ss-promo-topbar__item--trustpilot {
  flex: 0 0 auto;
  justify-content: flex-end;
  min-width: min(100%, 360px);
  max-width: none;
}

.ss-promo-topbar__item--trustpilot .trustpilot-widget {
  width: 100%;
  min-width: 320px;
  overflow: visible;
}

/* Progressive disclosure on narrow viewports.
 *
 * Rather than introducing a horizontal scrollbar (the previous behaviour),
 * we drop items one at a time as space tightens. The order — advantages
 * first (one by one), then Trustpilot, then the email — matches the brand
 * priority. The phone link is the last item to remain so visitors can
 * always reach sales from the top of any page. */
@media (max-width: 1099px) {
  .ss-promo-topbar__item--usp-1 {
    display: none;
  }
}

@media (max-width: 999px) {
  .ss-promo-topbar__item--usp-2 {
    display: none;
  }
}

@media (max-width: 899px) {
  .ss-promo-topbar__row {
    justify-content: flex-start;
    flex-wrap: nowrap;
    gap: 0.75rem 1rem;
  }

  .ss-promo-topbar__item--usp {
    display: none;
  }

  .ss-promo-topbar__item--trustpilot {
    min-width: 0;
  }

  .ss-promo-topbar__item--trustpilot .trustpilot-widget {
    min-width: 0;
  }
}

@media (max-width: 639px) {
  .ss-promo-topbar__item--trustpilot {
    display: none;
  }
}

@media (max-width: 479px) {
  .ss-promo-topbar__contact-link--email {
    display: none;
  }
}

.ss-topbar {
  background: var(--ss-yellow);
  border-bottom: 1px solid var(--ss-yellow-hover);
  color: var(--ss-text-primary);
  box-shadow: 0 1px 0 rgba(23, 23, 23, 0.08);
}

.ss-topbar-inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  min-height: 88px;
  /* Allow logo / actions to shrink inside flex so the CTA never clips off-screen */
  min-width: 0;
}

.ss-topbar-inner .ss-brand,
.ss-topbar-inner .ss-header-actions {
  flex-shrink: 0;
}

.ss-topbar-inner .ss-desktop-nav {
  flex: 1 1 0%;
  min-width: 0;
  /* Never let the desktop nav wrap onto a second line. The Tailwind
   * `ss-nav` breakpoint (1100px) is responsible for swapping it out for the
   * burger menu before space gets tight; clipping is preferable to a stray
   * second row of links. */
  flex-wrap: nowrap;
  justify-content: center;
}

.ss-brand {
  display: inline-flex;
  align-items: center;
  gap: 0.75rem;
  text-decoration: none;
  font-weight: 700;
  letter-spacing: -0.02em;
}

.ss-brand img {
  height: 52px;
  width: auto;
}

.ss-desktop-nav,
.ss-mobile-nav {
  display: flex;
  align-items: center;
  gap: 0.5rem;
}

.ss-desktop-nav a,
.ss-mobile-nav a {
  text-decoration: none;
}

.ss-nav-link {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 42px;
  padding: 0 1rem;
  border-radius: var(--ss-radius-md);
  font-size: 14px;
  font-weight: 700;
  color: rgba(23, 23, 23, 0.82);
  transition: background-color 180ms ease, color 180ms ease, transform 180ms ease;
}

.ss-nav-link:hover,
.ss-nav-link.is-active {
  background: rgba(255, 255, 255, 0.75);
  color: var(--ss-text-primary);
}

.ss-header-actions {
  display: flex;
  align-items: center;
  gap: 0.75rem;
}

.ss-header-actions .ss-btn {
  white-space: nowrap;
}

/* Sprachwahl (Header) */
.ss-lang-switch {
  position: relative;
  flex-shrink: 0;
}

.ss-lang-switch__btn {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  min-height: 42px;
  padding: 0 0.65rem 0 0.5rem;
  border-radius: var(--ss-radius-md);
  border: 1px solid rgba(23, 23, 23, 0.14);
  background: rgba(255, 255, 255, 0.72);
  color: var(--ss-text-primary);
  font-size: 13px;
  font-weight: 700;
  cursor: pointer;
  font-family: inherit;
  transition: background-color 180ms ease, border-color 180ms ease;
}

.ss-lang-switch__btn:hover {
  background: rgba(255, 255, 255, 0.92);
  border-color: rgba(23, 23, 23, 0.2);
}

.ss-lang-switch__btn[aria-expanded='true'] {
  background: rgba(255, 255, 255, 0.95);
  border-color: rgba(23, 23, 23, 0.22);
}

.ss-lang-switch__globe {
  display: flex;
  color: rgba(23, 23, 23, 0.65);
}

.ss-lang-switch__chev {
  display: flex;
  color: rgba(23, 23, 23, 0.5);
}

.ss-lang-switch__label {
  max-width: 7.5rem;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

@media (max-width: 380px) {
  .ss-lang-switch__label {
    max-width: 4.5rem;
  }
}

.ss-lang-switch__menu {
  position: absolute;
  right: 0;
  top: calc(100% + 6px);
  min-width: 11rem;
  margin: 0;
  padding: 0.35rem;
  list-style: none;
  background: var(--ss-surface-white);
  border-radius: var(--ss-radius-md);
  border: 1px solid rgba(23, 23, 23, 0.1);
  box-shadow: 0 12px 32px rgba(23, 23, 23, 0.14);
  z-index: 60;
}

.ss-lang-switch__opt {
  display: block;
  width: 100%;
  padding: 0.5rem 0.65rem;
  border-radius: calc(var(--ss-radius-md) - 2px);
  font-size: 14px;
  font-weight: 600;
  color: var(--ss-text-primary);
  text-decoration: none;
  transition: background-color 140ms ease;
}

.ss-lang-switch__opt:hover {
  background: rgba(248, 215, 73, 0.35);
}

.ss-lang-switch__opt.is-active {
  background: rgba(248, 215, 73, 0.55);
  font-weight: 700;
}

/* Region / Sprache Modal */
.ss-modal-overlay {
  position: fixed;
  inset: 0;
  z-index: 200;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 1rem;
  background: rgba(17, 24, 39, 0.45);
  backdrop-filter: blur(4px);
}

.ss-modal-card {
  width: 100%;
  max-width: 26rem;
  padding: 1.35rem 1.35rem 1.15rem;
  border-radius: 1rem;
  background: var(--ss-surface-white);
  color: var(--ss-text-primary);
  box-shadow: 0 24px 48px rgba(23, 23, 23, 0.18);
  border: 1px solid rgba(23, 23, 23, 0.08);
}

.ss-modal-card__title {
  margin: 0 0 0.65rem;
  font-size: 1.2rem;
  font-weight: 800;
  letter-spacing: -0.02em;
  line-height: 1.25;
}

.ss-modal-card__text {
  margin: 0 0 1rem;
  font-size: 0.9375rem;
  line-height: 1.5;
  color: rgba(23, 23, 23, 0.78);
}

.ss-modal-card__choices {
  display: flex;
  flex-direction: column;
  gap: 0.4rem;
  margin-bottom: 1rem;
}

.ss-modal-card__choice {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.5rem;
  width: 100%;
  padding: 0.55rem 0.75rem;
  border-radius: var(--ss-radius-md);
  border: 1px solid rgba(23, 23, 23, 0.1);
  background: rgba(248, 250, 252, 0.9);
  font-size: 14px;
  font-weight: 700;
  cursor: pointer;
  font-family: inherit;
  text-align: left;
  color: var(--ss-text-primary);
  transition: background-color 140ms ease, border-color 140ms ease;
}

.ss-modal-card__choice:hover {
  background: rgba(248, 215, 73, 0.35);
  border-color: rgba(23, 23, 23, 0.14);
}

.ss-modal-card__choice.is-current {
  border-color: rgba(248, 215, 73, 0.85);
  background: rgba(248, 215, 73, 0.25);
}

.ss-modal-card__badge {
  font-size: 11px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: rgba(23, 23, 23, 0.55);
}

.ss-modal-card__actions {
  display: flex;
  flex-direction: column;
  gap: 0.45rem;
}

.ss-modal-card__btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 44px;
  padding: 0 1rem;
  border-radius: var(--ss-radius-md);
  font-size: 14px;
  font-weight: 700;
  cursor: pointer;
  font-family: inherit;
  border: none;
}

.ss-modal-card__btn--primary {
  background: var(--ss-text-primary);
  color: var(--ss-surface-white);
}

.ss-modal-card__btn--primary:hover {
  filter: brightness(1.08);
}

.ss-modal-card__btn--ghost {
  background: transparent;
  color: rgba(23, 23, 23, 0.65);
  border: 1px solid transparent;
}

.ss-modal-card__btn--ghost:hover {
  color: var(--ss-text-primary);
  background: rgba(23, 23, 23, 0.04);
}

.ss-mobile-lang {
  padding: 0.5rem 0 0.25rem;
  border-bottom: 1px solid rgba(23, 23, 23, 0.08);
  margin-bottom: 0.35rem;
}

.ss-nav-toggle {
  display: none;
  align-items: center;
  justify-content: center;
  width: 44px;
  height: 44px;
  border: 1px solid rgba(23, 23, 23, 0.14);
  border-radius: var(--ss-radius-md);
  background: rgba(255, 255, 255, 0.72);
  color: var(--ss-text-primary);
  cursor: pointer;
}

/* Focus-visible: nur bei Tastatur-Fokus sichtbar (Tailwind/A11y Best Practice) */
.ss-btn:focus,
.ss-nav-link:focus,
.ss-nav-toggle:focus,
.ss-toc a:focus,
.ss-slider-button:focus,
.ss-slider-dot:focus,
.ss-trustpilot-arrow:focus {
  outline: none;
}

.ss-btn:focus-visible {
  box-shadow: 0 0 0 3px rgba(248, 215, 73, 0.45);
}

.ss-nav-link:focus-visible,
.ss-toc a:focus-visible {
  box-shadow: 0 0 0 2px rgba(248, 215, 73, 0.5);
}

.ss-nav-toggle:focus-visible {
  box-shadow: 0 0 0 2px rgba(23, 23, 23, 0.3);
}

.ss-slider-button:focus-visible,
.ss-slider-dot:focus-visible {
  box-shadow: 0 0 0 2px var(--ss-yellow);
}

.ss-slider--light .ss-slider-button:focus-visible {
  box-shadow: 0 0 0 2px var(--ss-yellow);
}

.ss-trustpilot-arrow:focus-visible {
  box-shadow: 0 0 0 2px rgba(255, 255, 255, 0.8);
}

.ss-mobile-nav-wrap {
  display: none;
  background: rgba(248, 215, 73, 0.94);
  border-bottom: 1px solid rgba(23, 23, 23, 0.08);
}

.ss-mobile-nav {
  display: grid;
  gap: 0.5rem;
  padding: 0 0 1rem;
}

.ss-mobile-nav-wrap.is-open {
  display: block;
}

/* Burger-Menü: Untermenüs gleiche dunkle Fläche wie Desktop-Flyout */
.ss-mobile-flyout {
  display: flex;
  flex-direction: column;
  gap: 0.2rem;
}
.ss-mobile-flyout__split {
  display: flex;
  align-items: stretch;
  flex-wrap: nowrap;
  border-radius: var(--ss-radius-md);
  overflow: hidden;
}
.ss-mobile-flyout__trigger-full {
  width: 100%;
  justify-content: space-between;
}
.ss-mobile-flyout__panel {
  display: none;
  margin: 0.1rem 0 0.35rem;
  padding: 0.85rem 0.9rem 1rem;
  border-radius: var(--ss-radius-md);
  background: rgba(23, 23, 23, 0.98);
  border: 1px solid rgba(148, 163, 184, 0.25);
  box-shadow: 0 8px 28px rgba(0, 0, 0, 0.28);
}
.ss-mobile-flyout__panel.is-open {
  display: block;
}
.ss-mobile-flyout__panel .ss-flyout-panel__label {
  display: block;
  margin: 0 0 0.45rem;
}
.ss-mobile-flyout__panel .ss-flyout-featured {
  margin-bottom: 0.65rem;
  grid-template-columns: repeat(auto-fill, minmax(112px, 1fr));
}
.ss-mobile-flyout__panel .ss-flyout-links {
  column-count: 1;
}
.ss-mobile-flyout__panel .ss-flyout-links a {
  display: block;
  font-size: 0.9375rem;
  font-weight: 600;
  color: var(--ss-text-soft);
  text-decoration: none;
  padding: 0.4rem 0.55rem;
  border-radius: var(--ss-radius-sm);
  transition: color 180ms ease, background 180ms ease;
}
.ss-mobile-flyout__panel .ss-flyout-links a:hover {
  color: var(--ss-page-heading);
  background: rgba(255, 255, 255, 0.08);
}

/* Flyout: zweite Zeile unter der Topbar (dunkel, Menüeinträge) */
.ss-flyout-wrap {
  position: relative;
}
/* Hauptseite + Aufklapp-Pfeil (z. B. Kontakt → /de/kontakt und Untermenü) */
.ss-flyout-wrap--split {
  display: inline-flex;
  align-items: stretch;
  flex-wrap: nowrap;
  border-radius: var(--ss-radius-md);
}
.ss-flyout-wrap--split .ss-flyout-parent-link {
  padding-right: 0.25rem;
  border-top-right-radius: 0;
  border-bottom-right-radius: 0;
}
.ss-flyout-wrap--split .ss-flyout-trigger--chevron-only {
  padding-left: 0.35rem;
  padding-right: 0.65rem;
  min-width: 2.25rem;
  border-top-left-radius: 0;
  border-bottom-left-radius: 0;
}
.ss-flyout-trigger {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 42px;
  padding: 0 1rem;
  border-radius: var(--ss-radius-md);
  font-size: 14px;
  font-weight: 700;
  color: rgba(23, 23, 23, 0.82);
  background: none;
  border: none;
  cursor: pointer;
  font-family: inherit;
  gap: 0.35rem;
  transition: background-color 180ms ease, color 180ms ease;
}
.ss-flyout-trigger:hover {
  background: rgba(255, 255, 255, 0.75);
  color: var(--ss-text-primary);
}
.ss-flyout-trigger[aria-expanded="true"] {
  background: rgba(255, 255, 255, 0.85);
  color: var(--ss-text-primary);
}
.ss-flyout-trigger svg {
  width: 1rem;
  height: 1rem;
  transition: transform 200ms ease;
}
.ss-flyout-trigger[aria-expanded="true"] svg {
  transform: rotate(180deg);
}
.ss-topbar {
  position: relative;
}
.ss-flyout-panel {
  position: absolute;
  top: 100%;
  left: 0;
  right: 0;
  z-index: 25;
  background: rgba(23, 23, 23, 0.98);
  border-bottom: 1px solid rgba(148, 163, 184, 0.25);
  box-shadow: 0 12px 40px rgba(0, 0, 0, 0.35);
  padding: 1rem 0;
  visibility: hidden;
  opacity: 0;
  transform: translateY(-4px);
  transition: visibility 180ms ease, opacity 180ms ease, transform 180ms ease;
}
/* Store-Flyout: größere Fläche */
.ss-flyout-panel--store {
  padding: 1.5rem 0 2rem;
}
.ss-flyout-panel.is-open {
  visibility: visible;
  opacity: 1;
  transform: translateY(0);
}
.ss-flyout-panel > .ss-container {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem 1.5rem;
  align-items: center;
}
.ss-flyout-panel.ss-flyout-panel--store > .ss-container {
  max-width: min(calc(100% - 2rem), 1320px);
  display: grid;
  gap: 1rem 1.5rem;
  align-items: start;
}
.ss-topbar > .ss-flyout-panel {
  left: 0;
  right: 0;
}
.ss-flyout-panel__label {
  font-size: 0.75rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: var(--ss-text-muted);
  margin-right: 0.5rem;
  flex-shrink: 0;
}
.ss-flyout-panel a {
  font-size: 0.9375rem;
  font-weight: 600;
  color: var(--ss-text-soft);
  text-decoration: none;
  padding: 0.4rem 0.6rem;
  border-radius: var(--ss-radius-sm);
  transition: color 180ms ease, background 180ms ease;
}
.ss-flyout-panel a:hover {
  color: var(--ss-page-heading);
  background: rgba(255, 255, 255, 0.08);
}

/* Store Navigation: Flyout mit Featured Categories */
.ss-flyout-panel--store .ss-flyout-featured {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));
  gap: 0.75rem;
  width: 100%;
}
.ss-featured-category {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.5rem;
  text-decoration: none;
  color: var(--ss-text-soft);
  font-size: 0.875rem;
  font-weight: 600;
  padding: 0.5rem;
  border-radius: var(--ss-radius-sm);
  transition: color 180ms ease, background 180ms ease;
}
.ss-featured-category:hover {
  color: var(--ss-page-heading);
  background: rgba(255, 255, 255, 0.08);
}
.ss-featured-category__img-wrap {
  position: relative;
  width: 100%;
  aspect-ratio: 1;
  border-radius: var(--ss-radius-sm);
  overflow: hidden;
  background: rgba(255, 255, 255, 0.06);
}
.ss-featured-category__img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.ss-featured-category__placeholder {
  display: block;
  width: 100%;
  height: 100%;
  background: rgba(255, 255, 255, 0.1);
}
.ss-featured-category__label {
  text-align: center;
  line-height: 1.2;
}
/* Links in Spalten (Storefront-Layout) */
.ss-flyout-panel--store .ss-flyout-links {
  display: block;
  column-count: 4;
  column-gap: 2rem;
  column-fill: balance;
}
.ss-flyout-panel--store .ss-flyout-links a {
  display: block;
  font-size: 0.9375rem;
  font-weight: 600;
  color: var(--ss-text-soft);
  text-decoration: none;
  padding: 0.35rem 0;
  border-radius: var(--ss-radius-sm);
  transition: color 180ms ease, background 180ms ease;
  break-inside: avoid;
}
.ss-flyout-panel--store .ss-flyout-links a:hover {
  color: var(--ss-page-heading);
  background: transparent;
}
.ss-flyout-panel--store .ss-flyout-panel__label {
  grid-column: 1 / -1;
}
.ss-flyout-panel--store .ss-flyout-featured {
  grid-column: 1 / -1;
}
.ss-flyout-panel--store .ss-flyout-links {
  grid-column: 1 / -1;
}
@media (max-width: 900px) {
  .ss-flyout-panel--store .ss-flyout-links {
    column-count: 3;
  }
}
@media (max-width: 600px) {
  .ss-flyout-panel--store .ss-flyout-links {
    column-count: 2;
  }
}

.ss-hero {
  position: relative;
  /* Defaults consume the same `--ss-raw-inner-section-pt/-pb` that the RawHtml
   * panel sets on the theme wrapper (cms-app/lib/rawHtmlInnerSectionPadding.ts).
   * Falls back to the historical hero spacing so legacy pages stay unchanged. */
  padding-top: var(--ss-raw-inner-section-pt, calc(6rem - 70px));
  padding-bottom: var(--ss-raw-inner-section-pb, 4rem);
}

.ss-hero-grid {
  display: grid;
  /* Text column gets the larger share so the headline + checklist fit in fewer
   * lines (more content above the fold). Image column still has a sane min so
   * the hero photo never collapses. */
  grid-template-columns: minmax(0, 1.45fr) minmax(280px, 1fr);
  gap: 3rem;
  align-items: center;
}

/* Text links, Bild rechts (DOM: Copy, dann Media). Bild links: Spalten tauschen + Reihenfolge */
.ss-hero-grid--reverse {
  grid-template-columns: minmax(280px, 1fr) minmax(0, 1.45fr);
}

.ss-hero-grid--reverse > :nth-child(1) {
  order: 2;
}

.ss-hero-grid--reverse > :nth-child(2) {
  order: 1;
}

.ss-hero-copy {
  display: grid;
  gap: 1.5rem;
}

.ss-hero-copy .ss-actions {
  justify-content: flex-start;
}

.ss-hero-copy .ss-hero__tagline:empty {
  display: none;
}

.ss-hero-copy .ss-hero__checklist:not(:has(> li)) {
  display: none;
}

/* Raw-Html-Landing-Hero (ss-hero / Vorlage): Typo in der Copy-Spalte (Preview → Source) */
.ss-hero-copy .ss-home-title.ss-home-title--compact {
  font-size: 40px;
  line-height: 1.05;
  max-width: none;
}

.ss-hero-copy .ss-lead {
  font-size: 20px;
  line-height: 1.45;
}

.ss-hero-copy .ss-home-copy.ss-hero__tagline {
  font-size: 18px;
  line-height: 1.5;
}

.ss-hero-copy .ss-hero__checklist.ss-checklist--compact li {
  font-size: 20px;
  line-height: 1.35;
}

@media (max-width: 767px) {
  .ss-hero-copy .ss-home-title.ss-home-title--compact {
    font-size: clamp(2.25rem, 9vw, 2.5rem);
  }

  .ss-hero-copy .ss-lead {
    font-size: clamp(1.125rem, 4.5vw, 20px);
  }
}

.ss-badge {
  display: inline-flex;
  width: fit-content;
  align-items: center;
  gap: 0.5rem;
  padding: 0.5rem 1rem;
  border-radius: var(--ss-radius-md);
  color: var(--ss-badge-text);
  background: var(--ss-badge-bg);
  border: 1px solid var(--ss-badge-border);
  backdrop-filter: blur(14px);
  white-space: nowrap;
}

.ss-badge svg {
  width: 0.875rem;
  height: 0.875rem;
  flex-shrink: 0;
}

.ss-display {
  margin: 0;
  font-size: 3rem;
  line-height: 1;
  font-weight: 700;
  letter-spacing: 0;
  text-wrap: balance;
}

.ss-home-title {
  margin: 0;
  font-size: 3rem;
  line-height: 1;
  font-weight: 700;
  color: var(--ss-page-heading);
}

.ss-home-title--compact {
  font-size: clamp(2.2rem, 4vw, 3rem);
  line-height: 1.05;
  max-width: 18ch;
}

.ss-home-section-title {
  margin: 0 0 1.25rem; /* ~20px Luft bis zum Folgetext / zur nächsten Sektion */
  font-size: 1.875rem;
  line-height: 2.25rem;
  font-weight: 700;
  color: var(--ss-page-heading);
}

.ss-home-copy {
  margin: 0;
  font-size: 1rem;
  line-height: 1.5rem;
  color: var(--ss-page-body-muted);
}

.ss-home-copy--large {
  font-size: 1.125rem;
  line-height: 1.625rem;
}

.ss-text-gradient {
  background: linear-gradient(90deg, var(--ss-headline-gradient-from) 0%, var(--ss-headline-gradient-to) 100%);
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
}

.ss-lead {
  max-width: 44rem;
  margin: 0;
  font-size: 1.25rem;
  line-height: 1.75rem;
  color: var(--ss-page-body-soft);
}

.ss-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 1rem;
  justify-content: center;
}

/* Größen-Seite: Info-Grid, Wizard, Tabs, Karten */
.ss-sizes-page {
  display: grid;
  gap: 2.5rem;
}

.ss-sizes-page .ss-content-intro {
  display: grid;
  gap: 0.75rem;
}

.ss-sizes-page .ss-content-section__title {
  margin: 0;
  font-size: clamp(1.5rem, 2.3vw, 1.875rem);
  font-weight: 700;
  color: var(--ss-text-inverse);
}

.ss-sizes-page .ss-content-intro p {
  margin: 0;
  font-size: 0.95rem;
  line-height: 1.6;
  color: var(--ss-text-soft);
}

.ss-spec-grid--compact {
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  padding: 1.75rem 1.5rem;
  gap: 1.5rem;
}

.ss-size-finder {
  padding: 2rem 1.75rem;
  border-radius: var(--ss-radius-2xl);
  border: 1px solid var(--ss-glass-border);
  background: radial-gradient(circle at top left, rgba(91, 165, 74, 0.18), rgba(15, 23, 42, 0.7));
  box-shadow: var(--ss-shadow-dark);
}

.ss-size-finder h2 {
  margin: 0 0 0.25rem;
  font-size: 1.5rem;
  font-weight: 700;
  color: var(--ss-text-inverse);
}

.ss-size-finder > p {
  margin: 0;
  font-size: 0.9rem;
  color: var(--ss-text-soft);
}

.ss-size-finder-step {
  margin-top: 1.75rem;
  display: grid;
  gap: 1.25rem;
}

.ss-size-finder-step h3 {
  margin: 0;
  font-size: 1.1rem;
  font-weight: 700;
  color: var(--ss-text-inverse);
}

.ss-size-finder-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(210px, 1fr));
  gap: 1rem;
}

.ss-size-finder-card {
  display: grid;
  align-content: flex-start;
  gap: 0.35rem;
  padding: 1.1rem 1.1rem;
  border-radius: var(--ss-radius-xl);
  border: 1px solid var(--ss-glass-border);
  background: rgba(15, 23, 42, 0.75);
  color: var(--ss-text-soft);
  text-align: left;
  cursor: pointer;
  transition: border-color 150ms ease, background 150ms ease, transform 150ms ease, box-shadow 150ms ease;
}

.ss-size-finder-card h4 {
  margin: 0;
  font-size: 1rem;
  font-weight: 700;
  color: var(--ss-text-inverse);
}

.ss-size-finder-card p {
  margin: 0;
  font-size: 0.85rem;
  line-height: 1.5;
}

.ss-size-finder-card:hover {
  border-color: rgba(248, 215, 73, 0.6);
  background: linear-gradient(135deg, rgba(91, 165, 74, 0.2), rgba(15, 23, 42, 0.85));
  transform: translateY(-1px);
  box-shadow: 0 20px 60px rgba(2, 6, 23, 0.4);
}

.ss-size-finder-result {
  padding: 1.5rem 1.25rem;
  border-radius: var(--ss-radius-2xl);
  border: 1px solid rgba(91, 165, 74, 0.45);
  background: linear-gradient(135deg, rgba(91, 165, 74, 0.16), rgba(15, 23, 42, 0.9));
}

.ss-size-finder-result h3 {
  margin: 0 0 0.75rem;
  font-size: 1.35rem;
  font-weight: 700;
}

.ss-size-finder-reason {
  margin: 0 0 0.75rem;
  font-size: 0.9rem;
  color: var(--ss-text-soft);
}

.ss-size-finder-sizes {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
  gap: 0.75rem;
  margin-bottom: 0.75rem;
}

.ss-size-card--inline {
  padding: 0.9rem 0.8rem;
  border-radius: var(--ss-radius-lg);
  border: 1px solid rgba(91, 165, 74, 0.6);
  background: rgba(22, 163, 74, 0.18);
  text-align: center;
}

.ss-size-card--inline strong {
  display: block;
  font-size: 1.2rem;
  color: var(--ss-accent-green);
}

.ss-size-card--inline span {
  display: block;
  margin-top: 0.1rem;
  font-size: 0.75rem;
  color: var(--ss-text-soft);
}

.ss-size-finder-details {
  margin: 0 0 0.5rem;
  padding-left: 1.1rem;
  font-size: 0.88rem;
  color: var(--ss-text-soft);
}

.ss-size-finder-details li + li {
  margin-top: 0.25rem;
}

.ss-size-tables {
  display: grid;
  gap: 1.25rem;
}

.ss-size-tables > h2 {
  margin: 0;
  font-size: clamp(1.35rem, 2vw, 1.6rem);
}

.ss-size-tables > p {
  margin: 0;
  font-size: 0.9rem;
  color: var(--ss-text-soft);
}

.ss-size-tabs {
  display: inline-flex;
  padding: 0.25rem;
  border-radius: 999px;
  background: rgba(15, 23, 42, 0.88);
  border: 1px solid rgba(148, 163, 184, 0.35);
}

.ss-size-tab {
  border: 0;
  background: transparent;
  color: var(--ss-text-soft);
  padding: 0.45rem 1.1rem;
  border-radius: 999px;
  font-size: 0.9rem;
  font-weight: 600;
  cursor: pointer;
  transition: background 150ms ease, color 150ms ease;
}

.ss-size-tab.is-active {
  background: rgba(91, 165, 74, 0.18);
  color: var(--ss-text-inverse);
}

.ss-size-tab-panel {
  margin-top: 1.5rem;
}

.ss-size-grid--cards {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: 1.25rem;
}

.ss-size-card {
  padding: 1.4rem 1.2rem;
  border-radius: var(--ss-radius-2xl);
  border: 1px solid var(--ss-glass-border);
  background: var(--ss-elevated-bg);
  box-shadow: var(--ss-elevated-shadow);
}

.ss-size-card h3 {
  margin: 0 0 0.1rem;
  font-size: 1.2rem;
  font-weight: 700;
}

.ss-size-label {
  display: inline-flex;
  margin-bottom: 0.5rem;
  font-size: 0.8rem;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: var(--ss-text-muted);
}

.ss-size-card hr {
  border: 0;
  border-top: 1px solid rgba(148, 163, 184, 0.35);
  margin: 0.4rem 0 0.7rem;
}

.ss-size-card p {
  margin: 0.1rem 0;
  font-size: 0.85rem;
  color: var(--ss-text-soft);
}

.ss-size-card-badge {
  margin-top: 0.6rem;
  display: inline-flex;
  align-items: center;
  padding: 0.4rem 0.75rem;
  border-radius: 999px;
  border: 1px solid rgba(91, 165, 74, 0.5);
  background: rgba(22, 163, 74, 0.16);
  font-size: 0.78rem;
  font-weight: 600;
  color: var(--ss-accent-green);
}

.ss-size-note {
  margin-top: 0.4rem;
  font-size: 0.8rem;
  font-style: italic;
  color: var(--ss-text-soft);
}

.ss-highlight {
  margin-top: 1rem;
}

.ss-highlight .ss-checklist {
  margin-top: 0.75rem;
}

.ss-highlight .ss-checklist li {
  font-size: 0.88rem;
  color: var(--ss-text-soft);
}

/* ============================================
   GRÖSSEN-SEITE (Figma Export, CMS-ready)
   Alle Selektoren gescoped unter #ss-sizes-page-root
   ============================================ */

#ss-sizes-page-root {
  color: var(--ss-text-soft);
}

#ss-sizes-page-root * {
  box-sizing: border-box;
}

/* Scoped typography reset (avoids prose defaults & browser margins) */
#ss-sizes-page-root h1,
#ss-sizes-page-root h2,
#ss-sizes-page-root h3,
#ss-sizes-page-root h4,
#ss-sizes-page-root p,
#ss-sizes-page-root ul,
#ss-sizes-page-root li,
#ss-sizes-page-root figure {
  margin: 0;
}

#ss-sizes-page-root ul {
  padding: 0;
}

#ss-sizes-page-root button {
  font: inherit;
  color: inherit;
}

#ss-sizes-page-root .ss-sizes-header {
  margin-bottom: 2.5rem;
  padding-bottom: 2rem;
  border-bottom: 1px solid rgba(148, 163, 184, 0.15);
}

#ss-sizes-page-root .ss-sizes-header h1 {
  margin-bottom: 1.5rem;
  font-size: clamp(1.875rem, 3vw, 2.25rem);
  line-height: 1.2;
  color: var(--ss-page-heading);
}

#ss-sizes-page-root .ss-sizes-header p {
  margin: 0;
  line-height: 1.75;
  color: var(--ss-text-soft);
}

#ss-sizes-page-root .ss-sizes-info-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  gap: 1rem;
  margin: 2rem 0;
  padding: 1.5rem;
  border-radius: var(--ss-radius-lg);
  background: var(--ss-glass);
  border: 1px solid var(--ss-glass-border);
}

#ss-sizes-page-root .ss-sizes-info-item {
  display: flex;
  align-items: flex-start;
  gap: 1rem;
}

#ss-sizes-page-root .ss-sizes-info-icon {
  flex-shrink: 0;
  width: 2.5rem;
  height: 2.5rem;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: var(--ss-radius-md);
  background: rgba(91, 165, 74, 0.12);
  border: 1px solid rgba(91, 165, 74, 0.25);
  color: var(--ss-accent-green);
}

#ss-sizes-page-root .ss-sizes-info-icon svg {
  width: 1.25rem;
  height: 1.25rem;
  stroke: currentColor;
  fill: none;
  stroke-width: 2;
  stroke-linecap: round;
  stroke-linejoin: round;
}

#ss-sizes-page-root .ss-sizes-info-content h4 {
  margin: 0 0 0.25rem;
  font-size: 0.9375rem;
  color: var(--ss-page-heading);
}

#ss-sizes-page-root .ss-sizes-info-content p {
  margin: 0;
  font-size: 0.8125rem;
  color: var(--ss-text-soft);
}

#ss-sizes-page-root .ss-sizes-finder {
  position: relative;
  padding: 2.5rem;
  border-radius: var(--ss-radius-2xl);
  background: var(--ss-glass);
  border: 1px solid var(--ss-glass-border);
  backdrop-filter: blur(24px);
  margin: 2rem 0;
}

@media (max-width: 768px) {
  #ss-sizes-page-root .ss-sizes-finder {
    padding: 1.5rem;
  }
}

#ss-sizes-page-root .ss-sizes-finder-header {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  margin-bottom: 1.5rem;
}

#ss-sizes-page-root .ss-sizes-finder-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 3rem;
  height: 3rem;
  border-radius: 50%;
  background: rgba(91, 165, 74, 0.15);
  border: 1px solid rgba(91, 165, 74, 0.3);
  color: var(--ss-accent-green);
}

#ss-sizes-page-root .ss-sizes-finder-icon svg {
  width: 1.5rem;
  height: 1.5rem;
  stroke: currentColor;
  fill: none;
  stroke-width: 2;
  stroke-linecap: round;
  stroke-linejoin: round;
}

#ss-sizes-page-root .ss-sizes-finder-title h2 {
  margin: 0;
  font-size: 1.5rem;
  color: var(--ss-page-heading);
}

#ss-sizes-page-root .ss-sizes-finder-title p {
  margin: 0;
  font-size: 0.875rem;
  color: var(--ss-text-soft);
}

#ss-sizes-page-root .ss-sizes-finder-step {
  opacity: 0;
  max-height: 0;
  overflow: hidden;
  transition: opacity 0.4s cubic-bezier(0.4, 0, 0.2, 1),
    max-height 0.4s cubic-bezier(0.4, 0, 0.2, 1);
}

#ss-sizes-page-root .ss-sizes-finder-step.active {
  opacity: 1;
  max-height: 2000px;
}

#ss-sizes-page-root .ss-sizes-finder-step h3 {
  margin: 0 0 1rem;
  font-size: 1.125rem;
  color: var(--ss-page-heading);
}

#ss-sizes-page-root .ss-sizes-finder-options {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  gap: 1rem;
  margin: 1.5rem 0;
}

#ss-sizes-page-root .ss-sizes-finder-option {
  position: relative;
  padding: 1.5rem;
  border-radius: var(--ss-radius-lg);
  border: 2px solid var(--ss-glass-border);
  background: var(--ss-glass);
  cursor: pointer;
  transition: all 0.3s ease;
  text-align: center;
}

#ss-sizes-page-root .ss-sizes-finder-option:hover {
  border-color: rgba(248, 215, 73, 0.5);
  transform: translateY(-2px);
}

#ss-sizes-page-root .ss-sizes-finder-option.selected {
  border-color: rgba(91, 165, 74, 0.8);
  background: linear-gradient(135deg, rgba(91, 165, 74, 0.15) 0%, var(--ss-glass) 100%);
}

#ss-sizes-page-root .ss-sizes-option-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 3.5rem;
  height: 3.5rem;
  margin-bottom: 1rem;
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.05);
  border: 1px solid rgba(148, 163, 184, 0.2);
  color: var(--ss-text-soft);
}

#ss-sizes-page-root .ss-sizes-option-icon svg {
  width: 1.75rem;
  height: 1.75rem;
  stroke: currentColor;
  fill: none;
  stroke-width: 2;
  stroke-linecap: round;
  stroke-linejoin: round;
}

#ss-sizes-page-root .ss-sizes-finder-option h4 {
  margin: 0 0 0.5rem;
  font-size: 1.125rem;
  color: var(--ss-page-heading);
}

#ss-sizes-page-root .ss-sizes-finder-option p {
  margin: 0;
  font-size: 0.875rem;
  color: var(--ss-text-soft);
}

#ss-sizes-page-root .ss-sizes-finder-nav {
  display: flex;
  gap: 1rem;
  margin-top: 2rem;
  padding-top: 2rem;
  border-top: 1px solid var(--ss-glass-border);
}

#ss-sizes-page-root .ss-sizes-btn-back {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.5rem;
  min-height: 44px;
  padding: 0 1rem;
  border: 1px solid var(--ss-glass-border);
  border-radius: var(--ss-radius-md);
  background: transparent;
  color: var(--ss-page-heading);
  font-weight: 600;
  font-size: 0.9375rem;
  cursor: pointer;
  transition: background 0.2s;
}

#ss-sizes-page-root .ss-sizes-btn-back:hover {
  background: rgba(255, 255, 255, 0.05);
}

#ss-sizes-page-root .ss-sizes-btn-back svg {
  width: 1rem;
  height: 1rem;
  stroke: currentColor;
  fill: none;
  stroke-width: 2;
  stroke-linecap: round;
  stroke-linejoin: round;
}

#ss-sizes-page-root .ss-sizes-finder-result {
  padding: 2rem;
  margin-top: 2rem;
  border-radius: var(--ss-radius-lg);
  background: linear-gradient(135deg, rgba(91, 165, 74, 0.15) 0%, var(--ss-glass) 100%);
  border: 1px solid rgba(91, 165, 74, 0.4);
}

#ss-sizes-page-root .ss-sizes-result-header {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  margin-bottom: 1.5rem;
}

#ss-sizes-page-root .ss-sizes-result-header h3 {
  margin: 0;
  font-size: 1.5rem;
  color: var(--ss-page-heading);
}

#ss-sizes-page-root .ss-sizes-result-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 2.5rem;
  height: 2.5rem;
  border-radius: 50%;
  background: rgba(91, 165, 74, 0.25);
  color: var(--ss-accent-green);
}

#ss-sizes-page-root .ss-sizes-result-icon svg {
  width: 1.25rem;
  height: 1.25rem;
  stroke: currentColor;
  fill: none;
  stroke-width: 2;
  stroke-linecap: round;
  stroke-linejoin: round;
}

#ss-sizes-page-root .ss-sizes-result-reason {
  margin-bottom: 1rem;
  font-size: 1rem;
  color: var(--ss-text-soft);
}

#ss-sizes-page-root .ss-sizes-result-sizes {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  gap: 1rem;
  margin: 1.5rem 0;
}

#ss-sizes-page-root .ss-sizes-recommended-size {
  padding: 1.25rem;
  border-radius: var(--ss-radius-md);
  background: rgba(91, 165, 74, 0.08);
  border: 1px solid rgba(91, 165, 74, 0.25);
  text-align: center;
}

#ss-sizes-page-root .ss-sizes-size-number {
  display: block;
  margin-bottom: 0.5rem;
  font-size: 1.75rem;
  font-weight: 700;
  color: var(--ss-accent-green);
}

#ss-sizes-page-root .ss-sizes-size-label {
  display: block;
  font-size: 0.875rem;
  color: var(--ss-text-soft);
}

#ss-sizes-page-root .ss-sizes-result-details {
  display: grid;
  gap: 0.75rem;
  margin: 1.5rem 0 0;
  padding: 0;
  list-style: none;
}

#ss-sizes-page-root .ss-sizes-result-details li {
  display: flex;
  align-items: flex-start;
  gap: 0.75rem;
  color: var(--ss-text-soft);
  line-height: 1.6;
}

#ss-sizes-page-root .ss-sizes-result-details li::before {
  content: "✓";
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 1.25rem;
  height: 1.25rem;
  flex-shrink: 0;
  margin-top: 0.125rem;
  border-radius: 50%;
  background: rgba(34, 197, 94, 0.2);
  color: var(--ss-accent-green);
  font-weight: 700;
  font-size: 0.875rem;
}

#ss-sizes-page-root .ss-sizes-tables {
  margin-top: 3rem;
}

#ss-sizes-page-root .ss-sizes-tables h2 {
  margin-bottom: 0.5rem;
  font-size: clamp(1.5rem, 2.5vw, 1.875rem);
  color: var(--ss-page-heading);
}

#ss-sizes-page-root .ss-sizes-tables > p {
  margin-bottom: 1.5rem;
  color: var(--ss-text-soft);
}

#ss-sizes-page-root .ss-sizes-tabs {
  display: flex;
  gap: 0.5rem;
  margin-bottom: 2rem;
  padding: 0.5rem;
  border-radius: var(--ss-radius-lg);
  background: var(--ss-glass);
  border: 1px solid var(--ss-glass-border);
}

#ss-sizes-page-root .ss-sizes-tab {
  flex: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 0.5rem;
  padding: 0.875rem 1.5rem;
  border-radius: var(--ss-radius-md);
  border: 1px solid transparent;
  background: transparent;
  font-size: 0.9375rem;
  font-weight: 600;
  color: var(--ss-text-soft);
  cursor: pointer;
  transition: all 0.3s ease;
}

#ss-sizes-page-root .ss-sizes-tab svg {
  width: 1rem;
  height: 1rem;
  stroke: currentColor;
  fill: none;
  stroke-width: 2;
  stroke-linecap: round;
  stroke-linejoin: round;
}

#ss-sizes-page-root .ss-sizes-tab:hover {
  color: var(--ss-page-heading);
  background: rgba(255, 255, 255, 0.05);
}

#ss-sizes-page-root .ss-sizes-tab.active {
  background: rgba(91, 165, 74, 0.12);
  color: var(--ss-page-heading);
  border: 1px solid rgba(91, 165, 74, 0.3);
}

#ss-sizes-page-root .ss-sizes-tab-panel {
  display: none;
}

#ss-sizes-page-root .ss-sizes-tab-panel.active {
  display: block;
  animation: ss-sizes-fade-in 0.4s ease;
}

@keyframes ss-sizes-fade-in {
  from {
    opacity: 0;
    transform: translateY(10px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

#ss-sizes-page-root .ss-sizes-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  gap: 1.5rem;
  margin: 2rem 0;
}

@media (min-width: 768px) {
  #ss-sizes-page-root .ss-sizes-grid {
    grid-template-columns: repeat(3, 1fr);
  }
}

#ss-sizes-page-root .ss-sizes-card {
  position: relative;
  padding: 1.75rem;
  border-radius: var(--ss-radius-2xl);
  border: 1px solid var(--ss-glass-border);
  background: var(--ss-glass);
  backdrop-filter: blur(24px);
  cursor: pointer;
  overflow: hidden;
  transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
}

#ss-sizes-page-root .ss-sizes-card::before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  height: 4px;
  background: linear-gradient(90deg, var(--ss-yellow) 0%, var(--ss-green) 100%);
  opacity: 0;
  transition: opacity 0.3s ease;
}

#ss-sizes-page-root .ss-sizes-card:hover::before,
#ss-sizes-page-root .ss-sizes-card.active::before {
  opacity: 1;
}

#ss-sizes-page-root .ss-sizes-card:hover {
  border-color: rgba(248, 215, 73, 0.4);
  box-shadow: var(--ss-shadow-dark), 0 0 20px rgba(248, 215, 73, 0.15);
  transform: translateY(-2px);
}

#ss-sizes-page-root .ss-sizes-card.active {
  border-color: rgba(91, 165, 74, 0.6);
  background: linear-gradient(135deg, rgba(91, 165, 74, 0.08) 0%, var(--ss-glass) 100%);
}

#ss-sizes-page-root .ss-sizes-card-number {
  display: inline-block;
  margin-bottom: 0.75rem;
  padding: 0.5rem 1rem;
  border-radius: var(--ss-radius-md);
  background: rgba(255, 255, 255, 0.03);
  border: 2px solid rgba(148, 163, 184, 0.3);
  font-size: 1.5rem;
  font-weight: 700;
  color: var(--ss-page-heading);
}

#ss-sizes-page-root .ss-sizes-card h3 {
  margin: 0 0 0.5rem;
  font-size: 1.125rem;
  color: var(--ss-page-heading);
}

#ss-sizes-page-root .ss-sizes-card-details {
  margin-top: 1rem;
  padding-top: 1rem;
  border-top: 1px solid var(--ss-glass-border);
}

#ss-sizes-page-root .ss-sizes-detail-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 0.5rem 0;
  font-size: 0.875rem;
  color: var(--ss-text-soft);
}

#ss-sizes-page-root .ss-sizes-detail-row strong {
  color: var(--ss-page-heading);
}

#ss-sizes-page-root .ss-sizes-card-badge {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  padding: 0.5rem 1rem;
  margin-top: 1rem;
  border-radius: var(--ss-radius-md);
  background: rgba(91, 165, 74, 0.15);
  border: 1px solid rgba(91, 165, 74, 0.3);
  font-size: 0.8125rem;
  font-weight: 600;
  color: var(--ss-accent-green);
}

#ss-sizes-page-root .ss-sizes-card-badge svg {
  width: 1rem;
  height: 1rem;
  stroke: currentColor;
  fill: none;
  stroke-width: 2;
  stroke-linecap: round;
  stroke-linejoin: round;
}

#ss-sizes-page-root .ss-sizes-card-note {
  margin-top: 1rem;
  font-size: 0.875rem;
  color: var(--ss-text-soft);
  font-style: italic;
}

#ss-sizes-page-root .ss-sizes-note-box {
  padding: 1.75rem;
  margin-bottom: 1.5rem;
  border-radius: var(--ss-radius-2xl);
  background: var(--ss-glass);
  border: 1px solid var(--ss-glass-border);
}

#ss-sizes-page-root .ss-sizes-note-box p {
  margin: 0;
  color: var(--ss-text-soft);
}

#ss-sizes-page-root .ss-sizes-note-box strong {
  color: var(--ss-page-heading);
}

#ss-sizes-page-root .ss-sizes-highlight {
  padding: 2rem;
  border-radius: var(--ss-radius-lg);
  background: rgba(91, 165, 74, 0.08);
  border: 1px solid rgba(91, 165, 74, 0.25);
  margin: 3rem 0;
}

#ss-sizes-page-root .ss-sizes-highlight h3 {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  margin: 0 0 1rem;
  color: var(--ss-page-heading);
}

#ss-sizes-page-root .ss-sizes-highlight h3 svg {
  width: 1.5rem;
  height: 1.5rem;
  stroke: currentColor;
  fill: none;
  stroke-width: 2;
  stroke-linecap: round;
  stroke-linejoin: round;
}

#ss-sizes-page-root .ss-sizes-highlight strong {
  color: var(--ss-accent-green);
}

#ss-sizes-page-root .ss-sizes-section-title {
  margin-top: 3rem;
  font-size: 1.25rem;
  color: var(--ss-page-heading);
}

#ss-sizes-page-root .ss-checklist {
  display: grid;
  gap: 0.75rem;
  margin: 1rem 0;
  padding: 0;
  list-style: none;
}

#ss-sizes-page-root .ss-checklist li {
  display: flex;
  align-items: flex-start;
  gap: 0.75rem;
  color: var(--ss-text-soft);
  line-height: 1.6;
}

#ss-sizes-page-root .ss-checklist li::before {
  content: "✓";
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 1.25rem;
  height: 1.25rem;
  flex-shrink: 0;
  margin-top: 0.125rem;
  border-radius: 50%;
  background: rgba(34, 197, 94, 0.2);
  color: var(--ss-accent-green);
  font-weight: 700;
  font-size: 0.875rem;
}

#ss-sizes-page-root .ss-cta-box {
  margin-top: 2.5rem;
  padding: 1.75rem;
  border-radius: var(--ss-radius-lg);
  background: rgba(248, 215, 73, 0.08);
  border: 1px solid rgba(248, 215, 73, 0.35);
}

#ss-sizes-page-root .ss-cta-box p {
  margin: 0 0 1rem;
}

#ss-sizes-page-root .ss-cta-box strong {
  color: var(--ss-accent-strong);
}

#ss-sizes-page-root .ss-btn-group {
  display: flex;
  flex-wrap: wrap;
  gap: 1rem;
}

@media (max-width: 640px) {
  #ss-sizes-page-root .ss-btn-group {
    flex-direction: column;
  }

  #ss-sizes-page-root .ss-btn-group .ss-btn {
    width: 100%;
  }
}

#ss-sizes-page-root .ss-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.625rem;
  min-height: 52px;
  padding: 0 1.25rem;
  border: none;
  border-radius: var(--ss-radius-md);
  font-weight: 700;
  text-decoration: none;
  transition: all 0.18s;
  cursor: pointer;
}

#ss-sizes-page-root .ss-btn--primary {
  background: var(--ss-green);
  color: var(--ss-text-inverse);
  box-shadow: var(--ss-shadow-green);
}

#ss-sizes-page-root .ss-btn--primary:hover {
  background: var(--ss-green-hover);
  transform: translateY(-1px);
}

#ss-sizes-page-root .ss-btn--secondary {
  background: linear-gradient(90deg, var(--ss-yellow) 0%, #fde047 100%);
  color: var(--ss-text-primary);
  box-shadow: var(--ss-shadow-yellow);
}

#ss-sizes-page-root .ss-btn--secondary:hover {
  background: linear-gradient(90deg, var(--ss-yellow-hover) 0%, #facc15 100%);
  transform: translateY(-1px);
}


.ss-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.625rem;
  min-height: 52px;
  padding: 0 1.25rem;
  border: 1px solid transparent;
  border-radius: var(--ss-radius-md);
  text-decoration: none;
  font-weight: 700;
  transition: transform 180ms ease, background-color 180ms ease, border-color 180ms ease, box-shadow 180ms ease, color 180ms ease;
}

.ss-btn:hover {
  transform: translateY(-1px);
}

.ss-btn--primary {
  background: linear-gradient(90deg, var(--ss-yellow) 0%, #fde047 100%);
  color: var(--ss-text-primary);
  box-shadow: var(--ss-shadow-yellow);
}

.ss-btn--primary:hover {
  background: linear-gradient(90deg, var(--ss-yellow-hover) 0%, #facc15 100%);
}

.ss-btn--secondary {
  background: rgba(30, 41, 59, 0.5);
  color: var(--ss-text-inverse);
  border-color: rgba(148, 163, 184, 0.22);
  backdrop-filter: blur(16px);
}

.ss-btn--secondary:hover {
  background: rgba(30, 41, 59, 0.75);
}

.ss-btn--green {
  background: var(--ss-green);
  color: var(--ss-text-inverse);
  box-shadow: var(--ss-shadow-green);
}

.ss-btn--green:hover {
  background: var(--ss-green-hover);
}

.ss-btn--blue {
  background: var(--ss-blue);
  color: var(--ss-text-inverse);
  box-shadow: 0 18px 44px rgba(37, 99, 235, 0.25);
}

.ss-btn--blue:hover {
  background: var(--ss-blue-hover);
}

/* ----------------------------------------------------------------------- *
 * Light-theme overrides — `.ss-btn--secondary` is a "ghost" button whose
 * default styling assumes a dark page background (translucent dark slate
 * surface, near-white label). On the 2026 (light) theme that surface has
 * to invert: a near-white pill with brand-navy label so the button still
 * reads as a recessive secondary action and not a dark blob. We scope the
 * override on `[data-theme=...]` (page-level light theme) and on
 * `.ss-content-light` (per-section light band on a dark page) so both
 * placements get the correct treatment.
 * ----------------------------------------------------------------------- */
[data-theme='schlauesocke-2026'] .ss-btn--secondary,
.ss-content-light .ss-btn--secondary {
  background: rgba(248, 250, 252, 0.95);
  color: var(--ss-page-heading);
  border-color: rgba(15, 23, 42, 0.15);
}

[data-theme='schlauesocke-2026'] .ss-btn--secondary:hover,
.ss-content-light .ss-btn--secondary:hover {
  background: rgba(241, 245, 249, 1);
}

/* ----------------------------------------------------------------------- *
 * Form status pills — replace per-component `border-red-400/30 bg-red-500/10`
 * etc. with a single themable surface. Default (dark) uses translucent
 * tints; light-theme override paints a high-contrast off-white card with
 * coloured border + text so success/error reads on white pages too.
 * ----------------------------------------------------------------------- */
.ss-form-status {
  border-radius: var(--ss-radius-md);
}

.ss-form-status--error {
  background: rgba(239, 68, 68, 0.1);
  border-color: rgba(248, 113, 113, 0.3);
  color: rgb(252 165 165);
}

.ss-form-status--success {
  background: rgba(16, 185, 129, 0.1);
  border-color: rgba(52, 211, 153, 0.3);
  color: rgb(110 231 183);
}

[data-theme='schlauesocke-2026'] .ss-form-status--error {
  background: rgba(254, 226, 226, 1);
  border-color: rgba(220, 38, 38, 0.5);
  color: rgb(153 27 27);
}

[data-theme='schlauesocke-2026'] .ss-form-status--success {
  background: rgba(220, 252, 231, 1);
  border-color: rgba(22, 163, 74, 0.5);
  color: rgb(22 101 52);
}

.ss-glass-card {
  position: relative;
  overflow: hidden;
  border: 1px solid var(--ss-glass-border);
  border-radius: var(--ss-radius-2xl);
  background: var(--ss-glass);
  backdrop-filter: blur(24px);
  box-shadow: var(--ss-shadow-dark);
}

.ss-light-section {
  position: relative;
  border-top: 1px solid var(--ss-band-light-border);
  border-bottom: 1px solid var(--ss-band-light-border);
  background: var(--ss-band-light-bg);
  /* Body setzt color: white (Dark-Page-Default). Ohne diesen Fallback erbt jeglicher
   * Inhalt im hellen Band weiß und wird unsichtbar, wenn er nicht zufällig einer
   * der weiter unten überschriebenen Klassen (.ss-prose-section p, .ss-card-copy …) entspricht. */
  color: var(--ss-text-primary);
}

.ss-theme-dark {
  position: relative;
  /* When a section is explicitly marked as a dark band (e.g. hero on a
   * light-themed page), every theme-aware token inside the wrapper has to
   * resolve to its inverse counterpart so prose, checklists, cards and
   * accents read correctly on the dark backdrop. We rebind the page-* and
   * surface tokens locally so utilities like `text-ss-page-heading`,
   * `bg-ss-glass`, `border-ss-glass-border` etc. behave as if the page
   * itself were on the dark `schlauesocke` palette. */
  --ss-page-body: var(--ss-text-inverse);
  --ss-page-heading: var(--ss-text-inverse);
  --ss-page-body-soft: var(--ss-text-inverse-soft);
  --ss-page-body-muted: var(--ss-text-inverse-muted);
  --ss-page-body-prose: var(--ss-text-inverse-prose);
  --ss-glass: rgba(255, 255, 255, 0.05);
  --ss-glass-strong: rgba(255, 255, 255, 0.1);
  --ss-glass-border: rgba(255, 255, 255, 0.18);
}

.ss-theme-light {
  position: relative;
  border-top: 1px solid var(--ss-band-light-border);
  border-bottom: 1px solid var(--ss-band-light-border);
  background: var(--ss-band-light-bg);
  color: var(--ss-text-primary);
}

/*
 * Viewport-Breakout nur für explizit markierte Bänder (contentBand / data-section-key).
 * Nicht den gesamten .ss-content-shell auf 100vw setzen — sonst werden alle Blöcke (Trustpilot, Grids …) breit.
 * calc(50% - 50vw): 50% bezieht sich auf die Breite des normal begrenzten Inhaltsbereichs (Container-Spur).
 */
.ss-page .ss-content-band.ss-content-band--full-bleed-white {
  width: 100vw;
  max-width: none;
  margin-left: calc(50% - 50vw);
  margin-right: calc(50% - 50vw);
  box-sizing: border-box;
  background: var(--ss-surface-white);
  /* War rgba(15,23,42,0.06) — kaum sichtbarer Trennstrich. Brand-Border #ededed. */
  border-top: 1px solid var(--ss-band-light-border);
  border-bottom: 1px solid var(--ss-band-light-border);
  /* Body-Default ist weiß; im White-Band wieder auf brand-primary setzen. */
  color: var(--ss-text-primary);
}

.ss-page .ss-content-band--full-bleed-white > .ss-content-band__segment {
  /* Solid white: transparent lässt den Seitenverlauf durch und „Glass“ + backdrop-filter wirkt grau. */
  background: var(--ss-surface-white);
  border-top-color: transparent;
  border-bottom-color: transparent;
}

.ss-page .ss-content-band--full-bleed-white .ss-content-band__inset {
  background: var(--ss-surface-white);
}

/* imageSlider mit Galerie-Panel: weißes Band über volle Viewport-Breite, Inhalt wie üblich in .ss-container */
.ss-page .ss-slider-fullbleed-white {
  width: 100vw;
  max-width: none;
  margin-left: calc(50% - 50vw);
  margin-right: calc(50% - 50vw);
  box-sizing: border-box;
  background: var(--ss-surface-white);
  border-top: 1px solid var(--ss-band-light-border);
  border-bottom: 1px solid var(--ss-band-light-border);
  color: var(--ss-text-primary);
}

/*
 * Weißes Vollbreiten-Band (contentBand): Segment kann noch ss-theme-dark sein — Markdown/Glass
 * im Inset trotzdem dunkle Schrift auf hellem Kartengrund (ohne Band-Theme zu wechseln).
 * backdrop-filter entfernen: sonst bleicht der dunkle Seitenhintergrund durch die Scheibe.
 */
.ss-page .ss-content-band--full-bleed-white .ss-content-band__inset .ss-glass-card {
  border-color: rgba(15, 23, 42, 0.1);
  background: var(--ss-surface-white);
  backdrop-filter: none;
  -webkit-backdrop-filter: none;
  box-shadow: 0 2px 4px rgba(15, 23, 42, 0.04), 0 8px 24px rgba(15, 23, 42, 0.06);
}

.ss-page .ss-content-band--full-bleed-white .ss-content-band__inset .ss-glass-card.ss-prose-section {
  color: var(--ss-text-secondary);
}

/* Slider / Trustpilot u. a.: helle Karte ohne ss-glass-card — ebenfalls kein Dark-Band-Backdrop. */
.ss-page .ss-content-band--full-bleed-white .ss-content-band__inset .ss-light-card {
  background: var(--ss-surface-white);
  border-color: rgba(15, 23, 42, 0.1);
  backdrop-filter: none;
  -webkit-backdrop-filter: none;
  box-shadow: 0 2px 4px rgba(15, 23, 42, 0.04), 0 8px 24px rgba(15, 23, 42, 0.06);
}

.ss-page .ss-content-band--full-bleed-white .ss-content-band__inset .ss-prose-section h2,
.ss-page .ss-content-band--full-bleed-white .ss-content-band__inset .ss-prose-section h3 {
  color: var(--ss-text-primary);
}

.ss-page .ss-content-band--full-bleed-white .ss-content-band__inset .ss-prose-section p,
.ss-page .ss-content-band--full-bleed-white .ss-content-band__inset .ss-prose-section li {
  color: var(--ss-text-secondary);
}

.ss-page .ss-content-band--full-bleed-white .ss-content-band__inset .ss-prose-section a {
  /* War amber-700 (#b45309 ≈ 4.85:1 auf #fff — gerade so AA, off-brand).
   * Brand-Dark-Blue (#1f2340 ≈ 16.5:1) trifft Schlauesocke-Farbschema und ist
   * deutlich besser lesbar; Unterstreichung in Brand-Yellow als Akzent. */
  color: var(--ss-dark-blue);
  text-decoration-color: var(--ss-yellow);
  text-decoration-thickness: 2px;
  text-underline-offset: 3px;
}

.ss-page .ss-content-band--full-bleed-white .ss-content-band__inset .ss-prose-section a:hover {
  color: var(--ss-dark-blue);
  text-decoration-color: var(--ss-yellow-hover);
  background-color: rgba(248, 215, 73, 0.18);
}

/* Toolkit-HTML: innere Sektionen nicht nochmal einfärben */
.ss-page .ss-content-band--full-bleed-white .ss-section.ss-light-section,
.ss-page .ss-content-band--full-bleed-white .ss-section.ss-theme-light {
  background: transparent;
  border-top-color: transparent;
  border-bottom-color: transparent;
}

/* Legacy: reines HTML mit data-section-key (ohne Element-editor contentBand) */
.ss-theme-light:has(.ss-section[data-section-key='slider']),
.ss-theme-light:has(.ss-section[data-section-key='sock_lengths']),
.ss-theme-light:has(.ss-section[data-section-key='verpackung']) {
  background: transparent;
  border-top-color: transparent;
  border-bottom-color: transparent;
}

/* Legacy rawHtml: wie contentBand, nur per data-section-key */
.ss-page .ss-section[data-section-key='slider'],
.ss-page .ss-section[data-section-key='sock_lengths'],
.ss-page .ss-section[data-section-key='verpackung'] {
  width: 100vw;
  max-width: none;
  margin-left: calc(50% - 50vw);
  margin-right: calc(50% - 50vw);
  box-sizing: border-box;
  background: var(--ss-surface-white);
  border-top-color: rgba(15, 23, 42, 0.06);
  border-bottom-color: rgba(15, 23, 42, 0.06);
}

/* Zwei Legacy-Bands direkt hintereinander: space-y-6-Lücke schließen, Doppel-Rand vermeiden */
.ss-blocks-stack
  > .ss-theme-light:has(.ss-section[data-section-key='sock_lengths'])
  + .ss-theme-light:has(.ss-section[data-section-key='verpackung']) {
  margin-top: -1.5rem;
}

.ss-blocks-stack
  > .ss-theme-light:has(.ss-section[data-section-key='sock_lengths'])
  + .ss-theme-light:has(.ss-section[data-section-key='verpackung'])
  .ss-section[data-section-key='verpackung'] {
  border-top: none;
}

.ss-theme-mixed {
  position: relative;
  border-top: 1px solid var(--ss-band-light-border);
  border-bottom: 1px solid var(--ss-band-light-border);
  background:
    linear-gradient(180deg, rgba(248, 250, 252, 0.95) 0%, rgba(241, 245, 249, 0.95) 100%),
    linear-gradient(135deg, rgba(248, 215, 73, 0.06) 0%, rgba(91, 165, 74, 0.04) 100%);
  color: var(--ss-text-primary);
}

.ss-light-section .ss-home-section-title,
.ss-light-section .ss-section-title,
.ss-light-section .ss-card-title,
.ss-light-section .ss-home-title,
.ss-light-section .ss-prose-section h2,
.ss-light-section .ss-prose-section h3,
.ss-theme-light .ss-home-section-title,
.ss-theme-light .ss-section-title,
.ss-theme-light .ss-card-title,
.ss-theme-light .ss-home-title,
.ss-theme-light .ss-prose-section h2,
.ss-theme-light .ss-prose-section h3,
.ss-theme-mixed .ss-home-section-title,
.ss-theme-mixed .ss-section-title,
.ss-theme-mixed .ss-card-title,
.ss-theme-mixed .ss-home-title,
.ss-theme-mixed .ss-prose-section h2,
.ss-theme-mixed .ss-prose-section h3 {
  color: var(--ss-text-primary);
}

.ss-light-section .ss-home-copy,
.ss-light-section .ss-section-copy,
.ss-light-section .ss-card-copy,
.ss-light-section .ss-prose-section p,
.ss-light-section .ss-prose-section li,
.ss-theme-light .ss-home-copy,
.ss-theme-light .ss-section-copy,
.ss-theme-light .ss-card-copy,
.ss-theme-light .ss-prose-section p,
.ss-theme-light .ss-prose-section li,
.ss-theme-mixed .ss-home-copy,
.ss-theme-mixed .ss-section-copy,
.ss-theme-mixed .ss-card-copy,
.ss-theme-mixed .ss-prose-section p,
.ss-theme-mixed .ss-prose-section li {
  color: var(--ss-text-secondary);
}

.ss-light-card {
  position: relative;
  overflow: hidden;
  /* War rgba(23,23,23,0.08) — auf #fff praktisch unsichtbar.
   * Brand-aligned (#ededed) macht Karten klar abgegrenzt ohne hart zu wirken. */
  border: 1px solid var(--ss-band-light-card-border);
  border-radius: var(--ss-radius-2xl);
  background: var(--ss-surface-white);
  /* Schlankerer, weicherer Schatten — vorher dreischichtig + ziemlich dunkel,
   * was auf dem hellen Band visuell schwer wirkte. */
  box-shadow: 0 1px 2px rgba(31, 35, 64, 0.04), 0 10px 28px rgba(31, 35, 64, 0.06);
}

.ss-light-card .ss-card-title,
.ss-light-card .ss-home-section-title,
.ss-light-card .ss-home-title {
  color: var(--ss-text-primary);
}

.ss-light-card .ss-card-copy,
.ss-light-card .ss-home-copy {
  color: var(--ss-text-secondary);
}

/* Helle Landing-Bänder: Prose-Karten + Einleitung unter Sektionstitel */
.ss-light-section article.ss-light-card.ss-prose-section,
.ss-theme-light article.ss-light-card.ss-prose-section {
  padding-top: 3rem;
}

/*
 * Abstand Kartenzeile → Fließtext-Karte (Sockenlängen / Verpackung): Außenabstand am direkten Kind
 * von .ss-container (.ss-tab-grid), nicht Innen-padding der article-Karte (wirkt zuverlässiger).
 */
.ss-page .ss-section[data-section-key='sock_lengths'] .ss-container > .ss-tab-grid,
.ss-page .ss-section[data-section-key='verpackung'] .ss-container > .ss-tab-grid {
  margin-bottom: 30px;
}

.ss-home-copy[data-section-attr='sectionCopy'] {
  padding-bottom: 20px;
}

/* B2B: Auf dunklem Hintergrund keine weißen Karten – elevated dark surface (Tailwind Dark-Mode-Praxis) */
.ss-band--dark .ss-light-card {
  background: var(--ss-elevated-bg);
  border-color: var(--ss-elevated-border);
  box-shadow: var(--ss-elevated-shadow);
  backdrop-filter: blur(20px);
}

.ss-band--dark .ss-light-card .ss-card-title,
.ss-band--dark .ss-light-card .ss-home-section-title,
.ss-band--dark .ss-light-card .ss-home-title {
  color: var(--ss-text-inverse);
}

.ss-band--dark .ss-light-card .ss-card-copy,
.ss-band--dark .ss-light-card .ss-home-copy {
  color: var(--ss-text-soft);
}

/* ----------------------------------------------------------------------------
 * Schlauesocke Light Theme — Tailwind utility remap
 *
 * CMS authors and BlockElement components emit raw Tailwind color utilities
 * (gray/slate, indigo, amber, emerald, green, white). When the surrounding
 * element is set to a light variant in the editor (.ss-theme-light /
 * .ss-light-section / .ss-theme-mixed) or rendered inside a full-bleed white
 * band (.ss-content-band--full-bleed-white), we remap those utilities to the
 * Schlauesocke brand palette so the visual language stays consistent
 * regardless of the original Tailwind class.
 *
 * The mapping mirrors the standards spec (.ss-public-theme): white/gray/slate
 * → soft brand surfaces, indigo → brand yellow + dark-blue, amber → brand
 * alert bg + dark-blue, emerald/green → brand green.
 * ------------------------------------------------------------------------- */

/* Backgrounds: white / soft / muted ---------------------------------------- */
:is(.ss-theme-light, .ss-light-section, .ss-theme-mixed, .ss-content-band--full-bleed-white)
  :is(.bg-white, .bg-white\/95, .bg-white\/70) {
  background-color: var(--ss-surface-white);
}

:is(.ss-theme-light, .ss-light-section, .ss-theme-mixed, .ss-content-band--full-bleed-white)
  :is(
    .bg-\[\#f8fafc\],
    .bg-\[\#f8f9fc\],
    .bg-gray-50,
    .bg-gray-50\/70,
    .bg-slate-50,
    .from-slate-50,
    .to-slate-100
  ) {
  background-color: var(--ss-band-light-soft-bg);
}

:is(.ss-theme-light, .ss-light-section, .ss-theme-mixed, .ss-content-band--full-bleed-white)
  :is(.bg-gray-100, .bg-gray-200, .bg-slate-100, .bg-gray-50\/90) {
  background-color: var(--ss-band-light-muted-bg);
}

/* Borders: gray / slate / dashed → brand border --------------------------- */
:is(.ss-theme-light, .ss-light-section, .ss-theme-mixed, .ss-content-band--full-bleed-white)
  :is(
    .border-gray-100,
    .border-gray-200,
    .border-gray-200\/80,
    .border-gray-300,
    .border-slate-100,
    .border-slate-200,
    .border-dashed
  ) {
  border-color: var(--ss-border);
}

/* Text: primary / secondary (only the lower-contrast Tailwind grays;
 * slate-700/600/500 stay as-is — they already have good contrast on white) - */
:is(.ss-theme-light, .ss-light-section, .ss-theme-mixed, .ss-content-band--full-bleed-white)
  :is(.text-gray-950, .text-gray-900, .text-gray-800, .text-slate-900) {
  color: var(--ss-text-primary);
}

:is(.ss-theme-light, .ss-light-section, .ss-theme-mixed, .ss-content-band--full-bleed-white)
  :is(
    .text-gray-700,
    .text-gray-600,
    .text-gray-500,
    .text-gray-400,
    .text-slate-400
  ) {
  color: var(--ss-text-secondary);
}

/* Indigo / amber CTA buttons → brand yellow ------------------------------- */
:is(.ss-theme-light, .ss-light-section, .ss-theme-mixed, .ss-content-band--full-bleed-white)
  :is(.bg-indigo-600, .bg-indigo-700, .bg-amber-600) {
  background-color: var(--ss-yellow);
  color: var(--ss-text-primary);
}

:is(.ss-theme-light, .ss-light-section, .ss-theme-mixed, .ss-content-band--full-bleed-white)
  :is(
    .hover\:bg-indigo-700:hover,
    .hover\:bg-indigo-800:hover,
    .hover\:bg-amber-700:hover
  ) {
  background-color: var(--ss-yellow-hover);
  color: var(--ss-text-primary);
}

/* Indigo soft surfaces → brand alert bg ---------------------------------- */
:is(.ss-theme-light, .ss-light-section, .ss-theme-mixed, .ss-content-band--full-bleed-white)
  :is(
    .bg-indigo-50,
    .bg-indigo-50\/40,
    .bg-indigo-50\/60,
    .bg-indigo-50\/70,
    .bg-indigo-50\/80,
    .bg-indigo-100,
    .hover\:bg-indigo-50:hover,
    .hover\:bg-indigo-100:hover
  ) {
  background-color: var(--ss-alert-bg);
}

/* Indigo text → brand dark-blue ------------------------------------------ */
:is(.ss-theme-light, .ss-light-section, .ss-theme-mixed, .ss-content-band--full-bleed-white)
  :is(
    .text-indigo-500,
    .text-indigo-600,
    .text-indigo-700,
    .text-indigo-800,
    .text-indigo-900,
    .text-indigo-950,
    .text-indigo-900\/80
  ) {
  color: var(--ss-dark-blue);
}

:is(.ss-theme-light, .ss-light-section, .ss-theme-mixed, .ss-content-band--full-bleed-white)
  :is(
    .border-indigo-100,
    .border-indigo-200,
    .border-indigo-300,
    .border-indigo-400
  ) {
  border-color: var(--ss-yellow);
}

/* Emerald / green → brand green ------------------------------------------ */
:is(.ss-theme-light, .ss-light-section, .ss-theme-mixed, .ss-content-band--full-bleed-white)
  :is(
    .bg-emerald-50,
    .bg-emerald-50\/60,
    .bg-emerald-50\/70,
    .bg-emerald-100,
    .bg-green-50
  ) {
  background-color: var(--ss-alert-bg-soft);
}

:is(.ss-theme-light, .ss-light-section, .ss-theme-mixed, .ss-content-band--full-bleed-white)
  :is(
    .text-emerald-500,
    .text-emerald-600,
    .text-emerald-700,
    .text-emerald-800,
    .text-emerald-950,
    .text-green-800,
    .text-green-900,
    .text-green-950
  ) {
  color: var(--ss-green);
}

:is(.ss-theme-light, .ss-light-section, .ss-theme-mixed, .ss-content-band--full-bleed-white)
  :is(.border-emerald-100, .border-emerald-200, .border-green-200) {
  border-color: rgba(91, 165, 74, 0.35);
}

/* Amber → brand alert bg / dark-blue / yellow ---------------------------- */
:is(.ss-theme-light, .ss-light-section, .ss-theme-mixed, .ss-content-band--full-bleed-white)
  :is(.bg-amber-50, .bg-amber-100, .bg-amber-100\/80) {
  background-color: var(--ss-alert-bg);
}

:is(.ss-theme-light, .ss-light-section, .ss-theme-mixed, .ss-content-band--full-bleed-white)
  :is(
    .text-amber-500,
    .text-amber-600,
    .text-amber-700,
    .text-amber-800,
    .text-amber-900,
    .text-amber-950
  ) {
  color: var(--ss-dark-blue);
}

:is(.ss-theme-light, .ss-light-section, .ss-theme-mixed, .ss-content-band--full-bleed-white)
  :is(.border-amber-200, .border-amber-300) {
  border-color: var(--ss-yellow);
}

/* Focus ring remap (indigo → brand green, matches --ring in the spec). */
:is(.ss-theme-light, .ss-light-section, .ss-theme-mixed, .ss-content-band--full-bleed-white)
  :is(
    .focus\:border-indigo-500:focus,
    .focus\:ring-indigo-500:focus,
    .focus-visible\:ring-indigo-500:focus-visible,
    .focus-visible\:outline-indigo-500:focus-visible
  ) {
  border-color: var(--ss-green);
  --tw-ring-color: var(--ss-green);
  outline-color: var(--ss-green);
}

/* Default link color in light wrappers — outside of .ss-prose-section, which
 * already has its own brand link rule above. Anchors that don't sit inside
 * a prose article still need a readable, brand-aligned default.
 *
 * Buttons (.ss-btn, .ss-btn--primary, .ss-cta-*) are excluded so their own
 * color tokens (yellow CTA on light, white on green/blue) are preserved. */
:is(.ss-theme-light, .ss-light-section, .ss-theme-mixed, .ss-content-band--full-bleed-white)
  a:not(.ss-btn):not([class*='ss-btn-']):not([class*='ss-cta']) {
  color: var(--ss-dark-blue);
}

:is(.ss-theme-light, .ss-light-section, .ss-theme-mixed, .ss-content-band--full-bleed-white)
  a:not(.ss-btn):not([class*='ss-btn-']):not([class*='ss-cta']):hover {
  color: var(--ss-dark-blue);
  text-decoration-color: var(--ss-yellow-hover);
}

/* ----------------------------------------------------------------------------
 * Light theme — element-scoped custom CSS override
 *
 * BlocksRenderer injects each element's custom CSS as an inline <style> tag
 * inside the wrapping <section data-element-id="…" class="ss-theme-light">.
 * Many existing elements were authored against the dark page background and
 * hard-code `color: white` / `color: #fff` for headings and body text via
 * `:scope h1 { color: white; }`, which becomes `[data-element-id="X"] h1 …`
 * (specificity 0,1,1).
 *
 * When the CMS author explicitly switches an element to a light variant
 * the light theme MUST win — they've opted in. We boost specificity with
 * the [data-element-id] attribute on the wrapper and use !important on a
 * focused set of text-bearing elements where forcing dark is always
 * correct (headings, paragraphs, list items, blockquotes, inline emphasis).
 *
 * Buttons and explicit copy classes (.ss-card-copy / .ss-home-copy /
 * .ss-section-copy) are excluded so their intentional brand colors stay.
 * ------------------------------------------------------------------------- */

/* Wrapper-level: beat any `[data-element-id="X"] { color: white; }` that the
 * author wrote at root level of a dark-designed element. */
:is(.ss-theme-light, .ss-light-section, .ss-theme-mixed)[data-element-id] {
  color: var(--ss-text-primary) !important;
}

/* Headings — always dark on a light surface. Specificity 0,2,1 + !important. */
:is(.ss-theme-light, .ss-light-section, .ss-theme-mixed, .ss-content-band--full-bleed-white)[data-element-id]
  :is(h1, h2, h3, h4, h5, h6),
:is(.ss-theme-light, .ss-light-section, .ss-theme-mixed) :is(h1, h2, h3, h4, h5, h6) {
  color: var(--ss-text-primary) !important;
}

/* Body copy — exclude the intentional secondary-color copy classes. */
:is(.ss-theme-light, .ss-light-section, .ss-theme-mixed, .ss-content-band--full-bleed-white)[data-element-id]
  :is(p, li, blockquote, dt, dd):not(.ss-card-copy):not(.ss-home-copy):not(.ss-section-copy):not([class*='text-white']),
:is(.ss-theme-light, .ss-light-section, .ss-theme-mixed)
  :is(p, li, blockquote, dt, dd):not(.ss-card-copy):not(.ss-home-copy):not(.ss-section-copy):not([class*='text-white']) {
  color: var(--ss-text-primary) !important;
}

/* Inline emphasis tags often inherit from a colored heading; force dark too. */
:is(.ss-theme-light, .ss-light-section, .ss-theme-mixed)[data-element-id]
  :is(strong, em, b, i, u, mark, small) {
  color: inherit !important;
}

/* Common kicker / badge / pill / chip classes that author CSS often paints
 * white on dark heroes. In a light theme these always need a dark / brand
 * color to stay legible. The keep-white opt-out is .text-white. */
:is(.ss-theme-light, .ss-light-section, .ss-theme-mixed)[data-element-id]
  :is(
    .kicker, .ss-kicker, .hero-kicker, .eyebrow,
    .badge, .pill, .chip, .tag, .label, .ss-tag
  ):not([class*='text-white']) {
  color: var(--ss-dark-blue) !important;
}
/* ------------------------------------------------------------------------- */

.ss-light-media {
  border: 0;
  background: rgba(255, 255, 255, 0.48);
  box-shadow: 0 14px 34px rgba(15, 23, 42, 0.05);
}

.ss-light-media img {
  object-fit: contain;
  background: transparent;
}

.ss-card-body {
  padding: 1.75rem;
  display: grid;
  gap: 1.1rem;
}

.ss-card-grid .ss-card > .ss-card-body:first-child {
  padding-top: 0.5rem;
}

.ss-spec-icon {
  display: block;
  width: 5rem;
  height: 5rem;
  color: var(--ss-page-heading);
  margin-bottom: 0.25rem;
}

.ss-spec-icon svg,
.ss-spec-icon img {
  width: 100%;
  height: 100%;
}

.ss-card-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 1.5rem;
}

.ss-card-grid--two {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

.ss-card {
  height: 100%;
  transition: transform 220ms ease, border-color 220ms ease, box-shadow 220ms ease;
}

.ss-card:hover {
  transform: none;
  border-color: rgba(248, 215, 73, 0.35);
}

/* No hover-lift anywhere on card-like UI blocks (inkl. reine ss-glass-card / Prose-Artikel). */
:where(
    .ss-card,
    .ss-light-card,
    .ss-tab-card,
    .ss-slider-panel,
    .ss-feature-panel,
    .ss-glass-card,
    .ss-prose-section
  ):hover {
  transform: none !important;
}

/* Keep vertical spacing between top-level content containers consistent,
 * regardless of per-block utility margins authored in content. */
.ss-blocks-stack {
  display: grid;
  gap: 1.5rem;
}

.ss-blocks-stack > * {
  margin-top: 0 !important;
  margin-bottom: 0 !important;
}

/* Keep spacing consistent across all card/grid container variants. */
.ss-card-grid,
.ss-tab-grid,
.ss-type-grid,
.ss-spec-grid,
.ss-step-grid {
  gap: 1.5rem !important;
}

.ss-prose-section > :is(.ss-card-grid, .ss-tab-grid, .ss-type-grid, .ss-spec-grid, .ss-step-grid) {
  margin-top: 1.5rem !important;
  margin-bottom: 0 !important;
}

.ss-card-title {
  margin: 0 0 0.75rem;
  font-size: 1.25rem;
  line-height: 1.75rem;
  font-weight: 700;
  letter-spacing: 0;
  color: var(--ss-page-heading);
}

.ss-card-copy {
  margin: 0;
  font-size: 1rem;
  line-height: 1.5rem;
  color: var(--ss-page-body-muted);
}

.ss-icon-wrap {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 64px;
  height: 64px;
  border-radius: var(--ss-radius-lg);
  margin-bottom: 1.25rem;
  border: 1px solid rgba(255, 255, 255, 0.14);
}

.ss-icon-wrap svg {
  width: 30px;
  height: 30px;
}

.ss-icon-wrap--yellow {
  background: rgba(234, 179, 8, 0.2);
  border-color: rgba(234, 179, 8, 0.3);
  color: var(--ss-accent-amber);
}

.ss-icon-wrap--green {
  background: rgba(34, 197, 94, 0.18);
  border-color: rgba(34, 197, 94, 0.3);
  color: var(--ss-accent-green);
}

.ss-icon-wrap--blue {
  background: rgba(59, 130, 246, 0.18);
  border-color: rgba(59, 130, 246, 0.3);
  color: var(--ss-accent-blue);
}

.ss-section {
  padding: 2rem 0 2.5rem;
}

.ss-section--farbkatalog {
  padding-top: 1rem;
}

.ss-section--tight {
  padding: 0 0 2rem;
}

.ss-section-title {
  margin: 0 0 0.75rem;
  font-size: 1.875rem;
  line-height: 2.25rem;
  font-weight: 700;
  letter-spacing: 0;
  color: var(--ss-page-heading);
}

.ss-section-copy {
  max-width: 48rem;
  margin: 0 0 2rem;
  font-size: 1rem;
  line-height: 1.5rem;
  color: var(--ss-page-body-muted);
}

.ss-feature-panel {
  padding: 3rem;
  display: grid;
  gap: 1.25rem;
}

.ss-metrics {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 1rem;
}

.ss-metric {
  padding: 1.5rem;
  border-radius: var(--ss-radius-lg);
  background: rgba(15, 23, 42, 0.55);
  border: 1px solid rgba(148, 163, 184, 0.14);
}

.ss-metric strong {
  display: block;
  font-size: 2rem;
  line-height: 1;
  margin-bottom: 0.5rem;
  letter-spacing: -0.03em;
}

.ss-metric span {
  color: var(--ss-text-muted);
}

.ss-content-shell {
  display: grid;
  grid-template-columns: minmax(0, 280px) minmax(0, 1fr);
  gap: 2rem;
  align-items: start;
}

.ss-content-shell.ss-content-shell--no-sidebar {
  /* minmax(0,1fr): Spaltenbreite unabhängig von intrinsischer Breite der Kinder (sonst wirkt die Breite positions-/inhaltsabhängig). */
  grid-template-columns: minmax(0, 1fr);
}

.ss-page-content-section {
  padding-top: 30px;
  padding-bottom: 30px;
}

.ss-sidebar {
  position: sticky;
  top: 7rem;
}

.ss-toc {
  padding: 1.5rem;
}

.ss-toc h3 {
  margin: 0 0 1rem;
  font-size: 0.95rem;
  text-transform: uppercase;
  letter-spacing: 0.12em;
  color: var(--ss-accent-kicker);
}

.ss-toc nav {
  display: grid;
  gap: 0.5rem;
}

.ss-toc a {
  display: block;
  padding: 0.8rem 1rem;
  border-radius: var(--ss-radius-md);
  text-decoration: none;
  color: var(--ss-text-soft);
  border: 1px solid transparent;
  transition: background-color 180ms ease, border-color 180ms ease, color 180ms ease;
}

.ss-toc a:hover,
.ss-toc a.is-active {
  color: var(--ss-page-heading);
  background: rgba(30, 41, 59, 0.72);
  border-color: rgba(248, 215, 73, 0.24);
}

.ss-article {
  display: grid;
  gap: 1.5rem;
  min-width: 0;
}

/*
 * CMS: gestapelte Blöcke in #inhalt — volle Spaltenbreite, Legacy-Toolkit-HTML (rawHtml) mit
 * section.ss-section--tight + .ss-container nicht nochmal verengen; kein Extra-Padding unten.
 */
/*
 * Projektablauf-Schritte: Verlauf/Hintergrund über die volle Viewport-Breite,
 * Inhalt bleibt in .ss-container (bricht aus max-width-Spalten aus).
 */
.ss-projektablauf-steps-fullbleed {
  width: 100vw;
  max-width: 100vw;
  margin-left: calc(50% - 50vw);
  margin-right: calc(50% - 50vw);
  position: relative;
  box-sizing: border-box;
}

/* Full-bleed Abschlussband unter dem Hero (Projektablauf-Steps).
 * Light-only contract: weiß → cream → transparent, unabhängig vom umgebenden
 * Container. Der frühere slate-Vignetten-Default (`rgba(30, 41, 59, 0.5)`) ist
 * entfernt, weil das Band sonst auf Content-Seiten — wo es z. B. innerhalb von
 * `section.ss-page-content-section > .ss-blocks-stack > section.ss-theme-light`
 * sitzt und keiner der spezifischeren Overrides matcht — als Dark-Theme-Rest
 * durchschlug. Spezifischere Overrides (z. B. `[data-theme='schlauesocke-2026']
 * … .ss-blocks-stack:has(.ss-hero) + section.ss-section …` mit `none`) bleiben
 * unten erhalten und gewinnen weiterhin per Selektor-Spezifität. */
.ss-projektablauf-steps-fullbleed > .ss-section.ss-projektablauf-steps-band {
  background-image: linear-gradient(to bottom, #ffffff 0px, #fafaf7 400px, rgba(250, 250, 247, 0) 520px);
}

/* /lp pages: match the main-site hero-to-content transition (white -> creme). */
.ss-lp-root .ss-projektablauf-steps-fullbleed > .ss-section.ss-projektablauf-steps-band {
  background-image: linear-gradient(to bottom, #ffffff 0px, #fafaf7 400px, rgba(250, 250, 247, 0) 520px);
  /* Keep LP step cards on the same light palette used by the "/" source style. */
  --ss-page-heading: var(--ss-text-primary);
  --ss-page-body-muted: var(--ss-text-secondary);
  --ss-glass: var(--ss-surface-white);
  --ss-glass-border: rgba(15, 23, 42, 0.08);
  --ss-shadow-dark: 0 1px 2px rgba(31, 35, 64, 0.04), 0 10px 28px rgba(31, 35, 64, 0.06);
}

.ss-lp-root .ss-projektablauf-steps-band .ss-step-card .ss-card-title {
  color: var(--ss-text-primary);
}

.ss-lp-root .ss-projektablauf-steps-band .ss-step-card .ss-card-copy {
  color: var(--ss-text-secondary);
}

.ss-lp-root .ss-projektablauf-steps-band .ss-step-number {
  background: rgba(248, 215, 73, 0.16);
  border-color: rgba(248, 215, 73, 0.28);
  color: var(--ss-dark-blue);
}

/* Remove the unwanted 1px seam on the first light block directly after a hero.
 * Keep normal light-band borders elsewhere. */
.ss-page main .ss-blocks-stack:has(.ss-hero) + section .ss-blocks-stack > section:first-child.ss-theme-light,
.ss-page main > section.ss-page-content-section:has(.ss-blocks-stack > section:first-child .ss-hero) .ss-blocks-stack > section:first-child.ss-theme-light {
  border-top-color: transparent;
}

/* -------- schlauesocke-2026: Hero→Content-Band (weiß → cream) -----------------
 * `BlocksRenderer` hüllt IMMER in `div.ss-blocks-stack` — der Hero ist dadurch kein
 * direktes Geschwister von `main > section`, sondern `.ss-blocks-stack + section`.
 * Zusätzlich: Legacy `section.ss-hero + section` (Template-Zweig, Inspiration mit
 * Roh-HTML-Hero u. a.). Projektablauf: inneres Steps-Band aus, wenn das äußere Band
 * schon auf der Content-Section liegt. */
[data-theme='schlauesocke-2026'] .ss-page main .ss-blocks-stack:has(.ss-hero) + section.ss-section,
[data-theme='schlauesocke-2026'] .ss-page main section.ss-hero + section.ss-section,
[data-theme='schlauesocke-2026'] .ss-page main section.ss-theme-light:has(.ss-hero) + section.ss-section,
[data-theme='schlauesocke-2026'] .ss-page main > section.ss-section.ss-section--farbkatalog,
[data-theme='schlauesocke-2026']
  .ss-page
  main
  > section.ss-page-content-section:has(.ss-blocks-stack > section:first-child .ss-hero),
[data-theme='schlauesocke-2026'] .ss-page main > section.ss-page-content-section:has(.ss-farbkatalog),
[data-theme='schlauesocke-2026']
  .ss-page
  main
  > section.ss-hero
  + .ss-projektablauf-steps-fullbleed
  > .ss-section.ss-projektablauf-steps-band {
  background-image: linear-gradient(to bottom, #ffffff 0px, #fafaf7 400px, rgba(250, 250, 247, 0) 520px);
}

/* /lp parity: apply the same hero -> content transition used on
 * `/lp/socken-bedrucken` to all landing pages, independent of theme row. */
.ss-lp-root .ss-page main .ss-blocks-stack:has(.ss-hero) + section.ss-section,
.ss-lp-root .ss-page main section.ss-hero + section.ss-section,
.ss-lp-root .ss-page main section.ss-theme-light:has(.ss-hero) + section.ss-section,
.ss-lp-root .ss-page main > section.ss-section.ss-section--farbkatalog,
.ss-lp-root .ss-page main > section.ss-page-content-section:has(.ss-blocks-stack > section:first-child .ss-hero),
.ss-lp-root .ss-page main > section.ss-page-content-section:has(.ss-farbkatalog),
.ss-lp-root .ss-page main > section.ss-hero + .ss-projektablauf-steps-fullbleed > .ss-section.ss-projektablauf-steps-band {
  background-image: linear-gradient(to bottom, #ffffff 0px, #fafaf7 400px, rgba(250, 250, 247, 0) 520px);
}

[data-theme='schlauesocke-2026']
  .ss-page
  main
  .ss-blocks-stack:has(.ss-hero)
  + section.ss-section
  .ss-projektablauf-steps-fullbleed
  > .ss-section.ss-projektablauf-steps-band {
  background-image: none;
}

.ss-blocks-stack {
  min-width: 0;
  width: 100%;
}

.ss-blocks-stack > section.ss-theme-dark,
.ss-blocks-stack > section.ss-theme-light,
.ss-blocks-stack > section.ss-theme-mixed {
  min-width: 0;
  width: 100%;
}

.ss-blocks-stack .ss-section.ss-section--tight {
  padding: 0;
  width: 100%;
  max-width: none;
  margin-left: 0;
  margin-right: 0;
  box-sizing: border-box;
}

.ss-blocks-stack .ss-section.ss-section--tight > .ss-container {
  width: 100%;
  max-width: none;
  margin-left: 0;
  margin-right: 0;
}

/*
 * Raw HTML / Landing-Toolkit: inner `section.ss-section` sits inside the block
 * theme wrapper. Extra vertical padding so bands breathe (stack gap only spaces
 * direct children of .ss-blocks-stack). Matches live BlocksRenderer + PagePreview.
 */
.ss-blocks-stack > section:is(.ss-theme-light, .ss-theme-dark, .ss-theme-mixed)
  section.ss-section:not(.ss-section--tight),
.ss-blocks-stack
  .ss-content-band__segment:is(.ss-theme-light, .ss-theme-dark, .ss-theme-mixed)
  section.ss-section:not(.ss-section--tight) {
  padding-top: var(--ss-raw-inner-section-pt, 3rem);
  padding-bottom: var(--ss-raw-inner-section-pb, 3rem);
}

/* Farbkatalog: native <select> list uses OS white surface; text must stay dark (not --ss-page-start, that is a page bg token). */
.ss-farbkatalog select option,
.ss-farbkatalog select optgroup {
  color: rgb(15 23 42);
  background-color: rgb(255 255 255);
}

.ss-prose-section {
  padding: 2rem;
  display: grid;
  gap: 1rem;
}

.ss-prose-section h2,
.ss-prose-section h3 {
  margin: 20px 0 1rem;
  line-height: 1.15;
  letter-spacing: 0;
}

.ss-prose-section h2 {
  font-family: var(--ss-font);
  font-size: 1.875rem;
  line-height: 2.25rem;
  font-weight: 700;
}

.ss-prose-section h3 {
  font-size: 1.25rem;
  line-height: 1.75rem;
  font-weight: 700;
}

.ss-prose-section p,
.ss-prose-section li {
  font-size: 1rem;
  line-height: 1.9rem;
  color: var(--ss-page-body-muted);
}

/* Preflight (z. B. Tailwind) setzt oft a { color: inherit } → Links wirkten wie Fließtext */
.ss-prose-section a.ss-internal-link {
  color: var(--ss-page-body-soft);
  text-decoration: underline;
  text-decoration-color: rgba(203, 213, 225, 0.45);
  text-underline-offset: 0.2em;
}

.ss-prose-section a.ss-internal-link:hover {
  color: var(--ss-page-body-prose);
  text-decoration-color: rgba(226, 232, 240, 0.55);
}

.ss-prose-section a.ss-internal-link strong,
.ss-prose-section a.ss-internal-link em {
  color: inherit;
}

.ss-prose-section p {
  margin: 10px 0;
}

.ss-prose-section ul,
.ss-prose-section ol {
  margin: 1rem 0 0;
}

.ss-prose-section ul {
  list-style: none;
  padding-left: 0;
  display: grid;
  gap: 0.625rem;
}

/* Block + padding: flex macht jedes Textfragment/Inline-Link zum Flex-Item → kaputte Zeilenumbrüche */
.ss-prose-section ul:not(.ss-prose-ul-markers) > li {
  display: block;
  position: relative;
  padding-left: calc(1.9rem + 0.875rem);
  min-width: 0;
}

.ss-prose-section ul.ss-prose-ul-markers {
  display: block;
  padding-left: 1.2rem;
  list-style: disc;
}

.ss-prose-section ul.ss-prose-ul-markers > li {
  display: list-item;
}

.ss-prose-section ul.ss-prose-ul-markers > li::before {
  content: none;
  display: none;
}

.ss-prose-section ol {
  list-style: decimal;
  padding-left: 1.2rem;
}

.ss-prose-section p > strong {
  display: inline-block;
  margin-bottom: 10px;
}

/* Prose figures (images with optional figcaption) – Farbkatalog, reference pages */
.ss-prose-section figure {
  margin: 1.25rem 0;
  border-radius: var(--ss-radius-md);
  overflow: hidden;
  border: 1px solid var(--ss-glass-border);
}
.ss-prose-section figure img {
  display: block;
  max-width: 100%;
  height: auto;
}
.ss-prose-section figcaption {
  padding: 0.75rem 1rem;
  font-size: 0.875rem;
  line-height: 1.4;
  color: var(--ss-text-muted);
}
.ss-prose-section figure a {
  display: block;
}

/* Two-column text blocks (e.g. Baumwollfarben / Polyamidfarben) – content templates */
.ss-prose-section .wp-block-columns {
  display: grid;
  gap: 1.5rem;
  margin: 1.25rem 0;
}
@media (min-width: 640px) {
  .ss-prose-section .wp-block-columns {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}
.ss-prose-section .wp-block-column {
  min-width: 0;
}

.ss-callout {
  padding: 1.25rem 1.4rem;
  border-radius: var(--ss-radius-md);
  background: rgba(255, 254, 245, 0.08);
  border: 1px solid rgba(248, 215, 73, 0.35);
}

.ss-callout strong {
  color: var(--ss-accent-strong);
}

.ss-callout,
.ss-callout p {
  color: var(--ss-page-body-prose);
}

/* Hell-Theme: Callout mit gutem Kontrast (gelber Akzent, dunkle Schrift) */
.ss-content-light .ss-callout {
  background: rgba(248, 215, 73, 0.14);
  border-color: rgba(234, 179, 8, 0.45);
}

.ss-content-light .ss-callout strong {
  color: var(--ss-text-primary);
}

.ss-content-light .ss-callout,
.ss-content-light .ss-callout p {
  color: var(--ss-text-secondary);
}

.ss-inline-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 1rem;
}

/* Feature-Karten mit Farbakzent (Gelb, Grün, Blau) für bessere Kontraste und Branding */
.ss-feature-card {
  padding: 1.25rem 1.25rem 1.25rem 1.5rem;
  border-radius: var(--ss-radius-lg);
  border: 1px solid rgba(148, 163, 184, 0.2);
  background: rgba(30, 41, 59, 0.5);
  border-left-width: 4px;
}

.ss-feature-card h3 {
  margin: 0 0 0.5rem;
  font-size: 1.125rem;
  font-weight: 700;
  color: var(--ss-page-heading);
}

.ss-feature-card p {
  margin: 0;
  font-size: 0.9375rem;
  line-height: 1.5;
  /* `.ss-feature-card` paints a hardcoded `rgba(30,41,59,0.5)` tile, so the
   * body text needs to stay light independent of page brightness until that
   * surface is themed. */
  color: var(--ss-text-inverse-soft);
}

.ss-feature-card--yellow {
  border-left-color: var(--ss-yellow);
}

.ss-feature-card--green {
  border-left-color: var(--ss-green);
}

.ss-feature-card--blue {
  border-left-color: var(--ss-blue);
}

.ss-content-light .ss-feature-card {
  background: rgba(255, 255, 255, 0.92);
  border-color: rgba(23, 23, 23, 0.08);
}

.ss-content-light .ss-feature-card--yellow {
  border-left-color: var(--ss-yellow);
  background: rgba(255, 254, 245, 0.95);
}

.ss-content-light .ss-feature-card--green {
  border-left-color: var(--ss-green);
  background: rgba(245, 253, 245, 0.95);
}

.ss-content-light .ss-feature-card--blue {
  border-left-color: var(--ss-blue);
  background: rgba(239, 246, 255, 0.95);
}

.ss-content-light .ss-feature-card h3 {
  color: var(--ss-text-primary);
}

.ss-content-light .ss-feature-card p {
  color: var(--ss-text-secondary);
}

.ss-style-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 1.5rem;
}

.ss-style-card {
  padding: 1.5rem;
}

/* Nur im Hell-Kontext: Style-Boxen hell mit schwarzer Schrift (Dunkel bleibt unverändert) */
.ss-light-section .ss-style-grid .ss-glass-card,
.ss-content-light .ss-style-grid .ss-glass-card {
  background: rgba(255, 255, 255, 0.95);
  border-color: rgba(23, 23, 23, 0.1);
}

.ss-light-section .ss-style-grid .ss-glass-card .ss-kicker,
.ss-content-light .ss-style-grid .ss-glass-card .ss-kicker {
  color: var(--ss-green);
}

.ss-light-section .ss-style-grid .ss-glass-card .ss-home-title,
.ss-light-section .ss-style-grid .ss-glass-card .ss-home-section-title,
.ss-light-section .ss-style-grid .ss-glass-card .ss-card-title,
.ss-light-section .ss-style-grid .ss-glass-card h2,
.ss-light-section .ss-style-grid .ss-glass-card h3,
.ss-content-light .ss-style-grid .ss-glass-card .ss-home-title,
.ss-content-light .ss-style-grid .ss-glass-card .ss-home-section-title,
.ss-content-light .ss-style-grid .ss-glass-card .ss-card-title,
.ss-content-light .ss-style-grid .ss-glass-card h2,
.ss-content-light .ss-style-grid .ss-glass-card h3 {
  color: var(--ss-text-primary);
}

.ss-light-section .ss-style-grid .ss-glass-card .ss-home-copy,
.ss-light-section .ss-style-grid .ss-glass-card .ss-card-copy,
.ss-light-section .ss-style-grid .ss-glass-card p,
.ss-content-light .ss-style-grid .ss-glass-card .ss-home-copy,
.ss-content-light .ss-style-grid .ss-glass-card .ss-card-copy,
.ss-content-light .ss-style-grid .ss-glass-card p {
  color: var(--ss-text-secondary);
}

.ss-light-section .ss-style-grid .ss-glass-card .ss-code,
.ss-content-light .ss-style-grid .ss-glass-card .ss-code {
  background: rgba(23, 23, 23, 0.06);
  border-color: rgba(23, 23, 23, 0.12);
  color: var(--ss-text-primary);
}

.ss-light-section .ss-style-grid .ss-glass-card label,
.ss-content-light .ss-style-grid .ss-glass-card label {
  color: var(--ss-text-primary);
}

.ss-subhero-grid {
  display: grid;
  grid-template-columns: minmax(0, 1.1fr) minmax(280px, 0.9fr);
  gap: 1.5rem;
  align-items: stretch;
}

.ss-code {
  display: block;
  margin-top: 1rem;
  padding: 0.875rem 1rem;
  border-radius: var(--ss-radius-md);
  background: rgba(2, 6, 23, 0.72);
  border: 1px solid rgba(148, 163, 184, 0.14);
  /* Code block is a hardcoded near-black tile; keep its text invariant
   * light until the surface itself becomes themable. */
  color: var(--ss-text-inverse-prose);
  font-size: 0.875rem;
  line-height: 1.4;
  overflow-x: auto;
}

.ss-input {
  width: 100%;
  min-height: 3rem;
  border-radius: var(--ss-radius-md);
  border: 1px solid rgb(51 65 85);
  background: rgba(15, 23, 42, 0.5);
  padding: 0.75rem 1rem;
  color: var(--ss-text-inverse);
}

.ss-input::placeholder {
  color: rgb(100 116 139);
}

.ss-input:focus {
  outline: none;
}

.ss-input:focus-visible {
  border-color: var(--ss-yellow);
  box-shadow: 0 0 0 3px rgba(248, 215, 73, 0.25);
}

/* /lp contact forms: native select dropdown must stay readable (white list background + dark text). */
.ss-lp-root select.ss-input option,
.ss-lp-root select.ss-input optgroup {
  color: rgb(15 23 42);
  background-color: rgb(255 255 255);
}

.ss-pill {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  padding: 0.375rem 0.75rem;
  border-radius: var(--ss-radius-md);
  font-size: 0.875rem;
  line-height: 1.25rem;
  font-weight: 500;
  border: 1px solid transparent;
}

.ss-pill--yellow {
  background: rgba(245, 158, 11, 0.2);
  color: var(--ss-accent-amber);
  border-color: rgba(245, 158, 11, 0.3);
}

.ss-pill--blue {
  background: rgba(59, 130, 246, 0.2);
  color: var(--ss-accent-blue);
  border-color: rgba(59, 130, 246, 0.3);
}

.ss-pill--green {
  background: rgba(34, 197, 94, 0.2);
  color: var(--ss-accent-green);
  border-color: rgba(34, 197, 94, 0.3);
}

.ss-kicker {
  margin: 0 0 0.5rem;
  font-size: 0.95rem;
  line-height: 1.2;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--ss-accent-kicker);
}

h3.ss-kicker {
  font-size: 1.1rem;
  font-weight: 600;
  line-height: 1.3;
}

.ss-divider {
  height: 1px;
  width: 100%;
  margin: 1.5rem 0;
  background: linear-gradient(90deg, rgba(148, 163, 184, 0) 0%, rgba(148, 163, 184, 0.5) 50%, rgba(148, 163, 184, 0) 100%);
}

.ss-checklist {
  display: grid;
  gap: 0.625rem;
  margin: 0;
  padding: 0;
  list-style: none;
}

.ss-checklist li {
  display: flex;
  align-items: flex-start;
  gap: 0.875rem;
  font-size: 18px;
  line-height: 1.7;
  font-weight: 500;
  color: var(--ss-page-body-prose);
  min-width: 0;
  overflow-wrap: break-word;
  word-break: normal;
}

.ss-checklist li::before,
.ss-prose-section ul:not(.ss-prose-ul-markers) > li::before {
  content: "";
  display: inline-block;
  width: 1.9rem;
  height: 1.9rem;
  border-radius: var(--ss-radius-md);
  /* Two-layer background so the SVG check (themed via
   * --ss-checklist-icon-image) sits on top of the tile fill (themed via
   * --ss-checklist-icon-bg). */
  background: var(--ss-checklist-icon-image), var(--ss-checklist-icon-bg);
  border: 1px solid var(--ss-checklist-icon-border);
}

.ss-checklist li::before {
  flex: 0 0 auto;
  margin-top: 0;
}

.ss-prose-section ul:not(.ss-prose-ul-markers) > li::before {
  position: absolute;
  left: 0;
  top: 0;
  margin-top: 0;
}

.ss-checklist--compact li {
  font-size: 0.9rem;
  line-height: 1.32;
}

.ss-checklist--highlight li {
  font-size: 1.05rem;
  line-height: 1.5;
}

.ss-trust-band {
  display: grid;
  grid-template-columns: minmax(0, 1.4fr) minmax(280px, 0.6fr);
  gap: 1.5rem;
  align-items: center;
}

.ss-trust-widget {
  padding: 1.5rem;
  border-radius: var(--ss-radius-lg);
  background: rgba(15, 23, 42, 0.58);
  border: 1px solid rgba(245, 158, 11, 0.22);
}

.ss-small-trust {
  border-radius: var(--ss-radius-lg);
  overflow: hidden;
  background: rgba(255, 255, 255, 0.96);
  border: 1px solid rgba(23, 23, 23, 0.08);
  box-shadow: 0 10px 24px rgba(15, 23, 42, 0.08);
}

.ss-trustpilot-carousel {
  display: grid;
  grid-template-columns: 180px minmax(0, 1fr);
  gap: 1rem;
  align-items: center;
}

.ss-trustpilot-panel {
  padding: 1.75rem;
  gap: 1rem;
}

.ss-trustpilot-link {
  display: inline-block;
  padding: 0.6rem 1rem;
  border-radius: var(--ss-radius-md);
  background: rgba(0, 182, 122, 0.15);
  border: 1px solid rgba(0, 182, 122, 0.4);
  /* Trustpilot widget always renders on a dark surface (promo bar / hero
   * tile), so its descriptive text uses the inverse family that stays
   * light in every theme. */
  color: var(--ss-text-inverse-prose);
  font-weight: 600;
  text-decoration: none;
  transition: background 180ms ease, color 180ms ease;
}

.ss-trustpilot-link:hover {
  background: rgba(0, 182, 122, 0.25);
  color: var(--ss-text-inverse);
}

/* Hero-Kartenbereich: separaten Trustpilot-Textlink unter dem Bild/Widget ausblenden (TrustBox bleibt). */
.ss-hero .ss-card-body .ss-trustpilot-link-wrap {
  display: none !important;
}

.ss-trustpilot-carousel--wide {
  grid-template-columns: 185px minmax(0, 1fr);
}

.ss-trustpilot-summary {
  display: grid;
  gap: 0.55rem;
  color: var(--ss-text-inverse);
  text-decoration: none;
}

.ss-trustpilot-score {
  font-size: 1.1rem;
  line-height: 1.2;
  font-weight: 700;
}

.ss-trustpilot-stars,
.ss-trustpilot-inline-stars {
  display: inline-flex;
  gap: 0.14rem;
}

.ss-trustpilot-stars span,
.ss-trustpilot-inline-stars span {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 1.2rem;
  height: 1.2rem;
  border-radius: 0.12rem;
  background: var(--ss-trustpilot-green);
  color: var(--ss-text-inverse);
  font-size: 0.82rem;
  line-height: 1;
}

.ss-trustpilot-inline-stars span.is-dim {
  background: var(--ss-trustpilot-grey);
  color: var(--ss-text-inverse);
}

.ss-trustpilot-based {
  font-size: 0.92rem;
  line-height: 1.4;
  color: var(--ss-text-inverse-prose);
}

.ss-trustpilot-brand {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  color: var(--ss-text-inverse);
  font-size: 0.95rem;
  font-weight: 600;
}

.ss-trustpilot-brand-star {
  color: var(--ss-trustpilot-green);
  font-size: 1.2rem;
  line-height: 1;
}

.ss-trustpilot-reviews-shell {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  gap: 0.6rem;
  align-items: center;
}

.ss-trustpilot-arrow {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 2rem;
  height: 2rem;
  border: 1px solid rgba(255, 255, 255, 0.4);
  border-radius: var(--ss-radius-md);
  background: transparent;
  color: rgba(255, 255, 255, 0.78);
  cursor: pointer;
  transition: border-color 180ms ease, color 180ms ease, opacity 180ms ease;
}

.ss-trustpilot-arrow:hover:not(:disabled) {
  border-color: var(--ss-text-inverse);
  color: var(--ss-text-inverse);
}

.ss-trustpilot-arrow:disabled {
  opacity: 0.4;
  cursor: default;
}

.ss-trustpilot-viewport {
  overflow-x: auto;
  overflow-y: hidden;
  scroll-behavior: smooth;
  scrollbar-width: none;
  -ms-overflow-style: none;
}

.ss-trustpilot-viewport::-webkit-scrollbar {
  display: none;
}

.ss-trustpilot-track {
  display: flex;
  gap: 1rem;
  width: max-content;
  min-width: 100%;
}

.ss-trustpilot-review {
  flex: 0 0 250px;
  min-width: 250px;
  display: grid;
  gap: 0.45rem;
  color: var(--ss-text-inverse);
}

.ss-trustpilot-review-top {
  display: flex;
  align-items: center;
  gap: 0.5rem;
}

.ss-trustpilot-verified {
  color: var(--ss-text-inverse-prose);
  font-size: 0.9rem;
  line-height: 1.2;
}

.ss-trustpilot-review-title {
  margin: 0;
  font-size: 1rem;
  line-height: 1.3;
  font-weight: 700;
}

.ss-trustpilot-review-text {
  margin: 0;
  color: var(--ss-text-inverse-prose);
  font-size: 0.95rem;
  line-height: 1.35;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

.ss-trustpilot-review-meta {
  margin: 0;
  color: var(--ss-text-inverse-soft);
  font-size: 0.9rem;
  line-height: 1.3;
}

.ss-trustpilot-carousel--light .ss-trustpilot-summary,
.ss-trustpilot-carousel--light .ss-trustpilot-score,
.ss-trustpilot-carousel--light .ss-trustpilot-brand,
.ss-trustpilot-carousel--light .ss-trustpilot-review,
.ss-trustpilot-carousel--light .ss-trustpilot-review-title {
  color: var(--ss-text-primary);
}

.ss-trustpilot-carousel--light .ss-trustpilot-based,
.ss-trustpilot-carousel--light .ss-trustpilot-verified,
.ss-trustpilot-carousel--light .ss-trustpilot-review-text,
.ss-trustpilot-carousel--light .ss-trustpilot-review-meta {
  color: var(--ss-text-secondary);
}

.ss-trustpilot-carousel--light .ss-trustpilot-arrow {
  border-color: rgba(23, 23, 23, 0.24);
  color: rgba(23, 23, 23, 0.72);
}

.ss-trustpilot-carousel--light .ss-trustpilot-arrow:hover:not(:disabled) {
  border-color: rgba(23, 23, 23, 0.6);
  color: rgba(23, 23, 23, 1);
}

.ss-trustpilot-carousel--wide .ss-trustpilot-review {
  flex: 0 0 200px;
  min-width: 200px;
}

.ss-trust-embed {
  overflow: hidden;
  border-radius: var(--ss-radius-md);
  background: white;
}

.ss-trust-stars {
  display: flex;
  gap: 0.35rem;
  margin-bottom: 0.75rem;
  color: var(--ss-accent-kicker);
}

.ss-eyebrow {
  margin: 0 0 0.35rem;
  font-size: 0.65rem;
  line-height: 1.1;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--ss-accent-kicker);
}

.ss-slider {
  position: relative;
  overflow: hidden;
}

.ss-slider--light {
  border: 1px solid rgba(23, 23, 23, 0.08);
  background: rgba(255, 255, 255, 0.97);
  box-shadow: 0 20px 48px rgba(15, 23, 42, 0.08);
}

.ss-slider-panel {
  padding: 1.5rem;
}

.ss-slider-panel--light {
  border: 1px solid rgba(23, 23, 23, 0.08);
  border-radius: var(--ss-radius-lg);
  background: rgba(255, 255, 255, 0.96);
  box-shadow: 0 14px 32px rgba(15, 23, 42, 0.06);
  /* Zusätzlicher Abstand nach unten (Text sonst zu knapp zum Kartenrand / nächste Zeile) */
  padding-bottom: calc(1.5rem + 20px);
}

.ss-slider-track {
  display: flex;
  transition: transform 320ms ease;
  will-change: transform;
  overflow: hidden;
  scrollbar-width: none;
  -ms-overflow-style: none;
}

.ss-slider-track::-webkit-scrollbar {
  display: none;
}

.ss-slider-track .ss-slide {
  min-width: 0;
  box-sizing: border-box;
}

/* Design-Ideen-Slider: Höhe folgt Bildseitenverhältnis, kein Zuschneiden */
#design-ideen .ss-slider .ss-slider-track {
  align-items: stretch;
}
#design-ideen .ss-slider .ss-slide {
  display: flex;
  align-items: center;
  justify-content: center;
}
#design-ideen .ss-slider .ss-slide .ss-showcase-image,
#design-ideen .ss-slider .ss-slide .ss-light-media {
  width: 100%;
  min-height: 0;
  padding: 0;
  display: flex;
  align-items: center;
  justify-content: center;
}
#design-ideen .ss-slider .ss-slide .ss-showcase-image img,
#design-ideen .ss-slider .ss-slide .ss-light-media img {
  width: 100%;
  height: auto;
  max-width: 100%;
  object-fit: contain;
  object-position: center;
  display: block;
}

.ss-slider-controls {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  margin-top: 1rem;
}

.ss-slider-buttons {
  display: flex;
  gap: 0.75rem;
}

.ss-slider-button {
  -webkit-appearance: none;
  appearance: none;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 2.75rem;
  height: 2.75rem;
  border-radius: var(--ss-radius-md);
  border: 1px solid rgba(148, 163, 184, 0.2);
  background: rgba(15, 23, 42, 0.72);
  /* Hardcoded dark glass tile; arrow stays light invariantly. */
  color: var(--ss-text-inverse);
  cursor: pointer;
}

.ss-slider-button:hover {
  border-color: rgba(248, 215, 73, 0.35);
}

.ss-slider--light .ss-slider-button {
  border-color: rgba(23, 23, 23, 0.1);
  background: white;
  color: var(--ss-text-primary);
  box-shadow: 0 8px 18px rgba(15, 23, 42, 0.06);
}

.ss-slider-pagination {
  display: flex;
  gap: 0.5rem;
}

.ss-slider-dot {
  -webkit-appearance: none;
  appearance: none;
  width: 0.625rem;
  height: 0.625rem;
  padding: 0;
  margin: 0;
  border: 0;
  border-radius: var(--ss-radius-sm);
  background: rgba(148, 163, 184, 0.4);
  cursor: pointer;
  flex-shrink: 0;
  vertical-align: middle;
}

.ss-slider-dot.is-active {
  background: var(--ss-yellow);
}

.ss-slider--light .ss-slider-dot {
  background: rgba(23, 23, 23, 0.18);
}

.ss-slider--light .ss-slider-dot.is-active {
  background: var(--ss-yellow);
}

/* Lightbox */
.ss-lightbox-overlay {
  position: fixed;
  inset: 0;
  z-index: 1000;
  display: flex;
  align-items: center;
  justify-content: center;
  background: rgba(0, 0, 0, 0.9);
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transition: opacity 0.2s ease, visibility 0.2s ease;
}

.ss-lightbox-overlay.is-open {
  opacity: 1;
  visibility: visible;
  pointer-events: auto;
}

.ss-lightbox-close {
  position: absolute;
  top: 1rem;
  right: 1rem;
  z-index: 2;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 2.5rem;
  height: 2.5rem;
  padding: 0;
  border: 0;
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.15);
  color: var(--ss-text-inverse);
  cursor: pointer;
  transition: background 0.15s ease;
}

.ss-lightbox-close:hover {
  background: rgba(255, 255, 255, 0.3);
}

.ss-lightbox-content {
  max-width: 90vw;
  max-height: 90vh;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 3rem 1rem 1rem;
}

.ss-lightbox-img {
  max-width: 100%;
  max-height: 85vh;
  width: auto;
  height: auto;
  object-fit: contain;
  border-radius: var(--ss-radius-lg, 0.5rem);
  box-shadow: 0 24px 48px rgba(0, 0, 0, 0.4);
}

#beispiele .ss-slide .grid {
  gap: 30px;
}

#beispiele .ss-slide {
  box-sizing: border-box;
  padding-left: 15px;
  padding-right: 15px;
}

.ss-showcase-image {
  position: relative;
  isolation: isolate;
  aspect-ratio: 16 / 10;
  border-radius: var(--ss-radius-lg);
  overflow: hidden;
  border: 0;
  background:
    radial-gradient(circle at center, rgba(255, 255, 255, 0.1) 0%, rgba(15, 23, 42, 0.08) 58%, transparent 100%),
    linear-gradient(135deg, rgba(15, 23, 42, 0.24) 0%, rgba(30, 41, 59, 0.14) 100%);
  box-shadow: 0 22px 56px rgba(15, 23, 42, 0.12);
}

.ss-showcase-image--hero {
  border: 0;
  border-radius: 0;
  overflow: visible;
  background: transparent;
  box-shadow: none;
}

.ss-showcase-image--hero::before {
  inset: -18%;
  filter: blur(44px) saturate(1.1) brightness(1.08);
  transform: scale(1.28);
  mask-image: radial-gradient(circle at center, rgba(0, 0, 0, 0.85) 22%, rgba(0, 0, 0, 0.68) 45%, rgba(0, 0, 0, 0.28) 66%, transparent 82%);
  animation: ss-hero-media-float 9s ease-in-out infinite, ss-hero-shadow-pulse 4s ease-in-out infinite;
}

.ss-showcase-image--hero::after {
  content: none;
  inset: -10%;
  background:
    radial-gradient(circle at center, rgba(255, 255, 255, 0.34) 0%, rgba(255, 255, 255, 0.12) 30%, rgba(255, 255, 255, 0.04) 52%, transparent 76%);
  mask-image: radial-gradient(circle at center, rgba(0, 0, 0, 0.88) 18%, rgba(0, 0, 0, 0.52) 48%, transparent 78%);
  animation: ss-hero-shadow-pulse 4s ease-in-out infinite;
}

.ss-showcase-image::before,
.ss-media-thumb::before,
.ss-light-media::before {
  content: "";
  position: absolute;
  inset: -8%;
  z-index: 0;
  background-image: var(--ss-media-image);
  background-position: center;
  background-repeat: no-repeat;
  background-size: cover;
  filter: blur(28px) saturate(1.15);
  transform: scale(1.16);
  opacity: 0.58;
  pointer-events: none;
}

.ss-showcase-image::after,
.ss-media-thumb::after,
.ss-light-media::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 1;
  background:
    linear-gradient(180deg, rgba(255, 255, 255, 0.12) 0%, rgba(255, 255, 255, 0.02) 28%, rgba(15, 23, 42, 0.06) 100%);
  pointer-events: none;
}

.ss-showcase-image.ss-showcase-image--hero::before {
  content: "";
  position: absolute;
  inset: -18%;
  z-index: 0;
  background-image: var(--ss-media-image);
  background-position: center;
  background-repeat: no-repeat;
  background-size: cover;
  filter: blur(44px) saturate(1.1) brightness(1.08);
  transform: scale(1.28);
  opacity: 0.58;
  mask-image: radial-gradient(circle at center, rgba(0, 0, 0, 0.85) 22%, rgba(0, 0, 0, 0.68) 45%, rgba(0, 0, 0, 0.28) 66%, transparent 82%);
  animation: ss-hero-media-float 9s ease-in-out infinite, ss-hero-shadow-pulse 4s ease-in-out infinite;
  pointer-events: none;
}

.ss-showcase-image.ss-showcase-image--hero::after {
  content: none;
}

.ss-showcase-image img {
  position: relative;
  z-index: 2;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.ss-showcase-image--hero img {
  --ss-hero-drift-scale-start: 0.792;
  --ss-hero-drift-scale-peak: 0.806;
  object-fit: contain;
  transform: scale(1.236);
  transform-origin: center center;
  filter:
    drop-shadow(0 0 18px rgba(255, 255, 255, 0.22))
    drop-shadow(0 0 40px rgba(255, 255, 255, 0.16))
    drop-shadow(0 0 72px rgba(255, 255, 255, 0.12))
    drop-shadow(0 22px 52px rgba(255, 255, 255, 0.08));
  animation: ss-hero-sock-drift 8s ease-in-out infinite;
}

/* Hero showcase image inside any `.ss-hero` (homepage + landing pages, not just
 * `/lp/`): bump the drift-scale variables so the sock fills the available
 * column area instead of hovering small in the middle. The keyframe always
 * runs `scale(var(--ss-hero-drift-scale-start, 0.88))`, which would otherwise
 * shrink the image back to ~88% regardless of the static `transform: scale(...)`
 * above. The `.ss-lp-root` rules below stay more specific and continue to win
 * on `/lp/` pages. Container has `overflow: visible` so the image can extend
 * past the column edges and reach the full width the hero column visually
 * affords. */
.ss-hero .ss-showcase-image--hero img {
  --ss-hero-drift-scale-start: 1.305;
  --ss-hero-drift-scale-peak: 1.328;
}

/* /lp parity: keep LP hero image size identical to `/`. */
.ss-lp-root .ss-hero .ss-showcase-image--hero img {
  --ss-hero-drift-scale-start: 1.305;
  --ss-hero-drift-scale-peak: 1.328;
}

/* /lp parity (desktop): keep hero media box geometry aligned with the
 * reference landing/wizard rendering where the hero image sits in a
 * near-square visual frame instead of the generic 16:10 showcase ratio. */
@media (min-width: 1101px) {
  .ss-lp-root .ss-hero .ss-showcase-image--hero {
    aspect-ratio: 1 / 1;
    max-width: 610px;
    margin-left: auto;
  }
}

/* Anchor the scaled hero image to the container edge.
 *
 * The hero image lives in the second grid column, whose outer edge is the
 * `.ss-container` edge (same position as the top header CTA / promo bar).
 * The image is scaled up via `transform: scale(...)` and the
 * `ss-hero-sock-drift` animation, so with the default `center center`
 * origin it overflows EQUALLY on both sides — pushing the visible right
 * edge well past the container's right edge.
 *
 * Pinning `transform-origin` to the column's outer edge keeps that edge
 * static and the scale grows only inward (toward the text column), so the
 * hero image always ends exactly at the container's edge — matching the
 * top menu button / content container on every header.
 *
 * Default layout (image on the right): anchor to RIGHT edge.
 * Reversed layout (image on the left, .ss-hero-grid--reverse): anchor to
 * LEFT edge so the image ends at the container's left edge instead.
 *
 * Only applies at the desktop two-column breakpoint (>=1101px). Below that
 * `.ss-hero-grid` collapses to a single centred column and the existing
 * mobile rules already constrain the image inside its wrapper. */
@media (min-width: 1101px) {
  .ss-hero .ss-hero-grid > :nth-child(2) .ss-showcase-image--hero img {
    transform-origin: right center;
  }

  .ss-hero .ss-hero-grid--reverse > :nth-child(2) .ss-showcase-image--hero img {
    transform-origin: left center;
  }
}

/* Hero text safe-area on desktop.
 *
 * The showcase image is rendered with `transform: scale(...)` (≥1.305 on the
 * main site, ≥1.42 on `/lp/`) and `transform-origin: right center` (default
 * layout) / `left center` (`.ss-hero-grid--reverse`). Because of that scale,
 * the image's painted bounding box extends well past its grid-column edge
 * (~150px on `/`, ~205px on `/lp/`) and visually crashes into the text in
 * the adjacent copy column — the column `gap` (48px) alone is not enough.
 *
 * To guarantee at least a 30px visual gap between the headline / lead /
 * checklist and the actually-painted edge of the hero image, constrain
 * `.ss-hero-copy` with extra inline-end padding (or inline-start for the
 * reversed layout). Sized for the default 1280px container; the values
 * comfortably cover both the static scale and the keyframe-peak scale.
 *
 * Only applies at the desktop two-column breakpoint (>=1101px). Below that
 * `.ss-hero-grid` collapses to a single centred column where the text
 * stacks above the image and no horizontal overlap is possible. */
@media (min-width: 1101px) {
  .ss-hero .ss-hero-grid:not(.ss-hero-grid--reverse) .ss-hero-copy {
    padding-inline-end: 140px;
  }

  .ss-hero .ss-hero-grid--reverse .ss-hero-copy {
    padding-inline-start: 140px;
  }

  .ss-lp-root .ss-hero .ss-hero-grid:not(.ss-hero-grid--reverse) .ss-hero-copy {
    padding-inline-end: 200px;
  }

  .ss-lp-root .ss-hero .ss-hero-grid--reverse .ss-hero-copy {
    padding-inline-start: 200px;
  }
}

/* Some legacy hero markup (e.g. landing-preview-body.html) wraps the showcase
 * image in a stray `.ss-card-body` — leftover from the older card layout. The
 * 1.75rem padding inside that wrapper steals ~56px of horizontal space from
 * the image. Inside `.ss-hero` we want the image as the visual anchor, so
 * strip the padding when the card-body actually contains the hero image.
 * Other `.ss-card-body` usages inside the hero (e.g. the Trustpilot card on
 * the right side) keep their padding because the `:has()` selector targets
 * only the image-bearing variant. */
.ss-hero .ss-card-body:has(> .ss-showcase-image--hero) {
  padding: 0;
}

/* ============================================================================
 * Mobile (≤767px) – Hero Header Images
 *
 * Auf schmalen Viewports kollabiert `.ss-hero-grid` zu einer Spalte (Text
 * oben, Bild unten). Ohne weitere Regeln würde das Hero-Bild durch die
 * Desktop-`transform: scale(1.236)` und die `--ss-hero-drift-scale-*`
 * Variablen über seinen Container hinaus wachsen und entweder die CTA-
 * Buttons überdecken oder einen ungeschickt großen Block einnehmen.
 *
 * Diese Regeln gelten für ALLE Hero-Varianten:
 *   - `.ss-showcase-image--hero` (ShowcaseHero-Block)
 *   - `.ss-hero-cms-root` (rohe `hero_html` Inhalte)
 *   - allgemeine `figure`/`img` direkt im `.ss-hero`
 *
 * Wirkung:
 *   - Kein Drift-Scale > 1 mehr → Bild passt in seine Spalte
 *   - Maximalbreite & -höhe deckeln den Footprint
 *   - Etwas Vertikal-Spacing zwischen Text/Buttons und Bild
 * ========================================================================== */
/* Hero collapsed to a single column (≤1100px ↔ `.ss-hero-grid` switches
 * to `1fr` further below). The image lives below the headline + CTA
 * buttons; centre it and add a clear vertical break so it doesn't fuse
 * visually with the action row. The stricter <=767px rule below tightens
 * the size constraints further for phone-sized viewports.
 *
 * Threshold matches the grid-collapse breakpoint exactly (the matching
 * `(min-width: 1101px)` Farbkatalog rule below picks up at >=1101px). */
@media (max-width: 1100px) {
  .ss-hero-grid > :nth-child(2) {
    margin-top: 1.5rem;
    justify-self: center;
    text-align: center;
  }

  .ss-hero .ss-showcase-image--hero,
  .ss-hero .ss-hero-cms-root figure,
  .ss-hero .ss-hero-cms-root .wp-block-image,
  .ss-hero .ss-hero-cms-root > img {
    margin-left: auto;
    margin-right: auto;
  }
}

/* Tablet / small laptop: grid is already single-column below 1100px, but hero
 * drift + scale still matched desktop — image painted far outside the column
 * (negative offsets, horizontal scroll). Phone rules only apply ≤767px. */
@media (max-width: 1100px) and (min-width: 768px) {
  .ss-hero .ss-showcase-image--hero,
  .ss-hero .ss-hero-cms-root figure,
  .ss-hero .ss-hero-cms-root .wp-block-image,
  .ss-hero .ss-hero-cms-root > img {
    /* Reset the 16:10 aspect-ratio inherited from `.ss-showcase-image`. In the
     * stacked single-column layout the wrapper must size to the image's own
     * height; the inherited 16:10 box combined with `overflow: hidden` below
     * was clipping the bottom of portrait sock photos. */
    aspect-ratio: auto;
    height: auto;
    max-width: min(560px, 100%);
    width: 100%;
    overflow: hidden;
  }

  .ss-hero .ss-showcase-image--hero img,
  .ss-lp-root .ss-hero .ss-showcase-image--hero img,
  .ss-hero .ss-hero-cms-root img {
    --ss-hero-drift-scale-start: 1;
    --ss-hero-drift-scale-peak: 1;
    transform: none !important;
    width: 100%;
    height: auto;
    max-width: 100%;
    object-fit: contain;
    animation: none;
  }
}

@media (max-width: 767px) {
  .ss-hero-grid {
    gap: 1.25rem;
  }

  .ss-hero .ss-showcase-image--hero,
  .ss-hero .ss-hero-cms-root figure,
  .ss-hero .ss-hero-cms-root .wp-block-image,
  .ss-hero .ss-hero-cms-root > img {
    /* Reset the 16:10 aspect-ratio inherited from `.ss-showcase-image`. With
     * the inherited ratio + `overflow: hidden`, a portrait hero photo (e.g.
     * the DHL sock on /lp/custom-socken) had its bottom clipped on narrow
     * phones: the wrapper resolved to ~16:10 while the `img` inside —
     * `width: 100%; height: auto; object-fit: contain` — rendered at its
     * intrinsic (taller) ratio and spilled past the wrapper's bottom edge.
     * The image's own `max-height` rule below keeps the photo inside the
     * 58vh / 440px ceiling. */
    aspect-ratio: auto;
    height: auto;
    max-width: min(100%, 36rem);
    max-height: min(58vh, 440px);
    margin-left: auto;
    margin-right: auto;
    overflow: hidden;
  }

  .ss-hero .ss-showcase-image--hero img,
  .ss-hero .ss-hero-cms-root img {
    --ss-hero-drift-scale-start: 1;
    --ss-hero-drift-scale-peak: 1;
    transform: none !important;
    width: 100%;
    max-width: 100%;
    height: auto;
    max-height: min(58vh, 440px);
    object-fit: contain;
    animation: none;
  }

  /* On phones the gap is already small (1.25rem), and the buttons are
   * full-width — a smaller top margin keeps the photo close-by without
   * leaving a gaping hole. */
  .ss-hero-grid > :nth-child(2) {
    margin-top: 0.75rem;
  }
}

@media (max-width: 767px) and (prefers-reduced-motion: reduce) {
  .ss-hero .ss-showcase-image--hero img {
    transform: none !important;
  }
}

/* Farbkatalog Hero: ab dem Desktop-Layout (Grid wieder zweispaltig,
 * d.h. Viewport > 1100px) rechtsbündig und etwas kleiner, damit das
 * Bild an der gleichen rechten Kante wie der "Jetzt anfragen" Button im
 * Header endet (statt darüber hinauszudriften). Im einspaltigen Layout
 * darunter übernimmt der allgemeine `(max-width: 1099px)`-Block die
 * Zentrierung. Greift sowohl im Editor-Block (`.ss-showcase-image--hero`)
 * als auch im rohen `hero_html` (figure/img). */
@media (min-width: 1101px) {
  .ss-hero--farbkatalog .ss-showcase-image--hero,
  .ss-hero--farbkatalog .ss-hero-cms-root figure,
  .ss-hero--farbkatalog .ss-hero-cms-root .wp-block-image,
  .ss-hero--farbkatalog .ss-hero-cms-root img {
    margin-left: auto;
    margin-right: 0;
    max-width: 460px;
  }

  .ss-hero--farbkatalog .ss-showcase-image--hero img {
    --ss-hero-drift-scale-start: 1;
    --ss-hero-drift-scale-peak: 1;
    transform: none !important;
  }

  .ss-hero--farbkatalog .ss-hero-cms-root img {
    width: 100%;
    height: auto;
    object-fit: contain;
  }
}

.ss-showcase-image--tall {
  aspect-ratio: 4 / 3;
}

/* Story Stack: volles Bild sichtbar, kein fester Rahmen (object-fit contain, natürliche Höhe) */
.ss-showcase-image--story-fit {
  aspect-ratio: auto;
  height: auto;
  min-height: 0;
}

.ss-showcase-image--story-fit::before,
.ss-showcase-image--story-fit::after {
  display: none;
}

.ss-showcase-image--story-fit img {
  width: 100%;
  height: auto;
  object-fit: contain;
}

/* Eigene Hintergrundfarbe: keine Blur-/Verlaufs-Layer, Transparenz im Bild zeigt die Fläche */
.ss-showcase-image--user-bg::before,
.ss-showcase-image--user-bg::after {
  display: none;
}

/* Galerie Beispielprojekte: ohne Rahmen, Bildformat exakt (1920×1520), Ratio beibehalten */
.ss-showcase-image--gallery {
  border-radius: 0;
  background: transparent;
  box-shadow: none;
  overflow: hidden;
  aspect-ratio: 1920 / 1520;
}

.ss-showcase-image--gallery::before,
.ss-showcase-image--gallery::after {
  display: none;
}

.ss-showcase-image--gallery img {
  object-fit: contain;
  width: 100%;
  height: 100%;
}

.ss-media-thumb {
  position: relative;
  isolation: isolate;
  width: 100%;
  aspect-ratio: 16 / 11;
  border-radius: var(--ss-radius-lg);
  overflow: hidden;
  border: 0;
  background:
    radial-gradient(circle at center, rgba(255, 255, 255, 0.16) 0%, rgba(15, 23, 42, 0.06) 62%, transparent 100%);
  margin: 0;
}

.ss-media-thumb img {
  position: relative;
  z-index: 2;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.ss-media-thumb--contain img {
  object-fit: contain;
  background: white;
}

/* Inspiration: Karten-Thumbnails höher als globales 16/11 */
.ss-inspiration-main .ss-card-grid .ss-media-thumb {
  aspect-ratio: 5 / 4;
}

/* Sockentypen-Grid: Bilder nicht abschneiden, vollständig anzeigen */
.ss-type-grid .ss-media-thumb img {
  object-fit: contain;
  background: rgba(255, 255, 255, 0.06);
}

/* Type grid cards: fill card width; frame height follows the image (no fixed 16/11 letterboxing). */
.ss-type-grid .ss-media-thumb.ss-media-thumb--contain {
  aspect-ratio: auto;
  height: auto;
  min-height: 0;
}

.ss-type-grid .ss-media-thumb.ss-media-thumb--contain::before,
.ss-type-grid .ss-media-thumb.ss-media-thumb--contain::after {
  display: none;
}

.ss-type-grid .ss-media-thumb.ss-media-thumb--contain img {
  width: 100%;
  height: auto;
  object-fit: contain;
  display: block;
}

#sockenlaengen-details .ss-type-grid .ss-media-thumb {
  border-radius: 0;
}

#sockenlaengen-details .ss-type-grid .ss-media-thumb img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
  background: transparent;
}

.ss-type-grid,
.ss-spec-grid,
.ss-step-grid {
  display: grid;
  gap: 1.5rem;
}

.ss-type-grid {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}

.ss-spec-grid {
  grid-template-columns: repeat(4, minmax(0, 1fr));
}

.ss-step-grid {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}

.ss-step-card {
  padding: 1.75rem;
}

/* -------------------------------------------------------------------------
 * Shells — pair with .ss-glass-card (+ role: .ss-prose-section, .ss-feature-panel,
 * .ss-step-card, .ss-toc). One place for responsive inset; drop duplicated
 * Tailwind border/bg/radius on those cards (chrome comes from .ss-glass-card).
 * ------------------------------------------------------------------------- */
.ss-glass-card.ss-prose-section.ss-shell-prose {
  padding: 1.5rem;
}

@media (min-width: 768px) {
  .ss-glass-card.ss-prose-section.ss-shell-prose {
    padding: 2rem;
  }
}

.ss-glass-card.ss-prose-section.ss-shell-prose-lg {
  padding: 1rem;
}

@media (min-width: 768px) {
  .ss-glass-card.ss-prose-section.ss-shell-prose-lg {
    padding: 1.5rem;
  }
}

@media (min-width: 1024px) {
  .ss-glass-card.ss-prose-section.ss-shell-prose-lg {
    padding: 2rem;
  }
}

.ss-glass-card.ss-feature-panel.ss-shell-feature-cta {
  padding: 1.5rem;
  text-align: center;
  width: 100%;
}

@media (min-width: 768px) {
  .ss-glass-card.ss-feature-panel.ss-shell-feature-cta {
    padding: 2rem;
  }
}

.ss-glass-card.ss-step-card.ss-shell-step {
  padding: 1.5rem;
}

.ss-glass-card.ss-toc.ss-shell-toc {
  padding: 1rem;
}

.ss-glass-card.ss-shell-media-figure {
  padding: 1rem;
}

@media (min-width: 768px) {
  .ss-glass-card.ss-shell-media-figure {
    padding: 1.5rem;
  }
}

.ss-glass-card.ss-shell-media-figure figure {
  width: 100%;
  margin-top: 0;
  margin-bottom: 0;
}

.ss-glass-card.ss-shell-media-figure figure a {
  display: block;
  width: 100%;
}

.ss-glass-card.ss-shell-media-figure img {
  width: 100%;
  max-width: 100%;
  height: auto;
  object-fit: contain;
}

.ss-glass-card.ss-card.ss-shell-card-overflow {
  overflow: hidden;
}

.ss-glass-card.ss-card.ss-shell-card-inset-sm {
  padding: 1rem;
}

.ss-light-card.ss-tab-card.ss-shell-tab {
  padding: 1rem;
}

.ss-logo-marquee-section .ss-feature-panel {
  padding-bottom: 3rem;
}

.ss-logo-marquee-window {
  margin-bottom: 0;
}

/* Logo-Marquee / Referenzen-Slider: gleiche Kachelgröße für alle Logos (Quellbild egal). */
/* Zentrierung hier statt nur per Tailwind: Klassen aus lib/referenzenMarqueeRasterLogos.ts werden nicht gescannt. */
.ss-logo-marquee-tile {
  flex: 0 0 auto;
  position: relative;
  box-sizing: border-box;
  display: grid;
  place-items: center;
  justify-content: center;
  align-content: center;
  width: 320px;
  min-width: 320px;
  max-width: 320px;
  height: 200px;
  min-height: 200px;
  max-height: 200px;
}

/*
 * Sprite-Layer rendert die Originalkachel **1:1** (eigene Pixelmaße kommen vom inline-Style aus
 * `marqueeSpriteSliceStyle`); CmsImage-`<img>` skaliert per object-fit innerhalb der Kachel.
 * Beide werden vom Grid-Container der Kachel zentriert (`place-items: center`).
 */
.ss-logo-marquee-tile > .ss-logo-marquee-tile__img {
  display: block;
  max-width: 100%;
  max-height: 100%;
  width: auto;
  height: auto;
  object-fit: contain;
  object-position: center;
}

.ss-logo-marquee-tile > .ss-marquee-raster-sprite {
  display: block;
  background-repeat: no-repeat;
  /* Falls Originalbild größer als die Kachel ist (z. B. 340 vs. 320 px breit),
     nicht über die Kachelkanten ragen — gleiches Verhalten wie object-fit: contain für <img>. */
  max-width: 100%;
  max-height: 100%;
}

.ss-step-number {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 3rem;
  height: 3rem;
  margin-bottom: 1rem;
  border-radius: var(--ss-radius-md);
  background: rgba(248, 215, 73, 0.16);
  border: 1px solid rgba(248, 215, 73, 0.28);
  color: var(--ss-page-heading);
  font-size: 1.125rem;
  font-weight: 800;
}

.ss-projektablauf-steps-fullbleed :is(.ss-kicker, .ss-step-number) {
  color: var(--ss-dark-blue) !important;
}

.ss-step-icon {
  width: 1.375rem;
  height: 1.375rem;
  flex-shrink: 0;
}

.ss-tab-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 1rem;
}

.ss-tab-card {
  padding: 1.5rem;
}

/* Image-card normalization:
 * - square image corners (no rounded media viewport)
 * - image always fills viewport (no letterboxing gaps above/below)
 * - optional blurred bottom stripe has a fixed height across cards
 */
.ss-tab-card .ss-media-thumb,
.ss-card-grid .ss-card .ss-media-thumb {
  border-radius: 0;
}

.ss-tab-card .ss-media-thumb img,
.ss-card-grid .ss-card .ss-media-thumb img,
.ss-tab-card .ss-media-thumb--contain img,
.ss-card-grid .ss-card .ss-media-thumb--contain img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
  background: transparent;
}

.ss-tab-card .ss-media-thumb::before,
.ss-card-grid .ss-card .ss-media-thumb::before {
  inset: auto 0 0 0;
  height: 46px;
  filter: blur(16px) saturate(1.05);
  transform: none;
  opacity: 0.4;
}

.ss-tab-card .ss-media-thumb::after,
.ss-card-grid .ss-card .ss-media-thumb::after {
  inset: auto 0 0 0;
  height: 46px;
  background: linear-gradient(180deg, rgba(15, 23, 42, 0) 0%, rgba(15, 23, 42, 0.12) 100%);
}

/* Media-card headline spacing: keep image→title distance consistent across
 * all card variants that use media thumbs. */
.ss-card-grid .ss-card .ss-media-thumb + .ss-card-title,
.ss-tab-card .ss-media-thumb + .ss-card-title,
.ss-type-grid .ss-card .ss-media-thumb + .ss-card-title,
.ss-spec-grid .ss-card .ss-media-thumb + .ss-card-title {
  margin-top: -0.35rem;
}

.ss-stat-banner {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 1.5rem;
  align-items: center;
}

.ss-stat-value {
  display: block;
  font-size: clamp(2.5rem, 5vw, 4.5rem);
  line-height: 1;
  font-weight: 800;
  color: var(--ss-page-heading);
}

.ss-seo-block {
  padding: 2rem;
}

.ss-seo-stack {
  display: grid;
  gap: 1.25rem;
}

.ss-seo-stack h3 {
  margin: 0 0 0.5rem;
}

.ss-muted-card {
  background: rgba(15, 23, 42, 0.5);
  border: 1px solid rgba(148, 163, 184, 0.12);
  border-radius: var(--ss-radius-lg);
  padding: 1.25rem;
}

.ss-footer {
  margin-top: 4rem;
  border-top: 1px solid rgba(234, 179, 8, 0.12);
  background: rgba(2, 6, 23, 0.86);
  padding: 3rem 0 1.5rem;
}

.ss-footer-grid {
  display: grid;
  grid-template-columns: minmax(0, 1.4fr) repeat(3, minmax(0, 1fr));
  gap: 2rem 1.5rem;
  color: var(--ss-text-muted);
}

.ss-footer-brand {
  display: flex;
  flex-direction: column;
  gap: 0.75rem;
}

.ss-footer-logo img {
  display: block;
  height: 2rem;
  width: auto;
  opacity: 0.95;
}

.ss-footer-tagline {
  margin: 0;
  font-size: 0.875rem;
  line-height: 1.45;
  color: var(--ss-text-soft);
  max-width: 22ch;
}

.ss-footer-col {
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
}

.ss-footer-heading {
  font-size: 0.75rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--ss-accent-kicker);
  margin-bottom: 0.25rem;
}

.ss-footer-col a {
  color: var(--ss-text-soft);
  text-decoration: none;
  font-size: 0.9rem;
}

.ss-footer-col a:hover {
  color: var(--ss-text-inverse);
}

.ss-footer a {
  color: rgba(255, 255, 255, 0.82);
  text-decoration-color: rgba(255, 255, 255, 0.42);
  transition: color 160ms ease, text-decoration-color 160ms ease;
}

.ss-footer a:hover {
  color: #ffffff;
  text-decoration-color: rgba(255, 255, 255, 0.86);
}

.ss-footer-bottom {
  margin-top: 2rem;
  padding-top: 1.5rem;
  border-top: 1px solid rgba(148, 163, 184, 0.15);
}

.ss-footer-copy {
  margin: 0;
  font-size: 0.8125rem;
  color: var(--ss-text-muted);
}

/* Legacy single-row footer (elements.html etc.) */
.ss-footer-inner {
  display: flex;
  justify-content: space-between;
  gap: 1rem;
  align-items: center;
  min-height: 96px;
  color: var(--ss-text-muted);
}

.ss-footer-links {
  display: flex;
  flex-wrap: wrap;
  gap: 1rem;
}

.ss-footer-links a {
  color: var(--ss-text-soft);
  text-decoration: none;
}

.ss-footer-links a:hover {
  color: var(--ss-text-inverse);
}

.ss-impressum {
  padding-top: 2rem;
  padding-bottom: 3rem;
}

.ss-impressum .ss-prose-section p {
  margin: 0 0 0.75rem;
  font-size: 0.9375rem;
  color: var(--ss-page-body-soft);
}

/* Eigene Impressum-Seite (impressum.html) */
.ss-impressum-page {
  padding: 4rem 0 5rem;
}

.ss-impressum-content {
  max-width: 52rem;
  margin: 0 auto;
}

.ss-impressum-title {
  margin: 0 0 1.5rem;
  font-size: 1.875rem;
  line-height: 2.25rem;
  font-weight: 700;
  color: var(--ss-text-primary);
}

.ss-impressum-content p {
  margin: 0 0 1rem;
  font-size: 1rem;
  line-height: 1.5rem;
  color: var(--ss-text-secondary);
}

.ss-link-back {
  color: var(--ss-accent-kicker);
  text-decoration: none;
}

.ss-link-back:hover {
  text-decoration: underline;
}

/* Seiten-Hintergrundbild (CMS: background_image_url) – angezeigt, sobald angegeben */
.ss-page--custom-bg [data-ss-background] {
  background-image: var(--ss-page-bg-image);
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
}
.ss-page--custom-bg [data-ss-background]::before {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(135deg, rgba(2, 6, 23, 0.82) 0%, rgba(15, 23, 42, 0.72) 55%, rgba(2, 6, 23, 0.82) 100%);
  z-index: 0;
}
.ss-page--custom-bg [data-ss-background] .ss-orb,
.ss-page--custom-bg [data-ss-background] .ss-grid-glow {
  z-index: 1;
}

.ss-animated-bg {
  position: absolute;
  inset: 0;
  z-index: 1;
  pointer-events: none;
  overflow: hidden;
}

.ss-orb {
  position: absolute;
  border-radius: 999px;
  filter: blur(72px);
  opacity: 0.65;
  will-change: transform, opacity;
  animation: ss-pulse-float 8s ease-in-out infinite;
}

.ss-orb--yellow {
  top: 4rem;
  left: -2rem;
  width: 24rem;
  height: 24rem;
  background: rgba(234, 179, 8, 0.18);
}

.ss-orb--green {
  right: 2rem;
  bottom: 4rem;
  width: 20rem;
  height: 20rem;
  background: rgba(34, 197, 94, 0.16);
  animation-delay: 1.2s;
}

.ss-orb--center {
  top: 42%;
  left: 50%;
  width: 22rem;
  height: 22rem;
  transform: translate(-50%, -50%);
  background: rgba(248, 215, 73, 0.08);
  animation-delay: 0.5s;
}

.ss-grid-glow {
  position: absolute;
  inset: 0;
  background-image:
    linear-gradient(rgba(255, 255, 255, 0.04) 1px, transparent 1px),
    linear-gradient(90deg, rgba(255, 255, 255, 0.04) 1px, transparent 1px);
  background-size: 42px 42px;
  mask-image: radial-gradient(circle at center, rgba(0, 0, 0, 0.58), transparent 82%);
  opacity: 0.22;
}

/* Reveal hooks bleiben für JS/Klassen; keine Verschiebung — sonst „springen“ Karten und wirken Abstände im Grid beim Scrollen/Hover instabil. */
[data-ss-reveal],
[data-ss-reveal].is-visible {
  opacity: 1;
  transform: none;
}

/* prefers-reduced-motion: dekorative Animationen abschalten (A11y Best Practice) */
@media (prefers-reduced-motion: reduce) {
  .ss-orb,
  .ss-animated-bg * {
    animation: none;
  }

  .ss-showcase-image--hero::before,
  .ss-showcase-image--hero::after,
  .ss-showcase-image--hero img {
    animation: none;
  }

  [data-ss-reveal],
  [data-ss-reveal].is-visible {
    transition: none;
    transform: none;
  }
}

@keyframes ss-pulse-float {
  0%,
  100% {
    opacity: 0.55;
    transform: translate3d(0, 0, 0) scale(1);
  }

  50% {
    opacity: 1;
    transform: translate3d(0, -18px, 0) scale(1.06);
  }
}

@keyframes ss-hero-media-float {
  0%,
  100% {
    transform: scale(1.28) translate3d(0, 0, 0);
  }

  50% {
    transform: scale(1.34) translate3d(0, -10px, 0);
  }
}

@keyframes ss-hero-media-pulse {
  0%,
  100% {
    opacity: 0.78;
  }

  50% {
    opacity: 1;
  }
}

@keyframes ss-hero-shadow-pulse {
  0%,
  100% {
    opacity: 0.1;
  }

  50% {
    opacity: 0.35;
  }
}

@keyframes ss-hero-sock-drift {
  0%,
  100% {
    transform: scale(var(--ss-hero-drift-scale-start, 0.88)) translate3d(0, 0, 0);
  }

  50% {
    transform: scale(var(--ss-hero-drift-scale-peak, 0.896)) translate3d(0, -4px, 0);
  }
}

@media (min-width: 768px) {
  .ss-display,
  .ss-home-title {
    font-size: 3.75rem;
  }

  .ss-home-title--compact {
    font-size: clamp(2.35rem, 3.5vw, 3.15rem);
  }
}

@media (max-width: 1100px) {
  .ss-hero-grid,
  .ss-subhero-grid,
  .ss-content-shell,
  .ss-card-grid,
  .ss-metrics,
  .ss-inline-grid,
  .ss-trust-band,
  .ss-type-grid,
  .ss-spec-grid,
  .ss-step-grid,
  .ss-tab-grid,
  .ss-stat-banner,
  .ss-style-grid,
  .ss-gallery,
  .ss-sliders-row {
    grid-template-columns: 1fr;
  }

  /* Eine Spalte: wieder Text zuerst, Bild darunter (Lesbarkeit) */
  .ss-hero-grid--reverse > :nth-child(1),
  .ss-hero-grid--reverse > :nth-child(2) {
    order: unset;
  }

  .ss-sidebar {
    position: static;
  }

  .ss-trustpilot-carousel {
    grid-template-columns: 1fr;
  }

  .ss-footer-grid {
    grid-template-columns: 1fr;
  }

  /*
   * Card-Grid, Tab-Cards: schmale Viewports — festes 16/11 quetscht hohe Motive.
   * Type-Grid: natürliche Höhe global (s. oben .ss-type-grid .ss-media-thumb--contain).
   * Tab-Cards: Desktop erzwingt sonst cover; hier vollständige Grafiken.
   */
  .ss-card-grid .ss-media-thumb.ss-media-thumb--contain,
  .ss-tab-card .ss-media-thumb.ss-media-thumb--contain {
    aspect-ratio: auto !important;
    height: auto !important;
    min-height: 0;
  }

  .ss-card-grid .ss-media-thumb.ss-media-thumb--contain::before,
  .ss-card-grid .ss-media-thumb.ss-media-thumb--contain::after,
  .ss-tab-card .ss-media-thumb.ss-media-thumb--contain::before,
  .ss-tab-card .ss-media-thumb.ss-media-thumb--contain::after {
    display: none;
  }

  .ss-card-grid .ss-media-thumb.ss-media-thumb--contain img,
  .ss-tab-card .ss-media-thumb.ss-media-thumb--contain img {
    width: 100%;
    height: auto;
    object-fit: contain;
  }
}

/* Keep this max-width in sync with the Tailwind `ss-nav` breakpoint
 * (cms-app/tailwind.config.ts → screens.ss-nav: 1100px). Below that width
 * the desktop nav is force-hidden and the burger toggle takes its place,
 * so the navigation never wraps onto a second line. */
@media (max-width: 1099px) {
  .ss-desktop-nav {
    display: none;
  }

  .ss-nav-toggle {
    display: inline-flex;
  }

  /* Wide enough: logo + controls share one row. Narrow: stack — logo row centered. */
  .ss-topbar-inner {
    display: flex;
    flex-direction: row;
    flex-wrap: nowrap;
    align-items: center;
    justify-content: space-between;
    gap: 0.5rem;
    min-height: 0;
    min-width: 0;
    padding-top: 0.35rem;
    padding-bottom: 0.35rem;
  }

  .ss-topbar-inner > .ss-brand {
    flex: 1 1 auto;
    min-width: 0;
    max-width: none;
    justify-content: flex-start;
  }

  .ss-topbar-inner > .ss-header-actions {
    flex: 0 0 auto;
    flex-shrink: 0;
    flex-wrap: wrap;
    justify-content: flex-end;
    width: auto;
    max-width: 100%;
  }

  .ss-hero {
    padding-top: var(--ss-raw-inner-section-pt, max(0.75rem, calc(4rem - 70px)));
  }
}

@media (max-width: 719px) {
  .ss-topbar-inner {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    row-gap: 0.45rem;
    column-gap: 0.5rem;
    flex-wrap: unset;
    justify-content: unset;
  }

  .ss-topbar-inner > .ss-brand {
    grid-row: 1;
    grid-column: 1;
    justify-self: center;
    max-width: 100%;
    flex: unset;
    justify-content: center;
    margin-top: 15px;
    margin-bottom: 15px;
  }

  .ss-topbar-inner > .ss-header-actions {
    grid-row: 2;
    grid-column: 1;
    justify-self: end;
    flex: unset;
  }
}

/* Mobile (≤767px): give the sticky main menu a small bottom gap so the
 * first content block (hero badge / headline) doesn't sit flush against
 * the topbar. Sticky `.ss-site-header` still pins to the top during scroll;
 * the margin only adds initial spacing in the normal flow. */
@media (max-width: 767px) {
  .ss-site-header {
    margin-bottom: 15px;
  }
}

@media (max-width: 640px) {
  .ss-container {
    width: min(calc(100% - 1.25rem), var(--ss-max-width));
  }

  .ss-feature-panel,
  .ss-card-body,
  .ss-prose-section {
    padding: 1.25rem;
  }

  .ss-footer-inner,
  .ss-footer-inner .ss-actions {
    flex-direction: column;
    align-items: stretch;
  }

  .ss-topbar-inner {
    row-gap: 0.4rem;
    padding-top: 0.3rem;
    padding-bottom: 0.3rem;
  }

  .ss-header-actions {
    gap: 0.4rem;
    flex-shrink: 0;
  }

  .ss-site-header .ss-topbar .ss-btn--green {
    flex: 0 1 auto;
    min-width: 0;
    white-space: normal;
    text-align: center;
    line-height: 1.2;
    padding-top: 0.45rem;
    padding-bottom: 0.45rem;
  }

  .ss-hero-copy {
    min-width: 0;
    width: 100%;
    max-width: 100%;
  }

  .ss-hero-copy .ss-actions {
    width: 100%;
    max-width: 100%;
    flex-direction: column;
    align-items: stretch;
  }

  .ss-hero-copy .ss-actions .ss-btn {
    width: 100%;
    max-width: 100%;
    justify-content: center;
    box-sizing: border-box;
  }

  .ss-badge {
    white-space: normal;
    text-align: center;
    max-width: 100%;
    box-sizing: border-box;
  }

  .ss-footer-inner {
    padding: 1.5rem 0;
    text-align: center;
  }
}

/* Viewports with burger menu: language control only under `.ss-mobile-lang`,
 * not in the header (avoids two identical pickers when the menu is open).
 * Breakpoint aligned with `.ss-desktop-nav` hide rule (max-width: 1099px). */
@media (max-width: 1099px) {
  .ss-header-actions .ss-lang-switch {
    display: none;
  }
}

/* Very small phones: compact CTA so burger + button stay on-screen. */
@media (max-width: 480px) {
  .ss-header-actions .ss-btn {
    padding: 0 0.85rem;
    font-size: 14px;
  }
}

/* Kontakt-Sektion: mittig, keine abgeschnittenen Titel */
#contact .ss-container {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
}

#contact .ss-home-section-title,
#contact .ss-home-copy {
  max-width: 48rem;
}

#contact .ss-card-grid {
  width: 100%;
  max-width: 56rem;
  margin-left: auto;
  margin-right: auto;
}

#contact .ss-glass-card {
  padding: 1.75rem 2rem;
  text-align: left;
}

#contact .ss-card-title {
  margin: 0 0 0.75rem;
  padding: 0;
  line-height: 1.5;
  overflow: visible;
}

#contact .ss-card-copy {
  margin: 0;
  line-height: 1.6;
}

/*
 * Kontakt-Seite / Hero: Dana-Karte — Telefon + E-Mail wie im Anfrage-Wizard
 * (`.wizard-contact-widget-*` aus `anfrage/index.html` + 2026-Light in `theme-anfrage-light.css`).
 * Nur innerhalb `.ss-kontakt-dana-widget`, damit andere Seiten unberührt bleiben.
 */
.ss-kontakt-dana-widget .wizard-contact-widget-actions {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  gap: 10px;
}

.ss-kontakt-dana-widget .wizard-contact-widget-actions > li {
  list-style: none;
  margin: 0;
  padding: 0;
}

.ss-kontakt-dana-widget .wizard-contact-widget-link {
  display: grid;
  grid-template-columns: auto 1fr;
  grid-template-rows: auto auto;
  align-items: center;
  column-gap: 14px;
  row-gap: 2px;
  padding: 10px 14px;
  border-radius: 12px;
  text-decoration: none;
  color: var(--ss-text-primary, #0f172a);
  background: rgba(248, 250, 252, 0.98);
  border: 1px solid var(--ss-elevated-border, rgba(148, 163, 184, 0.35));
  box-shadow: var(--ss-elevated-shadow, 0 1px 2px rgba(15, 23, 42, 0.06));
  transition:
    border-color 0.15s ease,
    background 0.15s ease;
}

.ss-kontakt-dana-widget .wizard-contact-widget-link-icon {
  grid-column: 1;
  grid-row: 1 / span 2;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 auto;
  width: 36px;
  height: 36px;
  border-radius: 999px;
  background: rgba(248, 215, 73, 0.18);
  color: var(--ss-page-heading, #1e293b);
  border: 1px solid rgba(212, 168, 0, 0.45);
}

.ss-kontakt-dana-widget .wizard-contact-widget-link-icon svg {
  width: 16px;
  height: 16px;
}

.ss-kontakt-dana-widget .wizard-contact-widget-link-label {
  grid-column: 2;
  grid-row: 1;
  font-size: 11px;
  font-weight: 800;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--ss-page-heading, #1e293b);
}

.ss-kontakt-dana-widget .wizard-contact-widget-link-value {
  grid-column: 2;
  grid-row: 2;
  font-size: 14px;
  font-weight: 600;
  word-break: break-word;
}

@media (min-width: 480px) {
  .ss-kontakt-dana-widget .wizard-contact-widget-link {
    grid-template-columns: auto 7.5rem 1fr;
    grid-template-rows: auto;
    row-gap: 0;
  }

  .ss-kontakt-dana-widget .wizard-contact-widget-link-icon {
    grid-column: 1;
    grid-row: 1;
  }

  .ss-kontakt-dana-widget .wizard-contact-widget-link-label {
    grid-column: 2;
    grid-row: 1;
  }

  .ss-kontakt-dana-widget .wizard-contact-widget-link-value {
    grid-column: 3;
    grid-row: 1;
  }
}

.ss-kontakt-dana-widget .wizard-contact-widget-link:hover {
  border-color: rgba(212, 168, 0, 0.55);
  background: rgba(255, 251, 235, 0.95);
}

.ss-kontakt-dana-widget .wizard-contact-widget-link:focus-visible {
  outline: 2px solid rgba(22, 163, 74, 0.45);
  outline-offset: 2px;
}

[data-theme='schlauesocke-2026'] .ss-kontakt-dana-widget .wizard-contact-widget-link {
  color: var(--ss-text-primary);
  background: rgba(248, 250, 252, 0.98);
  border-color: var(--ss-elevated-border);
  border-radius: var(--ss-radius-md, 12px);
  box-shadow: var(--ss-elevated-shadow);
}

[data-theme='schlauesocke-2026'] .ss-kontakt-dana-widget .wizard-contact-widget-link:hover {
  border-color: rgba(212, 168, 0, 0.55);
  background: rgba(255, 251, 235, 0.95);
}

[data-theme='schlauesocke-2026'] .ss-kontakt-dana-widget .wizard-contact-widget-link-label {
  color: var(--ss-page-heading);
  font-weight: 600;
}

[data-theme='schlauesocke-2026'] .ss-kontakt-dana-widget .wizard-contact-widget-link-icon {
  background: rgba(248, 215, 73, 0.18);
  border-color: rgba(212, 168, 0, 0.45);
  color: var(--ss-page-heading);
}

/* Trustpilot-SectionCopy: ein Satz möglichst in einer Zeile */
[data-section-key="trustpilot"] .ss-trustpilot-copy {
  max-width: 56rem;
}

/* Full-width TrustBox on desktop; narrow fit-content only on small screens (avoids micro layout). */
.ss-feature-panel.text-center .ss-trustpilot-panel {
  display: flex;
  flex-direction: column;
  align-items: center;
  width: 100%;
  max-width: 100%;
  margin-left: auto;
  margin-right: auto;
}

.ss-feature-panel.text-center .ss-trustpilot-panel .trustpilot-widget {
  width: 100%;
  max-width: 100%;
}

@media (max-width: 1023px) {
  .ss-feature-panel.text-center .ss-trustpilot-panel {
    width: fit-content;
  }
}

/* Internal links (Weitere individuelle Socken) */
#weitere-socken .ss-internal-links-intro {
  margin-bottom: 1rem;
}

.ss-internal-links {
  display: flex;
  flex-wrap: wrap;
  gap: 0.75rem 1.5rem;
  margin: 0;
  padding: 0;
  list-style: none;
}

.ss-internal-link {
  color: var(--ss-yellow);
  text-decoration: underline;
  text-underline-offset: 0.2em;
}

.ss-internal-link:hover {
  color: var(--ss-yellow-hover);
}

/* ========== Content Elements Showcase: FAQ, Table, Gallery, Legal, Link list, Custom HTML, Sliders row ========== */

/* FAQ accordion — Schlauesocke light (details/summary, no JS) */
article.ss-glass-card.ss-prose-section:has(.ss-faq),
article.ss-faq-section.ss-glass-card.ss-prose-section {
  --faq-bg: #ffffff;
  --faq-section-bg: #fbfaf7;
  --faq-border: #e3e8df;
  --faq-hover: #f3f8f1;
  --faq-hover-border: #9ccf91;
  --faq-active: #f7fbf5;
  --faq-active-border: #7fbd72;
  --text-dark: #1f243f;
  --text-muted: #5b6475;
  --green: #4fa342;

  background: var(--faq-bg);
  border: 1px solid #e8ece6;
  border-radius: 24px;
  box-shadow: 0 16px 40px rgba(20, 30, 50, 0.06);
  padding: 56px;
  backdrop-filter: none;
}

@media (max-width: 640px) {
  article.ss-glass-card.ss-prose-section:has(.ss-faq),
  article.ss-faq-section.ss-glass-card.ss-prose-section {
    padding: 1.75rem;
  }
}

.ss-faq {
  display: grid;
  gap: 14px;
}

.ss-faq-item {
  border: 1px solid var(--faq-border, #e3e8df);
  border-radius: 16px;
  background: var(--faq-bg, #ffffff);
  overflow: hidden;
  transition:
    background-color 0.18s ease,
    border-color 0.18s ease;
}

.ss-faq-item:hover {
  background: var(--faq-hover, #f3f8f1);
  border-color: var(--faq-hover-border, #9ccf91);
}

.ss-faq-item[open] {
  background: var(--faq-active, #f7fbf5);
  border-color: var(--faq-active-border, #7fbd72);
}

.ss-faq-item[open]:hover {
  background: var(--faq-active, #f7fbf5);
  border-color: var(--faq-active-border, #7fbd72);
}

.ss-faq-item summary {
  padding: 22px 26px;
  font-weight: 700;
  color: var(--text-dark, #1f243f);
  cursor: pointer;
  list-style: none;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
}

.ss-faq-item summary::-webkit-details-marker {
  display: none;
}

.ss-faq-item summary::after {
  content: '+';
  flex-shrink: 0;
  font-size: 22px;
  font-weight: 600;
  line-height: 1;
  color: var(--green, #4fa342);
  transition: transform 180ms ease;
}

.ss-faq-item[open] summary::after {
  transform: rotate(45deg);
}

.ss-faq-item summary:focus-visible {
  outline: 2px solid var(--green, #4fa342);
  outline-offset: 2px;
}

.ss-faq-item [data-faq-answer] {
  padding: 0 26px 22px;
  color: var(--text-muted, #5b6475);
  font-size: 16px;
  line-height: 1.6;
}

.ss-faq-item [data-faq-answer] p {
  margin: 0 0 0.75rem;
}

.ss-faq-item [data-faq-answer] p:first-child {
  margin-top: 14px;
}

.ss-faq-item [data-faq-answer] p:last-child {
  margin-bottom: 0;
}

/* Farbkatalog: Grid ohne Rahmen, volle Breite, gleiche Kartenhöhe */
.ss-farbkatalog .ss-farbkatalog-grid {
  width: 100%;
  border: none;
  background: transparent;
}
.ss-farbkatalog .ss-farbkatalog-card {
  border: none;
  display: flex;
  flex-direction: column;
}
.ss-farbkatalog .ss-farbkatalog-card__img {
  flex-shrink: 0;
}
.ss-farbkatalog .ss-farbkatalog-card__body {
  display: flex;
  flex-direction: column;
  justify-content: center;
  min-height: 4.5rem;
}

/* Farbkatalog Outro: ruhiger unterer Bereich, Tools als eine Karte */
.ss-farbkatalog-outro {
  --ss-outro-spacing: 2.5rem;
}
.ss-farbkatalog-outro .ss-divider {
  margin: var(--ss-outro-spacing) 0 1.5rem;
}
.ss-farbkatalog-outro h2 {
  margin-top: 0.5rem;
  margin-bottom: 1rem;
}
.ss-farbkatalog-outro h3 {
  margin-top: 1.5rem;
  margin-bottom: 0.75rem;
}
.ss-farbkatalog-outro p {
  margin-bottom: 1rem;
  max-width: 65ch;
}
.ss-farbkatalog-outro .ss-callout {
  margin-top: var(--ss-outro-spacing);
}

/* Tools-Block: eine Karte, ein Text, Buttons in einer Zeile */
.ss-farbkatalog-outro .ss-tools-block {
  margin-top: var(--ss-outro-spacing);
  padding: 1.75rem 2rem;
  border-radius: var(--ss-radius-xl);
  background: rgba(30, 41, 59, 0.5);
  border: 1px solid rgba(255, 255, 255, 0.06);
}
.ss-farbkatalog-outro .ss-tools-block .ss-kicker {
  margin-bottom: 0.25rem;
}
.ss-farbkatalog-outro .ss-tools-block h2 {
  margin-bottom: 0.75rem;
}
.ss-farbkatalog-outro .ss-tools-block .ss-tools-intro {
  margin-bottom: 1.25rem;
  color: var(--ss-page-body-soft);
  font-size: 0.9375rem;
}
.ss-farbkatalog-outro .ss-actions--row {
  display: flex;
  flex-wrap: wrap;
  gap: 0.75rem;
  align-items: center;
}
.ss-farbkatalog-outro .ss-actions--row .ss-btn {
  flex-shrink: 0;
}

/* Table (Farbkataloge, Legal) */
.ss-prose-section .ss-table-wrap {
  overflow-x: auto;
  margin: 1.25rem 0;
  border-radius: var(--ss-radius-md);
  border: 1px solid var(--ss-glass-border);
  background: rgba(15, 23, 42, 0.35);
}

.ss-prose-section table,
.ss-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 0.9rem;
  color: var(--ss-page-body-soft);
}

.ss-prose-section th,
.ss-prose-section td,
.ss-table th,
.ss-table td {
  padding: 0.75rem 1rem;
  text-align: left;
  border-bottom: 1px solid rgba(148, 163, 184, 0.15);
}

.ss-prose-section th,
.ss-table th {
  font-weight: 700;
  /* `.ss-table th` paints a hardcoded dark cell; keep header text light. */
  color: var(--ss-text-inverse);
  background: rgba(30, 41, 59, 0.5);
}

.ss-prose-section tr:last-child td,
.ss-table tr:last-child td {
  border-bottom: 0;
}

.ss-theme-light .ss-table-wrap,
.ss-light-section .ss-prose-section .ss-table-wrap {
  background: rgba(255, 255, 255, 0.9);
  border-color: rgba(23, 23, 23, 0.1);
}

.ss-theme-light .ss-table th,
.ss-theme-light .ss-table td,
.ss-light-section .ss-table th,
.ss-light-section .ss-table td {
  color: var(--ss-text-primary);
  border-color: rgba(23, 23, 23, 0.08);
}

.ss-theme-light .ss-table th,
.ss-light-section .ss-table th {
  color: var(--ss-text-primary);
  background: rgba(23, 23, 23, 0.06);
}

/* Gallery (image grid with captions) */
.ss-gallery {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
  gap: 1.5rem;
}

.ss-gallery figure {
  margin: 0;
  border-radius: var(--ss-radius-lg);
  overflow: hidden;
  border: 1px solid var(--ss-glass-border);
  background: rgba(15, 23, 42, 0.4);
}

.ss-gallery img {
  width: 100%;
  aspect-ratio: 4 / 3;
  object-fit: cover;
  display: block;
}

/* Gallery: per-item crop/fit (optional props on each item; otherwise figure > img rules above) */
.ss-gallery .ss-gallery-item-frame {
  position: relative;
  width: 100%;
  overflow: hidden;
  border-radius: inherit;
}
.ss-gallery .ss-gallery-item-frame--crop img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  aspect-ratio: unset;
  object-fit: cover;
  display: block;
}
.ss-gallery .ss-gallery-item-frame--fit img {
  width: 100%;
  height: auto;
  max-width: 100%;
  aspect-ratio: unset;
  object-fit: contain;
  display: block;
}

.ss-gallery figcaption {
  padding: 0.875rem 1rem;
  font-size: 0.9rem;
  line-height: 1.4;
  color: var(--ss-page-body-soft);
}

.ss-gallery--light figure,
:is(.ss-theme-light, .ss-light-section, .ss-theme-mixed, .ss-content-band--full-bleed-white) .ss-gallery figure {
  background: white;
  border-color: rgba(23, 23, 23, 0.08);
}

.ss-gallery--light figcaption,
:is(.ss-theme-light, .ss-light-section, .ss-theme-mixed, .ss-content-band--full-bleed-white) .ss-gallery figcaption {
  color: var(--ss-text-secondary);
}

/* Square tiles (1:1, z. B. Produktbilder 1500x1500) */
.ss-gallery--square img {
  aspect-ratio: 1 / 1;
  object-fit: contain;
}

.ss-gallery--square.ss-gallery--light figure,
:is(.ss-theme-light, .ss-light-section, .ss-theme-mixed, .ss-content-band--full-bleed-white) .ss-gallery--square figure {
  background: var(--ss-surface-white);
  display: flex;
  flex-direction: column;
}

.ss-gallery--square.ss-gallery--light img,
:is(.ss-theme-light, .ss-light-section, .ss-theme-mixed, .ss-content-band--full-bleed-white) .ss-gallery--square img {
  object-fit: contain;
}

/* Mosaic-Slider (horizontal scroll, zwei Zeilen) – auch als Editor-Template nutzbar */
@keyframes ss-mosaic-row-left {
  0% { transform: translateX(0); }
  100% { transform: translateX(-50%); }
}
@keyframes ss-mosaic-row-right {
  0% { transform: translateX(-50%); }
  100% { transform: translateX(0); }
}
.ss-referenzen-mosaic-row-left {
  animation: ss-mosaic-row-left 40s linear infinite;
  will-change: transform;
}
.ss-referenzen-mosaic-row-right {
  animation: ss-mosaic-row-right 40s linear infinite;
  will-change: transform;
}

/* Referenzen-Seite: Socken-Mosaic – Höhe folgt dem Bild, weißer Hintergrund, kein Verzerren */
.ss-referenzen-mosaic-cell {
  isolation: isolate;
}

.ss-referenzen-mosaic-cell__img {
  display: block;
  width: 100%;
  height: auto;
  vertical-align: middle;
}

/* Vollbild-Slideshow mit Auto-Wechsel (auch als Editor-Template) */
.ss-slideshow {
  position: relative;
  width: 100%;
  aspect-ratio: 16 / 10;
  overflow: hidden;
  border-radius: var(--ss-radius-lg);
  background: var(--ss-page-start, #0f172a);
}

.ss-slideshow__slide {
  position: absolute;
  inset: 0;
  opacity: 0;
  animation: ss-slideshow-fade 20s infinite;
  display: flex;
  align-items: center;
  justify-content: center;
}

.ss-slideshow__slide:nth-child(1) { animation-delay: 0s; }
.ss-slideshow__slide:nth-child(2) { animation-delay: -4s; }
.ss-slideshow__slide:nth-child(3) { animation-delay: -8s; }
.ss-slideshow__slide:nth-child(4) { animation-delay: -12s; }
.ss-slideshow__slide:nth-child(5) { animation-delay: -16s; }

@keyframes ss-slideshow-fade {
  0%, 19.99% { opacity: 1; z-index: 1; }
  20%, 100% { opacity: 0; z-index: 0; }
}

/* Bild nie vergrößern, nie abschneiden – nur in Originalauflösung bzw. verkleinert anzeigen */
.ss-slideshow__slide img {
  display: block;
  width: auto;
  height: auto;
  max-width: 100%;
  max-height: 100%;
  object-fit: contain;
  object-position: center;
}

/* Referenzen: nur durch Viewport-Breite begrenzt, Höhe aus Ratio 1136×896 */
.ss-slideshow--full {
  aspect-ratio: 1136 / 896;
  width: 100%;
  max-width: 100%;
  min-height: 0;
  border-radius: 0;
}

@keyframes ss-referenzen-logo-marquee {
  0% {
    transform: translate3d(0, 0, 0);
  }
  100% {
    transform: translate3d(-50%, 0, 0);
  }
}

.ss-referenzen-logo-marquee-track {
  animation: ss-referenzen-logo-marquee 200s linear infinite;
  will-change: transform;
}

/* Legal prose (numbered headings) */
.ss-prose-section--legal {
  counter-reset: legal-section;
}

.ss-prose-section--legal h2 {
  counter-increment: legal-section;
  counter-reset: legal-subsection;
}

.ss-prose-section--legal h2::before {
  content: counter(legal-section) ". ";
}

.ss-prose-section--legal h3 {
  counter-increment: legal-subsection;
}

.ss-prose-section--legal h3::before {
  content: counter(legal-section) "." counter(legal-subsection) " ";
}

/* Link list (standalone internal links) */
.ss-link-list {
  display: grid;
  gap: 0.5rem;
  margin: 0;
  padding: 0;
  list-style: none;
}

.ss-link-list a {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  padding: 0.6rem 0;
  color: var(--ss-page-body-prose);
  text-decoration: none;
  border-bottom: 1px solid transparent;
  transition: color 180ms ease, border-color 180ms ease;
}

.ss-link-list a:hover {
  color: var(--ss-yellow);
  border-bottom-color: rgba(248, 215, 73, 0.35);
}

/* Custom HTML block (embed wrapper) */
.ss-custom-html {
  padding: 1.5rem;
  border-radius: var(--ss-radius-lg);
  border: 1px solid var(--ss-glass-border);
  background: rgba(15, 23, 42, 0.45);
  min-height: 80px;
}

.ss-custom-html.aspect-video {
  /* The video embed uses `aspect-video` + an absolutely positioned iframe.
     If we keep the default padding, the computed aspect height can mismatch
     and visually overlap following sections. */
  padding: 0;
}

.ss-custom-html :first-child {
  margin-top: 0;
}

.ss-custom-html :last-child {
  margin-bottom: 0;
}

/* Sliders row (multiple sliders in one row) */
.ss-sliders-row {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  gap: 1.5rem;
}

.ss-sliders-row .ss-slider {
  min-width: 0;
}

/* ========== Open Layout: helle Flächen, Inhalt frei auf der Seite ========== */

.ss-layout-open main {
  display: block;
}

/* Volle Breite: helle oder dunkle Bänder (ohne alles in Karten zu packen) */
.ss-band {
  width: 100%;
  padding: 3.5rem 0;
  position: relative;
}

.ss-band--dark {
  background: transparent;
  /* `.ss-band--dark` is intentionally dark in every theme (it's how authors
   * mark "this section should look dark"), so its body text is invariant. */
  color: var(--ss-text-inverse);
}

.ss-band--light {
  border-top: 1px solid var(--ss-band-light-border);
  border-bottom: 1px solid var(--ss-band-light-border);
  background: var(--ss-band-light-bg);
  color: var(--ss-text-primary);
}

.ss-band-inner {
  width: min(calc(100% - 2rem), var(--ss-max-width));
  margin: 0 auto;
  position: relative;
  z-index: 2;
}

/* Inhalt frei (ohne Glass-Card): nur Abstände und Typo */
.ss-content-free {
  max-width: 52rem;
  margin: 0 auto;
}

.ss-content-free .ss-section-title,
.ss-content-free .ss-home-section-title,
.ss-content-free h2 {
  margin: 0 0 0.75rem;
  font-size: 1.875rem;
  line-height: 2.25rem;
  font-weight: 700;
  letter-spacing: -0.02em;
  color: inherit;
}

.ss-band--light .ss-content-free .ss-section-title,
.ss-band--light .ss-content-free .ss-home-section-title,
.ss-band--light .ss-content-free h2 {
  color: var(--ss-text-primary);
}

.ss-content-free .ss-section-copy,
.ss-content-free .ss-lead,
.ss-content-free p {
  margin: 0 0 1.25rem;
  font-size: 1rem;
  line-height: 1.6;
  color: inherit;
}

.ss-band--dark .ss-content-free p,
.ss-band--dark .ss-content-free .ss-section-copy {
  color: var(--ss-text-inverse-soft);
}

.ss-band--light .ss-content-free p,
.ss-band--light .ss-content-free .ss-section-copy {
  color: var(--ss-text-secondary);
}

.ss-content-free .ss-actions {
  margin-top: 1.5rem;
  justify-content: flex-start;
}

/* Grids/Karten in offenem Layout: optional mit Karte, aber Abschnitte atmen */
.ss-band .ss-card-grid,
.ss-band .ss-step-grid,
.ss-band .ss-metrics {
  margin-top: 1.5rem;
}

/* Helle Bänder: Karten leicht abgesetzt, kein Reinweiß (B2B) */
.ss-band--light .ss-glass-card {
  border-color: rgba(23, 23, 23, 0.06);
  background: rgba(255, 255, 255, 0.88);
  box-shadow: 0 2px 4px rgba(15, 23, 42, 0.04), 0 8px 24px rgba(15, 23, 42, 0.05);
}

.ss-band--light .ss-light-card {
  background: rgba(255, 255, 255, 0.92);
  border-color: rgba(23, 23, 23, 0.06);
  box-shadow: 0 2px 4px rgba(15, 23, 42, 0.04), 0 8px 24px rgba(15, 23, 42, 0.05);
}

.ss-band--light .ss-metric {
  background: rgba(255, 255, 255, 0.88);
  border-color: rgba(23, 23, 23, 0.06);
  box-shadow: 0 2px 4px rgba(15, 23, 42, 0.04), 0 8px 24px rgba(15, 23, 42, 0.05);
}

.ss-band--light .ss-card-title,
.ss-band--light .ss-step-card .ss-card-title {
  color: var(--ss-text-primary);
}

.ss-band--light .ss-card-copy,
.ss-band--light .ss-step-card .ss-card-copy {
  color: var(--ss-text-secondary);
}

.ss-band--light .ss-checklist li {
  color: var(--ss-text-primary);
}

.ss-band--light .ss-link-list a {
  color: var(--ss-text-primary);
}

.ss-band--light .ss-link-list a:hover {
  color: var(--ss-green);
}

.ss-band--light .ss-internal-link {
  color: var(--ss-green);
}

.ss-band--light .ss-internal-link:hover {
  color: var(--ss-green-hover);
}

.ss-band--light .ss-internal-links-title {
  color: var(--ss-text-primary);
}

.ss-band--light .ss-metric strong {
  color: var(--ss-text-primary);
}

.ss-band--light .ss-metric span {
  color: var(--ss-text-secondary);
}

/* Hero im Open Layout: weniger Karten-Optik */
.ss-layout-open .ss-hero {
  padding-top: var(--ss-raw-inner-section-pt, calc(5rem - 70px));
  padding-right: 0;
  padding-bottom: var(--ss-raw-inner-section-pb, 3.5rem);
  padding-left: 0;
}

/* ========== Optionale Hell-Version: Content + TOC hell, Header bleibt dunkel ========== */
/* Body-Klasse .ss-content-light setzen (z. B. per Toggle oder User-Preference) */

.ss-content-light main .ss-section {
  background: var(--ss-band-light-bg);
  border-top: 1px solid var(--ss-band-light-border);
  border-bottom: 1px solid var(--ss-band-light-border);
}

.ss-content-light .ss-toc {
  background: rgba(255, 255, 255, 0.92);
  border-color: rgba(23, 23, 23, 0.06);
  box-shadow: 0 2px 4px rgba(15, 23, 42, 0.04), 0 8px 24px rgba(15, 23, 42, 0.05);
}

.ss-content-light .ss-toc h3 {
  color: var(--ss-text-primary);
}

.ss-content-light .ss-toc a {
  color: var(--ss-text-secondary);
}

.ss-content-light .ss-toc a:hover {
  background: rgba(23, 23, 23, 0.06);
  color: var(--ss-text-primary);
}

.ss-content-light .ss-toc a.is-active {
  background: rgba(248, 215, 73, 0.18);
  border-color: rgba(234, 179, 8, 0.5);
  color: var(--ss-text-primary);
  font-weight: 700;
}

.ss-content-light .ss-article .ss-glass-card,
.ss-content-light .ss-article .ss-prose-section {
  background: rgba(255, 255, 255, 0.88);
  border-color: rgba(23, 23, 23, 0.06);
  box-shadow: 0 2px 4px rgba(15, 23, 42, 0.04), 0 8px 24px rgba(15, 23, 42, 0.05);
}

.ss-content-light .ss-article .ss-prose-section h2,
.ss-content-light .ss-article .ss-prose-section h3,
.ss-content-light .ss-article .ss-card-title {
  color: var(--ss-text-primary);
}

.ss-content-light .ss-article .ss-prose-section p,
.ss-content-light .ss-article .ss-prose-section li,
.ss-content-light .ss-article .ss-card-copy {
  color: var(--ss-text-secondary);
}

.ss-content-light .ss-article .ss-kicker {
  color: var(--ss-green);
}

.ss-content-light .ss-article .ss-checklist li {
  color: var(--ss-text-primary);
}

.ss-content-light .ss-article .ss-link-list a {
  color: var(--ss-text-primary);
}

.ss-content-light .ss-article .ss-link-list a:hover {
  color: var(--ss-green);
}

.ss-content-light .ss-article .ss-internal-link {
  color: var(--ss-green);
}

.ss-content-light .ss-article .ss-internal-links-title {
  color: var(--ss-text-primary);
}

/* Bänder im Open-Layout: auch „dunkle“ Bänder werden hell dargestellt */
.ss-content-light .ss-band--dark {
  background: transparent;
  color: var(--ss-text-primary);
}

.ss-content-light .ss-band--dark .ss-content-free .ss-section-title,
.ss-content-light .ss-band--dark .ss-content-free h2 {
  color: var(--ss-text-primary);
}

.ss-content-light .ss-band--dark .ss-content-free p,
.ss-content-light .ss-band--dark .ss-content-free .ss-section-copy {
  color: var(--ss-text-secondary);
}

.ss-content-light .ss-band--dark .ss-glass-card {
  background: rgba(255, 255, 255, 0.88);
  border-color: rgba(23, 23, 23, 0.06);
  box-shadow: 0 2px 4px rgba(15, 23, 42, 0.04), 0 8px 24px rgba(15, 23, 42, 0.05);
}

.ss-content-light .ss-band--dark .ss-glass-card .ss-card-title,
.ss-content-light .ss-band--dark .ss-step-card .ss-card-title {
  color: var(--ss-text-primary);
}

.ss-content-light .ss-band--dark .ss-glass-card .ss-card-copy,
.ss-content-light .ss-band--dark .ss-step-card .ss-card-copy {
  color: var(--ss-text-secondary);
}

.ss-content-light .ss-band--dark .ss-checklist li {
  color: var(--ss-text-primary);
}

.ss-content-light .ss-band--dark .ss-metric {
  background: rgba(255, 255, 255, 0.88);
  border-color: rgba(23, 23, 23, 0.06);
}

.ss-content-light .ss-band--dark .ss-metric strong {
  color: var(--ss-text-primary);
}

.ss-content-light .ss-band--dark .ss-metric span {
  color: var(--ss-text-secondary);
}

.ss-content-light .ss-band--dark .ss-faq-item {
  background: var(--faq-bg, #ffffff);
  border-color: var(--faq-border, #e3e8df);
}

.ss-content-light .ss-band--dark .ss-faq-item summary {
  color: var(--text-dark, #1f243f);
}

.ss-content-light .ss-band--dark .ss-faq-item [data-faq-answer],
.ss-content-light .ss-band--dark .ss-faq-item [data-faq-answer] p {
  color: var(--text-muted, #5b6475);
}

.ss-content-light .ss-band--dark article.ss-glass-card.ss-prose-section:has(.ss-faq),
.ss-content-light .ss-band--dark article.ss-faq-section.ss-glass-card.ss-prose-section {
  background: var(--faq-bg, #ffffff);
  border-color: #e8ece6;
}

.ss-content-light .ss-band--dark .ss-table-wrap {
  background: rgba(255, 255, 255, 0.9);
  border-color: rgba(23, 23, 23, 0.08);
}

.ss-content-light .ss-band--dark .ss-table th,
.ss-content-light .ss-band--dark .ss-table td {
  color: var(--ss-text-primary);
  border-color: rgba(23, 23, 23, 0.08);
}

.ss-content-light .ss-band--dark .ss-table th {
  background: rgba(23, 23, 23, 0.06);
}

.ss-content-light .ss-band--dark .ss-custom-html {
  background: rgba(255, 255, 255, 0.85);
  border-color: rgba(23, 23, 23, 0.08);
}

.ss-content-light .ss-band--dark .ss-custom-html p {
  color: var(--ss-text-secondary);
}

/* Toggle für Hell-Modus (z. B. in Sidebar oder Header) */
.ss-theme-toggle {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  padding: 0.5rem 0.75rem;
  margin-top: 1rem;
  font-size: 0.8rem;
  font-weight: 600;
  color: var(--ss-text-soft);
  background: rgba(30, 41, 59, 0.5);
  border: 1px solid var(--ss-glass-border);
  border-radius: var(--ss-radius-md);
  cursor: pointer;
  text-decoration: none;
  transition: background 180ms ease, color 180ms ease, border-color 180ms ease;
}

.ss-theme-toggle:hover {
  color: var(--ss-page-heading);
  background: rgba(30, 41, 59, 0.72);
  border-color: rgba(248, 215, 73, 0.24);
}

.ss-content-light .ss-theme-toggle {
  color: var(--ss-text-secondary);
  background: rgba(255, 255, 255, 0.88);
  border-color: rgba(23, 23, 23, 0.08);
}

.ss-content-light .ss-theme-toggle:hover {
  color: var(--ss-text-primary);
  background: rgba(255, 255, 255, 0.95);
  border-color: rgba(23, 23, 23, 0.12);
}
/* CMS custom styles */
.ss-prose-section div.ss-card-grid.ss-card-grid--three:nth-child(3) > div.ss-glass-card.ss-card:nth-child(1) > figure.ss-media-thumb.ss-media-thumb--contain:nth-child(1) {
  width: 100%;
}

.ss-prose-section div.ss-card-grid.ss-card-grid--three:nth-child(3) > div.ss-glass-card.ss-card:nth-child(2) > figure.ss-media-thumb.ss-media-thumb--contain:nth-child(1) {
  width: 100%;
}

.ss-prose-section div.ss-card-grid.ss-card-grid--three:nth-child(3) > div.ss-glass-card.ss-card:nth-child(3) > figure.ss-media-thumb.ss-media-thumb--contain:nth-child(1) {
  width: 100%;
}

.ss-page > main:nth-child(3) > section.ss-section.ss-page-content-section:nth-child(2) > div.ss-container.max-w-ss-container:nth-child(2) > div.ss-content-shell.ss-content-shell--no-sidebar:nth-child(1) > div.ss-article:nth-child(1) > div.space-y-4.ss-blocks-stack:nth-child(1) > section.ss-theme-light.min-w-0:nth-child(3) > div:nth-child(1) > section.ss-section.ss-section--tight:nth-child(1) > div.ss-container:nth-child(1) > div.ss-subhero-grid:nth-child(1) > article.ss-glass-card.ss-feature-panel:nth-child(1) > p.ss-eyebrow:nth-child(2) {
  margin-top: 1rem;
}

.ss-page > main:nth-child(3) > section.ss-section.ss-page-content-section:nth-child(2) > div.ss-container.max-w-ss-container:nth-child(2) > div.ss-content-shell.ss-content-shell--no-sidebar:nth-child(1) > div.ss-article:nth-child(1) > div.space-y-4.ss-blocks-stack:nth-child(1) > section.ss-theme-light.min-w-0:nth-child(3) > div:nth-child(1) > section.ss-section.ss-section--tight:nth-child(1) > div.ss-container:nth-child(1) > div.ss-subhero-grid:nth-child(1) > article.ss-glass-card.ss-card:nth-child(2) > div.ss-card-body:nth-child(1) > div.ss-media-thumb:nth-child(1) {
  margin-bottom: 0px;
}

.ss-page > main:nth-child(3) > section.ss-section.ss-page-content-section:nth-child(2) > div.ss-container.max-w-ss-container:nth-child(2) > div.ss-content-shell.ss-content-shell--no-sidebar:nth-child(1) > div.ss-article:nth-child(1) > div.space-y-4.ss-blocks-stack:nth-child(1) > section.ss-theme-light.min-w-0:nth-child(5) > section.ss-section.ss-logo-marquee-section:nth-child(1) > div.ss-glass-card.ss-feature-panel:nth-child(1) > div.ss-logo-marquee-window.overflow-hidden:nth-child(2) > div.ss-logo-marquee-track.flex:nth-child(2) {
  width: max-content;
}

.ss-page > main:nth-child(3) > section.ss-section.ss-page-content-section:nth-child(2) > div.ss-container.max-w-ss-container:nth-child(2) > div.ss-content-shell.ss-content-shell--no-sidebar:nth-child(1) > div.ss-article:nth-child(1) > div.space-y-4.ss-blocks-stack:nth-child(1) > section.ss-theme-light.min-w-0:nth-child(7) > section.min-w-0.w-full:nth-child(1) > div.ss-glass-card.ss-feature-panel:nth-child(1) > div.ss-light-card.ss-feature-panel:nth-child(3) {
  min-height: 160px;
}

.ss-page > main:nth-child(3) > section.ss-section.ss-page-content-section:nth-child(2) > div.ss-container.max-w-ss-container:nth-child(2) > div.ss-content-shell.ss-content-shell--no-sidebar:nth-child(1) > div.ss-article:nth-child(1) > div.space-y-4.ss-blocks-stack:nth-child(1) > section.ss-theme-light.min-w-0:nth-child(7) > section.min-w-0.w-full:nth-child(1) > div.ss-glass-card.ss-feature-panel:nth-child(1) > div.ss-light-card.ss-feature-panel:nth-child(3) > div.trustpilot-widget.w-full:nth-child(1) > iframe:nth-child(1) {
  width: 100%;
}

.ss-prose-section div:nth-child(3) > div.ss-actions:nth-child(3) {
  margin-top: 1rem;
}

.ss-prose-section div:nth-child(2) > div.ss-actions:nth-child(2) {
  margin-top: 1rem;
}

/* Removed unsafe global 2-column forcing.
 * These selectors affected nearly every prose section (CardGrid, MarkdownGlass, etc.)
 * and collapsed blocks to half width. Use dedicated element-level classes/styles instead. */
/* end CMS custom styles */


/* =========================================================================
 * Schlauesocke 2026 — light-theme redesign overrides
 *
 * Scope: every rule here is gated on `[data-theme='schlauesocke-2026']` so the
 * legacy dark `schlauesocke` palette stays untouched. The redesign mirrors
 * the editorial reference layouts: cream page, opaque-white hairline cards,
 * green-led CTAs, big confident headlines with a yellow `<mark>` marker and
 * an optional green wave underline, generous section spacing.
 *
 * The order inside this block is intentional: page → typography → marks →
 * cards → buttons → badges/kickers → sections → feature row / cta band →
 * decorative blobs. Earlier rules can be overridden by later ones in the
 * same block when a specialised variant is needed.
 * ======================================================================= */

[data-theme='schlauesocke-2026'] .ss-page {
  /* Flat cream page (no gradient). Pure-white card surfaces sit above this. */
  background: var(--ss-page-start);
}

/* ----- Typography --------------------------------------------------------- *
 * Schlauesocke typography system: Poppins for headlines, Inter for body/UI.
 * ------------------------------------------------------------------------- */
.ss-home-title,
.ss-display,
.ss-home-section-title,
.ss-section-title,
.ss-prose-section h1,
.ss-prose-section h2,
.ss-prose-section h3,
.ss-card-title {
  font-family: var(--ss-headline-font, var(--font-poppins, "Poppins"), sans-serif) !important;
  color: var(--ss-page-heading);
}

.ss-home-title,
.ss-display,
.ss-prose-section h1 {
  font-size: 48px;
  font-weight: 700;
  line-height: 1.2;
  letter-spacing: -0.02em;
}

.ss-home-section-title,
.ss-section-title,
.ss-prose-section h2 {
  font-size: 32px;
  font-weight: 600;
  line-height: 1.3;
  letter-spacing: -0.01em;
}

/* Mobile: must follow the desktop `48px` / `32px` rules above so long German
 * headlines (hero + prose) stay within the viewport. */
@media (max-width: 640px) {
  .ss-home-title,
  .ss-display,
  .ss-prose-section h1 {
    font-size: clamp(1.55rem, 5.6vw + 0.4rem, 2.35rem);
    line-height: 1.12;
  }

  .ss-home-section-title,
  .ss-section-title,
  .ss-prose-section h2 {
    font-size: clamp(1.35rem, 4.2vw + 0.35rem, 1.75rem);
    line-height: 1.25;
  }
}

.ss-prose-section h3,
.ss-card-title {
  font-size: 22px;
  font-weight: 600;
  line-height: 1.4;
  letter-spacing: 0;
}

.ss-lead,
.ss-home-copy,
.ss-section-copy,
.ss-card-copy,
.ss-prose-section p {
  font-family: var(--ss-font);
  color: var(--ss-page-body-soft);
  font-size: 16px;
  font-weight: 400;
  line-height: 1.6;
}

:is(small, figcaption, .ss-eyebrow, .ss-caption, .ss-footer-copy) {
  font-family: var(--ss-font);
  color: #6B7280;
  font-size: 14px;
  font-weight: 400;
  line-height: 1.5;
}

:is(.ss-nav-link, .ss-flyout-panel a, .ss-footer a) {
  font-family: var(--ss-font);
  font-size: 15px;
  font-weight: 500;
  line-height: 1.4;
}

:is(.ss-btn, button, input, textarea, select) {
  font-family: var(--ss-font);
}

.ss-btn {
  font-size: 16px;
  font-weight: 600;
  line-height: 1.2;
}

/* `.ss-mark` — inline yellow highlight chip behind an emphasised phrase
 * inside a headline (the "im Müll" treatment in the reference). Drop in as
 * `<span class="ss-mark">…</span>` from authors / editor templates. */
[data-theme='schlauesocke-2026'] .ss-mark,
[data-theme='schlauesocke-2026'] .ss-home-title mark,
[data-theme='schlauesocke-2026'] .ss-prose-section h1 mark,
[data-theme='schlauesocke-2026'] .ss-prose-section h2 mark {
  background: var(--ss-yellow);
  color: var(--ss-page-heading);
  padding: 0.06em 0.36em;
  border-radius: 0.4rem;
  box-decoration-break: clone;
  -webkit-box-decoration-break: clone;
}

/* `.ss-headline-underline` — green wave decoration painted as a layered
 * background image so it follows wrapped lines. Apply on a `<span>` inside
 * the headline. */
[data-theme='schlauesocke-2026'] .ss-headline-underline {
  background-image: linear-gradient(transparent 78%, var(--ss-green) 78%, var(--ss-green) 92%, transparent 92%);
  background-size: 100% 100%;
  background-repeat: no-repeat;
  padding-bottom: 0.08em;
}

/* ----- Cards & surfaces ---------------------------------------------------
 * Replace glass with flat opaque white panels and a 1px hairline border.
 * Drops `backdrop-filter`, the dark drop shadow, and the gradient backplate.
 * ------------------------------------------------------------------------- */
[data-theme='schlauesocke-2026'] .ss-glass-card,
[data-theme='schlauesocke-2026'] .ss-light-card {
  background: var(--ss-elevated-bg);
  border: 1px solid var(--ss-elevated-border);
  border-radius: var(--ss-radius-2xl);
  box-shadow: var(--ss-elevated-shadow);
  backdrop-filter: none;
  -webkit-backdrop-filter: none;
}

/* Authored prose blocks dropped from the editor templates frequently use
 * `ss-glass-card ss-prose-section`. Make sure the prose has comfortable
 * padding even when the author hasn't added a Tailwind padding utility. */
[data-theme='schlauesocke-2026'] .ss-prose-section.ss-glass-card {
  padding: 2rem 2.25rem;
}

@media (min-width: 768px) {
  [data-theme='schlauesocke-2026'] .ss-prose-section.ss-glass-card {
    padding: 2.5rem 3rem;
  }
}

[data-theme='schlauesocke-2026'] .ss-glass-card.ss-prose-section.ss-shell-prose {
  padding: 1.5rem;
}

@media (min-width: 768px) {
  [data-theme='schlauesocke-2026'] .ss-glass-card.ss-prose-section.ss-shell-prose {
    padding: 2rem;
  }
}

[data-theme='schlauesocke-2026'] .ss-glass-card.ss-prose-section.ss-shell-prose-lg {
  padding: 1rem;
}

@media (min-width: 768px) {
  [data-theme='schlauesocke-2026'] .ss-glass-card.ss-prose-section.ss-shell-prose-lg {
    padding: 1.5rem;
  }
}

@media (min-width: 1024px) {
  [data-theme='schlauesocke-2026'] .ss-glass-card.ss-prose-section.ss-shell-prose-lg {
    padding: 2rem;
  }
}

/* ----- Buttons ------------------------------------------------------------
 * Primary + green CTAs: diagonal gradient (#08cf6f ↔ #23aa68).
 * ------------------------------------------------------------------------- */
:root[data-theme='schlauesocke-2026'],
[data-theme='schlauesocke-2026'] {
  --ss-btn-primary-gradient: linear-gradient(
    128deg,
    #08cf6f 0%,
    #16c578 44%,
    #23aa68 100%
  );
  --ss-btn-primary-gradient-hover: linear-gradient(
    128deg,
    #07bf65 0%,
    #14b06a 48%,
    #1d955b 100%
  );
  --ss-btn-primary-shadow:
    0 1px 2px rgba(15, 23, 42, 0.06),
    0 4px 14px rgba(8, 207, 111, 0.26),
    inset 0 1px 0 rgba(255, 255, 255, 0.26);
  --ss-btn-primary-shadow-hover:
    0 1px 2px rgba(15, 23, 42, 0.08),
    0 5px 16px rgba(8, 207, 111, 0.32),
    inset 0 1px 0 rgba(255, 255, 255, 0.22);
}

[data-theme='schlauesocke-2026'] .ss-btn--primary {
  background: var(--ss-btn-primary-gradient);
  color: var(--ss-text-inverse);
  border: 1px solid rgba(26, 110, 72, 0.42);
  box-shadow: var(--ss-btn-primary-shadow);
}

[data-theme='schlauesocke-2026'] .ss-btn--primary:hover {
  background: var(--ss-btn-primary-gradient-hover);
  border-color: rgba(20, 92, 60, 0.5);
  box-shadow: var(--ss-btn-primary-shadow-hover);
}

[data-theme='schlauesocke-2026'] .ss-btn--green {
  background: var(--ss-btn-primary-gradient);
  color: var(--ss-text-inverse);
  border: 1px solid rgba(26, 110, 72, 0.42);
  box-shadow: var(--ss-btn-primary-shadow);
}

[data-theme='schlauesocke-2026'] .ss-btn--green:hover {
  background: var(--ss-btn-primary-gradient-hover);
  border-color: rgba(20, 92, 60, 0.5);
  box-shadow: var(--ss-btn-primary-shadow-hover);
}

[data-theme='schlauesocke-2026'] .ss-btn--secondary {
  background: transparent;
  color: var(--ss-page-heading);
  border-color: rgba(15, 23, 42, 0.18);
  backdrop-filter: none;
  -webkit-backdrop-filter: none;
}

[data-theme='schlauesocke-2026'] .ss-btn--secondary:hover {
  background: rgba(15, 23, 42, 0.04);
  border-color: rgba(15, 23, 42, 0.28);
}

/* ----- Badges / kickers / pill chips --------------------------------------
 * Reference shows small green pills (e.g. "Preise") and uppercase green
 * kicker labels, not amber. The token migration already moved kicker / badge
 * tokens to green; these rules cement the pill silhouette and spacing.
 * ------------------------------------------------------------------------- */
[data-theme='schlauesocke-2026'] .ss-badge {
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  padding: 0.35rem 0.75rem;
  border-radius: 999px;
  background: var(--ss-badge-bg);
  color: var(--ss-badge-text);
  border: 1px solid var(--ss-badge-border);
  font-size: 0.78rem;
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: uppercase;
}

/* Showcase hero: navy glass pill + brand yellow label (other badges stay green pill). */
[data-theme='schlauesocke-2026'] .ss-hero .ss-hero-copy .ss-badge {
  color: var(--ss-yellow);
  background: linear-gradient(
    145deg,
    rgba(31, 35, 64, 0.82) 0%,
    rgba(31, 35, 64, 0.62) 100%
  );
  border: 1px solid rgba(248, 215, 73, 0.4);
  box-shadow:
    0 1px 2px rgba(15, 23, 42, 0.14),
    inset 0 1px 0 rgba(255, 255, 255, 0.14);
  backdrop-filter: blur(18px);
  -webkit-backdrop-filter: blur(18px);
  font-weight: 700;
}

[data-theme='schlauesocke-2026'] .ss-kicker {
  color: var(--ss-accent-kicker);
  font-size: 0.78rem;
  font-weight: 700;
  letter-spacing: 0.1em;
  text-transform: uppercase;
}

[data-theme='schlauesocke-2026'] #angebot-projektablauf .ss-offer-kicker {
  color: var(--ss-page-heading);
  font-size: 1rem;
  line-height: 1.35;
  font-weight: 700;
  letter-spacing: 0.06em;
}

[data-theme='schlauesocke-2026'] .ss-trustpilot-kicker,
[data-theme='schlauesocke-2026'] #sockenlaengen-details > h2 {
  margin: 0 0 1.25rem;
  color: var(--ss-page-heading);
  font-size: 1.875rem;
  line-height: 2.25rem;
  font-weight: 700;
  letter-spacing: 0;
  text-transform: none;
}

@media (max-width: 640px) {
  [data-theme='schlauesocke-2026'] .ss-trustpilot-kicker {
    font-size: clamp(1.1rem, 3.6vw + 0.35rem, 1.55rem);
    line-height: 1.22;
  }
}

[data-theme='schlauesocke-2026'] .ss-spec-icon {
  color: var(--ss-page-heading);
}

/* ----- Section rhythm -----------------------------------------------------
 * Editorial pacing: more breathing room between bands so each block reads
 * as a discrete chapter. Hero gets the most generous top spacing.
 * ------------------------------------------------------------------------- */
[data-theme='schlauesocke-2026'] .ss-section {
  padding-top: clamp(3rem, 6vw, 5rem);
  padding-bottom: clamp(3rem, 6vw, 5rem);
}

/* Main article shell: tight vertical gaps (theme .ss-section clamp is too tall here). */
[data-theme='schlauesocke-2026'] .ss-section.ss-page-content-section {
  padding-top: 30px;
  padding-bottom: 30px;
}

[data-theme='schlauesocke-2026'] .ss-hero {
  /* Same variable hand-off as the base `.ss-hero` rule, but with the 2026
   * defaults — kept smaller than before so the headline/list sit nearer the
   * top of the viewport. Authors can still override per-block via the
   * RawHtml padding selects (`--ss-raw-inner-section-pt/-pb`) or via the
   * ShowcaseHero `paddingTopPx` / `paddingBottomPx` inputs. */
  padding-top: var(--ss-raw-inner-section-pt, clamp(1.75rem, 3.5vw, 3.25rem));
  padding-bottom: var(--ss-raw-inner-section-pb, clamp(1.75rem, 3vw, 2.75rem));
}

/* Mobile (≤767px): halve the hero section's vertical padding.
 *
 * The desktop clamp resolves to its lower bound (~28px) at narrow viewports
 * because `Xvw` is too small to win. Visually that 28px above the badge +
 * 28px below the CTA row was too generous on phones — the badge and the
 * Custom Socks headline sat too far from the topbar and the content below.
 * We halve both axes (clamp expression scaled ×0.5) so the rhythm scales
 * down on phones (~14px) while still scaling smoothly back up between
 * mobile and desktop. The base `.ss-hero` rule is overridden too so the
 * fix applies regardless of which theme is active. Authors can still
 * override per-block via `--ss-raw-inner-section-pt/-pb` or the
 * ShowcaseHero `paddingTopPx` / `paddingBottomPx` inputs. */
@media (max-width: 767px) {
  .ss-hero,
  [data-theme='schlauesocke-2026'] .ss-hero {
    padding-top: var(--ss-raw-inner-section-pt, clamp(0.875rem, 1.75vw, 1.625rem));
    padding-bottom: var(--ss-raw-inner-section-pb, clamp(0.875rem, 1.5vw, 1.375rem));
  }
}

/* Light bands inside a 2026 page should not paint white panels over the
 * cream page. Cards keep their own white surfaces; section wrappers remain
 * transparent so the page background reads consistently. */
[data-theme='schlauesocke-2026'] .ss-theme-light,
[data-theme='schlauesocke-2026'] .ss-theme-mixed,
[data-theme='schlauesocke-2026'] .ss-light-section,
[data-theme='schlauesocke-2026'] .ss-band--light,
[data-theme='schlauesocke-2026'] .ss-content-light main .ss-section,
[data-theme='schlauesocke-2026']
  .ss-page
  .ss-section[data-section-key='slider'],
[data-theme='schlauesocke-2026']
  .ss-page
  .ss-section[data-section-key='sock_lengths'],
[data-theme='schlauesocke-2026']
  .ss-page
  .ss-section[data-section-key='verpackung'],
[data-theme='schlauesocke-2026'] .ss-page .ss-content-band--full-bleed-white,
[data-theme='schlauesocke-2026'] .ss-page .ss-content-band--full-bleed-white > .ss-content-band__segment,
[data-theme='schlauesocke-2026'] .ss-page .ss-content-band--full-bleed-white .ss-content-band__inset,
[data-theme='schlauesocke-2026'] .ss-page .ss-slider-fullbleed-white {
  background: transparent;
  border-top-color: transparent;
  border-bottom-color: transparent;
}

[data-theme='schlauesocke-2026'] .ss-slider--gallery-panels .ss-slide > .grid {
  background: #ffffff;
}

/* Sidebar / Inhaltsverzeichnis: Legacy `.ss-toc` hover nutzt dunkles Slate-Glas —
 * auf der hellen 2026-Seite wirkt das wie Dark-Theme. Helle Hover-/Active-Flächen. */
[data-theme='schlauesocke-2026'] .ss-toc a:hover {
  color: var(--ss-page-heading);
  background: rgba(31, 35, 64, 0.06);
  border-color: rgba(91, 165, 74, 0.22);
}

[data-theme='schlauesocke-2026'] .ss-toc a.is-active,
[data-theme='schlauesocke-2026'] .ss-toc a.is-active:hover {
  color: var(--ss-page-heading);
  background: rgba(248, 215, 73, 0.16);
  border-color: rgba(234, 179, 8, 0.42);
  font-weight: 700;
}

/* Showcase-Hero: weicher ::before mit inset -18% ragt unter das Raster — auf
 * Cream (#fafaf7) wirkt das wie ein grauer Schleier. Mask + inset straffen,
 * ohne overflow:hidden (sonst schneidet scale(1.373) am Socken-Motiv). */
[data-theme='schlauesocke-2026'] .ss-showcase-image.ss-showcase-image--hero::before {
  inset: -10%;
  opacity: 0.4;
  mask-image: radial-gradient(
    circle at center,
    rgba(0, 0, 0, 0.82) 26%,
    rgba(0, 0, 0, 0.48) 52%,
    rgba(0, 0, 0, 0.14) 74%,
    transparent 88%
  );
}

/* ----- Feature row (mini icon grid) --------------------------------------
 * 3–5 columns of small icon + caption rows used heavily in the reference
 * (see "Kostenlos & unverbindlich / Schnelle Antwort 24h / …"). No card,
 * no border — just spacing and icon contrast against the cream page.
 * ------------------------------------------------------------------------- */
.ss-feature-row {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  gap: 1.5rem 2rem;
  align-items: start;
  margin-top: 2rem;
}

.ss-feature-row__item {
  display: flex;
  flex-direction: column;
  gap: 0.25rem;
}

.ss-feature-row__icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 2.25rem;
  height: 2.25rem;
  margin-bottom: 0.5rem;
  color: var(--ss-green);
}

[data-theme='schlauesocke-2026'] .ss-feature-row__icon {
  color: var(--ss-green);
}

.ss-feature-row__title {
  font-size: 0.95rem;
  font-weight: 600;
  color: var(--ss-page-heading);
  line-height: 1.3;
}

.ss-feature-row__copy {
  font-size: 0.85rem;
  color: var(--ss-page-body-muted);
  line-height: 1.45;
}

/* ----- Pale-green CTA band ------------------------------------------------
 * "Neugierig auf Ihr eigenes Design?" / "Überzeugt?" panels in the reference
 * — a soft mint band stretched across the content column with a primary
 * green CTA on the right.
 * ------------------------------------------------------------------------- */
.ss-cta-band {
  display: flex;
  flex-wrap: wrap;
  gap: 1rem 1.5rem;
  align-items: center;
  justify-content: space-between;
  padding: 1.5rem 1.75rem;
  border-radius: var(--ss-radius-xl);
  background: var(--ss-band-light-soft-bg, var(--ss-alert-bg-soft));
  border: 1px solid var(--ss-band-light-border, var(--ss-elevated-border));
}

[data-theme='schlauesocke-2026'] .ss-cta-band {
  background: #eef8ea;
  border-color: rgba(91, 165, 74, 0.25);
}

.ss-cta-band__copy {
  flex: 1 1 280px;
}

.ss-cta-band__title {
  font-size: 1.125rem;
  font-weight: 700;
  color: var(--ss-page-heading);
  margin: 0 0 0.25rem;
}

.ss-cta-band__subtitle {
  font-size: 0.95rem;
  color: var(--ss-page-body-soft);
  margin: 0;
}

.ss-cta-band__actions {
  display: flex;
  flex-wrap: wrap;
  gap: 0.75rem;
}

/* ----- Decorative "blob" backgrounds --------------------------------------
 * Soft organic background shapes used behind the hero illustration in the
 * reference layouts. Each variant paints a single radial gradient at a
 * fixed offset so it reads as a designed shape, not a generic vignette.
 * Apply with `<div class="ss-blob ss-blob--mint">` as a sibling of the
 * hero media, positioned absolutely in author markup.
 * ------------------------------------------------------------------------- */
.ss-blob {
  position: absolute;
  inset: auto;
  width: 80%;
  height: 80%;
  border-radius: 50%;
  filter: blur(0);
  pointer-events: none;
  z-index: 0;
}

.ss-blob--mint {
  background: radial-gradient(closest-side, #d8efd2 0%, rgba(216, 239, 210, 0) 75%);
}

.ss-blob--peach {
  background: radial-gradient(closest-side, #fde7d6 0%, rgba(253, 231, 214, 0) 75%);
}

.ss-blob--lemon {
  background: radial-gradient(closest-side, #fdf2c4 0%, rgba(253, 242, 196, 0) 75%);
}

/* The hero media column gets `position: relative` so authors can drop a
 * `.ss-blob` inside it and have it sit behind the foreground image. */
[data-theme='schlauesocke-2026'] .ss-hero-grid > * {
  position: relative;
}

/* The start-page raw HTML hero is rendered inside a light-theme block wrapper.
 * Keep that wrapper transparent so the page-level yellow shine remains visible. */
[data-theme='schlauesocke-2026']
  .ss-blocks-stack
  > .ss-theme-light:has(> div > .ss-hero[data-section-key='hero']),
[data-theme='schlauesocke-2026']
  .ss-blocks-stack
  > .ss-theme-light:has(> .ss-hero[data-section-key='hero']) {
  background: transparent;
  border-top-color: transparent;
  border-bottom-color: transparent;
}

[data-theme='schlauesocke-2026']
  .ss-content-light
  main
  > .ss-section:has(.ss-blocks-stack > .ss-theme-light > div > .ss-hero[data-section-key='hero']) {
  background: transparent;
}

/* ============================================================================
 * Top promo bar (light theme variant)
 * Slim grey strip with three USP items + a Trustpilot rating widget pinned to
 * the right. Each USP is preceded by a small green stroke icon (rendered as an
 * inline <svg> by SitePromoTopBar.tsx).
 * ========================================================================== */
[data-theme='schlauesocke-2026'] .ss-promo-topbar {
  background: #f5f5f3;
  color: rgba(15, 23, 42, 0.65);
  border-bottom: 1px solid #ededed;
  font-size: 13px;
  font-weight: 500;
  letter-spacing: 0;
}

[data-theme='schlauesocke-2026'] .ss-promo-topbar__inner {
  padding-top: 0.5rem;
  padding-bottom: 0.5rem;
}

/* Force the promo bar inner container to match the main nav `.ss-container`
 * exactly (no extra horizontal padding) so its content x-edges line up with
 * the logo and the right-most header action. */
[data-theme='schlauesocke-2026'] .ss-promo-topbar > .ss-container {
  width: min(calc(100% - 2rem), var(--ss-max-width));
  max-width: var(--ss-max-width);
  margin-left: auto;
  margin-right: auto;
  padding-left: 0;
  padding-right: 0;
}

[data-theme='schlauesocke-2026'] .ss-promo-topbar__row {
  display: flex;
  /* The promo bar must stay on a single line at every viewport. Items are
   * removed (advantages → trustpilot → email) by the responsive rules
   * below as soon as space gets tight, so we never wrap. */
  flex-wrap: nowrap;
  align-items: center;
  justify-content: flex-start;
  min-height: 32px;
  gap: 0.4rem 1rem;
  width: 100%;
  padding: 0;
}

[data-theme='schlauesocke-2026'] .ss-promo-topbar__item {
  flex: 0 1 auto;
  min-width: 0;
  color: rgba(15, 23, 42, 0.65);
  display: inline-flex;
  align-items: center;
  gap: 0.45rem;
}

[data-theme='schlauesocke-2026'] .ss-promo-topbar__item > svg {
  width: 1rem;
  height: 1rem;
  color: var(--ss-green);
  flex: 0 0 auto;
}

[data-theme='schlauesocke-2026'] .ss-promo-topbar__item--trustpilot {
  flex: 0 0 auto;
  margin-left: 0.5rem;
  padding-left: 0;
  /* Trustpilot Micro Star Widget benötigt ~360px für „Hervorragend ★★★★★ ★Trustpilot"
   * (TrustScore-Text + 5 Sterne + Wordmark-Logo). Schmaler → Logo wird vom
   * iframe rechts abgeschnitten. */
  min-width: 360px;
  color: rgba(15, 23, 42, 0.85);
}

[data-theme='schlauesocke-2026'] .ss-promo-topbar__item--trustpilot .trustpilot-widget {
  min-width: 360px;
  width: 100%;
}

/* ============================================================================
 * Main navigation header (white)
 * Replaces the legacy yellow `.ss-topbar` look with a clean white bar:
 * smaller logo, light slate nav links, ghost language pill, green CTA pill.
 * ========================================================================== */
[data-theme='schlauesocke-2026'] .ss-topbar {
  background: #ffffff;
  border-bottom: 1px solid #ededed;
  box-shadow: none;
  color: var(--ss-page-heading);
}

@media (min-width: 1100px) {
  [data-theme='schlauesocke-2026'] .ss-topbar-inner {
    min-height: 76px;
  }
}

[data-theme='schlauesocke-2026'] .ss-promo-topbar__item--contact {
  flex: 0 0 auto;
  gap: 0.45rem;
  margin-left: auto;
  color: rgba(15, 23, 42, 0.76);
  font-weight: 700;
}

[data-theme='schlauesocke-2026'] .ss-promo-topbar__item--contact a {
  color: inherit;
  text-decoration: none;
}

[data-theme='schlauesocke-2026'] .ss-promo-topbar__item--contact a:hover {
  color: rgba(15, 23, 42, 0.95);
}

[data-theme='schlauesocke-2026'] .ss-promo-topbar__item--contact span {
  opacity: 0.45;
}

[data-theme='schlauesocke-2026'] .ss-promo-topbar__contact-link {
  display: inline-flex;
  align-items: center;
  gap: 0.32rem;
}

[data-theme='schlauesocke-2026'] .ss-promo-topbar__contact-link > svg {
  width: 0.9rem;
  height: 0.9rem;
  color: var(--ss-green);
  flex: 0 0 auto;
}

/* Progressive disclosure for the schlauesocke-2026 theme.
 *
 * The base rules in `.ss-promo-topbar` (around line 143) already drop items
 * one by one as the viewport narrows, but the theme overrides above set
 * `display: inline-flex` and a `min-width: 360px` on the trustpilot widget
 * with higher specificity ([data-theme] + class), so without these matching
 * theme-scoped media queries the bar overflows on mobile and the items
 * stack on top of each other. Order: advantages first (truck → box →
 * pencil), then trustpilot, then email. The phone link always remains so
 * sales can be reached from any page. */
@media (max-width: 1099px) {
  [data-theme='schlauesocke-2026'] .ss-promo-topbar__item--usp-1 {
    display: none;
  }
}

@media (max-width: 999px) {
  [data-theme='schlauesocke-2026'] .ss-promo-topbar__item--usp-2 {
    display: none;
  }
}

@media (max-width: 899px) {
  [data-theme='schlauesocke-2026'] .ss-promo-topbar__item--usp {
    display: none;
  }

  [data-theme='schlauesocke-2026'] .ss-promo-topbar__item--trustpilot {
    min-width: 0;
  }

  [data-theme='schlauesocke-2026'] .ss-promo-topbar__item--trustpilot .trustpilot-widget {
    min-width: 0;
  }
}

@media (max-width: 639px) {
  [data-theme='schlauesocke-2026'] .ss-promo-topbar__item--trustpilot {
    display: none;
  }
}

@media (max-width: 479px) {
  [data-theme='schlauesocke-2026'] .ss-promo-topbar__contact-link--email {
    display: none;
  }
}

[data-theme='schlauesocke-2026'] .ss-brand img {
  height: 40px;
}

[data-theme='schlauesocke-2026'] .ss-nav-link {
  color: rgba(15, 23, 42, 0.7);
  font-size: 15px;
  font-weight: 500;
  letter-spacing: 0;
  min-height: 40px;
  padding: 0 0.85rem;
  border-radius: 0.5rem;
}

[data-theme='schlauesocke-2026'] .ss-nav-link:hover,
[data-theme='schlauesocke-2026'] .ss-nav-link.is-active {
  background: transparent;
  color: var(--ss-page-heading);
}

[data-theme='schlauesocke-2026'] .ss-flyout-trigger > svg {
  width: 0.85rem;
  height: 0.85rem;
  margin-left: 0.3rem;
  opacity: 0.7;
}

[data-theme='schlauesocke-2026'] .ss-flyout-trigger--chevron-only > svg {
  margin-left: 0;
}

[data-theme='schlauesocke-2026'] .ss-flyout-panel {
  top: calc(100% + 0.45rem);
  left: 50%;
  right: auto;
  width: min(calc(100vw - 3rem), 1210px);
  padding: 0;
  border: 1px solid rgba(15, 23, 42, 0.08);
  border-radius: 1rem;
  background: #ffffff;
  box-shadow: 0 18px 52px rgba(15, 23, 42, 0.14);
  overflow: hidden;
  transform: translate(-50%, -6px);
}

[data-theme='schlauesocke-2026'] .ss-flyout-panel.is-open {
  transform: translate(-50%, 0);
}

[data-theme='schlauesocke-2026'] .ss-flyout-panel > .ss-container,
[data-theme='schlauesocke-2026'] .ss-flyout-panel.ss-flyout-panel--store > .ss-container {
  width: 100%;
  max-width: none;
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: 1.15rem;
  padding: 1.45rem;
}

[data-theme='schlauesocke-2026'] .ss-flyout-panel__label {
  display: inline-flex;
  align-items: center;
  gap: 0.45rem;
  margin: 0;
  color: var(--ss-page-heading);
  font-size: 0.78rem;
  font-weight: 800;
  letter-spacing: 0.08em;
}

[data-theme='schlauesocke-2026'] .ss-flyout-panel__label::before {
  content: none;
}

[data-theme='schlauesocke-2026'] .ss-flyout-panel a {
  color: rgba(15, 23, 42, 0.82);
}

[data-theme='schlauesocke-2026'] .ss-flyout-panel a:hover {
  color: var(--ss-page-heading);
  background: #f7faf6;
}

/* Mobile burger foldout: same light surface + left alignment as desktop flyouts (not yellow strip). */
[data-theme='schlauesocke-2026'] .ss-mobile-nav-wrap {
  background: #ffffff;
  border-bottom: 1px solid #ededed;
}

[data-theme='schlauesocke-2026'] .ss-mobile-lang {
  border-bottom-color: #e5e7eb;
}

[data-theme='schlauesocke-2026'] .ss-mobile-nav {
  align-items: stretch;
  justify-items: stretch;
}

[data-theme='schlauesocke-2026'] .ss-mobile-nav .ss-nav-link,
[data-theme='schlauesocke-2026'] .ss-mobile-nav .ss-flyout-trigger {
  justify-content: flex-start;
  width: 100%;
  max-width: 100%;
  box-sizing: border-box;
}

[data-theme='schlauesocke-2026'] .ss-mobile-nav .ss-flyout-trigger--chevron-only {
  justify-content: center;
  width: auto;
  min-width: 2.75rem;
  flex: 0 0 auto;
}

[data-theme='schlauesocke-2026'] .ss-mobile-flyout {
  width: 100%;
  align-items: stretch;
}

[data-theme='schlauesocke-2026'] .ss-mobile-flyout__split {
  width: 100%;
}

[data-theme='schlauesocke-2026'] .ss-mobile-flyout__split .ss-flyout-parent-link {
  flex: 1 1 auto;
  min-width: 0;
  justify-content: flex-start;
}

[data-theme='schlauesocke-2026'] .ss-mobile-nav .ss-flyout-trigger:hover,
[data-theme='schlauesocke-2026'] .ss-mobile-nav .ss-nav-link:hover {
  background: #f7faf6;
  color: var(--ss-page-heading);
}

[data-theme='schlauesocke-2026'] .ss-mobile-nav .ss-flyout-trigger[aria-expanded='true'] {
  background: #eef2f0;
  color: var(--ss-page-heading);
}

[data-theme='schlauesocke-2026'] .ss-mobile-flyout__panel {
  background: #ffffff;
  border: 1px solid rgba(15, 23, 42, 0.08);
  box-shadow: 0 8px 28px rgba(15, 23, 42, 0.08);
}

[data-theme='schlauesocke-2026'] .ss-mobile-flyout__panel .ss-flyout-panel__label {
  color: var(--ss-page-heading);
}

[data-theme='schlauesocke-2026'] .ss-mobile-flyout__panel .ss-flyout-links a {
  color: rgba(15, 23, 42, 0.82);
}

[data-theme='schlauesocke-2026'] .ss-mobile-flyout__panel .ss-flyout-links a:hover {
  color: var(--ss-page-heading);
  background: #f7faf6;
}

[data-theme='schlauesocke-2026'] .ss-mobile-flyout__panel.ss-flyout-panel--store .ss-flyout-links {
  column-count: 1;
  column-gap: 0;
  padding-right: 0;
}

[data-theme='schlauesocke-2026'] .ss-flyout-panel--store .ss-flyout-links {
  column-count: 3;
  column-gap: 2rem;
  padding-right: 0.75rem;
}

[data-theme='schlauesocke-2026'] .ss-flyout-panel--store .ss-flyout-links a {
  position: relative;
  min-height: 2.55rem;
  margin-bottom: 0.45rem;
  padding: 0.45rem 0.65rem;
  border-radius: 0.75rem;
  color: rgba(15, 23, 42, 0.84);
  font-size: 0.95rem;
  font-weight: 700;
  line-height: 1.25;
}

[data-theme='schlauesocke-2026'] .ss-flyout-panel--store .ss-flyout-links a::before {
  content: none;
}

[data-theme='schlauesocke-2026'] .ss-flyout-panel--store .ss-flyout-featured {
  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
  gap: 0.85rem;
  padding-top: 0.25rem;
}

[data-theme='schlauesocke-2026'] .ss-featured-category {
  align-items: stretch;
  gap: 0.7rem;
  padding: 0.85rem;
  border: 1px solid rgba(15, 23, 42, 0.06);
  border-radius: 0.95rem;
  background: linear-gradient(135deg, #fcfaef 0%, #ffffff 72%);
  color: var(--ss-page-heading);
  box-shadow: 0 1px 2px rgba(15, 23, 42, 0.04);
}

[data-theme='schlauesocke-2026'] .ss-featured-category:hover {
  background: linear-gradient(135deg, #f3faef 0%, #ffffff 72%);
  color: var(--ss-page-heading);
}

[data-theme='schlauesocke-2026'] .ss-featured-category__img-wrap {
  aspect-ratio: 16 / 10;
  border-radius: 0.8rem;
  background: #fafaf7;
}

[data-theme='schlauesocke-2026'] .ss-featured-category__label {
  text-align: left;
  color: var(--ss-page-heading);
  font-size: 0.95rem;
  font-weight: 800;
}

@media (min-width: 980px) {
  [data-theme='schlauesocke-2026'] .ss-flyout-panel--store > .ss-container:has(.ss-flyout-featured) {
    grid-template-columns: minmax(0, 1fr) 320px;
    gap: 1.4rem;
  }

  [data-theme='schlauesocke-2026'] .ss-flyout-panel--store > .ss-container:has(.ss-flyout-featured) .ss-flyout-panel__label,
  [data-theme='schlauesocke-2026'] .ss-flyout-panel--store > .ss-container:has(.ss-flyout-featured) .ss-flyout-links {
    grid-column: 1;
  }

  [data-theme='schlauesocke-2026'] .ss-flyout-panel--store > .ss-container:has(.ss-flyout-featured) .ss-flyout-featured {
    grid-column: 2;
    grid-row: 1 / span 2;
  }
}

/* Do not set `display` here: wizard `anfrage/styles.css` hides this block on
 * small viewports until `.is-mobile-menu-open`; a bare `display: flex` would
 * override that (same specificity, earlier file wins). Base `.ss-header-actions`
 * already supplies `display: flex` for desktop + CMS. */
[data-theme='schlauesocke-2026'] .ss-header-actions {
  align-items: center;
  gap: 0.6rem;
}

/* Locale pill — wraps the LanguageSwitcher trigger button regardless of
 * which exact class the component emits, by targeting any direct button or
 * details/summary inside `.ss-header-actions` that is *not* the green CTA. */
[data-theme='schlauesocke-2026'] .ss-header-actions > button:not(.ss-btn):not(.ss-nav-toggle),
[data-theme='schlauesocke-2026'] .ss-header-actions > details > summary {
  border: 1px solid #e5e7eb;
  border-radius: 999px;
  background: #ffffff;
  color: rgba(15, 23, 42, 0.72);
  padding: 0.5rem 0.95rem;
  font-size: 14px;
  font-weight: 500;
  display: inline-flex;
  align-items: center;
  gap: 0.45rem;
}

/* Topbar green CTAs: same chrome as body primary (no pill); no hover lift. */
[data-theme='schlauesocke-2026'] .ss-topbar .ss-btn--green {
  border-radius: var(--ss-radius-md);
  font-weight: 700;
  min-height: 48px;
  padding: 0 1.25rem;
  background: var(--ss-btn-primary-gradient);
  color: var(--ss-text-inverse);
  border: 1px solid rgba(26, 110, 72, 0.42);
  box-shadow: var(--ss-btn-primary-shadow);
}

[data-theme='schlauesocke-2026'] .ss-topbar .ss-btn--green:hover {
  background: var(--ss-btn-primary-gradient-hover);
  border-color: rgba(20, 92, 60, 0.5);
  box-shadow: var(--ss-btn-primary-shadow-hover);
}

[data-theme='schlauesocke-2026'] .ss-topbar .ss-btn:hover {
  transform: none;
}

/* ============================================================================
 * Sockenart tab pills (Preise page)
 * Outline pills with a small sock icon. Active pill = pale yellow tint with a
 * warm yellow border; inactive pills sit on white with a hairline.
 * ========================================================================== */
[data-theme='schlauesocke-2026'] .ss-sockenart-tabs {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem 0.6rem;
}

[data-theme='schlauesocke-2026'] .ss-sockenart-tab {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  padding: 0.55rem 1rem;
  border-radius: 999px;
  border: 1px solid #e5e7eb;
  background: #ffffff;
  color: rgba(15, 23, 42, 0.72);
  font-size: 14px;
  font-weight: 500;
  line-height: 1;
  cursor: pointer;
  transition: background 180ms ease, border-color 180ms ease, color 180ms ease;
}

[data-theme='schlauesocke-2026'] .ss-sockenart-tab:hover {
  background: #fafaf7;
  border-color: rgba(15, 23, 42, 0.18);
  color: var(--ss-page-heading);
}

[data-theme='schlauesocke-2026'] .ss-sockenart-tab--active {
  background: #fdf2c4;
  border-color: #f1c34a;
  color: #1f2340;
}

[data-theme='schlauesocke-2026'] .ss-sockenart-tab__icon {
  width: 1rem;
  height: 1rem;
  flex: 0 0 auto;
  color: currentColor;
  opacity: 0.85;
}

/* ============================================================================
 * Variant card — large white panel with the sock photo on a yellow circle
 * backdrop and the variant copy + price grid on the right.
 * ========================================================================== */
[data-theme='schlauesocke-2026'] .ss-variant-card {
  background: #ffffff;
  border-radius: 1.25rem;
  border: 1px solid var(--ss-elevated-border);
  box-shadow: var(--ss-elevated-shadow);
  padding: clamp(1.25rem, 2vw, 1.75rem);
}

[data-theme='schlauesocke-2026'] .ss-minimum-order-section {
  box-shadow: none !important;
}

[data-theme='schlauesocke-2026'] .ss-minimum-order-card {
  box-shadow: 0 1px 2px rgba(15, 23, 42, 0.04) !important;
}

[data-theme='schlauesocke-2026'] .ss-variant-card__photo {
  position: relative;
  border-radius: 1rem;
  overflow: hidden;
  background: #fcfaef;
  min-height: 320px;
  display: grid;
  place-items: center;
  isolation: isolate;
  padding: 1rem;
}

[data-theme='schlauesocke-2026'] .ss-variant-card__photo::before {
  content: '';
  position: absolute;
  inset: 14% 18% 18% 18%;
  background: radial-gradient(closest-side, #fde08a 0%, rgba(253, 224, 138, 0) 72%);
  z-index: 0;
}

[data-theme='schlauesocke-2026'] .ss-variant-card__photo > img {
  position: relative;
  z-index: 1;
  max-width: 100%;
  max-height: 460px;
  object-fit: contain;
}

/* ============================================================================
 * Price tier cards (Preise page)
 * 4-card 2x2 grid. The "BELIEBTESTE WAHL" card uses a warm yellow border and
 * a small black ribbon badge floated above the top edge.
 * ========================================================================== */
[data-theme='schlauesocke-2026'] .ss-price-card-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0.9rem;
}

[data-theme='schlauesocke-2026'] .ss-price-card {
  position: relative;
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
  padding: 1.05rem 1.1rem 1.15rem;
  border: 1.5px solid #d6e7d2;
  border-radius: 1rem;
  background: #ffffff;
  transition: border-color 180ms ease, transform 180ms ease;
}

[data-theme='schlauesocke-2026'] .ss-price-card--featured {
  border-color: #f1c34a;
  background: #fffaeb;
}

[data-theme='schlauesocke-2026'] .ss-price-card__qty {
  align-self: flex-start;
  display: inline-flex;
  align-items: center;
  padding: 0.18rem 0.55rem;
  border-radius: 999px;
  background: #e7f5e3;
  color: #2f5a28;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
}

[data-theme='schlauesocke-2026'] .ss-price-card--featured .ss-price-card__qty {
  background: #fff1c2;
  color: #8a6300;
}

[data-theme='schlauesocke-2026'] .ss-price-card__amount {
  display: flex;
  align-items: baseline;
  gap: 0.4rem;
}

[data-theme='schlauesocke-2026'] .ss-price-card__price {
  font-size: 1.85rem;
  font-weight: 700;
  color: #1f2340;
  letter-spacing: -0.01em;
  line-height: 1.05;
}

[data-theme='schlauesocke-2026'] .ss-price-card__per {
  font-size: 12px;
  color: rgba(15, 23, 42, 0.55);
}

[data-theme='schlauesocke-2026'] .ss-price-card__total {
  align-self: flex-start;
  padding: 0.18rem 0.55rem;
  border-radius: 999px;
  background: #e7f5e3;
  color: #2f5a28;
  font-size: 12px;
  font-weight: 600;
}

[data-theme='schlauesocke-2026'] .ss-price-card__list {
  list-style: none;
  margin: 0.25rem 0 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 0.3rem;
}

[data-theme='schlauesocke-2026'] .ss-price-card__list li {
  display: flex;
  align-items: flex-start;
  gap: 0.45rem;
  font-size: 13px;
  color: rgba(15, 23, 42, 0.7);
  line-height: 1.35;
}

[data-theme='schlauesocke-2026'] .ss-price-card__list li::before {
  content: '';
  width: 1rem;
  height: 1rem;
  flex: 0 0 auto;
  margin-top: 1px;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='%235ba54a'><path d='M10 0a10 10 0 110 20 10 10 0 010-20zm4.3 7.3a1 1 0 00-1.4-1.4L9 9.6 7.1 7.7a1 1 0 10-1.4 1.4l2.6 2.6a1 1 0 001.4 0l4.6-4.6z'/></svg>");
  background-repeat: no-repeat;
  background-position: center;
  background-size: contain;
}

[data-theme='schlauesocke-2026'] .ss-price-card__badge {
  position: absolute;
  top: -10px;
  left: 50%;
  transform: translateX(-50%);
  display: inline-flex;
  align-items: center;
  gap: 0.3rem;
  padding: 0.2rem 0.7rem;
  border-radius: 999px;
  background: #1f1f1f;
  color: #ffffff;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  white-space: nowrap;
  box-shadow: 0 4px 10px rgba(15, 23, 42, 0.18);
}

[data-theme='schlauesocke-2026'] .ss-price-card__badge > svg {
  width: 0.85rem;
  height: 0.85rem;
  color: #f1c34a;
  flex: 0 0 auto;
}

@media (max-width: 720px) {
  [data-theme='schlauesocke-2026'] .ss-price-card-grid {
    grid-template-columns: minmax(0, 1fr);
  }
}

/* When the mini icon grid is nested directly inside a CTA band (Preise CTA),
 * it acts as the band's left-hand "copy" column: drop the standalone top
 * margin and let it grow so the green CTA stays anchored on the right. */
[data-theme='schlauesocke-2026'] .ss-cta-band > .ss-feature-row {
  margin-top: 0;
  flex: 1 1 0;
  min-width: 0;
  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
  gap: 1rem 2rem;
}

[data-theme='schlauesocke-2026'] .ss-cta-band > .ss-feature-row .ss-feature-row__icon {
  width: 1.75rem;
  height: 1.75rem;
  margin-bottom: 0.25rem;
}

[data-theme='schlauesocke-2026'] .ss-cta-band > .ss-cta-band__actions {
  flex: 0 0 auto;
}

/* Preise page visual redesign must apply even when another site theme is active.
 * Keep the same appearance as the 2026 block above, but without theme scoping. */
.ss-sockenart-tabs {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem 0.6rem;
}

.ss-sockenart-tab {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  padding: 0.55rem 1rem;
  border-radius: 999px;
  border: 1px solid #e5e7eb;
  background: #ffffff;
  color: rgba(15, 23, 42, 0.72);
  font-size: 14px;
  font-weight: 500;
  line-height: 1;
  cursor: pointer;
  transition: background 180ms ease, border-color 180ms ease, color 180ms ease;
}

.ss-sockenart-tab:hover {
  background: #fafaf7;
  border-color: rgba(15, 23, 42, 0.18);
  color: var(--ss-page-heading);
}

.ss-sockenart-tab--active {
  background: #fdf2c4;
  border-color: #f1c34a;
  color: #1f2340;
}

.ss-sockenart-tab__icon {
  width: 1rem;
  height: 1rem;
  flex: 0 0 auto;
  color: currentColor;
  opacity: 0.85;
}

.ss-variant-card {
  background: #ffffff;
  border-radius: 1.25rem;
  border: 1px solid var(--ss-elevated-border);
  box-shadow: var(--ss-elevated-shadow);
  padding: clamp(1.25rem, 2vw, 1.75rem);
}

.ss-minimum-order-section,
.ss-minimum-order-card {
  box-shadow: 0 1px 2px rgba(15, 23, 42, 0.04) !important;
}

.ss-minimum-order-section {
  box-shadow: none !important;
}

.ss-prose-section:has([class*='shadow-[0_18px_45px_rgba(15,23,42,0.65)]'])
  [class*='shadow-[0_18px_45px_rgba(15,23,42,0.65)]'] {
  box-shadow: 0 1px 2px rgba(15, 23, 42, 0.04) !important;
}

article.ss-glass-card.ss-prose-section
  [class*='shadow-[0_18px_45px_rgba(15,23,42,0.65)]'] {
  box-shadow: 0 1px 2px rgba(15, 23, 42, 0.04) !important;
}

.ss-prose-section:has([class*='shadow-[0_18px_45px_rgba(15,23,42,0.65)]']) > h2 + p {
  display: none !important;
}

.ss-variant-card__photo {
  position: relative;
  border-radius: 1rem;
  overflow: hidden;
  background: #fcfaef;
  min-height: 320px;
  display: grid;
  place-items: center;
  isolation: isolate;
  padding: 1rem;
}

.ss-variant-card__photo::before {
  content: '';
  position: absolute;
  inset: 14% 18% 18% 18%;
  background: radial-gradient(closest-side, #fde08a 0%, rgba(253, 224, 138, 0) 72%);
  z-index: 0;
}

.ss-variant-card__photo > img {
  position: relative;
  z-index: 1;
  max-width: 100%;
  max-height: 460px;
  object-fit: contain;
}

.ss-price-card-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0.9rem;
}

.ss-price-card {
  position: relative;
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
  padding: 1.05rem 1.1rem 1.15rem;
  border: 1.5px solid #d6e7d2;
  border-radius: 1rem;
  background: #ffffff;
  transition: border-color 180ms ease, transform 180ms ease;
}

.ss-price-card--featured {
  border-color: #f1c34a;
  background: #fffaeb;
}

.ss-price-card__qty {
  align-self: flex-start;
  display: inline-flex;
  align-items: center;
  padding: 0.18rem 0.55rem;
  border-radius: 999px;
  background: #e7f5e3;
  color: #2f5a28;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
}

.ss-price-card--featured .ss-price-card__qty {
  background: #fff1c2;
  color: #8a6300;
}

.ss-price-card__amount {
  display: flex;
  align-items: baseline;
  gap: 0.4rem;
}

.ss-price-card__price {
  font-size: 1.85rem;
  font-weight: 700;
  color: #1f2340;
  letter-spacing: -0.01em;
  line-height: 1.05;
}

.ss-price-card__per {
  font-size: 12px;
  color: rgba(15, 23, 42, 0.55);
}

.ss-price-card__total {
  align-self: flex-start;
  padding: 0.18rem 0.55rem;
  border-radius: 999px;
  background: #e7f5e3;
  color: #2f5a28;
  font-size: 12px;
  font-weight: 600;
}

.ss-price-card__list {
  list-style: none;
  margin: 0.25rem 0 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 0.3rem;
}

.ss-price-card__list li {
  display: flex;
  align-items: flex-start;
  gap: 0.45rem;
  font-size: 13px;
  color: rgba(15, 23, 42, 0.7);
  line-height: 1.35;
}

.ss-price-card__list li::before {
  content: '';
  width: 1rem;
  height: 1rem;
  flex: 0 0 auto;
  margin-top: 1px;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='%235ba54a'><path d='M10 0a10 10 0 110 20 10 10 0 010-20zm4.3 7.3a1 1 0 00-1.4-1.4L9 9.6 7.1 7.7a1 1 0 10-1.4 1.4l2.6 2.6a1 1 0 001.4 0l4.6-4.6z'/></svg>");
  background-repeat: no-repeat;
  background-position: center;
  background-size: contain;
}

.ss-price-card__badge {
  position: absolute;
  top: -10px;
  left: 50%;
  transform: translateX(-50%);
  display: inline-flex;
  align-items: center;
  gap: 0.3rem;
  padding: 0.2rem 0.7rem;
  border-radius: 999px;
  background: #1f1f1f;
  color: #ffffff;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  white-space: nowrap;
  box-shadow: 0 4px 10px rgba(15, 23, 42, 0.18);
}

.ss-price-card__badge > svg {
  width: 0.85rem;
  height: 0.85rem;
  color: #f1c34a;
  flex: 0 0 auto;
}

.ss-cta-band > .ss-feature-row {
  margin-top: 0;
  flex: 1 1 0;
  min-width: 0;
  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
  gap: 1rem 2rem;
}

.ss-cta-band > .ss-feature-row .ss-feature-row__icon {
  width: 1.75rem;
  height: 1.75rem;
  margin-bottom: 0.25rem;
}

.ss-cta-band > .ss-cta-band__actions {
  flex: 0 0 auto;
}

@media (max-width: 720px) {
  .ss-price-card-grid {
    grid-template-columns: minmax(0, 1fr);
  }
}






























































































