:root {
    --bg: #282828;
    --panel: #2a2a2a;
    --field: #252525;
    --field-border: #333333;

    --text: #f4f4f4;
    --muted: #858585;

    --purple: #ad42aa;
    --purple-dark: #983797;

    --green: #6ec442;
    --cyan: #39a8c8;

    --line: linear-gradient(
        90deg,
        #b33caf 0%,
        #7f61bd 52%,
        #63c642 100%
    );
}


/* =========================================================
   RESET
   ========================================================= */

* {
    box-sizing: border-box;
}

html,
body {
    margin: 0;
    padding: 0;
    min-height: 100%;
}

html {
    background: #111;
}

body {
    min-height: 100vh;
    background: #111;
    font-family: "Montserrat", Arial, sans-serif;
    color: var(--text);
}

@media (min-width: 761px) {
    html,
    body {
        height: 100%;
        overflow: hidden;
    }
}

img {
    max-width: 100%;
}

button,
input,
select,
textarea {
    font-family: inherit;
}


/* =========================================================
   MAIN PAGE
   ========================================================= */

.page {
    min-height: 100vh;

    display: grid;

    grid-template-columns:
        minmax(360px, 28%)
        1fr;

    background:
        radial-gradient(
            circle at 80% 35%,
            rgba(255, 255, 255, 0.025),
            transparent 35%
        ),
        #282828;
}

@media (min-width: 761px) {
    .page {
        height: 100vh;
        min-height: 0;
        overflow: hidden;
    }
}


/* =========================================================
   LEFT CAMPAIGN PANEL
   ========================================================= */

.campaign {
    min-height: 100vh;

    position: relative;

    overflow: hidden;

    background: #050505;
}

.campaign img {
    display: block;

    width: 100%;
    height: 100%;

    object-fit: fill;

    object-position: top center;
}


/* =========================================================
   CONTENT
   ========================================================= */

.content {
    min-width: 0;

    position: relative;

    padding:
        52px
        7.5vw
        42px;

    display: flex;
    flex-direction: column;

    background:
        linear-gradient(
            rgba(42, 42, 42, 0.96),
            rgba(42, 42, 42, 0.97)
        ),
        radial-gradient(
            circle at 70% 20%,
            #414141 0,
            transparent 42%
        );

    overflow: hidden;
}

@media (min-width: 761px) {
    .content {
        height: 100vh;
        overflow-x: hidden;
        overflow-y: auto;
        overscroll-behavior: contain;
    }
}


/* =========================================================
   BACKGROUND PATTERN
   ========================================================= */

.content::before {
    content: "";

    position: absolute;

    inset: 0;

    pointer-events: none;

    opacity: 0.08;

    background-image:
        linear-gradient(
            135deg,
            transparent 0 48%,
            rgba(255, 255, 255, 0.15) 49%,
            transparent 50%
        ),
        linear-gradient(
            45deg,
            transparent 0 48%,
            rgba(255, 255, 255, 0.08) 49%,
            transparent 50%
        );

    background-size:
        170px 170px;
}


/* =========================================================
   RIGHT SIDE DECORATIVE BARS
   ========================================================= */

.corner {
    position: absolute;

    pointer-events: none;

    opacity: 0.9;
}

.corner.green {
    width: 22px;
    height: 370px;

    right: 0;
    top: 0;

    background: var(--green);

    clip-path: polygon(
        0 0,
        100% 0,
        100% 59%,
        0 65%
    );
}

.corner.blue {
    width: 22px;
    height: 330px;

    right: 0;
    top: 42%;

    background: var(--cyan);

    clip-path: polygon(
        0 0,
        100% 9%,
        100% 78%,
        0 68%
    );
}

.corner.purple {
    width: 22px;
    height: 330px;

    right: 0;
    bottom: 0;

    background: #9d39a9;

    clip-path: polygon(
        0 19%,
        100% 0,
        100% 100%,
        0 100%
    );
}


/* =========================================================
   INNER CONTENT
   ========================================================= */

.inner {
    width: min(100%, 805px);

    margin: 0 auto;

    position: relative;

    z-index: 1;
}


/* =========================================================
   BRAND
   ========================================================= */

.brand {
    height: 62px;

    display: flex;

    align-items: flex-start;

    justify-content: flex-end;

    margin-bottom: 28px;
}

.brand-mark {
    display: flex;

    align-items: center;
    justify-content: center;

    position: relative;

    font-style: italic;

    font-weight: 800;

    font-size: 31px;

    letter-spacing: -2px;

    line-height: 1;

    color: #fff;
}

