@charset "UTF-8";

/* ==================
common
====================*/
:root {
    --primary-white: #FCFCFC;
    --primary-brack: #3D3D3D;
    --primary-blue: #78B7C1;
    --primary-pink: #F6B8A3;
    --primary-lightblue: #D5E4DD;
}

/* ==================
loading
====================*/
.loading {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background-color: var(--primary-white);
    display: flex;
    justify-content: center;
    align-items: center;
    z-index: 9999;
    opacity: 1;
    transition: opacity 0.5s ease;
}

.loading.fade-out {
    opacity: 0;
    pointer-events: none;
}

.loading-content {
    text-align: center;
}

.loading-dots {
    display: flex;
    justify-content: center;
    align-items: center;
    gap: 8px;
    margin-bottom: 20px;
}

.dot {
    width: 12px;
    height: 12px;
    background-color: var(--primary-blue);
    border-radius: 50%;
    animation: bounce 1.4s ease-in-out infinite both;
}

.dot:nth-child(1) {
    animation-delay: -0.32s;
}

.dot:nth-child(2) {
    animation-delay: -0.16s;
    background-color: var(--primary-pink);
}

.dot:nth-child(3) {
    background-color: var(--primary-lightblue);
}

.loading-text {
    font-size: 1.6rem;
    color: var(--primary-brack);
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-weight: 400;
    letter-spacing: 0.1em;
}

@keyframes bounce {

    0%,
    80%,
    100% {
        transform: scale(0);
    }

    40% {
        transform: scale(1);
    }
}

/* カラークラス */
.primary-blue {
    color: var(--primary-blue);
}

.primary-pink {
    color: var(--primary-pink);
}

.primary-lightblue {
    color: var(--primary-lightblue);
}



* {
    box-sizing: border-box;
}

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

body {
    font-family:
        'Zen Kaku Gothic New';
    font-style: normal;
    font-weight: 400;
    color: var(--primary-brack);
    background-color: var(--primary-white);
    line-height: 1.8;
    overflow-x: hidden;
    font-feature-settings: "palt";
}

/* about.htmlとworks詳細ページのみヘッダー分のpadding */
body[data-page="about"],
body[data-page="works"] {
    padding-top: 140px;
}

/* about.htmlの最初のsectionのpadding-topを調整 */
body[data-page="about"] .section:first-of-type {
    padding-top: 2.3%;
}

img {
    max-width: 100%;
    height: auto;
}

.section {
    padding: 80px 7.8%;
}

.section__topic {
    position: relative;
    font-size: 3.2rem;
    color: var(--primary-brack);
    padding-left: 40px;
}

.section__topic::before {
    content: '';
    position: absolute;
    left: 0;
    top: 50%;
    transform: translateY(-50%);
    width: 14px;
    height: 14px;
    background-color: var(--primary-pink);
    border-radius: 50%;
}



/* ==================
header
====================*/
.header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 20px 100px;
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    background-color: var(--primary-white);
    z-index: 1000;
    box-sizing: border-box;
    transform: translateY(-100%);
    transition: transform 0.3s ease;
}

/* about.htmlとworks詳細ページでは常にヘッダーを表示 */
body[data-page="about"] .header,
body[data-page="works"] .header {
    transform: translateY(0);
}

/* index.htmlでスクロール時にヘッダーを表示するクラス */
.header.show {
    transform: translateY(0);
}


.logo {
    width: 20%;
    height: auto;
}

.nav-menu {
    display: flex;
    gap: 50px;
}

.nav_item {
    font-size: 1.6rem;
    font-weight: 500;
    letter-spacing: 2px;
    position: relative;
    display: inline-block;
    text-align: center;
}

.nav_item span {
    display: inline-block;
    transition: opacity 0.4s ease;
}

.nav_item span:first-child {
    opacity: 1;
}

.nav_item span:last-child {
    position: absolute;
    top: 0;
    left: 50%;
    transform: translateX(-50%);
    opacity: 0;
    white-space: nowrap;
    width: max-content;
}

.nav_item:hover span:first-child {
    opacity: 0;
}

.nav_item:hover span:last-child {
    opacity: 1;
}

.hamburger {
    display: none;
}

.nav_sp {
    display: none;
}

