/* リセットCSS */
* {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}

/* 基本フォント */
body {
    font-family: 'Noto Sans JP', sans-serif;
}

/* 画像が可変になるようにしておく */
img {
    max-width: 100%;
    height: auto;
    vertical-align: bottom;
}

/* 共通タイトル */
.section-title {
    text-align: center;
    margin-bottom: 48px;
    font-weight: 700;
    color: #505050;
}

.section-title h2 {
    font-size: 1.5rem;
    margin-bottom: 0;
}

.section-title h2 span {
    margin: 0 20px;
    font-size: 1.5rem;
}

.section-title h2 img {
    height: 1.0em;
    vertical-align: middle;
}

/* ヘッダー */
.header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    max-width: 1080px;
    margin: 0 auto;
}

.title {
    align-items: center;
    font-size: 18px;
    font-weight: bold;
    align-self: center;
    color: #505050;
    padding: 12.2px 0;
}

.title img {
    margin-left: 99px;
}

.nav {
    justify-self: center;
    align-self: center;
    font-weight: bold;
    font-size: 14px;
    margin-right: 60px;
    display: flex;
    gap: 10px;
    color: #505050;
}

.nav a {
    text-decoration: none;
    color: inherit;
}

@media screen and (max-width: 780px) {
    .nav {
        display: none;
    }
}

/* ヒーローイメージ */
.hero {
    display: grid;
    grid-template-columns: 1fr 1fr;
    grid-template-rows: 1fr 1fr 1fr;
    height: 80vh;
    min-width: 375px;
    min-height: 550px;
    background-image: url(images/Mask\ group.png);
    background-size: cover;
    background-position: center;
    background-repeat: no-repeat;
}

.cell-3 {
    grid-column: 1;
    grid-row: 2;
    display: flex;
    align-items: center;
    justify-content: center;
    color: white;
    font-size: 1.5rem;
    padding: 1rem;
    background-color: rgba(255, 255, 255, 0.6);
}

.hero-text {
    display: flex;
    flex-direction: column;
    font-weight: bold;
    align-self: center;
    font-weight: 700;

}

.hero-text1 {
    font-size: 1.5rem;
    color: #505050;
    margin-bottom: 10px;
}

.hero-text2 {
    font-size: 2.5rem;
    color: #0D96A0;
}

@media screen and (max-width: 780px) {
    .cell-3 {
        grid-column: 1;
        grid-row: 3;
        display: flex;
        flex-direction: column;
        align-items: center;
        justify-content: center;
        color: white;
        font-size: 20px;
        padding: 1rem;
        background-color: rgba(255, 255, 255, 0.6);
        /* 白を60%の透明度で */
    }
}

/* コンセプト */
.concept {
    text-align: center;
    margin: 60px;
    position: relative;
}

.concept-text1 {
    color: #0D96A0;
    font-size: 30px;
    margin-bottom: 30px;

}

.concept-text2 {
    line-height: 2;
    font-size: 18px;
}

.concept img {
    position: absolute;
    right: 10%;
    bottom: -20%;
    width: 100px;
    height: auto;
}

/* 強み */
.features-sec {
    padding: 50px 0;
    background-color: rgba(13, 150, 160, 0.12);
}

.inner {
    /* 1080カンプで、左右が100なので、コンテンツ幅は880になるという考え方 */
    max-width: 920px;
    /* 880 + 左右20px を足して920 */
    padding: 0 20px;
    /* さらに、スマホの余白である左右20を最初から入れておく。こうするとスマホで新たに余白を設定する必要がないし、画面を縮めた際にも余白が常にある */
    margin: 0 auto;
}

.inner h3 {
    color: #505050;
    margin-bottom: 19px;
    font-weight: bold;
    font-size: 22px;
}

.inner p {
    font-size: 18px;
    line-height: 33px;
    color: #505050;
}

.feature-item-wrapper {
    display: flex;
    flex-direction: row-reverse;
    justify-content: space-between;
    margin-bottom: 50px;
}

.feature-item-wrapper.reverse {
    /* 反対になるセクションにだけ、reverseクラスを付けている。〇番目の指定でも良い */
    flex-direction: row;
}

.feature-item-image {
    /* 画像ボックスの共通CSS */
    flex-basis: 50%;
}

.feature-item-text {
    /* テキストボックスの共通CSS */
    flex-basis: calc(50% - 45px);
    display: flex;
    flex-direction: column;
    justify-content: center;
}

.feature-item-text h3 {
    margin-top: 26px;
}

@media screen and (max-width: 780px) {
    .feature-item-wrapper {
        /* blockにすることで、flex関連のCSSはすべて無効になる */
        display: block;
        margin-bottom: 40px;
    }

    .concept{
        margin: 60px 0;
    }
}

/* サービス */
.service {
    text-align: center;
    color: #505050;
    padding: 50px;
}

.service-descriptions {
    display: flex;
    flex-wrap: wrap;
    gap: 50px;
    justify-content: center;
}

.service-description {
    flex: 1 1;
    max-width: 100%;
    box-sizing: border-box;
    text-align: center;
    line-height: 30px;
    font-size: 17px;
}