.brand-mark img {
    display: block;

    max-width: 180px;

    width: auto;

    height: auto;
}


/* =========================================================
   HEADINGS
   ========================================================= */

h1 {
    font-size: 23px;

    line-height: 1.25;

    margin:
        0
        0
        72px;

    font-weight: 700;
}


/* =========================================================
   SECTION TITLE
   ========================================================= */

.section-title {
    font-size: 13px;

    color: #efefef;

    margin:
        0
        0
        11px;

    font-weight: 500;
}


/* =========================================================
   ATHLETE
   ========================================================= */

.athlete {
    margin-bottom: 42px;
}


/* =========================================================
   FORM ROW
   ========================================================= */

.row {
    display: grid;

    grid-template-columns:
        1fr
        1fr;

    gap: 14px;

    margin-bottom: 14px;
}


/* =========================================================
   INPUTS
   ========================================================= */

.field {
    width: 100%;

    height: 47px;

    border:
        1px solid
        var(--field-border);

    background:
        rgba(31, 31, 31, 0.72);

    border-radius: 3px;

    color: #d8d8d8;

    outline: none;

    padding:
        0
        14px;

    font-size: 12px;

    transition:
        border-color 0.2s ease,
        box-shadow 0.2s ease;
}

.field::placeholder {
    color: #777;
}

.field:focus {
    border-color: var(--purple);

    box-shadow:
        0 0 0 1px
        rgba(173, 66, 170, 0.15);
}


/* =========================================================
   PHONE
   ========================================================= */

.phone {
    display: flex;

    width: 100%;

    height: 47px;

    border:
        1px solid
        var(--field-border);

    background:
        rgba(31, 31, 31, 0.72);

    border-radius: 3px;

    overflow: hidden;
}

.phone:focus-within {
    border-color: var(--purple);
}

.phone input {
    flex: 1;

    min-width: 0;

    width: 100%;

    border: 0;

    background: transparent;

    color: #ddd;

    padding:
        0
        12px;

    outline: none;

    font-size: 12px;
}

.phone input::placeholder {
    color: #777;
}


/* =========================================================
   SEPARATOR
   ========================================================= */

.separator {
    height: 2px;

    margin:
        8px
        0
        30px;

    background: var(--line);
}


/* =========================================================
   GENDER / CATEGORY
   ========================================================= */

.gender {
    margin-bottom: 28px;
}

.gender-options {
    display: grid;

    grid-template-columns:
        1fr
        1fr;

    gap: 14px;
}

.gender-option {
    height: 47px;

    border:
        1px solid
        var(--field-border);

    border-radius: 3px;

    background: #252525;

    color: #777;

    display: flex;

    align-items: center;

    padding:
        0
        14px;

    font-size: 12px;

    cursor: pointer;

    user-select: none;

    transition:
        background 0.2s ease,
        border-color 0.2s ease,
        color 0.2s ease;
}

.gender-option:hover {
    border-color: #555;

    color: #aaa;
}

.gender-option.active {
    background: var(--purple);

    border-color: var(--purple);

    color: white;
}


/* =========================================================
   AGREEMENT
   ========================================================= */

.agreement {
    display: flex;

    align-items: flex-start;

    gap: 13px;

    margin-bottom: 31px;
}

.agreement input {
    appearance: none;

    width: 17px;
    height: 17px;

    margin: 0;

    border:
        1px solid
        #444;

    background: #242424;

    border-radius: 3px;

    flex: 0 0 auto;

    cursor: pointer;
}

.agreement input:checked {
    background: var(--purple);

    border-color: var(--purple);

    box-shadow:
        inset 0 0 0 3px
        #242424;
}

.agreement label {
    color: #777;

    font-size: 12px;

    line-height: 1.45;

    cursor: pointer;
}


/* =========================================================
   TERMS
   ========================================================= */

.terms {
    margin:
        -15px
        0
        0
        30px;

    color: #777;

    font-size: 11px;

    line-height: 1.5;
}

.terms-title {
    margin-bottom: 2px;
}

.terms ul {
    padding-left: 14px;

    margin: 0;
}

.terms li {
    margin-bottom: 3px;
}


/* =========================================================
   PAYMENT
   ========================================================= */

.payment {
    margin-top: 30px;

    display: flex;

    align-items: center;

    gap: 24px;
}

.pay-button {
    width: 200px;

    height: 48px;

    border: 0;

    border-radius: 2px;

    background: var(--purple);

    color: #fff;

    cursor: pointer;

    font-size: 12px;

    transition:
        background 0.2s ease,
        transform 0.2s ease;
}