/* aboutページでのみ「about」の下に円を表示 */
body[data-page="about"] .nav_item[href="about.html"]:after {
    content: '';
    position: absolute;
    bottom: -10px;
    left: 50%;
    transform: translateX(-50%);
    width: 6px;
    height: 6px;
    background-color: var(--primary-lightblue);
    border-radius: 50%;
}

/* worksページでのみ「works」の下に円を表示 */
body[data-page="works"] .nav_item[href*="works"]:after {
    content: '';
    position: absolute;
    bottom: -10px;
    left: 50%;
    transform: translateX(-50%);
    width: 6px;
    height: 6px;
    background-color: var(--primary-lightblue);
    border-radius: 50%;
}

/* ==================
FV
====================*/
.top_FV {
    position: relative;
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    height: 100vh;
}

.FV_name {
    font-family: 'Albert Sans', sans-serif;
    font-size: clamp(4rem, 6vw, 8.4rem);
    line-height: 1.2;
    margin: 0;
    background-color: var(--primary-white);
    position: absolute;
    z-index: 2;
    width: fit-content;
    padding: 20px;
    top: 48%;
    left: 7.8%;
    letter-spacing: 1rem;
    border-radius: 10px;
}

.FV_name span {
    opacity: 0;
    animation: fadeInLetter 0.8s ease forwards;
}

.FV_name span:nth-child(1) {
    animation-delay: 0.1s;
}

.FV_name span:nth-child(2) {
    animation-delay: 0.2s;
}

.FV_name span:nth-child(3) {
    animation-delay: 0.3s;
}

.FV_name span:nth-child(4) {
    animation-delay: 0.4s;
}

.FV_name span:nth-child(5) {
    animation-delay: 0.5s;
}

.FV_name span:nth-child(6) {
    animation-delay: 0.6s;
}

.FV_name span:nth-child(7) {
    animation-delay: 0.7s;
}

.FV_name span:nth-child(8) {
    animation-delay: 0.8s;
}

.FV_name span:nth-child(9) {
    animation-delay: 0.9s;
}

.FV_name span:nth-child(10) {
    animation-delay: 1.0s;
}

.FV_name span:nth-child(11) {
    animation-delay: 1.1s;
}

.FV_name span:nth-child(12) {
    animation-delay: 1.2s;
}

.FV_name span:nth-child(13) {
    animation-delay: 1.3s;
}

.FV_name span:nth-child(14) {
    animation-delay: 1.4s;
}

.FV_name span:nth-child(15) {
    animation-delay: 1.5s;
}

.FV_name span:nth-child(16) {
    animation-delay: 1.6s;
}

.FV_name span:nth-child(17) {
    animation-delay: 1.7s;
}

.FV_name span:nth-child(18) {
    animation-delay: 1.8s;
}

.FV_name span:nth-child(19) {
    animation-delay: 1.9s;
}

.FV_name span:nth-child(20) {
    animation-delay: 2.0s;
}

.FV_name span:nth-child(21) {
    animation-delay: 2.1s;
}

.FV_name span:nth-child(22) {
    animation-delay: 2.2s;
}

.FV_name span:nth-child(23) {
    animation-delay: 2.3s;
}

@keyframes fadeInLetter {
    from {
        opacity: 0;
        transform: translateY(50px);
    }

    to {
        opacity: 1;
        transform: translateY(0);
    }
}

.FV_img {
    width: 70%;
    height: auto;
    display: block;
    position: relative;
    z-index: 1;
    align-self: flex-end;
}

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

.works_list {
    list-style: none;
    display: grid;
    grid-template-columns: 1fr 1fr;
    /* 2列 */
    grid-template-rows: repeat(4, auto);
    /* 4行 */
    gap: 80px;
    /* アイテム間の余白 */
    max-width: 1200px;
    margin: 0 auto;
    margin: 80px auto 140px;
}

.works_img {
    width: 100%;
    height: auto;
    object-fit: cover;
}

.works_ttl {
    font-size: 2rem;
    font-weight: 500;
    margin-top: 24px;
    line-height: 1.4;
}

.works_tool {
    color: var(--primary-blue);
    font-size: 1.4rem;
    letter-spacing: 1.12px;
}