.service-description h3 {
    margin-top: 19px;
    margin-bottom: 8px;
}

.service-description img {
    width: 100%;
    /* 親要素に合わせる */
    height: auto;
    /* アスペクト比維持 */
    object-fit: cover;
    /* 必要に応じてトリミング調整 */
    display: block;
    margin: 0 auto;
}

@media screen and (max-width: 780px) {
    .service-descriptions {
        flex-direction: column;
        align-items: center;
        /* 中央揃え（任意） */
    }

    .service-descriptions h3 {
        margin-top: 30px;
    }

    .service-description {
        width: 100%;
        max-width: 500px;
        /* 画面に対してちょうどよく表示させたい場合は調整可能 */
        margin-top: 30px;
    }

    .service{
        padding: 50px 0;
    }
}

/* お知らせ */
.news-section {
    text-align: center;
    color: #505050;
    padding: 50px;
    background-color: rgba(13, 150, 160, 0.12);
}

.news-section h2 {
    margin-bottom: 50px;
}

/* お知らせリスト */
.news-list {
    display: flex;
    flex-direction: column;
    gap: 12px;
}

/* 各行（お知らせ1件分） */
.news-item {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    font-size: 16px;
    color: #333;
    padding: 10px 0;
    border-bottom: 1px solid #707070;
}

@media screen and (max-width:780px) {
    .news-item {
        flex-direction: column;
        align-items: flex-start;
    }

    .news-section{
        padding: 50px 0;
    }
}

/* 各部分 */
.news-date {
    color: #888;
    min-width: 100px;
}

.news-item .news-title {
    font-weight: bold;
    min-width: 200px;
    text-align: left;
    color: #0D96A0;
    margin: 0;
}

.news-des {
    flex: 1;
    text-align: left;
}

/* アクセス */
.access-section {
    margin-top: 63px;
    margin-bottom: 70px;
}

.access-container {
    display: flex;
    gap: 46px;
    align-items: stretch;
}

.access-map,
.access-info {
    flex: 1;
}

/* 地図エリア */
.access-map iframe {
    width: 100%;
    height: 100%;
    min-height: 300px;
    border: 0;
}

/* 住所エリア */
.access-info {
    font-size: 16px;
    line-height: 2.5;
    color: #333;
}

.access-info p {
    margin-bottom: 15px;
}

.access-info span {
    font-size: 25px;
    color: #0D96A0;
    font-weight: bold;
}

.divider {
    margin: 10px 0;
}

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

    .access-container {
        flex-direction: column;
        align-items: center;
    }

    .access-map iframe {
        width: 100%;
        height: auto;
        /* 高さも調整したい場合 */
        max-width: 100%;
    }

    .access-info {
        width: 100%;
        padding: 0 16px;
        /* スマホで左右に余白を付ける */
        box-sizing: border-box;
    }
}

/* お問い合わせ */
.contact-section {
    text-align: center;
    background-color: rgba(13, 150, 160, 0.12);
    padding: 50px 20px;
}

.contact-des {
    margin-bottom: 20px;
    line-height: 2;
    font-size: 17px;
}

/* .contact-section label {
    margin-right: 20px;

} */

.form-group {
    display: flex;
    align-items: center;
    justify-content: center;
    margin-bottom: 30px;
}

.form-group label {
    width: 200px;
    /* ラベルの幅固定 */
    font-weight: bold;
    font-size: 20px;
    text-align: left;
    color: #505050;
}

.form-group input,
.form-group textarea {
    padding: 8px;
    width: 100%;
    border: none;
}

textarea {
    height: 300px;
}

.contact-section button {
    background: #0D96A0;
    border-radius: 10px;
    color: #FFFFFF;
    padding: 9px 73px;
    border: none;
    font-size: 25px;
    font-weight: bold;
    cursor: pointer;
    margin-top: 20px;
}

@media screen and (max-width: 768px) {
    .form-group{
        display: flex;
        flex-direction: column;
    }

    .contact-des {
        text-align: left;
    }

    .form-group label{
        text-align: left;
        width: 100%;
        margin-bottom: 2px;
    }
    
}

/* フッター */
.footer {
    background-color: #505050;
    color: #FFFFFF;
    padding: 66px 171px 73px 172px;
    font-size: 20px;
    font-weight: bold;
}

.footer-list {
    display: flex;
    flex-direction: row;
    list-style: none;
    justify-content: center;
    margin-bottom: 21px;
    gap: 14px;
}

.footer hr {
    color: #FFFFFF;
}

.footer a {

    color: #FFFFFF;
}

.footer p {
    display: flex;
    justify-content: center;
    margin-top: 27px;
    margin-bottom: 9px;
    color: #FFFFFF;
    font-size: 20px;
    gap: 12px;
}

.sns-icons {
    display: flex;
    justify-content: center;
    gap: 12px;
    margin-bottom: 20px;
    /* 任意：余白が必要なら */
}

@media screen and (max-width: 768px) {
    .footer-list{
        display: flex;
        flex-wrap: wrap;
        gap: 20px;
        padding-top: 45px;
        padding-bottom: 21px;
    }

    .footer{
        padding: 0;
    }

    .sns-icons{
        padding-bottom: 50px;
    }
}    