@charset "UTF-8";


/* ===================Wordpressにテーマであることを認識させる記述============================ */
/* 
Theme Name: Yoshizato Portfolio
Description: portfolio用のテーマ
Version:1.0
Author: Yoshizato Akari
*/

* {
    box-sizing: border-box;
}

:root {
    --black: #5C5A56;
    --white: #fdfdfd;
    --gray: #b3aca3;
    --shadow-color: rgba(102, 101, 101, 0.6);
    --box-shadow: 4px 4px 2px var(--shadow-color);
}

html {
    font-size: 100%;
    scroll-behavior: smooth;
}



body {
    font-family: '游ゴシック', 'メイリオ', 'Hiragino Sans', 'Hiragino Kaku Gothic ProN', sans-serif;
    color: var(--white);
    margin-top: 40px;
    line-height: 1.5;
    position: relative;
}

img {
    max-width: 100%;
    vertical-align: top;
}

/* ===共通部分=== */
.container,
#works-page,
#single-work {
    padding: 80px 40px 20px 40px;
}

/* パララックス背景 */
.container:before,
#works-page:before,
#single-work:before {
    content: "";
    display: block;
    position: fixed;
    top: 0;
    left: 0;
    z-index: -1;
    width: 100%;
    height: 100vh;
    background: url(images/annie-spratt-zo7-ZyvplAI-unsplash.jpg);
    background-size: cover;
    background-position: center;
}

.container section {
    max-width: 1060px;
    margin: 0 auto 60px;
}

.container section:last-child {
    margin: 0 auto;
}

#site-title,
.heading,
.text-serif,
.text-serif li a {
    font-family: "Unna", serif;
    font-weight: 400;
    font-style: normal;
}

a {
    color: var(--black);
}

/* キーボード操作の際わかりやすく枠を付ける */
a:focus-visible,
button:focus-visible,
input:focus-visible {
    outline: 2px solid #000;
    outline-offset: 2px;
}

a:hover,
button:hover {
    opacity: 0.8;
}

a,
button {
    cursor: pointer;
}

.heading {
    font-size: clamp(3rem, 4.5vw, 4.5rem);
    text-align: center;
    margin-bottom: 24px;
    line-height: 1;
}

.sub-heading {
    text-align: center;
}

.reverse {
    display: flex;
    flex-direction: column-reverse;
}

.wrapper {
    margin: 0 auto;
    padding: 80px;
    color: var(--white);
    background-color: rgba(115, 94, 80, 0.8);
    backdrop-filter: blur(10px);
    outline: 1px solid var(--white);
    outline-offset: -5px;
    box-shadow: var(--box-shadow);
}

.scroll-event {
    opacity: 0;
    transition: 1.3s;
    transform: translateY(100px);
}

/* jsでwrapperにscroll-animationクラスの追加 */
.scroll-animation {
    opacity: 1;
    transform: none;
}


/* バウンドanimation */
#footer-wrap img:hover,
.works-swiper .swiper-slide-active:hover {
    animation: bounce 1s infinite ease-in-out;
}

@keyframes bounce {

    0%,
    100% {
        transform: translate(0, 0);
        /* 0%と100%の時は位置を一番下に */
    }

    50% {
        transform: translate(0, -5px);
        /* 50％の時さらに下に10px下げる */
    }
}



/* スキップリンクの設定 */
.skip-link {
    position: absolute;
    left: -9999px;
    /* 画面外に退避（見えなくする）*/
    top: 0;
    z-index: 1000;
    padding: 8px 12px;
    background: #000;
    color: #fff;
    text-decoration: none;
    border-radius: 4px;
}

.skip-link:focus,
.skip-link:focus-visible {
    /* キーボード操作でフォーカス時だけ見せる */
    left: 10px;
}


/* 上へ戻るボタン */
#back-to-top {
    position: sticky;
    bottom: 20px;
    right: 24px;
    width: 48px;
    height: 48px;
    border: none;
    border-radius: 50%;
    background-color: rgba(112, 76, 61, 0.796);
    color: var(--white);
    font-size: 20px;
    cursor: pointer;
    display: none;
    align-items: center;
    justify-content: center;
    box-shadow: 2px 2px 6px rgba(0, 0, 0, 0.3);
    transition: opacity 0.3s;
    /* これで左寄せに */
    margin-left: auto;
    margin-bottom: 24px;
}

#back-to-top:hover {
    opacity: 0.8;
}