.works_btn {
    color: #3D3D3D;
    font-family: "Zen Kaku Gothic New";
    font-size: 14px;
    font-style: normal;
    font-weight: 500;
    line-height: normal;
    text-align: right;
    position: relative;
    padding-right: 40px;
}

.works_btn::after {
    content: '';
    position: absolute;
    right: 15px;
    top: 50%;
    transform: translateY(-50%);
    width: 10px;
    height: 10px;
    background-image: url(../images/arrow.svg);
    background-repeat: no-repeat;
    background-size: cover;
    transition: transform 0.3s ease;
}

.works_list a:hover .works_btn::after {
    transform: translateY(-50%) translateX(5px);
}

/* ==================
about
====================*/
.section-about {
    background: linear-gradient(106deg, rgba(246, 184, 163, 0.20) 0%, rgba(213, 228, 221, 0.10) 50%, rgba(120, 183, 193, 0.20) 100%);
}

.about_item {
    display: flex;
    align-items: center;
    gap: 90px;
    margin-top: 70px;
}

.top_about_img {
    width: 50%;
    height: auto;
    object-fit: cover;
    border-radius: 8px;
    flex-shrink: 0;
    /* 画像サイズを固定 */
}

.about_txt {
    flex: 1;
    /* 残りのスペースを使用 */
}

.top_about_name {
    font-size: 3.6rem;
    letter-spacing: 3.6px;
}

.top_about_txt {
    font-size: 1.6rem;
    line-height: 180%;
    letter-spacing: 1.6px;
    margin-top: 30px;
}

.about_btn {
    color: var(--primary-brack);
    font-size: 1.4rem;
    position: relative;
    padding: 12px 50px 12px 20px;
    margin-top: 50px;
    border-radius: 30px;
    display: inline-block;
    overflow: hidden;
    transition: all 0.3s ease;
    text-decoration: inherit;
    vertical-align: inherit;
    width: 100%;
}

.about_btn::before {
    content: '';
    position: absolute;
    top: 50%;
    left: 10px;
    width: 20px;
    height: 20px;
    background-color: rgba(120, 183, 193, 0.3);
    border-radius: 50%;
    transform: translateY(-50%);
    animation: ripple 6s infinite;
    z-index: -1;
}

@keyframes ripple {
    0% {
        width: 20px;
        height: 20px;
        opacity: 0.8;
    }

    50% {
        width: 50px;
        height: 50px;
        opacity: 0.5;
    }

    100% {
        width: 20px;
        height: 20px;
        opacity: 0.8;
    }
}

.about_btn::after {
    content: '';
    position: absolute;
    left: 120px;
    top: 50%;
    transform: translateY(-50%);
    width: 10px;
    height: 10px;
    background-image: url("../images/arrow.svg");
    background-repeat: no-repeat;
    background-size: contain;
    transition: transform 0.3s ease;
}

.about_btn:hover::after {
    transform: translateY(-50%) translateX(10px);
}

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

.footer {
    padding: 70px 0 30px;
    text-align: center;
}

.footer_txt {
    font-size: 16px;
    margin-bottom: 30px;
}

.footer_mail {
    width: 22px;
    height: auto;
    vertical-align: middle;
}

.foter_btn {
    border: 1px solid var(--primary-white);
    border-radius: 50px;
    padding: 16px 55px;
    display: inline-block;
    transition: all 0.3s ease;
}

.foter_btn:hover {
    background-color: var(--primary-lightblue);
    border-color: var(--primary-lightblue);
}

.mail_txt {
    font-size: 1.6rem;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 14px;
    position: relative;
}

.footer_arrow img {
    display: inline-block;
    transform: rotate(-45deg);
    vertical-align: middle;
    transition: transform 0.3s ease;
}

.foter_btn:hover .footer_arrow img {
    transform: rotate(-45deg) translate(3px, -3px);
}

.copyright {
    font-size: 1.2rem;
    color: var(--primary-brack);
    text-align: center;
    margin-top: 40px;
    opacity: 0.7;
}



/* PC版では3列表示用の改行を表示 */
.pc-break {
    display: inline;
}

/* スマホ版では2列表示用の改行を非表示 */
.sp-break {
    display: none;
}

