body {
    padding: 0;
    margin: 0;
    background-color: #f8b629;
    display: flex;
    flex-direction: column;
    justify-content: flex-start;
    align-items: center;
    font-family: 'Zen Kaku Gothic New';
}

#rotate {
    animation: rotateScale 6s infinite linear;
    position: fixed;
    bottom: 5vw;
    right: 5vw;
    width: 8vw;
    height: 8vw;
    z-index: 999;

    img {
        width: 8vw;
        height: 8vw;
        object-fit: contain;
    }
}

@keyframes rotateScale {
    0% {
        transform: scale(1) rotate(0deg);
    }
    25% {
        transform: scale(1.2) rotate(90deg);
    }
    50% {
        transform: scale(1) rotate(180deg);
    }
    75% {
        transform: scale(1.2) rotate(270deg);
    }
    100% {
        transform: scale(1) rotate(360deg);
    }
}
/* navigation bar */
nav {
    width: 100vw;
    height: 100px;
    background-color: #f8b629;
    position: fixed;
    display: flex;
    justify-content: space-between;
    align-items: center;
    z-index: 10000;
    transition: opacity 2s ease-in-out;
    opacity: 0;
}
.nav-visible {
    opacity: 1;
}
.nav-left {
    height: 35px;
    width: calc(320px - 45px);
    padding-left: 45px;
    a {
        height: 100%;
        width: 100%;
        text-decoration: none;
        img {
            height: 100%;
            width: auto;
            object-fit: contain;
        }
    }
}
.nav-middle {
    height: 35px;
    width: 150px;
    display: flex;
    justify-content: space-around;
    align-items: center;
    a {
        margin: 0;
        padding: 0;
        height: 100%;
        width: auto;
        transition: opacity 0.2s;
        img {
            height: 100%;
            width: 100%;
        }
    }
    a:hover {
        opacity: 40%;
    }
}
.nav-right {
    height: 36px;
    width: calc(320px - 43px);
    padding-right: 43px;
    display: flex;
    justify-content: flex-end;
}

/* block */
.block {
    width: 100%;
    height: auto;
    display: flex;
    justify-content: center;
    flex-direction: row;
    align-items: center;
}
.block-left {
    width: calc(50% - 60px);
    height: 100%;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: flex-end;
    padding-right: 60px;

    .block-left-sentences {
        width: 480px;
        height: auto;
        display: flex;
        flex-direction: column;
        justify-content: center;
        align-items: center;

        p {
            padding: 0;
            margin: 12px 0;
        }

        .block-left-title {
            font-size: 40px;
            font-weight: 700;
            height: auto;
            line-height: 1.4;
            font-family: 'Shippori Mincho B1', serif;
            text-align: center;
        }
        .block-left-desc {
            font-size: 20px;
            font-weight: 400;
            letter-spacing: 1em;
            line-height: 1.84;
            font-family: 'Zen Kaku Gothic New';
            text-align: center;
        }
    }
}
.block-right {
    width: calc(50% - 60px);
    height: 100%;
    border-left: 2px solid #000;
    padding: calc((561px - 422px)/2) 0 calc((561px - 422px)/2) 60px;
    display: flex;
    justify-content: flex-start;
    align-items: center;
    img {
        width: 422px;
        height: 422px;
        object-fit: contain;
    }
}
/* header */
.header {
    width: 100vw;
    height: 100vh;
    display: flex;
    justify-content: center;
    align-items: center;
    margin-bottom: 100px;
}
/* title */
.title {
    padding: 80px 0;
    margin: 0;
    font-size: 144px;
    font-weight: 900;
    line-height: 1.4;
    text-align: left;
    width: 100%;
}
/* 2D design */
.design-2d {
    width: 90vw;
    display: flex;
    flex-direction: column;
    justify-content: flex-start;
    align-items: center;
    margin-bottom: 100px;
}
/* rorate image */
.square {
    width: 300px;
    height: 300px;
    background-color: #000000;
    animation: rotate 6s infinite linear;
    transform-style: preserve-3d;
    margin-left: 50vw;
    margin-bottom: 50px;
}

