@import url('https://fonts.googleapis.com/css2?family=Raleway:ital,wght@0,100..900;1,100..900&display=swap');

:root {
    /* Colours */
    --main-bg-color: #F4EDF0;
    --dark-bg-color: #702B5C;
    --brand-color: #C860A4;
    --main-text-color: #4A4A4A;
    --light-text-color: #f9f9f9;
    --cta-bg-color: #63C7C7;


    /* Font Family */
    --font-family: Raleway, sans-serif;

    /* Type Scale */
    --display-lg-size: clamp(3.292rem, calc(2.740rem + 2.761vw), 4.811rem);
    --display-lg-weight: 800;
    --display-lg-line-height: 1.5;
    --display-lg-letter-spacing: 0.008em;

    --display-md-size: clamp(2.837rem, calc(2.430rem + 2.030vw), 3.953rem);
    --display-md-weight: 800;
    --display-md-line-height: 1.5;
    --display-md-letter-spacing: 0.01em;

    --h1-size: clamp(2.444rem, calc(2.152rem + 1.462vw), 3.248rem);
    --h1-weight: 700;
    --h1-line-height: 1.55;
    --h1-letter-spacing: 0.015em;

    --h2-size: clamp(1.814rem, calc(1.677rem + 0.689vw), 2.193rem);
    --h2-weight: 600;
    --h2-line-height: 1.55;
    --h2-letter-spacing: 0.02em;

    --h3-size: clamp(1.563rem, calc(1.476rem + 0.435vw), 1.802rem);
    --h3-weight: 600;
    --h3-line-height: 1.55;
    --h3-letter-spacing: 0.02em;

    --h4-size: clamp(1.347rem, calc(1.298rem + 0.244vw), 1.481rem);
    --h4-weight: 500;
    --h4-line-height: 1.6;
    --h4-letter-spacing: 0.025em;

    --h5-size: clamp(1.250rem, calc(1.217rem + 0.168vw), 1.343rem);
    --h5-weight: 500;
    --h5-line-height: 1.6;
    --h5-letter-spacing: 0.025em;

    --h6-size: clamp(1.161rem, calc(1.140rem + 0.102vw), 1.217rem);
    --h6-weight: 500;
    --h6-line-height: 1.6;
    --h6-letter-spacing: 0.03em;

    --body-xl-size: clamp(1.077rem, calc(1.068rem + 0.047vw), 1.103rem);
    --body-xl-weight: 400;
    --body-xl-line-height: 1.6;
    --body-xl-letter-spacing: 0.03em;

    --body-size: clamp(1.000rem, calc(1.000rem + 0.000vw), 1.000rem);
    --body-weight: 400;
    --body-line-height: 1.6;
    --body-letter-spacing: 0.03em;

    --body-sm-size: clamp(0.928rem, calc(0.936rem + -0.040vw), 0.906rem);
    --body-sm-weight: 400;
    --body-sm-line-height: 1.65;
    --body-sm-letter-spacing: 0.03em;

    --caption-lg-size: clamp(0.862rem, calc(0.876rem + -0.073vw), 0.822rem);
    --caption-lg-weight: 400;
    --caption-lg-line-height: 1.65;
    --caption-lg-letter-spacing: 0.03em;

    --caption-size: clamp(0.800rem, calc(0.820rem + -0.100vw), 0.745rem);
    --caption-weight: 400;
    --caption-line-height: 1.65;
    --caption-letter-spacing: 0.03em;

    --caption-sm-size: clamp(0.742rem, calc(0.767rem + -0.122vw), 0.675rem);
    --caption-sm-weight: 300;
    --caption-sm-line-height: 1.65;
    --caption-sm-letter-spacing: 0.03em;

    --overline-size: clamp(0.689rem, calc(0.717rem + -0.140vw), 0.612rem);
    --overline-weight: 500;
    --overline-line-height: 1.65;
    --overline-letter-spacing: 0.03em;

    /* Numeric style (all lining numbers) */
    --font-numbers: lining-nums;

}

* {
    margin: 0;
    padding: 0;
}

/* Reusable classes */

.flex {
    display: flex;
}

.flex-col {
    flex-direction: column;
}

.flex-row {
    flex-direction: row;
}

