@import url('https://fonts.googleapis.com/css2?family=UnifrakturCook:wght@700&display=swap');


/* ==========================================================
   RUFFUS SERVICES
========================================================== */

.rs-services {
    width:100%;
    overflow:hidden;

    background:#f6f6f2;
    color:#090909;

    font-family:Arial,Helvetica,sans-serif;
}

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

.rs-inner {
    width:100%;
    max-width:1320px;

    margin:auto;

    padding:
        95px
        25px
        105px;
}


/* ==========================================================
   HEAD
========================================================== */

.rs-head {
    display:grid;

    grid-template-columns:
        1.15fr
        .85fr;

    gap:70px;

    align-items:end;

    margin-bottom:45px;
}

.rs-kicker {
    display:inline-flex;
    align-items:center;
    gap:10px;

    margin-bottom:18px;

    font-size:12px;
    font-weight:800;

    letter-spacing:1px;
    text-transform:uppercase;
}

.rs-kicker::before {
    content:"";

    width:38px;
    height:4px;

    background:#FEEE02;
}


/* ==========================================================
   TITLE
========================================================== */

.rs-title {
    max-width:720px;

    margin:0;

    color:#090909;

    font-size:
        clamp(
            40px,
            3.8vw,
            53px
        );

    line-height:1.03;

    letter-spacing:-1.7px;

    font-weight:750;
}

.rs-marker {
    position:relative;

    display:inline-block;

    z-index:1;

    margin-left:4px;

    padding:
        .02em
        .13em
        .07em;

    color:#090909;

    font-family:
        "UnifrakturCook",
        serif;

    font-size:1.03em;

    line-height:.92;
}

.rs-marker::before {
    content:"";

    position:absolute;

    inset:
        8%
        0
        0;

    z-index:-1;

    background:#FEEE02;

    transform:
        skewX(-4deg)
        scaleX(0);

    transform-origin:left center;

    transition:
        transform
        .75s
        cubic-bezier(.22,.8,.24,1)
        .45s;
}


/* ==========================================================
   INTRO
========================================================== */

.rs-intro {
    max-width:470px;

    margin:
        0
        0
        3px
        auto;

    color:#555;

    font-size:16px;

    line-height:1.72;
}

.rs-intro p {
    margin:0;
}

.rs-intro strong {
    color:#090909;
}


/* ==========================================================
   GRID
========================================================== */

.rs-grid {
    display:grid;

    grid-template-columns:
        repeat(3,minmax(0,1fr));

    gap:14px;
}


/* ==========================================================
   CARD
========================================================== */

.rs-card {
    position:relative;

    min-height:300px;

    overflow:hidden;

    padding:
        28px
        27px
        26px;

    display:flex;
    flex-direction:column;

    background:#fff;

    border:
        1px solid
        rgba(9,9,9,.08);

    transition:
        transform .24s ease,
        box-shadow .24s ease,
        border-color .24s ease;
}

.rs-card::before {
    content:"";

    position:absolute;

    top:-74px;
    right:-48px;

    width:125px;
    height:150px;

    background:#FEEE02;

    transform:rotate(25deg);

    transition:
        transform .3s ease;
}


/* HOVER */

.rs-card:hover {
    transform:
        translateY(-5px);

    border-color:#090909;

    box-shadow:
        8px
        8px
        0
        rgba(254,238,2,.55);
}

.rs-card:hover::before {
    transform:
        rotate(25deg)
        scale(1.08);
}


/* ==========================================================
   CARD TOP
========================================================== */

.rs-card-top {
    position:relative;

    z-index:2;

    display:flex;

    align-items:flex-start;
    justify-content:space-between;

    margin-bottom:40px;
}

.rs-icon {
    width:50px;
    height:50px;

    display:flex;

    align-items:center;
    justify-content:center;

    background:#090909;

    color:#FEEE02;

    font-size:18px;

    transition:
        transform .25s ease;
}

.rs-icon i,
.rs-icon svg {
    color:#FEEE02;

    fill:#FEEE02;
}

.rs-card:hover .rs-icon {
    transform:
        translateY(-3px)
        rotate(-3deg);
}

.rs-number {
    position:relative;
    z-index:3;

    padding-top:4px;

    font-size:10px;
    line-height:1;

    font-weight:800;

    letter-spacing:1px;
}


/* ==========================================================
   CARD TEXT
========================================================== */