@keyframes rotate {
    from {
        transform: rotateY(0deg);
    }
    to {
        transform: rotateY(360deg);
    }
}

/* items */
.item {
    margin: 50px 0;
    .block-left-sentences {
        .item-left-title {
            font-size: 48px;
            font-weight: 400;
            height: auto;
            line-height: 1.4;
            font-family: 'Zen Kaku Gothic New';
            text-align: center;
        }
        .item-left-desc {
            width: 470px;
            font-size: 20px;
            font-weight: 400;
            line-height: 1.4;
            font-family: 'Zen Kaku Gothic New';
            text-align: left;
            border-left: 2px solid #000;
            padding: 3px 0 3px 8px;
        }
        .item-left-desc-block {
            display: flex;
            flex-direction: row;

            .item-left-desc {
                width: 3em;
                font-size: 20px;
                font-weight: 400;
                line-height: 1.4;
                font-family: 'Zen Kaku Gothic New';
                text-align: left;
                border-left: 2px solid #000;
                padding: 3px 0 3px 8px;
            }
            .item-left-desc-value {
                width: calc(470px - 3em);
                font-size: 20px;
                font-weight: 400;
                line-height: 1.4;
                font-family: 'Zen Kaku Gothic New';
                text-align: left;
                padding: 3px 0 3px 8px;
            }
        }
    }
    .block-right img {
        box-shadow: 10px 10px 0px #8c8c8c;
        object-fit: cover;
    }
}
/* 3D design */
.design-3d {
    width: 90vw;
    display: flex;
    flex-direction: column;
    justify-content: flex-start;
    align-items: center;
    margin-bottom: 100px;
}
/* Cube */
.cube {
    width: 300px;
    height: 300px;
    margin-left: 50vw;
}
  
/* profile */
.profile {
    background-color: #acacac;
    margin: 0;
    padding: 5vw;
    width: 90vw;
    display: flex;
    flex-direction: column;
    justify-content: flex-start;
    align-items: center;
    margin-bottom: 100px;
}
.block-right-profile {
    width: calc(50% - 60px);
    height: 100%;
    padding: calc((561px - 422px)/2) 0 calc((561px - 422px)/2) 60px;
    display: flex;
    justify-content: flex-start;
    align-items: center;
    img {
        width: 422px;
        height: 422px;
        object-fit: contain;
    }
}
/* contact */
.contact {
    width: 90vw;
    display: flex;
    flex-direction: column;
    justify-content: flex-start;
    align-items: center;
    margin-bottom: 200px;
}
.contact-form {
    display: flex;
    flex-direction: column;
    width: 45vw;
    justify-content: flex-start;
    align-items: center;
    input {
        background-color: #f8dfc0;
        color: #1d1d1d;
    }
    input[type="text"] {
        font-family: 'Zen Kaku Gothic New';
        width: calc(100% - 20px);
        height: 30px;
        margin-bottom: 30px;
        border: none;
        padding: 10px;
        font-size: 15px;
        font-style: normal;
        font-weight: 400;
        border-radius: 4px;
    }
    input[type="email"] {
        font-family: 'Zen Kaku Gothic New';
        width: calc(100% - 20px);
        height: 30px;
        margin-bottom: 30px;
        border: none;
        padding: 10px;
        font-size: 15px;
        font-style: normal;
        font-weight: 400;
        border-radius: 4px;
    }
    textarea {
        font-family: 'Zen Kaku Gothic New';
        width: calc(100% - 20px);
        height: 150px;
        background-color: #f8dfc0;
        margin-bottom: 30px;
        border: none;
        padding: 10px;
        font-size: 15px;
        font-style: normal;
        font-weight: 400;
        border-radius: 4px;
    }
    input[type="submit"] {
        font-family: 'Zen Kaku Gothic New';
        width: calc(100%);
        height: 50px;
        background-color: #000;
        color: #fff;
        margin-bottom: 30px;
        border: none;
        border-radius: 4px;
        padding: 10px;
        font-size: 18px;
        font-weight: 700;
        letter-spacing: 0em;
        line-height: 1.4;
    }
}