.w-100 {
    width: 100%;
}

.mg-0-auto {
    margin: 0 auto;
}

/* Type Scale System */

h1 {
    font-size: var(--h1-size);
    font-weight: 800;
    line-height: 4rem;
    letter-spacing: var(--h1-letter-spacing);
    text-align: center;
    color: var(--brand-color);
}

h2 {
    font-size: var(--h2-size);
    font-weight: var(--h2-weight);
    line-height: 2.5rem;
    letter-spacing: var(--h2-letter-spacing);
}

h3 {
    font-size: var(--h3-size);
    font-weight: var(--h3-weight);
    line-height: var(--h3-line-height);
    letter-spacing: var(--h3-letter-spacing);
}

h4 {
    font-size: var(--h4-size);
    font-weight: var(--h4-weight);
    line-height: var(--h4-line-height);
    letter-spacing: var(--h4-letter-spacing);
}

h5 {
    font-size: var(--h5-size);
    font-weight: var(--h5-weight);
    line-height: var(--h5-line-height);
    letter-spacing: var(--h5-letter-spacing);
}

h6 {
    font-size: var(--h6-size);
    font-weight: var(--h6-weight);
    line-height: var(--h6-line-height);
    letter-spacing: var(--h6-letter-spacing);
}

.body-xl {
    font-size: var(--body-xl-size);
    font-weight: var(--body-xl-weight);
    line-height: var(--body-xl-line-height);
    letter-spacing: var(--body-xl-letter-spacing);
}

.body-sm {
    font-size: var(--body-sm-size);
    font-weight: var(--body-sm-weight);
    line-height: var(--body-sm-line-height);
    letter-spacing: var(--body-sm-letter-spacing);
}

.caption-lg {
    font-size: var(--caption-lg-size);
    font-weight: var(--caption-lg-weight);
    line-height: var(--caption-lg-line-height);
    letter-spacing: var(--caption-lg-letter-spacing);
}

.caption {
    font-size: var(--caption-size);
    font-weight: var(--caption-weight);
    line-height: var(--caption-line-height);
    letter-spacing: var(--caption-letter-spacing);
}

.caption-sm {
    font-size: var(--caption-sm-size);
    font-weight: var(--caption-sm-weight);
    line-height: var(--caption-sm-line-height);
    letter-spacing: var(--caption-sm-letter-spacing);
}

.overline {
    font-size: var(--overline-size);
    font-weight: var(--overline-weight);
    line-height: var(--overline-line-height);
    letter-spacing: var(--overline-letter-spacing);
}

/* Buttons */
.btn-primary {
    background-color: var(--cta-bg-color);
    color: var(--light-text-color);
    border: none;
    width: fit-content;
    font-size: var(--body-size);
    font-weight: 600;
    line-height: var(--body-line-height);
    letter-spacing: var(--body-letter-spacing);
    padding: 1rem 1.5rem;
    text-decoration: none;
}

.btn-secondary {
    background-color: transparent;
    color: var(--brand-color);
    border: solid 2px var(--brand-color);
    width: fit-content;
    padding: 1rem 1.5rem;
    transition: .3s ease;
}

.btn-tertiary {
    color: var(--brand-color);
    background-color: transparent;
    border: none;
}

.btn-primary, .btn-secondary, .btn-tertiary {
    font-size: var(--body-size);
    font-weight: 600;
    line-height: var(--body-line-height);
    letter-spacing: var(--body-letter-spacing);
    text-decoration: none;
    border-radius: 8px;
}

.btn-primary:hover, .btn-secondary:hover, .btn-tertiary:hover {
    cursor: pointer;
    transform: scale(1.05);
    transition: transform .3s ease;
}

.btn-secondary:hover {
    background-color: var(--brand-color);
    color: var(--main-bg-color);
}

/* Elements */

html {
    height: 100%;
}

body {
    display: flex;
    flex-direction: column;
    min-height: 100vh;
    background-color: var(--main-bg-color);
    font-family: var(--font-family);
    font-size: var(--body-size);
    font-weight: var(--body-weight);
    line-height: var(--body-line-height);
    letter-spacing: var(--body-letter-spacing);
    font-variant-numeric: var(--font-numbers);
    color: var(--main-text-color);
}