.pay-button:hover {
    background: var(--purple-dark);
}

.pay-button:active {
    transform: translateY(1px);
}

.price {
    font-size: 30px;

    font-weight: 800;

    letter-spacing: 0.3px;

    white-space: nowrap;
}


/* =========================================================
   PAYMENT METHODS
   ========================================================= */

.payment-methods {
    display: flex;

    gap: 9px;

    margin-top: 18px;

    align-items: center;

    color: #bbb;

    font-size: 11px;

    font-weight: 700;

    max-width: 100%;

    overflow: hidden;
}

.payment-methods span {
    padding:
        2px
        4px;
}

.payment-methods img {
    display: block;

    width: auto;

    max-width: 230px;

    height: auto;

    min-width: 0;

    min-height: 0;
}


/* =========================================================
   FOOTER
   ========================================================= */

footer {
    margin-top: 48px;

    padding-top: 34px;

    border-top:
        2px solid transparent;

    border-image:
        var(--line)
        1;
}

.footer-info {
    display: flex;

    justify-content: center;

    gap: 80px;

    color: #ddd;

    font-size: 12px;
}

.footer-info div {
    min-width: 145px;
}

.footer-label {
    margin-bottom: 4px;

    color: #eee;
}


/* =========================================================
   SOCIAL
   ========================================================= */

.social {
    margin-top: 24px;

    display: flex;

    justify-content: flex-start;

    gap: 10px;

    padding-left:
        calc(50% - 120px);
}

.social a {
    width: 20px;
    height: 20px;

    border:
        1px solid
        #aaa;

    border-radius: 4px;

    color: #ddd;

    display: grid;

    place-items: center;

    text-decoration: none;

    font-size: 11px;

    font-weight: 700;

    transition:
        background 0.2s ease,
        border-color 0.2s ease;
}

.social a:hover {
    background: rgba(255, 255, 255, 0.08);

    border-color: #ddd;
}


/* =========================================================
   FOOTER BRAND
   ========================================================= */

.footer-brand {
    margin-top: 35px;

    text-align: center;

    font-size: 24px;

    font-weight: 800;

    font-style: italic;

    letter-spacing: -1px;
}

.footer-brand span {
    color: #9d40bd;
}


/* =========================================================
   TABLETS / SMALL LAPTOPS
   ========================================================= */

@media (max-width: 1100px) {

    .page {
        grid-template-columns:
            35%
            65%;
    }

    .content {
        padding-left: 42px;

        padding-right: 42px;
    }

    h1 {
        margin-bottom: 50px;
    }

    .footer-info {
        gap: 35px;
    }
}


/* =========================================================
   MOBILE
   ========================================================= */