/* 誘導ボタン(▶) */
.works-link a {
    position: relative;
}

.works-link a::after {
    content: '';
    width: 0;
    height: 0;
    border-style: solid;
    border-width: 6px 0 6px 10px;
    border-color: transparent transparent transparent var(--black);
    position: absolute;
    top: 0;
    right: -12px;
    bottom: 0;
    margin: auto;
}





/* ========================header===================== */

header {
    background-color: var(--white);
    color: var(--black);
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 0 40px;
    height: 40px;
    position: fixed;
    top: 0;
    width: 100%;
    z-index: 90;
}


.header-nav ul {
    display: flex;
    gap: 36px;
    font-size: 16px;
}

.hamburger {
    display: none;
}

#site-title img {
    vertical-align: middle;
}











/* ===========ローディング画面=================== */
#loading {
    /* 一番最初のカラー */
    background-color: #918379;
    position: fixed;
    inset: 0;
    z-index: 99;
    display: flex;
    justify-content: center;
    align-items: center;
}

#loading-screen {
    /* 二枚目に上に消えていくカラー */
    background-color: #BFB2AA;
    position: fixed;
    inset: 0;
    z-index: 98;
    translate: 0 100vh;
}


#loading p {
    font-size: 2rem;
}




/* ==============メインビジュアル=============== */

#main-visual {
    height: calc(100vh - 40px);
    display: flex;
    align-items: center;
    position: relative;
    justify-content: center;
}

/* ===見出しの設定=== */
#visual-content {
    padding: 30px;
    position: absolute;
    z-index: 10;
    background-color: rgba(103, 127, 80, 0.5);
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
    color: var(--white);
}

#visual-content {
    text-align: center;
    font-size: 1.2rem;
    text-shadow: 2px 2px 5px #534c4c;
}



#visual-title {
    width: 100%;
    height: auto;
}

#base path {
    /* 文字色の設定 */
    fill: var(--white);
}

#base {
    filter: drop-shadow(2px 2px 1px #534c4c);
}

#title-mask path {
    fill: none;
    stroke: var(--white);
    stroke-width: 10px;
    stroke-linecap: round;
    stroke-linejoin: round;
}

.visual-item {
    margin-bottom: 30px;
}

.visual-item span {
    padding: 5px 30px;
    border: #fffdfd solid 1px;
    border-radius: 5px;
}



/* seo対策。見出しを隠す */
#visual-heading {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0 0 0 0);
    white-space: nowrap;
    border: 0;
}


/* ===swiperの指定=== */
.swiper-main-visual {
    width: 100%;
    height: 100%;
}


.swiper-main-visual .swiper-slide {
    height: auto;
}

.swiper-main-visual img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    filter: grayscale(0.7);
}

.swiper-main-visual .swiper-slide-active img,
.swiper-main-visual .swiper-slide-duplicate-active img,
.swiper-main-visual .swiper-slide-prev img {
    animation: zoomUp 12s linear 0s normal both;
}

@keyframes zoomUp {
    0% {
        transform: scale(1.3) translate(0, 0);
    }

    100% {
        transform: scale(1.1) translate(70px, -60px);
    }
}







/* ========================swiperのライン===================== */






.swiper-libber {
    width: 100%;
    opacity: 0.8;
}

.swiper-libber.swiper .swiper-wrapper {
    transition-timing-function: linear;
}

.swiper-libber.swiper .swiper-slide {
    height: auto;
    width: auto;
}

.swiper-libber.swiper .swiper-slide p {
    width: 100%;
    height: 100%;
    color: #fceeee;
    font-size: 2.3rem;
    padding: 0 30px;
    display: flex;
    align-items: center;
    justify-content: center;
}














/* ===============preamble========================= */

.preamble-heading {
    font-size: 1.5rem;
    margin-bottom: 30px;
}

#preamble-content {
    position: relative;
    text-align: center;
    padding: 200px 40px;
    max-width: 1060px;
    background-image: url(images/desk.png);
    background-size: 300px;
    background-repeat: no-repeat;
    background-position: bottom left;
    margin: 0 auto;
    z-index: 10;
    color: var(--black);
}

#preamble-content p {
    margin-bottom: 24px;
}



.preamble-wrap {
    position: relative;
    z-index: 0;
    overflow: hidden;
}



#preamble::before {
    content: '';
    position: absolute;
    top: 0;
    left: 50%;
    width: 100%;
    /* height: 600px; */
    height: 100%;
    transform: translateX(-50%);
    background: radial-gradient(#f1eef2fc 20%, rgba(241, 238, 242, 0.689) 40%, rgba(245, 243, 242, 0), transparent);
    z-index: 0;
}


