css
/* ==================================================
   CHIBI COMMISSION FORM
   MsGrimm — Base Styles
================================================== */


/* ==================================================
   RESET
================================================== */

* {

    box-sizing:
        border-box;

    margin:
        0;

    padding:
        0;

}


html {

    scroll-behavior:
        smooth;

}


body {

    background:
        #f5f4f0;

    color:
        #1c1c1c;

    font-family:
        "Poppins",
        sans-serif;

    font-size:
        15px;

    line-height:
        1.6;

}


/* ==================================================
   FORM WRAPPER
================================================== */

.commission-form {

    min-height:
        100vh;

}


/* ==================================================
   SIDEBAR
================================================== */

.commission-sidebar {

    position:
        fixed;

    top:
        0;

    left:
        0;

    width:
        300px;

    height:
        100vh;

    display:
        flex;

    flex-direction:
        column;

    background:
        #1c1c1c;

    color:
        white;

    z-index:
        100;

}


/* ==================================================
   SIDEBAR HEADER
================================================== */

.commission-sidebar-header {

    position:
        relative;

    padding:
        40px 32px 35px;

    border-bottom:
        1px solid
        rgba(255, 255, 255, .15);

}


.commission-sidebar-kicker {

    margin-bottom:
        14px;

    font-size:
        9px;

    font-weight:
        700;

    letter-spacing:
        .22em;

    opacity:
        .5;

}


.commission-sidebar-title {

    font-size:
        2.2rem;

    font-weight:
        700;

    letter-spacing:
        .06em;

    line-height:
        1;

}


.commission-close {

    position:
        absolute;

    top:
        30px;

    right:
        25px;

    border:
        none;

    background:
        none;

    color:
        white;

    font-size:
        1.1rem;

    cursor:
        pointer;

    opacity:
        .5;

    transition:
        opacity
        .2s
        ease,

        transform
        .2s
        ease;

}


.commission-close:hover {

    opacity:
        1;

    transform:
        rotate(90deg);

}


/* ==================================================
   NAVIGATION
================================================== */

.commission-navigation {

    flex:
        1;

    overflow-y:
        auto;

    padding:
        28px 0;

}


.commission-navigation-label {

    padding:
        0 32px;

    margin-bottom:
        15px;

    font-size:
        9px;

    font-weight:
        700;

    letter-spacing:
        .2em;

    opacity:
        .4;

}


.commission-nav-item {

    display:
        flex;

    align-items:
        center;

    gap:
        18px;

    padding:
        15px 32px;

    color:
        white;

    text-decoration:
        none;

    font-size:
        10px;

    font-weight:
        600;

    letter-spacing:
        .12em;

    opacity:
        .45;

    transition:
        background
        .2s
        ease,

        opacity
        .2s
        ease,

        padding
        .2s
        ease;

}


.commission-nav-item:hover {

    background:
        rgba(255, 255, 255, .06);

    opacity:
        .9;

}


.commission-nav-item.is-active {

    background:
        rgba(255, 255, 255, .1);

    opacity:
        1;

    padding-left:
        38px;

}


.commission-nav-number {

    width:
        22px;

    font-family:
        monospace;

    font-size:
        9px;

    opacity:
        .45;

}


/* ==================================================
   SIDEBAR FOOTER
================================================== */

.commission-sidebar-footer {

    padding:
        25px 32px 30px;

    border-top:
        1px solid
        rgba(255, 255, 255, .15);

}


.commission-estimate-label {

    margin-bottom:
        6px;

    font-size:
        8px;

    font-weight:
        700;

    letter-spacing:
        .2em;

    opacity:
        .4;

}


.commission-estimate {

    font-size:
        1.8rem;

    font-weight:
        700;

}


.commission-estimate-note {

    margin-top:
        4px;

    font-size:
        9px;

    line-height:
        1.5;

    opacity:
        .4;

}


/* ==================================================
   MAIN CONTENT
================================================== */

.commission-main {

    width:
        min(
            900px,
            calc(100% - 80px)
        );

    margin-left:
        300px;

    padding:
        90px 70px 150px;

}