/* ==================
responsive
====================*/
@media (max-width: 768px) {

    /* FV Section */
    .top_FV {
        flex-direction: column;
        height: auto;
    }

    .FV_name {
        position: static;
        order: 2;
        margin-top: 20px;
        padding: 15px;
        font-size: clamp(3rem, 8vw, 4rem);
        text-align: left;
        align-self: flex-start;
    }

    /* スマホ版では2列表示 */
    .pc-break {
        display: none;
    }

    .sp-break {
        display: inline;
    }

    .FV_img {
        width: 100%;
        order: 1;
        align-self: center;
    }

    /* Works Section */
    .works_list {
        grid-template-columns: 1fr;
        gap: 100px;
        margin: 40px 0 80px;
    }

    /* About Section */
    .about_item {
        flex-direction: column;
        gap: 20px;
        text-align: center;
        margin-top: 40px;
    }

    .top_about_img {
        width: 100%;
        align-self: center;
    }

    .top_about_name {
        font-size: 2.4rem;
        text-align: left;
    }

    .top_about_txt {
        text-align: left;
        font-size: 1.4rem;
    }

    .about_txt {
        width: 100%;
        text-align: left;
    }

    .about_btn {
        margin-top: 30px;
    }

    /* footer */
    .footer_txt {
        font-size: 1.4rem;
    }

    /* Section padding adjustment */
    .section {
        padding: 40px 13%;
    }

    .top_FV.section {
        padding: 60px 4%;
    }

    /* Font size adjustments */
    .section__topic {
        font-size: 2.4rem;
        padding-left: 20px;
    }

    .section__topic::before {
        width: 12px;
        height: 12px;
    }

    .works_ttl {
        font-size: 1.6rem;
    }

    .works_tool {
        font-size: 1.2rem;
        margin-top: 4px;
    }

    .works_btn {
        font-size: 1.4rem;
        margin-top: 16px;
    }

    /* Header hamburger menu */
    .hamburger {
        display: block;
        background: none;
        border: none;
        cursor: pointer;
        padding: 0;
        width: 30px;
        height: 25px;
        position: relative;
        z-index: 1001;
    }

    .hamburger span {
        display: block;
        width: 100%;
        height: 2px;
        background-color: var(--primary-brack);
        margin: 5px 0;
        transition: all 0.3s ease;
        transform-origin: center;
    }

    .hamburger.active span:nth-child(1) {
        transform: rotate(45deg) translate(5px, 0px);
    }

    .hamburger.active span:nth-child(2) {
        transform: rotate(-45deg) translate(5px, 0px);
    }

    .nav-menu {
        position: fixed;
        top: 0;
        right: -100%;
        width: 80%;
        height: 50vh;
        background: var(--primary-white);
        background-image: linear-gradient(106deg, rgba(246, 184, 163, 0.2) 0%, rgba(213, 228, 221, 0.1) 50%, rgba(120, 183, 193, 0.2) 100%);
        flex-direction: column;
        justify-content: center;
        align-items: center;
        gap: 40px;
        transition: right 0.3s ease;
        z-index: 1000;
        box-shadow: -5px 0 15px rgba(0, 0, 0, 0.1);
        border-radius: 10px;
    }

    .nav-menu.active {
        right: 0;
    }

    .nav_item {
        font-size: 2.4rem;
    }

    .logo {
        width: 50px;
    }

    .header {
        padding: 20px 5%;
    }

    .nav_sp {
        display: block;
    }

    /* about.htmlの最初のsectionのスマホ版padding-top */
    body[data-page="about"] .section:first-of-type {
        padding-top: 15%;
    }


}

/* ==================
abilities
====================*/
.abilities {
    display: flex;
    gap: 40px;
    margin-top: 40px;
}

.ability_item {
    flex: 1;
    position: relative;
    border: 1px solid var(--primary-brack);
    border-radius: 10px;
    padding: 40px 40px 30px;
    margin-top: 20px;
}

.ability_title {
    position: absolute;
    top: -33px;
    left: 50%;
    transform: translateX(-50%);
    background-color: #FCFCFC;
    padding: 8px 16px;
    border-radius: 10px;
    font-size: 2.4rem;
    font-weight: 500;
    color: var(--primary-brack);
}