.scroll-animation .preamble-heading span {
    animation: preambleHeading 1.8s backwards;
    display: inline-block;
}

@keyframes preambleHeading {
    0% {
        opacity: 0;
        transform: translateY(30px);
    }

    100% {
        opacity: 1;
        transform: translateY(0);
    }
}


.scroll-animation #preamble-content p {
    animation: preambleContent 2s 0.8s backwards;
}

@keyframes preambleContent {
    0% {
        opacity: 0;
    }

    100% {
        opacity: 1;
    }
}

.preamble-link {
    display: flex;
    gap: 36px;
    justify-content: center;
}

.preamble-link a {
    font-size: 0.85rem;
    background-color: #CDDEB9;
    border-radius: 50px;
    padding: 5px 16px 5px 27px;
    position: relative;
      transition: all 0.3s ease;
}

.preamble-link a::before {
    content: '';
    width: 0;
    height: 0;
    border-style: solid;
    border-width: 6px 0 6px 10px;
    border-color: transparent transparent transparent var(--black);
    position: absolute;
    top: 0;
    left: 14px;
    bottom: 0;
    margin: auto;
}

.preamble-link a:hover {
  background-color: #d9f0e2; /* 少し明るく */
  transform: translateY(-2px);
  box-shadow: 0 4px 8px rgba(0,0,0,0.1);
}







/* =================skills============================== */

.skills-container {
    display: flex;
    margin-top: 32px;
}

.skills-content img {
    display: block;
    margin: 0 auto;
    /* 横中央寄せ */
    width: 200px;
    height: 200px;
    border-radius: 20px 50px;
    margin-bottom: 40px;
}

#skills .skills-content {
    width: 50%;
}

#skills .design-wrap {
    padding-right: 60px;
    border-right: 1px solid var(--gray);
}

#skills .coding-wrap {
    padding-left: 60px;
}



#skills .skills-content p {
    margin-bottom: 10px;

}

.skills-title {
    font-size: 2rem;
    line-height: 1;
}


.skills-wrap {
    display: flex;
    gap: 15px;
    width: fit-content;
    align-items: baseline;
    position: relative;
    margin-bottom: 16px;
}


.tool {
    border-bottom: #DAD5D2 1px solid;
    border-top: #DAD5D2 1px solid;
    display: inline-block;
    font-size: 0.75rem;
    padding: 3px 0;
    margin-top: 6px;
}

/* ===下線の設定=== */
#skills-design::after,
#skills-coding::after {
    content: "";
    height: 0.25rem;
    position: absolute;
    bottom: -0.3rem;
    left: 0;
    opacity: 0.3;
    width: 0;
    border-radius: 3px;
}

#skills-design::after {
    background-color: #a33b3b;
}

#skills-coding::after {
    background-color: #155f42;
}

.scroll-animation #skills-design::after {
    animation: markerAnimation 0.5s 0.3s linear forwards;
}

.scroll-animation #skills-coding::after {
    animation: markerAnimation 0.5s 1s linear forwards;
}

@keyframes markerAnimation {
    0% {
        width: 0;
    }

    100% {
        width: 100%;
    }
}




/* =================works======================= */


/* ===swiperの設定=== */
.works-swiper {
    position: relative;
    height: 100%;
    margin-bottom: 30px;
}

.works-swiper .swiper-slide {
    height: auto;
    width: 35%;
    aspect-ratio: 1/1;
    background-color: #E1D9CE;
    opacity: 0.8;
    transition: 1.3s;
    margin-top: 10px;
}

.works-swiper .swiper-slide-active {
    opacity: 1;
    transition: 1.3s;
}

.works-swiper img {
    width: 100%;
    height: 100%;
    object-fit: contain;
    padding: 10px;
    filter: drop-shadow(4px 4px 2px rgba(102, 101, 101, 0.6));
}

/* ===矢印ボタン変更=== */
.works-swiper .swiper-button-prev:after,
.works-swiper .swiper-button-next:after {
    content: "";
    width: 28px;
    height: 28px;
    border-top: 2px solid var(--white);
    border-right: 2px solid var(--white);
    position: absolute;
    opacity: 0.7;
}

.works-swiper .swiper-button-prev:hover,
.works-swiper .swiper-button-next:hover {
    opacity: 0.5;
}