.footer-container {
    height: auto;
    justify-content: space-between;
}

.footer-menu > ul {
    list-style-type: none;
}

.footer-menu > ul > li {
    color: var(--main-bg-color);
    padding: 8px 12px;
}

.footer-menu > ul > li > a{
    color: var(--main-bg-color);
    text-decoration: none;
}

.content {
    flex: 1;
    padding: 0 24px;
    max-width: 1920px;
    display: flex;
    flex-direction: column;
    justify-content: center;
}

.card {
    background-color: var(--light-text-color);
    border-radius: 24px;
    overflow: hidden;
    width: auto;
}

.know-more-btn {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
}

.know-more-label {
    display: inline-block;
    white-space: nowrap;
    font-weight: 600;
}

/**/
.hero {
    padding: 80px 120px;
    max-width: 800px;
    align-items: center;
    text-align: center;
    gap: 24px;
}

.home-hero-h1 {
    max-width: 605px;
}

.hero-btn {
    margin-top: 8px;
}

.hero-caption, .section-caption {
    font-weight: 600;
    line-height: 1.5;
}

.hero-caption {
    color: var(--main-text-color);
    margin-bottom: -24px;
}

.social-proof {
    width: 100%;
    flex-direction: row;
    justify-content: center;
    gap: 64px;
    margin: 1.5rem 0;
}

.stats-caption {
    font-size: var(--caption-sm-size);
    font-weight: var(--caption-sm-weight);
}

.worked-with-me, .countries-worked-with {
    text-align: left;
}

.vertical-divider {
    width: 2px;
    background-color: var(--main-text-color);
}

.stats {
    font-size: var(--h3-size);
    font-weight: var(--h1-weight);
    color: var(--main-text-color)
}

.section-caption {
    color: var(--brand-color);
}

.about-me, .instruments-section, .services-preview, .benefits-preview, .gallery-section, .services-page-content, .referrals {
    padding: 40px 0;
    max-width: 1440px;
    gap: 1.5rem;
}

.about-me, .benefits-preview {
    flex-direction: row;
}

.section-header {
    gap: 0;
}

.about-me-info {
    gap: 1.5rem;
    justify-content: center;
}

.about-btn, .know-more-btn {
    position: relative;
    transition: all 0.3s ease;
}

.about-btn:hover, .know-more-btn:hover {
    transform: none;
}

.about-btn .arrow, .know-more-btn .arrow {
    display: inline-block;
    transition: all 0.3s ease;
}

.about-btn:hover .arrow, .know-more-btn:hover .arrow {
    transform: translateX(0.5rem);
}

.services-list, .benefits-info {
    gap: 1.5rem;
}

.services-card-text {
    padding: 24px 24px 32px;
}

.card-header {
    justify-content: space-between;
    padding: 0 0 0.5rem;
}

.benefits-cardlist {
    flex-direction: column;
    list-style-type: none;
    gap: 1.5rem;
    padding-inline-start: 0;
    flex: 1;

}

.benefits-cards {
    background-color: var(--light-text-color);
    border-radius: 1rem;
    padding: 1.5rem;
    align-items: start;
    gap: 1rem;
    height: -webkit-fill-available;
}

.benefits-cards-info {
    gap: 0.5rem;
}

.benefits-section {
    gap: 1.5rem;
    align-items: stretch;
    align-content: stretch;

}

 /**/

.jumbotron {
    padding: 40px 0;
    max-width: 1440px;
    gap: 1.5rem;
    align-items: center;
    text-align: center;
    justify-content: center;
}

footer {
    background-color: var(--dark-bg-color);
}

.footer-container {
    padding: 64px 24px;
    color: var(--main-bg-color);
    align-items: center;
}

.content {
    padding: 0 1.5rem;
}

/* About Me Page */

.instruments-container {
    display: flex;
    flex-direction: row;
    gap: 1rem;
}

.instrument-card {
    background-color: var(--light-text-color);
    border-radius: 1.5rem;
    align-items: center;
    text-align: center;
    padding: 1rem;
    gap: 0.5rem;
    width: -webkit-fill-available;
}