/* animation */
@keyframes slideInFromBottom {
    from {
      transform: translateY(-100px); /* 下から上への移動の開始点 */
      opacity: 0; /* 初期状態の透明度 */
    }
    to {
      transform: translateY(0); /* 最終的な位置 */
      opacity: 1; /* 最終的な透明度 */
    }
  }
  
  .slide-in {
    animation: slideInFromBottom 1s ease-out forwards; /* アニメーションの設定 */
  }
/* color animation */
@keyframes rainbow {
    0% { color: red; }
    15% { color: orange; }
    30% { color: yellow; }
    45% { color: green; }
    60% { color: blue; }
    75% { color: indigo; }
    90% { color: violet; }
    100% { color: red; }
}

.rainbow-text {
    animation: rainbow 2s linear infinite;
}


@media screen and (max-width: 768px) {
    html, body {
        padding: 0;
        margin: 0;
    }
    nav {
        width: 100vw;
        height: 80px;
        justify-content: center;
    }
    .nav-left {
        height: 25px;
        padding-left: 45px;
        a {
            height: 100%;
            width: 100%;
            text-decoration: none;
            img {
                height: 100%;
                width: auto;
                object-fit: contain;
            }
        }
    }
    .nav-middle {
        display: none;
    }

    /* header */
    .header {
        width: 90vw;
        height: 70vh;
        display: flex;
        justify-content: center;
        align-items: center;
        padding: 15vh 0;
    }
    /* block */
    .block {
        width: 100%;
        height: auto;
        display: flex;
        justify-content: center;
        flex-direction: column;
        align-items: center;
    }
    .block-left {
        width: 90vw;
        padding: 0;
        margin-bottom: 3vh;
        display: flex;
        flex-direction: column;
        justify-content: center;
        align-items: flex-end;
    
        .block-left-sentences {
            width: 90vw;
            height: auto;
            display: flex;
            flex-direction: column;
            justify-content: center;
            align-items: center;
    
            p {
                padding: 0;
                margin: 0;
            }
    
            .block-left-title {
                font-size: 30px;
                font-weight: 700;
                height: auto;
                line-height: 1.4;
                font-family: 'Shippori Mincho B1', serif;
                text-align: center;
                margin-bottom: 3vh;
            }
            .block-left-desc {
                font-size: 13px;
                font-weight: 400;
                letter-spacing: 1em;
                line-height: 1.84;
                font-family: 'Zen Kaku Gothic New';
                text-align: center;
            }
        }
    }
    .block-right {
        width: 50vw;
        height: auto;
        border: none;
        display: flex;
        padding: 0;
        justify-content: flex-start;
        align-items: center;
        img {
            width: 100%;
            height: 100%;
            object-fit: contain;
        }
    }
    /* title */
    .title {
        padding: 40px 0;
        margin: 0;
        font-size: 55px;
        font-weight: 900;
        line-height: 1.4;
        text-align: left;
        width: 100%;
    }
    /* 2D design */
    .design-2d {
        width: 90vw;
        display: flex;
        flex-direction: column;
        justify-content: flex-start;
        align-items: center;
        margin-bottom: 100px;
    }
    /* rorate image */
    .square {
        width: 30vw;
        height: 30vw;
        background-color: #000000;
        animation: rotate 6s infinite linear;
        transform-style: preserve-3d;
        margin-left: 50vw;
        margin-bottom: 50px;
    }

    /* items */
    .item {
        margin: 60px 0;
        .block-left-sentences {
            .item-left-title {
                font-size: 42px;
                font-weight: 400;
                margin-bottom: 20px;
                width: 90vw;
                height: auto;
                line-height: 1.4;
                font-family: 'Zen Kaku Gothic New';
                text-align: center;
            }
            .item-left-desc {
                width: 90vw;
                font-size: 20px;
                font-weight: 400;
                line-height: 1.4;
                font-family: 'Zen Kaku Gothic New';
                text-align: left;
                border-left: 2px solid #000;
                padding: 3px 0 3px 8px;
            }
            .item-left-desc-block {
                display: flex;
                flex-direction: row;

                .item-left-desc {
                    width: 3em;
                    font-size: 20px;
                    font-weight: 400;
                    line-height: 1.4;
                    font-family: 'Zen Kaku Gothic New';
                    text-align: left;
                    border-left: 2px solid #000;
                    padding: 3px 0 3px 8px;
                }
                .item-left-desc-value {
                    width: auto;
                    font-size: 20px;
                    font-weight: 400;
                    line-height: 1.4;
                    font-family: 'Zen Kaku Gothic New';
                    text-align: left;
                    padding: 3px 0 3px 8px;
                }
            }
        }
        .block-right img {
            box-shadow: 10px 10px 0px #8c8c8c;
            object-fit: cover;
        }
    }
    /* 3D design */
    .design-3d {
        width: 90vw;
        display: flex;
        flex-direction: column;
        justify-content: flex-start;
        align-items: center;
        margin-bottom: 100px;
    }
    /* Cube */
    .cube {
        width: 40vw;
        height: 40vw;
        margin-left: 50vw;
        margin-bottom: 50px;
    }
    /* profile */
    .profile {
        background-color: #acacac;
        margin: 0;
        padding: 5vw;
        width: 90vw;
        display: flex;
        flex-direction: column;
        justify-content: flex-start;
        align-items: center;
        margin-bottom: 100px;
    }
    .block-right-profile {
        width: 90vw;
        height: 100%;
        padding: 0;
        margin: 0;
        display: flex;
        justify-content: center;
        align-items: center;
        img {
            width: 50vw;
            padding: 0;
            margin: 0;
            height: auto;
            object-fit: contain;
        }
    }
    .contact-form {
        display: flex;
        flex-direction: column;
        width: 80vw;
        justify-content: flex-start;
        align-items: center;
        input {
            background-color: #f8dfc0;
            color: #1d1d1d;
        }
        input[type="text"] {
            font-family: 'Zen Kaku Gothic New';
            width: calc(100% - 20px);
            height: 30px;
            margin-bottom: 30px;
            border: none;
            padding: 10px;
            font-size: 15px;
            font-style: normal;
            font-weight: 400;
            border-radius: 4px;
        }
        input[type="email"] {
            font-family: 'Zen Kaku Gothic New';
            width: calc(100% - 20px);
            height: 30px;
            margin-bottom: 30px;
            border: none;
            padding: 10px;
            font-size: 15px;
            font-style: normal;
            font-weight: 400;
            border-radius: 4px;
        }
        textarea {
            font-family: 'Zen Kaku Gothic New';
            width: calc(100% - 20px);
            height: 150px;
            background-color: #f8dfc0;
            margin-bottom: 30px;
            border: none;
            padding: 10px;
            font-size: 15px;
            font-style: normal;
            font-weight: 400;
            border-radius: 4px;
        }
        input[type="submit"] {
            font-family: 'Zen Kaku Gothic New';
            width: calc(100%);
            height: 50px;
            background-color: #000;
            color: #fff;
            margin-bottom: 30px;
            border: none;
            border-radius: 4px;
            padding: 10px;
            font-size: 18px;
            font-weight: 700;
            letter-spacing: 0em;
            line-height: 1.4;
        }
    }
    
    #rotate {
        animation: rotateScale 6s infinite linear;
        position: fixed;
        bottom: 5vw;
        right: 5vw;
        width: 16vw;
        height: 16vw;
        z-index: 999;
    
        img {
            width: 16vw;
            height: 16vw;
            object-fit: contain;
        }
    }

}