.rs-card h3 {
    margin:
        0
        0
        10px;

    color:#090909;

    font-size:22px;

    line-height:1.15;

    letter-spacing:-.4px;

    font-weight:750;
}

.rs-card p {
    margin:
        0
        0
        22px;

    color:#5c5c58;

    font-size:14px;

    line-height:1.62;
}


/* ==========================================================
   LINK
========================================================== */

.rs-link {
    margin-top:auto;

    width:max-content;

    display:inline-flex;

    align-items:center;

    gap:9px;

    color:#090909 !important;

    text-decoration:none !important;

    font-size:13px;

    line-height:1;

    font-weight:800;
}

.rs-link i {
    font-size:10px;

    transition:
        transform .2s ease;
}

.rs-link:hover i {
    transform:
        translateX(5px);
}


/* ==========================================================
   PROMO
========================================================== */

.rs-promo {
    position:relative;

    min-height:145px;

    margin-top:16px;

    overflow:hidden;

    display:grid;

    grid-template-columns:
        92px
        1fr
        auto;

    align-items:center;

    gap:30px;

    padding:
        27px
        30px;

    background:#090909;

    border-left:
        7px solid
        #FEEE02;

    color:#fff;
}

.rs-promo::before {
    content:"";

    position:absolute;

    top:-105px;
    right:275px;

    width:165px;
    height:325px;

    background:#FEEE02;

    opacity:.045;

    transform:rotate(24deg);
}


/* ==========================================================
   SCHUTTRUTSCHEN ICON
========================================================== */

.rs-promo-icon {
    position:relative;

    z-index:2;

    width:76px;
    height:76px;

    display:flex;

    align-items:center;
    justify-content:center;

    overflow:hidden;

    background:#FEEE02;

    transition:
        transform .25s ease;
}

.rs-promo:hover
.rs-promo-icon {
    transform:
        translateY(-4px);
}


.rs-chute {
    position:relative;

    width:47px;
    height:58px;

    transform:rotate(7deg);
}

.rs-chute > span:not(.rs-rubble) {
    position:absolute;

    left:8px;

    width:31px;
    height:15px;

    background:#090909;

    clip-path:
        polygon(
            8% 0,
            92% 0,
            100% 72%,
            78% 100%,
            22% 100%,
            0 72%
        );
}

.rs-chute > span:nth-of-type(2) {
    top:0;
}

.rs-chute > span:nth-of-type(3) {
    top:14px;
    left:6px;
}

.rs-chute > span:nth-of-type(4) {
    top:28px;
    left:4px;
}

.rs-chute > span:nth-of-type(5) {
    top:42px;
    left:2px;
}


/* SCHUTT */

.rs-rubble {
    position:absolute;

    top:-3px;
    right:-2px;

    width:8px;
    height:8px;

    background:#090909;

    transform:rotate(25deg);
}

.rs-rubble::before,
.rs-rubble::after {
    content:"";

    position:absolute;

    background:#090909;
}

.rs-rubble::before {
    width:6px;
    height:6px;

    left:-8px;
    top:4px;
}

.rs-rubble::after {
    width:5px;
    height:5px;

    left:4px;
    top:10px;
}


/* ==========================================================
   PROMO TEXT
========================================================== */

.rs-promo-content {
    position:relative;

    z-index:2;
}

.rs-promo-kicker {
    margin-bottom:7px;

    color:#FEEE02;

    font-size:10px;

    font-weight:800;

    letter-spacing:1.2px;

    text-transform:uppercase;
}

.rs-promo-title {
    margin-bottom:7px;

    color:#fff;

    font-size:
        clamp(
            24px,
            2.2vw,
            31px
        );

    line-height:1.07;

    letter-spacing:-.8px;

    font-weight:800;
}

.rs-promo-title span {
    color:#FEEE02;
}

.rs-promo-content p {
    max-width:650px;

    margin:0;

    color:
        rgba(255,255,255,.65);

    font-size:13px;

    line-height:1.5;
}


/* ==========================================================
   PROMO BUTTON
========================================================== */

.rs-promo-btn {
    position:relative;

    z-index:2;

    min-height:56px;

    padding:
        0
        21px;

    display:inline-flex;

    align-items:center;
    justify-content:center;

    gap:12px;

    background:#FEEE02;

    border:
        2px solid
        #FEEE02;

    color:#090909 !important;

    text-decoration:none !important;

    font-size:13px;

    font-weight:800;

    white-space:nowrap;

    transition:
        transform .2s ease,
        background .2s ease,
        border-color .2s ease;
}