/* ==================================================
   INTRO
================================================== */

.commission-intro {

    margin-bottom:
        120px;

}


.technical-label {

    margin-bottom:
        18px;

    font-size:
        9px;

    font-weight:
        700;

    letter-spacing:
        .2em;

    opacity:
        .45;

}


.commission-intro h2 {

    max-width:
        600px;

    font-size:
        clamp(
            2.2rem,
            5vw,
            4rem
        );

    line-height:
        1.05;

    letter-spacing:
        -.04em;

}


.commission-intro p {

    max-width:
        500px;

    margin-top:
        25px;

    font-size:
        .9rem;

    line-height:
        1.8;

    opacity:
        .6;

}


/* ==================================================
   COMMISSION SECTIONS
================================================== */

.commission-section {

    padding:
        70px 0;

    border-top:
        1px solid
        rgba(0, 0, 0, .15);

    scroll-margin-top:
        40px;

}


.section-number {

    margin-bottom:
        10px;

    font-family:
        monospace;

    font-size:
        10px;

    font-weight:
        700;

    letter-spacing:
        .12em;

    opacity:
        .4;

}


.section-title {

    font-size:
        1.4rem;

    font-weight:
        700;

    letter-spacing:
        .04em;

}


.section-description {

    max-width:
        550px;

    margin-top:
        10px;

    margin-bottom:
        35px;

    font-size:
        .82rem;

    line-height:
        1.8;

    opacity:
        .55;

}


/* ==================================================
   OPTION GRID
================================================== */

.option-grid {

    display:
        grid;

    grid-template-columns:
        repeat(
            2,
            1fr
        );

    gap:
        12px;

}


.option-list {

    display:
        flex;

    flex-direction:
        column;

    gap:
        12px;

}


/* ==================================================
   OPTION CARD
================================================== */

.option-card {

    position:
        relative;

    display:
        flex;

    align-items:
        flex-start;

    gap:
        16px;

    min-height:
        90px;

    padding:
        20px;

    border:
        1px solid
        rgba(0, 0, 0, .15);

    background:
        rgba(255, 255, 255, .6);

    cursor:
        pointer;

    transition:
        background
        .2s
        ease,

        border-color
        .2s
        ease,

        transform
        .2s
        ease;

}


.option-card:hover {

    background:
        white;

    border-color:
        rgba(0, 0, 0, .4);

    transform:
        translateY(-2px);

}


.option-card input {

    position:
        absolute;

    opacity:
        0;

    pointer-events:
        none;

}


.option-mark {

    width:
        18px;

    height:
        18px;

    flex-shrink:
        0;

    margin-top:
        2px;

    border:
        1px solid
        rgba(0, 0, 0, .4);

    transition:
        background
        .2s
        ease,

        border-color
        .2s
        ease;

}


.option-card input[type="radio"] ~ .option-mark {

    border-radius:
        50%;

}


.option-card input:checked ~ .option-mark {

    background:
        #1c1c1c;

    border-color:
        #1c1c1c;

    box-shadow:
        inset
        0 0 0 4px
        white;

}


.option-content {

    display:
        flex;

    flex-direction:
        column;

    gap:
        4px;

}


.option-title {

    font-size:
        .75rem;

    font-weight:
        700;

    letter-spacing:
        .08em;

}


.option-description {

    font-size:
        .72rem;

    line-height:
        1.6;

    opacity:
        .55;

}


/* ==================================================
   FORM FIELDS
================================================== */

.form-grid {

    display:
        grid;

    grid-template-columns:
        repeat(
            2,
            1fr
        );

    gap:
        30px;

}


.form-field {

    display:
        flex;

    flex-direction:
        column;

    gap:
        9px;

}


.form-field label {

    font-size:
        9px;

    font-weight:
        700;

    letter-spacing:
        .15em;

    opacity:
        .6;

}