.works-swiper .swiper-button-prev:after {
    transform: rotate(-135deg);
    left: -5px;
}

.works-swiper .swiper-button-next:after {
    transform: rotate(45deg);
    right: -5px;
}

/* ===view-moreの設定=== */
.view-more {
    text-align: center;
}

.view-more a {
    position: relative;
    color: var(--white);
}

.view-more a:hover {
    opacity: 1;
}

.view-more a:after {
    content: '';
    position: absolute;
    left: 50%;
    bottom: -3px;
    transform: translateX(-50%);
    width: 0%;
    height: 1px;
    background: var(--white);
    transition: all 0.5s;
}

.view-more a:hover::after {
    width: 100%;
}



/* ====================about========================= */
.about-wrapper {
    display: flex;
    align-items: center;
    gap: 30px;
}

.about-img {
    width: 30%;
    aspect-ratio: 1 / 1;
    /* 親を正方形に */
    position: relative;
}

.about-img img {
    position: absolute;
    inset: 0;
    /* top/right/bottom/left:0 */
    width: 100%;
    height: 100%;
    display: block;
    /* 画像の下の隙間防止 */
    object-fit: cover;
    border-radius: 47% 53% 48% 52% / 56% 34% 66% 44%;
}

.about-img::before,
.about-img::after {
    content: "";
    position: absolute;
    inset: 0;
    /* 親いっぱいに広げる */
    border: solid 1px #DAD5D2;
    pointer-events: none;
}

.about-img::before {
    border-radius: 36% 64% 42% 58% / 50% 43% 57% 50%;
    transform: scale(0.96);
    /* 少し内側に */
}

.about-img::after {
    border-radius: 62% 38% 66% 34% / 59% 53% 47% 41%;
    transform: scale(1.04);
    /* 少し外側に */
}

.about-content {
    width: 70%;
}




.about-content dl .about-list {
    display: flex;
    margin-bottom: 15px;
    padding-bottom: 15px;
    border-bottom: solid 1px var(--gray);
}

.about-content dl .about-list:last-child {
    border: none;
    margin-bottom: 0;
}

.about-content dl dt {
    width: 120px;
    font-weight: 400;
}

.about-content dl dd {
    flex: 1;
}

.about-content dl dt {
    width: 105px;
    /* padding-left: 30px; */
    position: relative;
}

.about-content dl dt::after {
    content: ":";
    position: absolute;
    right: 0;
    /* 幅内の右端にコロン配置 */
}




/* =================service======================= */
/* =====flow====== */
.service-flow h3 {
    font-size: clamp(1.75rem, 3vw, 2.25rem);
    text-align: left;
    border-bottom: 1px solid var(--gray);
    margin-bottom: 16px;
}

.service-flow h4 {
    font-size: 1.5rem;
}

.flow-step {
    display: flex;
    align-items: flex-start;
    /* 好みで center にしてもOK */
    gap: 16px;
    /* 丸と本文のすき間 */
    flex-wrap: nowrap;
    /* 改行させない */
    margin-bottom: 80px;
}

.step-num {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 64px;
    height: 64px;
    border-radius: 50%;
    background: var(--white);
    color: var(--black);
    z-index: 2;
    flex: 0 0 64px;
}

.flow-step div {
    flex: 1 1 auto;
}

.service-flow ol {
    position: relative;
}

.service-flow ol::before {
    content: '';
    width: 5px;
    height: 0%;
    background-color: var(--white);
    position: absolute;
    left: 30px;
    z-index: 1;
    transition: 10s;
}

.scroll-animation .service-flow ol::before {
    animation: flowAnimation 5.5s 1s linear forwards;
}

@keyframes flowAnimation {
    0% {
        height: 0;
    }

    100% {
        height: 95%;
    }
}

.flow-step i {
    padding-right: 8px;
}


.step-num span {
    font-size: 1.25rem;
}



.flow-step h4 {
    margin-bottom: 8px;
}


/* =========preparation=========== */
.preparation {
    border: 1px solid var(--white);
    padding: 32px 20px;
    align-items: center;
    margin-bottom: 72px;
    position: relative;
}

.preparation h3 {
    background-color: #E6DE93;
    font-size: 1.5rem;
    padding: 8px 24px;
    border-radius: 50px;
    margin-bottom: 16px;
    color: #4D3232;
    display: flex;
    justify-content: center;
    width: fit-content;
    margin: 0 auto 16px;

}

.preparation p {
    text-align: center;

}