.rs-promo-btn:hover {
    transform:
        translateY(-3px);

    background:#fff;

    border-color:#fff;
}

.rs-promo-btn i {
    font-size:11px;

    transition:
        transform .2s ease;
}

.rs-promo-btn:hover i {
    transform:
        translateX(5px);
}


/* ==========================================================
   SCROLL ANIMATION
========================================================== */

.rs-services.rs-js
.rs-head,

.rs-services.rs-js
.rs-card,

.rs-services.rs-js
.rs-promo {
    opacity:0;

    transform:
        translateY(22px);
}


.rs-services.rs-visible
.rs-head,

.rs-services.rs-visible
.rs-card,

.rs-services.rs-visible
.rs-promo {
    opacity:1;

    transform:
        translateY(0);
}


.rs-services.rs-visible
.rs-marker::before {
    transform:
        skewX(-4deg)
        scaleX(1);
}


.rs-head {
    transition:
        opacity .65s ease,
        transform .65s ease;
}


.rs-card:nth-child(1) {
    transition:
        opacity .6s ease .10s,
        transform .6s ease .10s,
        box-shadow .24s ease,
        border-color .24s ease;
}

.rs-card:nth-child(2) {
    transition:
        opacity .6s ease .18s,
        transform .6s ease .18s,
        box-shadow .24s ease,
        border-color .24s ease;
}

.rs-card:nth-child(3) {
    transition:
        opacity .6s ease .26s,
        transform .6s ease .26s,
        box-shadow .24s ease,
        border-color .24s ease;
}

.rs-card:nth-child(4) {
    transition:
        opacity .6s ease .34s,
        transform .6s ease .34s,
        box-shadow .24s ease,
        border-color .24s ease;
}

.rs-card:nth-child(5) {
    transition:
        opacity .6s ease .42s,
        transform .6s ease .42s,
        box-shadow .24s ease,
        border-color .24s ease;
}

.rs-card:nth-child(6) {
    transition:
        opacity .6s ease .50s,
        transform .6s ease .50s,
        box-shadow .24s ease,
        border-color .24s ease;
}

.rs-promo {
    transition:
        opacity .65s ease .58s,
        transform .65s ease .58s;
}


/* Hover darf nach Animation weiterhin funktionieren */

.rs-services.rs-visible
.rs-card:hover {
    transform:
        translateY(-5px);
}


/* ==========================================================
   TABLET
========================================================== */

@media(max-width:1000px) {

    .rs-head {
        grid-template-columns:1fr;

        gap:20px;
    }

    .rs-intro {
        max-width:700px;

        margin-left:0;
    }

    .rs-grid {
        grid-template-columns:
            repeat(2,1fr);
    }

    .rs-promo {
        grid-template-columns:
            75px
            1fr;
    }

    .rs-promo-btn {
        grid-column:
            1 / -1;

        width:100%;
    }

}


/* ==========================================================
   MOBILE
========================================================== */

@media(max-width:700px) {

    .rs-inner {
        padding:
            65px
            18px
            70px;
    }

    .rs-title {
        font-size:36px;
    }

    .rs-grid {
        grid-template-columns:1fr;
    }

    .rs-card {
        min-height:275px;

        padding:
            27px
            24px;
    }

    .rs-promo {
        grid-template-columns:1fr;

        gap:18px;

        padding:
            25px
            22px;
    }

    .rs-promo-icon {
        width:68px;
        height:68px;
    }

    .rs-promo-btn {
        grid-column:auto;

        width:100%;
    }

}


@media(max-width:420px) {

    .rs-title {
        font-size:31px;
    }

}


/* ==========================================================
   ELEMENTOR EDITOR
========================================================== */

.elementor-editor-active
.rs-services
.rs-head,

.elementor-editor-active
.rs-services
.rs-card,

.elementor-editor-active
.rs-services
.rs-promo {
    opacity:1 !important;

    transform:none !important;
}

.elementor-editor-active
.rs-marker::before {
    transform:
        skewX(-4deg)
        scaleX(1) !important;
}


/* ==========================================================
   REDUCED MOTION
========================================================== */

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

    .rs-services *,
    .rs-services *::before,
    .rs-services *::after {
        transition-duration:
            .01ms !important;

        transition-delay:
            0s !important;
    }

}

/* RUFFUS_ICON_NORMALIZATION_START */

