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


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


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

@import url('https://fonts.googleapis.com/css2?family=Londrina+Outline&display=swap');

/* SF Pro Display, self-hosted from public/assets/fonts/sf-pro-display.
   Only Regular, Medium and Bold exist as upright faces in that folder â€” the
   other files are italic-only â€” so 600 and 800 fall back to Bold. */
@font-face {
    font-family: "SF Pro Display";
    src: url("/assets/fonts/sf-pro-display/SFPRODISPLAYREGULAR.OTF") format("opentype");
    font-weight: 400;
    font-style: normal;
    font-display: swap;
}

@font-face {
    font-family: "SF Pro Display";
    src: url("/assets/fonts/sf-pro-display/SFPRODISPLAYMEDIUM.OTF") format("opentype");
    font-weight: 500;
    font-style: normal;
    font-display: swap;
}

@font-face {
    font-family: "SF Pro Display";
    src: url("/assets/fonts/sf-pro-display/SFPRODISPLAYBOLD.OTF") format("opentype");
    font-weight: 700;
    font-style: normal;
    font-display: swap;
}

@font-face {
    font-family: "SF Pro Display";
    src: url("/assets/fonts/sf-pro-display/SFPRODISPLAYSEMIBOLDITALIC.OTF") format("opentype");
    font-weight: 600;
    font-style: italic;
    font-display: swap;
}

@font-face {
    font-family: "SF Pro Display";
    src: url("/assets/fonts/sf-pro-display/SFPRODISPLAYLIGHTITALIC.OTF") format("opentype");
    font-weight: 300;
    font-style: italic;
    font-display: swap;
}

/* for Outline */

@font-face {
  font-family: outilne;
  src: url(../fonts/just-sans-med.otf);
}

/* for without outline  */
@font-face {
  font-family: just-sans;
  src: url(../fonts/just-sans-bold.otf);
}

/* for without outline  */
@font-face {
  font-family: just-sans-medium;
  src: url(../fonts/just-sans-regu.otf);
}