.ability_description {
    font-size: 1.6rem;
    line-height: 1.8;
    margin-bottom: 20px;
    padding-bottom: 20px;
    border-bottom: 1px solid var(--primary-pink);
}

.ability_item--design .ability_description {
    padding-bottom: 20px;
}


.ability_item--coding .ability_description {
    border-bottom-color: var(--primary-blue);
}


.ability_tools {
    font-size: 1.4rem;
    font-weight: 500;
}

.ability_item--design {
    border-color: var(--primary-pink);
}

.ability_item--coding {
    border-color: var(--primary-blue);
}

.ability_item--coding .ability_description {
    border-bottom-color: var(--primary-blue);
}


/* ==================
strengths
====================*/
.strengths {
    display: flex;
    align-items: center;
    gap: 60px;
    margin-top: 40px;
}

.strengths_diagram {
    flex-shrink: 0;
    align-self: flex-start;
    width: 40%;
    max-width: 542px;
}

.strengths_diagram svg {
    width: 100%;
    height: auto;
}

/* アコーディオンが開いているときの円のスタイル */
.strength_item--learning.active~.strengths_diagram .circle-learning {
    fill: rgba(213, 228, 221, 0.5);
}

.strength_item--cooperation.active~.strengths_diagram .circle-cooperation {
    fill: rgba(246, 184, 163, 0.5);
}

.strength_item--action.active~.strengths_diagram .circle-action {
    fill: rgba(120, 183, 193, 0.5);
}

/* strengths要素内でのセレクタ調整 */
.strengths.learning-active .circle-learning {
    fill: rgba(213, 228, 221, 0.5);
}

.strengths.cooperation-active .circle-cooperation {
    fill: rgba(246, 184, 163, 0.5);
}

.strengths.action-active .circle-action {
    fill: rgba(120, 183, 193, 0.5);
}

.strengths_content {
    flex: 1;
    align-self: flex-start;
}

.strength_item {
    border-radius: 8px;
    border: 1px solid;
    overflow: hidden;
}

.strength_item--learning {
    border-color: var(--primary-lightblue);
}

.strength_item--cooperation {
    border-color: var(--primary-pink);
}

.strength_item--action {
    border-color: var(--primary-blue);
}

.strength_item--learning .strength_button {
    background-color: #F0F5F3;
}

.strength_item--cooperation .strength_button {
    background-color: #fae8e1;
}

.strength_item--action .strength_button {
    background-color: #d4e7ea;
}

.strength_item--learning .strength_content {
    background-color: #F0F5F3;
}

.strength_item--cooperation .strength_content {
    background-color: #fae8e1;
}

.strength_item--action .strength_content {
    background-color: #d4e7ea;
}

.strength_button {
    width: 100%;
    padding: 20px;
    border: none;
    background: none;
    display: flex;
    justify-content: space-between;
    align-items: center;
    cursor: pointer;
    font-family: inherit;
}

.strength_title {
    font-size: 2rem;
    font-weight: 500;
    color: var(--primary-brack);
    margin: 0;
}

.accordion_icon {
    font-size: 2rem;
    font-weight: bold;
    color: var(--primary-brack);
    transition: transform 0.3s ease;
}

.strength_item.active .accordion_icon {
    transform: rotate(45deg);
}

.strength_content {
    max-height: 0;
    overflow: hidden;
    transition: max-height 0.3s ease;
}

.strength_item.active .strength_content {
    max-height: 500px;
}

.strength_content .strength_text {
    padding: 0 20px 20px 20px;
}

.strength_text {
    font-size: 1.6rem;
    line-height: 1.8;
    color: var(--primary-brack);
}

/* ==================
journey (デザイナーになるまで)
====================*/
.journey {
    margin-top: 40px;
}

.journey_item {
    display: flex;
    align-items: center;
    gap: 130px;
    margin-bottom: 40px;
}

.journey_item:last-child {
    margin-bottom: 0;
}

.journey_year {
    flex-shrink: 0;
    font-size: 2.4rem;
    font-weight: 500;
    color: var(--primary-brack);
    min-width: 80px;
}

.journey_content {
    flex: 1;
}

.journey_text {
    font-size: 1.6rem;
    line-height: 1.8;
    color: var(--primary-brack);
    margin: 0;
}

