/* 28.09.2026 (Bastian): no handwritten script lettering anywhere on the site - it read as
 * decoration ("AI slop"), not as information. The notes are removed, not re-set in another font. */
.lr-handnote,
.tc4-hand,
.hand,
.wpp-hand,
.hb-note-hand,
.fs-handnote,
.gl-handnote,
.pv26-hand,
.wp26-note-hand {
  display: none !important;
}
/* The report quote keeps its words, only the script face goes. */
.tc4-report-copy blockquote {
  font-family: inherit !important;
}

/* Rating stars stay Expertenmarkt green (#00b67a) - Bastian 28.09.2026: the reviews come from
 * experten-markt.de, green is theirs. */
/* The star inside each square was a fixed 18px in 13-15px squares and lost its lower points. */
.gr-stars svg {
  width: 80% !important;
  height: 80% !important;
}
.gr-stars > span {
  border-radius: 3px;
}
@media (max-width: 760px) {
  .ru-tile .gr-stars > span {
    width: 16px !important;
    height: 16px !important;
  }
}

/* 28.09.2026 (Bastian): no decorative kicker line ("— GALVANEK WÄRMEPUMPE") above headings on
 * any page. Only kickers that directly precede a heading go; labels inside cards and menus stay. */
main :is(.gk-kicker, .wp26-kicker, .ip-kicker, .ls-eyebrow, .co-eyebrow, .es-eyebrow, .gl-eyebrow,
  .gm-eyebrow, .fs-kicker, .tc-kicker, .lf-kicker, .b-kicker, .wq-kicker, .gr-kicker, .eyebrow,
  .kicker, .card-kicker):has(+ :is(h1, h2)) {
  display: none !important;
}

/* 28.09.2026 (Bastian, second round): the orange words keep the original copper sweep - deep
 * orange into a warm amber highlight and back, not a flat orange with a white flash. It runs from
 * the first frame on every load (fixed start phase) and loops seamlessly (gradient is symmetric
 * across its 200% width). The hero's rolling words get the same material, slightly faster.
 * padding-bottom + negative margin gives descenders (g, p) room inside the clipped background -
 * "Besser geplant." lost the tail of its g on ThermoCheck. */