.preparation ul {
    margin-top: 16px;
    border-top: solid 1px var(--white);
    padding: 24px 0 0 0;
}

.preparation ul li {
    padding-bottom: 8px;
}

.preparation ul li:last-child {
    padding: 0;
}

.preparation::after {

    background-image: url(images/woman.png);
    content: '';
    bottom: -170px;
    right: -100px;
    width: 350px;
    height: 350px;
    background-repeat: no-repeat;
    position: absolute;
    z-index: 10;
    background-size: 350px;
    background-size: contain;
}

/* =========price=========== */
.price {
    background-color: #FAF9F2;
    box-shadow: var(--box-shadow);
    border-radius: 30px;
    padding: 40px 20px;
    color: var(--black);
    position: relative;
    z-index: 50;
}




#price-title {
    font-size: 2.25rem;
    text-align: center;
    margin-bottom: 42px;
}

.price__grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 40px;
}

.price-card__head {
    background-color: #CDDEB9;
    font-size: 1.25rem;
    text-align: center;
    margin-bottom: 8px;
    padding: 8px;
}

.price-list__row {
    display: flex;
    align-items: baseline;
}

.price-list__row dt {
    flex: 1 1 auto;
    padding-right: 8px;
    border-right: 1px solid var(--gray);
    padding-bottom: 8px;
}

.price-list__row dd {
    padding-left: 8px;
    flex: 0 0 88px;
    text-align: right;
    align-items: flex-end;
    font-variant-numeric: tabular-nums;
}

.price__note {
    margin: 42px 0 40px;
}







/* ==================contact======================== */
#contact label,
#contact input,
#contact textarea {
    display: block;
    width: 100%;
}

#contact input {
    border: none;
    background-color: var(--white);
    padding: 5px;
}

#contact textarea {
    height: 160px;
    border: none;
    background-color: var(--white);
    padding: 5px;
    resize: vertical;
}


#contact .submit-btn {
    background-color: #784344;
    display: block;
    margin: 20px auto;
    width: 114px;
    height: 32px;
    border: none;
    padding: 5px;
    color: var(--white);
    box-shadow: var(--box-shadow);
    text-align: center;
}


/* ==コンタクトfoam7のデフォルトを修正== */
input,
optgroup,
select,
textarea {
    color: #0d0d0d;
}



.wpcf7-form-control-wrap .first {
    margin: 0;
}

.wpcf7-form p {
    margin-top: 16px;
}

/* ボタンの設定 */
.wpcf7-form .wpcf7-list-item-label {
    display: inline-block;
    padding: 8px 16px;
    background-color: var(--white);
    color: var(--black);
    box-shadow: 1px 2px 2px rgba(0, 0, 0, 0.3);
    border-radius: 5px;
    -webkit-transition: 0.3s;
    -moz-transition: 0.3s;
    -o-transition: 0.3s;
    -ms-transition: 0.3s;
    transition: 0.3s;
    font-size: 0.75rem;
    font-weight: 700;
}

/* フォーカス効かすためにディスプレイノームは使わず以下でチャックボックスを消す */
#contact .wpcf7-list-item input[type="radio"] {
    position: absolute;
    opacity: 0;
    width: 1px;
    height: 1px;
    margin: 0;
    padding: 0;
    /* スクリーンリーダーには残しつつ視覚的に見えない位置へ */
}

/* キーボード操作で入った時の見た目（focus-visible） */
#contact .wpcf7-list-item input[type="radio"]:focus-visible+.wpcf7-list-item-label {
    outline: 2px solid #1d1c1c;
    /* 好きな色で */
    outline-offset: 3px;
    border-radius: 6px;
}


/* 既存の「選択時の見た目」はそのままでOK（セレクタ確認だけ） */
.wpcf7-form input[type="radio"]:checked+.wpcf7-list-item-label {
    background: #4a433d;
    color: var(--white);
    box-shadow: 0 1px 1px #cccbc9, inset 0 1px 1px rgba(0, 0, 0, 0.3);
}


.wpcf7-form .wpcf7-list-item-label:hover,
#contact .submit-btn:hover {
    cursor: pointer;
    opacity: 0.8;
}

/*ボタンを押したとき*/
.wpcf7-form input[type="radio"]:checked+.wpcf7-list-item-label {
    background: #4a433d;
    color: var(--white);
    box-shadow: 0 1px 1px #cccbc9, inset 0 1px 1px rgba(0, 0, 0, 0.3);
}


