/* ====================
 * 基本設定
 * ==================== */

 *, *::before, *::after {
    box-sizing: border-box;
}

body {
    padding: 0 32px;
    text-align: center;
    overflow-x: hidden;
}

/* ====================
 * ヘッダー
 * ==================== */
.site-title-container {
    padding: 32px 0;
    padding-top: calc(32px + 54px);
}
.site-title {
    font-weight: bold;
    text-align: center;
    color: #333;
    line-height: 0.1;
}

.site-title-img {
    display: block;
    margin: 0 auto;
    width: 100%;
    max-width: 280px;
    height: auto;
}


/* ====================
 * 共通コンポーネント
 * ==================== */
.section-title {
    font-size: 40px;
    font-weight: bold;
    margin-bottom: 24px;
}

.section-subtitle {
    font-size: 16px;
    margin-bottom: 25px;
}

.btn {
    display: inline-block;
    background-color: #333;
    color: #fff;
    padding: 10px 40px;
    font-size: 14px;
    font-weight: bold;
    border: none;
    cursor: pointer;
    margin-top: 32px;
    transition: opacity 0.3s;
}
.btn:hover {
    opacity: 0.8;
}
.btn-dark {
    background-color: #333;
}

/* ====================
 * ヒーロー
 * ==================== */
.hero {
    padding-bottom: 40px;
}

.hero-image {
    width: 22%;
    margin-bottom: 40px;
    padding-left: 10px;
}

.hero-text {
    font-size: 14px;
    line-height: 1.8;
    display: inline-block; 
    text-align: center;
}

.pc-only {
    display: none;
}

/* ====================
 * WORKS
 * ==================== */
.works {
    padding-top: 40px;
    padding-bottom: 40px;
    background-color: #f9f9f9;
    margin-left: -32px;
    margin-right: -32px;
    padding-left: 32px;
    padding-right: 32px;
}

.works-overview {
    display: block;
    width: 100%;
    height: auto;
    margin-bottom: 56px;
}

.works-overview img {
    width: 100%;
    height: auto;
}

.works-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 20px 15px;
}

.work-item {
    text-align: left;
    color: #333;
    text-decoration: none;
    display: flex;
    flex-direction: column;
    height: 100%;
}

.work-item img {
    width: 100%;
    height: auto;
    border: 1px solid #e3e3e3;
    transition: transform 0.3s ease, box-shadow 0.3s ease;
}

.work-item p {
    font-size: 14px;
    margin-top: 8px;
    line-height: 1.8;
    flex-grow: 1;
}

.work-item::after {
    content: " 詳細はこちら";
    display: inline-block;
    width: fit-content;
    background-color: #fff;
    color: #333;
    border: 1px solid #333;
    
    background-image: url('../img/key-icon.png');
    background-repeat: no-repeat;
    background-position: 14px center;
    background-size: 17px 17px;
    padding: 6px 12px 6px 36px;
    
    font-size: 12px;
    font-weight: bold;
    margin-top: 16px;
    transition: none;
    filter: none;
}


/* ====================
 * PROFILE
 * ==================== */
.profile {
    padding-top: 40px;
    padding-bottom: 40px;
    display: grid;
    grid-template-columns: 1fr;
    grid-template-rows: auto auto auto auto;
    justify-items: center;
}

.profile .section-title {
    grid-row: 1 / 2;
}

.profile-image {
    grid-row: 2 / 3;
    width: 180px;
    height: 180px;
    margin-bottom: 25px;
}

.profile-name-image {
    grid-row: 3 / 4;
    width: 150px;
    height: auto;
    margin-bottom: 20px;
}

.profile-text {
    grid-row: 4 / 5;
    font-size: 14px;
    line-height: 1.8;
    text-align: left;
    display: inline-block;
}

/* ====================
 * INFO
 * ==================== */
.info {
    padding-top: 40px;
    padding-bottom: 40px;
}

.info-list {
    list-style: none;
    padding: 0;
    margin: 0 0 20px 0;
}

.info-item {
    padding: 15px 0;
    border-bottom: 1px solid #f0f0f0;
}
.info-item:first-child {
    border-top: 1px solid #f0f0f0;
}