.gk-heading-accent,
.wp26-shimmer,
.v20-wort em {
  color: #ee671f;
  background: linear-gradient(110deg, #d84d08 0%, #ee671f 23%, #f6a15e 43%, #ee671f 60%, #d84d08 100%) !important;
  background-size: 200% 100% !important;
  background-position: 0% 50%;
  -webkit-background-clip: text !important;
  background-clip: text !important;
  -webkit-text-fill-color: transparent !important;
  animation: gk-copper-sweep 6s linear infinite !important;
  padding-bottom: 0.14em;
  margin-bottom: -0.14em;
}
.v20-wort em {
  animation-duration: 4.5s !important;
}
@keyframes gk-copper-sweep {
  from { background-position: 0% 50%; }
  to { background-position: -200% 50%; }
}
@media (prefers-reduced-motion: reduce) {
  .gk-heading-accent,
  .wp26-shimmer,
  .v20-wort em {
    animation: none !important;
  }
}

/* Desktop mega menu: the predictive/service links get their own group label (28.09.2026). */
.mega-panel .mega-service-label {
  margin: 24px 0 4px !important;
  padding-top: 18px;
  border-top: 1px solid var(--line, #e7e2da);
}
.mega-panel .mega-service-label + .mega-service {
  border-top: 0;
  margin-top: 0;
  padding-top: 0;
}

/* ---------- Process pages share one hero type scale (28.09.2026, Bastian) ---------- */
/* ThermoCheck, Thermohydraulik, Installation, Planung, Foerderung, Wissen and Service came with
 * four different hero builds: 57-78px, weight 600-700, three letter-spacings. They now speak the
 * same type as the solution pages: Instrument Sans 650, tight tracking, one size scale. */
main :is(.tcp-hero-copy, .co-hero-copy, .fd26-hero-inhalt, .wq-hero) h1 {
  font-size: clamp(44px, 4.5vw, 66px) !important;
  font-weight: 650 !important;
  line-height: 1.02 !important;
  letter-spacing: -0.045em !important;
}
main :is(.tcp-hero-copy > p:not(.eyebrow), .co-hero-copy .co-lead, .fd26-hero-inhalt .fd26-hero-text) {
  font-size: 18px !important;
  line-height: 1.6 !important;
}
@media (max-width: 760px) {
  main :is(.tcp-hero-copy, .co-hero-copy, .fd26-hero-inhalt, .wq-hero) h1 {
    font-size: clamp(32px, 9.6vw, 42px) !important;
  }
  main :is(.tcp-hero-copy > p:not(.eyebrow), .co-hero-copy .co-lead, .fd26-hero-inhalt .fd26-hero-text) {
    font-size: 16px !important;
  }
}

/* Instinct day scene: the clock sat dark on the dark night picture (Bastian 28.09.2026).
   Now a light pill in the picture's corner, readable on day and night pictures alike. */
.id-picture {
  position: relative;
}
.id-picture > .id-scene-time {
  position: absolute;
  top: 12px;
  left: 12px;
  z-index: 6;
  display: inline-flex;
  align-items: center;
  padding: 6px 12px;
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.9);
  -webkit-backdrop-filter: blur(8px);
  backdrop-filter: blur(8px);
  box-shadow: 0 4px 14px rgba(10, 14, 18, 0.25);
  color: #1c2425;
  font-size: 15px;
  line-height: 1.2;
  font-variant-numeric: tabular-nums;
}
.id-picture > .id-scene-time b {
  color: inherit;
  font-weight: 650;
}

/* 29.09.2026 (Bastian): home hero statement a little lower and further right - it sat tight under
 * the header and on the left edge. transform keeps the marker geometry (it measures real rects). */
@media (min-width: 761px) {
  .g-home .v20-hero .v20-copy {
    transform: translate(clamp(0px, 2.8vw, 40px), clamp(0px, 4.6vh, 44px));
  }
}
@media (max-width: 760px) {
  .g-home .v20-hero .v20-copy {
    transform: translate(8px, 22px);
  }
}


/* 29.09.2026: the night photo behind the home hero (128 KB) is fully covered by the hero still. */
.g-home .v20-hero {
  background-image: none !important;
}


/* 29.09.2026 (Bastian: "den Text sieht man kaum"): the two lines under the headline sat on bright sky
 * and lake. A soft haze behind the copy block lifts them without a hard box - it reads like morning light. */
.g-home .v20-hero .v20-copy {
  isolation: isolate;
}
.g-home .v20-hero .v20-copy::before {
  content: "";
  position: absolute;
  z-index: -1;
  inset: -10% 0 -10% -40vw;
  background: radial-gradient(ellipse min(760px, 70vw) 60% at calc(40vw + min(330px, 32vw)) 58%, rgba(250, 249, 246, 0.62), rgba(250, 249, 246, 0.3) 55%, rgba(250, 249, 246, 0) 100%);
  pointer-events: none;
}
.g-home .v20-hero .v20-desc {
  color: #111315;
  font-weight: 500;
  text-shadow: 0 1px 12px rgba(250, 249, 246, 0.9);
}
@media (max-width: 760px) {
  /* Phones: the sentence stands on the light sky above the photo - no haze, the house stays crisp. */
  .g-home .v20-hero .v20-copy::before {
    display: none;
  }
  /* Without the note under it, the button needs its own distance to the bottom wave. */
  .g-home .v20-hero .v20-pin > .v20-copy {
    padding-bottom: calc(84px + env(safe-area-inset-bottom)) !important;
  }
}

/* 29.09.2026 (Bastian: "die Pill sieht ultra beschissen aus"): the trust line stands as plain text on the haze. */
.g-home .v20-hero .v20-proof {
  color: #1c2425;
  font-weight: 500;
  text-shadow: 0 1px 10px rgba(250, 249, 246, 0.95);
}

/* 29.09.2026: phone headline with a clear hierarchy - the intro reads as one calm line, the rolling
 * word carries the weight. Three stacked giant lines pushed the house down and crowded the markers. */
@media (max-width: 760px) {
  .g-home .v20-hero h1 .v20-br-m {
    display: none !important;
  }
  .g-home .v20-hero h1 .v20-line:first-child > span {
    font-size: clamp(29px, 8.6vw, 38px);
    line-height: 1.02;
    letter-spacing: -0.035em;
    white-space: nowrap !important;
  }
  .g-home .v20-hero h1 .v20-roll {
    font-size: clamp(46px, 13.4vw, 60px);
  }
}

/* 29.09.2026: "Cookie-Einstellungen" is a button, the other legal links are inline text - it sat lower. */
.footer.lr-footer .lr-footer-bottom nav {
  align-items: center;
}
.footer.lr-footer .lr-footer-bottom nav > :is(a, button) {
  display: inline-flex;
  align-items: center;
  min-height: 30px;
  line-height: 1.4;
}

/* 29.09.2026 (QA): the /wissen breadcrumb sat under the floating header and could not be clicked. */
.wq-wrap > .wq-breadcrumb {
  padding-top: 112px;
}
@media (max-width: 760px) {
  .wq-wrap > .wq-breadcrumb {
    padding-top: 96px;
  }
}

/* Long German compounds ("Verbraucherstreitbeilegung") ran past the phone edge on legal pages. */
.legal-page :is(h1, h2, h3),
.page-intro h1 {
  overflow-wrap: break-word;
  hyphens: auto;
}
