main {
    width: 92%;
    max-width: 960px;
    margin-inline: auto;
}

.flow {
    margin-block: 4rem 0;
    counter-reset: step 0;
}

.flow__box {
    position: relative;
    padding-block: 0 3.5rem;
    padding-inline: 6rem 0;

    .flow__box--inner {
        display: grid;
        grid-template-rows: auto auto;
        grid-template-columns: 80px auto;
        row-gap: 1.6rem;
        column-gap: 2rem;
        align-items: center;
        padding-block: 0 3.5rem;
        padding-inline: 2rem 0;
        border-block-end: 1px solid #ccc;
    }

    &::before {
        position: absolute;
        top: 0;
        left: 0;
        display: flex;
        align-items: center;
        justify-content: center;
        width: 60px;
        aspect-ratio: 1/1;
        font-size: 26px;
        font-weight: bold;
        line-height: 1;
        color: #fff;
        content: counter(step);
        counter-increment: step 1;
        background-color: #3d68cc;
        border-radius: 50%;
    }

    &::after {
        position: absolute;
        top: 60px;
        left: 27px;
        width: 5px;
        height: calc(100% - 60px);
        content: "";
        background-color: #3d68cc;
        opacity: 0.3;
    }

    &:last-of-type::after {
        display: none;
    }

    .flow__figure {
        grid-row: 1/2;
        grid-column: 1/2;
        text-align: center;

        & svg {
            vertical-align: bottom;
            fill: #3d68cc;
        }

        .flow__figure--user {
            width: 30px;
            aspect-ratio: 1/1;
        }

        .flow__figure--atago {
            width: 100%;
            max-width: 80px;
            aspect-ratio: 3/1;
        }

        & figcaption {
            font-size: 14px;
            font-weight: bold;
            color: #3d68cc;
        }
    }

    .flow__main {
        grid-row: 1/2;
        grid-column: 2/3;
        font-size: clamp(16px, calc(16px + (24 - 16) * ((100vw - 322px) / (1260 - 322))), 24px); /* 最大 1260 pxの時 24 px ～ 最小 322 pxの時 16 px */
        font-weight: bold;
        color: #3d68cc;
    }

    .flow__desc {
        grid-row: 2/3;
        grid-column: 1/3;
        line-height: 2;
    }

    .flow__note {
        grid-row: 3/4;
        grid-column: 1/3;
        width: fit-content;
        padding-block: 2rem;
        padding-inline: 3rem;
        margin-block: 1rem 0;
        border: 5px solid #ccc;
        border-radius: 10px;

        .flow__note--content {
            position: relative;
            padding-inline: 3.5rem 0;

            &::before {
                position: absolute;
                top: 0;
                left: 0;
                font-family: FontAwesome;
                font-size: 26px;
                font-weight: bold;
                line-height: 1.2;
                color: #666;
                content: "\f071";
            }
        }

        .flow__note--head {
            font-weight: bold;
        }
    }

    .annot {
        margin-block: 1rem;
        font-size: 14px;
        color: #808080;
    }

    .flow__hint {
        display: block;
        width: fit-content;
        font-size: 14px;
        line-height: 1.4;
        color: #3d68cc;
        text-decoration: none;
        border-block-end: 1px solid;

        .fa-question-circle {
            margin-inline: 0 0.5rem;
            font-size: 16px;
        }

        &.flow__hint--desc {
            margin-block: 2.5rem 0;
        }

        &:hover {
            opacity: 0.7;
        }
    }
}

.apply {
    padding-block: 4rem;
    padding-inline: 2rem;
    margin-block: 3rem 0;
    background-color: #f1f1f1;
    border-radius: 10px;

    .apply__link {
        position: relative;
        display: block;
        width: fit-content;
        width: 100%;
        max-width: 400px;
        padding-block: 2rem;
        margin-inline: auto;
        font-size: 20px;
        font-weight: bold;
        color: #fff;
        text-align: center;
        text-decoration: none;
        background-color: #3d68cc;
        border-radius: 100vmax;
        box-shadow: var(--shadow_weak);

        &.apply__link--fax {
            max-width: 280px;
            padding-block: 0.8rem;
            padding-inline: 4rem;
            margin-block: 2rem 0;
            font-size: 14px;

            .fa {
                margin-inline: 0 1rem;
                font-size: 18px;
            }
        }

        &::before,
        &::after {
            position: absolute;
            top: calc(50% - 2px);
            right: 30px;
            width: 18px;
            height: 5px;
            content: "";
            background-color: #fff;
            border-radius: 100vmax;
            transform-origin: calc(100% - 2px) 50%;
        }

        &::before {
            transform: rotate(45deg);
        }

        &::after {
            transform: rotate(-45deg);
        }

        &:hover {
            opacity: 0.7;
        }
    }

    .apply__text {
        width: 100%;
        max-width: 780px;
        padding-block: 2rem 0;
        margin-block: 4rem 0;
        margin-inline: auto;
        font-size: 14px;
        text-align: center;
        border-block-start: 1px solid #ccc;
    }
}

@media (max-width: 960px) {
    .flow {
        margin-block: 2rem 0;
    }

    .flow__box {
        padding-block: 0 3rem;
        padding-inline: calc(1.4rem + 30px) 0;

        .flow__box--inner {
            grid-template-rows: auto auto auto;
            grid-template-columns: auto;
            row-gap: 1rem;
            padding-block: 0 3rem;
            padding-inline: 0;
        }

        &::before {
            width: 30px;
            font-size: 16px;
            line-height: 1;
        }

        &::after {
            top: 30px;
            left: 12px;
            height: calc(100% - 30px);
        }

        .flow__figure {
            display: flex;
            grid-row: 1;
            grid-column: 1;
            gap: 1rem;
            align-items: center;
        }

        .flow__main {
            grid-row: 2;
            grid-column: 1;
        }

        .flow__desc {
            grid-row: 3;
            grid-column: 1;
            font-size: 14px;
        }

        .flow__note {
            grid-row: 4;
            grid-column: 1;
            padding-block: 1rem;
            padding-inline: 1rem;
            margin-block: 0;
            font-size: 14px;

            .flow__note--content {
                padding-block: 1.8rem 0;
                padding-inline: 0;

                &::before {
                    font-size: 20px;
                }
            }
        }

        .annot {
            margin-block: 1rem;
            font-size: 12px;
        }
    }

    .apply {
        padding-block: 4rem;
        padding-inline: 1.5rem;

        .apply__link {
            padding-block: 1rem;
            padding-inline: 1rem;

            &.apply__link--fax {
                padding-inline: 1rem;
                margin-block: 2rem 0;
                font-size: 12px;

                .fa {
                    font-size: 14px;
                }
            }
        }

        .apply__text {
            padding-block: 1rem 0;
            margin-block: 3rem 0;
            font-size: 12px;
        }
    }
}
