/* ===========================
   About page – hero
   =========================== */

.about-hero {
    padding: 0;
}

.about-hero-inner {
    display: grid;
    grid-template-columns: 1fr 1fr;
    align-items: center;
    gap: 1em;
    margin: 0 auto;
    height: 100%;
}

.about-hero-media {
    width: 100%;
    height: 100%;
    overflow: hidden;
}

.about-hero-media img {
    display: block;
    width: 100%;
    height: 100%;
    border-radius: 0px;
    object-fit: cover;
}

.about-hero-copy {
    display: flex;
    flex-direction: column;
}

.rotate-90 {
    font-size: 12px;
    display: inline-block;
    transform: rotate(90deg);
    margin-left: 8px;
}

.about-hero-body {
    max-width: 540px;
    margin: 0;
}

.hero-jump-link {
    font-size: 0.95rem;
    color: var(--m-blue);
    text-decoration: none;
    position: relative;
    padding-bottom: 2px;
}

.hero-jump-link::after {
    content: "";
    position: absolute;
    left: 0;
    bottom: 0;
    width: 0%;
    height: 2px;
    background: linear-gradient(to right, var(--m-blue), var(--m-green));
    transition: width 0.2s ease;
}

.hero-jump-link:hover::after {
    width: 100%;
}

.about-hero-cta {
    display: flex;
    flex-wrap: wrap;
    gap: 1em;
    margin-top: 0.5em;
}

/* ===========================
   Impact / stats section
   =========================== */

.about-impact {
    padding: 0;
    background-color: #ffffff;
}

.about-impact-inner {
    margin: 0 auto;
}

.impact-stats-wrapper {
    position: relative;
}

.impact-stats-wrapper::before {
    content: "";
    position: absolute;
    inset: 0;
    z-index: 0;
    pointer-events: none;
    background: radial-gradient(
        ellipse 100% 50% at center,
        var(--m-blue) 0%,
        #055d18 100%
    );
    opacity: 0.1;
    filter: blur(50px);
}

.impact-stats {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 2em;
    align-items: flex-start;
}

.impact-stat {
    text-align: center;
    padding: 1em;
    border: 1px solid var(--border-grey);
    min-height: 200px;
    justify-content: center;
    background-color: white;
}

.impact-stat-number {
    font-size: 2.4rem;
    font-weight: 700;
    margin: 0 0 0.4em;
    line-height: 1.1;
}

.impact-stat-subtitle {
    margin: 0;
    color: #555;
}

.impact-stat-middle {
    position: relative;
    margin-top: 30px;
}

/* Arrow from middle stat to right-hand copy */

.impact-arrow-container {
    position: absolute;
    left: 50%;
    transform: translateX(-50%);
    top: 70px;
    width: 260px;
    height: 200px;
    pointer-events: none;
}

.impact-arrow {
    width: 100%;
    height: 100%;
}

.impact-arrow-path {
    fill: none;
    stroke: var(--m-green);
    stroke-width: 4;
    stroke-linecap: round;
    stroke-linejoin: round;
    stroke-dasharray: 450;
    stroke-dashoffset: 450;
}

/* bottom area */

.impact-bottom {
    gap: 3em;
    align-items: flex-start;
    margin-top: 8em;
}

.impact-orgs {
    flex: 1;
}

.impact-copy h3 {
    font-size: 1.6rem;
    margin-top: 0;
    margin-bottom: 0.75em;
}

.impact-copy p {
    margin-top: 0;
}

/* ===========================
   Process section
   =========================== */

.process {
    max-width: 1200px;
    margin: 3rem auto;
    padding-inline: 1.5rem;
}

.process-header {
    max-width: 650px;
    margin-bottom: 3rem;
}

/* GRID LAYOUT (desktop / tablet) */

.process-grid {
    position: relative;
    display: grid;
    grid-template-columns: repeat(12, minmax(0, 1fr));
    grid-auto-rows: minmax(80px, auto);
    gap: 1.5rem;
    padding: 0;
}

/* Curved connector behind cards */

.process-flow {
    position: absolute;
    inset: 0 0 auto 0;
    width: 100%;
    height: 100%;
    z-index: 1;
    pointer-events: none;
}

/* Cards */

.step-card {
    position: relative;
    z-index: 2;
    background: #ffffff;
    border-radius: 12px;
    box-shadow: 0 14px 40px rgba(0, 0, 0, 0.08);
    padding: 1.5rem 1.75rem;
    font-size: 0.95rem;
    line-height: 1.6;
}