.gallery-section {
    flex-direction: column;
    gap: 1.5rem;
}

.image-roll {
    flex-direction: row;
    gap: 1.5rem;
}

/* Services Page */

.services-info {
    gap: 1rem;
    width: 50%;
}

.services-page-content {
    flex-direction: row;
}

.services-page-content img {
    object-fit: cover;
    border-radius: 1.5rem;
    max-height: 600px;
    width: 50%;
}

.referrals-container {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    grid-template-rows: 1;
    gap: 1rem;
}

.referral-pic {
    border-radius: 4rem;
    width: 4rem;
    height: 4rem;
    object-fit: cover;
}

.referrals-header {
    gap:2px;
    align-items: center;
    text-align: center;
}

.r-card-1 {
    grid-column: 1;
    grid-row: 1;
}

.r-card-2 {
    grid-column: 2;
    grid-row: 1
}

.r-card-3 {
    grid-column: 3;
    grid-row: 1
}

.referrals-card {
    padding: 2rem;
    background-color: var(--light-text-color);
    align-items: center;
    gap: 0.5rem;
    border-radius: 1.5rem;
}

.stars-rating {
    gap: 0.25rem;
}

.stars-rating span {
    color: #FFD814;
}

blockquote {
    height: auto;
    min-height: 2rem;
    text-align: center;
}

/* Contact Page */
.contact-container {
    flex-direction: row;
    justify-content: center;
    gap: 4rem;
    padding: 5rem 0;
}

.contact-info-container > h2 {
    padding-bottom: 1rem;
}

.email-btn {
    text-decoration: none;
    color: var(--brand-color);}

form {
    background-color: #f9f9f9;
    padding: 1.5rem;
    border-radius: 0.75rem;
    gap: 1rem;
    overflow-x: hidden;
}

/* Fade effect for form */

:root {
  --form-edge-fade: 2rem;         /* width of fade */
  --form-edge-fade-color: #fff;  /* match your form background (adjust if needed) */
}

/* container that will show fades at left/right edges */
.has-edge-fade {
  position: relative;    /* required for ::before/::after */
  overflow-x: hidden;    /* clip at container edge */
}

/* the fade overlays */
.has-edge-fade::before,
.has-edge-fade::after {
  content: "";
  position: absolute;
  top: 0;
  bottom: 0;
  width: var(--form-edge-fade);
  pointer-events: none;
  z-index: 6;
  transition: opacity .18s ease;
  opacity: 1;
}

/* left fade: solid -> transparent to the right */
.has-edge-fade::before {
  left: 0;
  background: linear-gradient(
    to right,
    var(--form-edge-fade-color) 0%,
    rgba(255,255,255,0.7) 40%,
    rgba(255,255,255,0.0) 100%
  );
}

/* right fade: solid -> transparent to the left */
.has-edge-fade::after {
  right: 0;
  background: linear-gradient(
    to left,
    var(--form-edge-fade-color) 0%,
    rgba(255,255,255,0.7) 40%,
    rgba(255,255,255,0.0) 100%
  );
}

/* hide fades when scroller reaches the corresponding edge */
.has-edge-fade.no-left-fade::before { opacity: 0; }
.has-edge-fade.no-right-fade::after { opacity: 0; }

/* Testing area is over */

.form-group {
    overflow: visible;
}

.form-group > label {
    font-size: var(--caption-size);
    font-weight: 600;
    color: var(--brand-color);
}

.form-group > input[type="text"], .form-group > textarea {
    padding: 0.5rem;
    border: none;
    background-color: transparent;
    border: 2px solid transparent;
}

.form-group > input[type="text"]:focus, .form-group > textarea:focus {
    border-bottom: 2px solid var(--brand-color);
    background-color: transparent;
    outline: none;
}


.option,
.form-group > span,
.form-group > input,
.form-group > textarea {
    color: var(--main-text-color);
    font-family: var(--font-family);
    font-size: var(--body-size);
    font-weight: 400;
}

textarea {
    resize: vertical;
}