.info-content {
    text-align: left;
}

.info-content time {
    font-size: 13px;
    color: #888;
}

.info-content p {
    font-size: 14px;
    line-height: 1.5;
    margin-top: 5px;
}   

/* ====================
* contact
* ==================== */
.contact {
    padding-top: 30px;
    padding-bottom: 60px;
    max-width: 100%;
}

/* ====================
 * PC / Display Styles
 * (960px以上の画面幅で適用)
 * ==================== */
@media (min-width: 960px) {

    body {
        padding: 0 200px;
    }

    .header {
        padding: 15px 200px;
    }

    .works,
    .footer {
        margin-left: -200px;
        margin-right: -200px;
        padding-left: 200px;
        padding-right: 200px;
    }

    .site-title-container {
        padding: 40px 0;
        padding-top: calc(40px + 54px);
    }
    
    .site-title-img {
        max-width: 320px;
    }

    .section-title {
        font-size: 48px;
        margin-bottom: 40px;
    }

    .hero {
        padding-bottom: 60px;
        max-width: 960px; 
        margin-left: auto;
        margin-right: auto;
    }

    .hero-image {
        display: block;
        margin-left: auto;
        margin-right: auto;
        width: 20%;
        max-width: 100px;
        padding-right: 15px;
    }

    .hero-text {
        display: inline-block;   
        text-align: center;
        font-size: 16px; 
        line-height: 1.9;
    }

    .hero-text > .pc-only {
        display: block;
    }

    .hero .btn {
        display: block;
        margin-left: auto;
        margin-right: auto;
        width: -moz-fit-content;
        width: fit-content;
    }

    .works {
        padding-top: 60px;
        padding-bottom: 60px;
    }

    .works-overview {
        margin-left: auto;
        margin-right: auto;
    }

    .works-overview,
    .works-grid {
        max-width: 600px;
        margin-left: auto;
        margin-right: auto;
    }
    .works-grid {
        grid-template-columns: 1fr;
        gap: 30px;
    }
    
    .work-item {
        display: grid;
        grid-template-columns: 200px 1fr;
        grid-template-rows: auto 1fr;
        grid-template-areas: 
            "image text"
            "image button";
        align-items: start;
        gap: 0 25px;
        text-align: left;
    }

    .work-item img {
        width: 100%;
        height: 100%;
        object-fit: cover;
        grid-area: image;
    }
    
    .work-item p {
        grid-area: text;
        font-size: 16px;
        line-height: 1.7;
        flex-grow: 0;
    }

    .work-item::after {
        grid-area: button;
        align-self: start;
        margin-top: 8px;
    }

    .work-item:hover {
        z-index: 10;
        background-color: transparent;
    }
    
    .work-item:hover img {
        transform: scale(1.05);
        box-shadow: 0 4px 15px rgba(0,0,0,0.1);
    }

    .profile {
        padding-top: 60px;
        padding-bottom: 60px;
        max-width: 900px; 
        margin-left: auto;
        margin-right: auto;
        display: grid;
        grid-template-columns: 1fr;
        grid-template-rows: auto auto auto auto;
        justify-items: center;
        gap: 0;
        align-items: start;
    }

    .profile .section-title {
        grid-row: 1 / 2;
        grid-column: 1 / -1;
        margin-bottom: 40px;
    }

    .profile-image {
        grid-row: 2 / 3;
        grid-column: 1 / -1;
        width: 240px;
        height: 240px;
        margin-bottom: 25px;
    }
    .profile-name-image {
        grid-row: 3 / 4;
        grid-column: 1 / -1;
        width: 200px;
        margin: 0 0 20px 0;
    }
    .profile-text {
        grid-row: 4 / 5;
        grid-column: 1 / -1;
        display: block;
        text-align: left;
        margin-top: 0;
        max-width: 700px;
    }

    .info {
        padding-top: 60px;
        padding-bottom: 60px;
    }
    .info-list {
        max-width: 700px;
        margin-left: auto;
        margin-right: auto;
    }

}