/* ==================
hobbies (すきなこと)
====================*/
.section-hobbies {
    background: linear-gradient(106deg, rgba(246, 184, 163, 0.20) 0%, rgba(213, 228, 221, 0.10) 50%, rgba(120, 183, 193, 0.20) 100%);
}

.hobbies {
    display: flex;
    gap: 40px;
    margin-top: 40px;
    justify-content: center;
}

.hobby_item {
    flex: 1;
    max-width: 325px;
    position: relative;
    overflow: hidden;
    border-radius: 10px;
}

.hobby_img {
    width: 100%;
    aspect-ratio: 1;
    object-fit: cover;
    border-radius: 10px;
    transition: transform 0.3s ease;
}

.hobby_overlay {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background-color: rgba(120, 183, 193, 0.7);
    color: white;
    padding: 20px;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    opacity: 0;
    transition: opacity 0.3s ease;
    border-radius: 10px;
}

.hobby_item:hover .hobby_overlay {
    opacity: 1;
}

.hobby_tags {
    font-size: 1.8rem;
    font-weight: 500;
    margin-bottom: 16px;
    color: white;
    text-align: center;
}

.hobby_text {
    font-size: 1.4rem;
    line-height: 1.6;
    color: white;
    text-align: left;
}

@media (max-width: 768px) {

    /* About page mobile styles */
    .abilities {
        flex-direction: column;
        gap: 20px;
    }

    .ability_item {
        margin-top: 10px;
        padding: 20px 20px 15px;
    }

    .ability_title {
        font-size: 1.6rem;
        top: -25px;
    }

    .ability_description {
        font-size: 1.4rem;
        margin-bottom: 15px;
        padding-bottom: 15px;
    }

    .ability_tools {
        font-size: 1.2rem;
    }

    .strengths {
        flex-direction: column;
        gap: 30px;
    }

    .strengths_diagram {
        width: 100%;
        max-width: 400px;
        align-self: center;
        order: 1;
    }

    .strengths_content {
        order: 2;
    }

    .strength_title {
        font-size: 1.6rem;
    }

    .strength_text {
        font-size: 1.4rem;
    }

    .journey_item {
        flex-direction: column;
        gap: 10px;
        text-align: left;
        margin-bottom: 30px;
        align-items: flex-start;
    }

    .journey_year {
        font-size: 2rem;
        min-width: auto;
        text-align: left;
        align-self: flex-start;
    }

    .journey_text {
        font-size: 1.4rem;
        text-align: left;
        align-self: flex-start;
    }

    .hobbies {
        flex-direction: column;
        gap: 20px;
    }

    .hobby_item {
        max-width: 100%;
    }

    .hobby_tags {
        font-size: 1.6rem;
    }

    .hobby_text {
        font-size: 1.2rem;
    }

    /* About/Works pages mobile padding */
    body[data-page="about"],
    body[data-page="works"] {
        padding-top: 50px;
    }

}

/* ==================
work detail (作品詳細ページ)
====================*/

.work_tag {
    font-size: 1.6rem;
    color: var(--primary-blue);
    margin-right: 20px;
}

.work_title {
    font-size: 4rem;
    font-weight: 500;
    color: var(--primary-brack);
    margin-bottom: 40px;
    padding-left: 0;
}

.work_title::before {
    display: none;
}

.work_detail {
    display: flex;
    gap: 40px;
    align-items: flex-start;
    margin-top: 40px;
}

.work_main_image {
    width: 50%;
}

.work_main_image img {
    width: 100%;
    height: auto;
    border-radius: 8px;
}

.work_info {
    flex: 1;
}

.work_info>div {
    margin-bottom: 40px;
}

.work_info>div:last-child {
    margin-bottom: 0;
}

.work_info h2 {
    font-size: 2.4rem;
    font-weight: 500;
    color: var(--primary-brack);
    margin-bottom: 10px;
}

.work_info p {
    font-size: 1.6rem;
    line-height: 1.8;
    color: var(--primary-brack);
    margin: 0;
}

.work_link a {
    color: var(--primary-brack);
    text-decoration: none;
    font-size: 1.6rem;
    padding: 16px 55px 16px 0;
    display: inline-block;
    transition: all 0.3s ease;
    position: relative;
}