/* 送信後のメッセージの装飾 */
.wpcf7 form.sent .wpcf7-response-output {
    margin: 0 0 30px 0;
    padding: 30px;
    border: 2px solid #ffffff;
    text-align: center;
}


.select .wpcf7-form-control-wrap {
    display: inline-flex;
    align-items: center;
    position: relative;
}


.select .wpcf7-form-control-wrap::before {
    position: absolute;
    right: 15px;
    width: 10px;
    height: 7px;
    background-color: #535353;
    clip-path: polygon(0 0, 100% 0, 50% 100%);
    content: '';
    pointer-events: none;
}

.radio p:last-child {
    margin-top: 0;
}

.select select {
    border: none;
    border-radius: 3px;
    background-color: #fff;
    cursor: pointer;
    font-size: 0.85rem;
    width: 160px;
    padding: 8px;
}

.optional {
    display: flex;
    justify-content: center;
    padding-top: 32px;
    border-bottom: var(--gray) 1px dashed;
}

.optional p {
    display: inline-block;
    padding-bottom: 8px;
    font-size: 0.85rem;
}

#contact .purpose {
    height: 50px;
}









/* ============footer====================== */

#footer-wrap {
    display: flex;
    justify-content: space-between;
    align-items: flex-end;
    padding: 25px 40px;
    height: 100px;
    background-color: var(--white);
}

.sns-list {
    display: flex;
}

#footer-wrap img {
    width: 48px;
    aspect-ratio: 1 / 1;
    margin-right: 30px;
}

#copy {
    font-size: 0.75rem;
    color: var(--black);
}










/* ######################worksページ################### */

/* ==================共通部分==================== */
#works-page section {
    max-width: 1060px;
    margin: 0 auto 116px;
}

#works-page {
    color: var(--black);
}

.works-title {
    /* 画面幅に合わせて変更。基本は5vwで最小値は1.75rem、最大値は3rem */
    font-size: clamp(1.75rem, 5vw, 3rem);
    position: relative;
    display: flex;
    align-items: flex-start;
    margin-bottom: 20px;
}

.works-title::after {
    content: "";
    flex-grow: 1;
    height: 0.5px;
    background-color: var(--black);
    margin-top: 3.26rem;
}

.content-wrap {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 42px;
}

.grid-item {
    background-color: rgba(253, 252, 251, 0.8);
    backdrop-filter: blur(10px);
    padding: 24px 15px;
    box-shadow: var(--box-shadow);
}

.content-title {
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
    align-items: center;
    padding: 16px 0;
}

.content-title h3 {
    font-size: 1.5rem;
    font-weight: normal;
}

.grid-item .works-link {
    padding: 16px 0;
    border-top: 1px solid var(--gray);
}

.grid-item .grid-img {
    border: 1px solid var(--gray);
    /* padding: 5px; */
    background-color: var(--white);
}




.grid-img img,
.grid-img .custom-thumb {
    width: 100%;
    aspect-ratio: 1/1;
    object-fit: cover;
    height: 100%;
}



#works-page .reverse {
    position: relative;
}





/* ===================heading======================= */
#works-page h1 {
    color: var(--black);
    font-size: clamp(3rem, 10vw, 5.5rem);
    text-align: center;
}


#works-nav {
    display: flex;
    flex-direction: column;
    width: fit-content;
    max-width: 960px;
    margin: 0 auto 136px;
    opacity: 0;
    background-color: rgba(123, 103, 88, 0.7);
    backdrop-filter: blur(10px);
    padding: 24px 24px 16px 24px;
    border-radius: 10px;
    outline: 1px solid #a4a29b;
    outline-offset: -5px;
}

#works-nav li {
    margin-bottom: 8px;
    gap: 16px;
    color: var(--white);
}

#works-nav p {
    padding: 0.5rem 0;
}

#works-nav a {
    background-color: #694a4a;
    width: 8rem;
    text-align: center;
    padding: 10px 16px;
    border-radius: 10px;
    flex-shrink: 0;
    height: 2.5rem;
    box-shadow: var(--box-shadow);
    transition: 0.1s;
    display: inline-block;
}

#works-nav a:hover {
    opacity: 0.9;
    transform: translateY(2px);
    box-shadow: 2px 2px 2px rgba(102, 101, 101, 0.6);
}


#works-nav a {
    color: var(--white);
}

/* ====================topに戻るボタン====================== */
.top-btn {
    text-align: center;
}

.top-btn a {
    position: relative;
    color: var(--black);
}