.form-field input,
.form-field textarea {

    width:
        100%;

    padding:
        14px 0;

    border:
        none;

    border-bottom:
        1px solid
        rgba(0, 0, 0, .3);

    background:
        transparent;

    color:
        #1c1c1c;

    font-family:
        inherit;

    font-size:
        .85rem;

    outline:
        none;

    resize:
        vertical;

}


.form-field input:focus,
.form-field textarea:focus {

    border-bottom-color:
        #1c1c1c;

}


.form-field textarea {

    min-height:
        180px;

}


/* ==================================================
   UPLOAD AREA
================================================== */

.upload-area {

    display:
        flex;

    flex-direction:
        column;

    align-items:
        center;

    justify-content:
        center;

    min-height:
        180px;

    padding:
        30px;

    border:
        1px dashed
        rgba(0, 0, 0, .35);

    background:
        rgba(255, 255, 255, .35);

    cursor:
        pointer;

    text-align:
        center;

    transition:
        background
        .2s
        ease,

        border-color
        .2s
        ease,

        transform
        .2s
        ease;

}


.upload-area:hover {

    background:
        white;

    border-color:
        #1c1c1c;

    transform:
        translateY(-2px);

}


.upload-icon {

    display:
        flex;

    align-items:
        center;

    justify-content:
        center;

    width:
        32px;

    height:
        32px;

    margin-bottom:
        14px;

    border:
        1px solid
        rgba(0, 0, 0, .3);

    font-size:
        1.2rem;

    font-weight:
        300;

}


.upload-title {

    font-size:
        .75rem;

    font-weight:
        700;

    letter-spacing:
        .12em;

}


.upload-description {

    margin-top:
        4px;

    font-size:
        .72rem;

    opacity:
        .55;

}


.upload-hint {

    margin-top:
        12px;

    font-family:
        monospace;

    font-size:
        9px;

    letter-spacing:
        .12em;

    opacity:
        .4;

}


/* ==================================================
   REVIEW
================================================== */

.commission-review {

    padding-bottom:
        0;

}


.submit-button {

    margin-top:
        25px;

    padding:
        16px 26px;

    border:
        none;

    background:
        #1c1c1c;

    color:
        white;

    font-family:
        inherit;

    font-size:
        10px;

    font-weight:
        700;

    letter-spacing:
        .14em;

    cursor:
        pointer;

    transition:
        background
        .2s
        ease,

        transform
        .2s
        ease;

}


.submit-button:hover {

    background:
        #444;

    transform:
        translateY(-2px);

}


/* ==================================================
   SIDEBAR SCROLLBAR
================================================== */

.commission-navigation::-webkit-scrollbar {

    width:
        5px;

}


.commission-navigation::-webkit-scrollbar-track {

    background:
        transparent;

}


.commission-navigation::-webkit-scrollbar-thumb {

    background:
        rgba(255, 255, 255, .25);

}


/* ==================================================
   MOBILE
================================================== */

@media (max-width: 800px) {


    .commission-sidebar {

        position:
            relative;

        width:
            100%;

        height:
            auto;

    }


    .commission-navigation {

        display:
            flex;

        overflow-x:
            auto;

        padding:
            12px 20px;

        gap:
            8px;

    }


    .commission-navigation-label {

        display:
            none;

    }


    .commission-nav-item {

        flex-shrink:
            0;

        padding:
            10px 14px;

        background:
            rgba(255, 255, 255, .06);

        font-size:
            8px;

    }


    .commission-nav-item.is-active {

        padding-left:
            14px;

    }


    .commission-nav-number {

        display:
            none;

    }


    .commission-sidebar-footer {

        display:
            none;

    }


    .commission-main {

        width:
            100%;

        margin-left:
            0;

        padding:
            60px 25px 100px;

    }


    .commission-intro {

        margin-bottom:
            60px;

    }


    .option-grid,
    .form-grid {

        grid-template-columns:
            1fr;

    }


}


@media (max-width: 480px) {


    .commission-sidebar-title {

        font-size:
            1.8rem;

    }


    .commission-main {

        padding:
            45px 20px 80px;

    }


    .commission-section {

        padding:
            50px 0;

    }


}