.work_link a::before {
    content: '';
    position: absolute;
    left: 0;
    bottom: 16px;
    width: calc(100% - 55px + 30px);
    height: 1px;
    background-color: var(--primary-brack);
    transition: background-color 0.3s ease;
}

.work_link a::after {
    content: '';
    position: absolute;
    right: 20px;
    top: 50%;
    width: 10px;
    height: 10px;
    background-image: url("../images/arrow.svg");
    background-repeat: no-repeat;
    background-size: contain;
    transform: translateY(-50%) rotate(-45deg);
    transition: all 0.3s ease;
    filter: brightness(0) saturate(100%);
}

.work_link a:hover {
    color: var(--primary-blue);
}

.work_link a:hover::before {
    background-color: var(--primary-blue);
}

.work_link a:hover::after {
    transform: translateY(-50%) rotate(-45deg) translate(3px, -3px);
    filter: brightness(0) saturate(100%) invert(64%) sepia(17%) saturate(926%) hue-rotate(130deg) brightness(90%) contrast(86%);
}

.work_project_details {
    margin-top: 60px;
}

.work_project_details>div {
    display: flex;
    gap: 40px;
    margin-bottom: 40px;
    align-items: flex-start;
}

.work_project_details>div:last-child {
    margin-bottom: 0;
}

.work_project_details h2 {
    font-size: 2rem;
    font-weight: 500;
    color: var(--primary-brack);
    margin: 0;
    flex-shrink: 0;
    width: 140px;
}

.work_project_details p {
    font-size: 1.6rem;
    line-height: 1.8;
    color: var(--primary-brack);
    margin: 0;
    flex: 1;
}

.work_concept {
    flex-direction: row !important;
    align-items: flex-start !important;
}

.work_concept h2 {
    width: 140px !important;
    margin-bottom: 0 !important;
    flex-shrink: 0;
}

.work_concept .concept_content {
    flex: 1;
    display: flex;
    flex-direction: column;
}

.work_concept p {
    margin-bottom: 40px;
}

.work_concept img {
    width: 100%;
    max-width: 300px;
    height: auto;
    margin-bottom: 20px;
}

.work_concept .color-palette {
    max-width: 100%;
}

.work_concept .font-pair {
    display: flex;
    gap: 20px;
    margin-bottom: 20px;
}

.work_concept .font-pair img {
    width: auto;
    max-height: 1.6rem;
    height: auto;
    margin-bottom: 0;
    object-fit: contain;
}

.work_concept img:last-child,
.work_concept .font-pair:last-child {
    margin-bottom: 0;
}

/* ==================
work process (制作過程)
====================*/
.work_process {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 40px;
    margin-top: 40px;
}

.work_process img {
    width: 100%;
    height: auto;
    border-radius: 8px;
}

/* works詳細ページの.section__topicの丸を削除 */
body[data-page="works"] .section__topic::before {
    display: none;
}

body[data-page="works"] .section__topic {
    padding-left: 0;
    font-size: 2.4rem;
}

body[data-page="works"] .section:first-of-type {
    padding-top: 0;
}

/* ==================
work points (制作のポイント)
====================*/
.work_points {
    margin-top: 40px;
}

.point_row {
    display: flex;
    gap: 40px;
    align-items: flex-start;
    margin-bottom: 100px;
}

.point_row:last-child {
    margin-bottom: 0;
}

.point_row.reverse {
    flex-direction: row-reverse;
}

.point_video,
.point_text {
    flex: 1;
}

.point_video video {
    width: 100%;
    height: auto;
    border-radius: 8px;
}

.point_video video::-webkit-media-controls {
    display: none !important;
}

.point_video video::-webkit-media-controls-panel {
    display: none !important;
}

.point_video video::-webkit-media-controls-play-button {
    display: none !important;
}

.point_video video::-webkit-media-controls-start-playback-button {
    display: none !important;
}

.point_text h3 {
    font-size: 2rem;
    font-weight: 500;
    color: var(--primary-brack);
    margin-bottom: 15px;
}

.point_text p {
    font-size: 1.6rem;
    line-height: 1.8;
    color: var(--primary-brack);
    margin: 0;
}

/* ==================
device comparison (デバイス比較)
====================*/
.device_comparison {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
}

.device_comparison:has(img:only-child) {
    justify-content: center;
}