.options {
    gap: 1rem;
    overflow-x:auto;
    -webkit-overflow-scrolling: touch;
    padding-inline: 1.5rem;     /* match the form padding */
    margin-left: -1.5rem;       /* pull the list out to the form edge */
    margin-right: -1.5rem;            /* prevents items from being cut at the edges */
    scroll-padding-inline: 1rem;     /* nicer snap / focus behaviour */
    box-sizing: border-box;
    padding-bottom: 0.5rem;
}

.options::-webkit-scrollbar {
    height: 2px;
}

.options::-webkit-scrollbar-thumb {
    background-color: var(--brand-color);
    border-radius: 0.5rem;
}

.option {
    flex: 0 0 auto;
    cursor: pointer;
}

.option input[type="radio"] {
    display: none;
}

.option span {
    display: inline-block;
    padding: 0.5rem 1rem;
    border: 2px solid transparent;
    border-radius: 0.75rem;
    transition: all 0.3s ease;
    white-space: nowrap;
}

.option input[type="radio"]:checked + span {
    border-color: var(--brand-color);
    color: var(--brand-color);
    font-weight: 600;
}

.form-btns {
    gap:1rem;
    justify-content: space-between;
 }

.form-btns > .btn-primary {
    /* padding-left: 5rem;
    padding-right: 5rem; */
    width: 100%;
    transition: all .5s ease;
}

.form-btns > .btn-tertiary {
    padding-left: 1.5rem;
    padding-right: 1.5rem;
    transition: all .3s ease;
    display: flex;
    align-items: center;
    justify-content: center;
    border: 2px solid transparent;
}

.form-btns > .btn-tertiary > .bi {
    height: 1.5rem;
    width: 1.5rem;
}

.form-btns > .btn-primary:hover {
    transform: none;
    background-color: var(--dark-bg-color);
}

.form-btns > .btn-tertiary:hover {
    transform: none;
    border: 2px solid var(--brand-color);
}

.required-mark {
    color: red;
}

/* Toast Notification */
.toast {
    position: fixed;
    bottom: -100px;
    right: 2rem;
    background-color: #4CAF50;
    color: var(--light-text-color);
    padding: 1rem 1.5rem;
    border-radius: 0.5rem;
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
    z-index: 1000;
    display: flex;
    align-items: center;
    gap: 1rem;
    transition: bottom 0.3s ease;
    font-weight: 500;
}

.toast.show {
    bottom: 2rem;
}

.toast-success {
    background-color: #4CAF50;
}

.toast-error {
    background-color: #f44336;
}

.toast-warning {
    background-color: #ff9800;
}

.toast-close {
    background: transparent;
    border: none;
    color: var(--light-text-color);
    font-size: 1.5rem;
    cursor: pointer;
    padding: 0;
    transition: transform 0.2s ease;
}

.toast-close:hover {
    transform: scale(1.1);
}

/* 404 Page */

.hero-404 {
    /* padding: 80px 120px; */
    width: 100%;
    max-width: 1080px;
    margin: 0 auto;
    align-items: center;
    text-align: left;
    justify-content: space-between;
    align-content: center;
    flex-wrap: wrap;
    gap: 2rem;
}

.h1-404 {
    text-align: left;
}

.info-404 {
    gap: 1rem;
    flex: 1;
    min-width: 300px;
}

.hero-404 img {
    max-height: 240px;
}

/* Media Queries */

@media (max-width:1024px) {
    .benefits-section {
        flex-direction: column;
    }
    
    .benefits-cardlist {
        flex-direction: row;
    }

    .benefits-cards {
        padding: 1.5rem 1rem;
        flex: 1 1 30%;
        box-sizing: border-box;
        min-width: 0;
    }

    .contact-container {
        flex-direction: column;
        padding: 5rem 0;
        gap: 2rem;
    }
}

