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

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

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

/* ====================
 * ヘッダー
 * ==================== */

.site-title {
    font-weight: bold;
    text-align: center;
    color: #333;
    line-height: 0.1;
    margin-bottom: 30px;
}

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


/* ====================
 * 共通コンポーネント
 * ==================== */
.section-title {
    font-size: 40px;
    font-weight: bold;
    font-family: 'Montserrat', sans-serif;
    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: 20px;
    transition: opacity 0.3s;
}
.btn:hover {
    opacity: 0.8;
}
.btn-dark {
    background-color: #333;
}

/* ====================
 * ヒーロー
 * ==================== */
.hero {
    margin-left: -32px;
    margin-right: -32px;
    padding-left: 32px;
    padding-right: 32px;
    padding-top: 80px;
    padding-bottom: 100px;
    overflow: hidden;
    background-color: #ffffff;
    background-image: radial-gradient(circle, #d8d8d833 4px, transparent 4px);
    background-position: 0 0;
    background-size: 30px 30px;
}

.hero-image {
    display: block;
    width: calc((100% + 64px) * 1.15);
    max-width: none;
    margin-left: calc(-32px - ((100% + 64px) * 0.075));
    margin-right: calc(-32px - ((100% + 64px) * 0.075));
}

.hero-text {
    font-size: 15px;
    line-height: 1.8;
    display: inline-block;
    text-align: center;
    margin-top: 20px;
}

.pc-only {
    display: none;
}

/* ====================
 * SKILL
 * ==================== */
.skill {
    padding-top: 10px; 
    padding-bottom: 60px;
    background-color: #f9f9f9; 
    margin-left: -32px; 
    margin-right: -32px;
    padding-left: 32px;
    padding-right: 32px;
}

.skill-title-container {

    margin-top: -60px;
    margin-bottom: 30px;
    position: relative;
    z-index: 10;
}

.skill-title-img {
    display: block;
    margin: 0 auto;
    width: 90px;
    height: auto;
}

.skill-list {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 10px 5px;
    list-style: none;
    padding: 0;
    margin: 0;
}

.skill-item {
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
}

.skill-icon {
    height: 60px; 
    display: flex;
    align-items: flex-end;
    margin-bottom: 10px;
}

.skill-icon img {
    width: auto;
    height: auto;
    max-width: 50px;
    max-height: 50px;
}

.skill-item p {
    font-size: 13px;
    line-height: 1.4;
    font-weight: 500;
    color: #333;
}


/* ====================
 * WORKS
 * ==================== */
.works {
    padding-top: 40px;
    padding-bottom: 40px;
    background-color: #ffffff;
    margin-left: -32px;
    margin-right: -32px;
    padding-left: 32px;
    padding-right: 32px;
    background-image: radial-gradient(circle, #d8d8d833 4px, transparent 4px);
    background-position: 0 0;
    background-size: 30px 30px;
}

.works-lead {
    margin-bottom: 40px;
}

.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;
    background-color: #f9f9f9;
    margin: 0 -32px;
    padding-left: 32px;
    padding-right: 32px;
}

.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: 15px;
    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: 14px;
    color: #888;
}

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

/* ====================
* contact
* ==================== */
.contact {
    padding-top: 30px;
    padding-bottom: 60px;
    /* max-width: 100%; */
    background-color: #f9f9f9;
    margin: 0 -32px;
    padding-left: 32px;
    padding-right: 32px;
}

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

    body {
        padding: 0 200px;
    }

    body::before {
        display: none;
    }

    .header {
        padding: 15px 200px;
    }

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

    .site-title {
        width: 30%;
        margin-bottom: 0;
        text-align: left;
    }

    .site-title-img {
        max-width: 300px;
        width: 100%;
        margin: 0;
    }

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

    .hero {
        padding-top: 100px;
        padding-bottom: 130px;
    }

    .hero-visual {
        display: flex;
        justify-content: center;
        align-items: center;
        gap: 40px;
    }

    .hero-image {
        width: 70%;
        max-width: 650px;
        margin: 0;
        margin-left: 0;
        margin-right: 0;
    }

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

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

    /* SKILL セクション PC調整 */
    .skill {
        padding-top: 20px;
        padding-bottom: 80px;
    }

    .skill-title-container {
        margin-top: -90px; 
        margin-bottom: 50px;
    }

    .skill-title-img {
        width: 130px;
    }

    .skill-list {
        max-width: 650px;
        margin: 0 auto;
        gap: 30px 30px;
        grid-template-columns: repeat(5, 1fr);
    }

    .skill-icon img {
        max-width: 60px;
        max-height: 60px;
    }

    .skill-item p {
        font-size: 15px;
    }


    .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;
        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;
    }

}