.top-btn a:hover {
    opacity: 1;
}

.top-btn a:after {
    content: '';
    position: absolute;
    left: 50%;
    bottom: -3px;
    transform: translateX(-50%);
    width: 0%;
    height: 1px;
    background: var(--black);
    transition: all 0.5s;
}

.top-btn a:hover::after {
    width: 100%;
}











/* +++++++++++++++++++++++++++シングルページ+++++++++++++++++++++++ */
#single-work {
    color: var(--black);
    padding: 60px 20px;
    max-width: 1200px;
    margin: 0 auto;
}

.single-container {
    background-color: #f9f7f5;
    box-shadow: var(--box-shadow);
    padding: 40px;
}


.single-title {
    /* font-size: 3rem; */
    font-size: clamp(1.5rem, 5vw, 3rem);
    border-bottom: solid 1px var(--gray);
    /* 用検討 */
    /* letter-spacing: -0.2rem; */
    padding-bottom: 16px;
}

.work-body p {
    padding: 16px 0;
    border-bottom: solid 1px var(--gray);
}

.work-pc {
    width: 70%;
}

.work-sp {
    width: 30%;
}

.work-pager {
    display: flex;
    justify-content: space-between;
    padding-top: 40px;
}

.prev:hover {
    transform: translateX(-5px);
}

.back-link:hover {
    transform: scale(0.95);
}

.next:hover,
.works-link a:hover::after {
    transform: translateX(5px);
}

.prev,
.back-link,
.next,
.works-link a::after {
    transition: 0.5s;
}

.images-wrap {
    display: flex;
    gap: 30px;
    padding: 36px 0 0;
}

.single-contents {
    border-bottom: solid 1px var(--gray);
}

.tools-wrap {
    display: flex;
    gap: 24px;
}

.tools-wrap dl {
    display: flex;
    padding: 16px 0;
    font-size: 0.75rem;
    flex-wrap: wrap;
}

.tools-wrap dl:first-child {
    border: none;
}

.tools-wrap dt {

    border: 1px solid #919090;
    padding: 3px 8px;
}

.tools-wrap dd {
    padding-left: 5px;
    margin-top: 5px;
}

dt {
    font-weight: normal;
}

.project-type {
    display: flex;
    border-bottom: 1px solid #919090;
    padding: 16px 0;
}

.project-type dt {
    padding-right: 5px;
}













/* +++++++++++++++++++++++++++レスポンシブ+++++++++++++++++++++++ */