@media (max-width:768px) {

    .hero {
    padding: 12px 16px;
    max-width: 560px;
    gap: 24px;
    }

    .home-hero-h1 {
        max-width: none;
    }

    h1 {
        font-size: 2.4rem;
        line-height: 2.7rem;
    }

    .hero > p, p {
        font-size: 1rem;
    }

    .about-me,
    .services-list,
    .benefits-preview,
    .benefits-section,
    .benefits-info,
    .footer-container {
        flex-direction: column;
    }   

    .about-me, .services-preview, .benefits-preview {
        padding: 24px 0;
        gap: 1rem;
    }

    .about-me-info, .services-list, .benefits-cardlist {
        gap: 1rem;
    }

    .description-section {
        flex-direction: column-reverse;
    }

    .instruments-container {
        display: grid;
        grid-template-columns: repeat(2, 1fr);
        grid-template-rows: 2;
        gap: 1rem;
    }

    .instruments-container:nth-child(0) {
        grid-column: 1;
        grid-row: 1;
    }

    .instruments-container:nth-child(1) {
        grid-column: 2;
        grid-row: 1;
    }

    .instruments-container:nth-child(2) {
        grid-column: 1;
        grid-row: 2;
    }

    .instruments-container:nth-child(3) {
        grid-column: 2;
        grid-row: 2;
    }

    .services-page-content {
        flex-direction: column-reverse;
    }

    .services-page-content img {
        max-height: 240px;
        width: 100%;
    }

    .services-info {
        width: 100%;
    }

    .footer-container {
        text-align: center;
        gap: 1.5rem;
    }

    .benefits-cardlist {
            flex-direction: column;
    }

    .benefits-cards {
        width: -webkit-fill-available;
    }


    .referrals-container {
        display: grid;
        grid-template-columns: repeat(1, 1fr);
        grid-template-rows: 3;
        gap: 1rem;
    }

    .referral-pic {
        border-radius: 3rem;
        width: 3rem;
        height: 3rem;
        object-fit: cover;
    }

    .referrals-header {
        gap:2px;
        align-items: center;
        text-align: center;
    }

    .r-card-1 {
        grid-column: 1;
        grid-row: 1;
    }

    .r-card-2 {
        grid-column: 1;
        grid-row: 2;
    }

    .r-card-3 {
        grid-column: 1;
        grid-row: 3;
    }

    .contact-container {
        flex-direction: column;
        padding: 2.5rem 0 5rem;
        gap: 2rem;
    }

    /* 404 Page */
    .hero-404 {
        flex-direction: column-reverse;
        justify-content: center;
        align-items: center;
        gap: 1.5rem;
    }

    .h1-404,
    .info-404 {
        text-align: center;
    }

    .hero-404 img {
        max-height: 200px;
    }

}

@media (max-width:480px) {
    :root { --form-edge-fade: 1.2rem; }

    /* Buttons */
    .btn-primary, .btn-secondary {
        font-size: 0.75rem;
        padding: 0.5rem 1rem;
    }

    .content {
        padding: 0 16px;
    }

    .hero {
    padding: 24px 16px;
    max-width: 360px;
    gap: 24px;
    }

    .social-proof{
        flex-direction: column;
        gap: 1rem;  
    }

    .worked-with-me, .countries-worked-with {
        text-align: center;
    }

    .vertical-divider {
        width: auto;
        height: 1px;
    }

    h1 {
        font-size: 2.5rem;
        line-height: 3rem;
    }

    h2 {
        font-size: 1.75rem;
    }

    h4 {
        font-size: 1.25rem;
    }

    .hero > p, p {
        font-size: var(--body-sm-size);
    }

    .stats {
        font-size: var(--h4-size);
    }

    .stats-caption {
        font-size: var(--overline-size);
    }

    .know-more-label {
        display: none;
    }

    .benefits-cards {
        flex-direction: column;
    }

    .instruments-container {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    }

    .form-group > label {
    font-size: var(--caption-sm-size);
    }

    .option,
    .form-group > span,
    .form-group > input,
    .form-group > textarea {
        color: var(--main-text-color);
        font-family: var(--font-family);
        font-size: var(--body-sm-size);
        font-weight: 400;
    }

    .footer-container {
        padding: 64px 16px;
    }

    .footer-menu > ul {
        flex-wrap: wrap;
        justify-content: center;
    }

    .footer-menu > ul > li {
        font-size: var(--body-sm-size);
    }

    .caption {
        font-size: var(--caption-sm-size);
    }

    /* 404 Page */

    .hero-404 {
        gap: 1rem;
    }

    .info-404 {
        min-width: 100%;
    }

    .hero-404 img {
        max-height: 160px;
    }

    .toast {
        right: 1rem;
        left: 1rem;
        bottom: -120px;
    }
}