/* ==============================================================
   # Site theme tokens
   ---------------------------------------------------------------
   style.css still ships the old template palette (indigo #5138ee /
   mint #02ebad on a charcoal #1d1d1d body, set in Manrope). The home
   page was rebuilt off those tokens with its own hard-coded values,
   so every other page was left on the old theme.

   These redefinitions point the same tokens at the home page palette
   so the rest of the site inherits it. Only colour and type values
   move -- no spacing, sizing or layout token is touched, so nothing
   reflows.
=================================================================== */
:root {
    /* Home page sets body copy in SF Pro Display; headings are already
       forced to it by style.css:290. */
    --font-default: "SF Pro Display", -apple-system, BlinkMacSystemFont, sans-serif;
    --font-heading: "SF Pro Display", -apple-system, BlinkMacSystemFont, sans-serif;

    /* Dark surfaces: section body / navbar-and-raised-panel. */
    --dark: #0E0920;
    --dark-secondary: #19132F;

    /* Accent orange and the CTA blue that goes with it. */
    --color-primary: #FE4601;
    --color-secondary: #1E77F2;
    --bg-gradient: linear-gradient(45deg, #FE4601 0%, #1E77F2 100%);

    /* Light surfaces and type. */
    --bg-gray: #EFEFF0;
    --color-heading: #0B0B0F;
    --color-paragraph: #6b6b70;

    --box-shadow-secondary: 0 10px 30px 0 rgba(254, 70, 1, 0.28);
}

body{
    overflow: auto!important;
}
.container{
    max-width: 85%;
    width:100%;
}

.londrina-outline-regular {
    font-family: "Londrina Outline", sans-serif;
    font-weight: 400;
    font-style: normal;
  }
.anton-regular {
    /* font-family: "Anton", sans-serif!important; */
    /* font-weight: 400; */
    /* font-style: normal; */
  }
  
  .manrope{
    font-family: "Manrope", sans-serif;
    font-optical-sizing: auto;
    font-style: normal;
  }
  

  .marcellus-regular {
    font-family: "Marcellus", serif;
    font-weight: 400;
    font-style: normal;
  }


.desktop-none{
    display: none;
}

section.partnering-section {
    background: #0E0920;
    padding-bottom: 100px;
    padding-top: 50px;
}

.navbar {
    background-color: #19132F;
    /* border-bottom: 1px solid #ffffff99; */
}

.navbar .navbar-collapse {
    flex-wrap: nowrap !important;
}
.navbar .navbar-collapse .navbar-nav {
    flex-wrap: nowrap;
}

.btn-lets-talk {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 7px 35px;
    border-radius: 50px;
    font-size: 13px;
    font-weight: 600;
    letter-spacing: 0.5px;
    color: #ffffff !important;
    background: #19132F;
    position: relative;
    z-index: 0;
    flex-shrink: 0;
    white-space: nowrap;
    margin-left: 40px;
}
.btn-lets-talk::before {
    content: "";
    position: absolute;
    inset: 0;
    border-radius: 50px;
    padding: 1px;
    background: linear-gradient(90deg, #FE4601 0%, #FF936B 100%);
    -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
    -webkit-mask-composite: xor;
    mask-composite: exclude;
    pointer-events: none;
    z-index: -1;
}
.btn-lets-talk:hover {
    color: #ffffff !important;
    background: linear-gradient(90deg, #FE4601 0%, #FF936B 100%);
}
.navbar-brand, .nav-link {
    color: white !important;
    font-size: 14px;
    font-weight: 500;
}
.nav-link:hover {
    color: gray !important;
}

ul.navbar-nav li {
    margin: 0px 0px 0px 70px;
    padding:25px 0px;
}
header{
    display: flex
    ;
        justify-content: space-between;
        /* padding: 25px 0px; */
        align-items: center;
}
/* Mobile bar, per Figma: burger left, logo centred, LET'S TALK right.
   The markup order is logo -> collapse(burger) -> CTA, and it has to stay that
   way for desktop, so the three header children are re-ordered here instead.
   1023 is the site's own switch point -- responsive.css flips .mobile-none /
   .desktop-none at exactly that width, so the burger and the mobile pill both
   appear here and nowhere else. */
@media (max-width: 1023px) {
    header > .navbar-header {
        order: 2;
        flex: 1 1 auto;
        display: flex;
        justify-content: center;
    }
    header > .navbar-collapse {
        order: 1;
        flex: 0 0 auto;
        width: auto;
    }
    header > .header-cta {
        order: 3;
        flex: 0 0 auto;
    }
    /* two classes: responsive.css turns `.desktop-none` into display:block at
       this width and loads after this file, so a single class loses. */
    .btn-lets-talk.btn-lets-talk--mobile {
        display: inline-flex;
        margin-left: 0;
        /* 8/6 rather than an even 7/7: the caps of an all-caps line sit above
           the centre of their line box, which left the label 2px high in the
           pill. Same overall height, glyphs now centred. */
        padding: 8px 18px 6px;
        font-size: 11px;
        letter-spacing: 0.4px;
    }
    .burger-menu {
        display: inline-flex;
        align-items: center;
    }
}
@media (max-width: 420px) {
    /* two classes: responsive.css turns `.desktop-none` into display:block at
       this width and loads after this file, so a single class loses. */
    .btn-lets-talk.btn-lets-talk--mobile {
        display: inline-flex;
        padding: 6px 13px;
        font-size: 10px;
    }
    .navbar-brand > img {
        max-height: 32px;
    }
}

.accrdion-portfolio-area1 {
    padding-top: 35px;
}

.height-auto{
    height: auto!important;
}

.choose-us-style-one-thumb .video-play-button {
    position: absolute;
    right: 180px;
    bottom: -45px;
    overflow: inherit;
    background: transparent;
    z-index: 1;
}
.ptb-50{
    padding-top: 50px;
    padding-bottom: 50px;;
}
.banner-one-item img{
    position: absolute;
    right: -12%;
    top: 73%;
    width: 125px;
}

.cteative-service-item {
    padding: 20px;
    border-radius: 26px;;

}

.cteative-service-item img {
    height: auto;
    width: 100%;
    object-fit: cover;
    border-radius: 20px;
    filter: grayscale(1);
}
.cteative-service-item:hover img{
  filter:unset;
}

.brands-link {
    padding: 5px 20px;
    width: 79%;
    border-radius: 11px;
    font-size: 17px;
    color: white;
    font-weight: normal;
    position: absolute;
    /* bottom: 10px; */
    text-align: center;
    z-index: 2;
    left: 50%;
    bottom: 13%;
    transform: translate(-50%, 10px);
    background: #26252594;
}

.brands-link:hover{
    color:white!important;
}

.banner-one-item{
    position:relative;
}

/* ============== Testimonials  */

.testimonial-card {
    background-color: transparent;
    border-radius: 10px;
    /* box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.1); */
    padding: 10px;
    display: flex
;
    align-items: center;
    gap: 1.5rem;
    border: 1px solid #fff;
}


.testimonial-card img {
    border-radius: 0.5rem;
    object-fit: cover;
}
.testimonial-card .rating i {
    color: #ffc107;
}
.testimonial-card .rating span {
    color: #fff;
    font-size: 0.875rem;
    margin-left: 0.5rem;
}
.testimonial-card p {
    margin: 0.5rem 0;
}
.testimonial-card .company {
    font-weight: bold;
    font-size: 16px;
    margin-top: 0 !important;
    margin-bottom: 0!important;
}
.testimonial-card .position {
    margin-top: 0 !important;
    font-size: 10px;
    font-weight: normal;
}


.testimonial-card p {
    color: white !important;
    font-size: 12px;
}
.bg-linear {
    /* background: linear-gradient(90deg, #FE4601 0%, #FF936B 100%); */
        background: #FE4601;

    width: 98%;
    margin: auto;
    border-radius:42px;
}

.bg-dark{
    background-color: #1D1D1D;
}


.testimonial-card .review-right-bx{
    width: 70%;
    /* margin-left:auto; */

}
.testimonials .swiper-wrapper{
    padding-bottom: 20px;
}

.testimonials .tt-50{
    transform: translate(0px, -50px)!important;
}

.ptb-80{
    padding-top: 80px;
    padding-bottom: 80px;
}

.default-padding {
    padding-top: 100px;
    padding-bottom: 0px;
}
.bg-linear1 {
    background: linear-gradient(90deg, #FE4601 0%, #FF936B 100%);

    width: 98%;
    margin: auto;
    border-radius:30px 30px 0px 0px;
}






.process-area {
    display: flex;
    justify-content: space-between;
    align-items: center
}

.carousel-item .review-txt,.process-area>div,.star-bx .review-txt,.why-us-content-bx {
    align-items: center;
    display: flex;
    justify-content: space-between
}

.process-area>div {
    width: calc(14.5% - 10px);
    flex-flow: column
}

.process-item img {
    width: 70px
}

.process-area>div p {
    font-weight: 400;
    padding-top: 30px;
    font-size: 18px
}

.arrow-up img {
    width: 55px;
    margin-top: -58px
}

.bg-light {
    background: #fff!important
}


.why-us-items-section ol {
    display: flex
}

.why-us-items-section ol li {
    transition: .5s!important
}

.why-us-item-bx img {
    width: 100%;
    object-fit: cover;
    height: 100%;
    object-position: center
}

.first-content .why-numbers {
    font-size: 100px;
    font-weight: 700;
    color: #ff5a05;
    color: transparent;
    opacity: 0.8;
    -webkit-text-stroke: 1px #FE4601;

}

.first-content {
    display: flex;
    align-items: center;
    max-width: 175px;
}

.first-content h3 {
    margin: 0;
    font-size: 17px;
    padding-left: 22px;
    font-weight: 400
}

.why-us-item-bx {
    height: 175px
}

.right-para {
    max-width: 488px;
}

p.fris-para {
    margin: 0;
    padding-top: 10px;
    font-size: 15px
}

.border-2 {
    border-width: 2px!important
}

.hover-tabs-list a {
    background: unset;
    color: #fff!important;
    font-size: 23px;
    font-weight: 4500;
    margin: 2px 0;
    transition: .7s
}

.nav-pills .show>.nav-link,.nav-tab .nav-pills .nav-link.active {
    color: #fff;
    background-color: unset
}

.hover-tabs-list a img {
    width: 30px;
    transition: .7s
}

.hover-tabs-list a:hover,.hover-tabs-list a:hover img {
    margin-left: 10px
}

.tab-results {
    display: flex;
    justify-content: center
}

.tab-results .image {
    width: 100%;
    object-fit: cover;
    margin: auto;
    display: block;
    position: relative;
    height: 450px
}

.why-us-items-section ol li {
    width: calc(15% - 10px);
    margin: 0 10px
}

.why-us-items.active,.why-us-items:hover {
    width: 55%
}

.why-us-items.active .fris-para,.why-us-items.active .right-para,.why-us-items:hover .fris-para,.why-us-items:hover .right-para {
    display: block!important
}

.desk-none,.fris-para {
    display: none
}





.why-us-items-section ol li {
    width: calc(15% - 10px);
    margin: 0 10px
}

.why-us-items.active,.why-us-items:hover {
    width: 55%
}

.why-us-items.active .fris-para,.why-us-items.active .right-para,.why-us-items:hover .fris-para,.why-us-items:hover .right-para {
    display: block!important
}


/* ============== footer form */

.form-container {
    border-radius: 1rem;
    overflow: hidden;
    width: 100%;
    padding: 0px 80px;
}
/* .form-image {
    background: url('../img/home/cta.png') no-repeat center center;
    background-size: cover;
    border-radius:50px;
} */
.form-content {
    padding: 0px 40px;
    position: relative;
    /* padding-left: 150px; */
}
/* clamp, not a flat 70.2px: the !important here outranks every plain
   `.form-content h1` size in responsive.css, so a fixed value simply ran
   "READY TO COLLABORATE?" off the edge of the panel on tablets and phones.
   The clamp keeps the Figma size on desktop and scales below it. */
.form-content h1 {
    font-weight: bold;
    color: white;
    font-size: clamp(26px, 5vw, 70.2px) !important;
    line-height: 100%;
    letter-spacing: 0px;
    text-align: center;
    margin-bottom: 20px !important;
}
.form-content p {
    color: white;
    letter-spacing: 7.2px !important;
    font-size: clamp(14px, 2.2vw, 21.6px) !important;
    font-weight: 500;
    margin-bottom: 50px !important;
    text-align: center;
    line-height: 30.6px !important;
}
.form-container .form-control {
    border: 1px solid white;
    color: white;
    border-radius: 8px;
    margin-bottom: 15px;
    font-size: 14px;
    background: #FF6D36;
}
.form-container .form-control::placeholder {
    color: white;
}
.btn-submit {
    background: white;
    color: #FE4601;
    font-weight: bold;
    padding: 10px 70px;
    margin: 40px auto;
    height: 47px;
    font-size: 19px;
    border-radius: 10px;
    display: table;
}
.btn-submit:hover {
    background: #f1f1f1;
}


/* =============== Clients-css ============= */

.company-design-area h2 {
    text-transform: uppercase;
    font-size: 20px;
    text-align: center;
      font-family: 'SF Pro Display' !important;
    line-height: 29px;
    color: #fff;
    margin-bottom: 55px;
    letter-spacing: 12px;
    font-weight: 500;
}



.scroller__inner {
    padding-block: 16px;
    padding-block: 1rem;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    gap: 80px;
    gap: 5rem;
}

.scroller__inner img {
    margin-right: 30px;
    height: 35px;
}

.scroller[data-animated="true"] {
    overflow: hidden;
    -webkit-mask: -webkit-linear-gradient(left,
        transparent,
        white 20%,
        white 80%,
        transparent);
    mask: linear-gradient(90deg, transparent, white 20%, white 80%, transparent);
}

.scroller[data-animated="true"] .scroller__inner {
    width: -webkit-max-content;
    width: -moz-max-content;
    width: max-content;
    -ms-flex-wrap: nowrap;
        flex-wrap: nowrap;
    -webkit-animation: scroll var(--_animation-duration, 40s) var(--_animation-direction, forwards) linear infinite;
            animation: scroll var(--_animation-duration, 40s) var(--_animation-direction, forwards) linear infinite;
}

.scroller[data-direction="right"] {
    --_animation-direction: reverse;
}

.scroller[data-direction="left"] {
    --_animation-direction: forwards;
}

.scroller[data-speed="fast"] {
    --_animation-duration: 20s;
}

.scroller[data-speed="slow"] {
    --_animation-duration: 60s;
}


.scroller{
    height: auto!important;;
}
@-webkit-keyframes scroll {
    to {
        -webkit-transform: translate(calc(-50% - 0.5rem));
                transform: translate(calc(-50% - 0.5rem));
    }
}

@keyframes scroll {
    to {
        -webkit-transform: translate(calc(-50% - 0.5rem));
                transform: translate(calc(-50% - 0.5rem));
    }
}



/* =================== Let's Cta ============= */


.lets-cta-section .banner-one-item h4 {
    border: none;
    padding: 0;
    background: linear-gradient(90deg, #FE4601 0%, #FF936B 100%);
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  display: inline-block;
}

.lets-cta-section  .banner-one-item h2 strong{
    float: left;
}

.float-right{
    float: right;
}

.lets-cta-section .up-arrow {
    height: 110px;
    width: 110px;
    border: 1px solid #fff;
    border-radius: 100%;
    display: flex
;
    padding: 30px;
    align-items: center;
    justify-content: center;
    right: 35%;
    bottom: -49px;
    position: absolute;
}


.lets-cta-section .banner-one-item img {
    position: unset;
  
}

.footer-para {
    font-size: 48px;
    line-height: 1;
    margin-top: 20px;
    color: #828282 !important;
    margin-bottom: 40px;
}
.footer .logo img {
    width: 101.89px;
}
.footer-para span{
    color:#FE4601;
    display: inline-block;
}

.social-icons a i {
    color: white;
    font-weight: normal;
    background: #403E44;
    margin: 0px 5px;
    border-radius: 50px;
    font-size: 15px;
    height: 30px;
    width: 30px;
    display: flex
;
    justify-content: center;
    align-items: center;
}

.social-icons {
    display: flex
;
}

.import-list li a {
    color: #CCCCCC;
    font-size: 14px;
    font-weight: normal;
}
ul.import-list li {
    margin: 15px 0px;
}

.footer h5 {
    font-size: 20px;
    font-weight: 700;
    margin-bottom: 30px;
    color: #ffffff;
}

.footer .news-para{
    font-size:14px;
    color:#CCCCCC;
}
.news-emailbx{
    position: relative;
}
.news-emailbx input {
    height: 35px !important;
    border-radius: 50px;
    padding-left: 15px;
    font-size: 13px;
    width: 100%;
}   

.news-emailbx button {
    height: 40px;
    width: 40px;
    border-radius: 50px;
    background: linear-gradient(90deg, #FE4601 0%, #FF936B 100%);
    background: #FE4601;
    padding: 0;
    display: flex
;
    align-items: center;
    justify-content: center;
    position: absolute;
    right: 7px;
    top: 5px;
}

.news-emailbx button i {
    transform: rotate(-39deg);
    margin-left: 5px;
    font-weight: normal;
}

/* Newsletter signup — the honeypot is hidden from people (a bot filling it in
   is how the API spots a script), and the reply line sits under the field. */
.news-emailbx .news-hp {
    position: absolute;
    left: -9999px;
    width: 1px;
    height: 1px !important;
    opacity: 0;
    pointer-events: none;
}

.news-emailbx button:disabled {
    opacity: .75;
    cursor: default;
}

.news-msg {
    margin: 10px 0 0;
    font-size: 12.5px;
    line-height: 1.5;
}

.news-msg.is-ok {
    color: #7BE3A6;
}

.news-msg.is-err {
    color: #FF9A85;
}

.job-tab-section .nav {
    border-top: 1px solid #ffffff3d;
    border-bottom: 1px solid #ffffff3d;
    margin-top: 100px;
    display: flex;
    justify-content: center;
    align-items: center;
}

.job-tab-section .nav .active{
    font-size: 50px;
    background: transparent;
    padding: 0;
    margin-right: 40px;
    background: linear-gradient(90deg, #FE4601 0%, #FF936B 100%);
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
    display: inline-block;
}

.job-tab-section .nav button{
    font-size: 50px;
    background: transparent;
    padding: 0;
    margin-right: 40px;
}
.job-tab-section button::after{
    position: unset;
}

.job-tab-section .content {
    /* padding: 2rem; */
    color:#A8A8A8;
}
.job-tab-section .learn-more {
    display: flex
;
    align-items: center;
    justify-content: space-between;
    padding-top: 20px;
    padding-bottom: 15px;
    border-bottom: 1px solid #ffffff47;
}
.job-tab-section .learn-more span {
    font-size: 18px;
    color: white;
}

.job-tab-section .content h2{
    font-size: 30px;
    margin-top: 80px;
    /* padding-left: 20px; */
}

.job-tab-section .job-description-list{
    list-style-type: disc;;
    padding-left: 30px;;
}

.job-tab-section .job-description-list li{
    list-style-type: disc;;
}
.job-description-list .content .year-title{
    font-size: 20px;
    font-weight: 600;;
}

.position-main-bx{
    max-width: 1100px;
    margin:auto;
}
.position-main-bx .content {
    width: 45%;
    padding: 30px;
    border: 1px solid #ffffff42;
}


.position-main-bx .position-img{
    width:55%;
}


.view-more{
    padding:10px 20px;
    background-color: none;
    border:1px solid #FE4601;
    color:#FE4601;
    border-radius: 0;
    font-size: 16px;
    font-weight: normal;
    margin:auto;
    display: table;
}


.view-more:hover{
    color:#FE4601;

}

.job-tab-section .card{
    padding:0;
    background:none;
}

.career-hero-section{
    background-image: url(../img/careers/hero.webp);
    height: 550px;
    width:100%;
    background-size: cover;
    margin-top: 50px;;

}

.journey-seciton h2 strong{
    float: left;
}

.card_section {
    padding: 0px 20px;
}

.container.card_section .card {
    border-radius: 0;
    /* overflow: hidden; */
    border: none;
}


.card_section .card-body2 {
    background: #1d1d1d;
    color: white;
    font-size: 30px;
}
.card_title {
    font-size: 40px;
    margin-top: 10px;
}
.card_section .card-body1 {
    background: #1d1d1d;

    color: white;
    font-size: 30px;
}
.container.card_section .card img {
    object-fit: cover;
    height: 390px;
}

.v-heading {
    text-transform: uppercase;
    font-size: 40px;
    text-align: center;
    color: #fff!important;
    /* margin-bottom: 40px; */
    /* letter-spacing: 5px; */
    font-weight: 500;
    
}

.working-bx-3{
    display: flex;
    justify-content: space-between;
}
.working-bx-3 > div{
    width:calc(33.33% - 10px);
    height:380px;
    border: 1px solid;
    border-image: linear-gradient(90deg, #FE4601 0%, #FF936B 100%);
    border-image-slice: 1;
    display: flex;
    justify-content: center;
    align-items: center;
    text-align: center;

}
.working-bx-3 > div h2{
    font-size: 40px;
    color:white;
    background: linear-gradient(90deg, #FE4601 0%, #FF936B 100%);
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
}

.employee_section h2 {
    color: #fff;
    font-size: 60px !important;
    font-weight: normal !important;
    /* padding-top: 30px; */
}

.emp-row {
    display: flex
;
    align-items: center;
    justify-content: space-between;
}

.emp-row > div {
    width: calc(20% - 10px);
    position:relative;
}

.employee_card {
    text-align: center;
    padding: 0px;
    /* background-color: #fff; */
    /* border-radius: 10px; */
    /* box-shadow: 0 0 10px rgba(0, 0, 0, 0.1); */
}

.employee_card img {
    margin-bottom: 20px;
    width: 100%;
    height: 350px;
    object-position: center;
    object-fit: cover;
}
.employee_card h5 {
    font-size: 20px;
    margin-bottom: 0px;
    text-align: left;
    padding: 8px;
    padding-left: 0px;
}

.employee_card h6 {
    font-size: 14px;
    text-align: left;
    font-weight: 400;;
    color:#838383;
    /* padding-left: 20px; */

}
.employee_card p {
    font-size: 16px !important;
    color: #A8A8A8;
    /* padding: 20px; */
    text-align: left;
    margin-bottom: 10px;
    padding-bottom: 0;
    height: 191px;
    margin-top: 20px;
    padding-top: 0;
}

.quote-bx {
    position: absolute;
    top: 49%;
    left: -3px;
    height: 50px;
    width: 50px;
    background: #FE4601;
    border-radius: 50px;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 14px;
}



.blog-hero-section{

    background-image: url(../img/blog/hero.webp);
    height: 550px;
    width:100%;
    background-size: cover;

}

.blog-style-one .button-regular {
    margin-top: 5px;
    color: white;
}

.blog-area .item{
    background-color: unset!important;
}


.blog-area.single .item .blog-item-box .meta li i {

    background: linear-gradient(90deg, #FE4601 0%, #FF936B 100%);
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
    display: inline-block;
}

.blog-content .info h4 a{
    color:white;
}

.desktop-none{
    display: none;
}

.our-work-heading {
    font-size: 260px;
    font-weight: bolder;
    -webkit-text-stroke: 1px var(--white);
    color: transparent !important;
    opacity: 0.8;
    text-align: center;
    padding: 70px 0px;
        font-family: "Manrope", sans-serif!important;
}
.our-work-sub {
    font-size: 22px;
    color: white;
    font-weight: bold;
    text-transform: uppercase;
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    letter-spacing: 5px;
}

.our-work-hero{
    position: relative;
}


.work-area .image-container {
    position: relative;
    text-align: center;
    color: white;
}
.work-area  .image-container img {
    width: 100%;
    height: auto;
}
 .image-text {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    font-size: 2rem;
    font-weight: bold;
    color:white;
}

.blog-area.blog-grid-colum .thumb img {
    border-radius: inherit;
    margin-bottom: 30px;
    height: 308px;
    object-fit: cover;
}

.dash-img img{
    width:100px!important;
    height:100px!important;

}

.blog-item-box .thumb img{
    width:100%;
    object-fit: cover;
}

.blog-lists .thumb img {
    border-radius: 10px 10px 0 0;
    height: 308px;
    object-fit: cover;
    margin-bottom: 20px;
}

.blog-item-box .or-list{
    margin-bottom: 25px;
    margin-top: 25px;
    list-style: disc;
    padding-left: 20px;
}

.blog-item-box .or-list li{
    list-style: disc;
}



.blog-item-box tbody, td, tfoot, th, thead, tr {
    border-color: inherit !important;
    border-style: solid !important;
    border-width: 1px !important;
    padding: 7px !important;
}

.main-nav .navbar{
    background: linear-gradient(90deg, #FE4601 0%, #FF936B 100%)!important;
    position: fixed;
    top: 0;
 }
 .main-nav ul.navbar-nav li {
    margin: 0px 0px 0px 0px;
}

.main-nav nav.navbar ul.nav>li>a {
    padding: 5px 15px!important;
}
.main-nav .navbar-brand>img{
    height: auto;
}
.main-nav .navbar-nav.navbar-left .input-group {
    padding-top: 0px;
}

.main-nav .breadcrumb-item {
    position: relative;
    padding: 0px 0;
    padding-top: 0px;
}

.main-nav .btn.btn-icon, .navbar .navbar-nav>a.btn.btn-icon {

    padding: 0 !important;

}

.main-nav button, input, select, a {
    font-weight: normal;
}

.block-header .form-control[type=file] {
    line-height: 2.4;
}



#editor .codex-editor:first-child{
    display: none;
}


#editor .ce-block__content{
    margin: unset!important;
}

.blogs-heading{
    font-size: 30px;
    font-weight: bold;
}


.block-header li.breadcrumb-item .active {
    color: #f96332;
}

.block-header h2 {
    font-size: 24px!important;
}
.block-header li.breadcrumb-item a {
    color: #00000091;
    font-size: 14px;
}


.block-header .table .btn-primary {
    padding: 10px !important;
    border-radius: 5px;
}
.block-header .delete-btn {
    background-color: #546e7a !important;
    background: linear-gradient(90deg, #546e7a 29%, #546e7a 95%);
}

.strap-section {
    background: linear-gradient(90deg, #FE4601 0%, #FF936B 100%);
    height: 72px!important;
    display: flex;
    justify-content: center;
    align-items: center;
    margin: 0;
    overflow: hidden;
}
.strap-section .text-container {
    color: white;
    font-size: 32px;
    font-weight: 400;
    white-space: nowrap;
    padding: 0;
}
.strap-section .dot {
    font-size: 70px;
    line-height: 0;
}

.strap-section .scroller__inner {
    gap: unset;
}

.strap-section[data-animated="true"]{
    mask:unset!important
}

.mtb-80{
    margin-top: 80px;
    /* margin-bottom: 80px; */
}
.main-class .bg-linear{
    background: linear-gradient(90deg, #FE4601 0%, #FF936B 100%);
    border-radius: 60px;
}

.main-class .testimonial-card .review-right-bx {
    width: 66%;
    margin-left: auto;
}
.review-left-bx img {
    width: 100%;
}

.testimonial-card .review-main-img {
    position: absolute;
    top: 50%;
    left: 50%;
    height: 253px;
    transform: translate(-50%, -50%);
}
.main-class .form-section .bg-linear {
    background: linear-gradient(90deg, #FE4601 0%, #FF936B 100%);
}
.main-class .form-content {
    padding: 2rem;
    padding-left: 50px;
}
.main-class .testimonial-card p {
    font-size: 12px;
}



/* ============================= Faq css ===================== */


.faq-section .accordion-button {
    background-color: #1D1D1D;
    font-size: 24px;
    color: white;
}
.faq-section .accordion-button:focus {
    box-shadow: none;
}
.faq-section .accordion-button:not(.collapsed) {
    color: white;
    background-color: #1D1D1D;
    padding-bottom: 0;
}
.faq-section .accordion-item {
    border:none
}
.faq-section .text-orange {
    padding: 0;
    background: linear-gradient(90deg, #FE4601 0%, #FF936B 100%);
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
    display: inline-block;
    font-size: 32px;
    font-weight: 400;
    margin-bottom: 0;;
}

.faq-section .accordion-body {
    background: #1D1D1D;
}

.faq-section .fs-24{
    font-size: 24px;;
}

.faq-section .display-4{
    font-size: 40px!important;
    font-weight:normal!important;
}






.marquee-content {
  
    animation: marquee 10s linear infinite;
}

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

.seo-hero-content h1 {
    font-size: 60px;
    text-align: center;
    font-weight: lighter;
}

.seo-hero-content p{
    text-align: center;
    max-width: 800px;
    margin: 30px auto;
    color: white;

}

.core-task-bg{
    /* The exported artwork is the old indigo #5A57FB. Rather than swap the
       asset (that would be a design change), it is tinted toward the site's
       #0E0920 so the band sits in the same palette as everything around it. */
    background-image:
        linear-gradient(rgba(14, 9, 32, 0.8), rgba(14, 9, 32, 0.8)),
        url(../img/seo/core-task.webp);
    width: 100%;
    height: auto;
}

/* .seo-hero-img {
    position: relative;
    height: 377px; 
    overflow: hidden;
} */

.seo-hero-content {
    padding-bottom: 20px;
}

.seo-hero.about-section1 {
    padding-bottom: 100px;
}

/* 
.seo-hero-img {
  width: 100%;
  aspect-ratio: 5 / 1; 
  overflow: hidden;
  display: flex;
  justify-content: center;
  align-items: flex-start;
  position: relative;
}

.seo-hero-img img {
  width: 100vw; 
  height: auto;
  aspect-ratio: 1 / 1;
  border-radius: 50%;
  animation: rotateCircle 200s linear infinite;
  position: relative;
 top: -413% 
}


@keyframes rotateCircle {
  0% {
    transform: rotate(0deg);
  }
  100% {
    transform: rotate(360deg);
  }
} */




.seo-hero-img {
  width: 100%;
  aspect-ratio: 5 / 1; 
  overflow: hidden;
  display: flex;
  justify-content: center;
  align-items: flex-start;
  position: relative;
}


.seo-hero-img img {
  width: 100vw; 
  height: auto;
  aspect-ratio: 1 / 1;
  border-radius: 50%;
  animation: rotateCircle 200s linear infinite;
  
  position: absolute;
  top: -413%;
  left: 50%;
  /* Remove transform from here */
}

/* Combine rotate and translateX inside keyframes */
@keyframes rotateCircle {
  0% {
    transform: translateX(-50%) rotate(0deg);
  }
  100% {
    transform: translateX(-50%) rotate(360deg);
  }
}



.core-content h1{
    font-size:40px;
    color: white;
    text-align: center;


}
.core-content p {
    color: white;
    text-align: center;
    max-width: 800px;
    margin: 0px auto;
    padding-top: 25px;
}

.core-bx h2{
    font-size: 18px;
}

.core-bx > p{
    font-size: 13px;
    color: #666666;
    max-width: 798px;
    margin: auto;
}

.core-bx h2 {
    font-size: 18px;
    color: black;
}

.core-bx {
    background-color: white;
    border-radius: 8px;
    padding: 10px;
    text-align: center;
    height: 274px;
}

.ptb-100{
    padding-top: 100px;
    padding-bottom: 100px;
}


/* ================ process csss--------------- */

.step-box-orange {
    background-color: #FE4601;
}

.step-box {
    /* background-color: #FE4601; */
    border-radius: 10px;
    padding: 15px;
    border:2px solid #FE4601;
}
.step-box h2 {
    color: #FE4601;
    font-size: 20px;
    font-weight: 800;
    margin-bottom: 5px;
}

.step-box-orange h2 {
    color: white;
}

.process-btn {
    background-color: #5138EE;
    color: white;
    border-radius: 50px;
    width: 250px;
    letter-spacing: 2px;
    font-size: 16px;
    padding: 10px 30px;
    font-family: 'Manrope';
}

.process-section .process-heading {
    color: #FE4601;
    line-height: 1;
    font-size: 40px;
    font-weight: 500;
}

.process-section .step-box p{
     font-size: 14px;
     font-weight: 400;
     color: white;
     margin-bottom: 0;
     line-height: 20px;
}

.step-box .width-20{
    width:12%;
    margin-right: 5px;;
}

.step-box .width-80{
    width:88%;
}

.steps-bxx {
    display: flex;
    align-items: center;
}

.main-d-flex .step-number{
    width:10%;
    margin-right: 40px;
    position: relative;
}

.main-d-flex .step-box{
    width:90%;
}


.nubmer-lists li{
    font-size: 30px;
    font-weight: bold;
    height: 62px;
    display: flex;
    color: white;
    align-items: center;
    width:62px;
    justify-content: center;
    background-color: #5138EE;
    border-radius: 50px;
    z-index: 100;
    position: relative;
}
.main-d-flex{
    align-items: center;
}
/* 
.main-d-flex .step-number::before {
    content: '';
    position: absolute;
    height: 154px;
    border: 1px solid #ffffff;
    left: 50%;
    bottom: -44px;
    z-index: -1;
} */

.max-500{
    max-width: 500px;
}

.significance-content h1{
        font-size: 40px;
        color: white;
        text-align: center;
}

.significance-content p{
    color: white;
    text-align: center;
    max-width: 800px;
    margin: auto;
}


.significance-section{
background: linear-gradient(90deg, #FE4601 0%, #FF936B 100%);
width: 100%;;
}


.significance-row {
    display: flex;
    justify-content: space-between;

}

.significance-row > div{
    display: flex;
    width: calc(20% - 15px);
    padding: 15px;
    background: white;
    flex-flow: column;
    border-radius: 18px;
    text-align: center;
    align-items: center;
    justify-content: center;
}

.significance-row > div h2{
    font-size: 21px;
    color:#1D1D1D;
    margin-bottom: 10px;
    font-weight: 500;
}

.significance-row > div p{
    font-size: 14px;
    color:#666666;
    margin-bottom: 0;
}




/* ============== 5solid reasons css===== */


.solid-reasons-section .process-heading {
    color: #FE4601;
    line-height: 1;
    font-size: 40px;
    font-weight: 500;
}

.solid-reasons-section .why-c-heading{
    font-size: 50px;
    font-weight: 400;
    color: white;
}
.reasons-bxx h3 {
    color: #FE4601;
    font-size: 24px;
    margin-bottom: 5px;
}

.reasons-bxx p{
    font-size: 16px;
    color: white;
    font-weight: lighter;
    margin-bottom: 0;
}

.check-img-bx img{
    width: 26px;
    margin-top: 4px;
    margin-right: 20px;
}
.check-img-bx > li{
    align-items: flex-start;
}

.about--bx .text-first{
    font-size: 16px;
    color:#5138EE;
    font-weight: bold;
    margin-bottom: 0;
}

.about--bx{
    padding:20px;
    border-radius: 8px;
    height: 260px;
    display: flex;
    flex-flow: column;
    justify-content: center;
}

.about--bx .text-second{
    color:#202942;
    font-size: 35px;
    font-weight: bold;
    line-height: 1;
    margin-top: 10px;
}

.solid_reason-bx .process-btn {
    background-color: #5138EE;
    color: white;
    border-radius: 50px;
    width: 220px;
    letter-spacing: 1px;
    margin-top: 15px;
    font-weight: 400;
    font-size: 14px;
    padding: 7px 20px;
    font-family: 'Manrope';
}
.solid-reasons-section .mt-45 {
    margin-top: -163px;
}

.pattern-img img {
    position: absolute;
    top: -77px;
    z-index: -1;
    left: 32%;
}

.z-in{
    z-index:1;
    position: relative
}

.pl-70{
    padding-left: 70px;
}

.about-section1 .image-column {
    position: relative;
    margin-bottom: 35px;
    margin:auto;
}

.about-section1 .image-column .inner-column {
    position: relative;
    padding-right: 110px;
}

.about-section1 .image-column .image-1 {
    position: relative;
    border-radius: 10px;
    overflow: hidden;
    margin-bottom: 0px;
}

/* .about-section1 .image-column .image-2 {
    position: absolute;
    right: 34px;
    top: 97px;
    margin-bottom: 0;
    border-radius: 10px;
    overflow: hidden;
    height: 195px;

    width: 180px;
 
} */


.about-section1 .image-column .image-2 {
    position: absolute;
    transform: translate(-50%, -50%);
    right:-34px;
    top: 50%;
    margin-bottom: 0;
    border-radius: 10px;
    overflow: hidden;
    height: auto;
    /* border: 5px solid #ffffff; */
    width: 180px;
    /* -webkit-box-shadow: 0 10px 60px rgba(0, 0, 0, 0.1); */
    /* box-shadow: 0 10px 60px rgba(0, 0, 0, 0.1); */
}
.about-section1 .image-column .image-1 img {
    width: 100%;
    height: auto;
    object-fit: cover;
}

figure.image-2 img {
    width: 100%;
    object-fit: cover;
    height: auto;
}
.process-section .mtb-80{
    margin-top: 0;
    margin-bottom: 100px;
}



.blog-area .single-item {
    margin-bottom: 0px!important;
}
.blog-area ul {
    list-style: none!important;
}
.blog-area .item:last-child {
    margin-bottom: 0;
}

.blog-area .item {
    background: transparent!important;
    margin-bottom: 30px;
    box-shadow: 1px 4px 20px -2px rgb(0 0 0 / 10%);
    border-radius: 8px;
}

.blog-area .thumb img {
    border-radius: 8px 8px 0 0;
}

.blog-area .item .info {
    padding: 30px;
    background-color: white;
}

.blog-area .item .info .meta {
    margin-bottom: 15px;
}

.blog-area .item .info .meta ul li {
    font-size: 14px;
    display: inline-block;
    margin-right: 20px;
    text-transform: capitalize;
    font-weight: 500;
}

.blog-area .item .info .meta ul li a {
    color:#666666
    ;
    
    font-weight: 500;
}

.blog-area .item .info .meta ul li i {
    margin-right: 5px;
    color: #8668FF;
    font-weight: 3;
    font-size: 17px;
    position: relative;
    top: 1px;
}

.blog-area .item .info h4 a {
    line-height: 1.4;
    font-weight: 900;
}

.blog-area .item .info h4{
    font-size: 20px;
}

.blog-area .item .info p:last-child {
    margin-bottom: 0;
    color:#666666
}

.blog-area .thumb .date {
    position: absolute;
    right: 45px;
    bottom: -25px;
    margin: 0;
    border-radius: 8px;
    padding: 0;
    font-weight: 900;


}

.blog-area .meta li {
    display: inline-block;
    margin-right: 20px;
    position: relative;
    z-index: 1;
    font-weight: 500;
    color: #ffffff;
}

.blog-area ul li {
    list-style: none !important;
}

.blog-area .thumb .date strong {
    /* padding: 10px 5px; */
    display: inline-block;
}

.blog-area .item .date span {
    display: block;
    font-size: 14px;
        background: #8668FF;
    color: white;
    padding: 0 19px;
    border-radius: 0 0 8px 8px;
    min-width: 70px;
}

.blog-area .thumb .date {
    position: absolute;
    right: 45px;
    bottom: -25px;
    margin: 0;
    border-radius: 8px;
    padding: 0;
    font-weight: 900;

}

.blog-area .item .date {
    display: inline-block;
    background:white;
    /* padding: 5px 25px; */
    color: #202942;
    text-transform: uppercase;
    font-size: 24px;
    font-weight: 900;
    /* margin-bottom: 15px; */
    text-align: center;
    box-shadow: 0 0 10px #cccccc;
}

.bg-dark .blog-area .meta li::after {
    background: #cccccc;
    display: none;
}



.devider {
    background: #FE4601!important;
}
.devider {
    display: inline-block;
    width: 50px;
    height: 3px;
    position: relative;
    z-index: 1;
    left: 10px;
    margin: auto;
    display: block;
}





/* ============================  Social Media  Marketing csss============= */

.smm-hero-section {
    margin-top: 50px;
}

.smm-hero-section img{
    width:100%;
    object-fit: cover;
    height: 600px;
}

.our-work-row{
    display: flex;
    justify-content: space-between;
    flex-wrap: wrap;

}

.our-work-row > div{
    width: calc(20% - 10px);
    /* margin-bottom: 15px; */


    
}

.our-work-row > div img{
    width: 100%;
    object-fit: cover;
}

.blur-shape{
    position: absolute;
    width: 350px;
}

.banner-one-item img {
    position: absolute;
    right: 11%;
    top: 73%;
    width: 91px;
}
.mt-15{
    margin-top: 15px;;
}

.accordion-portfolio-lists{
    padding-bottom: 0!important;
}

.blog-area .site-heading {
    margin-bottom: 50px;
}

.instagram-section  video{

    width:100%;
    border-radius: 18px;
}


.new-mute-btn {
    backdrop-filter: blur(4px);
    border: 1px solid #ccc;
  }
  
  .mute-toggle-button{
    line-height: 0;
  }

  .testimonials .pt-80{
    padding-top: 80px!important
    ;
  }


  /* ------------------------ Logo Design -------------------------- */

  .about-section2 .seo-hero-content {
    padding-bottom: 50px;
}

/* 
.col-lg-6.mt-5.mt-lg-0::before {
    content: '';
    position: absolute;
    height: 100%;
    border: 1px solid #ffffff;
    left: 7%;
    bottom: 0;
    
    
} */
.nubmer-lists::before {
    content:'';
    position:absolute;
    /* border:1px solid #ddd; */
    height: 300px;
    width: 1px;
    background: white;
    top: -100px;
    left: 50%;
    z-index: 0!important;
}
.col-lg-6.mt-5.mt-lg-0{
    position:relative;
}


ul.dropdown-menu li a {
    color: black !important;
    font-size: 14px!important;
}

.dropdown:hover .dropdown-menu{
    display: block;
}

ul.dropdown-menu  li {
    margin-left: 0;
    padding: 0!important;
}

.dropdown > a i{
 margin-left: 5px;
}


.navbar-nav .dropdown-menu {
    min-width: 260px!important;
    padding: 15px 10px!important;
    border-radius: 0px 0px 4px 4px!important;
}



.redirect-arrow {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 5px 30px;
    border-radius: 6px;
    background: #ffffff29;
    margin-top: 12px;
    border: 1px solid #fff;
}

.redirect-arrow h2{
    font-size: 18px;
    font-weight: 400!important;
}

.redirect-arrow a i {
    font-size: 18px;
}


.accrdion-portfolio-area .out .accordion-overlay .redirect-arrow {
    opacity: 1;
    visibility: visible;
    transform: translateY(0);
    transition-delay: 0.30s;
}

.redirect-arrow  {
    
    opacity: 0;
    visibility: hidden;
    transform: translateY(25px);

}

.redirect-arrow a {
    display: inline-block;
    height: 35px;
    background: #1D1D1D;
    width: 35px;
    text-align: center;
    line-height: 0.8;
    border-radius: 50%;
    margin-top: 0px;
    opacity: 0;
    visibility: hidden;
    transform: translateY(25px);
    font-size: 30px;
    border: 2px solid rgba(255, 255, 255, 1);
}


/* The ellipse artwork is 702x493 and is anchored so its arc breaks out to
   the left of the copy column, as in Figma. z-index 0 (not -1) keeps it on
   the coral panel rather than behind it; the copy above sits on z-index 1. */
img.shape.p-absolute {
    position: absolute;
    width: 776px;
    height: auto;
    z-index: 0;
    transform: translate(-50%, -50%);
    left: 50%;
    top: 50%;
    pointer-events: none;
}

@media (max-width: 1399px) {
    img.shape.p-absolute {
        width: 600px;
        left: -150px;
        top: -14px;
    }
}

@media (max-width: 991px) {
    /* No collage beside the copy any more, so keep the arc inside the panel. */
    img.shape.p-absolute {
        width: 118%;
        left: -9%;
        top: 0;
    }
}

.form-content > h1,
.form-content > p,
.form-content .vl-form,
.form-content .vl-done {
    position: relative;
    z-index: 1;
}
  
  /* .parallax-container {
    height: 300vh;
  } */
  
  /* .parallax-section {
    position: sticky;
    top: 0;
    height: 100vh;
    z-index: 10;
  } */
  


  .review-left-bx{
    width: 30%;
    position: relative;
  }


.blur-shape {
    position: absolute;
    width:auto;
    top: 20%;
}

#home .banner-one-item h2 strong {

    float: unset;
    text-align: center;
    display: block;
}




.faq-section .accordion-button::after {
    display: none;
  }
  
  .faq-section .accordion-button {
    position: relative;
  }
  
  .faq-section .accordion-button::before {
    content: "+";
    position: absolute;
    right: 1.5rem;
    font-size: 1.5rem;
    font-weight: 400;
    color: #ffffff87;
    transition: transform 0.3s ease;
}
  
  /* When accordion is open, show minus */
  .faq-section .accordion-button:not(.collapsed)::before {
    content: "âˆ’";
  }
  footer {
    position: relative;
    z-index: 1;
    border-top: 1px solid #848484;
    border-bottom: 1px solid #848484;
    border-radius: 18px 0px 0px 0px;
    padding-bottom: 30px;
    background-color: #0E0920;
}
  footer .before-bg::before {
    content: '';
    position: absolute;
    width: 450px;
    border-radius: 18px 0px 0px 0px;
    height: 100%;
    top: 0;
    /* background-color: #262525; */
        background-image: /* 49% à¤µà¤¾à¤²à¥€ dark overlay layer */ linear-gradient(rgba(14, 9, 32, 0.49), rgba(14, 9, 32, 0.49)), /* main linear gradient */ linear-gradient(229deg, #FB5C1F 0%, #0E0920 35%, #0E0920 70%, #FB5D1F 100%);
    z-index: -1;
}

.footer-2nd {
    background-color: var(--dark);
}
.footer-2nd p{
    font-size: 14px;
    padding:10px 0px;
    color:#CCCCCC;
    text-align: center;
    margin: 0;
}
.footer-2nd p span a{
 color: #FE4601;
}

.blog-area h2 {
    font-size: 55px !important;
    font-weight: 700 !important;
}


.our-work-primary .banner-one-item img {
    right: -14%;
    top: 47%;
    width: 90px;
}

.seo-core-task .core-bx {
    height: 288px;
}
#email-marketing .about-section1 .image-column .image-2{
    top:54%;
}

#email-marketing .core-bx {
    height: 215px;
}









/* ================================= Logo Hero Swiper ======================== */



.logo-sliders .mySwiper {
  width: 100%;
  /* height: 400px; */
}

.logo-sliders .mySwiper .swiper-slide {
  background-position: center;
  background-size: cover;
  width: 185px;
  height: 450px;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 2rem;
  overflow: hidden;
  transition: transform 0.3s ease;
}

/* .mySwiper .swiper-slide img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  border-radius: 2rem;
} */
.logo-sliders .mySwiper .swiper-slide img {
    width: 185px;
    height: 450px;
    object-fit: cover;
    border-radius: 50px;
}

.logo-sliders .mySwiper .swiper-slide-active img {
    height: auto !important;
    width: 100% !important;
    border-radius: 18px !important;
}
#logo-design .core-bx {
    height: 175px;
}

 









.brand-identity-design .mySwiper .swiper-slide img {
    width: 300px;
    height: auto;
    object-fit: cover;
    border-radius: unset;
}



#product-packaging .core-bx {

    height: 245px;
}












  
  /* Card sizing and spacing */
  .slider-card {
    background: transparent;
    width: 220px;
    height: 320px;
    display: flex;
    flex-direction: column;
    align-items: center;
  }
  

  /* #web-development .swiper-coverflow .swiper-slide {

    padding: 10px;
    border: 1px solid #ffffff6e;
    border-radius: 18px;
    background: linear-gradient(360deg, #b4b4b494 0%, #747070 0%, #ffffff7d 33%, #afafaf 100%);
    backdrop-filter: blur(80px);

} */

/* #web-development .swiper-coverflow .swiper-slide {
  
} */



#web-development .swiper-coverflow .swiper-slide img{
    border-radius: 18px!important;

}
#web-development .core-bx {
    height: 245px;
}
.mx-900{
    max-width: 900px;;
}




.blog-area.full-blog.single .item .info{
    background-color: transparent;
}


#prouduction .about-section1 .image-column .inner-column {
    position: relative;
    padding-right: 0px;
}
#prouduction .core-bx {
    height: 200px;
}

.dash-nav ul.navbar-nav li {
    margin: 0px 0px 0px 70px;
    padding: 0px 0px;
}
.card_section .tabs-row{
    display: flex;
    justify-content: space-between;
}
.card_section .tabs-row > div{
    border: 1px solid #ddd;
    padding: 20px;
    padding-bottom: 0;
    width:calc(50% - 25px);
}

.card_section .tabs-row > div .card_title {
    font-size: 30px;
    margin-top: 10px;
    margin-bottom: 10px;
}


.employee_section span.swiper-pagination-bullet.swiper-pagination-bullet-active::before {
    content: "";
    position: absolute;
    height: 30px;
    width: 30px;
    border: 1px solid #FE4601;
    border-radius: 50px;
    left: 0;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
}
.employee_section .swiper-pagination {
    padding-top: 50px;
}
.employee_section .swiper-pagination .swiper-pagination-bullet{
    height: 10px;
    width:10px;
    background-color: white;
    position:relative;
    margin:0px 10px!important;
}

.employee_section .swiper-pagination-bullet-active{
    background-color:#FE4601 !important;
}

.jobs-hero-section {
    background-image: url(../img/jobs/hero.webp);
    height: 550px;
    width: 100%;
    background-size: cover;
}



 /* .job_description {
      background-color: #1a1a1a;
      color: #d9d9d9;
      font-family: 'Inter', sans-serif;
      padding: 1.5rem 1.5rem;
      max-width: 900px;
      margin: 0 auto;
    } */
    .job_description .date {
      color: #A8A8A8;
      font-size: 20px;
      margin-bottom: 0.5rem;
    }
    .job_description h1 {
      color: #fff;
      font-weight: 400;
      font-size: 40px;
      margin-bottom: 1.5rem;
    }
    .job_description .label {
      font-weight: 600;
      color: #bfbfbf;
    }
    .job_description .info-text {
      color: #bfbfbf;
      font-size: 16px;
      margin-bottom: 0.25rem;
    }
    .job_description h2 {
      color: #fff;
      font-weight: 500;
      font-size: 25px;
      margin-top: 1.5rem;
      margin-bottom: 0.5rem;
    }
    .job_description p,
    .job_description ul {
      color: #bfbfbf;
      font-size: 16px;
      line-height: 1.5;
      margin-bottom: 1.5rem;
    }
    .job_description ul {
      padding-left: 30px;
    }
    .job_description ul li {
      margin-bottom: 0.4rem;
      font-size:16px;
      list-style-type: disc;
    }
   


    .applying-form h2{
        font-size: 40px!important;
        color:white;
        padding-bottom: 15px;
        margin:0;
    }
    .applying-form .mb_5{
        margin-bottom: 5px;;
    }

   
   .applying-form input {
    background: #ffffff12;
    border: 1px solid #E7E7E7;
    color: white;
    border-radius: 4px;
    min-height:45px;
}

   .applying-form input::placeholder{
    color: white;

    
   }


   .applying-form .form-control:focus {
    background-color: transparent;
    outline: 0;
    border-color: #E7E7E7;
    box-shadow: unset;
    color:#fff;
}
   

#cv {
    line-height: 2;
}

   .apply-now-btn{
    font-weight: 600;
    transition: all 0.35s ease-in-out;
    border-radius: 5px;
    font-size: 14px;
    padding: 10px 30px;
    position: relative;
    z-index: 1;
    background: linear-gradient(90deg, #FE4601 0%, #FF936B 100%);
    border: none;
    color: white;
    margin-top: 20px;
}

.applying-form.wpcf7 {

    background: #ffffff12;
    padding: 40px 30px;
}


.overlay-anim:after {
  background: rgba(255, 255, 255, 0.3);
  content: "";
  position: absolute;
  left: 0;
  top: 0;
  width: 100%;
  height: 0;
  opacity: 1;
  z-index: 9;
  pointer-events: none;
}


.overlay-anim:hover:after {
  height: 100%;
  opacity: 0;
  -webkit-transition: all 400ms linear;
  transition: all 400ms linear;
}




/* Base gradient text with animated background */
.working-bx-3 > div h2 {
    background: linear-gradient(90deg, #FE4601, #FF936B, #FE4601);
    background-size: 300% auto;
    background-position: 0% center;
    background-clip: text;
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
    color: transparent;
    transition: transform 0.3s ease, text-shadow 0.3s ease;
}

/* Animate on hover */
.love-working-section .working-bx-3 > div:hover h2 {
    animation: gradientShift 2s ease infinite;
    transform: scale(1.05);
    text-shadow: 0 0 10px rgba(255, 111, 97, 0.6), 0 0 20px rgba(251, 160, 101, 0.4);
}

/* Gradient shifting animation */
@keyframes gradientShift {
    0% {
        background-position: 0% center;
    }
    50% {
        background-position: 100% center;
    }
    100% {
        background-position: 0% center;
    }
}



.choose-us-style-one-thumb a {
    position: relative;
}

.choose-us-style-one-thumb a img {
    transition: transform 0.5s ease; /* Apply transition to the img */
}

.choose-us-style-one-thumb a:hover img {
    transform: rotate(45deg);
}


.news-emailbx button i{
     transition: transform 0.5s ease; /* Apply transition to the img */

}

.news-emailbx button:hover i{
    transform: rotate(4deg);

}

.career-response .pagination{
      display: flex;
  align-items: center;
  justify-content: center;
}

.career-response .circle-btn {
    width: 30px;
    height: 30px;
    border-radius: 50%;
    border: none;
    padding: 0;
        background: #5a57fb;
    color: white;
    display: flex
;
    align-items: center;
    justify-content: center;
    font-size: 18px;
    transition: background-color 0.3s ease;
}
.career-response .circle-btn i{
    margin:0;
}

.career-response .circle-btn:disabled {
  background-color: #cccccc;
  cursor: not-allowed;
}

.career-response .circle-btn:hover:not(:disabled) {
      background-color: #4739d6;

}

.career-response button.download-btn.btn.btn-sm.btn-primary {
    font-weight: normal;
}
.career-response .btn-delete {
    background: transparent;
    color: #5a5a5a;
    padding: 0;
    height: 30px;
    display: flex
;
    justify-content: center;
    width: 30px;
    align-items: center;
    background: white;
    box-shadow: rgba(99, 99, 99, 0.2) 0px 2px 8px 0px;
    padding: 5px;
    border-radius: 50px;
    margin: auto;
}

.career-response .btn-delete i{
    margin:0;
}

.career-response .react-confirm-alert-body h1{
    font-size: 22px;;
}

.react-confirm-alert-body > h1 {
    margin-top: 0;
    font-size: 22px;
    margin-bottom: 10px;
}

.react-confirm-alert-button-group > button {
    outline: none;
    background: #333;
    border: none;
    display: inline-block;
    background: #5a57fb !important;
    padding: 6px 18px;
    color: #eee;
    margin-right: 10px;
    border-radius: 5px;
    font-size: 12px;
    cursor: pointer;
}
.career-response .filters select{
    height: 45px;
}

.career-response .filters input{
    height: 45px;
    min-height: 45px;;
}
.career-response .filters input::placeholder{
    color:#111;
}

.career-response .filters.row.mb-3 {
    background: white;
    padding: 15px 0px;
    border: 1px solid #E3E3E3;
    margin-left: 0;
    margin-right: 0;;
}

.career-response .btn-export {
    background: green;
    padding: 10px 15px !important;
    margin-top: 0;
}

.log-out-btn button{
    background:transparent;
    padding:0;
}


.login-admin .l-cyan {
    /* background: linear-gradient(45deg, #49cdd0, #00bcd4) !important; */
    color: #fff !important;
    background: #5a57fb !important;
    padding: 10px 50px !important;
    font-weight: 500!important;
}


.query-response .btn-delete {
    background: transparent;
    color: #5a5a5a;
    padding: 0;
    height: 30px;
    display: flex
;
    justify-content: center;
    width: 30px;
    align-items: center;
    background: white;
    box-shadow: rgba(99, 99, 99, 0.2) 0px 2px 8px 0px;
    padding: 5px;
    border-radius: 50px;
    margin: auto;
}

.query-response .btn-delete i{
    margin:0;
}


.input-group-addon i{
    color:white;
}

.filters-btns button {
    border-radius: 50px !important;
    height: 45px;
    margin: 0;
}

.filters-btns button i{
 font-size: 19px;;
}

.filters-btns{
    padding-bottom: 7px;;
}

.career-response .table td input{
    border-radius: 4px!important;
}

.table-responsive-custom {
  overflow-x: auto;
  width: 100%;
}

.table-responsive-custom table {
  min-width: 1200px; /* or more based on number of columns */
  white-space: nowrap; /* Prevents text from wrapping in td */
}

.table-responsive-custom th,
.table-responsive-custom td {
  white-space: nowrap;
}


.table-responsive-custom
 .table thead th {
  position: sticky;
  top: 0;
  background-color: white;
  z-index: 10;
}



.contact-us-heading {
    font-size: 270px;
    color: transparent !important;
    text-align: center;
    -webkit-text-stroke: 1px #ffffff99;
    opacity: 0.6;
    font-weight: 500;
}


.contact-sub {
    font-size: 50px;
    color: white;
    font-weight: bold;
    text-transform: uppercase;
    letter-spacing: 5px;
    margin-bottom: 0;
    white-space: nowrap;
}
.our-contact-overlay {
    position: absolute;
    top: 50%;
    left: 50%;
    width: auto;
    transform: translate(-50%, -50%);
}

.contact-hero-content{
    position: relative;
}

.our-contact-overlay p {
    margin-bottom: 0;
    background: linear-gradient(90deg, #FE4601 0%, #FF936B 100%);
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
    display: inline-block;
    font-size: 20px;
    font-family: 'Manrope';
    font-weight: 700;
    letter-spacing: 3px;
}






 .have-questions {
      display: flex;
      flex-wrap: wrap;
      gap: 3rem;
    }
    .have-questions .left,
    .have-questions .right {
      flex: 1 1 400px;
      min-width: 300px;
    }
    .have-questions .subtitle {
      font-size: 20px;
      text-transform: uppercase;
      margin-bottom: 0;
      border: none;
      padding: 0;
      background: linear-gradient(90deg, #FE4601 0%, #FF936B 100%);
      -webkit-background-clip: text;
      -webkit-text-fill-color: transparent;
      display: inline-block;
    }
    .have-questions h1,
    .have-questions h2 {
      font-weight: 800;
      margin-bottom: 2rem;
    }
    .have-questions h1 {
      font-size: 40px;
    }
    .have-questions h2 {
      font-size: 25px;
    }
    .have-questions form input,
    .have-questions form textarea {
      background: transparent;
      border: 1px solid #ccc;
      border-radius: 7px;
      color: #6C757D;
      font-size: 13px;
      padding: 0rem 1rem;
      min-height: 45px;
      height: 45px;
      width: 100%;
      margin-bottom: 15px;
      transition: border-color 0.3s ease;
    }
    .have-questions form input::placeholder,
    .have-questions form textarea::placeholder {
      color: #6c757d;
    }
    .have-questions form input:focus,
    .have-questions form textarea:focus {
      outline: none;
      border-color: #ff6f5b;
      background-color: #fff;
      color: #000;
    }
    .have-questions form textarea {
      resize: none;
      min-height: 150px;
      padding-top: 10px;
    }
    .have-questions .form-row {
      display: flex;
      gap: 1rem;
      flex-wrap: wrap;
    }

    /* The budget select. Styled off the inputs rather than left native, so the
       dark panel does not get a white system control in the middle of it.
       The chevron is a background image because `appearance: none` takes the
       browser's own arrow away with the rest of the styling. */
    .have-questions form .cnt-select {
      -webkit-appearance: none;
      appearance: none;
      background: transparent;
      border: 1px solid #ccc;
      border-radius: 7px;
      color: #6C757D;
      font-size: 13px;
      padding: 0 2.4rem 0 1rem;
      min-height: 45px;
      height: 45px;
      width: 100%;
      margin-bottom: 15px;
      cursor: pointer;
      background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8' fill='none'%3E%3Cpath d='M1 1.5L6 6.5L11 1.5' stroke='%236C757D' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
      background-repeat: no-repeat;
      background-position: right 1rem center;
      transition: border-color 0.3s ease;
    }
    .have-questions form .cnt-select:focus {
      outline: none;
      border-color: #ff6f5b;
    }
    /* The list itself is drawn by the OS, which ignores the dark panel -- give
       it light paper and dark ink so it is legible either way. */
    .have-questions form .cnt-select option {
      color: #1d1d1d;
      background: #ffffff;
    }

    /* Hidden from people, reachable by scripts: anything typed in here marks
       the submit as a bot. Kept out of the tab order and off the screen rather
       than `display: none`, which some bots skip. */
    .have-questions form .cnt-hp {
      position: absolute;
      left: -9999px;
      width: 1px;
      height: 1px;
      min-height: 0;
      opacity: 0;
      pointer-events: none;
    }

    .have-questions form button:disabled {
      opacity: 0.7;
      cursor: default;
    }

    /* Replaces the form once the lead is saved. */
    .have-questions .cnt-thanks h2 {
      margin-bottom: 0.75rem;
      color: #ffffff;
    }
    .have-questions .cnt-thanks p {
      max-width: 420px;
      margin: 0;
      color: #DDDDDD;
      font-size: 15px;
      line-height: 1.6;
      font-weight: 300;
    }
    .have-questions .form-row > * {
      flex: 1 1 0;
      min-width: 150px;
    }
    .have-questions button {
      border: none;
      border-radius: 30px;
      background: linear-gradient(90deg, #FE4601 0%, #FF936B 100%);
      color: #fff;
      font-weight: 500;
      padding: 10px 40px;
      cursor: pointer;
      transition: filter 0.3s ease;
    }
    .have-questions but ton:hover {
      filter: brightness(1.1);
    }
    .have-questions .right h3 {
      font-weight: 500;
      margin-bottom: 0.5rem;
      color: #fff;
      font-size: 18px;
    }
    .have-questions .right p {
      color: #DDDDDD;
      margin-bottom: 1.5rem;
      line-height: 1.4;
      font-size: 14px;
      white-space: pre-line;
      font-weight: 300;
    }
    .have-questions .right hr {
      border-color: #444;
      margin-bottom: 1.5rem;
      border-width: 1px 0 0 0;
    }
    .have-questions .social-icons {
      display: flex;
      gap: .5rem;
      margin-top: 1.5rem;
    }
    .have-questions .social-icons a {
      display: flex;
      align-items: center;
      justify-content: center;
      width: 40px;
      height: 40px;
      background-color: #403E44;
      border-radius: 50%;
      color: #fff;
      font-size: 1.25rem;
      text-decoration: none;
      transition: background-color 0.3s ease;
    }
    .have-questions .social-icons a:hover {
      background-color: #666;
    }


    .contact-hero-content {
    position: relative;
    margin-top: -50px;
}




.web-development-coverflow  {
  /* height: 100vh; */
  display: flex;
  justify-content: center;
  align-items: center;
  /* background: #111; */
}

.web-development-coverflow .swiper {
    width: 100%;
    padding-top: 100px;
    padding-bottom: 80px;
    margin-bottom: 50px;
}

.web-development-coverflow .swiper-slide {
  background-position: center;
  background-size: cover;
  width: 350px;
  height: 400px;
  border-radius: 20px;
  -webkit-box-reflect: below 1px linear-gradient(transparent, transparent, #0006);
}
/* --------------------- for blur -------------- */

.brand-identity-design .swiper-slide {
  transition: filter 0.3s ease;
}

.brand-identity-design .swiper-slide:not(.swiper-slide-active) {
  filter: blur(3px);

  transform: scale(0.95);
}


.table-responsive-custom select{
    font-size: 12px;;
}

.table-responsive-custom td input {
    height: 31px;
    min-height: 31px;
}

.table-responsive-custom textarea.form-control{
    border: none;
}
/* 
.case-flow-main{
    padding:15px;
} */


.our-work-images img{
    width:100%;
    object-fit: cover;
}
/* ============== Hero Section (Figma redesign) ============== */

.hero-section-new {
    background: #0E0920;
    padding: 70px 0 40px;
    overflow: hidden;
}

/* nowrap above the tablet breakpoint: the wheel shrinks to fit the leftover
   width instead of dropping under the copy. It only stacks at <=991px. */
.hero-grid {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 40px;
    flex-wrap: nowrap;
}

.hero-copy {
    font-family: "SF Pro Display", -apple-system, BlinkMacSystemFont, sans-serif;
    max-width: 598.07px;
    flex: 0 1 598.07px;
    min-width: 0;
}

.hero-heading {
    font-weight: 700;
    font-size: 73.5px;
    line-height: 71.4px;
    letter-spacing: -1.26px;
    color: #ffffff;
    margin: 0 0 26px;
}

/* line.svg sits over the words instead of a text-decoration rule so the
   hand-drawn stroke keeps its shape. */
.hero-strike {
    color: #FE4601;
    position: relative;
    display: inline-block;
}

.hero-strike::after {
    content: "";
    position: absolute;
    left: -1.5%;
    width: 103%;
    top: 54%;
    height: 19px;
    transform: translateY(-50%);
    background: url("/assets/images/icons/line.svg") no-repeat center / 100% 100%;
    pointer-events: none;
}

.hero-sub {
        color: #ffffff !important;
    font-weight: 400;
    font-size: 22.68px;
    line-height: 27.4px;
    letter-spacing: 0.22px;
    margin: 0 0 34px;
    max-width: 598px;
}

.hero-sub strong {
    color: #ffffff;
    font-weight: 400;
}

.hero-stat-badge {
    display: inline-block;
    background: #181330;
    border: 1px solid #2B2545;
    border-radius: 12px;
    padding: 28px 27px;
    max-width: 499px;
    color: #D0BDFF;
    font-weight: 700;
    font-size: 19.5px;
    line-height: 1.55;
    letter-spacing: 0.18px;
}

.hero-stat-figure {
    height: 34px;
    width: auto;
    vertical-align: -9px;
    margin-left: 2px;
}

.hero-wheel-wrap {
    position: relative;
    flex: 1 1 600px;
    max-width: 600px;
    min-width: 0;
    width: 100%;
    aspect-ratio: 1 / 1;
}

.hero-wheel-svg {
    width: 100%;
    height: 100%;
    display: block;
    overflow: visible;
}

.hero-wheel-bg {
    fill:transparent;
    /* stroke: #342E46; */
    /* stroke-width: 1.12; */
}

.hero-wedge-path {
    fill: #241D40;
    stroke: #3A3355;
    stroke-width: 1.12;
    transition: d 0.55s ease, fill 0.55s ease, stroke 0.55s ease;
}

.hero-wedge.is-active .hero-wedge-path {
    fill: #3F2E80;
    stroke: #8B5CF6;
    stroke-width: 1.6;
}

.hero-wedge-num {
    fill: #6E6A85;
    font-family: "Manrope", sans-serif;
    font-size: 18px;
    font-weight: 500;
    transition: fill 0.55s ease, font-size 0.55s ease;
}

.hero-wedge.is-active .hero-wedge-num {
    fill: #ffffff;
    font-size: 21px;
    font-weight: 700;
}

/* The hand pivots about the centre of the ring; its faded tail runs back
   through the middle and is hidden behind the centre copy. */
.hero-wheel-arrow {
    transform-box: view-box;
    transform-origin: 300px 300px;
    transition: transform 0.85s cubic-bezier(0.65, 0, 0.35, 1);
}

.hero-wheel-center {
    animation: heroFadeIn 0.5s ease;
}

@keyframes heroFadeIn {
    from { opacity: 0; }
    to { opacity: 1; }
}

.hero-wheel-part {
    fill: #FF5A1F;
    font-family: "Manrope", sans-serif;
    font-size: 12.5px;
    font-weight: 700;
    letter-spacing: 4px;
}

.hero-wheel-title {
    fill: #ffffff;
    font-family: "Manrope", sans-serif;
    font-weight: 800;
    font-size: 38px;
}

.hero-wheel-desc {
    fill: #C9C5DA;
    font-family: "Manrope", sans-serif;
    font-size: 15.5px;
    font-weight: 400;
}

/* The site's own responsive.css works on a 1385 / 1240 / 1023 / 768 / 560
   grid, so every new section steps at the same widths. Stepping at 1199
   instead left a dead band between 1200 and 1240 where the legacy rules had
   already changed but these had not. */
@media (max-width: 1239px) {
    .hero-grid {
        gap: 26px;
    }
    .hero-copy {
        flex-basis: 500px;
    }
    .hero-heading {
        font-size: 58px;
        line-height: 56px;
        letter-spacing: -1px;
    }
    .hero-sub {
        font-size: 19px;
        line-height: 24px;
    }
    .hero-strike::after {
        height: 15px;
    }
}

@media (max-width: 1023px) {
    .hero-grid {
        /* Figma's mobile hero leads with the wheel and puts the copy under it.
           The DOM stays copy-first for reading/SEO order, so the swap is done
           with column-reverse rather than by moving the markup. */
        flex-direction: column-reverse;
        flex-wrap: wrap;
        gap: 30px;
    }
    .hero-wheel-wrap {
        flex: 0 0 auto;
        max-width: 460px;
        margin: 0 auto;
    }
    .hero-copy {
        flex: 0 0 auto;
        max-width: 100%;
    }
    .hero-heading {
        font-size: 42px;
        line-height: 42px;
        letter-spacing: -0.7px;
    }
    .hero-sub {
        font-size: 17px;
        line-height: 22px;
    }
    .hero-strike::after {
        height: 11px;
    }
    .hero-stat-badge {
        font-size: 15px;
    }
    .hero-stat-figure {
        height: 28px;
        vertical-align: -7px;
    }
}

@media (max-width: 480px) {
    .hero-section-new {
        padding: 40px 0 30px;
    }
    .hero-heading {
        font-size: 34px;
        line-height: 36px;
    }
    .hero-sub {
        font-size: 15px;
        line-height: 21px;
        margin-bottom: 24px;
    }
    .hero-strike::after {
        height: 9px;
    }
    .hero-stat-badge {
        padding: 18px 18px;
        font-size: 13.5px;
    }
    .hero-stat-figure {
        height: 22px;
        vertical-align: -5px;
    }
}

/* ============== "We Know" Section (Figma redesign) ============== */

.weknow-section {
    background: #ffffff;
    font-family: "SF Pro Display", -apple-system, BlinkMacSystemFont, sans-serif;
}

/* The photo is the backdrop for the whole block -- it fills the stage while
   the heading and cards sit on top of it in normal flow, so the content
   height drives the section height and nothing can overlap wrongly. */
.weknow-stage {
    position: relative;
    isolation: isolate;
}

.weknow-photo {
    position: absolute;
    inset: 0;
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center right;
    z-index: 0;
}

.weknow-stage-inner {
    position: relative;
    z-index: 1;
    padding: 100px  0px;
}

/* Scoped to the section so it outranks the global `.bg-dark h2 { color: white }`
   in style.css -- the whole homepage is wrapped in .bg-dark, but this block
   is a light section. */
.weknow-section .weknow-heading {
    color: #0B0B0F;
    font-weight: 700;
    font-size: 55px;
    line-height: 60px;
    letter-spacing: -0.8px;
    margin: 0 0 55px;
}
.weknow-section .weknow-heading-accent {
    color: #FE4601;
}

.weknow-cards {
    display: flex;
    gap: 40px;
    align-items: stretch;
}

/* Folder silhouette: the tab is the top-LEFT ~40%, sitting at full height;
   the rest of the top edge steps down by 10% via a rounded shoulder.
   border-radius handles the top-left and both bottom corners; the top-right
   corner is not a box corner any more, so it is rounded in the polygon
   itself. clip-path can't draw arcs, so both curves are chorded -- at this
   size the segments are ~4px and read as smooth. */
.weknow-card {
    position: relative;
    flex: 0 0 310px;
    max-width: 310px;
    min-height: 470px;
    padding: 64px 30px 40px;
    border-radius: 14px;
    display: flex;
    align-items: center;
    clip-path: polygon(
        0% 0%,
        38% 0%,
        41% 0.6%,
        43.5% 2%,
        45.5% 4.4%,
        47.5% 7%,
        49.5% 8.8%,
        52% 10%,
        92.3% 10%,
        94.29% 10.17%,
        96.15% 10.68%,
        97.74% 11.49%,
        98.97% 12.55%,
        99.74% 13.78%,
        100% 15.1%,
        100% 100%,
        0% 100%
    );
}

.weknow-card p {
    margin: 0;
    font-weight: 500;
    font-size: 16px;
    line-height: 1.75;
    letter-spacing: 0.1px;
}

.weknow-card--muted {
    background: rgba(96, 96, 100, 0.72);
    backdrop-filter: blur(2px);
    border-radius:42px;
}

.weknow-card--muted p {
    color: #F2F2F4;
}

.weknow-card--accent {
    background: radial-gradient(circle, #EB89FD 0%, #C56EF3 50%, #7F3EBB 100%);
    border-radius:42px;

}

.weknow-card--accent p {
    color: #ffffff;
}

@media (max-width: 1239px) {
    /* line-height has to step with the size -- the base 60px is set in px, so
       on its own it leaves a huge gap between the two heading lines. */
    .weknow-section .weknow-heading {
        font-size: 38px;
        line-height: 44px;
    }
    .weknow-card {
        flex-basis: 275px;
        max-width: 275px;
        min-height: 420px;
        padding: 58px 26px 34px;
    }
    .weknow-card p {
        font-size: 15px;
        line-height: 1.7;
    }
}

@media (max-width: 1023px) {
    .weknow-stage-inner {
        padding: 54px 0 64px;
    }
    .weknow-section .weknow-heading {
        font-size: 32px;
        line-height: 38px;
        margin-bottom: 32px;
    }
    /* The photo is framed tighter so the subject stays visible behind the
       narrower content column. */
    .weknow-photo {
        object-position: 72% center;
    }
    .weknow-cards {
        flex-wrap: wrap;
        gap: 20px;
    }
    .weknow-card {
        flex: 1 1 260px;
        max-width: 360px;
        min-height: 0;
    }
}

@media (max-width: 575px) {
    .weknow-section .weknow-heading {
        font-size: 27px;
        line-height: 32px;
        margin-bottom: 24px;
    }
    .weknow-card {
        max-width: 100%;
        padding: 36px 24px 28px;
    }
    .weknow-card p {
        font-size: 14px;
        line-height: 1.65;
    }
}

/* --------------------------------------------------------------------------
   We Know â€” phone layout (<WeKnowMobile />).
   Figma's mobile design is a different composition, not the desktop one
   reflowed: the photo becomes a card at the top and the two coloured bubbles
   become plain stacked paragraphs. So the two components swap at 1023px --
   the same width responsive.css uses for .mobile-none / .desktop-none.
   -------------------------------------------------------------------------- */

.weknowm-section {
    display: none;
    background: #ffffff;
    padding: 30px 0 46px;
    font-family: "SF Pro Display", -apple-system, BlinkMacSystemFont, sans-serif;
}

.weknowm-photo-frame {
    border-radius: 26px;
    overflow: hidden;
    margin-bottom: 26px;
}
.weknowm-photo {
    display: block;
    width: 100%;
    height: 232px;
    object-fit: cover;
    object-position: center;
}

.weknowm-section .weknowm-eyebrow {
    color: #FE4601;
    font-size: 15px;
    font-weight: 600;
    letter-spacing: 0.2px;
    margin: 0 0 10px;
}

.weknowm-section .weknowm-heading {
    color: #0B0B0F;
    font-size: 32px;
    line-height: 38px;
    font-weight: 700;
    letter-spacing: -0.6px;
    margin: 0 0 22px;
}

.weknowm-section .weknowm-body {
    color: #8A8A93;
    font-size: 14px;
    line-height: 1.62;
    font-weight: 500;
    margin: 0 0 20px;
}
.weknowm-section .weknowm-body--accent {
    color: #FE4601;
    margin-bottom: 0;
}

@media (max-width: 1023px) {
    /* Only one of the pair renders at a time. */
    .weknow-section {
        display: none;
    }
    .weknowm-section {
        display: block;
    }
}

/* ==========================================================================
   "The 6 Parts Of Machine" â€” Apple-style horizontal scroll-snap gallery.
   Not autoplay: native overflow-x scroll + scroll-snap, driven by drag or
   the prev/next buttons next to the heading.
   ========================================================================== */

.sixparts-section {
    padding: 100px 0px;
    background: #EFEFF0;
    overflow: hidden;
}
.sixparts-head {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: 24px;
    margin-bottom: 40px;
}
.sixparts-section .sixparts-heading {
    color: #0B0B0F;
    font-weight: 700;
    font-size: 55px;
    line-height: 60px;
    letter-spacing: -0.8px;
    margin: 0;
}

/* Both are phone-only; the desktop composition keeps the arrows in the head
   and has no lead-in line. Turned on again at <=1023. */
.sixparts-section .sixparts-intro,
.sixparts-nav-below {
    display: none;
}

.sixparts-accent {
    color: #FE4601;
}

.slider-nav {
    display: flex;
    align-items: center;
    gap: 12px;
    flex-shrink: 0;
}

/* style.css sets a global `button { padding: 14px 40px; overflow: hidden }`.
   With box-sizing: border-box a box can never be narrower than its own
   padding, so the 48px circle was forced out to ~100x50 -- and the 40px
   side padding pushed the icon outside the box, where `overflow: hidden`
   clipped it away. Hence: no arrows. Both are reset explicitly here. */
.slider-nav .slider-nav-btn {
    width: 48px;
    height: 48px;
    min-width: 48px;
    padding: 0;
    flex: 0 0 48px;
    box-sizing: border-box;
    border-radius: 50%;
    border: 1.5px solid #d8d8dc;
    background: #fff;
    color: #0B0B0F;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    overflow: hidden;
    cursor: pointer;
    transition: background 0.28s ease, border-color 0.28s ease,
        color 0.28s ease, transform 0.28s cubic-bezier(0.34, 1.56, 0.64, 1),
        box-shadow 0.28s ease, opacity 0.2s ease;
}

.slider-nav .slider-nav-btn:hover:not(:disabled) {
    background: #0B0B0F;
    border-color: #0B0B0F;
    color: #fff;
    transform: translateY(-2px);
    box-shadow: 0 8px 18px rgba(11, 11, 15, 0.22);
}

.slider-nav .slider-nav-btn:active:not(:disabled) {
    transform: translateY(0) scale(0.94);
    transition-duration: 0.09s;
}

.slider-nav .slider-nav-btn:focus-visible {
    outline: 2px solid #FE4601;
    outline-offset: 3px;
}

.slider-nav .slider-nav-btn:disabled {
    opacity: 0.3;
    cursor: default;
}

/* Masked window holding two stacked arrows; on hover both shift by one
   window-width so the outgoing one leaves and the incoming one takes its
   place, travelling in the direction the button scrolls. */
.slider-nav-icon {
    position: relative;
    display: block;
    width: 20px;
    height: 20px;
    overflow: hidden;
}

.slider-nav-icon svg {
    position: absolute;
    inset: 0;
    display: block;
    transition: transform 0.42s cubic-bezier(0.65, 0, 0.35, 1);
}

.slider-nav-btn--next .slider-nav-icon svg:nth-child(2) {
    transform: translateX(-100%);
}

.slider-nav-btn--next:hover:not(:disabled) .slider-nav-icon svg:nth-child(1) {
    transform: translateX(100%);
}

.slider-nav-btn--prev .slider-nav-icon svg:nth-child(2) {
    transform: translateX(100%);
}

.slider-nav-btn--prev:hover:not(:disabled) .slider-nav-icon svg:nth-child(1) {
    transform: translateX(-100%);
}

.slider-nav-btn:hover:not(:disabled) .slider-nav-icon svg:nth-child(2) {
    transform: translateX(0);
}

@media (prefers-reduced-motion: reduce) {
    .slider-nav .slider-nav-btn,
    .slider-nav-icon svg {
        transition-duration: 0.01ms;
    }
    .slider-nav .slider-nav-btn:hover:not(:disabled) {
        transform: none;
    }
}

/* Full-bleed wrapper: breaks the track out of `.container` so cards run
   edge-to-edge on both sides (container is 85vw wide, centred, +12px gutter). */
.sixparts-track-wrap {
    position: relative;
    left: 50%;
    width: 100vw;
    transform: translateX(-50%);
}

/* The leading offset lives INSIDE the scroller, not on the wrapper -- as
   wrapper padding it became the clip edge, so scrolled cards were sliced off
   there instead of running out to the viewport edge. As track padding the
   first card still lines up under the heading at scroll 0, but the track
   itself spans the full 100vw. scroll-padding keeps snapping on that line. */
.sixparts-track {
    display: flex;
    gap: 20px;
    overflow-x: auto;
    scroll-snap-type: x mandatory;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
    padding-bottom: 6px;
    padding-left: calc(7.5vw + 12px);
    padding-right: calc(7.5vw + 12px);
    scroll-padding-left: calc(7.5vw + 12px);
}

.sixparts-track::-webkit-scrollbar {
    display: none;
}

.sixparts-card {
    flex: 0 0 372px;
    max-width: 372px;
    min-height: 537px;
    scroll-snap-align: start;
    scroll-snap-stop: always;
    border-radius: 22px;
    background: #fff;
    padding: 26px 24px 28px;
    display: flex;
    flex-direction: column;
    box-shadow: 0 1px 2px rgba(11, 11, 15, 0.05);
}

.sixparts-tag {
    display: inline-block;
    font-size: 16.9px;
    font-weight: 700;
    line-height: 21px;
    color: #FE4601;
    margin-bottom: 10px;
    letter-spacing: -0.37px;
}

.sixparts-section .sixparts-title {
    font-size: 27.2px;
    font-weight: 700;
    line-height: 32px;
    color: #1D1D1F;
    margin: 0 0 10px;
}

.sixparts-section .sixparts-desc {
    font-size: 16.68px;
    line-height: 21.6px;
    color: #1D1D1F;
    font-family: 'SF Pro Display';
    margin: 0 0 20px;
    letter-spacing: -0.27px;
}

/* The artwork runs to the card's own edges, so the media box cancels the
   card padding on three sides; the card clips it back to the corner radius.
   No tinted panel behind it any more -- the exported PNGs carry their own
   background, and the old per-theme gradients showed through as a band. */
.sixparts-media {
    position: relative;
    margin: auto -24px -28px;
    overflow: hidden;
    border-radius: 0 0 22px 22px;
}

.sixparts-media img {
    display: block;
    width: 100%;
    /* height: 218px; */
    object-fit: cover;
    object-position: center;
}

.sixparts-cta {
    /* Overlaid on the artwork, bottom-right, exactly as Figma shows it. */
    position: absolute;
    right: 16px;
    bottom: 16px;
    z-index: 2;
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 10px 18px;
    border-radius: 999px;
    background: #1E77F2;
    color: #fff !important;
    font-size: 13px;
    font-weight: 700;
    text-decoration: none !important;
    box-shadow: 0 6px 18px rgba(11, 11, 15, 0.18);
    transition: opacity 0.15s ease, transform 0.15s ease;
}

.sixparts-cta:hover {
    opacity: 0.9;
    transform: translateY(-1px);
    color: #fff !important;
}


@media (max-width: 1239px) {
    .sixparts-section .sixparts-heading {
        font-size: 42px;
        line-height: 47px;
    }
}

@media (max-width: 1023px) {
    .sixparts-section {
        padding: 64px 0 50px;
    }
    .sixparts-section .sixparts-heading {
        font-size: 34px;
        line-height: 39px;
    }
    /* Phone layout: heading, lead-in line, rail, then the arrows at the
       bottom-right -- so the arrows move out of the head and the head stops
       being a two-column row. */
    .sixparts-head {
        display: block;
        margin-bottom: 0;
    }
    .sixparts-head .slider-nav {
        display: none;
    }
    .sixparts-section .sixparts-intro {
        display: block;
        color: #8A8A93;
        font-size: 15px;
        line-height: 1.55;
        font-weight: 500;
        margin: 16px 0 30px;
        max-width: 460px;
    }
    .sixparts-nav-below {
        display: flex;
        justify-content: flex-end;
        margin-top: 26px;
    }
}

@media (max-width: 575px) {
    .sixparts-head {
        flex-direction: column;
        align-items: flex-start;
        gap: 18px;
        margin-bottom: 28px;
    }
    .sixparts-section .sixparts-heading {
        font-size: 28px;
        line-height: 33px;
    }
    /* A 300px card is wider than the 95% container here, so it steps down to
       leave the next card peeking in as the affordance to scroll. */
    .sixparts-card {
        flex-basis: 268px;
        max-width: 268px;
        min-height: 0;
        padding: 22px 20px 24px;
    }
    /* the media box cancels the card padding, so its negative margins have to
       track the smaller padding used at this width */
    .sixparts-media {
        margin: auto -20px -24px;
    }
    .sixparts-media img {
        height: 180px;
    }
    .sixparts-cta {
        right: 12px;
        bottom: 12px;
        padding: 9px 15px;
        font-size: 12px;
    }
}

@media (max-width: 560px) {
    /* .container goes to max-width:95% below this breakpoint (responsive.css) */
    .sixparts-track {
        padding-left: calc(2.5vw + 12px);
        padding-right: calc(2.5vw + 12px);
        scroll-padding-left: calc(2.5vw + 12px);
    }
}

/* Dark variant of the shared slider nav, for sections on #0E0920. */
.slider-nav--dark .slider-nav-btn {
    background: transparent;
    border-color: rgba(255, 255, 255, 0.28);
    color: #ffffff;
}

.slider-nav--dark .slider-nav-btn:hover:not(:disabled) {
    background: #ffffff;
    border-color: #ffffff;
    color: #0E0920;
    box-shadow: 0 8px 18px rgba(0, 0, 0, 0.4);
}

.slider-nav--dark .slider-nav-btn:disabled {
    opacity: 0.28;
}

/* ============== Shared dark card-rail sections ============== */

.workshow-section,
.broken-section {
    background: #0E0920;
    padding: 100px 0px;
    font-family: "SF Pro Display", -apple-system, BlinkMacSystemFont, sans-serif;
    overflow: hidden;
    padding-top:25px!important;
}

.workshow-section .workshow-heading,
.broken-section .broken-heading {
    color: #ffffff;
    font-weight: 700;
    font-size: 55px;
    line-height: 60px;
    letter-spacing: -0.28px;
    margin: 0;
}

.workshow-section .workshow-accent,
.broken-section .broken-accent {
    color: #FE4601;
}

/* Phone-only; the desktop composition keeps its arrows in the head. */
.workshow-nav-below {
    display: none;
}

.workshow-head,
.broken-head {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: 32px;
    margin-bottom: 50px;
}

/* Full-bleed rails: the track spans 100vw so cards run out to both viewport
   edges, while its own padding keeps the first card aligned under the
   heading. scroll-padding makes snapping land on that same line.
   (.container is 85vw, centred, +12px gutter.) */
.workshow-track-wrap,
.broken-track-wrap {
    position: relative;
    left: 50%;
    width: 100vw;
    transform: translateX(-50%);
}

.workshow-track,
.broken-track {
    display: flex;
    overflow-x: auto;
    scroll-snap-type: x mandatory;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
    padding-left: calc(7.5vw + 12px);
    padding-right: calc(7.5vw + 12px);
    scroll-padding-left: calc(7.5vw + 12px);
}

.workshow-track::-webkit-scrollbar,
.broken-track::-webkit-scrollbar {
    display: none;
}

/* ============== Have A Look At / Our Work ============== */

.workshow-track {
    gap: 24px;
    padding-bottom: 4px;
}

.workshow-card {
    flex: 0 0 304px;
    max-width: 304px;
    scroll-snap-align: start;
}

.workshow-media {
    display: block;
    width: 304.2px;
    height: 463px;
    border-radius: 26px;
    overflow: hidden;
    background: #191233;
}

.workshow-media img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
    transition: transform 0.6s cubic-bezier(0.22, 1, 0.36, 1);
}

.workshow-card:hover .workshow-media img {
    transform: scale(1.05);
}

.workshow-stats {
    display: flex;
    gap: 45px;
    text-align: center;
    padding: 34px 4px 0;
    justify-content: center;
}
.workshow-stat strong {
    display: block;
    color: #ffffff;
    font-weight: 700;
    font-size: 31.8px;
    letter-spacing: -0.44px;
    line-height: 30.5px;
}

.workshow-stat span {
    display: block;
    color: #FFFFFF;
    font-weight: 400;
    line-height: 30.5px;
    font-size: 17.81px;
    margin-top: 4px;
    letter-spacing: -0.44px;
}

/* ============== Which Part Of Yours Is Broken? ============== */

.broken-head {
    align-items: flex-start;
}

.broken-intro {
    flex: 0 1 343px;
    color: #86868B !important;
    font-size: 24px;
    line-height: 30px;
    font-weight: bold;
    font-family: 'SF Pro Display';
    text-align: right;
    margin-bottom: 0;
}

.broken-track {
    gap: 26px;
    padding-bottom: 4px;
    align-items: flex-start;
}

.broken-card {
    flex: 0 0 372px;
    max-width: 372px;
    scroll-snap-align: start;
}

.broken-media {
    width: 372px;
    height: 502px;
    border-radius: 30px;
    overflow: hidden;
    background: #191233;
}

.broken-media img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
    transition: transform 0.6s cubic-bezier(0.22, 1, 0.36, 1);
}

.broken-card:hover .broken-media img {
    transform: scale(1.05);
}

.broken-section .broken-card-title {
    color: #8668FF;
    font-weight: 700;
    font-size: 28px;
    padding: 0px 24px;
    line-height: 32px;
    margin: 30px 0 15px;
}

.broken-section .broken-card-desc {
    color: #fff;
    font-size: 16.68px;
    line-height: 21.6px;
    margin: 0;
    padding: 0px 24px;
}

.broken-foot {
    display: flex;
    justify-content: flex-end;
    margin-top: 40px;
}

@media (max-width: 1239px) {
    .workshow-section .workshow-heading,
    .broken-section .broken-heading {
        font-size: 42px;
        line-height: 47px;
    }
    .broken-intro {
        font-size: 19px;
        line-height: 25px;
    }
    .workshow-card,
    .workshow-media {
        flex-basis: 290px;
        max-width: 290px;
        width: 290px;
    }
    .workshow-media {
        height: 440px;
    }
    .broken-card,
    .broken-media {
        flex-basis: 320px;
        max-width: 320px;
        width: 320px;
    }
    .broken-media {
        height: 432px;
    }
}

@media (max-width: 1023px) {
    .workshow-section .workshow-heading,
    .broken-section .broken-heading {
        font-size: 36px;
        line-height: 41px;
    }
    /* Arrows move under the rail on phones, matching the 6 Parts section. */
    .workshow-head {
        display: block;
        margin-bottom: 30px;
    }
    .workshow-head .slider-nav {
        display: none;
    }
    .workshow-nav-below {
        display: flex;
        justify-content: flex-end;
        margin-top: 28px;
    }
    .workshow-stat strong {
        font-size: 28px;
        line-height: 30px;
    }
    .workshow-stat span {
        font-size: 16px;
        line-height: 22px;
    }
    .workshow-stats {
        gap: 30px;
        padding-top: 26px;
    }
    .broken-section .broken-card-title {
        font-size: 23px;
        line-height: 27px;
        margin: 24px 0 12px;
        padding: 0 18px;
    }
    .broken-section .broken-card-desc {
        font-size: 15px;
        line-height: 20px;
        padding: 0 18px;
    }
}

@media (max-width: 767px) {
    .workshow-section,
    .broken-section {
        padding: 64px 0 72px;
    }
    /* On a 232px card the stats have to sit tight, or "Revenue growth" wraps
       and knocks the two figures out of line with each other. */
    .workshow-stats {
        gap: 20px;
        padding-top: 22px;
    }
    .workshow-stat strong {
        font-size: 24px;
        line-height: 26px;
    }
    .workshow-stat span {
        font-size: 14px;
        line-height: 19px;
    }
    .broken-section .broken-card-title {
        font-size: 20px;
        line-height: 24px;
        margin: 20px 0 10px;
        padding: 0 4px;
    }
    .broken-section .broken-card-desc {
        font-size: 14px;
        line-height: 19px;
        padding: 0 4px;
    }
    .broken-foot {
        margin-top: 28px;
    }
    .workshow-section .workshow-heading,
    .broken-section .broken-heading {
        font-size: 32px;
        line-height: 37px;
    }
    .workshow-head,
    .broken-head {
        flex-direction: column;
        align-items: flex-start;
        gap: 18px;
        margin-bottom: 30px;
    }
    .broken-intro {
        text-align: left;
        flex-basis: auto;
        font-size: 15px;
    }
    .workshow-card,
    .workshow-media {
        flex-basis: 232px;
        max-width: 232px;
        width: 232px;
    }
    .workshow-media {
        height: 352px;
    }
    .broken-card,
    .broken-media {
        flex-basis: 258px;
        max-width: 258px;
        width: 258px;
    }
    .broken-media {
        height: 348px;
    }
}

@media (max-width: 560px) {
    .workshow-track,
    .broken-track {
        padding-left: calc(2.5vw + 12px);
        padding-right: calc(2.5vw + 12px);
        scroll-padding-left: calc(2.5vw + 12px);
    }
}

/* ============== How It Runs ============== */

.howruns-section {
    background: #ffffff;
    padding: 96px 0 104px;
    font-family: "SF Pro Display", -apple-system, BlinkMacSystemFont, sans-serif;
}

.howruns-head {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 32px;
    margin-bottom: 50px;
}

.howruns-section .howruns-heading {
    color: #0B0B0F;
    font-weight: 700;
    font-size: 55px;
    line-height: 60px;
    letter-spacing: -0.28px;
    margin: 0;
}

.howruns-section .howruns-accent {
    color: #FE4601;
}

/* Scoped past the page-level `.bg-dark p` rule in style.css, which would
   otherwise grey this out on a white background. */
.howruns-section .howruns-intro {
    flex: 0 1 411px;
    color: #86868B !important;
    font-size: 24px;
    line-height: 30px;
    font-weight: bold;
    font-family: 'SF Pro Display';
    text-align: right;
    margin-bottom: 0;
}

.howruns-list {
    display: flex;
    flex-direction: column;
    gap: 26px;
}

/* The artwork sets the card's shape: the aspect ratio matches the source
   image (1800x671) so the copy keeps its position over the photo at any
   container width. */
.howruns-card {
    position: relative;
    aspect-ratio: 1800 / 671;
    border-radius: 42px;
    overflow: hidden;
    height: 531px;
    display: flex;
    align-items: center;
}

.howruns-card-bg {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    z-index: 0;
}

/* Desktop artwork shows by default; the mobile-cropped version (with the
   stage number already baked into the image) swaps in at the 767px
   breakpoint below, where the card layout also changes. */
.howruns-card-bg--mobile {
    display: none;
}

.howruns-card-body {
    position: relative;
    z-index: 2;
    width: 50%;
    padding-left: 6%;
    padding-right: 2%;
}

.howruns-card.is-flipped {
    justify-content: flex-end;
}

.howruns-card.is-flipped .howruns-card-body {
    padding-left: 2%;
    padding-right: 6%;
}

.howruns-eyebrow {
    display: flex;
    align-items: center;
    gap: 12px;
    color: #ffffff;
    font-weight: 600;
    font-size: 27px;
    line-height: 140%;
    margin-bottom: 14px;
}

.howruns-eyebrow i {
    display: block;
    width: 22px;
    height: 2px;
    background: currentColor;
    flex: 0 0 22px;
}

.howruns-section .howruns-card-title {
    color: #ffffff;
    font-weight: 700;
    font-size: 36px;
    line-height: 130%;
    margin: 0 0 18px;
    white-space: pre-line;
}

.howruns-section .howruns-card-desc {
    color: rgba(255, 255, 255, 0.92);
    font-weight: 400;
    font-size: 25.35px;
    line-height: 37.5px;
    margin: 0;
}

/* Ghost stage number, sunk into the artwork behind the copy. */
.howruns-num {
    position: absolute;
    top: 8%;
    right: 3.5%;
    z-index: 1;
    color: rgba(255, 255, 255, 0.22);
    font-weight: 700;
    font-size: 96px;
    line-height: 1;
    letter-spacing: -2px;
    pointer-events: none;
}

.howruns-card.is-flipped .howruns-num {
    right: auto;
    left: 3.5%;
}

/* Type is specified in fixed px against a ~1224px card, so it steps down
   with the card rather than overflowing it. */
@media (max-width: 1239px) {
    .howruns-section .howruns-heading {
        font-size: 42px;
        line-height: 47px;
    }
    .howruns-section .howruns-intro {
        font-size: 19px;
        line-height: 25px;
    }
    /* The card's fixed 531px height is a desktop figure; below it the card
       tracks the artwork's own ratio again so nothing is over-cropped. */
    .howruns-card {
        height: auto;
    }
    .howruns-eyebrow {
        font-size: 21px;
        margin-bottom: 10px;
    }
    .howruns-section .howruns-card-title {
        font-size: 28px;
        margin-bottom: 13px;
    }
    .howruns-section .howruns-card-desc {
        font-size: 19px;
        line-height: 28px;
    }
    .howruns-num {
        font-size: 70px;
    }
}

@media (max-width: 1023px) {
    .howruns-section .howruns-heading {
        font-size: 36px;
        line-height: 41px;
    }
    .howruns-card {
        border-radius: 30px;
    }
    .howruns-eyebrow {
        font-size: 17px;
        gap: 8px;
    }
    .howruns-eyebrow i {
        width: 15px;
        flex-basis: 15px;
    }
    .howruns-section .howruns-card-title {
        font-size: 22px;
        margin-bottom: 10px;
    }
    .howruns-section .howruns-card-desc {
        font-size: 15px;
        line-height: 22px;
    }
    .howruns-num {
        font-size: 52px;
    }
}

@media (max-width: 767px) {
    .howruns-section {
        padding: 64px 0 72px;
    }
    .howruns-head {
        flex-direction: column;
        align-items: flex-start;
        gap: 14px;
        margin-bottom: 28px;
    }
    .howruns-section .howruns-heading {
        font-size: 32px;
        line-height: 37px;
    }
    .howruns-section .howruns-intro {
        text-align: left;
        flex-basis: auto;
    }
    /* Below this the photo half is too narrow to hold readable copy, so the
       card grows taller and the text takes the full width over a darkened
       image instead of sharing it. */
    .howruns-card {
        aspect-ratio: auto;
        height: auto;
        min-height: 0;
        border-radius: 26px;
        padding: 38px 0;
    }
    /* The actual swap the note above `.howruns-card-bg--mobile` describes --
       without these two the wide desktop crop was still the one rendering on
       phones, with the portrait version stacked invisibly behind it. */
    .howruns-card-bg--desktop {
        display: none;
    }
    .howruns-card-bg--mobile {
        display: block;
    }
    /* The stage number is part of the mobile artwork, so the DOM one would
       print a second "01" over it. */
    .howruns-num {
        display: none;
    }
    /* Portrait art: give the card the room the crop expects, otherwise
       object-fit: cover throws most of the photo away. */
    /* Portrait art: give the card the room the crop expects, otherwise
       object-fit: cover throws most of the photo away. The mobile crops keep
       their empty space at the top and the subject at the bottom, so the copy
       sits at the top rather than centred over the subject. */
    .howruns-card {
        min-height: 470px;
        align-items: flex-start;
    }
    /* The copy sits over the flat top of the artwork, so a light scrim there
       is enough -- the brightness drop the wide desktop crop needed washed
       these portrait images out. */
    .howruns-card-bg {
        filter: none;
    }
    .howruns-card::after {
        content: "";
        position: absolute;
        inset: 0;
        z-index: 1;
        background: linear-gradient(
            180deg,
            rgba(10, 6, 26, 0.42) 0%,
            rgba(10, 6, 26, 0.24) 45%,
            rgba(10, 6, 26, 0) 72%
        );
        pointer-events: none;
    }
    .howruns-card-body,
    .howruns-card.is-flipped .howruns-card-body {
        width: 100%;
        padding-left: 26px;
        padding-right: 26px;
    }
    .howruns-eyebrow {
        font-size: 16px;
    }
    .howruns-section .howruns-card-title {
        font-size: 21px;
    }
    .howruns-section .howruns-card-desc {
        font-size: 15px;
        line-height: 23px;
    }
    .howruns-num {
        font-size: 44px;
        top: 4%;
    }
}

/* ============== What We Build It For ============== */

.builditfor-section {
    background: #0E0920;
    padding: 100px 0px;
    font-family: "SF Pro Display", -apple-system, BlinkMacSystemFont, sans-serif;
    overflow: hidden;
}

.builditfor-grid {
    display: flex;
    align-items: center;
    gap: 0;
}

.builditfor-copy {
    flex: 0 0 40%;
    padding-right:40px;
    max-width: 40%;
}

.builditfor-section .builditfor-heading {
    color: #ffffff;
    font-weight: 700;
    font-size: 55px;
    line-height: 60px;
    letter-spacing: -0.28px;
    margin: 0 0 26px;
}

.builditfor-section .builditfor-accent {
    color: #FE4601;
}
.builditfor-section .builditfor-desc {
    margin: 0;
    max-width: 461px;
    color: #86868B !important;
    font-size: 24px;
    line-height: 30px;
    font-weight: bold;
    font-family: 'SF Pro Display';
    margin-bottom: 0;
}

.builditfor-stage {
    position: relative;
    flex: 0 0 60%;
    max-width: 60%;
    min-width: 0;
}

/* The 3D ring. A short perspective is what curves the deck -- a large one
   flattens the rotation back into a plain tilted strip.
   `swiper/css` ships its own `.swiper` / `.swiper-slide` rules and is
   injected into <head> after this stylesheet, so every rule that fights it
   (perspective, and above all the slide's width) is scoped through
   `.builditfor-stage` to outrank it. Without that the slide keeps Swiper's
   `width: 100%` and the deck collapses to one full-bleed card. */
/* Kept clipping (Swiper's own default) so the fanned cards stay inside the
   right-hand half instead of spilling across the copy. */
.builditfor-stage .builditfor-swiper {
    overflow: hidden;
    perspective: 900px;
    /* padding: 40px 0 46px; */
}

.builditfor-stage .builditfor-swiper .swiper-wrapper {
    transform-style: preserve-3d;
    align-items: center;
}

.builditfor-stage .builditfor-slide {
    width: 332px;
    height: 455px;
    flex-shrink: 0;
    border-radius: 17px;
    overflow: hidden;
    background: #f8f8f92b;
    transition: opacity .45s ease;
    /* Anything past the immediate neighbours fades out, so the deck reads as
       a tight stack of a few cards rather than a long fanned-out row. */
    opacity: .28;
    box-shadow: 0 24px 48px rgba(0, 0, 0, .45);
}

.builditfor-stage .builditfor-slide.swiper-slide-active {
    opacity: 1;
}

.builditfor-stage .builditfor-slide.swiper-slide-prev,
.builditfor-stage .builditfor-slide.swiper-slide-next {
    opacity: .78;
}

.builditfor-stage .builditfor-slide img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}

/* Swiper paints its face shading as bare child divs; round them to the slide
   and deepen them so the turned cards read as surfaces, not flat cutouts. */
.builditfor-stage .builditfor-slide .swiper-slide-shadow-left,
.builditfor-stage .builditfor-slide .swiper-slide-shadow-right {
    border-radius: 17px;
    background-image: linear-gradient(to left, rgba(0, 0, 0, .62), rgba(0, 0, 0, 0));
}

.builditfor-stage .builditfor-slide .swiper-slide-shadow-right {
    background-image: linear-gradient(to right, rgba(0, 0, 0, .62), rgba(0, 0, 0, 0));
}

/* Caption layer on every card: its own inset panel behind the copy, as in
   Figma -- not a gradient bled off the card edge. It lives inside the slide
   so it turns with the card in 3D. */
.builditfor-stage .builditfor-layer {
    position: absolute;
    left: 14px;
    right: 14px;
    bottom: 14px;
    z-index: 2;
    padding: 14px 16px 16px;
    border-radius: 12px;
    background: rgba(8, 5, 20, .68);
    backdrop-filter: blur(6px);
    -webkit-backdrop-filter: blur(6px);
}

.builditfor-stage .builditfor-layer-title {
    display: block;
    color: #ffffff;
    font-weight: 700;
    font-size: 17px;
    line-height: 1.3;
    margin-bottom: 6px;
}

.builditfor-section .builditfor-layer-desc {
    color: #D7D3E4;
    font-size: 13px;
    line-height: 1.5;
    margin: 0;
}

@media (max-width: 1239px) {
    .builditfor-section .builditfor-heading {
        font-size: 42px;
        line-height: 47px;
    }
    .builditfor-section .builditfor-desc {
        font-size: 19px;
        line-height: 25px;
    }
    .builditfor-stage .builditfor-slide {
        width: 272px;
        height: 373px;
    }
}

@media (max-width: 1023px) {
    .builditfor-grid {
        flex-direction: column;
        align-items: stretch;
        gap: 34px;
    }
    .builditfor-copy {
        flex: 0 0 auto;
        max-width: 100%;
        padding-right: 0;
    }
    /* flex-basis/max-width stay at 60% once the grid is a column, so the deck
       kept getting laid out into a 60%-wide box and clipped on both sides by
       the swiper's own overflow:hidden. Both have to be released here. */
    .builditfor-stage {
        flex: 0 0 auto;
        max-width: 100%;
        width: 100%;
    }
}

@media (max-width: 767px) {
    .builditfor-section {
        padding: 64px 0 72px;
    }
    .builditfor-section .builditfor-heading {
        font-size: 32px;
        line-height: 37px;
        margin-bottom: 18px;
    }
    .builditfor-section .builditfor-desc {
        font-size: 16px;
        line-height: 23px;
    }
    .builditfor-stage .builditfor-slide {
        width: 232px;
        height: 318px;
    }
    .builditfor-stage .builditfor-layer {
        left: 10px;
        right: 10px;
        bottom: 10px;
        padding: 11px 12px 12px;
    }
    .builditfor-stage .builditfor-layer-title {
        font-size: 14px;
    }
    .builditfor-section .builditfor-layer-desc {
        font-size: 11.5px;
    }
}

/* ============== We Are Soo Social ============== */

.soosocial-section {
    background: #0E0920;
    padding: 100px 0 100px;
    font-family: "SF Pro Display", -apple-system, BlinkMacSystemFont, sans-serif;
    overflow: hidden;
}

.soosocial-head {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 32px;
    margin-bottom: 50px;
}

.soosocial-section .soosocial-heading {
    color: #ffffff;
    font-weight: 700;
    font-size: 55px;
    line-height: 60px;
    letter-spacing: -0.28px;
    margin: 0;
}

.soosocial-section .soosocial-accent {
    color: #FE4601;
}

/* Nav sits under the rail, right aligned, 50px clear of the videos. */
.soosocial-foot {
    display: flex;
    justify-content: flex-end;
    margin-top: 50px;
}

.soosocial-section .soosocial-intro {

    color: #86868B !important;
    font-size: 24px;
    line-height: 30px;
    font-weight: bold;
    font-family: 'SF Pro Display';
    text-align: right;
    margin-bottom: 0;
}

/* Full-bleed rail: the leading offset lives on the scroller itself, so the
   first card runs to the container edge instead of being clipped by a
   wrapper's padding. */
.soosocial-track-wrap {
    position: relative;
    left: 50%;
    width: 100vw;
    transform: translateX(-50%);
}

.soosocial-track {
    display: flex;
    gap: 22px;
    overflow-x: auto;
    scroll-snap-type: x mandatory;
    scrollbar-width: none;
    -ms-overflow-style: none;
    padding-left: calc(7.5vw + 12px);
    padding-right: calc(7.5vw + 12px);
    scroll-padding-left: calc(7.5vw + 12px);
}

.soosocial-track::-webkit-scrollbar {
    display: none;
}

.soosocial-card {
    position: relative;
    flex: 0 0 318px;
    width: 318px;
    height: 566px;
    border-radius: 18px;
    overflow: hidden;
    background: #191233;
    scroll-snap-align: start;
}

.soosocial-video {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}

.soosocial-section .soosocial-mute {
    position: absolute;
    top: 14px;
    right: 14px;
    z-index: 3;
    /* The global `button` reset sets 14px/40px padding and overflow:hidden,
       which under border-box would balloon this into an ellipse and clip the
       icon out of view. */
    width: 40px;
    height: 40px;
    min-width: 40px;
    padding: 0;
    border: none;
    border-radius: 50%;
    background: rgba(0, 0, 0, 0.55);
    color: #ffffff;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    backdrop-filter: blur(4px);
    transition: background .25s ease, transform .25s ease;
}

.soosocial-section .soosocial-mute:hover {
    background: rgba(0, 0, 0, 0.78);
    transform: scale(1.06);
}

.soosocial-section .soosocial-mute:focus-visible {
    outline: 2px solid #FE4601;
    outline-offset: 2px;
}

@media (max-width: 1239px) {
    .soosocial-section .soosocial-heading {
        font-size: 42px;
        line-height: 47px;
    }
    .soosocial-section .soosocial-intro {
        font-size: 19px;
        line-height: 25px;
    }
    .soosocial-card {
        flex-basis: 268px;
        width: 268px;
        height: 477px;
    }
}

@media (max-width: 1023px) {
    .soosocial-section .soosocial-heading {
        font-size: 36px;
        line-height: 41px;
    }
    .soosocial-card {
        flex-basis: 244px;
        width: 244px;
        height: 434px;
    }
}

@media (max-width: 767px) {
    .soosocial-section {
        padding: 64px 0 72px;
    }
    .soosocial-head {
        flex-direction: column;
        align-items: flex-start;
        gap: 18px;
        margin-bottom: 28px;
    }
    .soosocial-foot {
        margin-top: 34px;
    }
    .soosocial-section .soosocial-heading {
        font-size: 32px;
        line-height: 37px;
    }
    .soosocial-section .soosocial-intro {
        text-align: left;
        font-size: 16px;
        line-height: 23px;
        margin: 0;
    }
    .soosocial-section .soosocial-mute {
        top: 10px;
        right: 10px;
        width: 34px;
        height: 34px;
        min-width: 34px;
    }
    .soosocial-card {
        flex-basis: 220px;
        width: 220px;
        height: 391px;
    }
}

@media (max-width: 560px) {
    .soosocial-track {
        padding-left: calc(2.5vw + 12px);
        padding-right: calc(2.5vw + 12px);
        scroll-padding-left: calc(2.5vw + 12px);
    }
}

/* ============== FAQ â€” light (Figma homepage) variant ==============
   Everything is scoped through `.faq-section.faq-section--light` (three
   classes) rather than one extra class, because responsive.css loads after
   this file and its own `.faq-section .accordion-*` rules would otherwise
   win at the mobile breakpoints. */

.faq-section.faq-section--light {
    background: #ffffff;
    font-family: "SF Pro Display", -apple-system, BlinkMacSystemFont, sans-serif;
        padding: 100px 0px;
}

.faq-section.faq-section--light .text-orange {
    background: none;
    -webkit-background-clip: initial;
    -webkit-text-fill-color: initial;
    background-clip: initial;
    color: #FE4601;
    font-weight: 700;
    font-size: 27px;
    line-height: 25px;
    margin: 0;
}

.faq-section.faq-section--light .display-4 {
    color: #0B0B0F;
    font-size: 55px !important;
    font-weight: 700 !important;
    line-height: 100%;
    letter-spacing: -0.4px;
    margin-top: 12px !important;
}

.faq-section.faq-section--light .mt-5 {
    margin-top: 42px !important;
}

.faq-section.faq-section--light .accordion-item {
    background: transparent;
    border: none;
    border-bottom: 1px solid #E4E4E7;
}

.faq-section.faq-section--light .accordion-item:first-child {
    border-top: 1px solid #E4E4E7;
}

.faq-section.faq-section--light .accordion-button {
    background-color: transparent;
    color: #0B0B0F;
    font-size: 24px;
    font-weight: 500;
    line-height: 34px;
    padding: 17px 44px 17px 0;
    box-shadow: none;
}

.faq-section.faq-section--light .accordion-button:not(.collapsed) {
    background-color: transparent;
    color: #0B0B0F;
    padding-bottom: 10px;
}

/* The numerals are part of the dark design only. */
.faq-section.faq-section--light .accordion-button > .fs-3 {
    display: none;
}

/* Swap the +/âˆ’ glyph for the Figma chevron. */
.faq-section.faq-section--light .accordion-button::before {
    content: "";
    right: 4px;
    top: 50%;
    width: 8px;
    height: 8px;
    border: none;
    border-right: 1.5px solid #111;
    border-bottom: 1.5px solid #111 ;
    transform: translateY(-70%) rotate(45deg);
}

.faq-section.faq-section--light .accordion-button:not(.collapsed)::before {
    content: "";
    transform: translateY(-30%) rotate(-135deg);
}

.faq-section.faq-section--light .accordion-body {
    background: transparent;
    color: #6B6B76;
    font-size: 16.5px;
    line-height: 1.62;
    padding: 0 44px 18px 0;
}

.faq-section.faq-section--light .accordion-body.faq-rich a {
    color: #FE4601;
}

.faq-section.faq-section--light .text-end {
    text-align: left !important;
    margin-top: 34px !important;
}

.faq-section.faq-section--light .fs-24 {
    color: #FE4601;
    font-size: 16px;
    font-weight: 700;
}

@media (max-width: 1239px) {
    .faq-section.faq-section--light .display-4 {
        font-size: 42px !important;
    }
    .faq-section.faq-section--light .accordion-button {
        font-size: 20px;
        line-height: 28px;
    }
    .faq-section.faq-section--light .accordion-body {
        font-size: 15px;
    }
}

@media (max-width: 1023px) {
    .faq-section.faq-section--light {
        padding: 64px 0;
    }
    .faq-section.faq-section--light .text-orange {
        font-size: 22px;
        line-height: 26px;
    }
    .faq-section.faq-section--light .display-4 {
        font-size: 34px !important;
    }
    .faq-section.faq-section--light .accordion-button {
        font-size: 17px;
        line-height: 25px;
    }
}

@media (max-width: 767px) {
    .faq-section.faq-section--light {
        padding: 56px 0 60px;
    }
    .faq-section.faq-section--light .text-orange {
        font-size: 18px;
        line-height: 22px;
    }
    .faq-section.faq-section--light .display-4 {
        font-size: 26px !important;
    }
    .faq-section.faq-section--light .mt-5 {
        margin-top: 28px !important;
    }
    .faq-section.faq-section--light .accordion-button {
        font-size: 14px;
        padding: 15px 36px 15px 0;
    }
    .faq-section.faq-section--light .accordion-body {
        font-size: 13px;
        padding-right: 36px;
    }
}



.faq-section.faq-section--light .accordion-body p
{
    color:#111!important;
}

/* ============== Form â€” light ground variant ==============
   The coral panel is unchanged; this only replaces the dark page wrapper
   showing through around it. */

.form-section--light {
    background: #ffffff;
    /* 100px of clear white between the coral CTA panel and the footer. */
    padding-bottom: 100px;
}

/* ============== Form collage â€” Figma dimensions ============== */

/* `:not(.desktop-none)` matters: the block ships a second .form-image for
   mobile that is hidden by `.desktop-none` (one class). A bare
   `.form-container .form-image` rule is two classes, so it would win and
   force that mobile collage back on screen -- which is exactly what put a
   sliver of the photo down the right edge of the panel. */
.form-container .form-image:not(.desktop-none) {
    display: flex;
    align-items: center;
    justify-content: center;
}

/* 496.40 x 658.4 with a 42px radius, per Figma. max-width keeps it from
   overflowing its column on narrower viewports. */
.form-container .form-image:not(.desktop-none) img {
    width: 496.4px;
    max-width: 100%;
    height: 658.4px;
    object-fit: cover;
    border-radius: 42px;
    display: block;
}

@media (max-width: 1399px) {
    .form-container .form-image:not(.desktop-none) img {
        height: 566px;
    }
}

@media (max-width: 991px) {
    .form-container .form-image:not(.desktop-none) img {
        height: 480px;
        border-radius: 32px;
    }
}

/* responsive.css turns `.desktop-none` back on at <=1023px, but the desktop
   collage is `d-none d-md-block` and so stays on from 768px up -- between
   768 and 1023 both were rendering, and the mobile one was squeezed into a
   sliver at the right edge of the panel. Two classes here outrank its one. */
@media (min-width: 768px) {
    .form-container .form-image.desktop-none {
        display: none;
    }
}

@media (max-width: 1023px) {
    /* The sweeping arc is placed against the desktop two-column panel; once
       the collage moves below the copy there is nothing for it to run across,
       and it reads as a stray diagonal line. */
    .form-content img.shape.p-absolute {
        display: none;
    }
    .form-content {
        padding: 0 20px;
    }
}

@media (max-width: 767px) {
    .form-section--light {
        padding-bottom: 50px;
    }
    .form-content p {
        letter-spacing: 4px !important;
        margin-bottom: 28px !important;
    }
}





.orange-col{
    color:#FE4601
}


.blog-lists-section{
    padding-bottom: 100px;
    background: #0E0920;
}

.blog-lists-section .site-heading h2{
    color:#fff!important;
}

.site-heading p{
    color:#fff!important;

}
/* ==========================================================================
   Brand page hero (/brand) -- components/brand/Hero.js
   Every selector is prefixed with .brand-hero on purpose: style.css sets
   `.bg-dark h1..h6 { color: var(--white) }` (0,1,1), so a bare `.bh-title`
   would lose the cascade and the heading would render white instead of
   orange. The descendant pair scores (0,2,0) and holds.
   Responsive steps for this block live at the end of responsive.css.
   ========================================================================== */
.brand-hero {
    background: #0E0920;
    padding: 50px 0 100px;
}

.brand-hero .bh-title {
    margin: 0;
    text-align: center;
    font-family: var(--font-heading);
    font-weight: 700;
    font-size: 128.8px;
    line-height: 118%;
    letter-spacing: -0.02em;
    color: #FE4601;
}

.brand-hero .bh-quote {
    margin: 34px auto 0;
    max-width: 1100px;
    text-align: center;
}

.brand-hero .bh-quote blockquote {
    margin: 0;
    font-family: var(--font-heading);
    font-weight: 700;
    font-size: 40px;
    line-height: 1.35;
    color: #ffffff;
}

.brand-hero .bh-attrib {
    margin-top: 15px;
    font-weight: 700;
    font-size: 22px;
    line-height: 25.6px;
    letter-spacing: 0.2px;
    text-align: center; 
    color: #FE4601;
}

.brand-hero .bh-note {
    margin: 10px 0 0;
    text-align: center;
    font-size: 16px;
    line-height: 14px;
    color: #fff;
    font-family: 'SF Pro Display';
    letter-spacing: -0.22px;
}

/* The two hairlines are the Figma gradient stroke, not a flat border: 996.8
   wide, 0.8 tall, and the stops run 0E0920 -> FE4601 at 36% and 71% -> 0E0920,
   so each line fades into the band at both ends and stays orange across the
   middle. One rule sits under the title, one above the stats row. */
.brand-hero .bh-rule {
    margin: 50px auto 0;
    max-width: 996.8px;
    width: 100%;
    /* Figma says 0.8 weight, but at that height Chrome rounded the lower line
       top and bottom edges onto the same device pixel and dropped it entirely.
       1px is the nearest hairline that always paints, and at 1x it is what a
       0.8 stroke renders as anyway. */
    height: 1px;
    background: linear-gradient(
        90deg,
        #0E0920 0%,
        #FE4601 36%,
        #FE4601 71%,
        #0E0920 100%
    );
}

/* Only the lower line needs breathing room off the note above it. */
.brand-hero .bh-note + .bh-rule {
    margin-top: 46px;
}

.brand-hero .bh-stats {
    display: flex;
    margin: 44px auto 0;
    padding: 0;
    max-width: 900px;
    list-style: none;
}

.brand-hero .bh-stat {
    position: relative;
    flex: 1 1 0;
    padding: 0 40px;
    text-align: center;
}

/* The column dividers are the same gradient stroke as the horizontal rules,
   turned vertical: 2 wide, 214 tall, 0E0920 -> FE4601 at 35% and 70% ->
   0E0920, so each one fades out at top and bottom. A pseudo-element rather
   than a border because a border cannot carry a gradient, and because 214 is
   taller than the column itself -- the line is meant to overhang the text at
   both ends, centred on the row. Drawn only between columns, never on the
   outer edges. */
.brand-hero .bh-stat + .bh-stat::before {
    content: "";
    position: absolute;
    top: 85%;
    left: 0;
    transform: translateY(-50%);
    width: 1px;
    height: 214px;
    background: linear-gradient(
        180deg,
        #0E0920 0%,
        #FE4601 35%,
        #FE4601 70%,
        #0E0920 100%
    );
}

.brand-hero .bh-figure {
    display: block;
    font-family: var(--font-heading);
    font-weight: 700;
    font-size: 60px;
    line-height: 68px;
    color: #FE4601;
}
.brand-hero .bh-label {
    display: block;
    margin-top: 10px;
    font-size: 18px;
    line-height: 22px;
    font-family: 'SF Pro Display';
    color: #ffffff;
}

/* ==========================================================================
   Brand page -- "Why it matters" (components/brand/WhyItMatters.js)
   Type follows the home page scale: 55/60 heading in #0B0B0F with an #FE4601
   accent. Every selector is prefixed .brand-why because /brand wraps the page
   in .bg-dark, whose `h1..h6 { color: var(--white) }` and `p { ... }` rules in
   style.css would otherwise wash this light band out.
   Responsive steps live at the end of responsive.css.
   ========================================================================== */
.brand-why {
    background: #EFEFF0;
    padding: 100px 0 100px;
}

.brand-why .bw-eyebrow {
    margin: 0 0 18px;
    font-weight: 700;
      font-size: 27px;
    line-height: 25px;
    color: #FE4601;
}

.brand-why .bw-heading {
    margin: 0 0 50px;
    max-width: 1100px;
    font-weight: 700;
    font-size: 55px;
    line-height: 60px;
    letter-spacing: -0.28px;
    color: #0B0B0F;
}

.brand-why .bw-accent {
    color: #FE4601;
}

.brand-why .bw-cards {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 28px;
    margin: 0;
    padding: 0;
    list-style: none;
}

/* Flex column so the artwork can take whatever height is left after the copy:
   cards with a shorter paragraph give their image more room rather than
   ending up shorter than the card beside them. */
.brand-why .bw-card {
    position: relative;
    display: flex;
    flex-direction: column;
    padding: 28px 28px 0;
    min-height: 537px;
    border-radius: 18px;
    background: #ffffff;
    overflow: hidden;
}

.brand-why .bw-card-title {
    margin: 0 0 12px;
    font-weight: 700;
    font-size: 27px;
    line-height: 32px;
    letter-spacing: 0.2px;
    color: #0B0B0F;
}

.brand-why .bw-card-body {
    margin: 0;
    font-size: 16.68px;
    line-height: 21.6px;
    color: #1D1D1F;
    font-family: 'SF Pro Display';
}

/* Negative side margins pull the artwork out to the card edges while the copy
   above keeps its padding. */
.brand-why .bw-card-art {
    flex: 1 1 auto;
    display: flex;
    align-items: flex-end;
    justify-content: center;
    margin: 22px -28px 0;
    min-height: 0;
}

/* The exports are transparent cut-outs on no background, so they are
   contained and sat on the floor of the card rather than cropped to fill. */
.brand-why .bw-card-art img {
    display: block;
    width: 100%;
    height: 100%;
    /* Capped, or a card that goes full width (the third one on tablet) scales
       its art up with the column and towers over the two above it. */
    /* max-height: 300px; */
    object-fit: contain;
    object-position: bottom center;
}

.brand-why .bw-card-cta {
    position: absolute;
    right: 30px;
    bottom: 30px;
    /* transform: translateX(-50%); */
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 11px 35px;
    border-radius: 999px;
    background: #1E77F2;
    font-weight: 600;
    font-size: 14px;
    line-height: 18px;
    white-space: nowrap;
    color: #ffffff;
    transition: background 0.2s ease;
}

.brand-why .bw-card-cta:hover,
.brand-why .bw-card-cta:focus {
    background: #1462CE;
    color: #ffffff;
}

.brand-why .bw-card-arrow {
    font-size: 13px;
    line-height: 1;
}


/* ==========================================================================
   Brand page -- "Brands We Have Built" (components/brand/BrandsBuilt.js)
   Three full-bleed marquee rows. The heading keeps the container; the rows
   run edge to edge, so they are siblings of it rather than children.
   Responsive steps live at the end of responsive.css.
   ========================================================================== */
.brand-marquee {
    background: #0E0920;
    padding: 100px 0 100px;
    font-family: var(--font-heading);
    overflow: hidden;
}

.brand-marquee .bm-eyebrow {
    margin: 0 0 12px;
    font-weight: 700;
    font-size: 27px;
    line-height: 25px;
    color: #FE4601;
}

.brand-marquee .bm-heading {
    margin: 0 0 50px;
    font-weight: 700;
    font-size: 55px;
    line-height: 60px;
    letter-spacing: -0.28px;
    color: #ffffff;
}

.brand-marquee .bm-accent {
    color: #FE4601;
}

.brand-marquee .bm-rows {
    display: flex;
    flex-direction: column;
    gap: 30px;
}

.brand-marquee .bm-row {
    overflow: hidden;
}

/* `width: max-content` stops the flex line from wrapping or shrinking: the
   track has to be its full natural length for -50% to equal exactly one copy.
   `will-change` keeps the whole strip on its own compositor layer, which is
   what makes a track this wide move without tearing. */
.brand-marquee .bm-track {
    display: flex;
    width: max-content;
    animation-name: bm-scroll;
    animation-timing-function: linear;
    animation-iteration-count: infinite;
    will-change: transform;
}

/* Reversing the same keyframes rather than writing a second set, so both
   directions stay locked to one definition of "one copy". */
.brand-marquee .bm-track-rev {
    animation-direction: reverse;
}

/* Paused rather than slowed, so a tile someone is looking at stays put. */
.brand-marquee .bm-row:hover .bm-track {
    animation-play-state: paused;
}

/* The trailing margin is the row's spacing -- see the note in the component
   about why this cannot be a flex `gap`. */
.brand-marquee .bm-item {
    flex: 0 0 auto;
    margin-right: 18px;
}

.brand-marquee .bm-row-media .bm-item {
    height: 300px;
}

/* Height-driven: each tile keeps its own ratio and takes the width it needs,
   so portrait and landscape sit in one strip without being cropped. */
.brand-marquee .bm-row-media .bm-item img {
    display: block;
    width: auto;
    height: 100%;
    border-radius: 14px;
    object-fit: cover;
}

.brand-marquee .bm-row-logos .bm-item {
    height: 120px;
}

.brand-marquee .bm-logo {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 190px;
    height: 100%;
    padding: 0 26px;
    border-radius: 14px;
}

.brand-marquee .bm-logo img {
    display: block;
    max-width: 100%;
    max-height: 46px;
    width: auto;
    height: auto;
    object-fit: contain;
}

@keyframes bm-scroll {
    from {
        transform: translate3d(0, 0, 0);
    }
    to {
        transform: translate3d(-50%, 0, 0);
    }
}

/* A continuously moving strip is exactly what this setting is for. The rows
   still read, they just stop travelling. */
@media (prefers-reduced-motion: reduce) {
    .brand-marquee .bm-track {
        animation: none;
    }
    .brand-marquee .bm-row {
        overflow-x: auto;
    }
}


/* ==========================================================================
   "What We Build It For" -- cube variant (components/home/BuildItForCube.js)
   Namespaced .bifc-* and kept entirely separate from the .builditfor-* rules
   above, so the coverflow version is untouched and either can be dropped.
   ========================================================================== */
.bifc-section {
    background: #0E0920;
    padding: 100px 0;
    font-family: var(--font-heading);
    overflow: hidden;
}

.bifc-grid {
    display: flex;
    align-items: center;
    gap: 0;
}

.bifc-copy {
    flex: 0 0 40%;
    max-width: 40%;
    padding-right: 40px;
}

.bifc-section .bifc-heading {
    margin: 0 0 26px;
    color: #ffffff;
    font-weight: 700;
    font-size: 55px;
    line-height: 60px;
    letter-spacing: -0.28px;
}

.bifc-section .bifc-accent {
    color: #FE4601;
}

.bifc-section .bifc-desc {
    margin: 0;
    max-width: 461px;
    color: #86868B !important;
    font-size: 24px;
    line-height: 30px;
    font-weight: 700;
}

/* Nobody grabs something they have not been told is grabbable, and the cursor
   change alone only reaches people who are already hovering it. */
.bifc-section .bifc-hint {
    display: inline-flex;
    align-items: center;
    gap: 9px;
    margin: 26px 0 0;
    color: #86868B !important;
    font-size: 14px;
    line-height: 18px;
    font-weight: 600;
    letter-spacing: 0.2px;
    text-transform: uppercase;
}

.bifc-hint-dot {
    width: 7px;
    height: 7px;
    border-radius: 50%;
    background: #FE4601;
    box-shadow: 0 0 0 0 rgba(254, 70, 1, 0.55);
    animation: bifc-pulse 2.4s ease-out infinite;
}

@keyframes bifc-pulse {
    0%   { box-shadow: 0 0 0 0 rgba(254, 70, 1, 0.55); }
    70%  { box-shadow: 0 0 0 11px rgba(254, 70, 1, 0); }
    100% { box-shadow: 0 0 0 0 rgba(254, 70, 1, 0); }
}

.bifc-stage {
    flex: 0 0 60%;
    max-width: 60%;
    min-width: 0;
    display: flex;
    flex-direction: column;
    align-items: center;
    /* Room for the card shadows, which are drawn outside the scene box. */
    padding: 30px 0 10px;
}

/* The scene owns the camera. Perspective has to live on an ancestor of the
   thing being rotated -- an element cannot create a perspective and be rotated
   inside it -- so scene and ring are two elements.

   --bifc-r is the radius of the circle the cards stand on, and it is set from
   the card width rather than picked: at 1.55x the width the neighbours clear
   the card at the front, so the active card is never partly covered. Drop it
   and the ring tightens until the cards overlap; raise it and the circle
   flattens out into a row.

   --bifc-step must match STEP in the component (360 / number of cards). The
   stylesheet places the cards; the component only knows how far round each one
   is when it works out which is at the front.

   `overflow: visible` because the ring is much wider than the card box it is
   measured from -- the far cards have to be allowed outside it. */
.bifc-scene {
    --bifc-cw: 250px;
    --bifc-ch: 345px;
    --bifc-r: calc(var(--bifc-cw) * 1.55);
    /* The ring is pushed back down the camera axis by exactly its own radius,
       so the card at the front sits at z = 0 instead of a radius nearer the
       lens. Without this the front card is projected far larger than its own
       box -- it burst out of the section and covered the dots -- and the depth
       cue turns into plain magnification. */
    --bifc-pull: calc(var(--bifc-r) * -1);
    --bifc-step: 40deg;
    position: relative;
    width: var(--bifc-cw);
    height: var(--bifc-ch);
    /* A long lens. Shorter and the front card balloons while the side cards
       shear; this keeps the circle believable. */
    perspective: 1500px;
    perspective-origin: 50% 50%;
    overflow: visible;
    cursor: grab;
    /* The ring only wants the horizontal axis. Handing the vertical one back to
       the browser is what stops a thumb swipe over the cards from trapping the
       page scroll on a phone. */
    touch-action: pan-y;
    -webkit-user-select: none;
    user-select: none;
}

.bifc-scene.is-grabbing {
    cursor: grabbing;
}

/* No keyframe here on purpose. The turn is written to this element's transform
   every frame by the component, because a CSS animation cannot be grabbed and
   thrown, and because the per-card scale, fade and caption all need the exact
   angle. */
.bifc-ring {
    position: absolute;
    inset: 0;
    transform-style: preserve-3d;
    transform: translateZ(var(--bifc-pull));
    will-change: transform;
}

/* This is the whole trick: every card is turned to its own place on the circle
   and then pushed straight out from the centre by the radius. Nine cards at
   40deg apart end up standing in a ring, each facing outward, so the one at
   the front faces the camera square on.

   The scale and the fade are separate from this transform -- they are written
   to the custom properties from the frame loop, and this rule just reads them,
   so a card's place on the circle and its emphasis never fight each other. */
.bifc-card {
    position: absolute;
    inset: 0;
    transform:
        rotateY(calc(var(--i) * var(--bifc-step)))
        translateZ(var(--bifc-r))
        scale(var(--bifc-scale, 1));
    /* Nothing here may create a stacking context or clip: no overflow, no
       opacity, no filter. Any one of them flattens the two plates below into a
       single plane and the card stops being double-sided. The look -- radius,
       background, shadow, fade -- therefore lives on the plates. */
    transform-style: preserve-3d;
}

/* The two sides of one card. Each hides its own backface, so at any moment
   exactly one of them is drawn: the front while the card is on the near half
   of the circle, the back while it is round the far side. That is what keeps
   the whole ring populated instead of leaving the back empty. */
.bifc-plate {
    position: absolute;
    inset: 0;
    border-radius: 20px;
    overflow: hidden;
    background: #19132F;
    box-shadow: 0 26px 54px rgba(0, 0, 0, 0.5);
    opacity: var(--bifc-fade, 1);
    backface-visibility: hidden;
}

/* Turned to face the other way. The image inside is turned with it, so a card
   seen from behind shows the picture the right way round rather than mirrored. */
.bifc-plate-back {
    transform: rotateY(180deg);
}

.bifc-card img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
    /* A dragged image is a ghost thumbnail following the cursor, and it kills
       the grab. */
    -webkit-user-drag: none;
    pointer-events: none;
}

/* Shading pass. One fixed light at the front of the scene: the component sets
   --bifc-shade per card from how far that card has turned away from it, so a
   card going round the side sinks and comes back out. This is what gives the
   ring depth rather than leaving it a flat fan of cards. */
.bifc-shade {
    position: absolute;
    inset: 0;
    background: #05030F;
    opacity: var(--bifc-shade, 0);
    pointer-events: none;
}

/* --bifc-copy is set every frame: a card more than about 35deg off square has
   its caption faded out, because at that angle the text is a skew rather than
   a sentence. No transition -- the frame loop is the easing. */
.bifc-layer {
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0;
    padding: 22px 24px 24px;
    opacity: var(--bifc-copy, 1);
    /* Sat straight on the card rather than on a blurred panel -- a backdrop
       filter on a rotating 3D element is what makes these flicker in Safari. */
    background: linear-gradient(
        180deg,
        rgba(14, 9, 32, 0) 0%,
        rgba(14, 9, 32, 0.82) 42%,
        rgba(14, 9, 32, 0.94) 100%
    );
}

.bifc-layer-title {
    display: block;
    margin-bottom: 6px;
    color: #ffffff;
    font-weight: 700;
    font-size: 22px;
    line-height: 27px;
}

.bifc-section .bifc-layer-desc {
    margin: 0;
    color: #C9C9CE !important;
    font-size: 15px;
    line-height: 21px;
    font-weight: 500;
}

/* Position round the ring, and a way to reach a card without turning to it.
   Outside the scene, so the perspective never touches them. */
.bifc-dots {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    margin-top: 46px;
}

.bifc-dots .bifc-dot {
    width: 8px;
    height: 8px;
    padding: 0;
    border: 0;
    border-radius: 50%;
    background: rgba(255, 255, 255, 0.22);
    cursor: pointer;
    transition: background 0.25s ease, width 0.25s ease;
}

.bifc-dots .bifc-dot.is-on {
    /* Widened rather than only recoloured, so the position is readable at a
       glance and not only to someone who can pick the orange out. */
    width: 26px;
    border-radius: 4px;
    background: #FE4601;
}

/* Motion off: the component skips its frame loop, so the ring holds its
   starting angle. The cards keep their places on the circle, and it stays
   draggable -- that is a deliberate action, not motion imposed on the reader. */
@media (prefers-reduced-motion: reduce) {
    .bifc-hint-dot {
        animation: none;
    }
}

/* --------------------------------------------------------------------------
   Brand page -- first marquee row ("the work"). It runs taller than the two
   rows below it and carries two kinds of slide, so it gets its own modifier
   rather than sharing .bm-row-media: rows two and three keep their 300px rule
   untouched.

   Two variables drive the whole row. --bm-work-h is the row height, and
   --bm-work-w is the width of a stacked column, which cannot be derived from
   the height the way the tall tiles' width is: the halves are exported at two
   different widths (324 and 287 against the same 353 height), so letting them
   size themselves would leave one column narrower than the rest and put a
   notch in the strip. Fixing the width and cropping to fill is what keeps the
   row's rhythm even. Both step down together in responsive.css.
   -------------------------------------------------------------------------- */
.brand-marquee .bm-row-work {
    --bm-work-h: 480px;
    --bm-work-w: 216px;
    --bm-work-gap: 10px;
}

.brand-marquee .bm-row-work .bm-item {
    height: var(--bm-work-h);
}

/* Height-driven, like the rows below: the tile keeps its 413x720 ratio and
   takes whatever width that needs. The ratio is declared rather than left to
   the file, because `width: auto` on an image that has not arrived yet is
   zero: the tall tiles would start the row collapsed and shove the strip
   sideways as each one decoded. */
.brand-marquee .bm-row-work .bm-tall {
    display: block;
    width: auto;
    height: 100%;
    aspect-ratio: 413 / 720;
    border-radius: 14px;
    object-fit: cover;
}

/* `min-height: 0` on the halves because a flex item defaults to min-content:
   without it each image would refuse to go below its own natural height and
   the column would push past the row. */
.brand-marquee .bm-row-work .bm-stack {
    display: flex;
    flex-direction: column;
    gap: var(--bm-work-gap);
    width: var(--bm-work-w);
    height: 100%;
}

.brand-marquee .bm-row-work .bm-stack img {
    display: block;
    flex: 1 1 0;
    min-height: 0;
    width: 100%;
    border-radius: 14px;
    object-fit: cover;
}

/* --------------------------------------------------------------------------
   Brand page -- third marquee row, the brand tiles. Its own modifier rather
   than the older .bm-row-logos, because those rules size a coloured wrapper
   around a bare logo and these files are finished tiles.

   The box is fixed at 210x189 from the design. The artwork is 315x284, the
   same ratio, so `cover` has nothing to crop -- it is there to hold the shape
   if a later export comes in slightly off.
   -------------------------------------------------------------------------- */
.brand-marquee .bm-row-brands {
    --bm-brand-w: 210px;
    --bm-brand-h: 189px;
}

.brand-marquee .bm-row-brands .bm-item {
    height: var(--bm-brand-h);
}

.brand-marquee .bm-row-brands .bm-brand {
    display: block;
    width: var(--bm-brand-w);
    height: 100%;
    border-radius: 20px;
    object-fit: cover;
}

/* ==========================================================================
   Brand page -- "Two Halves. Fourteen Decisions." Two horizontal accordions.

   The open panel is grown with `flex-grow`, not with a width: flex-grow is an
   animatable number, so the open panel takes exactly the space the closed
   spines leave over at any container width, and still animates. A width would
   have to be guessed per breakpoint and would never land flush.

   The label strip is laid out horizontally at all times and rotated -90deg
   while closed, because `writing-mode` cannot be transitioned -- swapping it
   would snap the label to upright the instant the panel opened. The icon
   counter-rotates +90deg so it reads upright in both states.

   The section runs light on a dark page, so every rule carries .bsee-section:
   style.css scores `.bg-dark h1..h6 { color: var(--white) }` at (0,1,1) and a
   bare heading rule would lose to it and render white on white.
   ========================================================================== */
.bsee-section {
    /* Fixed, and identical open or shut: the row never changes height, so the
       two columns stay level with each other and nothing below them moves
       when a panel opens. */
    --bsee-h: 234px;
    --bsee-spine: 46px;
    --bsee-gap: 8px;
    /* Inset at the top of every panel. The label strip is pushed down by it
       and shortened by the same amount, so it still ends flush with the
       bottom of the panel. */
    --bsee-pad: 18px;
    /* One duration and one curve for the width, the label turn and the icon,
       so the three read as a single movement. The curve decelerates hard at
       the end, which is what stops the panel looking like it snaps shut. */
    --bsee-dur: 0.72s;
    --bsee-ease: cubic-bezier(0.22, 1, 0.36, 1);
    background: #fff;
    padding: 100px 0;
}

.bsee-section .bsee-eyebrow {
    margin: 0 0 15px;
    font-weight: 700;
    font-size: 27px;
    line-height: 25px;
    color: #FE4601;
    text-align: center;
}

.bsee-section .bsee-heading {
    margin: 0 0 50px;
    font-weight: 700;
    font-size: 55px;
    line-height: 60px;
    letter-spacing: -0.28px;
    color: #0E0920;
    text-align: center;
}

.bsee-section .bsee-accent {
    color: #FE4601;
}

.bsee-section .bsee-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 24px;
}

.bsee-section .bsee-col {
    background: #3d3d3d14;
    border-radius: 20px;
    padding: 25px;
}

.bsee-section .bsee-col-title {
    margin: 10px 0 25px;
    font-weight: 700;
    font-size: 42px;
    line-height: 42px;
    color: #1D1D1F;
    text-align: center;
}

.bsee-section .bsee-panels {
    display: flex;
    gap: var(--bsee-gap);
    height: var(--bsee-h);
}

/* `flex-basis` is the closed spine and `flex-grow` does the opening. The
   overflow is what crops the rotated label strip to the spine, so it has to
   stay on the panel itself. */
.bsee-section .bsee-panel {
    position: relative;
    flex: 0 0 var(--bsee-spine);
    min-width: 54px;
    padding: 0;
    border: none;
    border-radius: 9px;
    box-shadow: 1.8px 3.6px 10.8px 0px rgba(0, 0, 0, 0.08);
    background: #ffffff;
    overflow: hidden;
    text-align: left;
    cursor: pointer;
    -webkit-appearance: none;
    appearance: none;
    transition: flex-grow var(--bsee-dur) var(--bsee-ease),
                box-shadow var(--bsee-dur) var(--bsee-ease);
}

.bsee-section .bsee-panel.is-open {
    flex-grow: 1;
    box-shadow: 0 10px 30px rgba(14, 9, 32, 0.08);
    cursor: default;
}

.bsee-section .bsee-panel:focus-visible {
    outline: 2px solid #FE4601;
    outline-offset: 2px;
}

/* Sized to the panel's own height, because rotated it has to span top to
   bottom. `translateX(-100%)` runs in the rotated frame, which is what drops
   the strip back down over the panel after the turn. */
.bsee-section .bsee-face {
    position: absolute;
    left: 0;
    top: var(--bsee-pad);
    display: flex;
    align-items: center;
    gap: 15px;
    width: calc(var(--bsee-h) - var(--bsee-pad));
    height: var(--bsee-spine);
    padding: 0 16px;
    transform-origin: 0 0;
    transform: rotate(-90deg) translateX(-100%);
    transition: transform var(--bsee-dur) var(--bsee-ease);
}

.bsee-section .bsee-panel.is-open .bsee-face {
    transform: rotate(0deg) translateX(0);
}

.bsee-section .bsee-icon {
    flex: 0 0 auto;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 26px;
    height: 26px;
    transform: rotate(90deg);
    transition: transform var(--bsee-dur) var(--bsee-ease);
}

.bsee-section .bsee-panel.is-open .bsee-icon {
    transform: rotate(0deg);
}

/* Contained rather than stretched: the set is not all one aspect ratio, and
   the rotation means any difference shows up as a wobble between panels. */
.bsee-section .bsee-icon img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: contain;
}

.bsee-section .bsee-label {
    font-weight: 700;
    font-size: 18px;
    font-family: 'SF Pro Display';
    line-height: 25px;
    letter-spacing: 0.6px;
    text-transform: uppercase;
    color: #1D1D1F;
    white-space: nowrap;
}
/* Held in the DOM and hidden with opacity rather than display: a panel that
   re-wraps its text on every click cannot animate its width smoothly. It is
   free to take the panel's width -- it must not be given a min-width, or in
   the narrower two-column band it lays out wider than the panel and the
   `overflow: hidden` silently cuts the ends off every line. The fade is
   delayed instead, so the copy appears once the box is near its full size. */
.bsee-section .bsee-text {
    position: absolute;
    left: 0;
    right: 0;
    top: calc(var(--bsee-pad) + var(--bsee-spine));
    padding: 0 20px 20px;
    font-weight: 400;
    font-size: 18px;
    line-height: 25px;
    color: #1D1D1F;
    opacity: 0;
    pointer-events: none;
    transition: opacity 0.2s ease;
}

/* Held back until the panel is most of the way open, so the copy arrives into
   a box already close to its final width instead of re-wrapping as it fades. */
.bsee-section .bsee-panel.is-open .bsee-text {
    opacity: 1;
    transition: opacity 0.42s ease 0.3s;
}

@media (prefers-reduced-motion: reduce) {
    .bsee-section .bsee-panel,
    .bsee-section .bsee-face,
    .bsee-section .bsee-icon,
    .bsee-section .bsee-text {
        transition: none;
    }
}


    .bsee-section .bsee-text {
        padding: 0px 16px 16px;
        font-size: 16px;
        line-height: 23px;
    }
/* --------------------------------------------------------------------------
   Brand page -- dark quote band.

   letter-spacing is given as -3% in the design. CSS has no percentage here, so
   it is resolved against the font size: 3% of 50px = 1.5px. Every step below
   re-resolves it against its own size rather than carrying 1.5px down, or the
   tracking would tighten as the type shrinks.
   -------------------------------------------------------------------------- */
.bquote-band {
    background: #0E0920;
    padding: 100px 0;
}

.bquote-band .bquote-text {
    margin: 0;
    font-family: var(--font-heading);
    font-weight: 600;
    font-size: 50px;
    line-height: 69.1px;
    letter-spacing: -1.5px;
    color: #ffffff;
    text-align: center;
}

.bquote-band .bquote-accent {
    color: #FE4601;
}

/* ==========================================================================
   Search page hero (components/search/Hero.js)
   Colours, type scale and the stat row are lifted wholesale from .brand-hero
   so the two heroes read as a pair -- 128.8px/118% orange title, 60/68 stat
   figures, 18/22 labels, the same gradient column strokes. Only the query pill
   and the struck-out claim are new.
   Every selector is prefixed .search-hero: the page is wrapped in .bg-dark,
   whose `h1..h6 { color: var(--white) }` in style.css scores (0,1,1) and would
   beat a bare .sh-title, turning the orange heading white.
   Responsive steps live at the end of responsive.css.
   ========================================================================== */
.search-hero {
    background: #0E0920;
    padding: 50px 0 100px;
}

.search-hero .sh-title {
    margin: 0;
    text-align: center;
    font-family: var(--font-heading);
    font-weight: 700;
    font-size: 128.8px;
    line-height: 118%;
    letter-spacing: -0.02em;
    color: #FE4601;
}

/* The pill. Fully rounded, so the radius is half the height rather than a
   fixed number -- it stays a capsule at every responsive step without being
   retuned. */
.search-hero .sh-query {
    display: flex;
    align-items: center;
    gap: 16px;
    margin: 35px auto 0;
    max-width: 746px;
    width: 100%;
    min-height: 66px;
    padding: 12px 26px 12px 30px;
    border: 1px solid #2E2842;
    border-radius: 999px;
    background: #1C1730;
}

.search-hero .sh-query-text {
    flex: 1 1 auto;
    font-family: 'SF Pro Display';
    font-size: 20px;
    line-height: 22px;
    color: rgba(255, 255, 255, 0.62);
}

.search-hero .sh-query-icon {
    flex: 0 0 auto;
    font-size: 22px;
    line-height: 1;
    color: rgba(255, 255, 255, 0.62);
}

.search-hero .sh-dead {
    margin: 64px 0 0;
    text-align: center;
    font-family: 'SF Pro Display';
    font-weight: 700;
    font-size: 48px;
    line-height: 28px;
    letter-spacing: -1.26px;
    color: #FE4601;
}

/* inline-block so the rule can be measured against the words, not the full
   centred line box. */
.search-hero .sh-dead span {
    position: relative;
    display: inline-block;
}

/* arrow.svg is the struck-through stroke -- 283x15 natively, and it is drawn
   to the width of the words rather than a fixed size, so it keeps covering the
   line at every responsive step. `100% 100%` rather than `contain`: the art is
   a single horizontal stroke, so stretching it along its own axis is what it
   is for, and letting it letterbox would leave the ends short of the text. */
.search-hero .sh-dead span::after {
    content: "";
    position: absolute;
    left: -10px;
    right: -10px;
    top: 50%;
    height: 15px;
    transform: translateY(-50%);
    background: url("../others/icons/arrow.svg") center center / 100% 100% no-repeat;
}

.search-hero .sh-line {
    margin: 20px 0 0;
    text-align: center;
    font-weight: 700;
    font-size: 48px;
    line-height: 58px;
    color: #ffffff;
}
.search-hero .sh-stats {
    display: flex;
    margin: 88px auto 0;
    padding: 0;
    max-width: 820px;
    list-style: none;
}

.search-hero .sh-stat {
    position: relative;
    flex: 1 1 0;
    padding: 0 25px;
    text-align: center;
}

/* Same gradient stroke as the brand hero: 1 wide, 214 tall, fading to the band
   colour at both ends so it overhangs the text rather than boxing it. A
   pseudo-element because a border cannot carry a gradient. Between columns
   only, never on the outer edges. */
.search-hero .sh-stat + .sh-stat::before {
    content: "";
    position: absolute;
    top: 85%;
    left: 0;
    transform: translateY(-50%);
    width: 1px;
    height: 214px;
    background: linear-gradient(
        180deg,
        #0E0920 0%,
        #FE4601 35%,
        #FE4601 70%,
        #0E0920 100%
    );
}

.search-hero .sh-figure {
    display: block;
    font-family: var(--font-heading);
    font-weight: 700;
    font-size: 60px;
    line-height: 68px;
    color: #FE4601;
}

.search-hero .sh-label {
    display: block;
    margin-top: 10px;
    font-size: 18px;
    line-height: 22px;
    font-family: 'SF Pro Display';
    color: #ffffff;
}

/* ==========================================================================
   Search page -- "Not Just Numbers" (components/search/Results.js)
   The brand page's "Why it matters" band with a large orange figure in place
   of each card title. Values are kept in step with .brand-why deliberately --
   the two read as a pair -- but the selectors are separate so either page can
   be retuned without moving the other.
   Every selector is prefixed .search-results because /search wraps the page in
   .bg-dark, whose `h1..h6 { color: var(--white) }` and `p { ... }` rules in
   style.css would otherwise wash this light band out.
   Responsive steps live at the end of responsive.css.
   ========================================================================== */
.search-results {
    background: #EFEFF0;
    padding: 100px 0 100px;
}

.search-results .sr-eyebrow {
    margin: 0 0 18px;
    font-weight: 700;
    font-size: 27px;
    line-height: 25px;
    color: #FE4601;
}

.search-results .sr-heading {
    margin: 0 0 50px;
    max-width: 1100px;
    font-weight: 700;
    font-size: 55px;
    line-height: 60px;
    letter-spacing: -0.28px;
    color: #0B0B0F;
}

.search-results .sr-accent {
    color: #FE4601;
}

.search-results .sr-cards {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 28px;
    margin: 0;
    padding: 0;
    list-style: none;
}

/* Flex column so the artwork can take whatever height is left after the copy:
   cards with a shorter paragraph give their image more room rather than
   ending up shorter than the card beside them. */
.search-results .sr-card {
    position: relative;
    display: flex;
    flex-direction: column;
    padding: 28px 28px 0;
    min-height: 537px;
    border-radius: 18px;
    background: #ffffff;
    overflow: hidden;
}

/* line-height 1 and no top margin: at this size the default half-leading
   would push the figure a visible step down from the card padding, and the
   copy is meant to sit directly under it. */
.search-results .sr-figure {
    margin: 0 0 14px;
    font-family: var(--font-heading);
    font-weight: 700;
    font-size: 93px;
    line-height: 80px;
    letter-spacing: -0.02em;
    color: #FE4601;
}

.search-results .sr-card-body {
    margin: 0;
    font-size: 16.68px;
    line-height: 21.6px;
    color: #1D1D1F;
    font-family: 'SF Pro Display';
}

/* Negative side margins pull the artwork out to the card edges while the copy
   above keeps its padding. */
.search-results .sr-card-art {
    flex: 1 1 auto;
    display: flex;
    align-items: flex-end;
    justify-content: center;
    margin: 22px -28px 0;
    min-height: 0;
}

/* The exports are transparent cut-outs on no background, so they are
   contained and sat on the floor of the card rather than cropped to fill. */
.search-results .sr-card-art img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: contain;
    object-position: bottom center;
}

.search-results .sr-card-cta {
    position: absolute;
    right: 30px;
    bottom: 30px;
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 11px 35px;
    border-radius: 999px;
    background: #1E77F2;
    font-weight: 600;
    font-size: 14px;
    line-height: 18px;
    white-space: nowrap;
    color: #ffffff;
    transition: background 0.2s ease;
}

.search-results .sr-card-cta:hover,
.search-results .sr-card-cta:focus {
    background: #1462CE;
    color: #ffffff;
}

.search-results .sr-card-arrow {
    font-size: 13px;
    line-height: 1;
}

/* ==========================================================================
   Search page -- "Why search" (components/search/WhySearch.js)
   Heading full width, then copy left / photograph right. The purple is local
   to this section and lives in one place at the top of the block, since it is
   the only violet on the site -- everything else runs on #FE4601.
   Responsive steps live at the end of responsive.css.
   ========================================================================== */
.search-why {
    --swy-purple: #754CDA;
    background: #ffffff;
    padding: 100px 0 100px;
}

.search-why .swy-eyebrow {
    margin: 0 0 18px;
    font-weight: 700;
    font-size: 27px;
    line-height: 25px;
    color: #FE4601;
}

.search-why .swy-heading {
    margin: 0 0 44px;
    max-width: 1100px;
    font-weight: 700;
    font-size: 55px;
    line-height: 60px;
    letter-spacing: -0.28px;
    color: #0B0B0F;
}

.search-why .swy-accent {
    color: #FE4601;
}

.search-why .swy-grid {
    display: grid;
    grid-template-columns: 1fr 537px;
    gap: 30px;
    align-items: stretch;
}

/* space-between rather than a margin: the button stays at the top of the
   column and the copy blocks drop to the floor, so they finish level with the
   bottom of the photograph however tall it ends up. */
.search-why .swy-col {
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    gap: 40px;
}

.search-why .swy-cta,
.search-ways .swy-cta,
.social-wrong .swy-cta,
.ant-reports .swy-cta,
.wsc-cases .swy-cta {
    align-self: flex-start;
    display: inline-flex;
    align-items: center;
    gap: 18px;
    padding: 9px 9px 9px 36px;
    border-radius: 999px;
    font-weight: 500;
    font-size: 21.6px;
    line-height: 38.9px;
    background: #8668FF;
    white-space: nowrap;
    letter-spacing: -0.48px;
    color: #ffffff;
    transition: filter 0.2s ease;
}

.search-why .swy-cta:hover,
.search-why .swy-cta:focus,
.search-ways .swy-cta:hover,
.search-ways .swy-cta:focus {
    filter: brightness(0.93);
    color: #ffffff;
}

/* The disc is a fixed square so it stays a circle whatever the label does --
   flex would otherwise squeeze it to an oval when the row runs short of room. */
.search-why .swy-cta-icon,
.search-ways .swy-cta-icon,
.social-wrong .swy-cta-icon,
.ant-reports .swy-cta-icon,
.wsc-cases .swy-cta-icon {
    flex: 0 0 auto;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 36px;
    height: 36px;
    border-radius: 50%;
    background: #ffffff;
    font-size: 15px;
    line-height: 1;
    color: var(--swy-purple);
}

/* 246 is the Figma width of the first block; the second takes what is left.
   min-height rather than the flat 249 of the frame -- the copy is editable and
   one line more would otherwise spill out of a fixed box. stretch keeps the
   pair the same height whichever one runs longer. */
.search-why .swy-cards {
    display: grid;
    grid-template-columns: 246px 1fr;
    gap: 10px;
    align-items: stretch;
    min-height: 249px;
}

.search-why .swy-card {
    margin: 0;
    padding: 30px 23px;
    border-radius: 20px;
    background: #F4F4F4;
    font-family: 'SF Pro Display';
    font-size: 18px;
    line-height: 150%;
    color: #555555;
}

/* Same weight as the surrounding copy: the colour is doing the emphasis, and
   bolding it as well makes the blocks read as two competing voices. */
.search-why .swy-hl {
    font-weight: inherit;
    color: var(--swy-purple);
}

/* The export is 806x681 -- the same 1.183 ratio as 537x454 -- so `cover` fills
   the box without cropping anything out of frame. */
.search-why .swy-art {
    width: 537px;
    height: 454px;
    border-radius: 26px;
    overflow: hidden;
}

.search-why .swy-art img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
}

/* ── /search — "The shift that matters" ─────────────────────────────────── */
/* Same dark ground as the hero so the two dark bands on the page read as one
   material, with the light Results/Why bands between them. */
.search-shift {
    background: #0E0920;
    padding: 100px 0;
}

.search-shift .ssh-eyebrow {
    margin: 0 0 18px;
    font-weight: 700;
    font-size: 27px;
    line-height: 25px;
    color: #FE4601;
}

.search-shift .ssh-heading {
    margin: 0 0 26px;
    max-width: 1100px;
    font-weight: 700;
    font-size: 55px;
    line-height: 60px;
    letter-spacing: -0.28px;
    color: #ffffff;
}

.search-shift .ssh-accent {
    color: #FE4601;
}

.search-shift .ssh-intro {
    margin: 0 0 46px;
    max-width: 980px;
    font-size: 16px;
    line-height: 26px;
    color: rgba(255, 255, 255, 0.72);
}

/* A <dl> is a block container, so the keyword/question pairs are wrapped in a
   div each -- that wrapper is the grid cell, and dt/dd stack inside it. */
.search-shift .ssh-pairs {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 30px;
    margin: 0;
}

.search-shift .ssh-pair {
    display: flex;
    flex-direction: column;
}

.search-shift .ssh-keyword {
    margin: 0 0 14px;
    font-weight: 600;
    font-size: 22px;
    line-height: 150%;
    color: #fff;
    text-decoration: line-through;
    text-decoration-color: #FE4601;
}


/* flex:1 rather than a fixed height: the three questions are different lengths
   and the cards still finish level whichever one runs to an extra line. */
.search-shift .ssh-question {
    flex: 1 1 auto;
    margin: 0;
    padding: 25px 25px;
    border-radius: 15px;
    background: #8668FF;
    font-size: 18px;
    line-height: 150%;
    color: #ffffff;
}
/* ── /search — "What you get" (SEO / AEO / GEO) ──────────────────────────── */
.search-layers {
    background: #0E0920;
    padding: 100px 0;
}

/* Heading column on the left, the intro set against it on the right and
   centred on the heading block, as in the mock. */
.search-layers .sly-head {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 39%;
    gap: 40px;
    align-items: center;
    margin: 0 0 90px;
}

.search-layers .sly-eyebrow {
    margin: 0 0 18px;
    font-weight: 700;
    font-size: 27px;
    line-height: 25px;
    color: #FE4601;
}

/* max-width holds the three-line setting from the mock -- "Run Together."
   finishes line one -- instead of letting the heading run the full column. */
.search-layers .sly-heading {
    margin: 0;
    max-width: 560px;
    font-weight: 700;
    font-size: 55px;
    line-height: 60px;
    letter-spacing: -0.28px;
    color: #ffffff;
}

.search-layers .sly-accent {
    color: #FE4601;
}

.search-layers .sly-intro {
    margin: 0;
    font-size: 18px;
    line-height: 150%;
    color: rgba(255, 255, 255, 0.85);
}

/* One grid per row with the same column template, so the goals start on one
   line down the list at the mock's 36% whatever the name widths are. */
.search-layers .sly-row {
    display: grid;
    grid-template-columns: 36% minmax(0, 1fr);
    align-items: center;
    padding: 44px 0;
    border-bottom: 1px solid rgba(255, 255, 255, 0.14);
}

.search-layers .sly-row-head {
    padding: 0 0 22px;
    font-weight: 500;
    font-size: 18px;
    line-height: 120%;
    letter-spacing: 12%;
    text-transform: uppercase;
    color: #A29ABF;
}

.search-layers .sly-name {
    font-weight: 700;
    font-size: 42px;
    line-height: 110%;
    color: var(--sly-tone, #ffffff);
}

.search-layers .sly-goal {
    font-size: 24px;
    line-height: 37%;
    color: #FFFFFF;
}
/* ── /search — "How we work" (four steps) ──────────────────────────────────
   Type and card values are the homepage .sixparts- card's, so the two read as
   the same component; only the layout differs (a fixed grid, not a rail). */
.search-steps {
    background: #EFEFF0;
    padding: 100px 0;
}

.search-steps .sst-eyebrow {
    margin: 0 0 18px;
    font-weight: 700;
    font-size: 27px;
    line-height: 25px;
    color: #FE4601;
}

.search-steps .sst-heading {
    margin: 0 0 40px;
    font-weight: 700;
    font-size: 55px;
    line-height: 60px;
    letter-spacing: -0.8px;
    color: #0B0B0F;
}

.search-steps .sst-accent {
    color: #FE4601;
}

/* stretch keeps the four cards one height; the artwork is pushed to the floor
   of each with margin-top:auto, so the images line up along the bottom even
   though the copy above them runs to different lengths. */
.search-steps .sst-cards {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 20px;
    align-items: stretch;
    margin: 0;
    padding: 0;
    list-style: none;
}

.search-steps .sst-card {
    display: flex;
    flex-direction: column;
    padding: 26px 24px 0;
    border-radius: 22px;
    background: #ffffff;
    box-shadow: 0 1px 2px rgba(11, 11, 15, 0.05);
    overflow: hidden;
}

.search-steps .sst-title {
    margin: 0 0 10px;
    font-weight: 700;
    font-size: 27.2px;
    line-height: 32px;
    color: #1D1D1F;
}

.search-steps .sst-desc {
    margin: 0 0 20px;
    font-family: 'SF Pro Display';
    font-size: 16.68px;
    line-height: 21.6px;
    letter-spacing: -0.27px;
    color: #1D1D1F;
}

/* Bled to the card's side and bottom edges; the card's overflow clips it to
   the corner radius. */
.search-steps .sst-media {
    margin: auto -24px 0;
}

.search-steps .sst-media img {
    display: block;
    width: 100%;
    height: auto;
}

/* ── /search — "What we measure" (hover-open cards) ────────────────────────── */
.search-measure {
    --smm-h: 470px;          /* closed card height */
    --smm-h-open: 600px;     /* open card height */
    --smm-grow: 1.45;        /* open card width relative to a closed one */
    --smm-ease: cubic-bezier(0.22, 0.61, 0.36, 1);
    background: #F7F7F5;
    padding: 100px 0;
}

.search-measure .smm-eyebrow {
    margin: 0 0 18px;
    font-weight: 700;
    font-size: 27px;
    line-height: 25px;
    color: #FE4601;
}

.search-measure .smm-heading {
    margin: 0 0 50px;
    font-weight: 700;
    font-size: 55px;
    line-height: 60px;
    letter-spacing: -0.8px;
    color: #0B0B0F;
}

.search-measure .smm-accent {
    color: #FE4601;
}

/* The row is as tall as an open card and the cards are centred in it, so the
   open one grows out above and below its neighbours and nothing under the
   section jumps when a card opens. */
.search-measure .smm-row {
    display: flex;
    align-items: center;
    gap: 20px;
    height: var(--smm-h-open);
    margin: 0;
    padding: 0;
    list-style: none;
}

.search-measure .smm-card {
    position: relative;
    flex: 1 1 0;
    min-width: 0;
    height: var(--smm-h);
    border-radius: 20px;
    background: #ffffff;
    box-shadow: 0 1px 2px rgba(11, 11, 15, 0.04);
    overflow: hidden;
    outline: none;
    transition: flex-grow 0.5s var(--smm-ease), height 0.5s var(--smm-ease),
        box-shadow 0.5s var(--smm-ease);
}

/* The first card starts open; any card under the pointer or keyboard opens. */
.search-measure .smm-card:first-child,
.search-measure .smm-card:hover,
.search-measure .smm-card:focus-within {
    flex-grow: var(--smm-grow);
    height: var(--smm-h-open);
    box-shadow: 0 24px 60px rgba(11, 11, 15, 0.1);
}

.search-measure .smm-card:focus-visible {
    box-shadow: 0 0 0 3px rgba(254, 70, 1, 0.45), 0 24px 60px rgba(11, 11, 15, 0.1);
}

/* Both states fill the card and cross-fade. The closed layer leaves at once;
   the open layer waits until the card has most of its new size, so the copy
   is never seen squeezed mid-transition. */
.search-measure .smm-closed,
.search-measure .smm-open {
    position: absolute;
    inset: 0;
}

.search-measure .smm-closed {
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    padding: 28px 28px 30px;
    transition: opacity 0.2s ease;
}

.search-measure .smm-num {
    font-weight: 300;
    font-size: 64px;
    line-height: 1;
    letter-spacing: -0.02em;
    color: #E5E7EB;
}

.search-measure .smm-label {
    font-weight: 500;
    font-size: 20px;
    line-height: 26px;
    color: #1D1D1F;
}

.search-measure .smm-open {
    display: flex;
    flex-direction: column;
    opacity: 0;
    transition: opacity 0.2s ease;
}

.search-measure .smm-card:first-child .smm-closed,
.search-measure .smm-card:hover .smm-closed,
.search-measure .smm-card:focus-within .smm-closed {
    opacity: 0;
}

.search-measure .smm-card:first-child .smm-open,
.search-measure .smm-card:hover .smm-open,
.search-measure .smm-card:focus-within .smm-open {
    opacity: 1;
    transition: opacity 0.35s ease 0.2s;
}

/* The artwork takes whatever the copy does not, so the card never carries a
   band of empty white under a short title; it settles from a slight zoom as
   the card opens. */
.search-measure .smm-media {
    flex: 1 1 auto;
    min-height: 0;
    overflow: hidden;
}

.search-measure .smm-media img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
    transform: scale(1.08);
    transition: transform 0.7s var(--smm-ease);
}

.search-measure .smm-card:first-child .smm-media img,
.search-measure .smm-card:hover .smm-media img,
.search-measure .smm-card:focus-within .smm-media img {
    transform: scale(1);
}

.search-measure .smm-body {
    flex: 0 0 auto;
    padding: 26px 30px 30px;
}

.search-measure .smm-title {
    margin: 0 0 10px;
    font-weight: 700;
    font-size: 32px;
    line-height: 41px;
    color: #111827;
}

.search-measure .smm-desc {
     margin: 0;
    font-size: 18px;
    line-height: 150%;
    color: #6B7280;
}

/* ...and closes again the moment another card is hovered or focused, so only
   one is ever open. Desktop-with-hover only: below 1024 and on touch every
   card renders open (responsive.css) and must not be closed by this. */
@media (min-width: 1024px) and (hover: hover) {
    .search-measure .smm-row:has(.smm-card:not(:first-child):hover, .smm-card:not(:first-child):focus-within) .smm-card:first-child:not(:hover):not(:focus-within) {
        flex-grow: 1;
        height: var(--smm-h);
        box-shadow: 0 1px 2px rgba(11, 11, 15, 0.04);
    }
    .search-measure .smm-row:has(.smm-card:not(:first-child):hover, .smm-card:not(:first-child):focus-within) .smm-card:first-child:not(:hover):not(:focus-within) .smm-closed {
        opacity: 1;
        transition: opacity 0.35s ease 0.2s;
    }
    .search-measure .smm-row:has(.smm-card:not(:first-child):hover, .smm-card:not(:first-child):focus-within) .smm-card:first-child:not(:hover):not(:focus-within) .smm-open {
        opacity: 0;
        transition: opacity 0.2s ease;
    }
    .search-measure .smm-row:has(.smm-card:not(:first-child):hover, .smm-card:not(:first-child):focus-within) .smm-card:first-child:not(:hover):not(:focus-within) .smm-media img {
        transform: scale(1.08);
    }
}

@media (prefers-reduced-motion: reduce) {
    .search-measure .smm-card,
    .search-measure .smm-closed,
    .search-measure .smm-open,
    .search-measure .smm-media img {
        transition: none !important;
    }
}

/* ── /search — "Three ways we work" ────────────────────────────────────────── */
/* --swy-purple is set here too because the shared "Let's talk" button's arrow
   disc reads it, and outside .search-why it would otherwise be undefined. */
.search-ways {
    --swy-purple: #754CDA;
    background: #0E0920;
    padding: 100px 0;
}

.search-ways .swa-eyebrow {
    margin: 0 0 18px;
    text-align: center;
    font-weight: 700;
    font-size: 27px;
    line-height: 25px;
    color: #FE4601;
}

.search-ways .swa-heading {
    margin: 0 0 50px;
    text-align: center;
    font-weight: 700;
    font-size: 55px;
    line-height: 60px;
    letter-spacing: -0.28px;
    color: #ffffff;
}

.search-ways .swa-accent {
    color: #FE4601;
}

.search-ways .swa-cards {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 24px;
    margin: 0;
    padding: 0;
    list-style: none;
}

/* Deep violet running darker toward the foot, with a hairline edge so the
   card still separates from the band where the two colours meet. */
.search-ways .swa-card {
    padding: 36px 32px 40px;
    border: 1px solid rgba(134, 104, 255, 0.22);
    border-radius: 16px;
        background: #2A1755;
}

.search-ways .swa-name {
    margin: 0 0 10  px;
    font-weight: 700;
    font-size: 30px;
    line-height: 36px;
    color: #FF6D36;
}

.search-ways .swa-promise {
    margin: 0 0 0px;
    font-weight: 600;
    font-size: 17px;
    line-height: 25px;
    border-bottom: 1px solid rgba(255, 255, 255, 0.12);
    color: #ffffff;
    padding-bottom: 15px;
}


.search-ways .swa-for {
    margin: 0 0 10px;
    font-size: 16px;
    line-height: 25px;
    padding-top: 26px;
    color: rgba(255, 255, 255, 0.72);
}
/* The hairline under the promise-of-outcome splits the pitch from the list. */
.search-ways .swa-outcome {
    margin: 0 0 26px;
    padding: 0 0 15px;
    border-bottom: 1px solid rgba(255, 255, 255, 0.12);
    font-weight: 700;
    font-size: 28px;
    line-height: 30px;
    color: #ffffff;
}

.search-ways .swa-items {
    display: grid;
    gap: 16px;
    margin: 0;
    padding: 0;
    list-style: none;
}

.search-ways .swa-item {
    position: relative;
    padding-left: 22px;
    font-size: 17.43px;
    line-height: 25px;
    color: rgba(255, 255, 255, 0.82);
}

.search-ways .swa-item::before {
    content: "";
    position: absolute;
    left: 0;
    top: 0.6em;
    width: 7px;
    height: 7px;
    border-radius: 50%;
    background: #8668FF;
}

.search-ways .swa-foot {
    display: flex;
    justify-content: center;
    margin-top: 56px;
}

/* ==========================================================================
   Social content page -- hero (components/social-content/Hero.js)
   Values are kept in step with .search-hero on purpose: the two pages are a
   matched pair and that type scale is the one already signed off. The
   selectors stay separate so either page can be retuned without moving the
   other.
   Every selector is prefixed .social-hero because the page is wrapped in
   .bg-dark, whose `h1..h6 { color: var(--white) }` in style.css would
   otherwise turn the orange title white.
   Responsive steps live at the end of responsive.css.
   ========================================================================== */
.social-hero {
    background: #0E0920;
    padding: 50px 0 0;
}

.social-hero .sch-title {
    margin: 0;
    text-align: center;
    font-family: var(--font-heading);
    font-weight: 700;
    font-size: 128.8px;
    line-height: 105%;
    letter-spacing: -0.02em;
    color: #FE4601;
}

/* The hairline above the quote is the rule the mock draws between the title
   and the sentence; a border on the blockquote rather than a separate element
   so it cannot drift out of step with the spacing. */
/* The two hairlines are the brand hero's gradient stroke, reused rule for rule:
   996.8 wide, 1 tall, stops 0E0920 -> FE4601 at 36% and 71% -> 0E0920, so each
   fades into the band at both ends. One under the title, one above the stats. */
.social-hero .sch-rule {
    margin: 50px auto 0;
    max-width: 996.8px;
    width: 100%;
    height: 1px;
    background: linear-gradient(
        90deg,
        #0E0920 0%,
        #FE4601 36%,
        #FE4601 71%,
        #0E0920 100%
    );
}

/* Only the lower line needs breathing room off the note above it. */
.social-hero .sch-note + .sch-rule {
    margin-top: 46px;
}

.social-hero .sch-quote {
    margin: 34px auto 0;
    max-width: 1100px;
    text-align: center;
}

.social-hero .sch-quote blockquote {
    margin: 0;
    font-family: var(--font-heading);
    font-weight: 700;
    font-size: 40px;
    line-height: 1.35;
    color: #ffffff;
}

.social-hero .sch-attrib {
    margin-top: 15px;
    font-weight: 700;
    font-size: 22px;
    line-height: 25.6px;
    letter-spacing: 0.2px;
    color: #FE4601;
}

.social-hero .sch-note {
    margin: 10px 0 0;
    text-align: center;
    font-size: 16px;
    line-height: 14px;
    color: #fff;
    font-family: 'SF Pro Display';
    letter-spacing: -0.22px;
}

.social-hero .sch-stats {
    display: flex;
    margin: 44px auto 0;
    padding: 0;
    max-width: 1136px;
    list-style: none;
}

.social-hero .sch-stat {
    position: relative;
    flex: 1 1 0;
    padding: 0 30px;
    text-align: center;
}

/* Same gradient stroke as the search and brand heroes: 1 wide, 214 tall,
   fading to the band colour at both ends so it overhangs the text rather than
   boxing it. A pseudo-element because a border cannot carry a gradient.
   Between columns only, never on the outer edges. */
.social-hero .sch-stat + .sch-stat::before {
    content: "";
    position: absolute;
    top: 85%;
    left: 0;
    transform: translateY(-50%);
    width: 1px;
    height: 214px;
    background: linear-gradient(
        180deg,
        #0E0920 0%,
        #FE4601 35%,
        #FE4601 70%,
        #0E0920 100%
    );
}

.social-hero .sch-figure {
    display: block;
    font-family: var(--font-heading);
    font-weight: 700;
    font-size: 60px;
    line-height: 68px;
    color: #FE4601;
}

.social-hero .sch-label {
    display: block;
    margin-top: 10px;
    font-size: 18px;
    line-height: 22px;
    font-family: 'SF Pro Display';
    color: #ffffff;
}

/* ── The platform strip ─────────────────────────────────────────────────────
   Full-bleed and rules off top and bottom, so it reads as the band's floor. */
.social-hero .sch-strip {
    margin-top: 130px;
    /* border-bottom: 1px solid #2E2842; */
    background: #1D1340;
    overflow: hidden;
}

/* `width: max-content` stops the flex line from wrapping or shrinking: the
   track has to be its full natural length for -50% to equal exactly one copy
   of the list, which is what makes the seam invisible. */
.social-hero .sch-track {
    display: flex;
    width: max-content;
    /* Slower than the shorter strip needed: one copy of the track is now four
       passes of the list, so the old duration would have made it race. */
    animation: sch-scroll 90s linear infinite;
    will-change: transform;
}

.social-hero .sch-strip:hover .sch-track {
    animation-play-state: paused;
}

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

/* The divider is a pseudo-element on the chip rather than a border, so the
   two copies of the list join without doubling a rule at the seam. */
.social-hero .sch-chip {
       position: relative;
    display: block;
    flex: 0 0 auto;
    padding: 18px 46px;
    font-family: 'SF Pro Display';
    font-size: 23px;
    line-height: 118%;
    color: rgba(255, 255, 255, 0.86);
    white-space: nowrap;
    transition: color 0.2s ease;
}

/* The chips are links to the footer's accounts now, so they need a hover. */
.social-hero .sch-chip:hover,
.social-hero .sch-chip:focus-visible {
    color: #FE4601;
}

.social-hero .sch-chip::after {
    content: "";
    position: absolute;
    right: 0;
    top: 37%;
    transform: translateY(-50%);
    width: 2px;
    height: 20px;
    transform: rotate(16deg);
    background: #FE4601;
}

@media (prefers-reduced-motion: reduce) {
    .social-hero .sch-track {
        animation: none;
    }
}

/* ==========================================================================
   Social content page -- "The work" (components/social-content/TheWork.js)
   The section renders the brand marquee's own classes, so the track, the tile
   sizing and the loop come from the .brand-marquee rules above. Only what this
   page shows differently is set here: a light band with a dark heading in
   place of the dark one.
   ========================================================================== */
.brand-marquee.social-work {
    background: #ffffff;
}

.brand-marquee.social-work .bm-heading {
    color: #1D1D1F;
}

/* ==========================================================================
   Social content page -- "Where most get it wrong"
   (components/social-content/WrongPlatform.js)
   One dark panel on the page's white band. The dark is pattern.webp itself,
   so no background colour is declared here -- the artwork is the background.
   Responsive steps live at the end of responsive.css.
   ========================================================================== */
/* The artwork runs edge to edge, not inside the container: the background
   sits on the section itself and only the copy is held to the container width.
   `cover` on a 2160x980 export means the band is always wider than it is tall,
   so the crop only ever takes a little off the top and bottom of the waves and
   the pattern never tiles or letterboxes. Centred so the lighter sweep through
   the middle of the art stays behind the heading at every width. */
.social-wrong {
    padding: 100px 0 100px;
    background: url("../others/the-work/social-content/pattern.webp") center center / cover no-repeat;
}

.social-wrong .swr-panel {
    text-align: center;
}

.social-wrong .swr-eyebrow {
    margin: 0 0 18px;
    font-weight: 700;
    font-size: 27px;
    line-height: 25px;
    color: #FE4601;
}

.social-wrong .swr-heading {
    max-width: 860px;
    margin: 0 auto 24px;
    font-weight: 700;
    font-size: 55px;
    line-height: 60px;
    letter-spacing: -0.28px;
    color: #ffffff;
}

.social-wrong .swr-accent {
    color: #FE4601;
}

.social-wrong .swr-body {
    max-width: 700px;
    margin: 0 auto 44px;
    font-family: 'SF Pro Display';
    font-size: 16px;
    line-height: 150%;
    color: rgba(255, 255, 255, 0.82);
}

/* Size, padding and radius all come from the shared .swy-cta rule above; the
   frame only changes the colours -- white pill, dark label, purple disc. The
   base rule also left-aligns the button inside a column, which this centred
   panel has to undo. */
.social-wrong .swy-cta {
    align-self: center;
    background: #ffffff;
    color: #0B0B0F;
}

.social-wrong .swy-cta:hover,
.social-wrong .swy-cta:focus {
    color: #0B0B0F;
}

.social-wrong .swy-cta-icon {
    background: #8668FF;
    color: #ffffff;
}

/* ==========================================================================
   Social content page -- "Platforms we run"
   (components/social-content/Platforms.js)
   Six equal columns on the page's white band. Type is the scale the other
   sections on this page already use (27 eyebrow, 55/60 heading).
   Responsive steps live at the end of responsive.css.
   ========================================================================== */
.social-platforms {
    background: #ffffff;
    padding: 100px 0;
}

.social-platforms .spl-eyebrow {
    margin: 0 0 12px;
    font-weight: 700;
    font-size: 27px;
    line-height: 25px;
    color: #FE4601;
}

.social-platforms .spl-heading {
    margin: 0 0 50px;
    font-weight: 700;
    font-size: 55px;
    line-height: 60px;
    letter-spacing: -0.28px;
    color: #1D1D1F;
}

.social-platforms .spl-accent {
    color: #FE4601;
}

.social-platforms .spl-cards {
    display: flex;
    gap: 16px;
    margin: 0;
    padding: 0;
    list-style: none;
}

/* `flex: 1 1 0` with `min-width: 0` so all six share the row evenly and the
   longest paragraph cannot push a card wider than its neighbours. The height
   and radius are the frame's own values. */
.social-platforms .spl-card {
    display: flex;
    flex-direction: column;
    flex: 1 1 0;
    min-width: 0;
    height: 456.12px;
    padding: 26.4px 20px;
    border-radius: 17.6px;
    overflow: hidden;
}

/* The three tones repeat down the row: dark, light, purple, dark, light,
   purple. Only the colours change between them -- everything else about a
   card is set above, so a tone is never a second copy of the layout. */
.social-platforms .spl-dark {
    background: linear-gradient(180deg, #171717 0%, #4D4D4E 100%);
    color: #ffffff;
}

.social-platforms .spl-light {
    background: #E7E6EB;
    color: #1D1D1F;
}

.social-platforms .spl-purple {
    background: #9471FF;
    color: #ffffff;
}

/* Prefixed with the tone as well as the section: .bg-dark's
   `h1..h6 { color: var(--white) }` in style.css outranks a bare .spl-name and
   would take the dark type off the light cards. */
.social-platforms .spl-card .spl-name {
    margin: 0 0 14px;
    font-weight: 700;
    font-size: 26px;
    line-height: 150%;
    letter-spacing: -0.2px;
    color: inherit;
}

.social-platforms .spl-kicker {
    margin: 0 0 18px;
    font-size: 12px;
    line-height: 15px;
    font-weight: 500;
}

.social-platforms .spl-body {
    margin: 0 0 18px;
    font-size: 15px;
    line-height: 150%;
}

.social-platforms .spl-tags {
    margin: 0;
    font-size: 12px;
    line-height: 139%;
}

/* Colour is restated per tone rather than inherited from the card: style.css
   sets `.bg-dark p { color: ... }`, which outranks a bare .spl-body and would
   otherwise wash the copy out on the light cards. The kicker and the tag line
   are the same ink at 72%, which is how the frame dims them. */
.social-platforms .spl-dark .spl-name,
.social-platforms .spl-dark .spl-body,
.social-platforms .spl-purple .spl-name,
.social-platforms .spl-purple .spl-body {
    color: #ffffff;
}

.social-platforms .spl-dark .spl-kicker,
.social-platforms .spl-dark .spl-tags,
.social-platforms .spl-purple .spl-kicker,
.social-platforms .spl-purple .spl-tags {
    color: rgba(255, 255, 255, 0.72);
}

.social-platforms .spl-light .spl-name,
.social-platforms .spl-light .spl-body {
    color: #1D1D1F;
}

.social-platforms .spl-light .spl-kicker,
.social-platforms .spl-light .spl-tags {
    color: rgba(29, 29, 31, 0.72);
}

/* `margin-top: auto` pins the icon to the floor of every card, so the six line
   up across the row however long the copy above them runs. */
.social-platforms .spl-icon {
    display: block;
    width: 139px;
    height: auto;
    margin: auto auto 0;
}

/* ==========================================================================
   Social content page -- "How we work" (components/social-content/HowWeWork.js)
   The pinned five-step section. .sst-scroll is five viewports tall and
   .sst-stage sticks to the top of the screen inside it, so the stage holds
   still while those five viewports of scrolling go past -- that scrolling is
   what changes the step. The pin is dropped below 1024 in responsive.css.
   ========================================================================== */
.social-steps {
    background: #ffffff;
    padding: 0 0 0;
}

.social-steps .sst-eyebrow {
    margin: 0 0 12px;
    font-weight: 700;
    font-size: 27px;
    line-height: 25px;
    color: #FE4601;
    text-align: center;
}

.social-steps .sst-heading {
    margin: 0 0 50px;
    font-weight: 700;
    font-size: 55px;
    line-height: 60px;
    letter-spacing: -0.28px;
    color: #1D1D1F;
    text-align: center;
}

.social-steps .sst-accent {
    color: #FE4601;
}

/* Five screens of scrolling: one per step. Change this multiplier and the
   section simply takes longer or less long to read through -- the component
   divides whatever height this is into STEPS.length equal bands. */
.social-steps .sst-scroll {
    position: relative;
    height: 500vh;
}

.social-steps .sst-stage {
    position: sticky;
    top: 0;
    display: flex;
    height: 100vh;
    overflow: hidden;
    background: #0A0A0B;
}

.social-steps .sst-visual {
    flex: 0 0 38%;
    overflow: hidden;
}

.social-steps .sst-visual img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
}

/* Flat, and it alternates between the two darks step by step -- the component
   puts .is-alt on the panel for every odd step. The transition is the same
   length as the copy's, so the tone and the text turn together. */
.social-steps .sst-panel {
    position: relative;
    flex: 1 1 auto;
    display: flex;
    align-items: center;
    padding: 0 80px 0 150px;
    background: #111111;
    transition: background-color 0.45s ease;
}

.social-steps .sst-panel.is-alt {
    background: #1C1C1C;
}

/* Every step occupies the same box, stacked: the first one is in the flow so
   the panel keeps its height, the rest are laid over it. Only .is-active is
   visible, and the rise on the way in is what reads as a step "turning". */
.social-steps .sst-step {
    max-width: 660px;
    opacity: 0;
    transform: translateY(18px);
    transition: opacity 0.45s ease, transform 0.45s ease;
    pointer-events: none;
}

.social-steps .sst-step + .sst-step {
    position: absolute;
    top: 50%;
    left: 150px;
    right: 80px;
    transform: translateY(calc(-50% + 18px));
}

.social-steps .sst-step.is-active {
    opacity: 1;
    transform: translateY(0);
    pointer-events: auto;
}

.social-steps .sst-step + .sst-step.is-active {
    transform: translateY(-50%);
}

.social-steps .sst-num {
    margin: 0 0 26px;
    font-weight: 700;
    font-size: 91px;
    line-height: 80px;
    letter-spacing: -0.02em;
    color: #754CDA;
}

.social-steps .sst-step .sst-title {
    margin: 0 0 20px;
    font-weight: 700;
    font-size: 37.03px;
    line-height: 36px;
    letter-spacing: -0.3px;
    color: #ffffff;
}

.social-steps .sst-body {
    margin: 0;
    font-size: 20px;
    line-height: 150%;
    color: rgba(255, 255, 255, 0.88);
}

/* With motion turned down the copy still swaps, it just does not travel. */
@media (prefers-reduced-motion: reduce) {
    .social-steps .sst-step {
        transition: opacity 0.2s ease;
        transform: none;
    }
    .social-steps .sst-step + .sst-step,
    .social-steps .sst-step + .sst-step.is-active {
        transform: translateY(-50%);
    }
}

/* ==========================================================================
   Social content page -- "What we make"
   (components/social-content/WhatWeMake.js)
   Five phones in a staggered row. Everything about a phone is driven by one
   number, --wmk-w: the frame's 234 x 473.4 body, and the PNG's own 350 x 708
   body inside an 870-tall canvas, give the two ratios below. Set --wmk-w at a
   breakpoint and the row rescales whole.
   Responsive steps live at the end of responsive.css.
   ========================================================================== */
.social-make {
    --wmk-w: 234px;
    --wmk-gap: 34px;
    background: #ffffff;
    padding: 100px 0;
    overflow: hidden;
}

.social-make .wmk-eyebrow {
    margin: 0 0 12px;
    font-weight: 700;
    font-size: 27px;
    line-height: 25px;
    color: #FE4601;
    text-align: center;
}

.social-make .wmk-heading {
    margin: 0 0 50px;
    font-weight: 700;
    font-size: 55px;
    line-height: 60px;
    letter-spacing: -0.28px;
    color: #1D1D1F;
    text-align: center;
}

.social-make .wmk-accent {
    color: #FE4601;
}

/* `align-items: flex-start` so each phone's own top offset is what places it;
   the row's height is set by the tallest stack, not by the first phone. */
.social-make .wmk-row {
    display: flex;
    justify-content: center;
    align-items: flex-start;
    gap: var(--wmk-gap);
    margin: 0;
    padding: 0 0 0px;
    list-style: none;
}

/* The box is the phone body exactly -- the image overhangs it with the
   shadow, which is why the gap between two phones can be read straight off
   this box rather than guessed around transparent padding. */
.social-make .wmk-phone {
    position: relative;
    flex: 0 0 auto;
    width: var(--wmk-w);
    height: calc(var(--wmk-w) * 2.0231);
}

.social-make .wmk-device {
    position: absolute;
    top: 0;
    left: 0;
    width: auto;
    max-width: none;
    height: calc(var(--wmk-w) * 2.4859);
}

/* The staggered heights of the frame. Each phone has its own class so one can
   be moved without disturbing its neighbours. */
.social-make .wmk-phone-1 { margin-top: 0; }
.social-make .wmk-phone-2 { margin-top: 145px; }
.social-make .wmk-phone-3 { margin-top: 66px; }
.social-make .wmk-phone-4 { margin-top: 217px; }
.social-make .wmk-phone-5 { margin-top: 0; }

/* Held inside the body box with its own padding, so the copy can never sit on
   the bezel or out over the shadow however long a format name runs. */
.social-make .wmk-screen {
    position: absolute;
    inset: 8% 9% 10%;
    display: flex;
    align-items: center;
    justify-content: center;
    text-align: center;
}

/* Two animations, kept on separate elements because both move on the Y axis
   and one transform would overwrite the other: the slide carries the slow bob
   that never stops, the three lines inside it carry the turn. */
.social-make .wmk-slide {
    width: 100%;
    animation: wmk-bob 3.4s ease-in-out infinite;
}

/* Heading, rule and sub text each come in on their own beat, a tenth of a
   second apart, so the screen reads top to bottom rather than all at once.
   The overshoot past the resting line and back is the shake. */
.social-make .wmk-slide > * {
    animation: wmk-turn 0.62s cubic-bezier(0.22, 1.4, 0.36, 1) both;
}

.social-make .wmk-slide > *:nth-child(2) {
    animation-delay: 0.1s;
}

.social-make .wmk-slide > *:nth-child(3) {
    animation-delay: 0.2s;
}

@keyframes wmk-turn {
    0%   { opacity: 0; transform: translateY(16px); }
    55%  { opacity: 1; transform: translateY(-7px); }
    75%  { transform: translateY(4px); }
    90%  { transform: translateY(-2px); }
    100% { opacity: 1; transform: translateY(0); }
}

@keyframes wmk-bob {
    0%, 100% { transform: translateY(-3px); }
    50%      { transform: translateY(3px); }
}

.social-make .wmk-title {
    margin: 0;
    font-weight: 700;
    font-size: 30px;
    line-height: 34px;
    letter-spacing: -0.3px;
    color: #ffffff;
    overflow-wrap: break-word;
}

.social-make .wmk-rule {
    display: block;
    width: 34px;
    height: 2px;
    margin: 16px auto;
    background: rgba(255, 255, 255, 0.7);
}

.social-make .wmk-label {
    margin: 0;
    font-size: 14px;
    line-height: 18px;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: rgba(255, 255, 255, 0.92);
    overflow-wrap: break-word;
}

@media (prefers-reduced-motion: reduce) {
    .social-make .wmk-slide,
    .social-make .wmk-slide > * {
        animation: none;
    }
}

/* ==========================================================================
   Social content page -- "Three ways we work"
   (components/social-content/ThreeWays.js)
   The /search section's own band and cards, so only this version's own parts
   are here: the standfirst, the grouped lists, and the ticks that replace the
   dots. Everything not listed below is inherited from .search-ways above.
   ========================================================================== */
.social-ways .swa-outcome {
    margin: 0 0 16px;
    padding: 0;
    border-bottom: 0;
}

.social-ways .swa-intro {
    margin: 0 0 24px;
    padding: 0 0 22px;
    border-bottom: 1px solid rgba(255, 255, 255, 0.12);
    font-size: 16px;
    line-height: 25px;
    color: rgba(255, 255, 255, 0.72);
}

.social-ways .swa-group + .swa-group {
    margin-top: 26px;
}

.social-ways .swa-group-title {
    margin: 0 0 16px;
    font-weight: 700;
    font-size: 16px;
    line-height: 22px;
    color: #ffffff;
}

/* The tick takes the dot's place, so the base rule's bullet is dropped here
   and the row becomes a flex line instead: the mark keeps its own column and
   a wrapping item stays hanging-indented under its first word. */
.social-ways .swa-item {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    padding-left: 0;
    font-size: 15.5px;
    line-height: 23px;
}

.social-ways .swa-item::before {
    content: none;
}

.social-ways .swa-tick {
    flex: 0 0 auto;
    /* Nudged to sit on the first line's cap height rather than its box. */
    margin-top: 3px;
       color: #ffffff;
}

.social-ways .swa-tick svg {
    display: block;
}

.social-ways .swa-items {
    gap: 13px;
}


.swa-group {
    padding: 0 0 22px;
    border-bottom: 1px solid rgba(255, 255, 255, 0.12);
}
/* ==========================================================================
   Social content page -- "Followers are not a business outcome"
   (components/social-content/Metrics.js)
   Six cards overlapping in one row. The stack order is set by z-index in
   source order; hover only lifts, it never reorders.
   Responsive steps live at the end of responsive.css.
   ========================================================================== */
.social-metrics {
    --smt-overlap: 34px;
    background: #ffffff;
    padding: 100px 0;
}

.social-metrics .smt-heading {
    margin: 0 0 18px;
    font-weight: 700;
    font-size: 55px;
    line-height: 60px;
    letter-spacing: -0.28px;
    color: #1D1D1F;
    text-align: center;
}

.social-metrics .smt-accent {
    color: #FE4601;
}

.social-metrics .smt-note {
    max-width: 900px;
    margin: 0 auto 50px;
    font-size: 16px;
    line-height: 26px;
    color: rgba(29, 29, 31, 0.68);
    text-align: center;
}

/* The row is padded at the top by exactly the lift distance, so a raised card
   has somewhere to go and the section does not grow when one is hovered. */
.social-metrics .smt-row {
    display: flex;
    justify-content: center;
    margin: 0;
    /* padding: 30px 0; */
    list-style: none;
}

.social-metrics .smt-card {
    position: relative;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    text-align: center;
    flex: 1 1 0;
    min-width: 0;
    height: 350px;
    padding: 34px calc(26px + var(--smt-overlap) / 2);
    border-radius: 23.76px;
    color: #ffffff;
    transition: transform 0.35s ease, box-shadow 0.35s ease;
}

/* Each card laps over the one before it. The z-index climbs with the row, so
   the later card is always the one on top -- the same order the eye reads. */
.social-metrics .smt-card + .smt-card {
    margin-left: calc(var(--smt-overlap) * -1);
}

.social-metrics .smt-card-1 { z-index: 1; background: linear-gradient(90deg, #7B4DF2 0%, #9664EB 100%); }
.social-metrics .smt-card-2 { z-index: 2; background: linear-gradient(90deg, #F86472 0%, #ED383E 100%); }
.social-metrics .smt-card-3 { z-index: 3; background: linear-gradient(90deg, #17C7F0 0%, #4660F0 100%); }
.social-metrics .smt-card-4 { z-index: 4; background: linear-gradient(90deg, #28DDB0 0%, #2ECDF4 100%); }
.social-metrics .smt-card-5 { z-index: 5; background: linear-gradient(90deg, #3A4BF4 0%, #506DEA 100%); }
.social-metrics .smt-card-6 { z-index: 6; background: #FE4601; }


/* The hovered card comes out of the stack: raised above every z-index in the
   row so neither neighbour clips it, and grown from its own centre so it spills
   past its neighbours top and bottom -- the row reserves that growth as its own
   vertical padding, so the section never changes height. The growth also
   uncovers the copy that the next card was lapping over.
   :focus-within is here too, so the same thing happens on a keyboard. */
.social-metrics .smt-card:hover,
.social-metrics .smt-card:focus-within {
    z-index: 10;
    transform: scale(1.14);
    box-shadow: 0 22px 50px rgba(17, 17, 17, 0.26);
}

.social-metrics .smt-card .smt-title {
    margin: 0 0 14px;
    font-weight: 700;
    font-size: 24.2px;
    line-height: 27.5px;
    letter-spacing: -0.2px;
    color: #ffffff;
}

.social-metrics .smt-body {
    margin: 0;
    font-size: 18px;
    line-height: 24px;
    color: rgba(255, 255, 255, 0.92);
}

@media (prefers-reduced-motion: reduce) {
    .social-metrics .smt-card {
        transition: none;
    }
}

/* ── Blog sidebar enquiry: the budget field, the honeypot and the error line.
   The rest of the card is styled in blogs.css; these three are new with the
   form now asking exactly what the popup form asks. ───────────────────────── */
.bdd-reach-form .bdd-reach-select {
  width: 100%;
  border: 1.5px solid #e5e7eb;
  border-radius: 10px;
  padding: 10px 14px;
  font-size: 13.5px;
  color: var(--bl-dark, #0b0b0f);
  background: #fff;
  outline: none;
  box-sizing: border-box;
  font-family: inherit;
  appearance: none;
  background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath fill='%23b0b7c3' d='M1 1l5 5 5-5'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 14px center;
  transition: border 0.2s, box-shadow 0.2s;
}
.bdd-reach-form .bdd-reach-select:focus {
  border-color: var(--bl-primary, #ee4c49);
  box-shadow: 0 0 0 3px rgba(238, 76, 73, 0.08);
}
/* Empty means the placeholder option is showing — keep it grey like the inputs. */
.bdd-reach-form .bdd-reach-select:invalid { color: #b0b7c3; }

.bdd-reach-form .bdd-reach-hp {
  position: absolute !important;
  left: -9999px !important;
  width: 1px !important;
  height: 1px !important;
  opacity: 0 !important;
}

.bdd-reach-form .bdd-reach-err {
  margin: 0;
  font-size: 12.5px;
  font-weight: 600;
  color: #d13c39;
}

/* ── Enquiry popup: where its messages land ───────────────────────────────
   The page and the popup each render a react-toastify container. A toast with
   no containerId goes to the one mounted last — the popup's — so the popup's
   copy is the one that has to be visible, and it has to sit above the overlay
   (z-index 12000). The page's copy is hidden meanwhile so nothing doubles up.
   Without this every "fill in all fields" / "already sent us a request"
   message was rendered into a display:none container and the SUBMIT button
   looked dead. */
body.vlp-enquiry-open .Toastify { display: none !important; }
body.vlp-enquiry-open .vlp-panel .Toastify { display: block !important; }
.vlp-panel .Toastify__toast-container { z-index: 13000 !important; }

/* ── Honeypot: out of the browser's reach ────────────────────────────────────
   The spam-trap field in the enquiry form (components/home/Form.js) sits
   off-screen, which hides it from people but NOT from Chrome autofill and
   password managers — they filled it with the visitor's own email, the API
   read that as a bot and answered 400. A field that is not rendered at all is
   skipped by autofill, while a script reading the HTML still fills it in, so
   the trap keeps working. Declared here because Form.js must stay untouched. */
.vl-hp {
  display: none !important;
}

/* ==========================================================================
   Paid ads page -- hero (components/paid-ads/Hero.js)
   The component renders .social-hero .paid-hero, so every rule above applies
   first and only the differences live here: six stat columns instead of four,
   and a floor, because this hero ends on the stats rather than on the social
   page's platform strip. Responsive steps are at the end of responsive.css.
   ========================================================================== */
.social-hero.paid-hero {
    padding-bottom: 90px;
}

/* Six columns in the same 1136 as four: the side padding comes down and the
   figures step back a size, so "10,000" and "100 Cr" stay on one line. */
.paid-hero .sch-stat {
    padding: 0 16px;
}

.paid-hero .sch-figure {
    font-size: 48px;
    line-height: 56px;
}

.paid-hero .sch-label {
    margin-top: 8px;
    font-size: 15px;
    line-height: 20px;
}

/* The stroke is drawn for the taller four-column row; six shorter columns need
   it shorter or it hangs well below the labels. */
.paid-hero .sch-stat + .sch-stat::before {
    height: 150px;
}

/* The six figures do not fit the 1136 container at the social hero's rhythm --
   "3 yrs" and the longer labels were wrapping. Only on this page the stat row
   steps outside the container: it is centred on the viewport and allowed up to
   1400, columns size to their own text, and nothing wraps. Below 1240 the row
   folds (responsive.css), which is where wrapping is fine again. */
.paid-hero .sch-stats {
    max-width: none;
    width: min(1400px, calc(100vw - 48px));
    margin-left: 50%;
    transform: translateX(-50%);
    justify-content: center;
}

.paid-hero .sch-stat {
    flex: 0 1 auto;
    padding: 0 26px;
    white-space: nowrap;
}

/* ==========================================================================
   Paid ads page -- "What the accounts actually did."
   (components/paid-ads/Results.js)
   The search page's results band with four cards instead of three, a category
   kicker over each figure and the client's name under the artwork. Values are
   kept in step with .search-results on purpose -- the two read as a pair --
   but the selectors are separate so either page can be retuned without moving
   the other.
   Every selector is prefixed .pa-results because the page is wrapped in
   .bg-dark, whose `h1..h6 { color: var(--white) }` and `p` rules in style.css
   would otherwise wash this light band out.
   Responsive steps live at the end of responsive.css.
   ========================================================================== */
.pa-results {
    background: #EFEFF0;
    padding: 100px 0 100px;
}

.pa-results .par-eyebrow {
    margin: 0 0 18px;
    font-weight: 700;
    font-size: 27px;
    line-height: 25px;
    color: #FE4601;
}

.pa-results .par-heading {
    margin: 0 0 50px;
    max-width: 1100px;
    font-weight: 700;
    font-size: 55px;
    line-height: 60px;
    letter-spacing: -0.28px;
    color: #0B0B0F;
}

.pa-results .par-accent {
    color: #FE4601;
}

.pa-results .par-cards {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 24px;
    margin: 0;
    padding: 0;
    list-style: none;
}

/* Flex column so the artwork takes whatever height is left after the copy:
   a card with a shorter line gives its image more room rather than ending up
   shorter than the card beside it. */
.pa-results .par-card {
    position: relative;
    display: flex;
    flex-direction: column;
    padding: 24px 24px 84px;
    min-height: 470px;
    border-radius: 18px;
    background: #ffffff;
    overflow: hidden;
}

.pa-results .par-kicker {
    margin: 0 0 10px;
    font-weight: 700;
    font-size: 11px;
    line-height: 14px;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: #0B0B0F;
    font-family: 'SF Pro Display';
}

/* line-height 1 and no top margin: at this size the default half-leading
   would push the figure a visible step down from the kicker. */
.pa-results .par-figure {
    margin: 0 0 10px;
    font-family: var(--font-heading);
    font-weight: 700;
    font-size: 40px;
    line-height: 42px;
    letter-spacing: -0.02em;
    color: #FE4601;
}

.pa-results .par-card-body {
    margin: 0;
    font-size: 16.68px;
    line-height: 21.6px;
    color: #1D1D1F;
    font-family: 'SF Pro Display';
}

/* Negative side margins pull the artwork out to the card edges while the copy
   above keeps its padding. */
.pa-results .par-card-art {
    flex: 1 1 auto;
    display: flex;
    align-items: flex-end;
    justify-content: center;
    margin: 18px -24px 14px;
    min-height: 0;
}

/* The exports are transparent cut-outs on no background, so they are
   contained and sat on the floor of the card rather than cropped to fill. */
.pa-results .par-card-art img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: contain;
    object-position: bottom center;
}

.pa-results .par-client {
    margin: 0;
    font-size: 16.68px;
    line-height: 21.6px;
    letter-spacing: -0.27px;
    color: #1D1D1F;
    font-family: 'SF Pro Display';
}

.pa-results .par-client-name {
    color: #1D1D1F;
}

/* Pinned to the card floor so every button lines up across the row whatever
   the copy above does -- the card's bottom padding is what reserves its
   space. The violet is the same one /search uses for its own pill; everything
   else on the site runs on #FE4601. */
.pa-results .par-card-cta {
    position: absolute;
    left: 24px;
    bottom: 26px;
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 10px 22px;
    border-radius: 999px;
    background: #754CDA;
    font-weight: 600;
    font-size: 13px;
    line-height: 17px;
    white-space: nowrap;
    color: #ffffff;
    transition: background 0.2s ease;
}

.pa-results .par-card-cta:hover,
.pa-results .par-card-cta:focus {
    background: #5F3BBB;
    color: #ffffff;
}

.pa-results .par-card-arrow {
    font-size: 12px;
    line-height: 1;
}

/* ==========================================================================
   Paid ads page -- "You want return on ad spend."
   (components/paid-ads/ReturnOnSpend.js)
   The search page's dark statement band with no eyebrow and two paragraphs
   under the heading. Values are kept in step with .search-shift on purpose;
   the selectors are separate so either page can be retuned on its own.
   Every selector is prefixed .pa-spend because the page is wrapped in
   .bg-dark, whose `h1..h6 { color: var(--white) }` in style.css would
   otherwise take the orange half of the heading with it.
   Responsive steps live at the end of responsive.css.
   ========================================================================== */
.pa-spend {
    background: #0E0920;
    padding: 100px 0;
}

.pa-spend .pas-heading {
    margin: 0 0 30px;
    /* max-width: 1000px; */
    font-weight: 700;
    font-size: 87px;
    line-height: 97px;
    letter-spacing: -0.28px;
    color: #ffffff;
}

.pa-spend .pas-accent {
    color: #FE4601;
}

.pa-spend .pas-body {
    margin: 0 0 20px;
    max-width: 980px;
    font-size: 24px;
    line-height: 35px;
    color: #FFFFFF;
    font-family: 'SF Pro Display';
}

/* The band ends on the last paragraph, so it gives up its own bottom margin
   and lets the section padding do that work. */
.pa-spend .pas-body:last-child {
    margin-bottom: 0;
}

/* ==========================================================================
   Paid ads page -- "Eight Things Decide Performance."
   (components/paid-ads/WhatDecides.js)
   The social page's metric row (.social-metrics) as a rail: same gradients,
   same overlap, same lift on hover, but each card is a step smaller than the
   one before it so the row recedes to the right. Every size on a card is
   derived from --pdw-step (0..7), which the component sets inline, so the
   whole ramp is retuned by changing the multipliers below.
   Every selector is prefixed .pa-decides because the page is wrapped in
   .bg-dark, whose `h1..h6 { color: var(--white) }` in style.css would
   otherwise take the dark ink off the heading.
   Responsive steps live at the end of responsive.css.
   ========================================================================== */
.pa-decides {
    --pdw-overlap: 22px;
    background: #ffffff;
    padding: 100px 0;
}

/* Heading left, the audit note pinned to the top right. */
.pa-decides .pdw-head {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 40px;
}

.pa-decides .pdw-head-main {
    /* max-width: 780px; */
}

.pa-decides .pdw-eyebrow {
    margin: 0 0 18px;
    font-weight: 700;
    font-size: 27px;
    line-height: 25px;
    color: #FE4601;
}

.pa-decides .pdw-heading {
    margin: 0;
    font-weight: 700;
    font-size: 55px;
    line-height: 52px;
    letter-spacing: -0.28px;
    color: #1D1D1F;
}

.pa-decides .pdw-accent {
    color: #FE4601;
}

.pa-decides .pdw-note {
    flex: 0 0 318px;
    color: #86868B !important;
    font-size: 18px;
    line-height: 26px;
    font-weight: bold;
    font-family: 'SF Pro Display';
    text-align: right;
    margin-bottom: 0;
}
/* The rail is padded top and bottom by the lift distance, so a raised card has
   somewhere to go and the section does not grow when one is hovered. */
.pa-decides .pdw-rail {
    display: flex;
    align-items: center;
    margin: 0;
    padding: 50px 0 30px;
    list-style: none;
    /* Which card the ramp starts from. At rest it is the first one, which is
       the row as the mock draws it; hovering moves it under the pointer. */
    --pdw-hot: 0;
}

/* Hover anywhere in the rail re-centres the ramp on that card: it becomes the
   head of the row and everything else steps away from it in both directions,
   so walking to a small card on the right grows it and shrinks the ones on the
   left. Eight rules rather than one, because a selector cannot read which
   child is hovered -- but the ramp itself is still written once, below. */
.pa-decides .pdw-rail:has(.pdw-card-1:hover),
.pa-decides .pdw-rail:has(.pdw-card-1:focus-within) { --pdw-hot: 0; }
.pa-decides .pdw-rail:has(.pdw-card-2:hover),
.pa-decides .pdw-rail:has(.pdw-card-2:focus-within) { --pdw-hot: 1; }
.pa-decides .pdw-rail:has(.pdw-card-3:hover),
.pa-decides .pdw-rail:has(.pdw-card-3:focus-within) { --pdw-hot: 2; }
.pa-decides .pdw-rail:has(.pdw-card-4:hover),
.pa-decides .pdw-rail:has(.pdw-card-4:focus-within) { --pdw-hot: 3; }
.pa-decides .pdw-rail:has(.pdw-card-5:hover),
.pa-decides .pdw-rail:has(.pdw-card-5:focus-within) { --pdw-hot: 4; }
.pa-decides .pdw-rail:has(.pdw-card-6:hover),
.pa-decides .pdw-rail:has(.pdw-card-6:focus-within) { --pdw-hot: 5; }
.pa-decides .pdw-rail:has(.pdw-card-7:hover),
.pa-decides .pdw-rail:has(.pdw-card-7:focus-within) { --pdw-hot: 6; }
.pa-decides .pdw-rail:has(.pdw-card-8:hover),
.pa-decides .pdw-rail:has(.pdw-card-8:focus-within) { --pdw-hot: 7; }

/* Width, height, radius and type all come off the same step, which is what
   makes the row read as one rail rather than eight unrelated sizes. */
.pa-decides .pdw-card {
    position: relative;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    text-align: center;
    /* Every size below is read off --pdw-eff, not --pdw-step: the step is the
       card's fixed place in the row, the effective step is how far it sits
       from whichever card the ramp currently starts at. max() of the two
       subtractions is an absolute value, written the long way so it works
       wherever calc() does. */
    --pdw-eff: max(calc(var(--pdw-step) - var(--pdw-hot)),
                   calc(var(--pdw-hot) - var(--pdw-step)));
    flex-grow: calc(1 - var(--pdw-eff) * 0.083);
    flex-shrink: 1;
    flex-basis: 0;
    min-width: 0;
    height: calc(400px - var(--pdw-eff) * 33px);
    /* The cards drift down as they shrink, so the rail's top edge falls away
       faster than its floor -- the perspective the mock draws. */
    margin-top: calc(var(--pdw-eff) * 2.5px);
    /* The left-hand padding carries the whole overlap, not half of it: the
       card before this one sits on that strip, so copy centred across it
       would read as running under its neighbour. The right side keeps the
       plain gutter. */
    padding: calc(22px - var(--pdw-eff) * 1.4px)
             calc(16px - var(--pdw-eff) * 1px)
             calc(22px - var(--pdw-eff) * 1.4px)
             calc(16px - var(--pdw-eff) * 1px + var(--pdw-overlap));
    border-radius: calc(24px - var(--pdw-eff) * 1.6px);
    color: #ffffff;
    /* A soft shadow under every card, not just the hovered one: it is what
       separates the steps where two gradients meet and gives the rail its
       depth. */
    box-shadow: 0 14px 28px rgba(17, 17, 17, 0.12);
    /* Only the shadow is animated. The card's size is real layout, so easing
       it would re-wrap the copy on every frame of the transition -- the lines
       zig-zagging as they settle. Snapping the geometry means the type is
       drawn once, at its final size, in its final place. */
    transition: box-shadow 0.35s ease;
}

/* Each card tucks under the one before it: the row is pulled together by a
   negative margin, and the z-index falls as it goes, so the first card is the
   one on top and every later card slides beneath its left-hand neighbour. */
.pa-decides .pdw-card + .pdw-card {
    margin-left: calc(var(--pdw-overlap) * -1);
}

/* Nothing laps over the first card, so it keeps an even gutter. */
.pa-decides .pdw-card-1 {
    padding-left: calc(16px - var(--pdw-eff) * 1px);
}

.pa-decides .pdw-card-1 { z-index: 8; background: linear-gradient(90deg, #7B4DF2 0%, #9664EB 100%); }
.pa-decides .pdw-card-2 { z-index: 7; background: linear-gradient(90deg, #F86472 0%, #ED383E 100%); }
.pa-decides .pdw-card-3 { z-index: 6; background: linear-gradient(90deg, #17C7F0 0%, #4660F0 100%); }
.pa-decides .pdw-card-4 { z-index: 5; background: linear-gradient(90deg, #28DDB0 0%, #2ECDF4 100%); }
.pa-decides .pdw-card-5 { z-index: 4; background: linear-gradient(90deg, #3A4BF4 0%, #506DEA 100%); }
.pa-decides .pdw-card-6 { z-index: 3; background: #FE4601; }
.pa-decides .pdw-card-7 { z-index: 2; background: linear-gradient(90deg, #7B4DF2 0%, #9664EB 100%); }
.pa-decides .pdw-card-8 { z-index: 1; background: linear-gradient(90deg, #F86472 0%, #ED383E 100%); }

/* The hovered card is the head of the ramp (--pdw-eff falls to 0 on its own,
   from the rule above), so it takes the full width, height, padding, radius
   and type -- a real magnification rather than a scaled picture, which is why
   the copy grows to reading size instead of to a blur. All that is left to do
   here is lift it clear of both neighbours and deepen its shadow. The rail's
   own padding absorbs the growth, so the section's height never moves.
   :focus-within is here too, so the same thing happens on a keyboard. */
.pa-decides .pdw-card:hover,
.pa-decides .pdw-card:focus-within {
    /* A fixed 238px rather than a share of the row: wherever the pointer lands
       the open card is the same size, and the rest of the rail divides what is
       left. */
    flex-grow: 0;
    flex-basis: 238px;
    /* Nothing laps over the open card -- it is above the whole row -- so it
       drops the overlap gutter and keeps the plain one on both sides. */
    padding-left: calc(16px - var(--pdw-eff) * 1px);
    z-index: 10;
    box-shadow: 0 24px 54px rgba(17, 17, 17, 0.28);
}

.pa-decides .pdw-title {
    margin: 0 0 calc(12px - var(--pdw-eff) * 0.8px);
    font-weight: 700;
    /* The head of the ramp is 29.04/33 -- the size the card carries at rest as
       the first card, and the size it comes back to under the pointer. Every
       other card steps down from it. The line height is a ratio, so it steps
       with the size instead of being set eight times. */
    font-size: calc(29.04px - var(--pdw-eff) * 2.53px);
    line-height: 1.136;
    letter-spacing: -0.2px;
    color: #ffffff;
}

.pa-decides .pdw-body {
    margin: 0;
    /* 21.6/28.8 at the head of the ramp, same rule as the title above. */
    font-size: calc(21.6px - var(--pdw-eff) * 1.89px);
    line-height: 1.333;
    color: rgba(255, 255, 255, 0.92);
    font-family: 'SF Pro Display';
}

@media (prefers-reduced-motion: reduce) {
    .pa-decides .pdw-card {
        transition: none;
    }
}

/* ==========================================================================
   Paid ads page -- the orange statistic band under the rail. Responsive steps
   are at the end of responsive.css.

   Every selector is prefixed .pa-dash because the page is wrapped in .bg-dark,
   whose `h1..h6 { color: var(--white) }` in style.css would otherwise win over
   a bare class.
   ========================================================================== */
.pa-dash {
    background: #FE4601;
    padding: 100px 0 100px;
}

.pa-dash .pad-heading {
    /* max-width: 1080px; */
    margin: 0;
    font-weight: 700;
    font-size: 87px;
    line-height: 97px;
    letter-spacing: -1.5px;
    color: #ffffff;
}

/* The line that turns the statistic into the argument, so it sits well clear
   of the claim rather than reading as its last line. */
.pa-dash .pad-note {
    /* max-width: 900px; */
    margin: 46px 0 0;
    font-size: 32px;
    line-height: 35px;
    color: #ffffff;
    font-family: 'SF Pro Display';
}

/* ==========================================================================
   Paid ads page -- "How we work", the six phones
   (components/paid-ads/SixSteps.js)
   The social page's phone row on a dark band, with six frames instead of five.
   Everything about a phone comes off one number, --pst-w: the PNG's 350 x 708
   body inside an 870-tall canvas gives the two ratios below, so setting
   --pst-w at a breakpoint rescales the row whole.
   Responsive steps live at the end of responsive.css.
   ========================================================================== */
.pa-steps {
    --pst-w: 176px;
    --pst-gap: 24px;
    background: #0E0920;
    padding: 100px 0 100px;
    overflow: hidden;
}

.pa-steps .pst-eyebrow {
    margin: 0 0 14px;
    font-weight: 700;
    font-size: 27px;
    line-height: 25px;
    color: #FE4601;
}

.pa-steps .pst-heading {
    margin: 0 0 50px;
    font-weight: 700;
    font-size: 55px;
    line-height: 60px;
    letter-spacing: -0.28px;
    color: #ffffff;
}

.pa-steps .pst-accent {
    color: #FE4601;
}

/* `align-items: flex-start` so each phone's own offset is what places it: the
   row's height comes from the tallest stack, not from the first phone. */
.pa-steps .pst-row {
    display: flex;
    justify-content: center;
    align-items: flex-start;
    gap: var(--pst-gap);
    margin: 0;
    padding: 0;
    list-style: none;
}

/* The box is the phone body exactly -- the image overhangs it with its own
   drop shadow -- so the gap between two phones is read off the body rather
   than guessed around transparent padding. */
.pa-steps .pst-phone {
    position: relative;
    flex: 0 0 auto;
    width: var(--pst-w);
    height: calc(var(--pst-w) * 2.0231);
}

.pa-steps .pst-device {
    position: absolute;
    top: 0;
    left: 0;
    width: auto;
    max-width: none;
    height: calc(var(--pst-w) * 2.4859);
}

/* The staggered heights, read off the mock. Each phone has its own class so
   one can be moved without disturbing the others. */
.pa-steps .pst-phone-1 { margin-top: 12px; }
.pa-steps .pst-phone-2 { margin-top: 102px; }
.pa-steps .pst-phone-3 { margin-top: 48px; }
.pa-steps .pst-phone-4 { margin-top: 88px; }
.pa-steps .pst-phone-5 { margin-top: 0; }
.pa-steps .pst-phone-6 { margin-top: 90px; }

/* Held inside the body box with its own padding, so a long step can never sit
   on the bezel or run out over the shadow. */
.pa-steps .pst-screen {
    position: absolute;
    inset: 8% 9% 10%;
    display: flex;
    align-items: center;
    justify-content: center;
    text-align: center;
}

.pa-steps .pst-title {
    margin: 0;
    font-weight: 700;
    font-size: 22px;
    line-height: 26px;
    letter-spacing: -0.2px;
    color: #ffffff;
    overflow-wrap: break-word;
}

/* The turn: the line fades up into place, overshoots the resting line and
   settles. Kept to the line itself, so nothing else on the phone moves. */
.pa-steps .pst-title {
    animation: pst-turn 0.62s cubic-bezier(0.22, 1.4, 0.36, 1) both;
}

@keyframes pst-turn {
    0%   { opacity: 0; transform: translateY(16px); }
    55%  { opacity: 1; transform: translateY(-7px); }
    75%  { transform: translateY(4px); }
    90%  { transform: translateY(-2px); }
    100% { opacity: 1; transform: translateY(0); }
}

@media (prefers-reduced-motion: reduce) {
    .pa-steps .pst-title {
        animation: none;
    }
}

/* ==========================================================================
   Paid ads page -- "Where we run them" (components/paid-ads/Places.js)
   The row is the .social-platforms one, reused whole. Only the differences
   this page's copy forces live here, so the two rows stay identical
   everywhere else.
   ========================================================================== */
/* The last card names four platforms at once, which will not sit on two lines
   at the shared 26px. Nothing else about the card changes. */
.social-platforms.paid-platforms .spl-card:nth-child(6) .spl-name {
    font-size: 20px;
    line-height: 130%;
}

/* ==========================================================================
   Paid ads page -- "What we measure" (components/paid-ads/Measure.js)
   Four artwork cards in one row. The card is the homepage's "Broken?" card:
   same #8668FF name at 28/32, same rounded media that lifts its image on
   hover. Media is a fixed 332px tall and shares the row's width, so the four
   columns stay level whatever the artwork's own ratio is.
   ========================================================================== */
.pa-measure {
  background: #ffffff;
    padding: 0px 0px 100px 0px;
}

.pa-measure .pms-eyebrow {
    margin: 0 0 12px;
    font-weight: 700;
    font-size: 27px;
    line-height: 25px;
    color: #FE4601;
}

.pa-measure .pms-heading {
    margin: 0 0 50px;
    font-weight: 700;
    font-size: 55px;
    line-height: 60px;
    letter-spacing: -0.28px;
    color: #1D1D1F;
}

.pa-measure .pms-accent {
    color: #FE4601;
}

.pa-measure .pms-cards {
    display: flex;
    gap: 26px;
    margin: 0;
    padding: 0;
    list-style: none;
}

.pa-measure .pms-card {
    flex: 1 1 0;
    min-width: 0;
}

.pa-measure .pms-media {
    height: 332px;
    border-radius: 20px;
    overflow: hidden;
    /* background: #191233; */
}

.pa-measure .pms-media img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform 0.6s cubic-bezier(0.22, 1, 0.36, 1);
}

.pa-measure .pms-card:hover .pms-media img {
    transform: scale(1.05);
}

.pa-measure .pms-card .pms-name {
    margin: 22px 0 0;
    padding: 0 4px;
    font-weight: 700;
    font-size: 28px;
    line-height: 32px;
    color: #8668FF;
}

/* ==========================================================================
   The CTA form's one dropdown ("Are you running ads at the moment?").
   .form-control paints the coral field, which leaves the browser's own arrow
   invisible against it -- so the arrow is drawn here as a white chevron, the
   same one the contact page and the blog sidebar use, and the field keeps room
   for it on the right.
   ========================================================================== */
.vl-form .form-control.vl-select {
    -webkit-appearance: none;
    -moz-appearance: none;
    appearance: none;
    padding-right: 42px;
    background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8' fill='none'%3E%3Cpath d='M1 1.5L6 6.5L11 1.5' stroke='%23ffffff' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 16px center;
}

/* ==========================================================================
   "Sometimes You Need A New Site." — /website-and-cro
   (components/website-and-cro/TwoJobs.js)

   The section wears .bsee-section as well, so the white ground, the two grey
   columns and their radius are /brand's and stay in step with it. Only what
   is different on this page is written here: the head runs left with the
   honesty note pinned top right rather than centred, the column titles turn
   orange, and each column carries four numbered rows.

   Every rule is prefixed .wcro-jobs. The page is wrapped in .bg-dark, whose
   `h1..h6 { color: var(--white) }` in style.css scores (0,1,1) and would
   otherwise take the dark ink off the heading and the column titles.
   ========================================================================== */
.wcro-jobs .wcj-head {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 320px;
    gap: 40px;
    align-items: start;
    margin: 0 0 50px;
}

.wcro-jobs .wcj-eyebrow {
    margin: 0 0 15px;
    font-weight: 700;
    font-size: 27px;
    line-height: 25px;
    color: #FE4601;
}

.wcro-jobs .wcj-heading {
    margin: 0;
    font-weight: 700;
    font-size: 55px;
    line-height: 60px;
    letter-spacing: -0.28px;
    color: #0E0920;
}

.wcro-jobs .wcj-accent {
    color: #FE4601;
}

/* Sits against the top of the heading, ragged left so its right edge lines up
   with the column behind it. */
.wcro-jobs .wcj-note {
    margin: 8px 0 0;
    font-size: 18px;
    line-height: 26px;
    color: #6B6B76;
    text-align: right;
}

.wcro-jobs .bsee-col-title {
    color: #FE4601;
}

.wcro-jobs .wcj-sub {
    margin: 0 0 20px;
    font-size: 18px;
    line-height: 24px;
    color: #3F3D4A;
    text-align: center;
}

.wcro-jobs .wcj-sub strong {
    font-weight: 700;
    color: #0E0920;
}

.wcro-jobs .wcj-list {
    display: flex;
    flex-direction: column;
    gap: 12px;
    margin: 0;
    padding: 0;
    list-style: none;
}

.wcro-jobs .wcj-item {
    display: flex;
    align-items: center;
    gap: 16px;
    padding: 18px 20px;
    background: #fff;
    border-radius: 14px;
}

/* Fixed width so the four sentences start on the same vertical line. */
.wcro-jobs .wcj-num {
    flex: 0 0 34px;
    font-weight: 700;
    font-size: 45px;
    line-height: 24px;
    color: #9471FF;
}

.wcro-jobs .wcj-text {
    margin: 0;
    font-size: 18px;
    line-height: 25px;
    color: #3F3D4A;
}

.wcro-jobs .wcj-text strong {
    font-weight: 700;
    color: #0E0920;
}

/* ==========================================================================
   Website and CRO page -- "How we work", the five phones
   (components/website-and-cro/FiveSteps.js)
   The paid-ads row wears its own classes here, so the two sections cannot
   drift apart. What this page changes is only what the Figma asks for: a
   wider phone, a bigger step, a rule under it and the line beneath that --
   all of it hung off .wcro-steps, so /paid-ads is untouched.
   Responsive steps live at the end of responsive.css.
   ========================================================================== */
.wcro-steps {
    --pst-w: 234px;
}

.wcro-steps .pst-title {
    margin: 0;
    font-size: 36px;
    line-height: 40px;
}

.wcro-steps .pst-rule {
    display: block;
    width: 34px;
    height: 2px;
    margin: 16px auto;
    background: rgba(255, 255, 255, 0.7);
}

.wcro-steps .pst-body {
    margin: 0;
    font-weight: 400;
    font-size: 14px;
    line-height: 20px;
    color: rgba(255, 255, 255, 0.85);
    overflow-wrap: break-word;
}

/* The turn moves the whole card -- step, rule and line together -- so the
   rule never slides out from under its own heading. The paid-ads animation on
   the step itself is dropped here, because it would run a second time inside
   a card that is already moving. Keyframes: pst-turn, above. */
.wcro-steps .pst-slide {
    animation: pst-turn 0.62s cubic-bezier(0.22, 1.4, 0.36, 1) both;
}

.wcro-steps .pst-title {
    animation: none;
}

@media (prefers-reduced-motion: reduce) {
    .wcro-steps .pst-slide {
        animation: none;
    }
}

/* ==========================================================================
   Website and CRO page -- "What we build on"
   (components/website-and-cro/Tech.js)
   A light band on a dark page: every rule carries .wcro-tech, because
   style.css turns headings white inside .bg-dark and the heading would
   disappear without it.
   The row is one number wide, --wct-w; the card keeps the artwork's own
   ratio, so the whole row rescales from that single value.
   Responsive steps live at the end of responsive.css.
   ========================================================================== */
.wcro-tech {
    --wct-w: 160px;
    --wct-gap: 12px;
    background: #ffffff;
    padding: 100px 0;
}

.wcro-tech .wct-heading {
    margin: 0 0 14px;
    font-weight: 700;
    font-size: 55px;
    line-height: 60px;
    letter-spacing: -0.28px;
    color: #0E0920;
}

.wcro-tech .wct-accent {
    color: #FE4601;
}

.wcro-tech .wct-note {
    margin: 0 0 40px;
    max-width: 760px;
    font-size: 16px;
    line-height: 26px;
    color: #6B6B76;
}

.wcro-tech .wct-row {
    display: flex;
    flex-wrap: wrap;
    gap: var(--wct-gap);
    margin: 0;
    padding: 0;
    list-style: none;
}

.wcro-tech .wct-card {
    flex: 0 0 auto;
    width: var(--wct-w);
}

.wcro-tech .wct-image {
    display: block;
    width: 100%;
    height: auto;
}

/* ==========================================================================
   Analytics and tracking page -- the hero
   (components/analytics-and-tracking/Hero.js)
   The claim on the page's own dark, then a panel holding the arithmetic. The
   bar is one shape: a 100% track in #382554 with the platform's own share
   drawn over it in #FE4601, both 18px tall on a 27px radius, so a short bar
   keeps the same pill as a long one.
   Responsive steps live at the end of responsive.css.
   ========================================================================== */
.ant-hero {
    background: #0E0920;
    padding: 70px 0 0;
}

.ant-hero .anh-heading {
    margin: 0 0 22px;
    font-weight: 700;
    font-size: 76px;
    line-height: 111%;
    letter-spacing: -5%;
    color: #ffffff;
}

.ant-hero .anh-accent {
    color: #FE4601;
}

.ant-hero .anh-note {
    margin: 0 0 60px;
    max-width: 800px;
    text-align: center;
    font-size: 18px;
    letter-spacing: -0.22px;
    line-height: 17.3px;
    color: #fff;
}

/* The panel is the same dark half a step lighter, fenced off with a hairline
   top and bottom so the numbers read as a separate exhibit. */
.ant-hero .anh-panel {
    background: #120C26;
    border-top: 1px solid #251A3F;
    border-bottom: 1px solid #251A3F;
    padding: 40px 0 44px;
}

.ant-hero .anh-label {
    margin: 0 0 22px;
    font-weight: 600;
    font-size: 12px;
    line-height: 16px;
    letter-spacing: 1.6px;
    text-transform: uppercase;
    color: #71627F;
}

.ant-hero .anh-bars {
    margin: 0 0 40px;
    padding: 0;
    list-style: none;
}

.ant-hero .anh-bar {
    display: grid;
    grid-template-columns: 150px minmax(0, 1fr) 56px;
    align-items: center;
    gap: 18px;
    margin-bottom: 16px;
}

.ant-hero .anh-bar:last-child {
    margin-bottom: 0;
}

.ant-hero .anh-name {
    font-weight: 600;
    font-size: 12px;
    line-height: 16px;
    letter-spacing: 1.2px;
    text-transform: uppercase;
    color: #FE4601;
}

.ant-hero .anh-track {
    display: block;
    height: 18px;
    border-radius: 27px;
    background: #382554;
    overflow: hidden;
}

.ant-hero .anh-fill {
    display: block;
    height: 18px;
    border-radius: 27px;
    background: #FE4601;
}

/* The colour is the row's own, set on the <li> in the component; the value
   below is what a row that does not carry one falls back to. */
.ant-hero .anh-value {
    font-weight: 700;
    font-size: 22px;
    line-height: 26px;
    color: var(--anh-value-color, #FE4601);
    text-align: right;
}

.ant-hero .anh-total {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    align-items: center;
    gap: 24px;
}

.ant-hero .anh-total .anh-label {
    margin-bottom: 10px;
}

.ant-hero .anh-total-note {
    margin: 0;
    /* max-width: 720px; */
    font-size: 16px;
    line-height: 20px;
    color: #FFF9F5;
}

.ant-hero .anh-total-value {
    margin: 0;
    font-weight: 700;
    font-size: 48px;
    line-height: 44px;
    letter-spacing: -0.5px;
    color: #FF665C;
}
/* ==========================================================================
   Analytics and tracking page -- "Three questions"
   (components/analytics-and-tracking/ThreeQuestions.js)
   A light band on a dark page: every rule carries .ant-questions, because
   style.css turns headings white inside .bg-dark.
   Sizes, colours, the 20px radius and the drop shadow are the Figma's own;
   the letter-spacing given there as a percentage is written here in em, which
   is the same thing measured against the type size.
   Responsive steps live at the end of responsive.css.
   ========================================================================== */
.ant-questions {
    background: #F5F5F7;
    padding: 90px 0 100px;
}

/* The section head -- orange eyebrow, heading, orange half -- runs at the
   same size in every section on every page, so it is written once here,
   unprefixed, and each section only says what colour its own heading is. The
   colour has to stay prefixed: style.css sets .bg-dark h1..h6 to white at a
   higher specificity than a bare class, so a light band would otherwise lose
   its heading. */
.anq-eyebrow {
    margin: 0 0 18px;
    font-weight: 700;
    font-size: 27px;
    line-height: 25px;
    color: #FE4601;
}

.anq-heading {
    margin: 0 0 50px;
    font-weight: 700;
    font-size: 55px;
    line-height: 52px;
    letter-spacing: -0.28px;
}

.anq-accent {
    color: #FE4601;
}

.ant-questions .anq-eyebrow {
    color: #FE4601;
}

.ant-questions .anq-heading {
    color: #1D1D1F;
}

/* The small orange line above every block -- the question number, the layer,
   and "what we build" -- is one rule, so the three cannot drift apart. */
.ant-questions .anq-label {
    margin: 0 0 14px;
    font-weight: 600;
    font-size: 12px;
    line-height: 16px;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: #FE4601;
}

.ant-questions .anq-row {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 24px;
    margin: 0 0 24px;
    padding: 0;
    list-style: none;
}

/* Column, so the owner line can be pushed to the foot of the card: three
   questions of different lengths still line their footers up. */
.ant-questions .anq-card {
    display: flex;
    flex-direction: column;
    background: #ffffff;
    border-radius: 20px;
    padding: 28px 28px 22px;
    box-shadow: 0 4px 24px rgba(0, 0, 0, 0.0627);
}

.ant-questions .anq-title {
    margin: 0 0 12px;
    font-weight: 700;
    font-size: 26px;
    line-height: 120%;
    color: #1D1D1F;
}

.ant-questions .anq-body {
    margin: 0 0 24px;
    font-size: 15px;
    line-height: 155%;
    color: #6B7280;
}

.ant-questions .anq-owner {
    margin: auto 0 0;
    padding-top: 18px;
    border-top: 1px solid #E5E5E5;
    font-weight: 500;
    font-size: 10px;
    line-height: 14px;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: #A0A0A0;
}

.ant-questions .anq-layer {
    display: grid;
    grid-template-columns: minmax(0, 0.85fr) minmax(0, 1.15fr);
    gap: 40px;
    background: #ffffff;
    border-radius: 20px;
    padding: 40px;
    box-shadow: 0 4px 24px rgba(0, 0, 0, 0.0627);
}

.ant-questions .anq-layer-title {
    margin: 0;
    font-weight: 700;
    font-size: 40px;
    line-height: 110%;
    letter-spacing: -0.03em;
    color: #1D1D1F;
}
.ant-questions .anq-layer-lead {
    margin: 0 0 26px;
    font-size: 18px;
    line-height: 155%;
    padding-bottom: 26px;
    border-bottom: 1px solid #ddd;
    color: #6B7280;
}

.ant-questions .anq-layer-body {
    margin: 0;
    font-size: 16px;
    line-height: 165%;
    color: #1D1D1F;
}

/* ==========================================================================
   Analytics and tracking page -- "100 real conversions"
   (components/analytics-and-tracking/ConversionLoss.js)
   A dark band on the page's own dark, so the panel is separated by a border
   rather than by contrast. Every rule carries .ant-loss: style.css turns
   headings white inside .bg-dark and the panel's own greys would be lost.
   The hundred dots are one absolutely-positioned layer under the four label
   rows -- the dot takes its place from --anl-x / --anl-y, which the component
   supplies, and everything else about it is decided here. Losing a dot is a
   class change and a transition, never a move, so the field is identical
   between the two scenarios and only the colour reads as different.
   Responsive steps live at the end of responsive.css.
   ========================================================================== */
.ant-loss {
    background: #0E0920;
    padding: 100px 0 100px;
}

/* Both colours are stated here because .bg-dark carries its own rules for
   headings and body copy at a higher specificity than a bare class. */
.ant-loss .anq-eyebrow {
    color: #FE4601;
}

.ant-loss .anq-heading {
    max-width: 900px;
    color: #ffffff;
}

.ant-loss .anl-panel {
    background: #150E2B;
    border: 1px solid #251A3F;
    border-radius: 12px;
    overflow: hidden;
}

.ant-loss .anl-panel-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 20px;
    padding: 16px 22px;
    border-bottom: 1px solid #241A3F;
}

.ant-loss .anl-panel-title {
    margin: 0;
    font-size: 20px;
    line-height: 30px;
    color: #FFFFFF;
}

.ant-loss .anl-toggles {
    display: flex;
    flex-shrink: 0;
    padding: 4px;
    gap: 8px;
    border-radius: 4px;
    background: #08050E;
    border: 1px solid #382554;
}
/* `text-transform` is reset here because the theme capitalises button text
   globally, and the Figma writes these two as sentences. */
.ant-loss .anl-toggle {
    padding: 10px 25px;
    background: transparent;
    /* border: 1px solid #2E2348; */
    border-radius: 4px;
    font-weight: 400;
    font-size: 16px;
    line-height: 17px;
    text-transform: none;
    color: #C9C0DE;
    cursor: pointer;
    transition: background 0.25s ease, color 0.25s ease, border-color 0.25s ease;
}

.ant-loss .anl-toggle.is-active {
    background: #FE4601;
    border-color: #FE4601;
    color: #ffffff;
}

/* The dot field and the four rows share this box: the rows sit on top of the
   dots rather than beside them, which is what makes a leak read as taking its
   slice out of the same hundred. */
.ant-loss .anl-body {
    position: relative;
    min-height: 340px;
    padding: 22px;
}

/* The field stops short of the labels on the left and the loss figures on the
   right, so a dot can never scatter over a word. That is also why neither
   column needs a background of its own. */
.ant-loss .anl-field {
    position: absolute;
    top: 22px;
    right: 74px;
    bottom: 22px;
    left: 170px;
}

.ant-loss .anl-dot {
    position: absolute;
    left: var(--anl-x);
    top: var(--anl-y);
    width: 6px;
    height: 6px;
    margin: -3px 0 0 -3px;
    border-radius: 50%;
    background: #6B4FE8;
    transition: background 0.35s ease, transform 0.35s ease;
}

.ant-loss .anl-dot.is-lost {
    background: #E05A50;
    transform: scale(1.35);
}

.ant-loss .anl-rows {
    position: relative;
    display: grid;
    grid-template-rows: repeat(4, minmax(0, 1fr));
    min-height: 296px;
    margin: 0;
    padding: 0;
    list-style: none;
}

.ant-loss .anl-row {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 16px;
    padding-top: 8px;
    border-bottom: 1px solid #382554;
}

/* The panel's own background behind the two labels, so a dot never lands
   under a word and turns it to noise. */
.ant-loss .anl-row-name {
    padding: 2px 8px 2px 0;
    font-size: 16px;
    line-height: 30px;
    letter-spacing: 0.04em;
    color: #FFFFFF;
}

.ant-loss .anl-row-loss {
    padding: 2px 0 2px 8px;
    font-weight: 600;
    font-size: 11px;
    line-height: 15px;
    color: #FE4601;
}

.ant-loss .anl-foot {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    padding: 16px 22px;
    border-top: 1px solid #241A3F;
}

.ant-loss .anl-foot-label {
    margin: 0;
    font-size: 20px;
    line-height: 20px;
    color: #FFFFFF;
}

.ant-loss .anl-foot-value {
    margin: 0;
    display: flex;
    align-items: baseline;
    gap: 6px;
}

.ant-loss .anl-foot-count {
    font-weight: 700;
    font-size: 39px;
    line-height: 30px;
    color: #FE4601;
}
.ant-loss .anl-foot-outof {
    font-size: 20px;
    line-height: 18px;
    color: #FFFFFF;
}

.anl-rows li:last-child {
    border-bottom: none;
}
/* Asked not to be animated at: the dot still changes colour, because the
   colour is the information -- only the pop and the easing go. */
@media (prefers-reduced-motion: reduce) {
    .ant-loss .anl-dot {
        transition: none;
    }
    .ant-loss .anl-dot.is-lost {
        transform: none;
    }
    .ant-loss .anl-toggle {
        transition: none;
    }
}

/* ===== analytics and tracking: the hundred dots falling in ===== */
/* The dots drop in from above and the footer counts the ones that have
   landed. The body clips, so they arrive out of the panel's own top edge
   rather than over the heading; the per-dot delay comes in from the
   component as --anl-delay, which is what scatters the fall instead of
   letting it sweep row by row.

   .is-armed is the held breath between mount and the section being scrolled
   to -- without it the first dots would have fallen before anybody saw them.
   The server's markup carries neither class, so with JavaScript off the field
   is simply there. */
.ant-loss .anl-body {
    overflow: hidden;
}

.ant-loss .anl-field.is-armed .anl-dot {
    opacity: 0;
}

/* The rain does not put the dots back: once it has passed the bottom of the
   field they stay gone, so the panel is not repopulated with a resting
   scatter the moment the animation ends. */
.ant-loss .anl-field.is-spent .anl-dot {
    opacity: 0;
}

/* Linear, because the count is read off the same travel: an eased fall
   would cross the floor at a different moment than the arithmetic in the
   component says it does. */
.ant-loss .anl-field.is-falling .anl-dot {
    animation: anl-rain 2.6s linear both;
    animation-delay: var(--anl-delay, 0ms);
}

/* From 30px above the field to 30px below it, whatever height the dot rests
   at: --anl-h is the field's measured height and --anl-yf is the dot's place
   in it as a fraction, both handed over by the component. Every dot travels
   the same distance, so they all cross the floor at the same point of their
   own fall -- which is the point the footer counts on. The 30px here is
   FALL_EDGE_PX there; change one and change the other. */
@keyframes anl-rain {
    0% {
        opacity: 0;
        transform: translateY(
            calc(-1 * (var(--anl-h, 340px) * var(--anl-yf, 0) + 30px))
        );
    }
    6% {
        opacity: 1;
    }
    94% {
        opacity: 1;
    }
    100% {
        opacity: 0;
        transform: translateY(
            calc(
                var(--anl-h, 340px) - var(--anl-h, 340px) * var(--anl-yf, 0) +
                    30px
            )
        );
    }
}

/* Asked not to be animated at: the field is already there, at rest, with the
   arrived figure on the footer from the start. */
@media (prefers-reduced-motion: reduce) {
    .ant-loss .anl-field.is-armed .anl-dot,
    .ant-loss .anl-field.is-spent .anl-dot,
    .ant-loss .anl-field.is-falling .anl-dot {
        opacity: 1;
        animation: none;
    }
}

/* ==========================================================================
   Analytics and tracking page -- "The mistake everyone makes"
   (components/analytics-and-tracking/Mistake.js)
   The page's one solid-orange band. Everything on it is white, and every
   rule carries .ant-mistake because style.css colours headings and body copy
   inside .bg-dark at a higher specificity than a bare class would reach.
   The white rule on the left is a border on the claim column, so it is
   exactly as tall as the words beside it however the heading wraps.
   Responsive steps live at the end of responsive.css.
   ========================================================================== */
.ant-mistake {
    background: #FE4601;
    padding: 100px 0;
}

.ant-mistake .anm-row {
    display: flex;
    align-items: flex-start;
    gap: 80px;
}

.ant-mistake .anm-claim {
    flex: 1 1 54%;
    padding-left: 30px;
    border-left: 3px solid #FFFFFF;
}

.ant-mistake .anm-label {
    margin: 0 0 18px;
    font-weight: 700;
    font-size: 27px;
    line-height: 25px;
    letter-spacing: 0.23px;
    color: #FFFFFF;
}

.ant-mistake .anm-heading {
    margin: 0;
    font-weight: 700;
    font-size: 65px;
    line-height: 74px;
    letter-spacing: -0.28px;
    color: #FFFFFF;
}

.ant-mistake .anm-reason {
    flex: 1 1 46%;
    padding-top: 6px;
}

.ant-mistake .anm-body {
    margin: 0 0 28px;
    font-size: 24px;
    line-height: 35px;
    color: #FFFFFF;
}

.ant-mistake .anm-body:last-child {
    margin-bottom: 0;
}

/* ==========================================================================
   Analytics and tracking page -- "Three people, three reports."
   (components/analytics-and-tracking/ThreeReports.js)
   The white card from "Three questions" carrying a different payload, on the
   same #F5F5F7 band: the radius, the shadow and the 12px label are restated
   here rather than shared, because the two sections are free to move apart
   later and only the section head is meant to stay locked together.
   Every rule carries .ant-reports -- the page is wrapped in .bg-dark, whose
   h1..h6 rule in style.css would otherwise take the ink off the card titles.
   The artwork is a cutout, so the purple plinth under it is drawn here and
   the cadence on it stays real text.
   Responsive steps live at the end of responsive.css.
   ========================================================================== */
.ant-reports {
    background: #F5F5F7;
    padding: 100px 0 100px;
}

.ant-reports .anr-heading {
    margin-bottom: 50px;
    color: #1D1D1F;
}

.ant-reports .anr-row {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 30px;
    margin: 0;
    padding: 0;
    list-style: none;
}

.ant-reports .anr-card {
    display: flex;
    flex-direction: column;
    padding: 30px 30px 0;
    background: #FFFFFF;
    border-radius: 20px;
    box-shadow: 0 4px 24px rgba(0, 0, 0, 0.0627);
    overflow: hidden;
    padding-right: 0;
}

.ant-reports .anr-who {
    margin: 0 0 14px;
    font-weight: 600;
    font-size: 18px;
    line-height: 21.6px;
    letter-spacing: -0.27px;
    text-transform: uppercase;
    color: #1D1D1F;
}

.ant-reports .anr-needs {
    margin: 0 0 18px;
    font-weight: 700;
    font-size: 36px;
    line-height: 30px;
    color: #FE4601;
}

.ant-reports .anr-items {
    margin: 0 0 0px;
    padding: 0;
    list-style: none;
}

/* The dot is drawn by the rule rather than the list, so it keeps its size
   and its colour whatever the line does. */
.ant-reports .anr-item {
    position: relative;
    padding-left: 18px;
    margin-bottom: 10px;
    font-size: 16.68px;
    line-height: 21.6px;
    color: #1D1D1F;
}

.ant-reports .anr-item:last-child {
    margin-bottom: 0;
}

.ant-reports .anr-item::before {
    content: "";
    position: absolute;
    top: 9px;
    left: 0;
    width: 5px;
    height: 5px;
    border-radius: 50%;
    background: #FE4601;
}

/* The artwork stands on the plinth: it is pushed to the foot of the card so
   the three plinths line up however long the list above them runs. */
/* The artwork is a cutout with no ground of its own, so it is let out to the
   card's own edges and sat on the floor of it -- contain, never cover, so
   nothing of the figure is cut away. margin-top: auto pushes the block to the
   foot of the card, which is what lines the three pills up however long the
   list above them runs. */
.ant-reports .anr-media {
    position: relative;
    margin: auto 0 0;
    padding-top: 0px;
}

.ant-reports .anr-image {
    display: block;
    width: 100%;
    /* height: 250px; */
    object-fit: contain;
    object-position: right bottom;
}

/* Bottom left of the artwork, the way the frame draws it. */
.ant-reports .anr-cta {
    position: absolute;
    right: 20px;
    bottom: 20px;
}

.ant-reports .swy-cta {
    gap: 8px;
    padding: 12px 25px;
    font-weight: 500;
    font-size: 16px;
    line-height: 24px;
    letter-spacing: -0.2px;
}

.ant-reports .swy-cta:hover,
.ant-reports .swy-cta:focus {
    filter: brightness(0.93);
    color: #FFFFFF;
}

/* The disc's ink is named here rather than left to --swy-purple, which is
   declared on the sections that variable was written for and not on this one. */
.ant-reports .swy-cta-icon {
    width: 24px;
    height: 24px;
    color: #8668FF;
}

/* ==========================================================================
   Analytics and tracking page -- "Start with one question you cannot answer."
   (components/analytics-and-tracking/Audit.js)
   The closing band. The artwork is absolutely placed against the section's
   right edge and the section clips it, so the crop is the same shape at every
   width instead of the image resizing itself into a different composition.
   The copy sits above it on z-index and keeps its own max-width, so the two
   never overlap however wide the screen gets.
   Every rule carries .ant-audit: the page is wrapped in .bg-dark, whose
   h1..h6 rule in style.css sets its own colour at a higher specificity than
   a bare class.
   Responsive steps live at the end of responsive.css.
   ========================================================================== */
.ant-audit {
    position: relative;
    overflow: hidden;
    background: #0B0A1E;
    padding: 120px 0;
}

.ant-audit .container {
    position: relative;
    z-index: 1;
}

.ant-audit .ana-art {
    position: absolute;
    right: 1px;
    bottom: 0;
    z-index: 0;
    max-width: 684px;
    height: auto;
    pointer-events: none;
}

.ant-audit .ana-text {
    max-width: 620px;
}

.ant-audit .ana-heading {
    margin: 0 0 26px;
    font-weight: 500;
    font-size: 84.4px;
    line-height: 85px;
    letter-spacing: -3.46px;
    color: #FFFFFF;
}

.ant-audit .ana-note {
    margin: 0 0 38px;
    max-width: 520px;
    font-size: 19.2px;
    line-height: 30px;
    color: #FFFFFF;
}

/* 239 x 48 is the frame's own button. It is a fixed box rather than padding,
   so the pill is the same size whatever the label is changed to. */
.ant-audit .ana-cta {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 239px;
    height: 48px;
    background: #FFFFFF;
    border-radius: 50px;
    font-weight: 700;
    font-size: 18px;
    line-height: 22px;
    text-transform: uppercase;
    color: #FE4601;
    transition: filter 0.2s ease;
}

.ant-audit .ana-cta:hover,
.ant-audit .ana-cta:focus {
    filter: brightness(0.94);
    color: #FE4601;
}

/* ==========================================================================
   Brand page -- "Why it matters" slider arrows.
   The three cards are a grid at every width except the phone, where they turn
   into the same swipeable rail the homepage uses (see responsive.css). These
   arrows belong to that rail only, so they are off by default and switched on
   at the breakpoint that builds the track.
   ========================================================================== */
.brand-why .bw-nav-below {
    display: none;
}

/* ==========================================================================
   Brand page -- "What you get" phones.
   The little rule under each format name belongs to the social-content
   version of this section. On /brand the same component is reused, and there
   the line is not wanted, so it is dropped under the page's own .brand-page
   parent -- at every width, and without touching /social-content.
   ========================================================================== */
.brand-page .social-make .wmk-rule {
    display: none;
}

/* ==========================================================================
   Search page -- "Not Just Numbers" slider arrows.
   Same arrangement as .brand-why's: the cards are a grid at every width
   except the phone, where they turn into a swipeable rail (see
   responsive.css). These arrows belong to that rail only.
   ========================================================================== */
.search-results .sr-nav-below {
    display: none;
}

/* ── /search — "How we work" slider arrows (phone only) ───────────────────── */
/* The arrows belong to the phone rail. Above 560 the four steps are a grid
   with nothing to scroll, so the control has nothing to do. */
.search-steps .sst-nav-below {
    display: none;
}

/* ── /search — "What we measure" slider arrows (phone only) ───────────────── */
/* The arrows belong to the phone rail. Above 560 the cards are a row that
   opens on hover, so the control has nothing to do. */
.search-measure .smm-nav-below {
    display: none;
}

/* ── /social-content — "Platforms we run" slider arrows (phone only) ──────── */
/* The arrows belong to the phone rail. Above 560 the cards are a grid with
   nothing to scroll, so the control has nothing to do. */
.social-platforms .spl-nav-below {
    display: none;
}

/* ── /paid-ads — "What the accounts actually did" arrows (phone only) ─────── */
/* The arrows belong to the phone rail. Above 560 the cards are a grid with
   nothing to scroll, so the control has nothing to do. */
.pa-results .par-nav-below {
    display: none;
}

/* ── /paid-ads — "Eight things decide performance" arrows (phone only) ────── */
/* The arrows belong to the phone rail. Above 560 the cards are a grid, or the
   desktop ramp, so the control has nothing to do. */
.pa-decides .pdw-nav-below {
    display: none;
}

/* ==========================================================================
   Paid ads page -- "What we measure". The arrows under the metric cards are
   a phone-only control: above 560 the four cards are a row that shows whole,
   so there is nothing to step through. The rail itself is in responsive.css.
   ========================================================================== */
.pa-measure .pms-nav-below {
    display: none;
}

/* ==========================================================================
   Paid ads page -- the Google and Meta marks in "Where we run them".
   Every other icon in the set is drawn on a 291x221 canvas with the mark
   sitting inside it, so a plain width draws them all at the same visual
   size. These two came from elsewhere: google.png is a tight 158 square and
   meta.png a 252x221, so the same width paints a far bigger mark. Rather
   than a width per breakpoint, both are given the set's canvas shape and
   contained inside it -- so they scale with whatever width the breakpoint
   already sets, and only the mark inside changes.
   ========================================================================== */
.paid-platforms .spl-icon-google,
.paid-platforms .spl-icon-meta {
    height: auto;
    aspect-ratio: 291 / 221;
    object-fit: contain;
}

/* The Google mark has no margin of its own at all, so it takes the one the
   rest of the set carries as padding. */
.paid-platforms .spl-icon-google {
    padding: 6.5% 0;
}

/* ==========================================================================
   Analytics and tracking page -- "Three questions", the pieces the phone
   needs (components/analytics-and-tracking/ThreeQuestions.js)
   The tab row and the artwork exist only below 560; they are switched off
   here so the desktop block above stays exactly as it was. The label inside
   "what we build" moved into the paragraph, so it is put back to a block --
   the same shape it drew as its own <p>.
   Responsive steps live at the end of responsive.css.
   ========================================================================== */
.ant-questions .anq-tabs,
.ant-questions .anq-shot {
    display: none;
}

.ant-questions .anq-build-label {
    display: block;
}

/* ==========================================================================
   Analytics and tracking page -- "Three people, three reports.", the arrows
   under the row (components/analytics-and-tracking/ThreeReports.js)
   They belong to the phone's rail only; above 560 the row is a grid with
   nothing to scroll, so they are off here and switched on in responsive.css.
   ========================================================================== */
.ant-reports .anr-nav-below {
    display: none;
}

/* ==========================================================================
   Home page -- the hero's numbers panel (components/home/Hero.js)
   The sentence about 15 brands is now three numbers on one line inside the
   same .hero-stat-badge panel the other heroes wear, with the markets they
   were earned in reading underneath it. Only the inside of the panel is
   described here, so the brand, paid ads and social heroes that share the
   badge are untouched.
   Responsive steps live at the end of responsive.css.
   ========================================================================== */
.hero-stats {
    display: flex;
    align-items: flex-start;
    gap: 34px;
    padding: 22px 17px;
    max-width: 570px;
    text-align: center;
}

.hero-stats .hero-stat {
    flex: 1 1 0;
    min-width: 0;
}
.hero-stats .hero-stat-num {
    margin: 0px 0 10px;
    font-weight: 700;
    font-size: 40px;
    line-height: 105%;
    color: #FE4601;
}
.hero-stats .hero-stat-label {
    margin: 0;
    font-weight: 700;
    font-size: 18px;
    line-height: 16px;
    color: #D0BDFF;
}

.hero-countries-dot {
    margin: 0 5px;
    font-weight: 700;
    color: #FE4601;
}

.hero-countries {
    margin: 20px 0 0;
    max-width: 499px;
    font-weight: 500;
    font-size: 22.68px;
    letter-spacing: 0.22px;
    line-height: 27.4px;
    text-align: center;
    color: #ffffff!important;
}

/* ==========================================================================
   Home page -- "Case Studies" (components/home/WorkShowcase.js)
   One study open inside a panel on the page's dark: the copy on the left,
   its artwork on the right, and the row of logos underneath acting as the
   control. Only the open logo is in colour -- the rest are drained -- which
   is the whole state this section has, so it is one filter rule rather than
   a second set of cards.
   The section keeps .workshow-section for the dark ground and the page
   rhythm; everything inside it is .wsc-.
   Responsive steps live at the end of responsive.css.
   ========================================================================== */
.wsc-cases .wsc-panel {
    /* background: #1A1235; */
    /* border-radius: 24px; */
    /* padding: 46px 48px 40px; */
}

.wsc-cases .wsc-eyebrow {
    margin: 0 0 26px;
    font-weight: 700;
    font-size: 54.3px;
    letter-spacing: -0.28px;
    line-height: 60px;
    color: #FE4601;
}

.wsc-cases .wsc-grid {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 380px;
    align-items: center;
    gap: 48px;
    margin-bottom: 40px;
}

.wsc-cases .wsc-title {
    margin: 0 0 18px;
    max-width: 520px;
    font-weight: 700;
    font-size: 45px;
    line-height: 50px;
    color: #ffffff;
}

.wsc-cases .wsc-accent {
    color: #FE4601;
}

.wsc-cases .wsc-body {
    margin: 0 0 30px;
    max-width: 680px;
    font-size: 22px;
    line-height: 150%;
    color: #D0D0D0;
}

.wsc-cases .wsc-media {
    border-radius: 20px;
    overflow: hidden;
       width: 459.54px;
    aspect-ratio: 1 / 1;
    height: 439px;
}

.wsc-cases .wsc-media img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.wsc-cases .wsc-logos {
    display: flex;
    gap: 14px;
    margin: 0;
    padding: 0 0 4px;
    list-style: none;
    overflow-x: auto;
    scrollbar-width: none;
}

.wsc-cases .wsc-logos::-webkit-scrollbar {
    display: none;
}

/* The drained state is the resting one: colour is how the open study says
   it is open, so the filter is lifted rather than added. */
.wsc-cases .wsc-logo {
    display: block;
    width: 168px;
    height: 118px;
    padding: 0;
    border: 0;
    border-radius: 14px;
    background: transparent;
    overflow: hidden;
    filter: grayscale(1);
    opacity: 0.75;
    transition: filter 0.35s ease, opacity 0.35s ease;
}

.wsc-cases .wsc-logo.is-on {
    filter: none;
    opacity: 1;
}

.wsc-cases .wsc-logo img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.wsc-cases .wsc-cta {
    padding: 6px 6px 6px 24px;
    font-size: 15px;
    line-height: 26px;
    gap: 12px;
}

/* The disc's ink is named here rather than left to --swy-purple, which is
   declared on the sections that variable was written for and not on this
   one, so the arrow would otherwise draw white on white. */
.wsc-cases .wsc-cta .swy-cta-icon {
    width: 26px;
    height: 26px;
    font-size: 11px;
    color: #8668FF;
}

/* ======================================================================
   CASE STUDY — /case-study/<slug>
   ----------------------------------------------------------------------
   Every section on this page is written in the payroll admin, so the rules
   below describe a shape rather than a particular study: a heading that may
   arrive in three pieces, a media block that may be a still or a clip, and
   rows of figures whose count is not known here.

   .cs-body is the two-column frame — the page on the left, the "On this
   page" rail pinned on the right. The rail is dropped below 1199, where
   there is no room beside the content for it.
   ====================================================================== */

.cs-page {
    background: #0E0920;
}

/* The page sits inside the site's own .container, so the width and the side
   gutters are the ones every other page uses; this only splits that column
   into the content and the rail. */
.cs-body {
    position: relative;
    display: grid;
    grid-template-columns: minmax(0, 1fr) 236px;
    gap: 40px;
    align-items: start;
}

.cs-main {
    min-width: 0;
}

/* ---- the rail --------------------------------------------------------- */

.cs-toc {
    position: sticky;
    top: 100px;
    background: #171033;
    border: 1px solid rgba(255, 255, 255, .07);
    border-radius: 0px;
    overflow: hidden;
    max-width: 270px;
}

/* The title is a band across the top of the panel, not a line of text
   floating inside it. */
.cs-toc .cst-title {
    margin: 0;
    padding: 12px 16px;
    background: #ffffff1a;
    font-size: 14.5px;
    text-align: center;
    line-height: 14px;
    font-weight: 700;
    letter-spacing: 1.6px;
    text-transform: uppercase;
    color: #C9C3E4;
}

.cs-toc .cst-list {
    list-style: none;
    margin: 0;
    padding: 0;
}

.cs-toc .cst-list li + li .cst-link {
    border-top: 1px solid rgba(255, 255, 255, .06);
}

.cs-toc .cst-link {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 10px 13px;
    font-size: 15px;
    line-height: 17px;
    font-weight: 500;
    color: #B9B4CC;
    text-decoration: none;
    transition: color .2s ease, background .2s ease;
}

/* The section's own number, the same one printed above its heading, so the
   rail and the page agree. */
.cs-toc .cst-n {
    flex: 0 0 18px;
    font-size: 12px;
    font-weight: 700;
    letter-spacing: .4px;
    color: #8668FF;
}

.cs-toc .cst-label {
    flex: 1;
    min-width: 0;
}

.cs-toc .cst-chev {
    flex: 0 0 auto;
    color: #6C63A8;
}

.cs-toc .cst-link:hover {
    color: #ffffff;
    background: rgba(255, 255, 255, .04);
}

/* The section currently under the reading line. */
.cs-toc .cst-link.is-on {
    color: #ffffff;
    background: rgba(255, 255, 255, .05);
}

.cs-toc .cst-link.is-on .cst-n,
.cs-toc .cst-link.is-on .cst-chev {
    color: #FE4601;
}

.cs-toc .cst-cta {
    display: block;
    padding: 12px 16px;
    background: #FE4601;
    font-size: 11.5px;
    line-height: 16px;
    font-weight: 700;
    letter-spacing: 1px;
    text-align: center;
    text-transform: uppercase;
    color: #ffffff;
    text-decoration: none;
}

.cs-toc .cst-cta:hover {
    background: #E63F00;
    color: #ffffff;
}

/* ---- hero ------------------------------------------------------------- */

.cs-hero {
    padding: 34px 0 0;
}

.cs-hero .container {
    padding: 0;
    max-width: none;
}

/* The identity strip: who the work was for on the left, what kind of work
   it was on the right. */
.cs-hero .csh-ident {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 24px;
    flex-wrap: wrap;
    padding-bottom: 40px;
}

.cs-hero .csh-brand {
    display: flex;
    align-items: center;
    gap: 12px;
}

.cs-hero .csh-brand-logo {
    width: 53px;
    height: 53px;
    border-radius: 50%;
    object-fit: cover;
}

.cs-hero .csh-brand-name {
    margin: 0;
    font-size: 18px;
    line-height: 20px;
    font-weight: 700;
    color: #ffffff;
}

.cs-hero .csh-brand-meta {
    margin: 2px 0 0;
    font-size: 12.5px;
    line-height: 16px;
    color: #8C86A6;
}

.cs-hero .csh-tags {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    list-style: none;
    margin: 0;
    padding: 0;
}

.cs-hero .csh-tag {
    padding: 5px 13px;
    background: rgba(255, 255, 255, .05);
    border: 1px solid rgba(255, 255, 255, .12);
    border-radius: 999px;
    font-size: 12px;
    line-height: 16px;
    font-weight: 600;
    letter-spacing: .3px;
    color: #D6D2E6;
}

/* The opening statement is centred, the way the design sets it, with the
   paragraph and the film centred under it on the same axis. */
.cs-hero .csh-title {
    max-width: 930px;
    margin: 0 auto;
    font-size: 56px;
    line-height: 105%;
    font-weight: 800;
    letter-spacing: -1.2px;
    text-align: center;
    color: #ffffff;
}

.cs-hero .csh-accent {
    color: #FE4601;
}

.cs-hero .csh-intro {
    max-width: 660px;
    margin: 22px auto 0;
    font-size: 18.5px;
    line-height: 29px;
    text-align: center;
    color: #fff;
}

/* ---- hero media ------------------------------------------------------- */

.cs-hero .csh-media {
    position: relative;
    max-width: 930px;
    margin: 38px auto 0;
    border-radius: 12px;
    overflow: hidden;
    height: 447px;
    /* aspect-ratio: 16 / 9; */
    background: #17102F;
}

.cs-hero .csh-still,
.cs-hero .csh-video {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
}

/* Sits over the still until someone asks for the clip: the brand disc with a
   white triangle in it, ringed so it holds up over a light frame as well as a
   dark one.

   `display: grid` + `place-items: center` puts the triangle dead centre, and
   the triangle then takes a small margin of its own to correct for the fact
   that a triangle's visual centre sits left of its box's. The triangle is
   drawn in borders rather than as an svg, so it always renders at exactly
   this size and colour. */
.cs-hero .csh-play {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    display: grid;
    place-items: center;
    width: 76px;
    height: 76px;
    padding: 0;
    background: #FE4601;
    border: 3px solid rgba(255, 255, 255, .9);
    border-radius: 50%;
    box-shadow: 0 10px 30px rgba(11, 5, 26, .35);
    cursor: pointer;
    transition: transform .2s ease, background .2s ease;
}

.cs-hero .csh-play:hover {
    background: #ff5c22;
    transform: translate(-50%, -50%) scale(1.06);
}

.cs-hero .csh-play-ico {
    display: block;
    width: 0;
    height: 0;
    margin-left: 5px;
    border-top: 12px solid transparent;
    border-bottom: 12px solid transparent;
    border-left: 20px solid #ffffff;
}

/* ---- hero figures ----------------------------------------------------- */

/* Four cells divided by hairlines, the way the design rules them off, rather
   than four cards with gaps. The count is not fixed, so the rule is hung on
   the cell instead of on a column template. */
.cs-hero .csh-stats {
    display: flex;
    flex-wrap: wrap;
    list-style: none;
    margin: 52px 0 0;
    padding: 0;
}

.cs-hero .csh-stat {
    flex: 1 1 180px;
    min-width: 0;
    padding: 0 22px;
    text-align: center;
}

.cs-hero .csh-stat + .csh-stat {
    border-left: 1px solid rgba(255, 255, 255, .1);
}

.cs-hero .csh-stat-value {
    margin: 0;
    font-size: 60px;
    line-height: 68px;
    font-weight: 800;
    letter-spacing: -.6px;
    color: #FE4601;
}

.cs-hero .csh-stat-label {
    margin: 6px 0 0;
    font-size: 16.5px;
    line-height: 22px;
    font-weight: 700;
    color: #ffffff;
}

.cs-hero .csh-stat-sub {
    margin: 3px 0 0;
    font-size: 16px;
    line-height: 16px;
    color: #8C86A6;
}

/* ==========================================================================
   CASE STUDY SECTIONS — the numbered stack under the hero on
   /case-study/<slug>. Every rule is prefixed with its section class because
   the page sits inside .bg-dark, which style.css uses to paint all headings
   white; these sections need their own ink.
   ========================================================================== */

.cs-main .cs-section {
    padding: 86px 0 0;
}

.cs-main .cs-section:last-child {
    padding-bottom: 20px;
}

/* --- the "05 / THE PROBLEM" strip and the heading under it ---------------- */

.cs-main .cs-head {
    max-width: 820px;
    margin-bottom: 30px;
}

.cs-main .csd-eyebrow {
    display: flex;
    align-items: center;
    gap: 8px;
    margin: 0 0 4px;
    font-size: 20px;
    font-weight: 700;
    letter-spacing: 2px;
    text-transform: uppercase;
    /* The whole strip is orange the way the design sets it, with the slash
       dimmed so the number and the label still read as two things. */
    color: #FE4601;
}

/* A section that carries no heading -- the design leaves several without one
   -- should not also carry the gap that sat under the eyebrow. */
.cs-main .csd-eyebrow:only-child {
    margin-bottom: 0;
}

.cs-main .csd-num {
    color: #FE4601;
}

.cs-main .csd-slash {
    color: rgba(254, 70, 1, .5);
}

.cs-main .csd-title {
    margin: 0;
    font-size: 55px;
    line-height: 105%;
    font-weight: 700;
    color: #ffffff;
}

.cs-main .csd-accent {
    color: #FE4601;
}

.cs-main .csd-intro {
    margin: 16px 0 0;
    font-size: 16px;
    line-height: 22px;
    color: #fff;
}

/* The light band and the orange band each re-ink the same strip. */

/* The eyebrow stays orange on the pale band -- the design keeps it the one
   constant across both grounds. Only the heading and the paragraph turn. */
.cs-main .cs-head-light .csd-eyebrow {
    color: #FE4601;
}

.cs-main .cs-head-light .csd-title {
    color: #0E0920;
}

.cs-main .cs-head-light .csd-intro {
    color: rgba(14, 9, 32, .7);
}

.cs-main .cs-head-on-orange .csd-eyebrow,
.cs-main .cs-head-on-orange .csd-slash,
.cs-main .cs-head-on-orange .csd-num {
    color: rgba(255, 255, 255, .8);
}

.cs-main .cs-head-on-orange .csd-title,
.cs-main .cs-head-on-orange .csd-accent {
    color: #ffffff;
}

.cs-main .cs-head-on-orange .csd-intro {
    color: rgba(255, 255, 255, .85);
}

/* --- 01 / IN MOTION: the mosaic of clips --------------------------------
   The design's shape: one wide film on the left with the rest stacked beside
   it, not three equal columns. The first tile spans two rows and takes its
   height from them, so the block stays flush top and bottom however tall the
   right-hand column runs. */

.cs-motion .csm-grid {
    display: grid;
    grid-template-columns: 670px 302px;
    justify-content: center;
    column-gap: 18px;
    row-gap: 26.45px;
    margin: 0;
    padding: 0;
    list-style: none;
}

.cs-motion .csm-tile {
    min-width: 0;
}

.cs-motion .csm-tile:first-child {
    grid-row: span 2;
}

.cs-motion .csm-frame {
    position: relative;
    width: 304px;
    height: 184px;
    aspect-ratio: auto;
    border-radius: 8px;
    overflow: hidden;
    background: #17102F;
}

/* The wide one is ruled by its two-row span, so its own ratio is dropped:
   whatever the tiles beside it add up to is its height. */
.cs-motion .csm-tile:first-child .csm-frame {
    width: 100%;
    height: 394.45px;
}

.cs-motion .csm-still,
.cs-motion .csm-video {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}

/* The hero's play button at tile size: the same brand disc, ring and
   triangle, so a clip reads the same wherever it sits on the page. */
.cs-motion .csm-play {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    display: grid;
    place-items: center;
    width: 52px;
    height: 52px;
    padding: 0;
    background: #FE4601;
    border: 2px solid rgba(255, 255, 255, .9);
    border-radius: 50%;
    box-shadow: 0 8px 22px rgba(11, 5, 26, .35);
    cursor: pointer;
    transition: transform .2s ease, background .2s ease;
}

.cs-motion .csm-play:hover {
    background: #ff5c22;
    transform: translate(-50%, -50%) scale(1.06);
}

.cs-motion .csm-play-ico {
    display: block;
    width: 0;
    height: 0;
    margin-left: 4px;
    border-top: 9px solid transparent;
    border-bottom: 9px solid transparent;
    border-left: 15px solid #ffffff;
}


/* --- 02 / THE WORK ITSELF: the strip that runs past on its own ----------
   The look is the brand page's first marquee row, written out again here
   rather than shared: /brand's row is fixed artwork, this one is whatever the
   admin loaded into the study, and the two must be able to drift apart.

   Two variables drive the row. --csw-h is its height, and --csw-w is the
   width of a stacked column, which cannot be derived from the height: the two
   halves are cropped to fill, so fixing the width is what keeps the strip's
   rhythm even. Both step down together in responsive.css. */

.cs-work .csw-row {
    overflow: hidden;
    --csw-h: 440px;
    --csw-w: 198px;
    --csw-gap: 10px;
}

/* `width: max-content` stops the flex line from wrapping or shrinking: the
   track has to be its full natural length for -50% to equal exactly one copy.
   `will-change` keeps the strip on its own compositor layer, which is what
   lets something this wide move without tearing. */
.cs-work .csw-track {
    display: flex;
    width: max-content;
    animation-name: csw-scroll;
    animation-timing-function: linear;
    animation-iteration-count: infinite;
    will-change: transform;
}

/* Paused rather than slowed, so a piece someone is looking at stays put. */
.cs-work .csw-row:hover .csw-track {
    animation-play-state: paused;
}

/* The admin can stop the strip by setting the seconds to 0. */
.cs-work .csw-track-still {
    animation: none;
}

/* The trailing margin is the spacing -- see the note in the component about
   why this cannot be a flex `gap`. */
.cs-work .csw-item {
    flex: 0 0 auto;
    margin-right: 18px;
    height: var(--csw-h);
}

/* Height-driven: the tile keeps the design's 413x720 shape and takes whatever
   width that needs. The ratio is declared rather than left to the file,
   because a media element that has not arrived yet is zero wide and would
   shove the strip sideways as each one decoded. */
.cs-work .csw-tall {
    display: block;
    width: auto;
    height: 100%;
    aspect-ratio: 413 / 720;
    border-radius: 14px;
    object-fit: cover;
    background: #17102F;
}

/* `min-height: 0` on the halves because a flex item defaults to min-content:
   without it each one would refuse to go below its natural height and the
   column would push past the row. */
.cs-work .csw-stack {
    display: flex;
    flex-direction: column;
    gap: var(--csw-gap);
    width: var(--csw-w);
    height: 100%;
}

.cs-work .csw-half {
    display: block;
    flex: 1 1 0;
    min-height: 0;
    width: 100%;
    border-radius: 14px;
    object-fit: cover;
    background: #17102F;
}

@keyframes csw-scroll {
    from {
        transform: translate3d(0, 0, 0);
    }

    to {
        transform: translate3d(-50%, 0, 0);
    }
}

@media (prefers-reduced-motion: reduce) {
    .cs-work .csw-track {
        animation: none;
    }
}


/* --- 03 / THE CHALLENGE: the picture cards ------------------------------
   The card is /paid-ads' "What we measure" card (.pms-card), rewritten for
   the dark ground: the same rounded media block lifting its image on hover
   and the same purple title. The head runs the design's way here -- heading
   on the left, the paragraph set against it on the right -- so this section
   overrides the single centred column every other head uses. */

.cs-main .cs-head-split {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 40px;
    max-width: none;
}

.cs-main .cs-head-split .csd-head-main {
    flex: 1 1 auto;
    min-width: 0;
}

.cs-main .cs-head-split .csd-head-side {
    flex: 0 1 360px;
}

.cs-main .cs-head-split .csd-intro {
    margin: 0;
    text-align: right;
}

/* The team band's line sits level with its heading rather than at the top of
   it, because that heading runs to two lines here. */
.cs-teams .cs-head-split {
    align-items: center;
}

.cs-problem .csp-grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 20px;
    margin: 0;
    padding: 0;
    list-style: none;
}

.cs-problem .csp-frame {
    aspect-ratio: 4 / 5;
    border-radius: 14px;
    overflow: hidden;
    background: #17102F;
}

.cs-problem .csp-img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
    transition: transform .6s cubic-bezier(.22, 1, .36, 1);
}

.cs-problem .csp-card:hover .csp-img {
    transform: scale(1.05);
}

.cs-problem .csp-title {
    margin: 18px 0 0;
    font-size: 22px;
    line-height: 28px;
    font-weight: 700;
    color: #8668FF;
}

.cs-problem .csp-body {
    margin: 10px 0 0;
    font-size: 14px;
    line-height: 23px;
    color: rgba(255, 255, 255, .62);
}

/* --- 04 / OUR APPROACH: the numbered cards ------------------------------
   Each card is a step: its number sits behind the words as a ghost at the
   top, and the words themselves sit at the foot, so a card with two lines of
   title and a card with four still line up along the bottom.

   The row is ruled in four columns rather than the number of cards, which is
   what keeps three of them the same width as the four in the section above
   instead of stretching to fill the page.

   Three grounds, chosen per card in the admin: the dark one every section
   uses, a pale one, and the purple. Each carries its own ink, including the
   ghost number's. */

.cs-approach .csa-grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 20px;
    margin: 0;
    padding: 0;
    list-style: none;
}

.cs-approach .csa-card {
    display: flex;
    flex-direction: column;
    min-height: 300px;
    padding: 22px 22px 26px;
    background: #171033;
    border: 1px solid rgba(255, 255, 255, .07);
    border-radius: 16px;
}

.cs-approach .csa-light {
    background: #EDEDED;
    border-color: transparent;
}

.cs-approach .csa-purple {
    background: #8668FF;
    border-color: transparent;
}

/* Set large and faint, and pulled tight to the top of the card: it is a
   marker, not a line of text. */
.cs-approach .csa-num {
    display: block;
    margin: 0px 0 0;
    font-size: 100px;
    text-align: center;
    line-height: 82px;
    font-weight: 700;
    letter-spacing: -2px;
    color: rgba(255, 255, 255, .09);
}

.cs-approach .csa-light .csa-num {
    color: rgba(14, 9, 32, .16);
}

.cs-approach .csa-purple .csa-num {
    color: rgba(255, 255, 255, .24);
}

/* The words are pushed to the foot of the card, which is what lines the
   titles up across a row of uneven cards. */
.cs-approach .csa-title {
    margin: auto 0 0;
    font-size: 32px;
    line-height: 113%;
    font-weight: 700;
    color: #ffffff;
}

.cs-approach .csa-body {
    margin: 12px 0 0;
    font-size: 16.5px;
    line-height: 139%;
    font-weight: 600;
    color: rgba(255, 255, 255, .72);
}

.cs-approach .csa-light .csa-title {
    color: #0E0920;
}

.cs-approach .csa-light .csa-body {
    color: rgba(14, 9, 32, .68);
}

.cs-approach .csa-purple .csa-body {
    color: rgba(255, 255, 255, .88);
}

/* --- 05 / WHAT WE DELIVERED: the team band -----------------------------

   The band sits on the page's own dark ground -- only the cards are light.

   The cards are the homepage's .sixparts-card written out for this band: the
   same white panel, the same artwork bled to the card's own edges, the same
   pill. They sit in a snapping scroller rather than a grid, so a study with
   six teams reads the same as one with three. */

.cs-teams .cstm-track {
    display: flex;
    gap: 20px;
    overflow-x: auto;
    scroll-snap-type: x mandatory;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
    padding-bottom: 4px;
}

.cs-teams .cstm-track::-webkit-scrollbar {
    display: none;
}

.cs-teams .cstm-card {
    flex: 0 0 300px;
    max-width: 300px;
    scroll-snap-align: start;
    scroll-snap-stop: always;
    display: flex;
    flex-direction: column;
    padding: 24px 22px 24px;
    background: #ffffff;
    border-radius: 18px;
    box-shadow: 0 1px 2px rgba(11, 11, 15, .05);
}

.cs-teams .cstm-title {
    margin: 0 0 12px;
    font-size: 19px;
    line-height: 26px;
    font-weight: 700;
    color: #FE4601;
}

.cs-teams .cstm-points {
    margin: 0;
    padding-left: 16px;
    list-style: disc;
    font-size: 13px;
    line-height: 22px;
    color: rgba(14, 9, 32, .7);
}

.cs-teams .cstm-body {
    margin: 0;
    font-size: 13px;
    line-height: 22px;
    color: rgba(14, 9, 32, .7);
}

/* The artwork runs to the card's own edges, so the media box cancels the
   card padding on both sides; the card's radius clips it. `margin-top: auto`
   holds it to the foot, which lines the pictures up across a row of cards
   whose lists are different lengths. */
.cs-teams .cstm-media {
    margin: auto -22px 0;
    padding: 18px 0 6px;
    overflow: hidden;
}

.cs-teams .cstm-media img {
    display: block;
    width: 100%;
    object-fit: contain;
}

.cs-teams .cstm-cta {
    align-self: flex-start;
    display: inline-flex;
    align-items: center;
    gap: 6px;
    margin-top: 16px;
    padding: 9px 18px;
    border-radius: 999px;
    background: #8668FF;
    color: #ffffff;
    font-size: 13px;
    font-weight: 700;
    text-decoration: none;
    transition: opacity .15s ease, transform .15s ease;
}

.cs-teams .cstm-cta:hover {
    color: #ffffff;
    opacity: .9;
    transform: translateY(-1px);
}

/* --- 06 / HOW IT RAN: the stage cards ------------------------------------

   The homepage's .howruns-card written out for this page: a full-bleed image
   with the copy over its clear half, a dash eyebrow, and the stage number set
   large and faint into the artwork. The copy swaps sides down the list.

   The cards here sit in the content column beside the rail rather than across
   the page, so the type is a step smaller than the homepage's and the card
   keeps the artwork's ratio instead of a fixed height.

   A step with no artwork still reads: the card carries a gradient of its own,
   purple by default and blue on the flipped rows, which is the alternation
   the design runs. `tone` on the step overrides it. */

.cs-ran .csr-list {
    display: flex;
    flex-direction: column;
    gap: 22px;
}

.cs-ran .csr-card {
    position: relative;
    display: flex;
    align-items: center;
    aspect-ratio: 1800 / 671;
    border-radius: 28px;
    overflow: hidden;
    background: linear-gradient(115deg, #7C3FE4 0%, #A46BF5 100%);
}

.cs-ran .csr-card.is-flipped {
    justify-content: flex-end;
    background: linear-gradient(115deg, #3B7BE0 0%, #6FA8F2 100%);
}

.cs-ran .csr-purple,
.cs-ran .csr-purple.is-flipped {
    background: linear-gradient(115deg, #7C3FE4 0%, #A46BF5 100%);
}

.cs-ran .csr-blue,
.cs-ran .csr-blue.is-flipped {
    background: linear-gradient(115deg, #3B7BE0 0%, #6FA8F2 100%);
}

.cs-ran .csr-bg {
    position: absolute;
    inset: 0;
    z-index: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.cs-ran .csr-card-body {
    position: relative;
    z-index: 2;
    width: 50%;
    padding-left: 6%;
    padding-right: 2%;
}

.cs-ran .csr-card.is-flipped .csr-card-body {
    padding-left: 2%;
    padding-right: 6%;
}

.cs-ran .csr-eyebrow {
    display: flex;
    align-items: center;
    gap: 10px;
    margin-bottom: 12px;
    font-size: 19px;
    font-weight: 600;
    line-height: 140%;
    color: #ffffff;
}

.cs-ran .csr-eyebrow i {
    display: block;
    flex: 0 0 18px;
    width: 18px;
    height: 2px;
    background: currentColor;
}

.cs-ran .csr-card-title {
    margin: 0 0 14px;
    font-size: 27px;
    line-height: 130%;
    font-weight: 700;
    color: #ffffff;
    white-space: pre-line;
}

.cs-ran .csr-card-desc {
    margin: 0;
    font-size: 17px;
    line-height: 27px;
    color: rgba(255, 255, 255, .92);
}

/* Sunk into the artwork behind the copy, on the side the copy has left. */
.cs-ran .csr-num {
    position: absolute;
    top: 8%;
    right: 3.5%;
    z-index: 1;
    font-size: 72px;
    line-height: 1;
    font-weight: 700;
    letter-spacing: -2px;
    color: rgba(255, 255, 255, .22);
    pointer-events: none;
}

.cs-ran .csr-card.is-flipped .csr-num {
    right: auto;
    left: 3.5%;
}

/* --- 09 / STACK: the folder cards ---------------------------------------

   The /website-and-cro tech card (components/website-and-cro/Tech.js) drawn in
   CSS: there each card is a finished PNG with the name baked in, here the
   tools are typed per study, so the same shape is built and the name is real
   text. The design sets this one at 205x128 -- wider and shorter than the
   service page's, with no logo under the name -- and a logo is drawn only if
   one is given.

   The shape is three pieces: the panel, a tab riding above its right end, and
   a fillet that curves the panel's top edge up into the tab's left side. The
   fillet is a radial-gradient rather than a clipped box, so it inherits
   --csk-ground -- the colour typed in the admin -- like the rest. */

.cs-stack .csk-row {
    overflow: hidden;
    margin-top: 18px;
}

/* `width: max-content` stops the line from wrapping or shrinking: the track
   has to be its full natural length for -50% to equal exactly one copy. */
.cs-stack .csk-track {
    display: flex;
    align-items: flex-start;
    width: max-content;
    padding-top: var(--csk-tab, 16px);
    animation-name: csk-scroll;
    animation-timing-function: linear;
    animation-iteration-count: infinite;
    will-change: transform;
}

/* Paused rather than slowed, so a card someone is reading stays put. */
.cs-stack .csk-row:hover .csk-track {
    animation-play-state: paused;
}

.cs-stack .csk-track-still {
    animation: none;
}

@keyframes csk-scroll {
    from {
        transform: translate3d(0, 0, 0);
    }

    to {
        transform: translate3d(-50%, 0, 0);
    }
}

@media (prefers-reduced-motion: reduce) {
    .cs-stack .csk-track {
        animation: none;
    }
}

.cs-stack .csk-card {
    --csk-ground: #262626;
    --csk-tab: 16px;
    position: relative;
    display: flex;
    flex-direction: column;
    flex: 0 0 auto;
    width: 205px;
    aspect-ratio: 205 / 128;
    margin-right: 14px;
    padding: 16px 16px 18px;
    background: var(--csk-ground);
    border-radius: 12px;
}

/* The tab, on the right of the card's top edge, with only its own top
   corners rounded so it reads as one shape with the panel. */
.cs-stack .csk-card::before {
    content: "";
    position: absolute;
    top: calc(var(--csk-tab) * -1);
    right: 0;
    width: 38%;
    height: calc(var(--csk-tab) + 12px);
    background: var(--csk-ground);
    border-radius: 12px 12px 0 0;
}

/* The fillet: ground everywhere except a quarter-disc struck from its own
   top-left corner, which is the concave curve the artwork turns there. */
.cs-stack .csk-card::after {
    content: "";
    position: absolute;
    top: calc(var(--csk-tab) * -1);
    right: 38%;
    width: var(--csk-tab);
    height: var(--csk-tab);
    /* background: radial-gradient(
        circle at 0 0,
        transparent var(--csk-tab),
        var(--csk-ground) var(--csk-tab)
    ); */
}

.cs-stack .csk-name {
    position: relative;
    z-index: 1;
    display: block;
    font-size: 17px;
    line-height: 23px;
    font-weight: 700;
    color: #ffffff;
}

/* The logo fills the room the name leaves, centred, as it is in the artwork. */
.cs-stack .csk-logo {
    position: relative;
    z-index: 1;
    display: block;
    width: 62%;
    max-height: 56%;
    margin: auto auto 0;
    object-fit: contain;
}

/* --- 10 / WHERE IT LANDED: the orange closing band ----------------------
   Everything on the band is centred: the head, the chain, and the figures. */

.cs-landed {
    margin-top: 86px;
    padding: 64px 40px 68px;
    background: #FE4601;
    border-radius: 28px;
    text-align: center;
}

.cs-landed .cs-head {
    max-width: 780px;
    margin-left: auto;
    margin-right: auto;
}

/* The chain: plain type with an arrow between the links, not a row of boxes.
   The arrows are list items of their own so the row wraps between links
   rather than stranding an arrow at the end of a line. */
.cs-landed .csl-flow {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-start;
    justify-content: center;
    gap: 26px;
    margin: 10px 0 0;
    padding: 0;
    list-style: none;
}

.cs-landed .csl-node {
    max-width: 200px;
}

.cs-landed .csl-arrow {
    display: flex;
    align-items: center;
    height: 22px;
    color: rgba(255, 255, 255, .85);
}

.cs-landed .csl-label {
    display: block;
    font-size: 16px;
    font-weight: 700;
    line-height: 22px;
    color: #ffffff;
}

.cs-landed .csl-sub {
    display: block;
    margin-top: 3px;
    font-size: 11px;
    line-height: 16px;
    color: rgba(255, 255, 255, .82);
}

/* The figures: pale pills sat side by side under the chain, sized by their
   own content rather than stretched across the band. */
.cs-landed .csl-stats {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 16px;
    margin: 40px 0 0;
    padding: 0;
    list-style: none;
}

.cs-landed .csl-stat {
    flex: 0 0 auto;
    min-width: 176px;
    padding: 16px 26px 18px;
    background: rgba(255, 255, 255, .17);
    border-radius: 14px;
}

.cs-landed .csl-value {
    margin: 0 0 2px;
    font-size: 34px;
    line-height: 1.1;
    font-weight: 800;
    color: #ffffff;
}

.cs-landed .csl-slabel {
    margin: 0;
    font-size: 13px;
    font-weight: 600;
    color: #ffffff;
}

.cs-landed .csl-sub2 {
    margin: 4px 0 0;
    font-size: 13px;
    line-height: 20px;
    color: rgba(255, 255, 255, .8);
}

/* --- HOME / WHAT WE BUILD IT FOR: the rewritten copy block --------------
   The heading now opens on the orange line and the body runs to two
   paragraphs, so the column is wider and the type a step smaller than the
   single-sentence version it replaces. The geometry of the card stage
   beside it is untouched. */

.builditfor-section .builditfor-heading {
    font-size: 44px;
    line-height: 52px;
    margin: 0 0 34px;
    max-width: 1000px;
}

.builditfor-section .builditfor-copy .builditfor-desc {
    max-width: 620px;
    font-size: 17px;
    line-height: 27px;
    font-weight: 400;
}

.builditfor-section .builditfor-copy .builditfor-desc + .builditfor-desc {
    margin-top: 18px;
}

/* The lead sentence is the one line of the paragraph the design sets in
   the page's white ink, so it reads before the rest of the block. */
.builditfor-section .builditfor-lead {
    color: #ffffff;
    font-weight: 700;
}

.builditfor-section .builditfor-cta {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    margin-top: 26px;
    padding: 12px 26px;
    background: #8668FF;
    border-radius: 999px;
    color: #ffffff;
    font-size: 15px;
    font-weight: 700;
    text-decoration: none;
    transition: opacity .15s ease, transform .15s ease;
}

.builditfor-section .builditfor-cta:hover {
    color: #ffffff;
    opacity: .9;
    transform: translateY(-1px);
}