.step-card p {
    margin: 0;
}

.step-card h3 {
    margin-top: 0;
}

/* Positioning individual cards in the grid */

.step-1 {
    grid-column: 1 / span 4;
    grid-row: 1 / span 2;
}

.step-2 {
    grid-column: 5 / span 4;
    grid-row: 3 / span 2;
}

.step-3 {
    grid-column: 9 / span 4;
    grid-row: 5 / span 2;
}

/* Images */

.process-image {
    position: relative;
    overflow: hidden;
    box-shadow: 0 18px 45px rgba(0, 0, 0, 0.12);
    max-height: 260px;
}

.process-image img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center;
}

/* Place images similar to your mockup */

.image-top-right {
    grid-column: 9 / span 4;
    grid-row: 1 / span 2;
}

.image-bottom-left {
    grid-column: 1 / span 4;
    grid-row: 5 / span 3;
}

/* RESPONSIVE: mobile-first stack */

@media (max-width: 768px) {
    .process {
        margin-top: 2rem;
    }

    /* Hide big curved line */
    .process-flow {
        display: none;
    }

    .step-card,
    .process-image {
        box-shadow: 0 8px 22px rgba(0, 0, 0, 0.08);
    }

    .impact-stat-middle {
        margin-top: 0px;
    }

    /* Use DOM order as: text -> image -> text -> image -> text.
     To get that order, just reorder the HTML if needed. */
}

/* OPTIONAL: vertical mini connector arrows on mobile */

@media (max-width: 768px) {
    .step-card {
        position: relative;
    }
}

/* ===========================
   CTA banner
   =========================== */

.about-cta {
    position: relative;
    background-image: url("/static/images/refresh/textiles-factory-hor.jpeg");
    background-size: cover;
    background-position: center;
    height: 70vh;
    min-height: 700px;
}

.about-cta-overlay {
    background: rgba(0, 0, 0, 0.624);
    height: 100%;
    width: 100%;
}

.about-cta-inner {
    color: white;
    max-width: 600px;
    text-align: center;
}

.about-cta-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 1em;
    justify-content: center;
}

.ek-footer {
    margin-top: 0px;
}

/* ===========================
   Arrow animation – shared
   =========================== */

@keyframes drawArrow {
    to {
        stroke-dashoffset: 0;
    }
}

/* When section is in view, start animation */
.js-animate-arrow.animate .impact-arrow-path,
.js-animate-arrow.animate .process-arrow-path {
    animation: drawArrow 2.4s ease-out forwards;
}

/* ===========================
   Responsiveness
   =========================== */

@media (max-width: 1100px) {
    .about-hero-inner {
        grid-template-columns: minmax(0, 1fr);
    }

    .about-hero-copy {
        order: -1;
    }

    .impact-bottom {
        grid-template-columns: minmax(0, 1fr);
    }

    .impact-arrow-container {
        left: 55%;
    }

    .process-layout {
        grid-template-columns: minmax(0, 1fr);
        grid-template-rows: auto;
    }
    .process-grid {
        display: flex;
        flex-direction: column;
        gap: 1.25rem;
    }

    .process-image {
        /* make the crop explicit */
        height: 320px;      /* pick whatever “bar” height you want */
        max-height: none;   /* let height control it now */
    }

    .process-image img {
        width: 100%;
        height: 100%;       /* now this resolves, because parent has a real height */
        object-fit: cover;
        object-position: center 50%;  /* this will visibly move the focal point now */
    }

    .step-1,
    .step-2,
    .step-3,
    .process-image-top,
    .process-image-bottom {
        grid-column: 1 / -1;
    }

    .process-image-top,
    .process-image-bottom {
        justify-self: center;
    }

    .process-flow {
        display: none;
    }

    .process-arrow {
        display: none;
        /* hide complex line on tablet+ stack layout */
    }
}

@media (max-width: 768px) {

    .about-hero-copy {
        padding: 1.2em !important;
    }

    .about-hero-heading {
        font-size: 2rem;
    }

    .about-hero-media {
        height: 40vh;
    }

    .impact-stats {
        grid-template-columns: 1fr;
    }

    .impact-bottom {
        flex-direction: column-reverse;
    }

    .impact-arrow-container {
        display: none;
        /* hide arrow on narrow phones for clarity */
    }
}

@media (max-width: 640px) {
    .about-hero-inner {
        gap: 2em;
    }

    .about-cta-heading {
        font-size: 1.7rem;
    }
}