/* ==========================================================
   RUFFUS – ELEMENTOR ICON NORMALISIERUNG
   Elementor kann Icons als <i> oder <svg> ausgeben.
========================================================== */


/* ==========================================================
   LEISTUNGEN
========================================================== */

.rs-icon {
    overflow: hidden !important;
    line-height: 1 !important;
}

.rs-icon > i,
.rs-icon > svg {
    display: block !important;

    width: 20px !important;
    height: 20px !important;

    min-width: 20px !important;
    min-height: 20px !important;

    max-width: 20px !important;
    max-height: 20px !important;

    margin: 0 !important;
    padding: 0 !important;

    flex: 0 0 20px !important;

    font-size: 20px !important;
    line-height: 1 !important;

    color: #FEEE02 !important;
    fill: currentColor !important;

    object-fit: contain !important;

    transform: none !important;
}

.rs-icon > i::before {
    display: block !important;

    width: auto !important;
    height: auto !important;

    margin: 0 !important;

    font-size: inherit !important;
    line-height: 1 !important;
}


/* ==========================================================
   ABLAUF – HAUPTICONS
========================================================== */

.rp-process-icon {
    overflow: hidden !important;
    line-height: 1 !important;
}

.rp-process-icon > i,
.rp-process-icon > svg {
    display: block !important;

    width: 22px !important;
    height: 22px !important;

    min-width: 22px !important;
    min-height: 22px !important;

    max-width: 22px !important;
    max-height: 22px !important;

    margin: 0 !important;
    padding: 0 !important;

    flex: 0 0 22px !important;

    font-size: 22px !important;
    line-height: 1 !important;

    color: #090909 !important;
    fill: currentColor !important;

    object-fit: contain !important;

    transform: none !important;
}

.rp-process-icon > i::before {
    display: block !important;

    margin: 0 !important;

    font-size: inherit !important;
    line-height: 1 !important;
}


/* Weiße Kästen behalten ebenfalls schwarze Icons */

.rp-process-step:nth-child(even)
.rp-process-icon > i,

.rp-process-step:nth-child(even)
.rp-process-icon > svg {
    color: #090909 !important;
    fill: currentColor !important;
}


/* ==========================================================
   ABLAUF – INFOBOX ICON
========================================================== */

.rp-process-note-icon {
    overflow: hidden !important;
    line-height: 1 !important;
}

.rp-process-note-icon > i,
.rp-process-note-icon > svg {
    display: block !important;

    width: 18px !important;
    height: 18px !important;

    min-width: 18px !important;
    min-height: 18px !important;

    max-width: 18px !important;
    max-height: 18px !important;

    margin: 0 !important;
    padding: 0 !important;

    flex: 0 0 18px !important;

    font-size: 18px !important;
    line-height: 1 !important;

    color: #FEEE02 !important;
    fill: currentColor !important;

    object-fit: contain !important;

    transform: none !important;
}


/* ==========================================================
   BEWERTUNGEN – VERTRAUENSPUNKTE
========================================================== */

.rr-context-icon {
    overflow: hidden !important;
    line-height: 1 !important;
}

.rr-context-icon > i,
.rr-context-icon > svg {
    display: block !important;

    width: 17px !important;
    height: 17px !important;

    min-width: 17px !important;
    min-height: 17px !important;

    max-width: 17px !important;
    max-height: 17px !important;

    margin: 0 !important;
    padding: 0 !important;

    flex: 0 0 17px !important;

    font-size: 17px !important;
    line-height: 1 !important;

    color: #090909 !important;
    fill: currentColor !important;

    object-fit: contain !important;

    transform: none !important;
}


/* ==========================================================
   MOBILE
========================================================== */

@media (max-width: 560px) {

    .rs-icon > i,
    .rs-icon > svg {
        width: 19px !important;
        height: 19px !important;

        min-width: 19px !important;
        min-height: 19px !important;

        max-width: 19px !important;
        max-height: 19px !important;

        flex-basis: 19px !important;

        font-size: 19px !important;
    }


    .rp-process-icon > i,
    .rp-process-icon > svg {
        width: 19px !important;
        height: 19px !important;

        min-width: 19px !important;
        min-height: 19px !important;

        max-width: 19px !important;
        max-height: 19px !important;

        flex-basis: 19px !important;

        font-size: 19px !important;
    }

}

/* RUFFUS_ICON_NORMALIZATION_END */
