/* ── GSAP Hello World Custom styles ────────────────────────────────── */

/* Pre-init: hide animated elements until GSAP sets opacity:0, then animates to 1.
   The .tfs-gsap-init class is added by JS on startup and removed on completion. */
.tfs-gsap-init .gsap-subtitle,
.tfs-gsap-init .gsap-title,
.tfs-gsap-init .gsap-title-2,
.tfs-gsap-init .gsap-description,
.tfs-gsap-init .gsap-extra-line,
.tfs-gsap-init .gsap-cta,
.tfs-gsap-init .gsap-image {
    opacity: 0;
}


.tfs-gsap-container {

    --tfs-gsap-bg: #0f0f12;

    --tfs-gsap-bg-image: none;

    --tfs-gsap-bg-position: center center;

    --tfs-gsap-bg-size: cover;

    --tfs-gsap-text-color: #ffffff;

    --tfs-gsap-card-align: center;

    --tfs-gsap-font-base: 'Poppins', sans-serif;

    --tfs-gsap-font-subtitle: var(--tfs-gsap-font-base);

    --tfs-gsap-font-title: var(--tfs-gsap-font-base);

    --tfs-gsap-font-description: var(--tfs-gsap-font-base);

    --tfs-gsap-font-button: var(--tfs-gsap-font-base);

    --tfs-gsap-subtitle-color: #47cf3a;

    --tfs-gsap-subtitle-size: 1rem;

    --tfs-gsap-title-color: var(--tfs-gsap-text-color);

    --tfs-gsap-title-size: 3.5rem;

    --tfs-gsap-description-color: rgba(255, 255, 255, 0.6);

    --tfs-gsap-description-size: 1.1rem;

    --tfs-gsap-button-text: #ffffff;

    --tfs-gsap-button-bg: transparent;

    --tfs-gsap-button-border: #47cf3a;

    --tfs-gsap-button-hover-bg: #47cf3a;

    --tfs-gsap-button-hover-text: #0f0f12;

    --tfs-gsap-button-size: 1rem;



    width: 100%;

    display: flex;

    align-items: center;

    justify-content: center;

    background-color: var(--tfs-gsap-bg, #0f0f12);

    background-image: var(--tfs-gsap-bg-image, none);

    background-position: var(--tfs-gsap-bg-position, center center);

    background-size: var(--tfs-gsap-bg-size, cover);

    background-repeat: no-repeat;

    padding: 60px 20px;

    font-family: var(--tfs-gsap-font-base, 'Poppins', sans-serif);

    color: var(--tfs-gsap-text-color, #ffffff);

    box-sizing: border-box;

    overflow: hidden;

}



.tfs-gsap-card-frame {

    max-width: var(--tfs-gsap-card-max-width, 800px);

    width: 100%;

    position: relative;

}



.tfs-gsap-card {

    text-align: var(--tfs-gsap-card-align, center);

    border: 1px solid var(--tfs-gsap-card-border, rgba(255, 255, 255, 0.08));

    background: var(--tfs-gsap-card-bg, transparent) !important;

    backdrop-filter: var(--tfs-gsap-card-glass, blur(10px));

    -webkit-backdrop-filter: var(--tfs-gsap-card-glass, blur(10px));

    padding: var(--tfs-gsap-card-padding, 80px 40px);

    border-radius: var(--tfs-gsap-card-radius, 2px);

    box-shadow: var(--tfs-gsap-card-shadow, 0 30px 100px rgba(0, 0, 0, 0.8));

    position: relative;

}



/* Accent top-border gradient */

.tfs-gsap-card::before {

    content: '';

    position: absolute;

    top: 0;

    left: 0;

    width: 100%;

    height: 4px;

    background: var(--tfs-gsap-card-accent, linear-gradient(90deg, #38a832, #47cf3a));

}



.gsap-subtitle {

    font-size: var(--tfs-gsap-subtitle-size, 1rem);

    text-transform: uppercase;

    letter-spacing: 6px;

    color: var(--tfs-gsap-subtitle-color, #47cf3a);

    font-weight: 500;

    margin: 0 0 20px 0;

    font-family: var(--tfs-gsap-font-subtitle, var(--tfs-gsap-font-base, 'Poppins', sans-serif));

}



.gsap-title {

    font-size: clamp(1.5rem, 5vw, var(--tfs-gsap-title-size, 4.2rem));

    font-weight: 700;

    line-height: 1.1;

    margin: 0 0 25px 0;

    letter-spacing: -1px;

    color: var(--tfs-gsap-title-color, var(--tfs-gsap-text-color, #ffffff));

    font-family: var(--tfs-gsap-font-title, var(--tfs-gsap-font-base, 'Poppins', sans-serif));

}



.gsap-title-2 {

    font-size: clamp(1.2rem, 4vw, var(--tfs-gsap-title-2-size, 2.8rem));

    font-weight: 600;

    line-height: 1.2;

    margin: 0 0 20px 0;

    letter-spacing: -0.5px;

    color: var(--tfs-gsap-title-2-color, var(--tfs-gsap-text-color, #ffffff));

    font-family: var(--tfs-gsap-font-title-2, var(--tfs-gsap-font-base, 'Poppins', sans-serif));

}



.gsap-description {

    font-size: var(--tfs-gsap-description-size, clamp(1rem, 1.5vw, 1.15rem));

    line-height: 1.6;

    color: var(--tfs-gsap-description-color, rgba(255, 255, 255, 0.6));

    font-weight: 300;

    max-width: 600px;

    margin: 0 auto 40px auto;

    font-family: var(--tfs-gsap-font-description, var(--tfs-gsap-font-base, 'Poppins', sans-serif));

}



.gsap-btn {

    display: inline-block;

    padding: 16px 42px;

    border: 1px solid var(--tfs-gsap-button-border, #47cf3a);

    color: var(--tfs-gsap-button-text, #ffffff);

    text-decoration: none;

    font-size: var(--tfs-gsap-button-size, 1rem);

    text-transform: uppercase;

    letter-spacing: 2px;

    font-weight: 500;

    background: var(--tfs-gsap-button-bg, transparent);

    transition: background-color 0.4s, color 0.4s, transform 0.4s;

    font-family: var(--tfs-gsap-font-button, var(--tfs-gsap-font-base, 'Poppins', sans-serif));

}



.gsap-btn:hover {

    background: var(--tfs-gsap-button-hover-bg, #47cf3a);

    color: var(--tfs-gsap-button-hover-text, #0f0f12);

    transform: translateY(-2px);

    box-shadow: 0 10px 30px rgba(71, 207, 58, 0.3);

}



.gsap-btn:active {

    transform: translateY(0);

}



/* Card with image layout — image wraps text, text overlays with minimal overlap */

.tfs-gsap-card.has-image {
    display: block;
}

.tfs-gsap-card.image-overlay {
    text-align: left;
}

.tfs-gsap-card.image-below {
    text-align: var(--tfs-gsap-card-align, center);
}

.tfs-gsap-image {
    position: relative;
    width: 100%;
    max-width: 100%;
    border: 2px solid var(--tfs-gsap-image-border, transparent);
    border-radius: var(--tfs-gsap-image-radius, 12px);
    overflow: hidden;
    background-repeat: var(--tfs-gsap-image-repeat, no-repeat);
    background-size: var(--tfs-gsap-image-size, 30% auto);
    background-position: var(--tfs-gsap-image-position, 100% 50%);
    min-height: 200px;
}

.tfs-gsap-card.image-below .tfs-gsap-image {
    background-size: var(--tfs-gsap-image-size, cover);
    aspect-ratio: 16 / 10;
    min-height: 200px;
}


.tfs-gsap-card.image-circle .tfs-gsap-image {
    border-radius: 50%;
    aspect-ratio: 1 / 1;
    width: var(--tfs-gsap-image-width, 280px);
}

.tfs-gsap-text {
    position: relative;
    z-index: 1;
    width: 80%;
    margin-right: auto;
    margin-left: 0;
    padding: 0;
}

.tfs-gsap-card.image-overlay .tfs-gsap-text {
    width: 80%;
    margin-right: auto;
    margin-left: 0;
}

.tfs-gsap-card.image-below .tfs-gsap-text {
    width: 100%;
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    text-align: var(--tfs-gsap-card-align, center);
}

.tfs-gsap-card:not(.has-image) .tfs-gsap-text {
    width: auto;
    margin: 0;
}

.tfs-gsap-card.image-overlay .gsap-description {
    margin-left: 0;
    margin-right: 0;
    max-width: none;
}

@media (max-width: 768px) {
    .tfs-gsap-card.has-image {
        text-align: var(--tfs-gsap-card-align, center) !important;
    }

    .tfs-gsap-image {
        width: 100% !important;
        background-size: var(--tfs-gsap-image-size-mobile, var(--tfs-gsap-image-size, 50% auto));
        aspect-ratio: auto;
        min-height: 280px;
    }

    .tfs-gsap-card.image-circle .tfs-gsap-image {
        width: 220px !important;
    }

    .tfs-gsap-text {
        width: 100% !important;
        margin: 0 !important;
    }

    .tfs-gsap-card.image-below .tfs-gsap-text {
        position: relative;
        top: auto;
        left: auto;
        transform: none;
    }

    .tfs-gsap-card.has-image .gsap-description {
        margin-left: auto;
        margin-right: auto;
        max-width: 600px;
    }
}

@media (max-width: 480px) {
    .tfs-gsap-container {
        padding: 30px 12px;
    }

    .tfs-gsap-card {
        padding: 40px 20px !important;
    }
}

/* Extra text lines */

.gsap-extra-line {

    font-size: 1rem;

    line-height: 1.5;

    margin: 0 0 15px 0;

    font-weight: 400;

}



.gsap-extra-line:last-child {

    margin-bottom: 40px;

}