.device_pc {
    width: 55%;
    height: auto;
}

.device_sp {
    width: 37%;
    height: auto;
}

.section-device {
    background: linear-gradient(106deg, rgba(246, 184, 163, 0.20) 0%, rgba(213, 228, 221, 0.10) 50%, rgba(120, 183, 193, 0.20) 100%);
}

/* ==================
works grid (つくったもの一覧)
====================*/
.works_grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    grid-template-rows: repeat(2, 1fr);
    gap: 40px;
    margin-top: 40px;
}

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

.works_grid_image {
    position: relative;
    margin-bottom: 15px;
    overflow: hidden;
    border-radius: 8px;
}

.works_grid_item img {
    width: 100%;
    height: auto;
    border-radius: 8px;
    transition: transform 0.3s ease;
}

.works_grid_overlay {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background-color: rgba(213, 228, 221, 0.7);
    opacity: 0;
    transition: opacity 0.3s ease;
    pointer-events: none;
}

.works_grid_button {
    background-color: var(--primary-white);
    color: var(--primary-blue);
    width: 120px;
    height: 120px;
    border-radius: 50%;
    font-size: 1.4rem;
    font-weight: 500;
    display: flex;
    align-items: center;
    justify-content: center;
    position: absolute;
    pointer-events: none;
    transform: translate(-50%, -50%);
}

.works_grid_item:hover .works_grid_overlay {
    opacity: 1;
}

.works_grid_text {
    font-size: 1.4rem;
    font-weight: 500;
    color: var(--primary-brack);
    line-height: 1.4;
    margin: 0;
    text-align: left;
}

/* ==================
Works Detail Pages Mobile Styles
====================*/
@media (max-width: 768px) {

    /* Work detail layout */
    .work_detail {
        flex-direction: column;
        gap: 20px;
    }

    .work_main_image {
        width: 100%;
    }

    .work_info>div {
        margin-bottom: 20px;
    }

    .work_info h2 {
        font-size: 1.8rem;
        margin-bottom: 8px;
    }

    .work_info p {
        font-size: 1.4rem;
    }

    /* Project details */
    .work_project_details>div {
        flex-direction: column;
        gap: 10px;
        margin-bottom: 20px;
    }

    .work_project_details h2 {
        font-size: 1.6rem;
        width: 100% !important;
        margin-bottom: 8px !important;
    }

    .work_project_details p {
        font-size: 1.4rem;
    }

    /* Concept section */
    .work_concept {
        flex-direction: column !important;
    }

    .work_concept h2 {
        width: 100% !important;
    }

    .work_concept img {
        max-width: 100%;
    }

    .work_concept .font-pair {
        flex-direction: column;
        gap: 10px;
    }

    .font-montserat-nb,
    .font-zen-kaku-nb {
        display: none;
    }

    .font-montserat,
    .font-zen-kaku {
        align-self: flex-start;
        text-align: left;
    }

    /* Work process */
    .work_process {
        grid-template-columns: 1fr;
        gap: 20px;
    }

    /* Work points */
    .point_row {
        flex-direction: column !important;
        gap: 20px;
        margin-bottom: 40px;
    }

    .point_row:nth-child(2) .point_video {
        order: 1;
    }

    .point_row:nth-child(2) .point_text {
        order: 2;
    }

    .point_text h3 {
        font-size: 1.6rem;
    }

    .point_text p {
        font-size: 1.4rem;
    }

    /* Device comparison */
    .device_comparison {
        flex-direction: row;
        justify-content: space-between;
        align-items: flex-start;
        gap: 10px;
    }

    .device_pc {
        width: 60%;
    }

    .device_sp {
        width: 35%;
    }

    /* Works grid */
    .works_grid {
        grid-template-columns: repeat(2, 1fr);
        gap: 20px;
    }

    .works_grid_text {
        font-size: 1.2rem;
    }

    /* Work title */
    .work_title {
        font-size: 2.4rem;
        margin-bottom: 20px;
    }

    .work_tag {
        font-size: 1.4rem;
        margin-right: 10px;
    }

    /* スマホ版ではworks詳細ページの最初のセクションにpadding-topを適用 */
    body[data-page="works"] .section:first-of-type {
        padding-top: 40px;
    }
}