/* novolytics — custom layer on top of Tailwind */

:root {
    --brand: #2B9AD6;
}

body {
    -webkit-font-smoothing: antialiased;
}

html {
    scroll-behavior: smooth;
    /* Safety net against horizontal scroll on mobile: any stray element a
       hair wider than the viewport would otherwise let the whole page swipe
       sideways. `clip` (not `hidden`) avoids turning <html> into a scroll
       container, so the sticky header and in-page sticky columns keep working. */
    overflow-x: clip;
}

.focus-ring:focus-visible {
    outline: 2px solid var(--brand);
    outline-offset: 2px;
}

/* Long URLs (e.g. the privacy-policy links) wrap instead of overflowing the
   page width on mobile. `anywhere` only breaks a word when it would otherwise
   overflow, so normal link text is unaffected. Applies on every page. */
.prose a,
.prose {
    overflow-wrap: anywhere;
    word-break: break-word;
}

/* Scroll reveal */
.reveal {
    /* Reveal animation disabled — content is always visible so it can never get
       stuck hidden (e.g. tall blocks on mobile that never reach the observer threshold). */
    opacity: 1;
    transform: none;
}

.reveal.is-visible {
    opacity: 1;
    transform: none;
}

@media (prefers-reduced-motion: reduce) {
    .reveal {
        opacity: 1;
        transform: none;
        transition: none;
    }

    html {
        scroll-behavior: auto;
    }
}

/* Mega menu — the wrapper handles visibility (no transform, so Tailwind's
   -translate-x-1/2 centering stays intact); the inner .mega-card animates. */
.mega-panel {
    opacity: 0;
    visibility: hidden;
    transition: opacity .18s ease, visibility 0s linear .22s;
}

.has-mega:hover>.mega-panel,
.has-mega:focus-within>.mega-panel,
.mega-panel[data-open="true"] {
    opacity: 1;
    visibility: visible;
    transition: opacity .18s ease, visibility 0s linear 0s;
}

.mega-card {
    transform-origin: top center;
    transform: translateY(-8px) scaleY(.96);
    opacity: 0;
    transition: transform .2s ease, opacity .16s ease;
}

.has-mega:hover>.mega-panel .mega-card,
.has-mega:focus-within>.mega-panel .mega-card,
.mega-panel[data-open="true"] .mega-card {
    transform: translateY(0) scaleY(1);
    opacity: 1;
}

@media (prefers-reduced-motion: reduce) {

    .mega-panel,
    .mega-card {
        transition: none;
    }

    .mega-card {
        transform: none;
    }
}

/* Decorative gradient mesh used in heroes */
.hero-mesh {
    background:
        radial-gradient(60% 80% at 85% 10%, rgba(43, 154, 214, .18), transparent 60%),
        radial-gradient(50% 60% at 5% 95%, rgba(26, 111, 156, .14), transparent 60%),
        radial-gradient(70% 40% at 50% 100%, rgba(43, 154, 214, .08), transparent 70%);
}

/* Subtle dotted grid texture */
.dot-grid {
    background-image: radial-gradient(rgba(43, 42, 41, .07) 1px, transparent 1px);
    background-size: 22px 22px;
}

/* Marquee / logo row */
.logo-pill {
    filter: grayscale(1);
    opacity: .65;
}

/* Uniform logo footprint: every logo fits the same box, aspect preserved (no distortion) */
.logo-pill img {
    height: 2.5rem;
    /* 40px tall cap */
    width: auto;
    max-width: 8.5rem;
    /* 136px wide cap — reins in wide wordmarks */
    object-fit: contain;
    object-position: center;
}

/* Mobile nav open state lock */
body.nav-open {
    overflow: hidden;
}

/* Mobile nav slide-in animation */
#mobileNav {
    pointer-events: none;
}

#mobileNav.nav-visible {
    pointer-events: auto;
}

#mobileNav>[data-close] {
    opacity: 0;
    transition: opacity 0.25s ease;
}

#mobileNav.nav-visible>[data-close] {
    opacity: 1;
}

#mobileNav>div:last-child {
    transform: translateX(100%);
    transition: transform 0.26s cubic-bezier(0.4, 0, 0.2, 1);
}

#mobileNav.nav-visible>div:last-child {
    transform: translateX(0);
}


/* ---- Premium light-bold layer ---- */

/* Global heading weight */
h1,
h2,
h3,
h4,
h5,
h6 {
    font-weight: 800 !important;
}