@media (max-width: 760px) {

    html,
    body {
        width: 100%;

        overflow-x: hidden;
    }


    /* =========================
       PAGE
       ========================= */

    .page {
        display: block;

        width: 100%;

        min-height: 100vh;
    }


    /* =========================
       CAMPAIGN
       ========================= */

    .campaign {
        width: 100%;

        height: 100%;

        min-height: 0;
    }

    .campaign img {
        width: 100%;

        height: 100%;

        object-fit: cover;

        object-position:
            center
            20%;
    }


    /* =========================
       CONTENT
       ========================= */

    .content {
        width: 100%;

        min-width: 0;

        padding:
            30px
            20px
            40px;

        overflow: hidden;
    }

    .inner {
        width: 100%;

        max-width: 100%;

        margin: 0 auto;
    }


    /* =========================
       DECORATIONS
       ========================= */

    .corner.green {
        width: 10px;

        height: 180px;
    }

    .corner.blue {
        width: 10px;

        height: 180px;

        top: 40%;
    }

    .corner.purple {
        width: 10px;

        height: 180px;
    }


    /* =========================
       BRAND
       ========================= */

    .brand {
        height: auto;

        margin-bottom: 28px;

        justify-content: flex-end;
    }

    .brand-mark {
        max-width: 150px;
    }

    .brand-mark img {
        display: block;

        width: auto;

        max-width: 150px;

        height: auto;
    }


    /* =========================
       TITLE
       ========================= */

    h1 {
        font-size: 21px;

        line-height: 1.35;

        margin-bottom: 38px;
    }


    /* =========================
       ATHLETE
       ========================= */

    .athlete {
        margin-bottom: 32px;
    }

    .section-title {
        font-size: 12px;

        margin-bottom: 10px;
    }


    /* =========================
       FORM ROWS
       ========================= */

    .row {
        display: grid;

        grid-template-columns: 1fr;

        gap: 12px;

        margin-bottom: 12px;
    }

    .field {
        width: 100%;

        height: 48px;

        font-size: 13px;
    }


    /* =========================
       PHONE
       ========================= */

    .phone {
        width: 100%;

        height: 48px;
    }

    .phone input {
        width: 100%;

        font-size: 13px;
    }


    /* =========================
       SEPARATOR
       ========================= */

    .separator {
        height: 2px;

        margin:
            8px
            0
            28px;
    }


    /* =========================
       GENDER / CATEGORY
       ========================= */

    .gender {
        margin-bottom: 24px;
    }

    .gender-options {
        display: grid;

        grid-template-columns:
            1fr
            1fr;

        gap: 10px;
    }

    .gender-option {
        width: 100%;

        height: 48px;

        font-size: 13px;
    }


    /* =========================
       AGREEMENT
       ========================= */

    .agreement {
        gap: 10px;

        margin-bottom: 24px;
    }

    .agreement input {
        width: 18px;

        height: 18px;
    }

    .agreement label {
        font-size: 12px;
    }


    /* =========================
       TERMS
       ========================= */

    .terms {
        margin:
            0
            0
            25px
            28px;

        font-size: 10px;

        line-height: 1.55;
    }

    .terms ul {
        padding-left: 14px;
    }

    .terms li {
        margin-bottom: 5px;
    }


    /* =========================
       PAYMENT
       ========================= */

    .payment {
        width: 100%;

        margin-top: 25px;

        display: flex;

        align-items: center;

        justify-content: space-between;

        gap: 15px;
    }

    .pay-button {
        flex: 1;

        width: auto;

        height: 50px;

        font-size: 13px;
    }

    .price {
        font-size: 26px;

        white-space: nowrap;
    }

    .price span {
        font-size: 21px !important;
    }


    /* =========================
       PAYMENT METHODS
       ========================= */

    .payment-methods {
        width: 100%;

        margin-top: 18px;

        display: flex;

        align-items: center;

        justify-content: flex-start;

        overflow: hidden;
    }

    .payment-methods img {
        display: block;

        width: min(100%, 230px);

        max-width: 230px;

        height: auto;

        min-width: 0 !important;

        min-height: 0 !important;
    }


    /* =========================
       FOOTER
       ========================= */

    footer {
        margin-top: 38px;

        padding-top: 28px;
    }

    .footer-info {
        display: flex;

        flex-direction: column;

        align-items: center;

        justify-content: center;

        gap: 18px;

        text-align: center;

        font-size: 11px;
    }

    .footer-info div {
        min-width: 0;

        width: 100%;
    }

    .footer-label {
        margin-bottom: 4px;
    }


    /* =========================
       SOCIAL
       ========================= */

    .social {
        margin-top: 22px;

        padding-left: 0;

        justify-content: center;

        gap: 10px;
    }

    .social a {
        width: 30px;

        height: 30px;

        font-size: 12px;
    }


    /* =========================
       FOOTER BRAND
       ========================= */

    .footer-brand {
        margin-top: 28px;

        font-size: 22px;
    }
}


/* =========================================================
   SMALL PHONES
   ========================================================= */

@media (max-width: 420px) {

    .campaign {
        height: 220px;
    }

    .content {
        padding:
            25px
            16px
            35px;
    }

    .brand-mark img {
        max-width: 125px;
    }

    h1 {
        font-size: 19px;

        margin-bottom: 32px;
    }

    .gender-options {
        gap: 8px;
    }

    .gender-option {
        height: 46px;

        font-size: 12px;
    }

    .payment {
        gap: 12px;
    }

    .pay-button {
        height: 48px;
    }

    .price {
        font-size: 23px;
    }

    .price span {
        font-size: 19px !important;
    }

    .payment-methods img {
        max-width: 200px;
    }

    .terms {
        margin-left: 26px;

        font-size: 9px;
    }
}


/* =========================================================
   VERY SMALL PHONES
   ========================================================= */

@media (max-width: 360px) {

    .campaign {
        height: 200px;
    }

    .content {
        padding-left: 14px;

        padding-right: 14px;
    }

    .brand-mark img {
        max-width: 115px;
    }

    h1 {
        font-size: 18px;
    }

    .payment {
        flex-direction: column;

        align-items: stretch;
    }

    .pay-button {
        width: 100%;
    }

    .price {
        text-align: center;
    }

    .payment-methods {
        justify-content: center;
    }

    .payment-methods img {
        max-width: 190px;
    }
}

@media (max-width: 760px) {
    .brand {
        display: none;
    }
}
