/* ------------------------- Custom Sections | Zitko Agency -------------------------------------------------- */

/* ------------------------- Lead Form CTA Section -------------------------------------------------- */

.lead-cta-section {
    background: var(--color-white, #fff);
    padding: clamp(5rem, 10vw, 11rem) 0;
    text-align: center;
}

.lead-cta-eyebrow {
    font-size: clamp(.85rem, 1vw, 1rem);
    letter-spacing: .1em;
    text-transform: uppercase;
    color: rgba(0,0,0,.4);
    margin: 0 0 clamp(1rem, 2vw, 1.8rem);
}

.lead-cta-heading {
    font-size: clamp(3rem, 7vw, 8rem);
    font-weight: 400;
    letter-spacing: -.035em;
    line-height: 1.05;
    color: var(--color-dark, #1C1D20);
    margin: 0 0 clamp(1rem, 2vw, 1.5rem);
}

.lead-cta-heading em {
    font-style: italic;
    color: #c6e421;
}

.lead-cta-sub {
    font-size: clamp(.9rem, 1.1vw, 1.05rem);
    color: rgba(0,0,0,.45);
    margin: 0 auto clamp(2.5rem, 5vw, 4.5rem);
    max-width: 48ch;
    line-height: 1.65;
}

/* Form container */
.lead-form-wrap {
    max-width: 660px;
    margin: 0 auto;
    text-align: left;
}

/* Service type picker */
.service-picker {
    display: flex;
    gap: .5rem;
    flex-wrap: wrap;
    margin-bottom: clamp(1.2rem, 2vw, 1.8rem);
    justify-content: center;
}

.service-picker-btn {
    padding: .6em 1.3em;
    border: 1.5px solid rgba(0,0,0,.15);
    border-radius: 99px;
    background: transparent;
    color: rgba(0,0,0,.5);
    font-family: inherit;
    font-size: clamp(.78rem, 1vw, .88rem);
    font-weight: 500;
    cursor: pointer;
    transition: border-color .2s ease, color .2s ease, background .2s ease;
    letter-spacing: .01em;
    white-space: nowrap;
}

.service-picker-btn:hover {
    border-color: rgba(0,0,0,.4);
    color: var(--color-dark, #1C1D20);
}

.service-picker-btn.active {
    border-color: #c6e421;
    background: #c6e421;
    color: var(--color-dark, #1C1D20);
    font-weight: 700;
}

/* Inputs */
.lead-form {
    display: flex;
    flex-direction: column;
    gap: .9rem;
}

.lead-form input,
.lead-form textarea {
    width: 100%;
    box-sizing: border-box;
    background: transparent;
    border: none;
    border-bottom: 1.5px solid rgba(0,0,0,.15);
    padding: .85em 0;
    color: var(--color-dark, #1C1D20);
    font-family: inherit;
    font-size: clamp(.9rem, 1.1vw, 1rem);
    outline: none;
    transition: border-color .2s ease;
    resize: none;
}

.lead-form input::placeholder,
.lead-form textarea::placeholder {
    color: rgba(0,0,0,.3);
}

.lead-form input:focus,
.lead-form textarea:focus {
    border-color: #1C1D20;
}

.lead-form textarea {
    min-height: 90px;
}

.lead-form-row {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 1.5rem;
}

@media (max-width: 540px) {
    .lead-form-row { grid-template-columns: 1fr; gap: .9rem; }
    .service-picker-btn { font-size: .75rem; }
    .lead-cta-heading { font-size: clamp(2.5rem, 12vw, 5rem); }
}

/* Submit row */
.lead-form-submit {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1.5rem;
    flex-wrap: wrap;
    margin-top: clamp(1rem, 2vw, 1.8rem);
}

.lead-submit-btn {
    display: inline-flex;
    align-items: center;
    gap: .55em;
    background: var(--color-dark, #1C1D20);
    color: #fff;
    border: none;
    border-radius: 99px;
    padding: .9em 2.2em;
    font-family: inherit;
    font-size: clamp(.88rem, 1.05vw, 1rem);
    font-weight: 600;
    cursor: pointer;
    letter-spacing: -.01em;
    transition: transform .25s cubic-bezier(.175,.885,.32,1.275), background .2s ease;
}

.lead-submit-btn:hover {
    background: #c6e421;
    color: var(--color-dark, #1C1D20);
    transform: scale(1.04);
}

.lead-submit-btn:active { transform: scale(.97); }

.lead-submit-btn svg { width: 15px; height: 15px; flex-shrink: 0; }

.lead-form-note {
    font-size: .78rem;
    color: rgba(0,0,0,.35);
    line-height: 1.55;
}

/* Divider line above form */
.lead-form-divider {
    width: 100%;
    height: 1px;
    background: rgba(0,0,0,.08);
    margin: 0 auto clamp(2rem, 4vw, 3.5rem);
    max-width: 660px;
}

/* Success state */
.lead-form-success {
    display: none;
    text-align: center;
    padding: 2.5rem 1rem;
    font-size: clamp(1rem, 1.5vw, 1.2rem);
    color: var(--color-dark, #1C1D20);
    line-height: 1.6;
}

.lead-form-success strong {
    color: #5a8a00;
}

/* ------------------------- Service Card Pricing -------------------------------------------------- */

.service-card-pricing {
    display: flex;
    align-items: baseline;
    gap: 1rem;
    margin: 1.2rem 0 1.4rem;
    flex-wrap: wrap;
}

.service-price-main {
    font-size: clamp(1.4rem, 2.5vw, 1.75rem);
    font-weight: 700;
    color: var(--color-dark);
    letter-spacing: -0.03em;
    line-height: 1;
}

.service-card--featured .service-price-main {
    color: var(--color-white, #fff);
}

.service-price-agency {
    font-size: 0.78rem;
    font-weight: 500;
    color: #e03030;
    letter-spacing: 0.01em;
    opacity: 0.9;
}

.service-price-agency::before {
    content: "agentura: ";
    opacity: 0.7;
}

/* ------------------------- Logo Strip -------------------------------------------------- */

.logo-strip {
    padding: calc(var(--section-padding) * .6) var(--container-padding) calc(var(--section-padding) * .4);
    background: var(--color-white);
    overflow: hidden;
}

.logo-strip-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding-bottom: calc(var(--gap-padding) * 1);
}

.logo-strip-label {
    display: flex;
    align-items: center;
    gap: .6em;
    font-size: clamp(.85rem, 1vw, 1rem);
    color: var(--color-dark);
    opacity: .5;
}

.logo-strip-label .label-dot {
    width: 7px;
    height: 7px;
    border-radius: 50%;
    background: var(--color-dark);
    flex-shrink: 0;
}

.logo-strip-year {
    font-size: clamp(.85rem, 1vw, 1rem);
    color: var(--color-dark);
    opacity: .35;
}

.logo-strip-grid {
    display: grid;
    grid-template-columns: repeat(6, 1fr);
    gap: clamp(.5em, 1vw, .8em);
}

.logo-card {
    display: flex;
    align-items: center;
    justify-content: center;
    background: #F5F5F5;
    border-radius: clamp(10px, 1.2vw, 14px);
    padding: clamp(1.6em, 2.8vw, 2.6em) clamp(1em, 2vw, 2em);
    transition: background .4s cubic-bezier(.7, 0, .3, 1);
}

.logo-card:hover {
    background: #EBEBEB;
}

.logo-card svg {
    height: clamp(1.4em, 2vw, 2em);
    width: auto;
    display: block;
    opacity: .7;
    transition: opacity .4s cubic-bezier(.7, 0, .3, 1);
}

.logo-card:hover svg {
    opacity: 1;
}

@media screen and (max-width: 900px) {
    .logo-strip-grid {
        grid-template-columns: repeat(3, 1fr);
    }
}

@media screen and (max-width: 540px) {
    .logo-strip {
        padding: calc(var(--section-padding) * .4) var(--container-padding) calc(var(--section-padding) * .3);
    }

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

    .logo-card {
        padding: 1.4em 1em;
    }
}

/* ------------------------- Services (Big Text List + Hover Image) -------------------------------------------------- */

.services-grid {
    padding-top: 0;
    padding-bottom: calc(var(--section-padding) * .5);
    background: var(--color-white);
}

.services-grid .grid-sub-title {
    width: 100%;
    display: flex;
    padding-bottom: var(--gap-padding);
}

.services-grid .grid-sub-title h5 {
    margin: 0;
}

.services-grid .grid-sub-title .flex-col:nth-child(1) {
    padding-left: calc(var(--container-padding) * 1);
    width: 70%;
}

.services-grid .grid-sub-title .flex-col:nth-child(2) {
    width: 30%;
    padding-left: var(--gap-padding);
    padding-right: calc(var(--container-padding) * 1);
}

.services-grid .services-items .row {
    align-items: center;
    padding: calc(var(--section-padding) / 3.5) 0 calc(var(--section-padding) / 3) 0;
}

.services-grid .services-items .flex-col:nth-child(1) {
    padding-left: calc(var(--container-padding) * 1);
    width: 70%;
}

.services-grid .services-items .flex-col:nth-child(2) {
    width: 30%;
    padding-left: var(--gap-padding);
    padding-right: calc(var(--container-padding) * .5);
    padding-top: 1em;
}

.services-grid .services-items h4 {
    position: relative;
    display: block;
    overflow: hidden;
    line-height: 1;
    font-size: calc(clamp(3.25em, 7vw, 8em) * .75);
    transition: var(--animation-fast);
    transform: translateX(0) rotate(0.001deg);
}

.services-grid .services-items h4 span {
    position: relative;
    display: block;
    padding: .1em 0;
}

.services-grid .services-items li {
    transition: var(--animation-smooth);
}

.services-grid .services-items a {
    color: unset;
    text-decoration: unset;
}

.services-grid .services-items a:hover h4 {
    transform: translateX(calc(var(--container-padding) * -.1)) rotate(0.001deg);
}

.services-grid .services-items a p {
    transition: var(--animation-fast);
    transform: translateX(0) rotate(0.001deg);
    margin: 0;
}

.services-grid .services-items a:hover p {
    transform: translateX(calc(var(--container-padding) * .1)) rotate(0.001deg);
}

.services-grid .services-items li a {
    transition: var(--animation-fast);
}

.services-grid .services-items:hover a {
    opacity: .4;
}

.services-grid .services-items a:hover {
    opacity: 1 !important;
}

/* Service hover image — GSAP quickTo controlled */
.service-hover-image {
    position: fixed;
    width: 0;
    height: 0;
    z-index: 25;
    pointer-events: none;
    overflow: hidden;
    border-radius: .5em;
    transition: width .4s cubic-bezier(0.36, 0, 0.66, 0), height .4s cubic-bezier(0.36, 0, 0.66, 0), opacity .3s ease;
    opacity: 0;
    transform: translate(-50%, -50%);
    will-change: transform, width, height;
}

.service-hover-image.active {
    width: clamp(18em, 25vw, 22em);
    height: clamp(14em, 20vw, 17em);
    opacity: 1;
    transition: width .4s cubic-bezier(0.34, 1, 0.64, 1), height .4s cubic-bezier(0.34, 1, 0.64, 1), opacity .3s ease;
}

.service-hover-image img {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: none;
}

.service-hover-image img.visible {
    display: block;
}

@media screen and (max-width: 1024px) {
    .services-grid .services-items h4 {
        font-size: calc(clamp(2em, 5vw, 4em) * .75);
    }

    .services-grid .services-items .flex-col:nth-child(1) {
        width: 60%;
    }

    .services-grid .services-items .flex-col:nth-child(2) {
        width: 40%;
    }
}

@media screen and (max-width: 720px) {
    .services-grid .services-items .flex-col:nth-child(1) {
        width: 100%;
        padding-left: 0;
    }

    .services-grid .services-items .flex-col:nth-child(2) {
        width: 100%;
        padding-left: 0;
        padding-top: .5em;
    }

    .services-grid .services-items h4 {
        font-size: clamp(1.8em, 6vw, 3em);
    }

    .service-hover-image {
        display: none !important;
    }
}

@media screen and (max-width: 540px) {
    .services-grid .services-items .row {
        padding: calc(var(--gap-padding) * 1) 0;
    }
}

/* ------------------------- Featured Work (Card Grid) -------------------------------------------------- */

.featured-work {
    background: var(--color-white);
    padding-bottom: calc(var(--section-padding) * .5);
}

.featured-work .work-label {
    display: flex;
    align-items: center;
    gap: .75em;
    padding-bottom: calc(var(--gap-padding) * 1.5);
}

.featured-work .work-label .dot-indicator {
    width: .6em;
    height: .6em;
    border-radius: 50%;
    background: var(--color-dark);
    flex-shrink: 0;
}

.featured-work .work-label h5 {
    margin: 0;
    text-transform: uppercase;
    letter-spacing: .1em;
    font-weight: 450;
    opacity: 1;
}

.featured-work .work-label-stripe {
    margin-bottom: calc(var(--gap-padding) * 2);
}

.featured-work .work-cards {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: calc(var(--gap-padding) * 1.5);
}

.featured-work .work-card {
    display: block;
    text-decoration: none;
    color: inherit;
    transition: var(--animation-primary);
}

.featured-work .work-card-image {
    position: relative;
    width: 100%;
    overflow: hidden;
    border-radius: clamp(.5em, 1vw, .75em);
    background: var(--color-lightgray);
}

.featured-work .work-card-image::before {
    content: "";
    display: block;
    padding-top: 72%;
}

.featured-work .work-card-image .overlay-image {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    transform: scale(1) rotate(0.001deg);
    transition: transform .6s cubic-bezier(.7, 0, .3, 1);
    will-change: transform;
}

.featured-work .work-card:hover .work-card-image .overlay-image {
    transform: scale(1.03) rotate(0.001deg);
}

.featured-work .work-card-tags {
    position: absolute;
    bottom: calc(var(--gap-padding) * .75);
    left: calc(var(--gap-padding) * .75);
    display: flex;
    gap: .5em;
    z-index: 2;
}

.featured-work .work-card-tag {
    background: rgba(255, 255, 255, .92);
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);
    padding: .45em 1em;
    border-radius: 2em;
    font-size: .8em;
    font-weight: 450;
    color: var(--color-dark);
    white-space: nowrap;
}

.featured-work .work-card-info {
    padding-top: calc(var(--gap-padding) * .75);
}

.featured-work .work-card-info h4 {
    font-size: clamp(1.3em, 2vw, 1.8em);
    line-height: 1.2;
    margin-bottom: .3em;
}

.featured-work .work-card-info p {
    font-size: .9em;
    opacity: .5;
    margin-bottom: 0;
    line-height: 1.5;
    max-width: 28em;
}

@media screen and (max-width: 900px) {
    .featured-work .work-cards {
        gap: var(--gap-padding);
    }
}

@media screen and (max-width: 620px) {
    .featured-work .work-cards {
        grid-template-columns: 1fr;
    }

    .featured-work .work-card-image::before {
        padding-top: 65%;
    }
}

/* ------------------------- Insights / Blog -------------------------------------------------- */

.insights-section {
    background: var(--color-dark);
    padding-bottom: calc(var(--section-padding) * .75);
}

.insights-section .section-label {
    display: flex;
    align-items: center;
    gap: .75em;
    padding-bottom: calc(var(--gap-padding) * 1.5);
}

.insights-section .section-label .dot-indicator {
    width: .6em;
    height: .6em;
    border-radius: 50%;
    background: var(--color-white);
    flex-shrink: 0;
}

.insights-section .section-label h5 {
    margin: 0;
    text-transform: uppercase;
    letter-spacing: .1em;
    font-weight: 450;
    color: var(--color-white);
    opacity: 1;
}

.insights-section .section-label-stripe {
    margin-bottom: calc(var(--gap-padding) * 2);
    background: var(--color-border-light);
}

.insights-section .insights-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: calc(var(--gap-padding) * 1.5);
}

.insights-section .insight-card {
    display: block;
    text-decoration: none;
    color: inherit;
    transition: var(--animation-primary);
}

.insights-section .insight-card-image {
    position: relative;
    width: 100%;
    overflow: hidden;
    border-radius: clamp(.5em, 1.2vw, 1em);
    background: #2a2a2d;
}

.insights-section .insight-card-image::before {
    content: "";
    display: block;
    padding-top: 75%;
}

.insights-section .insight-card-image img {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    transform: scale(1) rotate(0.001deg);
    transition: transform .6s cubic-bezier(.7, 0, .3, 1);
    will-change: transform;
}

.insights-section .insight-card:hover .insight-card-image img {
    transform: scale(1.04) rotate(0.001deg);
}

.insights-section .insight-card-info {
    padding-top: calc(var(--gap-padding) * .75);
}

.insights-section .insight-card-info h4 {
    font-size: clamp(1.1em, 1.6vw, 1.5em);
    line-height: 1.3;
    color: var(--color-white);
    margin-bottom: .5em;
    max-width: 20em;
}

.insights-section .insight-card-info .insight-date {
    font-size: .85em;
    color: var(--color-white);
    opacity: .4;
    margin: 0;
}

@media screen and (max-width: 900px) {
    .insights-section .insights-grid {
        grid-template-columns: 1fr 1fr;
        gap: var(--gap-padding);
    }

    .insights-section .insight-card:nth-child(3) {
        display: none;
    }
}

@media screen and (max-width: 620px) {
    .insights-section .insights-grid {
        grid-template-columns: 1fr;
    }

    .insights-section .insight-card:nth-child(3) {
        display: block;
    }

    .insights-section .insight-card-image::before {
        padding-top: 65%;
    }
}

/* ------------------------- Client Testimonials -------------------------------------------------- */

.testimonials-section {
    background: var(--color-white);
}

.testimonials-section .section-label {
    display: flex;
    align-items: center;
    gap: .75em;
    padding-bottom: calc(var(--gap-padding) * 1.5);
}

.testimonials-section .section-label .dot-indicator {
    width: .6em;
    height: .6em;
    border-radius: 50%;
    background: var(--color-dark);
    flex-shrink: 0;
}

.testimonials-section .section-label h5 {
    margin: 0;
    text-transform: uppercase;
    letter-spacing: .1em;
    font-weight: 450;
    opacity: 1;
}

.testimonials-section .section-label-stripe {
    margin-bottom: calc(var(--gap-padding) * 2);
}

.testimonials-section .testimonial-slides {
    position: relative;
    min-height: 14em;
}

.testimonials-section .testimonial-slide {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    opacity: 0;
    transform: translateY(1.5em);
    transition: opacity .5s cubic-bezier(.7, 0, .3, 1), transform .5s cubic-bezier(.7, 0, .3, 1);
    pointer-events: none;
}

.testimonials-section .testimonial-slide.active {
    position: relative;
    opacity: 1;
    transform: translateY(0);
    pointer-events: auto;
}

.testimonials-section .testimonial-quote {
    font-size: clamp(1.4em, 2.8vw, 2.4em);
    line-height: 1.4;
    font-weight: 400;
    max-width: 38em;
    margin: 0 0 calc(var(--gap-padding) * 2.5) 0;
    color: var(--color-dark);
}

.testimonials-section .testimonial-bottom {
    display: flex;
    align-items: center;
    gap: calc(var(--gap-padding) * 1.5);
    padding-top: calc(var(--gap-padding) * 1.5);
}

.testimonials-section .testimonial-client {
    display: flex;
    align-items: center;
    gap: 1.2em;
    border: 1px solid var(--color-border);
    border-radius: 4em;
    padding: .6em .6em .6em 1.2em;
    min-width: 16em;
}

.testimonials-section .testimonial-counter {
    font-size: .85em;
    font-weight: 500;
    color: var(--color-white);
    background: var(--color-dark);
    border-radius: 2em;
    padding: .4em .8em;
    white-space: nowrap;
}

.testimonials-section .testimonial-client-info {
    display: flex;
    flex-direction: column;
}

.testimonials-section .testimonial-client-name {
    font-size: 1em;
    font-weight: 500;
    color: var(--color-dark);
    line-height: 1.3;
}

.testimonial-company-row {
    display: flex;
    align-items: center;
    gap: 0.5em;
}

.testimonial-logo {
    height: 22px;
    width: auto;
    object-fit: contain;
    display: block;
    opacity: 0.6;
}

.testimonials-section .testimonial-client-company {
    font-size: .85em;
    opacity: .5;
    color: var(--color-dark);
    line-height: 1.3;
}

.testimonials-section .testimonial-nav {
    display: flex;
    align-items: center;
    gap: .6em;
}

.testimonials-section .testimonial-nav button {
    width: 3em;
    height: 3em;
    border-radius: 50%;
    border: 1px solid var(--color-border);
    background: transparent;
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    transition: var(--animation-fast);
    padding: 0;
}

.testimonials-section .testimonial-nav button:hover {
    background: var(--color-dark);
    border-color: var(--color-dark);
}

.testimonials-section .testimonial-nav button:hover svg {
    stroke: var(--color-white);
}

.testimonials-section .testimonial-nav button svg {
    width: 1em;
    height: 1em;
    stroke: var(--color-dark);
    stroke-width: 2;
    fill: none;
    transition: var(--animation-fast);
}

.testimonials-section .testimonial-nav button.disabled {
    opacity: .3;
    cursor: default;
    pointer-events: none;
}

@media screen and (max-width: 720px) {
    .testimonials-section .testimonial-quote {
        font-size: clamp(1.2em, 4.5vw, 1.8em);
    }

    .testimonials-section .testimonial-bottom {
        flex-direction: column;
        align-items: flex-start;
        gap: var(--gap-padding);
    }
}

@media screen and (max-width: 540px) {
    .testimonials-section .testimonial-slides {
        min-height: 18em;
    }
}

/* ------------------------- FAQ Section -------------------------------------------------- */

.faq-section {
    padding: calc(var(--section-padding) * 1) 0;
    background: var(--color-white);
}

.faq-inner {
    display: grid;
    grid-template-columns: 1fr 1.8fr;
    gap: calc(var(--gap-padding) * 3);
    padding: 0 var(--container-padding);
}

.faq-top {
    position: sticky;
    top: calc(var(--section-padding) * .5);
    align-self: start;
}

.faq-label {
    display: flex;
    align-items: center;
    gap: .6em;
    font-size: clamp(.85rem, 1vw, 1rem);
    color: var(--color-dark);
    opacity: .5;
    margin-bottom: calc(var(--gap-padding) * 1.5);
}

.faq-label .label-dot {
    width: 7px;
    height: 7px;
    border-radius: 50%;
    background: var(--color-dark);
}

.faq-heading {
    font-size: clamp(2.2rem, 4vw, 4rem);
    line-height: 1.1;
    letter-spacing: -.02em;
    font-weight: 400;
    color: var(--color-dark);
    margin: 0;
}

.faq-list {
    border-top: 1px solid var(--color-border);
}

.faq-item {
    border-bottom: 1px solid var(--color-border);
}

.faq-question {
    width: 100%;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 2em;
    padding: calc(var(--gap-padding) * 1.1) 0;
    background: none;
    border: none;
    font-family: inherit;
    font-size: clamp(1rem, 1.3vw, 1.3rem);
    font-weight: 400;
    color: var(--color-dark);
    text-align: left;
    cursor: pointer;
    transition: color .3s ease;
}

.faq-question:hover {
    color: var(--color-blue);
}

.faq-icon {
    position: relative;
    width: 28px;
    height: 28px;
    flex-shrink: 0;
}

.faq-icon::before,
.faq-icon::after {
    content: '';
    position: absolute;
    top: 50%;
    left: 50%;
    background: var(--color-dark);
    border-radius: 2px;
    transition: transform .4s cubic-bezier(.25, 1, .5, 1),
                background .3s ease;
}

.faq-icon::before {
    width: 16px;
    height: 1.5px;
    transform: translate(-50%, -50%);
}

.faq-icon::after {
    width: 1.5px;
    height: 16px;
    transform: translate(-50%, -50%);
}

.faq-question:hover .faq-icon::before,
.faq-question:hover .faq-icon::after {
    background: var(--color-blue);
}

.faq-item.is-open .faq-icon::after {
    transform: translate(-50%, -50%) rotate(90deg);
}

.faq-answer {
    max-height: 0;
    overflow: hidden;
    transition: max-height .5s cubic-bezier(.25, 1, .5, 1),
                padding .5s cubic-bezier(.25, 1, .5, 1);
}

.faq-item.is-open .faq-answer {
    max-height: 300px;
}

.faq-answer p {
    padding-bottom: calc(var(--gap-padding) * 1.2);
    max-width: 38em;
    line-height: 1.7;
    color: var(--color-dark);
    opacity: .6;
    margin: 0;
    font-size: clamp(.9rem, 1vw, 1rem);
}

@media screen and (max-width: 900px) {
    .faq-inner {
        grid-template-columns: 1fr;
        gap: calc(var(--gap-padding) * 2);
    }

    .faq-top {
        position: relative;
        top: 0;
    }
}

@media screen and (max-width: 540px) {
    .faq-section {
        padding: calc(var(--section-padding) * .7) 0;
    }

    .faq-question {
        font-size: clamp(.95rem, 4vw, 1.1rem);
        padding: calc(var(--gap-padding) * .9) 0;
    }

    .faq-icon {
        width: 24px;
        height: 24px;
    }

    .faq-icon::before {
        width: 13px;
    }

    .faq-icon::after {
        height: 13px;
    }
}

/* ------------------------- About Rounded Div Transition -------------------------------------------------- */

.about-rounded-div {
    width: 100%;
    position: relative;
    height: 0;
    display: block;
    z-index: 2;
}

.about-rounded-div .rounded-div-wrap {
    transform: translateY(-1px);
    will-change: height;
}

/* ------------------------- About Section -------------------------------------------------- */

.about-section {
    background: var(--color-dark);
    overflow: hidden;
    position: relative;
}

.about-section .about-header-row {
    padding-bottom: calc(var(--gap-padding) * 1);
}

.about-section .section-label {
    display: flex;
    align-items: center;
    gap: .75em;
    padding-bottom: calc(var(--gap-padding) * 1.5);
}

.about-section .section-label .dot-indicator {
    width: .6em;
    height: .6em;
    border-radius: 50%;
    background: var(--color-white);
    flex-shrink: 0;
}

.about-section .section-label h5 {
    margin: 0;
    text-transform: uppercase;
    letter-spacing: .1em;
    font-weight: 450;
    color: var(--color-white);
    opacity: 1;
}

.about-section .about-stripe {
    background: var(--color-border-light);
}

.about-section .container.medium .row {
    align-items: flex-start;
}

.about-section .about-image-col {
    width: 42%;
    padding-right: calc(var(--gap-padding) * 2.5);
}

.about-section .about-image-wrap {
    position: relative;
    width: 100%;
    overflow: hidden;
    border-radius: clamp(.4em, .8vw, .6em);
}

.about-section .about-image-wrap::before {
    content: "";
    display: block;
    padding-top: 130%;
}

.about-section .about-image-wrap img {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    transform: scale(1) rotate(0.001deg);
    transition: transform .8s cubic-bezier(.7, 0, .3, 1);
}

.about-section .about-image-wrap:hover img {
    transform: scale(1.03) rotate(0.001deg);
}

.about-section .about-text-col {
    width: 58%;
    padding-top: .5em;
}

.about-section .about-text-col h4 {
    color: var(--color-white);
    margin-bottom: .75em;
    line-height: 1.35;
    font-size: clamp(1.4em, 2.6vw, 2.2em);
}

.about-section .about-text-col p {
    color: var(--color-white);
    opacity: .55;
    margin-bottom: 1.5em;
    max-width: 30em;
    line-height: 1.7;
}

.about-section .about-details {
    display: flex;
    gap: calc(var(--gap-padding) * 2.5);
    padding-top: calc(var(--gap-padding) * 1.5);
    border-top: 1px solid var(--color-border-light);
    margin-top: calc(var(--gap-padding) * 1);
}

.about-section .about-detail h5 {
    color: var(--color-white);
    margin-bottom: 1.2em;
    opacity: 1;
}

.about-section .about-detail p {
    color: var(--color-white);
    opacity: .7;
    font-size: .9em;
    margin-bottom: .4em;
    line-height: 1.9;
}

.about-section .about-cta {
    padding-top: calc(var(--gap-padding) * 1.5);
}

.about-section .about-cta .btn-normal .btn-click {
    border-color: var(--color-border-light);
}

.about-section .about-cta .btn-normal .btn-text-inner {
    color: var(--color-white);
}

@media screen and (max-width: 900px) {
    .about-section .about-image-col {
        width: 100%;
        padding-right: 0;
        padding-bottom: calc(var(--gap-padding) * 2);
    }

    .about-section .about-text-col {
        width: 100%;
        padding-top: 0;
    }

    .about-section .about-image-wrap::before {
        padding-top: 70%;
    }

    .about-section .about-image-wrap {
        border-radius: clamp(.5em, 1vw, .75em);
    }
}

@media screen and (max-width: 540px) {
    .about-section .about-details {
        flex-direction: column;
        gap: var(--gap-padding);
    }

    .about-section .about-image-wrap::before {
        padding-top: 100%;
    }

    .about-section .about-text-col h4 {
        font-size: clamp(1.2em, 5vw, 1.6em);
    }
}

/* ------------------------- Site Footer -------------------------------------------------- */

.site-footer {
    background: var(--color-lightgray, #f5f5f5);
    border-radius: clamp(1em, 2vw, 2em) clamp(1em, 2vw, 2em) 0 0;
    overflow: hidden;
    padding-bottom: 0 !important;
}

.site-footer .footer-top {
    display: grid;
    grid-template-columns: 1.4fr 0.8fr 1.2fr 1fr;
    gap: calc(var(--gap-padding) * 2);
    padding-bottom: calc(var(--section-padding) * .5);
}

.site-footer .footer-col h5 {
    margin-bottom: 1.5em;
    opacity: 1;
    font-weight: 450;
}

/* Footer Bio */
.site-footer .footer-bio p {
    font-size: clamp(.95em, 1.1vw, 1.1em);
    line-height: 1.6;
    color: var(--color-dark);
    margin-bottom: 1.5em;
    max-width: 22em;
}

.site-footer .footer-meta {
    display: flex;
    gap: 1.5em;
    font-size: .8em;
    opacity: .4;
    color: var(--color-dark);
}

/* Footer Nav */
.site-footer .footer-nav ul {
    list-style: none;
    padding: 0;
    margin: 0;
}

.site-footer .footer-nav li {
    margin-bottom: .6em;
}

.site-footer .footer-nav a {
    color: var(--color-dark);
    text-decoration: none;
    font-size: .9em;
    opacity: .6;
    transition: opacity .3s ease;
}

.site-footer .footer-nav a:hover {
    opacity: 1;
}

/* Footer Socials */
.site-footer .footer-social-grid {
    display: flex;
    flex-direction: column;
    gap: .5em;
}

.site-footer .footer-social-item {
    display: inline-flex;
    align-items: center;
    gap: .6em;
    color: var(--color-dark);
    text-decoration: none;
    font-size: .85em;
    opacity: .6;
    transition: opacity .3s ease;
    padding: .35em 0;
}

.site-footer .footer-social-item:hover {
    opacity: 1;
}

.site-footer .footer-social-item svg {
    flex-shrink: 0;
    opacity: .8;
}

/* Footer CTAs */
.site-footer .footer-ctas {
    display: flex;
    flex-direction: column;
    gap: .75em;
}

.site-footer .footer-cta-card {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1em;
    padding: 1em 1.2em;
    border: 1px solid var(--color-border);
    border-radius: .75em;
    text-decoration: none;
    color: var(--color-dark);
    transition: var(--animation-fast);
    background: transparent;
}

.site-footer .footer-cta-card:hover {
    background: var(--color-dark);
    color: var(--color-white);
    border-color: var(--color-dark);
}

.site-footer .footer-cta-title {
    font-size: 1em;
    font-weight: 500;
    display: block;
    line-height: 1.3;
}

.site-footer .footer-cta-sub {
    font-size: .8em;
    opacity: .5;
    display: block;
    line-height: 1.3;
}

.site-footer .footer-cta-arrow {
    flex-shrink: 0;
    opacity: .6;
    transition: var(--animation-fast);
}

.site-footer .footer-cta-card:hover .footer-cta-arrow {
    opacity: 1;
}

/* Footer Big Name */
.site-footer .footer-big-name {
    line-height: .78;
    margin-top: calc(var(--gap-padding) * .5);
    padding-left: var(--container-padding);
    overflow: hidden;
}

.site-footer .footer-big-name span {
    display: block;
    font-size: clamp(140px, 24vw, 380px);
    font-weight: 700;
    color: var(--color-dark);
    text-transform: lowercase;
    letter-spacing: -.03em;
    user-select: none;
    white-space: nowrap;
    line-height: .78;
}

/* Footer Responsive */
@media screen and (max-width: 1024px) {
    .site-footer .footer-top {
        grid-template-columns: 1fr 1fr;
        gap: calc(var(--gap-padding) * 1.5);
    }
}

@media screen and (max-width: 620px) {
    .site-footer .footer-top {
        grid-template-columns: 1fr;
        gap: calc(var(--gap-padding) * 1.5);
    }

    .site-footer .footer-big-name span {
        font-size: clamp(70px, 32vw, 120px);
    }

    .site-footer .footer-ctas {
        flex-direction: row;
    }

    .site-footer .footer-cta-card {
        flex: 1;
    }
}

@media screen and (max-width: 400px) {
    .site-footer .footer-ctas {
        flex-direction: column;
    }
}

/* ========================================================================================= */
/* ========================= 2026 PREMIUM POLISH ========================================== */
/* ========================================================================================= */

/* ------------------------- Custom Cursor (blend-mode removed — handled by second block) --- */

/* ------------------------- Custom Selection -------------------------------------------------- */

::selection {
    background-color: var(--color-dark) !important;
    color: var(--color-white) !important;
    text-shadow: none;
}

::-moz-selection {
    background-color: var(--color-dark) !important;
    color: var(--color-white) !important;
    text-shadow: none;
}

.theme-dark ::selection {
    background-color: var(--color-white) !important;
    color: var(--color-dark) !important;
}

.theme-dark ::-moz-selection {
    background-color: var(--color-white) !important;
    color: var(--color-dark) !important;
}

/* ------------------------- Image Hover Liquid Effect -------------------------------------------------- */

.work-card .work-card-img,
.insight-card .insight-card-img,
.about-image-wrap {
    overflow: hidden;
    will-change: transform;
}

.work-card .work-card-img img,
.insight-card .insight-card-img img,
.about-image-wrap img {
    transition: transform .8s cubic-bezier(.25, 1, .5, 1),
                filter .8s cubic-bezier(.25, 1, .5, 1);
    will-change: transform, filter;
}

.work-card:hover .work-card-img img,
.insight-card:hover .insight-card-img img,
.about-image-wrap:hover img {
    transform: scale(1.06);
    filter: brightness(1.05) saturate(1.1);
}

/* Liquid overlay sweep on hover */
.work-card .work-card-img::after,
.insight-card .insight-card-img::after {
    content: '';
    position: absolute;
    top: 0;
    left: -100%;
    width: 100%;
    height: 100%;
    background: linear-gradient(
        90deg,
        transparent 0%,
        rgba(255, 255, 255, .08) 40%,
        rgba(255, 255, 255, .15) 50%,
        rgba(255, 255, 255, .08) 60%,
        transparent 100%
    );
    transition: left .7s cubic-bezier(.25, 1, .5, 1);
    pointer-events: none;
    z-index: 1;
}

.work-card .work-card-img {
    position: relative;
}

.insight-card .insight-card-img {
    position: relative;
}

.work-card:hover .work-card-img::after,
.insight-card:hover .insight-card-img::after {
    left: 100%;
}

/* Smooth link hover underlines */
.site-footer .footer-nav a,
.site-footer .footer-social-link {
    position: relative;
}

.site-footer .footer-nav a::after,
.site-footer .footer-social-link::after {
    content: '';
    position: absolute;
    bottom: -2px;
    left: 0;
    width: 0;
    height: 1px;
    background: currentColor;
    transition: width .4s cubic-bezier(.25, 1, .5, 1);
}

.site-footer .footer-nav a:hover::after,
.site-footer .footer-social-link:hover::after {
    width: 100%;
}

/* Subtle entrance animation for tags */
.intro-tag {
    opacity: 0;
    transform: translateY(8px);
    animation: tagFadeIn .5s cubic-bezier(.25, 1, .5, 1) forwards;
}

.intro-tag:nth-child(1) { animation-delay: .1s; }
.intro-tag:nth-child(2) { animation-delay: .2s; }
.intro-tag:nth-child(3) { animation-delay: .3s; }
.intro-tag:nth-child(4) { animation-delay: .4s; }

@keyframes tagFadeIn {
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

/* Smooth transition for logo cards */
.logo-card svg {
    transition: opacity .4s cubic-bezier(.7, 0, .3, 1),
                transform .4s cubic-bezier(.25, 1, .5, 1);
}

.logo-card:hover svg {
    transform: scale(1.05);
}

/* ========================================================================================= */
/* ========================= SERVICE PAGE STYLES =========================================== */
/* ========================================================================================= */

/* ------------------------- Service Hero -------------------------------------------------- */

.service-hero {
    min-height: 70vh;
    display: flex;
    flex-direction: column;
    justify-content: flex-end;
    background: var(--color-dark);
    overflow: hidden;
    position: relative;
    padding-bottom: calc(var(--section-padding) * .75);
}

.service-hero .container {
    position: relative;
    z-index: 2;
}

.service-hero-content {
    max-width: 42em;
}

.service-hero-label {
    display: flex;
    align-items: center;
    gap: .6em;
    font-size: clamp(.85rem, 1vw, 1rem);
    color: var(--color-white);
    opacity: .5;
    margin-bottom: calc(var(--gap-padding) * 1.5);
}

.service-hero-label .label-dot {
    width: 7px;
    height: 7px;
    border-radius: 50%;
    background: var(--color-white);
}

.service-hero-title {
    color: var(--color-white);
    font-size: calc(clamp(3.25em, 7vw, 8em) * .875);
    line-height: 1.065;
    margin-bottom: .4em;
}

.service-hero-desc {
    color: var(--color-white);
    opacity: .55;
    max-width: 28em;
    line-height: 1.7;
    font-size: clamp(.9rem, 1.05vw, 1.1rem);
    margin: 0;
}

@media screen and (max-width: 720px) {
    .service-hero {
        min-height: 60vh;
        min-height: calc(var(--vh, 1vh) * 60);
        padding-top: calc(var(--gap-padding) * 4);
        padding-bottom: calc(var(--section-padding) * .5);
    }

    .service-hero-title {
        font-size: clamp(2.5em, 10vw, 4em);
    }
}

@media screen and (max-width: 540px) {
    .service-hero {
        min-height: 55vh;
        min-height: calc(var(--vh, 1vh) * 55);
    }
}

/* ------------------------- Service Overview -------------------------------------------------- */

.service-overview {
    background: var(--color-white);
    padding-top: calc(var(--section-padding) * .8);
    padding-bottom: calc(var(--section-padding) * .6);
}

.service-overview-top {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    padding-bottom: calc(var(--gap-padding) * 2);
    border-bottom: 1px solid var(--color-border);
    margin-bottom: calc(var(--gap-padding) * 2);
}

.service-overview-label {
    display: flex;
    align-items: center;
    gap: .6em;
    font-size: clamp(.85rem, 1vw, 1rem);
    color: var(--color-dark);
    opacity: .5;
    flex-shrink: 0;
}

.service-overview-label .label-dot {
    width: 7px;
    height: 7px;
    border-radius: 50%;
    background: var(--color-dark);
}

.service-overview-desc {
    max-width: 28em;
    text-align: right;
    font-size: clamp(.9rem, 1.05vw, 1.1rem);
    line-height: 1.6;
    color: var(--color-dark);
    opacity: .5;
    margin: 0;
}

.service-overview-headline {
    padding-bottom: calc(var(--gap-padding) * 2.5);
}

.service-overview-headline h2 {
    font-size: clamp(2rem, 4.5vw, 4.5rem);
    line-height: 1.15;
    letter-spacing: -.02em;
    font-weight: 400;
    color: var(--color-dark);
    margin: 0;
    max-width: 18em;
}

.service-overview-stats {
    display: flex;
    gap: calc(var(--gap-padding) * 3);
    padding-top: calc(var(--gap-padding) * 2);
    border-top: 1px solid var(--color-border);
}

.service-stat {
    display: flex;
    flex-direction: column;
    gap: .3em;
}

.service-stat-number {
    font-size: clamp(2.5em, 5vw, 4em);
    font-weight: 450;
    line-height: 1;
    color: var(--color-dark);
}

.service-stat-label {
    font-size: clamp(.8rem, .9vw, .9rem);
    color: var(--color-dark);
    opacity: .5;
    text-transform: uppercase;
    letter-spacing: .05em;
}

@media screen and (max-width: 720px) {
    .service-overview-top {
        flex-direction: column;
        gap: 1.5em;
    }

    .service-overview-desc {
        text-align: left;
        max-width: 100%;
    }

    .service-overview-headline h2 {
        font-size: clamp(1.8rem, 7vw, 3rem);
    }

    .service-overview-stats {
        flex-direction: column;
        gap: calc(var(--gap-padding) * 1.5);
    }
}

/* ------------------------- Service Capabilities — Bento Grid -------------------------------------------------- */

.service-capabilities {
    background: var(--color-white);
    padding-top: 0;
    padding-bottom: calc(var(--section-padding) * .5);
}

.service-capabilities-label {
    display: flex;
    align-items: center;
    gap: .6em;
    font-size: clamp(.85rem, 1vw, 1rem);
    color: var(--color-dark);
    opacity: .5;
    padding-bottom: calc(var(--gap-padding) * 1.5);
}

.service-capabilities-label .label-dot {
    width: 7px;
    height: 7px;
    border-radius: 50%;
    background: var(--color-dark);
}

.service-capabilities-stripe {
    margin-bottom: calc(var(--gap-padding) * 2);
}

.bento-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    grid-template-areas:
        "a a b"
        "c d d"
        "e e f";
    gap: clamp(.5em, .8vw, .7em);
}

.bento-card {
    position: relative;
    padding: clamp(1.5em, 2.5vw, 2.5em);
    border: 1px solid var(--color-border);
    border-radius: clamp(.6em, 1vw, .8em);
    transition: var(--animation-primary);
    background: transparent;
    overflow: hidden;
    display: flex;
    flex-direction: column;
    justify-content: flex-end;
    min-height: clamp(13em, 16vw, 18em);
}

.bento-a { grid-area: a; }
.bento-b { grid-area: b; }
.bento-c { grid-area: c; }
.bento-d { grid-area: d; }
.bento-e { grid-area: e; }
.bento-f { grid-area: f; }

.bento-card:hover {
    background: var(--color-dark);
    border-color: var(--color-dark);
}

.bento-card:hover .bento-content h4,
.bento-card:hover .bento-content p {
    color: var(--color-white);
}

.bento-card:hover .bento-index {
    color: var(--color-blue);
    opacity: .25;
}

.bento-card:hover .bento-arrow {
    color: var(--color-white);
    opacity: 1;
}

.bento-index {
    font-size: clamp(4em, 7vw, 7em);
    font-weight: 500;
    color: var(--color-dark);
    opacity: .06;
    line-height: 1;
    position: absolute;
    top: clamp(.15em, .25vw, .2em);
    right: clamp(.15em, .4vw, .3em);
    transition: var(--animation-primary);
    user-select: none;
    pointer-events: none;
}

.bento-content {
    position: relative;
    z-index: 1;
}

.bento-content h4 {
    font-size: clamp(1.3em, 1.8vw, 1.8em);
    line-height: 1.2;
    margin-bottom: .4em;
    color: var(--color-dark);
    transition: color .3s cubic-bezier(.7, 0, .3, 1);
}

.bento-content p {
    font-size: clamp(.85rem, .95vw, .95rem);
    line-height: 1.7;
    color: var(--color-dark);
    opacity: .6;
    margin: 0;
    max-width: 32em;
    transition: color .3s cubic-bezier(.7, 0, .3, 1);
}

.bento-card:hover .bento-content p {
    opacity: .65;
}

.bento-arrow {
    position: absolute;
    bottom: clamp(1.5em, 2.5vw, 2.5em);
    right: clamp(1.5em, 2.5vw, 2.5em);
    color: var(--color-dark);
    opacity: .25;
    transition: var(--animation-primary);
}

@media screen and (max-width: 900px) {
    .bento-grid {
        grid-template-columns: repeat(2, 1fr);
        grid-template-areas:
            "a a"
            "b c"
            "d d"
            "e f";
    }
}

@media screen and (max-width: 540px) {
    .bento-grid {
        grid-template-columns: 1fr;
        grid-template-areas:
            "a"
            "b"
            "c"
            "d"
            "e"
            "f";
    }

    .bento-card {
        min-height: auto;
        padding: calc(var(--gap-padding) * 1.2);
    }

    .bento-index {
        font-size: 3.5em;
    }
}

/* ------------------------- Process Rounded Div -------------------------------------------------- */

.process-rounded-div {
    width: 100%;
    position: relative;
    height: 0;
    display: block;
    z-index: 2;
}

.process-rounded-div .rounded-div-wrap {
    transform: translateY(-1px);
    will-change: height;
}

/* ------------------------- Service Process — Editorial Timeline -------------------------------------------------- */

.service-process {
    background: var(--color-dark);
    overflow: hidden;
    position: relative;
}

.service-process-header {
    padding-bottom: calc(var(--gap-padding) * 1);
}

.service-process .section-label {
    display: flex;
    align-items: center;
    gap: .75em;
    padding-bottom: calc(var(--gap-padding) * 1.5);
}

.service-process .section-label .dot-indicator {
    width: .6em;
    height: .6em;
    border-radius: 50%;
    background: var(--color-white);
    flex-shrink: 0;
}

.service-process .section-label h5 {
    margin: 0;
    text-transform: uppercase;
    letter-spacing: .1em;
    font-weight: 450;
}

.service-process-stripe {
    margin-bottom: calc(var(--gap-padding) * 2);
}

.process-timeline {
    border-top: 1px solid var(--color-border-light);
}

.process-timeline-item {
    display: grid;
    grid-template-columns: clamp(4.5em, 10vw, 8em) 1px 1fr;
    gap: 0 clamp(1.5em, 3vw, 3em);
    padding: clamp(2em, 3.5vw, 3.5em) 0;
    border-bottom: 1px solid var(--color-border-light);
    transition: padding .5s cubic-bezier(.25, 1, .5, 1);
}

.process-timeline-item:hover {
    padding-left: 1em;
}

.process-timeline-left {
    display: flex;
    flex-direction: column;
    gap: .4em;
}

.process-timeline-num {
    font-size: clamp(2.5em, 4.5vw, 4em);
    font-weight: 450;
    color: var(--color-white);
    opacity: .2;
    line-height: 1;
    transition: var(--animation-primary);
}

.process-timeline-item:hover .process-timeline-num {
    opacity: 1;
    color: var(--color-blue);
}

.process-timeline-tag {
    font-size: clamp(.7rem, .8vw, .8rem);
    text-transform: uppercase;
    letter-spacing: .1em;
    color: var(--color-white);
    opacity: .3;
}

.process-timeline-divider {
    width: 1px;
    background: var(--color-border-light);
    min-height: 100%;
}

.process-timeline-right {
    display: flex;
    flex-direction: column;
    justify-content: center;
    gap: .5em;
}

.process-timeline-right h4 {
    color: var(--color-white);
    font-size: clamp(1.4em, 2vw, 2em);
    line-height: 1.2;
    margin: 0;
}

.process-timeline-right p {
    color: var(--color-white);
    opacity: .5;
    font-size: clamp(.85rem, .95vw, .95rem);
    line-height: 1.7;
    margin: 0;
    max-width: 36em;
}

@media screen and (max-width: 720px) {
    .process-timeline-item {
        grid-template-columns: 1fr;
        gap: 1em;
    }

    .process-timeline-divider {
        display: none;
    }

    .process-timeline-left {
        flex-direction: row;
        align-items: center;
        gap: 1em;
    }

    .process-timeline-item:hover {
        padding-left: 0;
    }
}

/* ------------------------- Service Optimization (SEO / LLMO / AI) -------------------------------------------------- */

.service-optimization {
    background: var(--color-dark);
    padding-top: 0;
}

.service-optimization-header {
    padding-bottom: calc(var(--gap-padding) * 2);
}

.service-optimization .section-label {
    display: flex;
    align-items: center;
    gap: .75em;
    padding-bottom: calc(var(--gap-padding) * 1.5);
}

.service-optimization .section-label .dot-indicator {
    width: .6em;
    height: .6em;
    border-radius: 50%;
    background: var(--color-white);
    flex-shrink: 0;
}

.service-optimization .section-label h5 {
    margin: 0;
    text-transform: uppercase;
    letter-spacing: .1em;
    font-weight: 450;
}

.service-optimization-stripe {
    margin-bottom: calc(var(--gap-padding) * 2);
}

.service-optimization-headline {
    font-size: clamp(2rem, 4.5vw, 4.5rem);
    line-height: 1.15;
    letter-spacing: -.02em;
    font-weight: 400;
    color: var(--color-white);
    margin: 0;
    max-width: 16em;
}

.service-optimization-cards {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: calc(var(--gap-padding) * 1.5);
}

.optimization-card {
    padding: calc(var(--gap-padding) * 1.5);
    border: 1px solid var(--color-border-light);
    border-radius: clamp(.5em, 1vw, .75em);
    transition: var(--animation-primary);
}

.optimization-card:hover {
    border-color: var(--color-blue);
    background: rgba(69, 92, 233, .06);
}

.optimization-card-number {
    display: block;
    font-size: clamp(.75rem, .85vw, .85rem);
    color: var(--color-blue);
    font-weight: 450;
    margin-bottom: calc(var(--gap-padding) * .75);
}

.optimization-card-title {
    color: var(--color-white);
    font-size: clamp(1.2em, 1.6vw, 1.5em);
    line-height: 1.3;
    margin-bottom: .3em;
}

.optimization-card-subtitle {
    color: var(--color-white);
    opacity: .4;
    font-size: clamp(.8rem, .9vw, .9rem);
    margin: 0 0 calc(var(--gap-padding) * .75) 0;
}

.optimization-card-list {
    list-style: none;
    padding: 0;
    margin: 0;
}

.optimization-card-list li {
    color: var(--color-white);
    opacity: .55;
    font-size: clamp(.85rem, .95vw, .95rem);
    line-height: 1.7;
    padding-left: 1em;
    position: relative;
    margin-bottom: .2em;
}

.optimization-card-list li::before {
    content: '';
    position: absolute;
    left: 0;
    top: .65em;
    width: 5px;
    height: 5px;
    border-radius: 50%;
    background: var(--color-blue);
    opacity: .6;
}

@media screen and (max-width: 900px) {
    .service-optimization-cards {
        grid-template-columns: 1fr;
        gap: var(--gap-padding);
    }

    .service-optimization-headline {
        font-size: clamp(1.8rem, 7vw, 3rem);
    }
}

/* ------------------------- Tech Stack Rounded Div -------------------------------------------------- */

.techstack-rounded-div {
    width: 100%;
    position: relative;
    height: 0;
    display: block;
    z-index: 2;
}

.techstack-rounded-div .rounded-div-wrap {
    transform: translateY(-1px);
    will-change: height;
}

/* ------------------------- Service Tech Stack — Marquee Ticker -------------------------------------------------- */

.service-techstack {
    background: var(--color-white);
}

.service-techstack-label {
    display: flex;
    align-items: center;
    gap: .6em;
    font-size: clamp(.85rem, 1vw, 1rem);
    color: var(--color-dark);
    opacity: .5;
    padding-bottom: calc(var(--gap-padding) * 1.5);
}

.service-techstack-label .label-dot {
    width: 7px;
    height: 7px;
    border-radius: 50%;
    background: var(--color-dark);
}

.service-techstack-stripe {
    margin-bottom: calc(var(--gap-padding) * 2);
}

.techstack-headline {
    font-size: clamp(1.6rem, 2.5vw, 2.5rem);
    line-height: 1.2;
    font-weight: 400;
    color: var(--color-dark);
    max-width: 14em;
    margin: 0 0 calc(var(--gap-padding) * 2.5) 0;
}

.techstack-marquee-wrap {
    display: flex;
    flex-direction: column;
    gap: clamp(.5em, .8vw, .7em);
    overflow: hidden;
    padding-bottom: calc(var(--section-padding) * .3);
}

.marquee-row {
    overflow: hidden;
    position: relative;
    width: 100%;
    -webkit-mask-image: linear-gradient(90deg, transparent 0%, #000 8%, #000 92%, transparent 100%);
    mask-image: linear-gradient(90deg, transparent 0%, #000 8%, #000 92%, transparent 100%);
}

.marquee-track {
    display: flex;
    gap: clamp(.4em, .6vw, .6em);
    width: max-content;
    animation: marqueeScrollLeft 35s linear infinite;
}

.marquee-row[data-direction="right"] .marquee-track {
    animation-name: marqueeScrollRight;
    animation-duration: 40s;
}

.marquee-row:nth-child(3) .marquee-track {
    animation-duration: 45s;
}

.techstack-marquee-wrap:hover .marquee-track {
    animation-play-state: paused;
}

.marquee-item {
    display: inline-flex;
    align-items: center;
    padding: .6em 1.3em;
    border: 1px solid var(--color-border);
    border-radius: 100px;
    font-size: clamp(.85rem, .95vw, .95rem);
    color: var(--color-dark);
    white-space: nowrap;
    transition: var(--animation-fast);
    flex-shrink: 0;
}

.marquee-item:hover {
    background: var(--color-dark);
    color: var(--color-white);
    border-color: var(--color-dark);
}

@keyframes marqueeScrollLeft {
    0% { transform: translateX(0); }
    100% { transform: translateX(-50%); }
}

@keyframes marqueeScrollRight {
    0% { transform: translateX(-50%); }
    100% { transform: translateX(0); }
}

/* ------------------------- Service CTA -------------------------------------------------- */

.service-cta {
    background: var(--color-white);
    text-align: center;
}

.service-cta-content {
    display: flex;
    flex-direction: column;
    align-items: center;
}

.service-cta-headline {
    font-size: clamp(2rem, 4.5vw, 4.5rem);
    line-height: 1.15;
    letter-spacing: -.02em;
    font-weight: 400;
    color: var(--color-dark);
    margin: 0 0 .5em 0;
    max-width: 14em;
}

.service-cta-desc {
    max-width: 32em;
    font-size: clamp(.9rem, 1.05vw, 1.1rem);
    line-height: 1.7;
    color: var(--color-dark);
    opacity: .5;
    margin: 0 0 calc(var(--gap-padding) * 2) 0;
}

.service-cta-actions {
    display: flex;
    align-items: center;
    gap: calc(var(--gap-padding) * 1.5);
}

.service-back-link .btn-click {
    -webkit-box-shadow: inset 0px 0px 0px 1px var(--color-border);
    box-shadow: inset 0px 0px 0px 1px var(--color-border);
}

@media screen and (max-width: 720px) {
    .service-cta-headline {
        font-size: clamp(1.8rem, 7vw, 3rem);
    }

    .service-cta-actions {
        flex-direction: column;
        gap: var(--gap-padding);
    }
}


/* ========================================================================================= */
/* ========================= HERO SECTION — AGENCY LAYOUT ================================= */
/* ========================================================================================= */

/* Right-side contained image panel */
.home-header .personal-image {
    right: 0;
    left: auto;
    width: 44%;
    height: 100%;
    top: 0;
}

.home-header .personal-image img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center 15%;
    left: 0;
    transform: none;
    opacity: .78;
    position: absolute;
    top: 0;
}

/* Left-edge gradient to blend image into dark background */
.home-header .personal-image::after {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    width: 50%;
    height: 100%;
    background: linear-gradient(to right, #1C1D20 0%, transparent 100%);
    z-index: 1;
    pointer-events: none;
}

/* Push content to the left side */
.home-header .row {
    justify-content: flex-start;
}

/* Constrain the left column so it doesn't bleed into the image */
.hero-left-col {
    max-width: 52%;
    z-index: 2;
    position: relative;
}

/* Stats row */
.hero-stats {
    display: flex;
    gap: calc(var(--gap-padding) * 2);
    margin-top: calc(var(--gap-padding) * 1.5);
    padding-top: calc(var(--gap-padding) * 1);
    border-top: 1px solid var(--color-border-light);
}

.hero-stat-item {
    display: flex;
    flex-direction: column;
    gap: .3em;
}

.hero-stat-num {
    font-size: clamp(1.6rem, 2.5vw, 2.4rem);
    font-weight: 500;
    color: var(--color-white);
    letter-spacing: -.03em;
    line-height: 1;
}

.hero-stat-label {
    font-size: clamp(.7rem, .85vw, .85rem);
    color: var(--color-white);
    opacity: .4;
    text-transform: uppercase;
    letter-spacing: .08em;
}

@media screen and (max-width: 900px) {
    .home-header .personal-image {
        width: 55%;
        opacity: .5;
    }

    .hero-left-col {
        max-width: 65%;
    }
}

@media screen and (max-width: 640px) {
    .home-header .personal-image {
        width: 100%;
        opacity: .25;
    }

    .home-header .personal-image::after {
        width: 100%;
        background: linear-gradient(to right, #1C1D20 30%, transparent 100%);
    }

    .hero-left-col {
        max-width: 100%;
    }

    .hero-stats {
        gap: calc(var(--gap-padding) * 1.2);
    }
}


/* ========================================================================================= */
/* ========================= INTRO SECTION — EDITORIAL REDESIGN =========================== */
/* ========================================================================================= */

.home-intro {
    padding-top: calc(var(--section-padding) * .9);
    padding-bottom: calc(var(--section-padding) * .9);
}

/* Three-column grid: index tag | large headline | description col */
.intro-top {
    display: grid;
    grid-template-columns: 3.5em 1fr auto;
    gap: 2em;
    align-items: end;
    padding-bottom: calc(var(--gap-padding) * 2);
    border-bottom: 1px solid var(--color-border);
    margin-bottom: calc(var(--gap-padding) * 2);
}

.intro-index-tag {
    font-size: clamp(.7rem, .85vw, .85rem);
    color: var(--color-dark);
    opacity: .35;
    letter-spacing: .06em;
    padding-bottom: .6em;
    line-height: 1;
}

.intro-h2 {
    font-size: clamp(2.4rem, 4.5vw, 5rem);
    font-weight: 400;
    letter-spacing: -.025em;
    color: var(--color-dark);
    line-height: 1.1;
    margin: 0;
}

.intro-h2 em {
    font-style: italic;
    font-weight: 300;
    color: var(--color-blue);
}

.intro-desc-col {
    max-width: 18em;
    align-self: end;
}

.intro-desc-col p {
    opacity: .55;
    line-height: 1.7;
    margin-bottom: 2em;
    font-size: clamp(.85rem, 1vw, 1rem);
}

/* Override any template absolute positioning on the button */
.intro-desc-col .btn {
    position: static;
    top: auto;
}

/* Four-column metrics row */
.intro-metrics {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 0;
}

.intro-metric-item {
    display: flex;
    flex-direction: column;
    gap: .5em;
    padding: calc(var(--gap-padding) * 1) calc(var(--gap-padding) * 1.5) calc(var(--gap-padding) * 1) 0;
    border-top: 1px solid var(--color-border);
}

.intro-metric-item + .intro-metric-item {
    padding-left: calc(var(--gap-padding) * 1.5);
    border-left: 1px solid var(--color-border);
}

.intro-metric-num {
    display: block;
    font-size: clamp(2.2rem, 3.5vw, 4.5rem);
    font-weight: 400;
    letter-spacing: -.03em;
    color: var(--color-dark);
    line-height: 1;
}

.intro-metric-label {
    display: block;
    font-size: clamp(.65rem, .8vw, .8rem);
    text-transform: uppercase;
    letter-spacing: .08em;
    opacity: .4;
    color: var(--color-dark);
}

@media screen and (max-width: 900px) {
    .intro-top {
        grid-template-columns: 1fr;
        gap: 1.5em;
    }

    .intro-index-tag {
        display: none;
    }

    .intro-desc-col {
        max-width: 100%;
    }

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

    .intro-metric-item:nth-child(odd) {
        padding-left: 0;
        border-left: none;
    }

    .intro-metric-item:nth-child(even) {
        padding-left: calc(var(--gap-padding) * 1.5);
        border-left: 1px solid var(--color-border);
    }

    .intro-metric-item:nth-child(3),
    .intro-metric-item:nth-child(4) {
        border-top: 1px solid var(--color-border);
    }
}

@media screen and (max-width: 540px) {
    .intro-h2 {
        font-size: clamp(1.9rem, 8vw, 2.8rem);
    }

    .intro-metric-num {
        font-size: clamp(1.8rem, 8vw, 2.8rem);
    }
}


/* ========================================================================================= */
/* ========================= CLIENTS MARQUEE SECTION ====================================== */
/* ========================================================================================= */

.clients-marquee {
    padding-top: calc(var(--section-padding) * .35);
    padding-bottom: calc(var(--section-padding) * .35);
    border-top: 1px solid var(--color-border);
    border-bottom: 1px solid var(--color-border);
    overflow: hidden;
}

.clients-marquee-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 0 var(--container-padding);
    margin-bottom: calc(var(--gap-padding) * 1.5);
}

.clients-label-tag,
.clients-year-tag {
    font-size: clamp(.65rem, .8vw, .8rem);
    text-transform: uppercase;
    letter-spacing: .08em;
    opacity: .4;
    color: var(--color-dark);
}

/* Scrolling ticker */
.clients-ticker-wrap {
    overflow: hidden;
    white-space: nowrap;
}

.clients-ticker {
    display: inline-flex;
    align-items: center;
    animation: clientsTicker 28s linear infinite;
    will-change: transform;
}

.clients-ticker:hover {
    animation-play-state: paused;
}

.ticker-name {
    font-size: clamp(2rem, 3.5vw, 3.5rem);
    font-weight: 400;
    padding: 0 1em;
    letter-spacing: -.01em;
    color: var(--color-dark);
    transition: color .3s ease;
    white-space: nowrap;
    line-height: 1.2;
}

.ticker-name:hover {
    color: var(--color-blue);
}

.ticker-sep {
    opacity: .2;
    font-size: clamp(1rem, 1.5vw, 1.5rem);
    color: var(--color-dark);
    flex-shrink: 0;
}

@keyframes clientsTicker {
    from {
        transform: translateX(0);
    }
    to {
        transform: translateX(-50%);
    }
}

/* Respect reduced motion */
@media (prefers-reduced-motion: reduce) {
    .clients-ticker {
        animation: none;
    }
}

@media screen and (max-width: 640px) {
    .ticker-name {
        font-size: clamp(1.4rem, 5vw, 2rem);
        padding: 0 .7em;
    }

    .clients-marquee-header {
        margin-bottom: calc(var(--gap-padding) * 1);
    }
}


/* ========================================================================================= */
/* ========================= HOME INTRO V2 ================================================ */
/* ========================================================================================= */

.home-intro-v2 {
    padding-top: calc(var(--section-padding) * 0.9);
    padding-bottom: 0;
}

.intro-top-v2 {
    display: grid;
    grid-template-columns: 1fr auto;
    grid-template-rows: auto auto;
    column-gap: var(--gap-padding);
    row-gap: calc(var(--gap-padding) * 0.5);
    align-items: start;
    padding-bottom: calc(var(--section-padding) * 0.55);
}

.intro-top-v2 .intro-index-tag {
    grid-column: 1 / 3;
    grid-row: 1;
    margin-bottom: calc(var(--gap-padding) * 0.6);
}

/* Big editorial heading */
.intro-statement {
    grid-column: 1;
    grid-row: 2;
    font-size: clamp(2.6rem, 5vw, 5.4rem);
    font-weight: 400;
    line-height: 1.12;
    letter-spacing: -0.035em;
    color: var(--color-dark);
    margin: 0;
}

.intro-statement em {
    font-style: italic;
    font-weight: 300;
}

/* Line-by-line clip reveal */
.intro-line {
    display: block;
    overflow: hidden;
    line-height: 1.18;
}

.intro-line-inner {
    display: block;
    transform: translateY(108%);
}

.intro-statement.is-revealed .intro-line-inner {
    transform: translateY(0);
    transition: transform 0.9s cubic-bezier(0.16, 1, 0.3, 1);
}

.intro-statement.is-revealed .intro-line:nth-child(1) .intro-line-inner { transition-delay: 0s; }
.intro-statement.is-revealed .intro-line:nth-child(2) .intro-line-inner { transition-delay: 0.07s; }
.intro-statement.is-revealed .intro-line:nth-child(3) .intro-line-inner { transition-delay: 0.14s; }

/* Right column */
.intro-right-col {
    grid-column: 2;
    grid-row: 2;
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    gap: calc(var(--gap-padding) * 1.5);
    padding-top: 0.6em;
}

.intro-desc {
    max-width: 18em;
    font-size: clamp(0.85rem, 1vw, 1rem);
    line-height: 1.7;
    color: rgba(28, 29, 32, 0.6);
    margin: 0;
    text-align: right;
}

.intro-btn {
    position: relative;
}

/* Services strip */
.intro-services {
    display: flex;
    align-items: center;
    gap: 0.9em;
    padding-top: calc(var(--gap-padding) * 1);
    padding-bottom: calc(var(--section-padding) * 0.6);
    border-top: 1px solid var(--color-border);
    flex-wrap: wrap;
}

.service-tag {
    font-size: clamp(0.76rem, 0.88vw, 0.9rem);
    color: var(--color-dark);
    letter-spacing: 0.1em;
    text-transform: uppercase;
    transition: color 0.25s ease;
    cursor: default;
}

.service-tag:hover {
    color: #c6e421;
}

.service-divider {
    color: var(--color-border-solid);
    font-size: 0.75rem;
    flex-shrink: 0;
}

/* Responsive */
@media screen and (max-width: 820px) {
    .intro-top-v2 {
        grid-template-columns: 1fr;
    }

    .intro-top-v2 .intro-index-tag {
        grid-column: 1;
    }

    .intro-right-col {
        grid-column: 1;
        grid-row: 3;
        align-items: flex-start;
        padding-top: calc(var(--gap-padding) * 0.5);
    }

    .intro-desc {
        text-align: left;
        max-width: 32em;
    }

    .intro-statement {
        font-size: clamp(2.2rem, 7vw, 3.8rem);
    }
}

@media screen and (max-width: 540px) {
    .intro-statement {
        font-size: clamp(1.9rem, 9vw, 3rem);
    }
}


/* ========================================================================================= */
/* ========================= CLIENTS MARQUEE V2 =========================================== */
/* ========================================================================================= */

.clients-marquee-v2 {
    padding-top: calc(var(--section-padding) * 0.3);
    padding-bottom: calc(var(--section-padding) * 0.35);
    overflow: hidden;
    border-top: 1px solid var(--color-border);
    border-bottom: 1px solid var(--color-border);
}

.clients-label-group {
    display: flex;
    align-items: center;
    gap: 0.6em;
}

.clients-label-dot {
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background: var(--color-dark);
    opacity: 0.4;
    flex-shrink: 0;
}

/* Ticker wrapper — relative, overflow hidden */
.clients-ticker-wrap-v2 {
    position: relative;
    display: flex;
    overflow: hidden;
    white-space: nowrap;
    padding-top: calc(var(--gap-padding) * 0.4);
}

/* Override ticker animation speed for bigger type */
.clients-ticker-v2 {
    display: flex;
    align-items: center;
    animation: tickerScroll 28s linear infinite;
    white-space: nowrap;
    flex-shrink: 0;
}

@keyframes tickerScroll {
    0%   { transform: translateX(0); }
    100% { transform: translateX(-100%); }
}

.clients-ticker-wrap-v2:hover .clients-ticker-v2 {
    animation-play-state: paused;
}

/* Individual brand name links */
.ticker-item-v2 {
    font-size: clamp(2.8rem, 7vw, 6.5rem);
    font-weight: 400;
    letter-spacing: -0.03em;
    color: var(--color-dark);
    text-decoration: none;
    display: inline-block;
    padding: 0 0.55em;
    transition: color 0.25s ease;
    line-height: 1.1;
    font-family: 'Dennis Sans', sans-serif;
}

.ticker-item-v2:hover {
    color: #c6e421;
}

.ticker-sep-v2 {
    font-size: clamp(0.9rem, 1.5vw, 1.3rem);
    color: rgba(28, 29, 32, 0.2);
    vertical-align: middle;
    flex-shrink: 0;
}

@media screen and (max-width: 640px) {
    .ticker-item-v2 {
        font-size: clamp(2rem, 12vw, 3.5rem);
        padding: 0 0.45em;
    }
}


/* ========================================================================================= */
/* ========================= WORK HOVER LIST ============================================== */
/* ========================================================================================= */

.whl-section {
    padding-top: var(--section-padding);
    padding-bottom: var(--section-padding);
}

/* Floating cursor-following image — fixed, pointer-events none */
.whl-image {
    position: fixed;
    z-index: 20;
    pointer-events: none;
    width: 0;
    top: 0;
    left: 0;
    transform: translate(-50%, -52%);
    will-change: transform, width;
    transition: width 0.4s cubic-bezier(0.34, 1, 0.64, 1);
    border-radius: 3px;
    overflow: hidden;
}

.whl-image::before {
    display: block;
    content: "";
    padding-top: 62%;
}

.whl-image.active {
    width: clamp(14em, 32vw, 28em);
}

.whl-image-bounce {
    position: absolute;
    top: 0; left: 0;
    width: 100%; height: 100%;
    overflow: hidden;
}

.whl-img-wrap {
    position: absolute;
    top: 0; left: 0;
    width: 100%; height: 100%;
}

.whl-img-item {
    position: absolute;
    top: 0; left: 0;
    width: 100%; height: 100%;
    opacity: 0;
    transition: opacity 0.25s ease;
}

.whl-img-item.visible {
    opacity: 1;
}

.whl-img-item img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: left center;
    display: block;
}

/* List */
.whl-items {
    list-style: none;
    margin: 0;
    padding: 0;
}

.whl-item {
    position: relative;
}

/* Hover dim — parent dims all, hovered item stays full */
.whl-items:hover .whl-row {
    opacity: 0.28;
}

.whl-item:hover .whl-row {
    opacity: 1 !important;
}

/* Row link */
.whl-row {
    display: flex;
    align-items: center;
    text-decoration: none;
    color: var(--color-dark);
    padding: calc(var(--section-padding) / 4.5) 0;
    transition: opacity 0.35s ease;
    gap: var(--gap-padding);
}

/* Project number */
.whl-num {
    font-size: clamp(0.72rem, 0.82vw, 0.85rem);
    color: rgba(28, 29, 32, 0.3);
    letter-spacing: 0.12em;
    min-width: 2.4em;
    flex-shrink: 0;
    font-family: 'Dennis Sans', sans-serif;
}

/* Project title */
.whl-title {
    font-size: clamp(2.4rem, 6vw, 6rem);
    font-weight: 400;
    line-height: 1;
    letter-spacing: -0.035em;
    margin: 0;
    flex: 1;
    overflow: hidden;
    transform: translateX(0);
    transition: transform 0.45s cubic-bezier(0.16, 1, 0.3, 1);
    font-family: 'Dennis Sans', sans-serif;
}

.whl-title span {
    display: block;
    padding: 0.06em 0;
}

.whl-item:hover .whl-title {
    transform: translateX(0.45em);
}

/* Category */
.whl-cat {
    font-size: clamp(0.72rem, 0.85vw, 0.88rem);
    color: rgba(28, 29, 32, 0.38);
    letter-spacing: 0.05em;
    margin: 0;
    width: 22%;
    text-align: right;
    padding-top: 0.35em;
    flex-shrink: 0;
    font-family: 'Dennis Sans', sans-serif;
}

/* Year */
.whl-year {
    font-size: clamp(0.7rem, 0.8vw, 0.82rem);
    color: rgba(28, 29, 32, 0.25);
    letter-spacing: 0.12em;
    margin: 0;
    width: 6%;
    text-align: right;
    padding-top: 0.35em;
    flex-shrink: 0;
    font-family: 'Dennis Sans', sans-serif;
}

.whl-stripe-last {
    margin-bottom: calc(var(--section-padding) * 0.5);
}

.whl-cta-row {
    display: flex;
    justify-content: flex-end;
    padding-top: calc(var(--gap-padding) * 1);
}

/* Responsive */
@media screen and (max-width: 768px) {
    .whl-image {
        display: none;
    }

    .whl-title {
        font-size: clamp(2rem, 9vw, 4rem);
    }

    .whl-cat,
    .whl-year {
        display: none;
    }
}

@media screen and (max-width: 540px) {
    .whl-title {
        font-size: clamp(1.7rem, 11vw, 3rem);
    }

    .whl-num {
        display: none;
    }
}


/* ========================================================================================= */
/* ========================= LOADER ======================================================= */
/* ========================================================================================= */

#loader {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: #141517;
    z-index: 99998;
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    padding: 2.5rem;
    box-sizing: border-box;
    overflow: hidden;
}

.loader-progress-bar {
    position: absolute;
    bottom: 0;
    left: 0;
    height: 2px;
    width: 0%;
    background: #c6e421;
}

.loader-content {
    flex: 1;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-direction: column;
}

.loader-num-wrap {
    display: flex;
    align-items: flex-start;
    color: #fff;
    font-size: clamp(5rem, 18vw, 15rem);
    font-weight: 400;
    line-height: 1;
    letter-spacing: -0.05em;
    font-family: 'Dennis Sans', sans-serif;
    user-select: none;
}

.loader-percent {
    font-size: 0.22em;
    margin-top: 0.3em;
    margin-left: 0.1em;
    opacity: 0.35;
}

.loader-footer {
    display: flex;
    justify-content: space-between;
    align-items: flex-end;
}

.loader-brand {
    font-size: clamp(0.8rem, 0.9vw, 0.95rem);
    color: rgba(255, 255, 255, 0.45);
    text-transform: uppercase;
    letter-spacing: 0.18em;
    font-family: 'Dennis Sans', sans-serif;
}

.loader-edition {
    font-size: clamp(0.72rem, 0.82vw, 0.88rem);
    color: rgba(255, 255, 255, 0.2);
    letter-spacing: 0.12em;
    font-family: 'Dennis Sans', sans-serif;
}


/* ========================================================================================= */
/* ========================= CUSTOM CURSOR ================================================ */
/* ========================================================================================= */

body,
* {
    cursor: none !important;
}

.cb-cursor {
    position: fixed;
    top: 0;
    left: 0;
    pointer-events: none;
    z-index: 99999;
}

.cb-cursor-dot {
    position: absolute;
    width: 7px;
    height: 7px;
    border-radius: 50%;
    background: #c6e421;
    transform: translate(-50%, -50%);
    will-change: transform;
}

.cb-cursor-circle {
    position: absolute;
    width: 38px;
    height: 38px;
    border-radius: 50%;
    border: 1.5px solid rgba(255, 255, 255, 0.65);
    box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.25);
    transform: translate(-50%, -50%);
    will-change: transform;
    transition: width 0.35s cubic-bezier(0.25, 1, 0.5, 1),
                height 0.35s cubic-bezier(0.25, 1, 0.5, 1),
                opacity 0.3s ease,
                border-color 0.3s ease;
}

.cb-cursor-circle.cursor-hover {
    width: 68px;
    height: 68px;
    opacity: 0.7;
    border-color: rgba(198, 228, 33, 0.8);
}

.cb-cursor-label {
    display: none;
}

/* Touch devices: hide cursor */
@media (hover: none) {
    .cb-cursor { display: none; }
    body, * { cursor: auto !important; }
}


/* ========================================================================================= */
/* ========================= HERO — NEW LAYOUT ============================================ */
/* ========================================================================================= */

.hero-new {
    height: 100vh;
    min-height: 100vh;
    padding: 0 var(--container-padding, 4vw);
    display: flex;
    align-items: stretch;
    background: var(--color-dark);
    position: relative;
    overflow: hidden;
}

.hero-wrap {
    width: 100%;
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    padding: 2.5rem 0 2rem;
    position: relative;
    z-index: 2;
}

/* Top eyebrow row */
.hero-eyebrow {
    display: flex;
    align-items: center;
    gap: 0.75em;
    color: rgba(255, 255, 255, 0.45);
    font-size: clamp(0.78rem, 0.9vw, 0.92rem);
    letter-spacing: 0.09em;
    padding-top: 5rem;
    text-transform: uppercase;
}

.hero-tag-dot {
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background: #c6e421;
    flex-shrink: 0;
}

.hero-tag-sep {
    opacity: 0.3;
}

/* Name block — holds giant text + portrait */
.hero-name-block {
    position: relative;
    display: flex;
    align-items: flex-end;
    flex: 1;
}

.hero-name {
    font-size: clamp(5rem, 15vw, 15rem);
    font-weight: 400;
    line-height: 0.88;
    letter-spacing: -0.04em;
    color: #fff;
    margin: 0;
    text-transform: uppercase;
    flex: 1;
    font-family: 'Dennis Sans', sans-serif;
}

.hero-name em {
    font-style: italic;
    color: #c6e421;
}

.hero-name-line {
    display: block;
    overflow: hidden;
    padding-top: 0.14em;
    padding-bottom: 0.04em;
}

/* Portrait image */
.hero-img-wrap {
    position: absolute;
    right: 0;
    bottom: 0;
    width: clamp(220px, 28vw, 460px);
    height: clamp(300px, 44vw, 620px);
    overflow: hidden;
    border-radius: 4px 4px 0 0;
}

.hero-img-wrap img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: top center;
    display: block;
}

/* Bottom row */
.hero-bottom {
    display: flex;
    align-items: center;
    justify-content: space-between;
    border-top: 1px solid rgba(255, 255, 255, 0.1);
    padding-top: 1.4rem;
}

/* Override existing hero-stat colors for this dark hero */
.hero-new .hero-stats {
    display: flex;
    gap: calc(var(--gap-padding, 2rem) * 2);
    margin-top: 0;
}

.hero-new .hero-stat-num {
    font-size: clamp(1.4rem, 2.2vw, 2.2rem);
    color: #fff;
    font-weight: 400;
    line-height: 1.1;
    display: block;
}

.hero-new .hero-stat-label {
    font-size: clamp(0.68rem, 0.78vw, 0.82rem);
    color: rgba(255, 255, 255, 0.38);
    letter-spacing: 0.1em;
    text-transform: uppercase;
    display: block;
    margin-top: 0.2em;
}

/* Scroll CTA */
.hero-scroll-btn {
    display: flex;
    align-items: center;
    gap: 0.6em;
    color: rgba(255, 255, 255, 0.38);
    font-size: clamp(0.72rem, 0.82vw, 0.86rem);
    text-decoration: none;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    transition: color 0.3s ease;
}

.hero-scroll-btn svg {
    width: 11px;
    height: 18px;
    animation: heroBounce 1.8s ease-in-out infinite;
}

.hero-scroll-btn:hover {
    color: #c6e421;
}

@keyframes heroBounce {
    0%, 100% { transform: translateY(0); }
    55%       { transform: translateY(5px); }
}

/* Responsive */
@media screen and (max-width: 900px) {
    .hero-img-wrap {
        width: clamp(160px, 38vw, 300px);
        height: clamp(220px, 52vw, 440px);
    }
}

@media screen and (max-width: 600px) {
    .hero-img-wrap {
        width: clamp(130px, 42vw, 200px);
        height: clamp(180px, 56vw, 300px);
    }

    .hero-new .hero-stats {
        gap: calc(var(--gap-padding, 2rem) * 1.2);
    }
}

@media screen and (max-width: 420px) {
    .hero-img-wrap {
        display: none;
    }
}


/* ==========================================================================
   HERO — Updated Elements
   ========================================================================== */

.hero-avail-dot {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: #c6e421;
    flex-shrink: 0;
    display: inline-block;
    animation: pulse-dot 2s ease-in-out infinite;
}

@keyframes pulse-dot {
    0%, 100% { opacity: 1; transform: scale(1); }
    50% { opacity: 0.5; transform: scale(0.7); }
}

.hero-sep {
    opacity: 0.35;
    margin: 0 .2em;
}

.hero-bottom-left {
    display: flex;
    flex-direction: column;
    gap: .45em;
}

.hero-role-tag {
    display: flex;
    align-items: center;
    gap: .5em;
    font-size: clamp(.82rem, 1vw, .95rem);
    color: rgba(255,255,255,.38);
    letter-spacing: .08em;
    text-transform: uppercase;
}

.hero-role-sep {
    color: #c6e421;
    font-style: normal;
}

.hero-tagline {
    font-size: clamp(1rem, 1.6vw, 1.5rem);
    color: rgba(255,255,255,.65);
    line-height: 1.55;
    font-weight: 400;
    margin: 0;
    letter-spacing: -.01em;
}


/* ==========================================================================
   GLOBAL SECTION LABEL — base styles used everywhere
   ========================================================================== */

.section-label {
    display: flex;
    align-items: center;
    gap: .75em;
}

.section-label .dot-indicator {
    width: .55em;
    height: .55em;
    border-radius: 50%;
    background: var(--color-dark);
    flex-shrink: 0;
}

.section-label h5 {
    margin: 0;
    text-transform: uppercase;
    letter-spacing: .1em;
    font-weight: 450;
    font-size: clamp(.7rem, .85vw, .82rem);
    color: var(--color-dark);
    opacity: .55;
    white-space: nowrap;
}

/* Dark section overrides */
.theme-dark .section-label .dot-indicator {
    background: #c6e421;
}

.theme-dark .section-label h5 {
    color: var(--color-white);
    opacity: .5;
}

/* ==========================================================================
   SECTION LABEL ROW — flex row with expanding line
   ========================================================================== */

.section-label-row {
    display: flex;
    align-items: center;
    gap: clamp(1rem, 2vw, 2rem);
    margin-bottom: clamp(2.5rem, 5vw, 5rem);
}

.section-label-row .section-label {
    flex-shrink: 0;
    padding-bottom: 0; /* override any per-section padding */
}

/* The expanding line inside section-label-row */
.slr-line {
    flex: 1;
    height: 1px;
    background: rgba(0,0,0,.12);
}

.theme-dark .slr-line {
    background: rgba(255,255,255,.12);
}


/* ==========================================================================
   DISCIPLINES — WHL tags row
   ========================================================================== */

.disc-tags {
    display: flex;
    align-items: center;
    gap: .5em;
    flex-wrap: wrap;
    flex: 1;
    padding: 0 var(--gap-padding);
}

.disc-tags span {
    font-size: clamp(.65rem, .75vw, .75rem);
    letter-spacing: .06em;
    text-transform: uppercase;
    color: rgba(28,29,32,.4);
    border: 1px solid rgba(28,29,32,.12);
    border-radius: 99px;
    padding: .3em .75em;
    transition: border-color .3s ease, color .3s ease;
}

.whl-item:hover .disc-tags span {
    color: #1C1D20;
    border-color: rgba(28,29,32,.3);
}

/* Hide the disc-tags on small screens */
@media screen and (max-width: 700px) {
    .disc-tags { display: none; }
}


/* ==========================================================================
   PROJECTS SECTION — premium card grid
   ========================================================================== */

.projects-section {
    background: #0e0e10;
    padding: clamp(4rem, 8vw, 8rem) 0;
}

.projects-heading {
    font-size: clamp(2.6rem, 5.5vw, 6rem);
    font-weight: 400;
    letter-spacing: -.035em;
    line-height: 1.08;
    color: #fff;
    margin: 0 0 clamp(3rem, 6vw, 6rem) 0;
}

.projects-heading em {
    font-style: italic;
    color: #c6e421;
}

/* Override theme text color for heading inside dark section */
.projects-section .projects-heading {
    color: #fff;
}

.projects-grid-wrap {
    padding-top: clamp(3rem, 6vw, 6rem);
}

/* Dark section label for projects section */
.projects-section .section-label .dot-indicator { background: #c6e421; }
.projects-section .section-label h5 { color: rgba(255,255,255,.45); }
.projects-section .slr-line { background: rgba(255,255,255,.1); }

.projects-grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 1.25rem;
    margin-bottom: clamp(2rem, 4vw, 4rem);
}

.proj-card {
    display: flex;
    flex-direction: column;
    gap: 1rem;
    text-decoration: none;
    padding: 1.5rem;
    border-radius: clamp(14px, 1.5vw, 20px);
    background: #1c1a18;
    transition: background .35s ease;
}

.proj-card:hover {
    background: #212020;
}

/* Header row: name left, tag/year right */
.proj-card-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: .75rem;
}

.proj-card-name {
    color: #fff;
    font-size: clamp(.88rem, 1.1vw, 1rem);
    font-weight: 500;
    letter-spacing: -.02em;
    line-height: 1.2;
}

.proj-card-year {
    color: rgba(255,255,255,.2);
    font-size: .72rem;
    letter-spacing: .06em;
    flex-shrink: 0;
}

.proj-card-cs-tag {
    font-size: .66rem;
    letter-spacing: .08em;
    text-transform: uppercase;
    color: #c6e421;
    border: 1px solid rgba(198,228,33,.3);
    border-radius: 99px;
    padding: .25em .7em;
    flex-shrink: 0;
    white-space: nowrap;
}

/* MacBook device preview */
.proj-mbp {
    position: relative;
    width: 100%;
    border-radius: 10px;
    overflow: hidden;
    background: #1c1a18;
}

.proj-mbp::before {
    content: "";
    display: block;
    padding-top: 65.01%; /* MBP14 frame aspect ratio */
}

/* Screenshot — inside the MacBook screen area */
.proj-mbp-screen {
    position: absolute;
    width: 76.62%;
    left: 50%;
    top: 51.25%;
    transform: translate(-50%, -50%);
    overflow: hidden;
    border-radius: 4px 4px 0 0;
    background: #0a0a0a;
    z-index: 1;
}

.proj-mbp-screen::before {
    content: "";
    display: block;
    padding-top: 62.81%;
}

.proj-mbp-screen img {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: top left;
    display: block;
    transition: transform .8s cubic-bezier(.16, 1, .3, 1);
}

.proj-card:hover .proj-mbp-screen img {
    transform: scale(1.04);
}

/* MacBook frame PNG overlays the screenshot */
.proj-mbp-frame {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    background-image: url('../images/apple-macbookpro14-front.png');
    background-position: center;
    background-repeat: no-repeat;
    background-size: 100% auto;
    z-index: 2;
    pointer-events: none;
}

/* CTA row below grid */
.projects-cta {
    display: flex;
    justify-content: flex-start;
}

.projects-section .btn-normal .btn-click {
    box-shadow: inset 0 0 0 1px rgba(255,255,255,.2);
}

.projects-section .btn-normal .btn-text-inner {
    color: #fff;
}

/* Responsive */
@media screen and (max-width: 700px) {
    .projects-grid {
        grid-template-columns: 1fr;
    }
}


/* ==========================================================================
   FEATURES / WHY ME SECTION
   ========================================================================== */

.features-section {
    padding: clamp(4rem, 8vw, 8rem) 0;
    background: var(--color-dark);
}

.features-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 1px;
    background: rgba(255,255,255,.1);
    border: 1px solid rgba(255,255,255,.1);
    border-radius: clamp(12px, 1.5vw, 20px);
    overflow: hidden;
}

.feature-card {
    background: #1C1D20;
    padding: clamp(2rem, 4vw, 3.5rem);
    display: flex;
    flex-direction: column;
    gap: 1.2em;
    transition: background 0.4s ease;
}

.feature-card:hover {
    background: #222325;
}

.feature-card-num {
    font-size: .75rem;
    letter-spacing: .12em;
    color: rgba(255,255,255,.3);
    font-weight: 500;
    text-transform: uppercase;
}

.feature-card-icon {
    width: clamp(2.2rem, 3vw, 3rem);
    height: clamp(2.2rem, 3vw, 3rem);
    color: #c6e421;
}

.feature-card-icon svg {
    width: 100%;
    height: 100%;
    stroke: currentColor;
}

.feature-card-title {
    font-size: clamp(1.3rem, 2vw, 1.9rem);
    font-weight: 500;
    color: var(--color-white);
    letter-spacing: -.025em;
    line-height: 1.25;
    margin: 0;
}

.feature-card-desc {
    font-size: clamp(.85rem, 1vw, 1rem);
    line-height: 1.7;
    color: rgba(255,255,255,.5);
    margin: 0;
}

@media screen and (max-width: 900px) {
    .features-grid {
        grid-template-columns: 1fr;
    }
}


/* ==========================================================================
   PROCESS SECTION
   ========================================================================== */

.process-section {
    padding: clamp(4rem, 8vw, 8rem) 0;
    background: var(--color-dark);
}

.process-heading {
    font-size: clamp(2.8rem, 6vw, 6rem);
    font-weight: 400;
    letter-spacing: -.03em;
    line-height: 1.1;
    color: var(--color-white);
    margin: 0 0 clamp(3rem, 6vw, 6rem) 0;
}

.process-heading em {
    font-style: italic;
    color: #c6e421;
}

.process-steps {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 1px;
    background: rgba(255,255,255,.1);
    border-top: 1px solid rgba(255,255,255,.1);
    border-bottom: 1px solid rgba(255,255,255,.1);
    margin-bottom: clamp(3rem, 5vw, 5rem);
}

.process-step {
    padding: clamp(2rem, 3.5vw, 3rem) clamp(1.5rem, 2.5vw, 2.5rem);
    background: transparent;
    display: flex;
    flex-direction: column;
    gap: 1.5em;
}

.process-step-num {
    font-size: clamp(2rem, 3vw, 3rem);
    font-weight: 400;
    color: #c6e421;
    letter-spacing: -.03em;
    line-height: 1;
}

.process-step-body {
    display: flex;
    flex-direction: column;
    gap: .7em;
}

.process-step-title {
    font-size: clamp(1rem, 1.4vw, 1.3rem);
    font-weight: 500;
    color: var(--color-white);
    letter-spacing: -.015em;
    margin: 0;
}

.process-step-desc {
    font-size: clamp(.82rem, .95vw, .95rem);
    line-height: 1.7;
    color: rgba(255,255,255,.45);
    margin: 0;
}

.process-cta {
    display: flex;
    justify-content: flex-start;
}

@media screen and (max-width: 860px) {
    .process-steps {
        grid-template-columns: repeat(2, 1fr);
    }
}

@media screen and (max-width: 540px) {
    .process-steps {
        grid-template-columns: 1fr;
    }
}


/* ==========================================================================
   SERVICES SECTION
   ========================================================================== */

.services-section {
    padding: clamp(4rem, 8vw, 8rem) 0;
    background: var(--color-white);
}

.services-heading {
    font-size: clamp(2.8rem, 6vw, 6rem);
    font-weight: 400;
    letter-spacing: -.03em;
    line-height: 1.1;
    color: var(--color-dark);
    margin: 0 0 clamp(3rem, 6vw, 6rem) 0;
}

.services-heading em {
    font-style: italic;
    color: #c6e421;
}

.service-cards {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: clamp(1rem, 1.5vw, 1.5rem);
}

.service-card {
    border: 1px solid var(--color-border);
    border-radius: clamp(12px, 1.5vw, 20px);
    padding: clamp(2rem, 3.5vw, 3rem);
    display: flex;
    flex-direction: column;
    gap: 1.5em;
    background: var(--color-white);
    transition: border-color 0.3s ease, box-shadow 0.3s ease;
}

.service-card:hover {
    border-color: #c6e421;
    box-shadow: 0 8px 40px rgba(198,228,33,.12);
}

.service-card--featured {
    background: var(--color-dark);
    border-color: var(--color-dark);
}

.service-card--featured .service-card-title,
.service-card--featured .service-card-desc,
.service-card--featured .service-card-list li {
    color: var(--color-white);
}

.service-card--featured .service-card-list li::before {
    background: #c6e421;
}

.service-card--featured:hover {
    border-color: #c6e421;
}

.service-card-header {
    display: flex;
    flex-direction: column;
    gap: .5em;
}

.service-card-tag {
    font-size: .72rem;
    letter-spacing: .12em;
    color: rgba(0,0,0,.3);
    text-transform: uppercase;
    font-weight: 500;
}

.service-card--featured .service-card-tag {
    color: rgba(255,255,255,.35);
}

.service-card-badge {
    display: inline-block;
    padding: .25em .8em;
    background: #c6e421;
    color: #1C1D20;
    font-size: .72rem;
    font-weight: 600;
    letter-spacing: .06em;
    text-transform: uppercase;
    border-radius: 99px;
    align-self: flex-start;
}

.service-card-title {
    font-size: clamp(1.3rem, 1.8vw, 1.75rem);
    font-weight: 500;
    color: var(--color-dark);
    letter-spacing: -.025em;
    line-height: 1.25;
    margin: 0;
}

.service-card-desc {
    font-size: clamp(.85rem, 1vw, 1rem);
    line-height: 1.65;
    color: rgba(0,0,0,.5);
    margin: 0;
}

.service-card-list {
    list-style: none;
    padding: 0;
    margin: 0;
    display: flex;
    flex-direction: column;
    gap: .65em;
    flex: 1;
}

.service-card-list li {
    font-size: clamp(.82rem, .95vw, .95rem);
    line-height: 1.55;
    color: rgba(0,0,0,.6);
    padding-left: 1.2em;
    position: relative;
}

.service-card-list li::before {
    content: '';
    position: absolute;
    left: 0;
    top: .55em;
    width: 5px;
    height: 5px;
    border-radius: 50%;
    background: #c6e421;
}

.service-card-cta {
    margin-top: auto;
    padding-top: 1.5em;
    border-top: 1px solid rgba(0,0,0,.08);
}

.service-card--featured .service-card-cta {
    border-top-color: rgba(255,255,255,.12);
}

.service-btn {
    width: 100%;
}

.service-btn .btn-click {
    -webkit-box-shadow: inset 0px 0px 0px 1px var(--color-border);
    box-shadow: inset 0px 0px 0px 1px var(--color-border);
    width: 100%;
    display: flex;
    justify-content: center;
}

.service-card--featured .service-btn .btn-click {
    box-shadow: inset 0px 0px 0px 1px rgba(255,255,255,.2);
}

.service-card--featured .service-btn .btn-text-inner {
    color: var(--color-white);
}

/* ---- Service card body wrapper — always visible on all screen sizes ---- */
.service-card-body-inner {
    display: flex;
    flex-direction: column;
    gap: 1.5em;
}

/* Chevron never shown — no accordion on services */
.service-card-chevron {
    display: none;
}

/* ---- Service cards — mobile layout (no accordion, just stacked) ---- */
@media screen and (max-width: 900px) {
    .service-cards {
        grid-template-columns: 1fr;
        gap: .6rem;
    }

    .service-card {
        border-left: 3px solid #c6e421;
        border-radius: 12px;
        padding: 1.25rem;
        gap: 1rem;
    }

    .service-card-title {
        font-size: 1.1rem;
    }

    .service-card-desc {
        font-size: .88rem;
    }

    .service-card-cta {
        padding-top: .75rem;
    }

    .service-card--featured {
        border-color: var(--color-dark);
        border-left-color: #c6e421;
    }
}

/* ---- WHL mobile — tap to reveal image -------------------------------- */
.whl-mobile-img {
    display: none;
}

@media (hover: none), screen and (max-width: 900px) {
    .whl-mobile-img {
        display: block;
        max-height: 0;
        overflow: hidden;
        transition: max-height .45s cubic-bezier(0.4, 0, 0.2, 1);
    }

    .whl-mobile-img img {
        width: 100%;
        aspect-ratio: 16 / 9;
        object-fit: cover;
        border-radius: 10px;
        display: block;
        margin-top: .75rem;
        margin-bottom: .5rem;
    }

    .whl-item[data-open="true"] .whl-mobile-img {
        max-height: 65vw;
    }

    /* Show a tap hint chevron on the row */
    .whl-row {
        cursor: pointer;
    }
}

/* ---- Button fill — touch :active feedback --------------------------- */
@media (hover: none) {
    .btn-click .btn-fill {
        transform: translate3d(0, 76%, 0);
        transition: transform .25s ease;
    }
    .btn-click:active .btn-fill {
        transform: translate3d(0, 0%, 0);
    }
}


/* ==========================================================================
   TESTIMONIALS — dark variant heading
   ========================================================================== */

.testimonials-heading {
    font-size: clamp(2.2rem, 4.5vw, 4.5rem);
    font-weight: 400;
    letter-spacing: -.03em;
    line-height: 1.1;
    color: var(--color-white);
    margin: 0 0 clamp(2.5rem, 5vw, 5rem) 0;
}

.testimonials-heading em {
    font-style: italic;
    color: #c6e421;
}


/* ==========================================================================
   ABOUT STATS
   ========================================================================== */

.about-stats {
    display: flex;
    gap: clamp(1.5rem, 4vw, 4rem);
    padding-top: clamp(1.5rem, 3vw, 3rem);
    margin-top: clamp(1.5rem, 3vw, 3rem);
    border-top: 1px solid rgba(255,255,255,.12);
}

.about-stat {
    display: flex;
    flex-direction: column;
    gap: .4em;
}

.about-stat-num {
    display: flex;
    align-items: baseline;
    gap: .05em;
    font-size: clamp(2.4rem, 4vw, 4rem);
    font-weight: 500;
    color: var(--color-white);
    letter-spacing: -.04em;
    line-height: 1;
}

.stat-counter {
    font-variant-numeric: tabular-nums;
}

.stat-suffix {
    font-size: .55em;
    color: #c6e421;
    font-weight: 500;
}

.about-stat-label {
    font-size: clamp(.78rem, .9vw, .9rem);
    color: rgba(255,255,255,.4);
    line-height: 1.4;
    margin: 0;
    max-width: 9em;
}

@media screen and (max-width: 540px) {
    .about-stats {
        gap: clamp(1.2rem, 6vw, 2.5rem);
    }

    .about-stat-num {
        font-size: clamp(2rem, 8vw, 3rem);
    }
}


/* ==========================================================================
   BIG CTA SECTION
   ========================================================================== */

.big-cta-section {
    background: var(--color-white);
    padding: clamp(5rem, 10vw, 11rem) 0;
    text-align: center;
}

.big-cta-inner {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: clamp(1.5rem, 3vw, 2.5rem);
}

.big-cta-eyebrow {
    font-size: clamp(.85rem, 1vw, 1rem);
    letter-spacing: .1em;
    text-transform: uppercase;
    color: rgba(0,0,0,.4);
    margin: 0;
}

.big-cta-heading {
    font-size: clamp(3rem, 7vw, 8rem);
    font-weight: 400;
    letter-spacing: -.035em;
    line-height: 1.05;
    color: var(--color-dark);
    margin: 0;
}

.big-cta-heading em {
    font-style: italic;
    color: #c6e421;
}

.big-cta-actions {
    display: flex;
    align-items: center;
    gap: clamp(1.5rem, 3vw, 3rem);
    flex-wrap: wrap;
    justify-content: center;
}

.big-cta-btn .btn-click {
    padding: 0 clamp(2rem, 3.5vw, 3.5rem);
    height: clamp(3.2rem, 4.5vw, 4.5rem);
    font-size: clamp(.9rem, 1.1vw, 1.05rem);
    -webkit-box-shadow: inset 0px 0px 0px 1px var(--color-border);
    box-shadow: inset 0px 0px 0px 1px var(--color-border);
}

.big-cta-phone {
    display: flex;
    align-items: center;
    gap: .6em;
    font-size: clamp(.9rem, 1.05vw, 1.05rem);
    color: var(--color-dark);
    text-decoration: none;
    opacity: .6;
    transition: opacity .3s ease;
}

.big-cta-phone:hover {
    opacity: 1;
}

.big-cta-phone svg {
    width: 18px;
    height: 18px;
}

@media screen and (max-width: 600px) {
    .big-cta-actions {
        flex-direction: column;
    }

    .big-cta-heading {
        font-size: clamp(2.5rem, 12vw, 5rem);
    }
}


/* ==========================================================================
   FOOTER — dark theme overrides
   ========================================================================== */

.site-footer.theme-dark {
    background: #141517;
}

/* All text → white */
.site-footer.theme-dark .footer-col h5 {
    color: rgba(255, 255, 255, .35);
}

.site-footer.theme-dark .footer-bio p,
.site-footer.theme-dark .footer-bio-text {
    color: rgba(255, 255, 255, .75);
}

.site-footer.theme-dark .footer-meta {
    color: rgba(255, 255, 255, .3);
}

.site-footer.theme-dark .footer-nav a,
.site-footer.theme-dark .footer-contact-col a {
    color: rgba(255, 255, 255, .55);
}

.site-footer.theme-dark .footer-nav a:hover,
.site-footer.theme-dark .footer-contact-col a:hover {
    color: #c6e421;
    opacity: 1;
}

/* CTA cards */
.site-footer.theme-dark .footer-cta-card {
    border-color: rgba(255, 255, 255, .12);
    color: var(--color-white);
}

.site-footer.theme-dark .footer-cta-card:hover {
    background: #c6e421;
    border-color: #c6e421;
    color: #1C1D20;
}

/* Big name at bottom */
.site-footer.theme-dark .footer-big-name span {
    color: rgba(255, 255, 255, .55);
}

/* Locations list */
.footer-locations {
    list-style: none;
    padding: 0;
    margin: .5em 0 0 0;
}

.footer-locations li {
    font-size: .85rem;
    line-height: 1.8;
    color: rgba(255, 255, 255, .35);
}

/* footer-contact-col link list (reuse footer-nav ul pattern) */
.site-footer .footer-contact-col ul {
    list-style: none;
    padding: 0;
    margin: 0 0 .5em 0;
}

.site-footer .footer-contact-col li {
    margin-bottom: .6em;
}

.site-footer .footer-contact-col a {
    color: var(--color-dark);
    text-decoration: none;
    font-size: .9em;
    opacity: .6;
    transition: opacity .3s ease;
}

.site-footer .footer-contact-col a:hover {
    opacity: 1;
}


/* ============================================================
   MOBILE OPTIMIZATION — Comprehensive Responsive Enhancement
   ============================================================ */

/* --- Global overflow protection -------------------------------- */
html,
body {
    overflow-x: hidden;
}

/* Safety net so no image ever causes horizontal scroll */
img {
    max-width: 100%;
}

/* ---- HERO — mobile layout fixes ------------------------------ */

/* Reduce hero wrap top padding on phones */
@media screen and (max-width: 540px) {
    .hero-wrap {
        padding: 1.25rem 0 1.5rem;
    }

    /* Nav button sits at top:2rem, so 4rem is enough breathing room */
    .hero-eyebrow {
        padding-top: 3.8rem;
        font-size: clamp(.68rem, 3vw, .8rem);
        gap: .5em;
    }

    /* Big name on phones — fill screen width like the case study hero */
    .hero-name {
        font-size: clamp(4.5rem, 21vw, 6.5rem);
        letter-spacing: -0.05em;
    }

    /* Portrait image — smaller on phones */
    .hero-img-wrap {
        width: clamp(105px, 35vw, 160px);
        height: clamp(145px, 48vw, 220px);
    }

    /* Stack bottom row — role + tagline over scroll indicator */
    .hero-bottom {
        flex-direction: column;
        align-items: flex-start;
        gap: .6rem;
        padding-top: .9rem;
    }

    /* Scroll indicator not needed on touch — users swipe */
    .hero-scroll-btn {
        display: none;
    }

    /* Slightly smaller tagline */
    .hero-tagline {
        font-size: clamp(.87rem, 3.6vw, 1rem);
        line-height: 1.5;
    }

    .hero-role-tag {
        font-size: clamp(.72rem, 3vw, .85rem);
    }
}

/* Very small phones (≤ 380px) */
@media screen and (max-width: 380px) {
    .hero-name {
        font-size: clamp(3.8rem, 19vw, 5rem);
    }

    .hero-img-wrap {
        display: none;
    }
}

/* ---- INTRO STATEMENT — tiny phones --------------------------- */
@media screen and (max-width: 480px) {
    .intro-statement {
        font-size: clamp(1.75rem, 9.5vw, 2.8rem);
    }

    .intro-desc {
        font-size: clamp(.82rem, 3.5vw, .95rem);
    }
}

/* ---- DISCIPLINES / WHL — mobile ------------------------------ */
@media screen and (max-width: 540px) {
    .whl-row {
        padding: clamp(.7rem, 3vw, 1rem) 0;
        gap: .75em;
    }

    .whl-title {
        font-size: clamp(1.5rem, 10vw, 2.2rem);
    }
}

/* ---- FEATURES — 2-col at tablet, mobile padding -------------- */
@media screen and (min-width: 561px) and (max-width: 900px) {
    .features-grid {
        grid-template-columns: repeat(2, 1fr);
    }
}

@media screen and (max-width: 540px) {
    .feature-card {
        padding: clamp(1.4rem, 5vw, 2rem);
        gap: .9em;
    }
}

/* ---- PROJECTS — small phone tweaks --------------------------- */
@media screen and (max-width: 480px) {
    .projects-grid {
        gap: .65rem;
    }

    .proj-card {
        padding: .75rem;
        gap: .6rem;
        border-radius: clamp(10px, 3vw, 14px);
    }

    .proj-card-name {
        font-size: .82rem;
    }

    .proj-card-img-box {
        aspect-ratio: 4 / 3;
        border-radius: 9px;
    }

    .projects-heading {
        font-size: clamp(1.8rem, 9.5vw, 2.8rem);
        margin-bottom: clamp(1.5rem, 6vw, 2.5rem);
    }
}

/* ---- PROCESS — mobile --------------------------------------- */
@media screen and (max-width: 540px) {
    .process-step {
        padding: clamp(1.4rem, 5vw, 2rem) clamp(1rem, 3.5vw, 1.5rem);
        gap: .9em;
    }

    .process-step-num {
        font-size: clamp(1.4rem, 7vw, 1.8rem);
    }

    .process-heading {
        font-size: clamp(2rem, 10vw, 3rem);
        margin-bottom: clamp(1.8rem, 7vw, 2.5rem);
    }
}

/* ---- SERVICE CARDS — 2-col at tablet ------------------------- */
@media screen and (min-width: 561px) and (max-width: 900px) {
    .service-cards {
        grid-template-columns: repeat(2, 1fr);
    }

    /* Third card spans full width on its own row */
    .service-card:last-child {
        grid-column: 1 / -1;
        max-width: 50%;
        margin: 0 auto;
        width: 100%;
    }
}

@media screen and (max-width: 540px) {
    .services-heading {
        font-size: clamp(2rem, 10vw, 3rem);
        margin-bottom: clamp(1.8rem, 7vw, 2.5rem);
    }

    .service-card {
        padding: clamp(1.5rem, 5vw, 2rem);
    }
}

/* ---- TESTIMONIALS — mobile ----------------------------------- */
@media screen and (max-width: 540px) {
    /* Let active slide determine height naturally */
    .testimonials-section .testimonial-slides {
        min-height: 0;
    }

    .testimonials-section .testimonial-quote {
        font-size: clamp(1.1rem, 4.8vw, 1.5rem);
        line-height: 1.5;
        margin-bottom: calc(var(--gap-padding) * 1.2);
    }

    /* Client pill wraps on phone */
    .testimonials-section .testimonial-client {
        min-width: 0;
        flex: 1;
    }
}

/* ---- ABOUT — mobile ------------------------------------------ */
@media screen and (max-width: 540px) {
    .about-section .about-text-col h4 {
        font-size: clamp(1.1rem, 5.5vw, 1.4rem);
    }
}

/* ---- BIG CTA — mobile ---------------------------------------- */
@media screen and (max-width: 480px) {
    .big-cta-heading {
        font-size: clamp(2.2rem, 11vw, 3.5rem);
    }

    .big-cta-phone {
        font-size: clamp(.85rem, 4vw, 1rem);
    }
}

/* ---- SECTION LABEL ROW — tighter on phones ------------------- */
@media screen and (max-width: 480px) {
    .section-label-row {
        margin-bottom: clamp(1.4rem, 6vw, 2.2rem);
    }
}

/* ---- FOOTER — small phones ----------------------------------- */
@media screen and (max-width: 480px) {
    .site-footer .footer-cta-card {
        padding: 1rem 1.1rem;
    }
}

/* ---- TOUCH DEVICE — neutralise hover-only opacity dims ------- */
/* Locomotive adds .touch to <main> on touch devices */
.touch .whl-items:hover .whl-row {
    opacity: 1;
}

.touch .services-grid .services-items:hover a {
    opacity: 1;
}

/* ---- LANDSCAPE MOBILE — keep hero comfortable ---------------- */
@media screen and (max-width: 812px) and (orientation: landscape) {
    .hero-new {
        min-height: 100svh;
    }

    .hero-eyebrow {
        padding-top: 2.5rem;
    }

    .hero-name {
        font-size: clamp(2.5rem, 10vh, 6rem);
    }

    .hero-img-wrap {
        width: clamp(90px, 20vh, 160px);
        height: clamp(120px, 28vh, 220px);
    }

    .hero-wrap {
        padding: 1rem 0 1rem;
    }
}

/* ---- SAFE AREA — iPhone notch / Dynamic Island ---------------- */
@supports (padding: env(safe-area-inset-bottom)) {
    .site-footer {
        padding-bottom: calc(var(--section-padding) + env(safe-area-inset-bottom));
    }

    .hero-wrap {
        padding-bottom: max(1.5rem, env(safe-area-inset-bottom));
    }
}

/* ---- REDUCED MOTION — respect user preference ---------------- */
@media (prefers-reduced-motion: reduce) {
    .hero-avail-dot,
    .hero-scroll-btn svg {
        animation: none;
    }

    .proj-card-img-box img,
    .feature-card,
    .service-card,
    .proj-card {
        transition: none;
    }
}

/* ==========================================================================
   SCROLL SIDEBAR — right-side section dots
   ========================================================================== */

.scroll-sidebar {
    position: fixed;
    right: 1.75rem;
    top: 50%;
    transform: translateY(-50%);
    z-index: 9000;
    display: flex;
    flex-direction: column;
    gap: .85rem;
    align-items: center;
    pointer-events: auto;
}

.ssb-dot {
    position: relative;
    display: block;
    width: 5px;
    height: 5px;
    border-radius: 50%;
    background: rgba(255, 255, 255, 0.25);
    transition: width .3s ease, height .3s ease, background .3s ease, transform .3s ease;
    text-decoration: none;
}

/* Label on hover */
.ssb-dot::before {
    content: attr(data-label);
    position: absolute;
    right: 1.4rem;
    top: 50%;
    transform: translateY(-50%);
    font-size: .68rem;
    letter-spacing: .08em;
    text-transform: uppercase;
    color: rgba(255, 255, 255, 0.55);
    white-space: nowrap;
    opacity: 0;
    pointer-events: none;
    transition: opacity .25s ease;
}

.ssb-dot:hover::before {
    opacity: 1;
}

.ssb-dot.ssb-active {
    width: 8px;
    height: 8px;
    background: #c6e421;
    transform: scale(1.1);
}


@media screen and (max-width: 900px) {
    .scroll-sidebar {
        display: none;
    }
}