@media screen and (max-width:992px) {

    /* =================header====================== */
    .hamburger {
        display: inline-block;
        width: 30px;
        height: 16px;
        position: relative;
        z-index: 20;
        background-color: transparent;
        border: none;
        outline: none;
        padding: 0;
    }

    .hamburger span {
        display: block;
        position: absolute;
        width: 30px;
        height: 1px;
        background-color: var(--black);
        transition: all 0.7s;
    }

    .hamburger span:nth-of-type(1) {
        top: 0;
    }

    .hamburger span:nth-of-type(2) {
        top: 8px;
    }

    .hamburger span:nth-of-type(3) {
        top: 16px;
    }

    /* ==クリック後の処理== */
    .open .hamburger span:nth-of-type(1) {
        -webkit-transform: translateY(8px) rotate(-45deg);
        transform: translateY(8px) rotate(-45deg);
    }

    .open .hamburger span:nth-of-type(2) {
        opacity: 0;
    }

    .open .hamburger span:nth-of-type(3) {
        -webkit-transform: translateY(-8px) rotate(45deg);
        transform: translateY(-8px) rotate(45deg);
    }



    /* ==========ナビの設定============= */
    .header-nav {
        background-color: rgb(246, 243, 241, 0.5);
        backdrop-filter: blur(10px);
        position: absolute;
        padding: 40px;
        right: 0;
        top: 40px;
        transform: translateX(140px);
        transition: 0.5s ease-out;
    }

    .header-nav ul {
        flex-direction: column;
        top: 0;
        text-align: end;
    }

    .open .header-nav {
        transform: translateX(0);
    }





    /* =================preamble================= */


    #preamble-content {
        white-space: normal;
        /* padding: 20px; */
    }

    #preamble::before {
        background: radial-gradient(#f1eef2fc 20%, rgba(241, 238, 242, 0.689) 40%, rgba(245, 243, 242, 0), transparent);
        width: 150%;
    }


    #preamble-content {
        padding: 100px 40px 150px;
        background-size: 200px;
    }

    .preamble-link {
        flex-direction: column;
        align-items: center;
        gap: 16px;
    }

    .preamble-link a{
        width: fit-content;
    }





    /* =================skills============================== */



    .skills-container {
        flex-direction: column;
    }

    #skills .skills-content {
        width: 100%;
    }


    #skills .design-wrap {
        padding: 0 0 60px 0;

    }

    #skills .coding-wrap {
        padding: 60px 0 0 0;
    }

    #skills .design-wrap {
        border: none;
        border-bottom: 1px solid var(--white);
    }

    /* =================about============================== */

    .about-wrapper {
        flex-direction: column;
        gap: 50px;
    }


    .about-content {
        width: 100%;
    }

    .about-img {
        width: 250px;
    }

    .about-content dl .about-list {
        flex-direction: column;
        margin-bottom: 15px;
    }

    .about-content dl dt::after {
        content: ":";
        position: static;
        margin-left: 0.25em;
    }



    /* =================service======================= */
    .preparation::after {
        width: 200px;
        height: 200px;
        right: -50px;
        bottom: -125px;
    }

    .step-num {
        width: 42px;
        height: 42px;
        flex: 0 0 42px
    }

    .service-flow ol::before {
        left: 18.5px;
    }

    .price__note {
        margin: 0 0 40px;
    }

    @keyframes flowAnimation {
        0% {
            height: 0;
        }

        100% {
            height: 89%;
        }
    }





    /* ============contact====================== */

    #contact textarea {
        height: 240px;
    }

    #contact .purpose {
        height: 64px;
    }



    /* ============footer====================== */

    #footer-wrap img {
        margin-right: 15px;
    }



    /* ++++++++++++++++++++worksページ++++++++++++++++++++ */
    #works-page section {
        padding: 0;
    }

    .works-title {
        font-size: 2rem;
    }

    .works-title::after {
        margin-top: 2.7rem;
    }




    /* ++++++++++++++++++++シングルページ++++++++++++++++++++ */
    .work-pc {
        width: 100%;
    }

    .work-sp {
        width: 70%;
    }


    .images-wrap {
        flex-direction: column;
    }

    .tools-wrap {
        flex-direction: column;
        gap: 0;
        padding-bottom: 16px;
    }

    .tools-wrap dl {
        padding-bottom: 0;
    }

}


/* 料金見やすく */
@media screen and (max-width:800px) {
    .price-list__row {
        flex-direction: column;
        border-bottom: 1px solid var(--gray);
    }

    .price-list__row:last-child {
        border: none;
    }


    .price-list__row dt {
        border: none;
        padding: 16px 0 0 0;

    }

    .price-list__row dd {
        text-align: left;
        padding: 0;
        flex: 0;
        padding: 0 0 16px 0;
    }

    .price-card {
        margin: 0;
    }

    .price__note {
        padding-top: 16px;
        border-top: 1px solid var(--gray);
    }

    .price__grid {
        grid-template-columns: 1fr;
        gap: 0;
    }

}





@media screen and (max-width:576px) {

    header {
        padding: 0 20px;
    }

    .wrapper {
        padding: 64px 15px;
    }

    .container,
    #works-page {
        padding: 40px 20px;
    }


    #visual-content {
        width: 100%;
    }

    .work-sp {
        width: 100%;
    }

    #footer-wrap {
        padding: 25px 20px;
    }

    .content-wrap {
        grid-template-columns: repeat(1, 1fr);
    }

    #works-page section {
        margin-bottom: 96px;
    }

    .work-pager a {
        font-size: 0.75rem;
    }

    .preparation::after {
        width: 180px;
        height: 180px;
    }

    /* ============contact====================== */
    .wpcf7-list-item {
        display: block;
        margin: 0;
        padding-bottom: 10px;
    }
}








/* アニメーションの視覚的効果をOFFにしてる人には動かない設定に */
@media (prefers-reduced-motion: reduce) {
    * {
        animation-duration: .01ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: .01ms !important;
    }

    .swiper-main-visual .swiper-slide-active img,
    .swiper-main-visual .swiper-slide-duplicate-active img,
    .swiper-main-visual .swiper-slide-prev img {
        animation: none !important;
    }
}


/* 見ずらいのでスマホの時はバウンドさせない */
@media (hover:hover) {

    #footer-wrap img:hover,
    .works-swiper .swiper-slide-active:hover {
        animation: bounce 1s infinite ease-in-out;
    }
}