/* Brand gradient text accent for headline words */
.text-gradient {
    background: linear-gradient(100deg, #2B9AD6 0%, #1A6F9C 100%);
    -webkit-background-clip: text;
    background-clip: text;
    color: transparent;
}

/* Big stat numbers */
.stat-num {
    font-family: "Space Grotesk", ui-sans-serif, system-ui, sans-serif;
    font-weight: 700;
    line-height: 1;
    letter-spacing: -0.03em;
}

/* Eyebrow label with leading accent line */
.eyebrow-line {
    display: inline-flex;
    align-items: center;
    gap: .6rem;
}

.eyebrow-line::before {
    content: "";
    width: 1.75rem;
    height: 2px;
    background: var(--brand);
    border-radius: 2px;
}

/* Subtle lift interaction on cards/links */
.lift {
    transition: box-shadow .25s ease;
}

.lift:hover {
    box-shadow: 0 8px 22px -8px rgba(0, 0, 0, .10);
}

/* Infinite logo marquee */
.marquee {
    overflow: hidden;
    -webkit-mask-image: linear-gradient(90deg, transparent, #000 8%, #000 92%, transparent);
    mask-image: linear-gradient(90deg, transparent, #000 8%, #000 92%, transparent);
}

.marquee__track {
    display: flex;
    width: max-content;
    gap: 3rem;
    animation: marquee-scroll 38s linear infinite;
}

.marquee:hover .marquee__track {
    animation-play-state: paused;
}

@keyframes marquee-scroll {
    from {
        transform: translateX(0);
    }

    to {
        transform: translateX(-50%);
    }
}

@media (prefers-reduced-motion: reduce) {
    .marquee__track {
        animation: none;
        flex-wrap: wrap;
        justify-content: center;
    }

    .marquee {
        -webkit-mask-image: none;
        mask-image: none;
    }
}

/* Reverse marquee (tools section row 2) */
.marquee--reverse .marquee__track {
    animation: marquee-scroll-reverse 30s linear infinite;
}

.marquee--reverse:hover .marquee__track {
    animation-play-state: paused;
}

@keyframes marquee-scroll-reverse {
    from {
        transform: translateX(-50%);
    }

    to {
        transform: translateX(0);
    }
}

@media (prefers-reduced-motion: reduce) {
    .marquee--reverse .marquee__track {
        animation: none;
    }
}

/* Accordion plus icon rotates open (used by <details>) */
details[open] .acc-icon {
    transform: rotate(45deg);
}

.acc-icon {
    transition: transform .2s ease;
}

/* Decorative soft brand glow blob for hero/feature sections */
.brand-blob {
    position: absolute;
    border-radius: 9999px;
    filter: blur(60px);
    background: radial-gradient(circle, rgba(43, 154, 214, .30), transparent 70%);
    pointer-events: none;
}

/* Gentle floating animation for hero proof cards */
.floaty {
    animation: floaty 6s ease-in-out infinite;
}

.floaty-slow {
    animation: floaty 8s ease-in-out infinite;
}

@keyframes floaty {

    0%,
    100% {
        transform: translateY(0);
    }

    50% {
        transform: translateY(-10px);
    }
}

@media (prefers-reduced-motion: reduce) {

    .floaty,
    .floaty-slow {
        animation: none;
    }
}

/* Avatar stack ring */
.avatar-stack img {
    border: 2px solid #fff;
    border-radius: 9999px;
    object-fit: cover;
}

/* Pillar tile sheen */
.tile-sheen {
    position: relative;
    isolation: isolate;
}

.tile-sheen::after {
    content: "";
    position: absolute;
    inset: 0;
    background: radial-gradient(120% 80% at 100% 0%, rgba(255, 255, 255, .14), transparent 55%);
    z-index: -1;
}

/* === Buttons — Investmentpunk sizing, novolytics CI colour === */
.btn {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 14px 28px;
    border-radius: 6px;
    font-size: .9375rem;
    font-weight: 600;
    line-height: 1.2;
    text-decoration: none;
    white-space: nowrap;
    border: 2px solid transparent;
    transition: background-color .15s ease, border-color .15s ease, color .15s ease, box-shadow .15s ease;
    cursor: pointer;
}

.btn:focus-visible {
    outline: 2px solid var(--brand);
    outline-offset: 3px;
}

.btn:active {
    opacity: .88;
}

.btn-primary {
    background-color: var(--brand);
    border-color: var(--brand);
    color: #fff;
}

.btn-primary:hover {
    background-color: #1A6F9C;
    border-color: #1A6F9C;
    color: #fff;
    box-shadow: 0 2px 8px rgba(43, 154, 214, .30);
}

.btn-ghost {
    background-color: #fff;
    border-color: #e2e8f0;
    color: #1e293b;
}

.btn-ghost:hover {
    border-color: #cbd5e1;
    color: #1e293b;
}

.btn-light {
    background-color: transparent;
    border-color: rgba(255, 255, 255, .35);
    color: #fff;
}

.btn-light:hover {
    background-color: rgba(255, 255, 255, .10);
    border-color: rgba(255, 255, 255, .65);
    color: #fff;
}

.btn-ghost.btn-brand-text {
    background-color: transparent;
    border-color: rgba(255, 255, 255, .55);
    color: #fff;
}

.btn-ghost.btn-brand-text:hover {
    background-color: #fff;
    border-color: #fff;
    color: var(--brand);
}

.btn-sm {
    padding: 9px 18px;
    font-size: .875rem;
}

@media (prefers-reduced-motion: reduce) {
    .btn {
        transition: none;
    }
}

/* === DIE LÖSUNG — sticky-left / scroll-right (investmentpunk style) === */
.loesung-section {
    padding: 6rem 0;
    background-color: #f8fafc;
}

.loesung-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    grid-column-gap: 64px;
    grid-row-gap: 64px;
    grid-template-rows: auto;
    /* Both columns stretch to the full row height (= tall cards column),
       so the sticky block in the left column has room to travel. */
    align-items: stretch;
}

/* Must NOT have overflow other than visible, or sticky breaks. */
.loesung-text-col {
    position: relative;
}

.loesung-sticky-block {
    position: sticky;
    /* Position the block in the upper portion of the viewport while it
       travels, so it reads as centered below the fixed header. */
    top: 20%;
    display: flex;
    flex-direction: column;
    align-items: flex-start;
}

/* Disable the scroll-reveal fade/slide for this block. Kept here in CSS (not by
   removing the .reveal class in home.php) because the inline editor re-saves the
   page markup but never touches this file, so the change survives editor saves. */
.loesung-sticky-block.reveal {
    opacity: 1;
    transform: none;
    transition: none;
}

.loesung-cards-col {
    display: flex;
    flex-direction: column;
    gap: 32px;
}

.loesung-card {
    border-radius: 12px;
    display: flex;
    flex-direction: column;
    background: #fff;
    box-shadow: 0 2px 20px rgba(0, 0, 0, 0.08);
    overflow: hidden;
    /* Reveal animation disabled — cards are always visible (no opacity:0 start). */
    opacity: 1;
    transform: none;
    transition: box-shadow .2s ease;
    text-decoration: none;
    color: inherit;
}

a.loesung-card.loesung-card--visible:hover {
    box-shadow: 0 10px 32px rgba(0, 0, 0, 0.14);
}

a.loesung-card:hover .svc-title {
    color: var(--brand);
}

.loesung-card--visible {
    opacity: 1;
    transform: translateY(0);
}

.loesung-bg-1 { background: linear-gradient(135deg, #0f4c81 0%, #2B9AD6 100%); }
.loesung-bg-2 { background: linear-gradient(135deg, #0c1b2e 0%, #1a4a72 100%); }
.loesung-bg-3 { background: linear-gradient(135deg, #0f172a 0%, #1A6F9C 100%); }
.loesung-bg-4 { background: linear-gradient(135deg, #1e293b 0%, #2B9AD6 100%); }
.loesung-bg-5 { background: linear-gradient(135deg, #0369a1 0%, #38bdf8 100%); }
.loesung-bg-6 { background: linear-gradient(135deg, #0c1b2e 0%, #0f4c81 100%); }

@media (prefers-reduced-motion: reduce) {
    .loesung-card {
        opacity: 1;
        transform: none;
        transition: none;
    }
}

.loesung-card-img {
    position: relative;
    overflow: hidden;
    flex-shrink: 0;
}

.loesung-card-img img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}

.loesung-badge {
    display: inline-block;
    background-color: #2B9AD6;
    color: #fff;
    font-size: 11px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .08em;
    line-height: 1;
    padding: 5px 12px;
    border-radius: 6px;
    margin-bottom: 14px;
}

.loesung-card-body {
    padding: 28px 32px 32px;
    background: #fff;
}

.loesung-card-cat {
    font-size: .65rem;
    font-weight: 700;
    letter-spacing: .14em;
    text-transform: uppercase;
    color: #9ca3af;
    margin-bottom: .35rem;
}

.loesung-card-title {
    font-size: 1.15rem;
    font-weight: 700 !important;
    color: #111827;
    line-height: 1.4;
    margin-bottom: 0;
}

.loesung-card-text {
    font-size: .9rem;
    line-height: 1.65;
    color: #6b7280;
    margin-bottom: 0;
}

/* Mobile: stack, remove sticky */
@media (max-width: 1023px) {
    .loesung-grid {
        grid-template-columns: 1fr;
        grid-column-gap: 0;
        gap: 48px;
    }

    .loesung-sticky-block {
        position: static;
        transform: none;
    }

    .loesung-card-img {
        height: 240px;
    }

    .loesung-card-body {
        padding: 22px 24px 26px;
    }
}


/* ================================================================
   PREMIUM DESIGN SYSTEM
   Strict typographic hierarchy + eye-catching section polish
   ================================================================ */

/* ── 1. TYPOGRAPHIC HIERARCHY ───────────────────────────────────
   H1 = 3.5rem | H2 = 2.5rem | H3 = 1.75rem | body = 1.125rem
   !important overrides Tailwind's responsive utility classes.     */

main h1 {
    font-size: clamp(2.25rem, 5vw, 3.5rem) !important;
    line-height: 1.1 !important;
    letter-spacing: -0.03em !important;
}

main h2 {
    font-size: clamp(1.875rem, 3.5vw, 2.5rem) !important;
    line-height: 1.18 !important;
    letter-spacing: -0.025em !important;
}

main h3 {
    font-size: clamp(1.2rem, 2vw, 1.75rem) !important;
    line-height: 1.3 !important;
    letter-spacing: -0.01em !important;
}

/* Loesung cards use fully custom classes — upgrade directly */
.loesung-card-title {
    font-size: clamp(1rem, 1.8vw, 1.2rem) !important;
    letter-spacing: -0.01em !important;
}

.loesung-card-text {
    font-size: .9rem !important;
    line-height: 1.65 !important;
}

/* Stat numbers — punchier with tighter tracking */
.stat-num {
    font-size: clamp(1.5rem, 3vw, 2.5rem) !important;
    letter-spacing: -0.05em !important;
    line-height: 1 !important;
}

/* ── 2. CARD SHADOW DEPTH SYSTEM ────────────────────────────────
   Three-layer shadows give cards real depth; lift sharpens hover. */

.shadow-card {
    box-shadow:
        0 1px 2px rgba(0, 0, 0, .03),
        0 4px 14px rgba(0, 0, 0, .06),
        0 14px 32px rgba(0, 0, 0, .05) !important;
}

.lift:hover {
    box-shadow:
        0 2px 6px rgba(0, 0, 0, .04),
        0 8px 22px rgba(0, 0, 0, .08) !important;
}

/* ── 3. CHALLENGE CARDS ─────────────────────────────────────────
   Card lift + brand glow + icon & accent-bar animations.          */

.challenge-card {
    transition: box-shadow .25s ease, border-color .25s ease;
}

.challenge-card:hover {
    box-shadow:
        0 6px 20px -8px rgba(0, 0, 0, .10),
        0 1px 3px rgba(0, 0, 0, .04);
}

/* static brand accent — no hover animation */
.challenge-accent {
    transform: scaleX(1);
}

/* Swipe dots for the mobile challenge slider (created by JS);
   only shown on phones, see the max-width media query below. */
.challenge-dots {
    display: none;
}

/* ── 4. BENEFIT CARDS ───────────────────────────────────────────
   Inset top shadow creates a vivid brand-colour accent on hover.  */

.benefit-card {
    transition: box-shadow .3s ease, transform .25s ease !important;
}

.benefit-card:hover {
    box-shadow:
        0 6px 20px -8px rgba(0, 0, 0, .10),
        0 1px 3px rgba(0, 0, 0, .04) !important;
}

/* ── 5. SERVICE LIST ITEMS ──────────────────────────────────────
   Brand ring + tint instead of plain white flash on hover.        */

.service-list-item {
    transition: background-color .18s ease, box-shadow .18s ease !important;
}

.service-list-item:hover {
    background-color: rgba(43, 154, 214, .09) !important;
    box-shadow: inset 0 0 0 1px rgba(43, 154, 214, .40) !important;
}

/* ── 6. TESTIMONIAL BLOCKQUOTES ─────────────────────────────────
   Vertical brand line instead of open-quote mark.                 */

main figure blockquote {
    padding-left: 1.25rem;
    border-left: 3px solid #2B9AD6;
    font-size: 1rem;
    line-height: 1.75;
    color: #334155;
    font-style: italic;
}

/* ── 7. FAQ ACCORDION ───────────────────────────────────────────
   Open state: left brand border + blue ambient glow.              */

main details[open] {
    border-left: 3px solid #2B9AD6 !important;
    box-shadow:
        0 4px 20px rgba(43, 154, 214, .10),
        0 1px 4px rgba(0, 0, 0, .04) !important;
}

main details summary {
    font-size: 1rem;
    line-height: 1.5;
}

main details>p {
    font-size: 1rem !important;
    line-height: 1.75 !important;
    color: #475569 !important;
}

/* ── 8. CTA BAND ────────────────────────────────────────────────
   Deep gradient with dot texture + corner sheen for drama.        */

.cta-band-inner {
    background: linear-gradient(125deg, #2B9AD6 0%, #1A6F9C 48%, #0d4470 100%) !important;
    position: relative;
    overflow: hidden;
}

.cta-band-inner::before {
    content: '';
    position: absolute;
    inset: 0;
    background-image: radial-gradient(rgba(255, 255, 255, .065) 1px, transparent 1px);
    background-size: 22px 22px;
    pointer-events: none;
    z-index: 0;
}

.cta-band-inner::after {
    content: '';
    position: absolute;
    inset: 0;
    background: radial-gradient(85% 140% at 95% 50%, rgba(255, 255, 255, .16), transparent 65%);
    pointer-events: none;
    z-index: 0;
}

.cta-band-inner>* {
    position: relative;
    z-index: 1;
}

/* Photo background with brand-blue overlay for the centred closing CTA */
.cta-band-dark {
    background-color: #1A6F9C !important;
    /* fallback if the image fails to load */
    background-image:
        linear-gradient(rgb(43 154 214 / 70%), rgb(43 154 214 / 70%)),
        url('../img/cta-img.jpg') !important;
    background-size: cover !important;
    background-position: center 40% !important;
    background-repeat: no-repeat !important;
}

/* Subtle bottom shade keeps the body copy and button legible over the photo */
.cta-band-dark::after {
    background: linear-gradient(180deg, rgba(7, 32, 58, 0) 38%, rgba(7, 32, 58, .45) 100%);
}

/* Full-bleed closing CTA sits flush against the footer (no bottom gap) */
main:has(> .cta-flush:last-child)+footer {
    margin-top: 0;
}

/* ── 9. SUCCESS STORY METRICS ───────────────────────────────────
   Gradient text on the big case numbers.                          */

.case-metric {
    background: linear-gradient(135deg, #2B9AD6 0%, #1A6F9C 100%);
    -webkit-background-clip: text;
    background-clip: text;
    -webkit-text-fill-color: transparent;
}

/* ── 10. PRODUCTS SECTION — bento redesign ───────────────────────
   Premium dark section: spotlight bg, gradient-border bento cards. */

.prd-section {
    background: #ffffff;
}

/* Central radial spotlight */
.prd-spotlight {
    width: 520px;
    height: 300px;
    background: radial-gradient(ellipse at 50% 0%, rgba(43, 154, 214, .04) 0%, transparent 68%);
}

@media (max-width: 768px) {
    .prd-spotlight {
        display: none;
    }
}

/* Eyebrow label */
.prd-eyebrow {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    font-size: .68rem;
    font-weight: 700;
    letter-spacing: .12em;
    text-transform: uppercase;
    color: #2B9AD6;
    padding: 5px 14px;
    border-radius: 99px;
    border: 1px solid rgba(43, 154, 214, .2);
    background: rgba(43, 154, 214, .06);
}

.prd-eyebrow::before {
    content: '';
    display: inline-block;
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background: #2B9AD6;
    animation: prd-pulse 2s ease-in-out infinite;
}

@keyframes prd-pulse {

    0%,
    100% {
        opacity: 1;
        transform: scale(1);
    }

    50% {
        opacity: .4;
        transform: scale(.8);
    }
}

/* Gradient italic accent in heading */
.prd-heading-glow {
    background: linear-gradient(100deg, #2B9AD6 0%, #1A6F9C 100%);
    -webkit-background-clip: text;
    background-clip: text;
    -webkit-text-fill-color: transparent;
}

/* ── BENTO GRID ──────────────────────────────────────────────────── */
.prd-bento {
    display: grid;
    gap: 24px;
    grid-template-columns: 1fr;
}

@media (min-width: 640px) {
    .prd-bento {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (min-width: 1024px) {
    .prd-bento {
        grid-template-columns: repeat(4, minmax(0, 1fr));
    }
}

/* ── CARD BASE ───────────────────────────────────────────────────── */
.prd-card {
    position: relative;
    border-radius: 12px;
    overflow: hidden;
    background: #ffffff;
    border: 1px solid #e2e8f0;
    transition: border-color .2s ease, box-shadow .2s ease, transform .16s ease, background .2s ease;
    display: flex;
    flex-direction: column;
}

.prd-card:hover {
    border-color: rgba(43, 154, 214, .38);
    background: #ffffff;
    box-shadow: 0 6px 20px -8px rgba(0, 0, 0, 0.10), 0 1px 3px rgba(0, 0, 0, 0.03);
}

/* ── FEATURED CARD ───────────────────────────────────────────────── */
.prd-card--featured {
    background: linear-gradient(155deg, #F0F9FF 0%, #E0F2FE 100%);
    border-color: rgba(43, 154, 214, .2);
}

.prd-card--featured:hover {
    border-color: rgba(43, 154, 214, .45);
    box-shadow: 0 6px 20px -8px rgba(43, 154, 214, 0.14);
}

/* inner glow blob inside featured card */
.prd-feat-blob {
    height: 160px;
    background: radial-gradient(ellipse 80% 60% at 20% 110%, rgba(43, 154, 214, .15) 0%, transparent 70%);
}

/* ── COMING SOON CARD ────────────────────────────────────────────── */
.prd-card--soon {
    cursor: default;
    border-style: dashed;
    border-color: #cbd5e1;
    background: #f8fafc;
}

.prd-card--soon:hover {
    transform: none;
    border-color: #cbd5e1;
    background: #f8fafc;
    box-shadow: none;
}

/* ── ICON ────────────────────────────────────────────────────────── */
.prd-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 36px;
    height: 36px;
    border-radius: 10px;
    background: rgba(43, 154, 214, .08);
    color: #2B9AD6;
    border: 1px solid rgba(43, 154, 214, .15);
    transition: background .18s, border-color .18s;
    flex-shrink: 0;
}

.prd-card:hover .prd-icon {
    background: rgba(43, 154, 214, .16);
    border-color: rgba(43, 154, 214, .35);
}

.prd-icon--lg {
    width: 36px;
    height: 36px;
    border-radius: 10px;
    background: rgba(43, 154, 214, .10);
    border-color: rgba(43, 154, 214, .20);
}

.prd-icon--dim {
    background: #e2e8f0;
    color: #94a3b8;
    border-color: #cbd5e1;
}

/* ── BADGE / LABELS ──────────────────────────────────────────────── */
.prd-badge {
    font-size: .62rem;
    font-weight: 700;
    letter-spacing: .1em;
    text-transform: uppercase;
    color: #1A6F9C;
    background: rgba(43, 154, 214, .12);
    border: 1px solid rgba(43, 154, 214, .25);
    border-radius: 99px;
    padding: 3px 10px;
}

.prd-arrow {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 28px;
    height: 28px;
    border-radius: 50%;
    background: #f1f5f9;
    color: #64748b;
    border: 1px solid #e2e8f0;
    transition: background .25s, color .25s, border-color .25s;
    flex-shrink: 0;
}

.prd-card:hover .prd-arrow {
    border-color: rgba(43, 154, 214, .35);
    color: #1A6F9C;
}

.prd-link {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    font-size: .75rem;
    font-weight: 600;
    color: #1A6F9C;
    transition: color .16s, gap .16s;
}

.prd-card:hover .prd-link {
    color: #2B9AD6;
}

.prd-soon-badge {
    display: inline-block;
    font-size: .62rem;
    font-weight: 700;
    letter-spacing: .08em;
    text-transform: uppercase;
    color: #b45309;
    background: #fef3c7;
    border: 1px solid #fde68a;
    border-radius: 99px;
    padding: 3px 10px;
    white-space: nowrap;
}

/* Keep legacy selector untouched */
.product-card:hover {
    box-shadow:
        0 0 0 1px rgba(43, 154, 214, .50),
        0 16px 48px rgba(0, 0, 0, .30) !important;
}

/* ── 11. STEPS BLOCK ────────────────────────────────────────────
   Larger, bordered number badge.                                  */

.step-badge {
    width: 3rem !important;
    height: 3rem !important;
    font-size: 1.125rem !important;
    border: 2px solid rgba(43, 154, 214, .25) !important;
}

/* ── 12. CERTIFICATION PILLS ────────────────────────────────────  */


/* ── 13. SCROLL ANCHOR OFFSET ───────────────────────────────────  */

main section {
    scroll-margin-top: 80px;
}

/* ── 14. NEW SECTION STYLES ──────────────────────────────────────  */

/* Marketing */
.sec-marketing {
    background: #ffffff;
    position: relative;
    overflow: hidden;
}

.sec-marketing::before {
    content: '';
    position: absolute;
    top: -10rem;
    right: -10rem;
    width: 42rem;
    height: 42rem;
    border-radius: 50%;
    background: radial-gradient(circle, rgba(43, 154, 214, 0.07) 0%, transparent 68%);
    pointer-events: none;
}

.mkt-benefit-card {
    position: relative;
    background: #ffffff;
    border-radius: 1.25rem;
    border: 1px solid #e2e8f0;
    overflow: hidden;
    transition: transform 0.3s ease, box-shadow 0.3s ease, border-color 0.3s ease;
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.06), 0 4px 16px rgba(0, 0, 0, 0.04);
}

.mkt-benefit-card:hover {
    box-shadow: 0 6px 20px -8px rgba(0, 0, 0, 0.10), 0 1px 3px rgba(0, 0, 0, 0.04);
    border-color: rgba(43, 154, 214, 0.28);
}

.mkt-benefit-accent {
    height: 3px;
    background: linear-gradient(90deg, var(--brand) 0%, rgba(43, 154, 214, 0.35) 100%);
}

.mkt-benefit-inner {
    padding: 2rem;
}

.mkt-benefit-top {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
}

.mkt-benefit-num {
    font-family: 'Space Grotesk', sans-serif;
    font-size: 2rem;
    font-weight: 800;
    color: rgba(203, 213, 225, 0.55);
    line-height: 1;
}

.mkt-benefit-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 3.5rem;
    height: 3.5rem;
    border-radius: 1rem;
    background: linear-gradient(135deg, rgba(43, 154, 214, 0.12) 0%, rgba(43, 154, 214, 0.06) 100%);
    color: var(--brand);
    transition: transform 0.3s ease, background 0.3s ease;
    flex-shrink: 0;
}

.mkt-benefit-card:hover .mkt-benefit-icon {
    background: linear-gradient(135deg, rgba(43, 154, 214, 0.2) 0%, rgba(43, 154, 214, 0.1) 100%);
}

/* Software */
.sec-software {
    background: #f0f7ff;
    position: relative;
    overflow: hidden;
}

.sec-software::before {
    content: '';
    position: absolute;
    bottom: -10rem;
    left: -10rem;
    width: 42rem;
    height: 42rem;
    border-radius: 50%;
    background: radial-gradient(circle, rgba(43, 154, 214, 0.07) 0%, transparent 68%);
    pointer-events: none;
}

.sw-benefit-card {
    position: relative;
    background: #ffffff;
    border-radius: 1.25rem;
    border: 1px solid #e2e8f0;
    overflow: hidden;
    transition: transform 0.3s ease, box-shadow 0.3s ease, border-color 0.3s ease;
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.06), 0 4px 16px rgba(0, 0, 0, 0.04);
}

.sw-benefit-card:hover {
    box-shadow: 0 6px 20px -8px rgba(0, 0, 0, 0.10), 0 1px 3px rgba(0, 0, 0, 0.04);
    border-color: rgba(43, 154, 214, 0.28);
}

.sw-benefit-accent {
    height: 3px;
    background: linear-gradient(90deg, var(--brand) 0%, rgba(43, 154, 214, 0.35) 100%);
}

.sw-benefit-inner {
    padding: 2rem;
}

.sw-benefit-top {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
}

.sw-benefit-num {
    font-family: 'Space Grotesk', sans-serif;
    font-size: 2rem;
    font-weight: 800;
    color: rgba(203, 213, 225, 0.55);
    line-height: 1;
}

.sw-benefit-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 3.5rem;
    height: 3.5rem;
    border-radius: 1rem;
    background: linear-gradient(135deg, rgba(43, 154, 214, 0.12) 0%, rgba(43, 154, 214, 0.06) 100%);
    color: var(--brand);
    transition: transform 0.3s ease, background 0.3s ease;
    flex-shrink: 0;
}

.sw-benefit-card:hover .sw-benefit-icon {
    background: linear-gradient(135deg, rgba(43, 154, 214, 0.2) 0%, rgba(43, 154, 214, 0.1) 100%);
}

/* Benefits — Tab toggle */
.sec-benefits-c {
    background: #f8fafc;
}

.benfc-toggle {
    display: inline-flex;
    border-bottom: 2px solid #e2e8f0;
    gap: 0;
}

.benfc-tab {
    padding: 0.625rem 1.75rem;
    font-size: 0.9rem;
    font-weight: 600;
    font-family: 'Space Grotesk', sans-serif;
    color: #64748b;
    background: transparent;
    border: none;
    border-bottom: 2px solid transparent;
    margin-bottom: -2px;
    cursor: pointer;
    transition: color 0.2s, border-color 0.2s;
}

.benfc-tab.active {
    color: var(--brand);
    border-bottom-color: var(--brand);
}

.benfc-panel {
    display: none;
}

.benfc-panel.active {
    display: block;
}

.benfc-card {
    background: #ffffff;
    border: 1px solid #e2e8f0;
    border-radius: 0.375rem;
    display: block;
    text-decoration: none;
    color: inherit;
    transition: border-color 0.2s, box-shadow 0.2s, transform 0.2s;
}

a.benfc-card:hover {
    border-color: rgba(43, 154, 214, .35);
    box-shadow: 0 6px 18px -8px rgba(0, 0, 0, .10), 0 1px 3px rgba(0, 0, 0, .04);
}

.benfc-accent {
    display: none;
}

.benfc-inner {
    padding: 1.75rem;
}

.benfc-top {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
}

.benfc-num {
    font-size: 1.25rem;
    font-weight: 700;
    color: #cbd5e1;
    line-height: 1;
}

.benfc-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 2.75rem;
    height: 2.75rem;
    color: var(--brand);
    flex-shrink: 0;
}

/* compact card variant */
.benfc-card--sm {
    display: flex;
    align-items: flex-start;
    gap: 1rem;
    padding: 1.25rem 1.4rem;
}

.benfc-icon-sm {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 2.5rem;
    height: 2.5rem;
    border-radius: 0.25rem;
    background: #EAF6FC;
    color: var(--brand);
    box-shadow: inset 0 0 0 1px rgba(43, 154, 214, .1);
    flex-shrink: 0;
    margin-top: 0.0625rem;
    transition: background 0.2s ease, box-shadow 0.2s ease;
}

.benfc-sm-title {
    font-size: 0.98rem;
    font-weight: 700;
    color: #1e293b;
    line-height: 1.3;
    font-family: 'Space Grotesk', sans-serif;
}

.benfc-sm-sub {
    font-size: 0.85rem;
    color: #64748b;
    margin-top: 0.25rem;
    line-height: 1.45;
}

/* ── Service grid (homepage) ────────────────────────────────────── */
.svc-panel {
    display: none;
}
.svc-panel.active {
    display: block;
}

.svc-group-label {
    font-size: 0.6875rem;
    font-weight: 700;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: #94a3b8;
    margin-bottom: 0.875rem;
}
.svc-grid {
    display: grid;
    gap: 0.75rem;
    grid-template-columns: 1fr 1fr;
}
@media (min-width: 1024px) {
    .svc-grid { grid-template-columns: repeat(3, 1fr); }
}
.svc-card {
    background: #ffffff;
    border: 1px solid #e2e8f0;
    border-radius: 0;
    padding: 1.5rem;
    display: block;
    text-decoration: none;
    color: inherit;
    transition: background 0.18s ease, box-shadow 0.18s ease, border-color 0.18s ease;
}
.svc-card:hover {
    background: #f8fafc;
    border-color: rgba(43, 154, 214, 0.35);
    box-shadow: 0 4px 16px -6px rgba(0, 0, 0, 0.10);
}
.svc-card-body {
    padding: 1.5rem;
    background: #fff;
}
.svc-icon {
    width: 1.75rem;
    height: 1.75rem;
    color: var(--brand);
    margin-bottom: 0.875rem;
    display: block;
}
.svc-title {
    font-size: 1rem;
    font-weight: 700;
    color: #1e293b;
    font-family: 'Space Grotesk', sans-serif;
    line-height: 1.3;
    margin-bottom: 0.375rem;
}
.svc-desc {
    font-size: 0.85rem;
    color: #64748b;
    line-height: 1.55;
}

/* ── HOW WE WORK — Combined A + C ───────────────────────────────── */
.sec-howwework {
    background: #ffffff;
}

.hww-combo-list {
    display: flex;
    flex-direction: column;
    gap: 0.875rem;
    max-width: 60rem;
    margin-left: auto;
    margin-right: auto;
}

.hww-combo-card {
    display: flex;
    align-items: flex-start;
    gap: 1.25rem;
    background: #ffffff;
    border: 1px solid #e2e8f0;
    border-radius: 0.375rem;
    padding: 1.5rem 1.75rem;
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.04), 0 4px 14px rgba(0, 0, 0, 0.03);
    transition: border-color 0.2s ease, box-shadow 0.2s ease, transform 0.2s ease;
}

.hww-combo-card:hover {
    border-color: rgba(43, 154, 214, 0.28);
    box-shadow: 0 6px 20px -8px rgba(0, 0, 0, 0.10), 0 1px 3px rgba(0, 0, 0, 0.04);
}

.hww-combo-badge {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 2.75rem;
    height: 2.75rem;
    border-radius: 9999px;
    background: rgba(43, 154, 214, 0.08);
    border: 1.5px solid rgba(43, 154, 214, 0.2);
    color: var(--brand);
    font-family: 'Space Grotesk', sans-serif;
    font-size: 0.875rem;
    font-weight: 700;
    flex-shrink: 0;
    margin-top: 0.1rem;
    transition: background 0.2s ease, border-color 0.2s ease;
}

.hww-combo-body {
    flex: 1;
}

.hww-combo-head {
    display: flex;
    align-items: center;
    gap: 0.625rem;
}

.hww-combo-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 1.75rem;
    height: 1.75rem;
    border-radius: 0.25rem;
    background: rgba(43, 154, 214, 0.1);
    color: var(--brand);
    flex-shrink: 0;
}

.hww-combo-title {
    font-size: 1.125rem;
    font-weight: 800;
    color: #0f172a;
    letter-spacing: -0.02em;
}

.hww-combo-text {
    font-size: 0.9375rem;
    line-height: 1.7;
    color: #64748b;
}

.hww-combo-pills {
    display: flex;
    flex-wrap: wrap;
    gap: 0.4rem;
}

.hww-combo-pill {
    font-size: 0.78rem;
    font-weight: 600;
    color: #475569;
    background: #ffffff;
    border: 1px solid #e2e8f0;
    border-radius: 9999px;
    padding: 0.2rem 0.75rem;
}

@media (max-width: 639px) {
    .hww-combo-card {
        padding: 1.25rem;
    }

    .challenge-icon-svg {
        display: none;
    }
}

/* Eigene Produkte — Classic */
.sec-products {
    background-color: #f8fafc;
    border-bottom: 1px solid #e2e8f0;
}

/* Product cards grid */
.prd-grid {
    display: grid;
    gap: 1rem;
    grid-template-columns: 1fr;
}

@media (min-width: 640px) {
    .prd-grid {
        grid-template-columns: 1fr 1fr;
    }
}

@media (min-width: 1024px) {
    .prd-grid {
        grid-template-columns: repeat(4, 1fr);
    }
}

.prd-card {
    display: flex;
    flex-direction: column;
    background-color: #ffffff;
    border: 1px solid #e2e8f0;
    border-radius: 0.375rem;
    padding: 1.25rem;
    text-decoration: none;
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.04), 0 4px 14px rgba(0, 0, 0, 0.03);
    transition: border-color 0.2s ease, box-shadow 0.2s ease;
}

.prd-card:hover {
    border-color: rgba(43, 154, 214, 0.3);
    box-shadow: 0 8px 24px -10px rgba(0, 0, 0, 0.12), 0 2px 6px rgba(0, 0, 0, 0.04);
}

.prd-card-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 2rem;
    height: 2rem;
    border-radius: 0.25rem;
    background-color: #f1f5f9;
    color: var(--brand);
    margin-bottom: 0.875rem;
}

.prd-card-icon--dim {
    color: #94a3b8;
}

.prd-card-title {
    font-size: 0.9375rem;
    font-weight: 700;
    color: #1e293b;
    line-height: 1.3;
}

.prd-card-title--dim {
    color: #94a3b8;
}

.prd-card-desc {
    margin-top: 0.375rem;
    font-size: 0.8125rem;
    line-height: 1.55;
    color: #64748b;
    flex: 1;
}

.prd-card-desc--dim {
    color: #b0bec9;
}

.prd-card-link {
    margin-top: 1rem;
    display: inline-flex;
    align-items: center;
    gap: 0.3rem;
    font-size: 0.8125rem;
    font-weight: 600;
    color: var(--brand);
}

/* Coming soon state */
.prd-card--soon {
    background-color: #fbfcfd;
    border-style: dashed;
    cursor: default;
    box-shadow: none;
}

.prd-card--soon:hover {
    border-color: #e2e8f0;
    box-shadow: none;
}

.prd-soon-badge {
    margin-top: 1rem;
    display: inline-block;
    font-size: 0.65rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: #92400e;
    background-color: #fef3c7;
    border: 1px solid #fde68a;
    padding: 0.2rem 0.55rem;
    border-radius: 9999px;
}

/* Success Stories */
.sec-success {
    background-color: #f8fafc;
    border-top: 1px solid #e2e8f0;
}

.success-card {
    display: flex;
    flex-direction: column;
    border-radius: 0.375rem;
    overflow: hidden;
    background-color: #ffffff;
    border: 1px solid #e2e8f0;
    transition: all 0.2s ease;
}

.success-card:hover {
    border-color: rgba(43, 154, 214, 0.2);
    box-shadow: 0 6px 20px -8px rgba(0, 0, 0, 0.08);
}

.success-video-wrap {
    cursor: pointer;
}

.success-thumb,
.success-video {
    transition: opacity 0.25s ease;
}

.success-play-overlay {
    position: absolute;
    inset: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    background: rgba(0, 0, 0, 0.28);
    transition: background 0.2s, opacity 0.2s;
}

.success-video-wrap:hover .success-play-overlay {
    opacity: 0;
}

.success-play-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 3.5rem;
    height: 3.5rem;
    border-radius: 9999px;
    background-color: rgba(255, 255, 255, 0.92);
    color: var(--brand);
    box-shadow: 0 4px 16px rgba(0, 0, 0, 0.22);
    transition: transform 0.18s, background 0.18s;
}

.success-video-wrap:hover .success-play-btn {
    transform: scale(1.1);
    background-color: #fff;
}

.success-card-body {
    padding: 1.5rem;
}

/* Success category filter */
.success-filter-btn {
    padding: 0.45rem 1.1rem;
    font-size: 0.8rem;
    font-weight: 600;
    border-radius: 9999px;
    border: 1.5px solid #e2e8f0;
    background: transparent;
    color: #64748b;
    cursor: pointer;
    transition: all 0.18s;
}

.success-filter-btn:hover {
    border-color: var(--brand);
    color: var(--brand);
}

.success-filter-btn.active {
    background: var(--brand);
    border-color: var(--brand);
    color: #fff;
}

/* Category badges on cards */
.success-cat-badge {
    display: inline-block;
    margin-bottom: 0.6rem;
    padding: 0.2rem 0.65rem;
    border-radius: 9999px;
    font-size: 0.68rem;
    font-weight: 700;
    letter-spacing: 0.06em;
    text-transform: uppercase;
}

.success-cat-badge--marketing {
    background: #e0f2fe;
    color: #0369a1;
}

.success-cat-badge--software {
    background: #ede9fe;
    color: #6d28d9;
}

.success-cat-badge--partner {
    background: #dcfce7;
    color: #15803d;
}

/* Hide filtered-out cards */
.success-card[hidden] {
    display: none;
}

/* Success video modal */
.svm-backdrop {
    position: fixed;
    inset: 0;
    z-index: 9000;
    display: none;
    align-items: center;
    justify-content: center;
    background: rgba(0, 0, 0, 0.88);
    padding: 1rem;
}

.svm-backdrop.is-open {
    display: flex;
}

.svm-inner {
    position: relative;
    width: 100%;
    max-width: 900px;
}

.svm-player {
    display: block;
    width: 100%;
    border-radius: 0.5rem;
    max-height: 80vh;
    background: #000;
}

.svm-close {
    position: absolute;
    top: -2.5rem;
    right: 0;
    background: transparent;
    border: none;
    color: #fff;
    font-size: 2rem;
    line-height: 1;
    cursor: pointer;
    opacity: 0.8;
    transition: opacity 0.15s;
}

.svm-close:hover {
    opacity: 1;
}

/* Testimonials – redesigned */
.sec-testimonials {
    position: relative;
    overflow: hidden;
    padding: 7rem 0;
    background: #f8fafc;
}

.sec-testimonials::before {
    content: '';
    position: absolute;
    inset: 0;
    background-image: radial-gradient(rgba(0, 0, 0, 0.04) 1px, transparent 1px);
    background-size: 30px 30px;
    pointer-events: none;
}

.sec-testimonials::after {
    content: '';
    position: absolute;
    top: -15%;
    right: -8%;
    width: 600px;
    height: 600px;
    background: radial-gradient(circle, rgba(43, 154, 214, 0.07) 0%, transparent 60%);
    pointer-events: none;
}

.tst-header {
    text-align: center;
    margin-bottom: 4rem;
    position: relative;
    z-index: 1;
}

.tst-badge {
    display: inline-flex;
    align-items: center;
    border-radius: 9999px;
    background: rgba(43, 154, 214, 0.08);
    padding: 0.375rem 1.125rem;
    font-size: 0.6875rem;
    font-weight: 700;
    letter-spacing: 0.15em;
    text-transform: uppercase;
    color: var(--brand);
    border: 1px solid rgba(43, 154, 214, 0.22);
}

.tst-heading {
    margin-top: 1.25rem;
    font-family: "Space Grotesk", sans-serif;
    font-size: clamp(1.875rem, 4vw, 2.75rem);
    font-weight: 700;
    line-height: 1.2;
    letter-spacing: -0.02em;
    color: #0d1b2a;
}

.tst-subheading {
    margin-top: 1rem;
    font-size: 1.0625rem;
    color: #64748b;
    max-width: 36rem;
    margin-left: auto;
    margin-right: auto;
    line-height: 1.7;
}

.tst-layout {
    position: relative;
    z-index: 1;
    display: grid;
    gap: 1.5rem;
    grid-template-columns: 1fr;
}

@media (min-width: 640px) {
    .tst-layout {
        grid-template-columns: repeat(2, 1fr);
    }
}

.tst-card {
    position: relative;
    display: flex;
    flex-direction: column;
    background: #ffffff;
    border: 1px solid #e2e8f0;
    border-radius: 0.375rem;
    padding: 2.25rem;
    overflow: hidden;
    transition: border-color 0.3s ease, transform 0.3s ease, box-shadow 0.3s ease;
    box-shadow: 0 1px 4px rgba(0, 0, 0, 0.04), 0 4px 16px rgba(0, 0, 0, 0.04);
}

.tst-card:hover {
    border-color: rgba(43, 154, 214, 0.4);
    box-shadow: 0 6px 22px -8px rgba(0, 0, 0, 0.10);
}

.tst-quote-mark {
    position: absolute;
    top: 0.75rem;
    right: 1.5rem;
    font-family: Georgia, "Times New Roman", serif;
    font-size: 9rem;
    line-height: 1;
    color: rgba(43, 154, 214, 0.08);
    pointer-events: none;
    user-select: none;
}

.tst-stars {
    display: flex;
    gap: 0.2rem;
    color: #f59e0b;
    margin-bottom: 1.25rem;
}

.tst-text {
    flex: 1;
    font-size: 0.9375rem;
    line-height: 1.75;
    color: #475569;
    margin-bottom: 1.75rem;
    position: relative;
}

.tst-author {
    display: flex;
    align-items: center;
    gap: 0.875rem;
    border-top: 1px solid #e2e8f0;
    padding-top: 1.25rem;
}

.tst-avatar {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 2.75rem;
    height: 2.75rem;
    border-radius: 9999px;
    background: var(--brand);
    color: #ffffff;
    font-weight: 700;
    font-family: "Space Grotesk", sans-serif;
    font-size: 0.9375rem;
    flex-shrink: 0;
}

.tst-author-info {
    display: flex;
    flex-direction: column;
}

.tst-name {
    font-size: 0.9375rem;
    font-weight: 700;
    color: #0d1b2a;
    font-family: "Space Grotesk", sans-serif;
}

.tst-role {
    font-size: 0.8rem;
    color: #94a3b8;
    margin-top: 0.15rem;
}

.tst-source {
    display: inline-flex;
    align-items: center;
    gap: 0.45rem;
    margin-left: auto;
    align-self: center;
    flex-shrink: 0;
    padding: 0.45rem 0.85rem;
    border: 1px solid #e2e8f0;
    border-radius: 9999px;
    background: #ffffff;
    font-size: 0.78rem;
    font-weight: 600;
    color: #475569;
    text-decoration: none;
    white-space: nowrap;
    transition: border-color 0.2s ease, color 0.2s ease, box-shadow 0.2s ease, transform 0.2s ease;
}

.tst-source:hover {
    border-color: rgba(43, 154, 214, 0.45);
    color: var(--brand);
    box-shadow: 0 4px 14px -6px rgba(0, 0, 0, 0.12);
    transform: translateY(-1px);
}

.tst-source svg {
    width: 1.05rem;
    height: 1.05rem;
    flex-shrink: 0;
}

main h1 {
    font-size: 45px !important;
}

/* ================================================================
   MOBILE OPTIMISATION  —  phones (≤ 640px)
   Layered last so it wins the cascade. Tightens the generous desktop
   spacing, prevents iOS zoom-on-focus, and lets desktop-shaped line
   breaks reflow naturally on narrow screens. Markup is untouched.
   ================================================================ */
@media (max-width: 640px) {

    /* iOS Safari auto-zooms when a focused form control is < 16px.
       Pin controls to 16px to keep the viewport stable on tap. */
    input:not([type="checkbox"]):not([type="radio"]),
    select,
    textarea {
        font-size: 16px !important;
    }

    /* Decorative <br> tags shape lines for the desktop layout; on a
       narrow screen they force ragged, premature breaks. Let copy,
       headings and card titles reflow to the available width. */
    main p br,
    main h1 br,
    main h2 br,
    main h3 br,
    .loesung-card-title br {
        display: none;
    }

    /* The hero "Mehr Kunden. / Bessere Mitarbeiter. / Weniger Aufwand."
       headline keeps its line breaks on mobile. */
    .hero-headline br {
        display: inline !important;
    }

    /* Inner-page hero <h1> is pinned to 45px globally (see above) —
       scale it down so it doesn't overwhelm a phone screen. The home
       hero sets its own size via a utility class and is unaffected.
       Also loosen the tight desktop line-height so natural wraps
       (after <br> is hidden above) don't collapse lines together,
       and center-align to match the home hero on narrow screens. */
    main h1 {
        font-size: clamp(1.9rem, 7.5vw, 2.25rem) !important;
        line-height: 1.22 !important;
        text-align: center !important;
    }

    /* Tighten the large desktop vertical rhythm on phones. These
       utilities/sections are used across every page. */
    .py-24 {
        padding-top: 2.75rem !important;
        padding-bottom: 2.75rem !important;
    }

    .py-20 {
        padding-top: 2.5rem !important;
        padding-bottom: 2.5rem !important;
    }

    .py-16 {
        padding-top: 2rem !important;
        padding-bottom: 2rem !important;
    }

    .py-14 {
        padding-top: 1.875rem !important;
        padding-bottom: 1.875rem !important;
    }

    .loesung-section {
        padding: 2.75rem 0;
    }

    .sec-testimonials {
        padding: 2.75rem 0;
    }

    /* Testimonial cards: the author footer (avatar + name/role + the
       "Auf Google ansehen" link) is one flex row. On a phone the nowrap
       link won't shrink, so it crushes the name/role column and forces
       "Verifizierte Google-Bewertung" into a ragged multi-line stack.
       Trim the generous desktop padding, let the row wrap, and drop the
       Google link onto its own full-width row with a comfortable tap
       target so name and role read cleanly on one line each. */
    .tst-card {
        padding: 1.5rem;
    }

    .tst-author {
        flex-wrap: wrap;
        gap: 0.75rem 0.875rem;
    }

    .tst-author-info {
        flex: 1;
        min-width: 0;
    }

    .tst-source {
        flex-basis: 100%;
        margin-left: 0;
        justify-content: center;
        padding-top: 0.6rem;
        padding-bottom: 0.6rem;
    }

    /* Pull in oversized section-header and band margins. */
    .mb-14 {
        margin-bottom: 2rem !important;
    }

    .mb-12 {
        margin-bottom: 1.75rem !important;
    }

    .mt-24 {
        margin-top: 2.5rem !important;
    }

    .mt-16 {
        margin-top: 2rem !important;
    }

    /* Closing CTA band: trim its tall vertical padding. */
    .cta-band-inner>div[class*="py-20"] {
        padding-top: 3rem !important;
        padding-bottom: 3rem !important;
    }

    /* Service cards: 2 columns at 375px gives each card too little room
       for German compound words. Drop to 1 column on narrow viewports. */
    #leistungen-section .svc-grid {
        grid-template-columns: 1fr !important;
    }

    /* Challenge cards: horizontal swipe slider with scroll-snap.
       Bleeds into the wrapper's px-4 so cards reach the screen edge
       and the next card peeks in as a swipe affordance. */
    .grid.challenge-grid {
        display: flex;
        overflow-x: auto;
        overflow-y: hidden;
        scroll-snap-type: x mandatory;
        scroll-padding-left: 1rem;
        overscroll-behavior-x: contain;
        -webkit-overflow-scrolling: touch;
        scrollbar-width: none;
        margin: 0 -1rem;
        padding: 0 1rem;
    }

    .grid.challenge-grid::-webkit-scrollbar {
        display: none;
    }

    .grid.challenge-grid>.challenge-card {
        flex: 0 0 80%;
        scroll-snap-align: start;
    }

    .challenge-dots {
        display: flex;
        justify-content: center;
        gap: .5rem;
        margin-top: 1rem;
    }

    .challenge-dots button {
        width: 8px;
        height: 8px;
        padding: 0;
        border: none;
        border-radius: 9999px;
        background: #CBD5E1;
        transition: background .2s, transform .2s;
    }

    .challenge-dots button.active {
        background: var(--brand);
        transform: scale(1.25);
    }

    /* About hero key-stats: three nowrap German labels (e.g. "zufriedene
       Kunden") plus the generous pl-6/pr-6 padding add up to ~370px and
       overflow a narrow phone — the third stat gets clipped. Center the
       row, tighten the dividers' padding and let the labels wrap so all
       three stats stay on screen. */
    .ueber-hero-stats {
        justify-content: center;
    }

    .ueber-hero-stats > div {
        padding-left: 0.75rem;
        padding-right: 0.75rem;
    }

    .ueber-hero-stats .whitespace-nowrap {
        white-space: normal;
    }

    /* Hero floating proof cards: at narrow viewports the -left / -right
       offsets push them partially behind adjacent text. Hide on mobile
       and let the Stephan Bauer card carry the social proof alone. */
    .floaty,
    .floaty-slow {
        display: none !important;
    }

    /* Loesung cards: full-width on small screens. */
    .loesung-card-img {
        height: 200px;
    }

    /* Loesung cards: stacked vertically on mobile, one below the other,
       full-width within the wrapper's px-4. */
    .loesung-cards-col {
        flex-direction: column;
        gap: 1.25rem;
    }

    .loesung-cards-col>.loesung-card {
        flex: 0 0 auto;
        width: 100%;
    }

    /* No horizontal swipe on mobile, so hide the JS-generated dots. */
    .loesung-cards-col+.challenge-dots {
        display: none;
    }

    /* "Eigene Produkte" cards: same horizontal swipe slider as the
       challenge / loesung cards — bleeds into the wrapper's px-4 so the
       next card peeks in as a swipe affordance. Dots are generated by JS
       and reuse the .challenge-dots styles above. */
    .prd-grid {
        display: flex;
        gap: .75rem;
        overflow-x: auto;
        overflow-y: hidden;
        scroll-snap-type: x mandatory;
        scroll-padding-left: 1rem;
        overscroll-behavior-x: contain;
        -webkit-overflow-scrolling: touch;
        scrollbar-width: none;
        margin: 0 -1rem;
        padding: 0 1rem;
    }

    .prd-grid::-webkit-scrollbar {
        display: none;
    }

    .prd-grid>.prd-card {
        flex: 0 0 80%;
        scroll-snap-align: start;
    }

    /* Unsere Leistungen tab toggle: let it fill the width on phones. */
    .benfc-toggle {
        width: 100%;
        justify-content: stretch;
    }

    .benfc-tab {
        flex: 1;
        text-align: center;
        padding-left: 0.75rem;
        padding-right: 0.75rem;
    }

    /* "Eigene Produkte" header buttons: stack vertically on mobile. */
    .sec-products .shrink-0.flex.gap-3 {
        flex-direction: column;
        align-items: stretch;
    }

    .sec-products .shrink-0.flex.gap-3 .btn {
        justify-content: center;
        text-align: center;
    }

    /* Hero CTA buttons: stack on mobile, full width. */
    .hero-btns {
        flex-direction: column;
        width: 100%;
    }

    .hero-btns .btn {
        justify-content: center;
        width: 100%;
    }

    /* Process section CTA button: full-width with centered text on mobile. */
    .proc-cta .btn {
        justify-content: center;
        width: 100%;
    }

    /* QRODE "Coming soon" badge: as a child of a flex-column card it stretches
       to full width by default. Revert to auto-width inline-block. */
    .prd-soon-badge {
        align-self: flex-start;
    }

    /* Erfahrungen filter buttons: reduce padding so all 4 fit in one row. */
    .success-filter-btn {
        padding: 0.3rem 0.65rem;
        font-size: 0.75rem;
    }

    /* ── SECTION INTRO CENTERING ───────────────────────────────────────────
       On desktop these sections use 2-col grids (text left, content right).
       On mobile they stack to 1 col — center the text column for balance.  */

    /* "Das Problem" — first child of lg:grid-cols-2 grid */
    .lg\:grid-cols-2>div:first-child {
        text-align: center;
    }

    /* Center the CTA button wrapper inside that column */
    .lg\:grid-cols-2>div:first-child .mt-10 {
        display: flex;
        justify-content: center;
    }

    /* "Die Lösung" — loesung sticky text block */
    .loesung-sticky-block {
        text-align: center;
        align-items: center;
    }

    /* Center the CTA button inside loesung text col */
    .loesung-sticky-block .mt-8 {
        display: flex;
        justify-content: center;
    }

    /* "Die Lösung": on phones the Marketing/Software toggle moves below
       the CTA button — text block first, then toggle, then the cards. */
    .loesung-section>.max-w-wide {
        display: flex;
        flex-direction: column;
    }

    .loesung-grid {
        display: contents;
    }

    .loesung-text-col {
        order: 1;
    }

    .loesung-toggle-wrap {
        order: 2;
        margin-top: 3.5rem;
    }

    .loesung-cards-col {
        order: 3;
        margin-top: 2rem;
    }

    /* The JS-generated swipe dots sit after the cards column inside the
       display:contents grid, so they need their own order slot. */
    .loesung-cards-col+.challenge-dots {
        order: 4;
    }

    /* "Eigene Produkte" + "Erfahrungen" — header text col (.max-w-2xl) */
    .sec-products .max-w-2xl,
    .sec-success .max-w-2xl {
        text-align: center;
    }

    /* Hero h1: prevent "KI-Zeitalter." from breaking at the hyphen. */
    .hero-h1-brand {
        display: inline;
        white-space: nowrap;
    }

    /* Challenge section intro header: keep the sub-paragraph readable. */
    .challenge-intro-text {
        text-align: left;
    }

    /* Über uns stat items: give the icon+text row a bit more vertical room. */
    .divide-y>div {
        padding-top: 0.875rem !important;
        padding-bottom: 0.875rem !important;
    }

    /* How-we-work pills: allow pills to sit side by side on one line. */
    .hww-combo-pill {
        font-size: 0.72rem;
        padding: 0.18rem 0.6rem;
    }
}