@charset "utf-8";

/*-------------------------------------------------------------
///////////////////////////////////////////////////////////////
base module & style
///////////////////////////////////////////////////////////////
--------------------------------------------------------------*/

:root {
	--primary-color: #3071B7;
	--secondary-color: #00AA83;
	--tertiary-color: #3B4B89;
}

/* 表示切り替え */
.sp_on {
    display: block; /* SPのみ表示 */

    @media (width >= 768px) {
        & {
            display: none;
        }
    }
}

.tab_on {
    display: none;

    @media (width >= 768px) {
        & {
            display: block; /* タブレットのみ表示 */
        }
    }

    @media (width >= 1220px) {
        & {
            display: none;
        }
    }
}

.pc_on {
    display: none;

    @media (width >= 768px) {
        & {
            display: none;
        }
    }

    @media (width >= 1220px) {
        & {
            display: block; /* PCのみ表示 */
        }
    }
}

/* ページトップへもどる */
@media (width >= 1220px) {
    .page_top {
        width: 40px;
        height: 40px;
        right: 10px;
        bottom: 50px;
        position: fixed;
        background: var(--secondary-color);
        cursor: pointer;
        display: flex;
        align-items: center;
        justify-content: center;
        z-index: 2;

        &::before {
            content: "";
            display: block;
            width: 5px;
            height: 5px;
            border-top: 1px solid #FFFFFF;
            border-right: 1px solid #FFFFFF;
            transform: rotate(-45deg);
        }
    }

}

[class$="_container"], [class*="_container "] {
    width: 100%;
    margin-inline: auto;

    @media (width >= 1220px) {
        & {
            width: 1100px;
        }
    }
}

.wrapper {
    position: relative;
    width: 100%;
    margin-inline: auto;
    background-image: url(../images/bg_small.jpg);
    background-position: left top;
    background-repeat: repeat;
    background-size: contain;

    @media (width >= 768px) {
        & {
            background-image: url(../images/bg_large.jpg);
        }
    }
}


/* @group ヘッダーエリア
------------------------------------------------------*/

.header {
    position: relative;

    &::before {
        position: absolute;
        content: "";
        width: 100%;
        height: 5px;
        background: var(--tertiary-color);
        z-index: 2;
    }

}

.header_container {
    position: relative;
    min-height: 400px;

    &::before {
        position: absolute;
        content: "";
        width: 100%;
        height: 100%;
        background-image: url(../images/header_small.png);
        background-position: center bottom;
        background-repeat: no-repeat;
        background-size: contain;
        z-index: 1;
    }

    @media (width >= 414px) {
        min-height: 425px;
    }

    @media (width >= 430px) {
        min-height: 441px;
    }

    @media (width >= 768px) {
        & {
            min-height: 115px;

            &::before {
                background-image: url(../images/header_large.png);
            }
        }
    }

    @media (width >= 820px) {
        & {
            min-height: 123px;
        }
    }

    @media (width >= 1024px) {
        & {
            min-height: 154px;
        }
    }

    @media (width >= 1220px) {
        & {
            min-height: 210px;

            &::before {
                background-image: url(../images/header_large_pc.png);
            }
        }

    }

    /* 子ページ */
    &.child {
        min-height: 200px;

        &::before {
            background-image: url(../images/header_small_child.png);
            background-size: contain;
        }

        @media (width >= 414px) {
            min-height: 212px;
        }

        @media (width >= 430px) {
            min-height: 221px;
        }

        @media (width >= 768px) {
            & {
                min-height: 115px;

                &::before {
                    background-image: url(../images/header_large.png);
                }
            }
        }

        @media (width >= 820px) {
            & {
                min-height: 123px;
            }
        }

        @media (width >= 1024px) {
            & {
                min-height: 154px;
            }
        }

        @media (width >= 1220px) {
            & {
                min-height: 210px;

                &::before {
                    background-image: url(../images/header_large_pc.png);
                }
            }

        }

    }

} /* header_containerここまで */


/* ヘッダーのテキスト非表示 */
.header_container > * {
    position: absolute;
    left: -9999em;
}


/* @group メインエリア
------------------------------------------------------*/
.main {
    position: relative;
}

.main_wrap {
    position: relative;
}

@media (width >= 1220px) {
    .main_wrap {
        width: 1220px;
        margin-inline: auto;

        &::before {
            position: absolute;
            content: "";
            width: 1220px;
            height: 1205px;
            top: 0;
            left: 0;
            background-image: url(../images/bg_main_pc.png);
            background-position: center top;
            background-repeat: no-repeat;
            background-size: contain;
        }
    }
}

.main_container {
    position: relative;
    min-height: 435px;

    &::before {
        position: absolute;
        content: "";
        width: 100%;
        height: 100%;
        background-image: url(../images/bg_main_small.png);
        background-position: center top;
        background-repeat: no-repeat;
        background-size: contain;
    }

    @media (width >= 414px) {
        & {
            min-height: 462px;
        }
    }

    @media (width >= 430px) {
        & {
            min-height: 480px;
        }
    }

    @media (width >= 768px) {
        & {
            min-height: 1089px;

            &::before {
                background-image: url(../images/bg_main_large.png);
            }
        }
    }

    @media (width >= 820px) {
        & {
            min-height: 1162px;
        }
    }

    @media (width >= 1024px) {
        & {
            min-height: 1452px;
        }
    }

    @media (width >= 1220px) {
        & {
            min-height: 1205px;
            margin-inline: auto;

            &::before {
                background-image: none;
            }
        }
    }
}

/* 2カラム用 */
@media (width >= 1220px) {
    .main_container {
        display: flex;
        flex-direction: row-reverse;
        width: 1100px;
        margin-inline: auto;
    }

    .contents {
        width: 850px;
    }

    .nav_wrap {
        position: relative;
        width: 250px;
    }
}

.poster {
    position: relative;
    height: 130px;
    display: grid;
    place-items: center;

    @media (width >= 1220px) {
        & {
            height: 200px;
        }
    }

    & a {
      display: block;
      width: 250px;
      height: auto;
      margin-inline: auto;

      & img {
        width: 100%;
        height: 100%;
      }
    }
  }

/* @group フッターエリア
------------------------------------------------------*/

.footer {
    position: relative;
    top: 45px;
    background-color: var(--primary-color);

    &::after {
        position: absolute;
        content: "";
        bottom: 0;
        left: 0;
        width: 100%;
        height: 70px;
        background-color: var(--tertiary-color);
        z-index: 1;

        @media (width >= 768px) {
            height: 35px;
        }
    }

    @media (width >= 768px) {
        & {
            top: 0px;
        }
    }
}

.footer_container {
    position: relative;

    &::before {
        position: absolute;
        content: "";
        top: -46px;
        left: 20px;
        width: 154px;
        height: 58px;
        background-image: url(../images/footer_decoration.svg);
        background-position: left top;
        background-repeat: no-repeat;
        background-size: contain;
        z-index: 1;
    }

    @media (width >= 1220px) {
        & {
            width: 1100px;
            margin-inline: auto;
        }
    }
}

.secretariat_wrap {
    position: relative;
    padding: 20px;

    @media (width >= 768px) {
        & {
            display: flex;
            gap: 100px;
            padding: 30p;
        }
    }

    @media (width >= 1220px) {
        & {
            gap: 160px;
            padding: 30px 0;
        }
    }

    & > .secretariat {
        color: #FFFFFF;

        &:first-child {
            margin-bottom: 20px;
        }

        & > h3 {
            position: relative;
            font-size: 17px;
            font-weight: bold;
            margin-bottom: 20px;

            &::before {
                position: absolute;
                content: "";
                top: 50%;
                left: 0;
                width: 100%;
                height: 2px;
                border-top: 2px dotted #FFFFFF;
                opacity: 0.5;
                z-index: 1;
            }

            & > span {
                position: relative;
                z-index: 2;
                display: inline-block;
                padding: 0 15px 0 25px;
                background-color: var(--primary-color);
                color: #FFFFFF;

                &::before {
                    position: absolute;
                    content: "";
                    top: 5px;
                    left: 0;
                    width: 18px;
                    height: 15px;
                    background-image: url(../images/ico_icho.svg);
                    background-position: center center;
                    background-repeat: no-repeat;
                    background-size: contain;
                    z-index: 1;
                }
            }
        }

        & > dl {

            & > dt {
                font-size: 14px;
                font-weight: bold;
                margin-bottom: 5px;
            }

            & > dd {
                font-size: 13px;
                line-height: 1.4;

                & > a {
                    color: #00FFFF;
                    text-decoration: none;

                    &:hover {
                        text-decoration: underline;
                    }
                }
            }
        }
    }
}

.footer-copyright {
    position: relative;
    height: 70px;
    z-index: 2;
    display: flex;
    justify-content: center;
    align-items: center;

    @media (width >= 768px) {
        & {
            height: 35px;
        }
    }

    & > p {
        margin-left: 30px;
        margin-right: 30px;
        font-size: 13px;
        line-height: 1.4;
        color: #FFFFFF;
        text-align: center;

        @media (width >= 1220px) {
            margin-left: 15px;
            margin-right: 15px;
        }
    }
}


/* @group トップページ
------------------------------------------------------*/

.society-theme {
    position: relative;
    min-height: 300px;
    margin-bottom: 50px;

    &::before {
        position: absolute;
        content: "";
        width: 100%;
        height: 100%;
        background-image: url(../images/theme_small.png);
        background-position: center top;
        background-repeat: no-repeat;
        background-size: contain;
        z-index: 3;
    }

    @media (width >= 414px) {
        & {
            min-height: 318px;
        }
    }

    @media (width >= 430px) {
        & {
            min-height: 331px;
        }
    }

    @media (width >= 768px) {
        & {
            min-height: 655px;

            &::before {
                background-image: url(../images/theme_large.png);
            }
        }
    }

    @media (width >= 820px) {
        & {
            min-height: 699px;
        }
    }

    @media (width >= 1024px) {
        & {
            min-height: 873px;
        }
    }

    @media (width >= 1220px) {
        & {
            min-height: 725px;
            margin-bottom: 70px;
        }
    }

}

/* テーマテキスト非表示 */
.society-theme > * {
    position: absolute;
    left: -9999em;
}

/* お知らせ */
.news {
    position: relative;
    width: 90%;
    margin-inline: auto;
    margin-bottom: 20px;
    z-index: 4;


    @media (width >= 1220px) {
        & {
            width: 736px;
            margin-top: -10px;
        }
    }

    & > h2 {
        width: 180px;
        margin-inline: auto;
        margin-bottom: 20px;

        & > .news_title {
          position: relative;
          left: 30px;
        }
    }

    & > .news-list {
        position: relative;
        display: flex;
        flex-direction: column;
        gap: 10px;
        height: 125px;
        overflow-y: auto;
        line-height: 1.4;

        @media (width >= 768px) {
            & {
                height: 160px;
            }
        }


        & > li {
            display: flex;
            align-items: baseline;
            font-size: 14px;

            & > .date {
              width: 100px;
              font-weight: bold;
              color: var(--primary-color);
            }

            & > .excerpt {
              width: calc(100% - 90px);
              color: #303030;

              @media (width >= 768px) {
                & {
                  width: calc(100% - 90px);
                }
              }

              & > a {
                color: #006aff;
                text-decoration: underline;

                &:hover {
                    text-decoration: none;
                }
              }
            }
        }
    }
}

/* @group ページ共通
------------------------------------------------------*/

.page-contents {
    position: relative;
    min-height: 100vh;
    background: linear-gradient(to bottom, rgba(255, 255, 255, 0) 0px, #FFFFFF 77px, #FFFFFF 77px,#FFFFFF 100%);

    @media (width >= 768px) {
        & {
            min-height: 1300px;
        }
    }

    @media (width >= 1220px) {
        & {
            background: linear-gradient(to bottom, rgba(255, 255, 255, 0) 0px, #FFFFFF 106px, #FFFFFF 106px,#FFFFFF 100%);
            min-height: 1300px;
        }
    }
}

.page-title {
    position: relative;
    padding: 25px 10px;
    display: flex;
    align-items: center;
    background-image: linear-gradient(to right bottom, rgba(0, 170, 130, 0.7) 50%, rgba(48, 113, 183, 0.7) 100%);
    background-position: left top,;
    background-repeat: no-repeat;
    background-size: 100% 100%;

    & > span {
        position: relative;
        padding-left: 15px;
        font-size: clamp(1.375rem, 1.116rem + 1.103vi, 1.875rem);
        font-weight: bold;
        font-feature-settings: "palt";
        color: #FFFFFF;
        text-shadow: 2px 3px 3px rgba(0, 0, 0, 0.7);
        line-height: 1.2;
    }

    @media (width >= 768px) {
        & > span {
            padding-left: 40px;
        }
    }

    @media (width >= 1220px) {
        & {
            padding: 35px 15px;
        }

        & > span {
            padding-left: 20px;
        }
    }

}

.page-body {
    padding: 20px 20px 30px 20px;
}
@media (width >= 768px) {
    .page-body {
        padding: 40px 20px 40px 20px;
    }
}

/* 既存の垂直マージンを削除 */
.page-body>* {
    margin-top: 0;
    margin-bottom: 0;
    line-height: 1.7;
}

/* 連続する要素だけに上方向のマージンを適用 */
.page-body>*+* {
    margin-block-start: 30px;
}

.page-body section > * + * {
    margin-block-start: 1.25em;
}

.page-body a {
    color: var(--primary-color);
    text-decoration: underline;

    &:hover {
        text-decoration: none;
    }
}

/* 見出し */
.heading_h3 {
    padding: 0.3em 0.5em;
    border-left: 5px solid var(--primary-color);

    & > span {
        display: inline-block;
        font-size: clamp(1.125rem, 1rem + 0.5vi, 1.375rem);
        font-weight: bold;
        color: #333333;
        line-height: 1.4;
        font-feature-settings: "palt";
    }
}

.under_construction {
    text-align: center;
    font-size: 1.1em;
    padding-top: 50px;
}

/* 外部リンク・PDF */
.exlink::after {
    content: "\f35d";
    font-family: "Font Awesome 5 Free";
    font-size: 0.8em;
    font-weight: 900;
    margin-left: 0.5em;
}

.pdf::after {
    content: "\f1c1";
    font-family: "Font Awesome 5 Free";
    font-weight: 900;
    margin-left: 0.5em;
}

/* ボタン */
.btn_wrap {
    display: flex;
    flex-direction: column;
    gap: 10px;
    justify-content: center;
    align-items: center;
    margin: 20px 0;

    @media (width >= 768px) {
        flex-direction: row;
        gap: 20px;
    }
}

.btn {
    display: inline-block;
    padding: 12px 24px;
    background-color: var(--secondary-color);
    color: #FFFFFF;
    text-decoration: none;
    border-radius: 6px;
    font-weight: bold;
    border: 2px solid var(--secondary-color);
    text-align: center;

    &:hover {
        background-color: var(--primary-color);
        border-color: var(--primary-color);
        color: #FFFFFF;
        text-decoration: none;
    }

    @media (width >= 768px) {
        min-width: 280px;
        padding: 14px 28px;
    }
}

.page-body a.btn {
    color: #FFFFFF;
    text-decoration: none;
}

/* 囲み */
.enclosure01 {
    border: 1px solid #dddddd;
    padding: 16px 20px;
    border-radius: 6px;
    background: #ffffff;
}

/* 表 */
.table-scroll {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
}

table {
    border-collapse: collapse;
    border-spacing: 0;
}

.tbl-width100 {
    width: 100%;
}

.tbl-style01 {
    width: 100%;
    font-size: 0.875rem;

    @media (width >= 768px) {
        font-size: 1rem;
    }

    & thead th {
        background-color: var(--primary-color);
        border: 1px solid #cccccc;
        padding: 0.6em 0.5em;
        font-weight: bold;
        color: #FFFFFF;
    }

    & tbody th,
    & tbody td {
        border: 1px solid #cccccc;
        padding: 0.7em 0.5em;
        background-color: #ffffff;
        overflow-wrap: break-word;
        word-break: normal;
        line-break: strict;
    }

    & tbody th {
        font-weight: bold;
    }

    & th:last-child,
    & td:last-child {
        white-space: nowrap;
    }

    & a {
        overflow-wrap: normal;
        word-break: keep-all;
    }
}

.th-c-m th {
    text-align: center;
    vertical-align: middle;
}

.td-c-m td {
    text-align: center;
    vertical-align: middle;
}

.td-l-t td {
    text-align: left;
    vertical-align: top;
}

/* 開催概要 */
.overview-list {
    display: flex;
    flex-direction: column;
    row-gap: 15px;
    line-height: 1.6;
    font-feature-settings: "palt";

    @media (width >= 768px) {
        flex-direction: row;
        flex-wrap: wrap;
        align-items: baseline;
        row-gap: 24px;
        column-gap: 20px;
    }

    & dt {
        width: 100%;
        min-height: 30px;
        display: flex;
        align-items: center;
        padding: 8px 10px;
        background-color: var(--primary-color);
        font-size: 14px;
        font-weight: bold;
        line-height: 1.3;
        color: #FFFFFF;

        @media (width >= 768px) {
            width: 7.5em;
            justify-content: center;
        }
    }

    & dd {
        width: 100%;
        margin-left: 0;
        padding-bottom: 8px;
        border-bottom: 1px solid #cccccc;

        @media (width >= 768px) {
            flex: 0 0 calc(100% - 7.5em - 20px);
            padding-bottom: 4px;
        }
    }
}

/* 会長挨拶 */
.presidentBox {
    display: flex;
    justify-content: flex-start;
    align-items: flex-end;
    gap: 20px;
    border-bottom: 1px solid #cccccc;
    padding: 4px 8px 16px;
    line-height: 1.6;

    & img {
        width: 140px;
        height: auto;
        flex-shrink: 0;
    }

    & .name {
        text-align: left;
    }

    & .name .ib {
        display: inline-block;
        white-space: nowrap;
    }

    @media (width < 768px) {
        flex-direction: column;
        align-items: center;

        & .name {
            text-align: center;
        }
    }
}

.mainTxt02 {
    line-height: 1.9;
    text-indent: 1em;
}

/* 協賛のご案内 */
.btn--apply {
    min-width: 0;
    padding: 6px 12px;
    background-color: var(--primary-color);
    border-color: var(--primary-color);
    font-size: 0.875rem;
    line-height: 1.4;
    white-space: nowrap;

    &::after {
        content: "\f35d";
        font-family: "Font Awesome 5 Free";
        font-weight: 900;
        font-size: 0.75em;
        margin-left: 0.45em;
    }

    &:hover {
        background-color: var(--tertiary-color);
        border-color: var(--tertiary-color);
    }

    @media (width >= 768px) {
        min-width: 0;
        padding: 8px 16px;
    }
}

/* 趣意書ボタン（準備中） */
.btn--disabled {
    background-color: #999999;
    border-color: #999999;
    cursor: default;

    &:hover {
        background-color: #999999;
        border-color: #999999;
    }
}

/* 改行位置の調整用 */
.btn--disabled .ib,
.tbl-sponsorship .ib {
    display: inline-block;
    white-space: nowrap;
}

/* 申込表 */
.tbl-sponsorship {

    @media (width < 768px) {
        & thead th,
        & tbody td {
            padding-inline: 0.4em;
        }

        & td:last-child {
            white-space: normal;
        }

        & .btn--apply {
            padding: 6px 8px;
            font-size: 0.75rem;
            white-space: normal;
        }
    }
}

/* アクセス */
.access-map__frame {
    display: block;
    width: 100%;
    height: 420px;
    border: 0;

    @media (width >= 768px) {
        height: 480px;
    }
}

/* リンク */
.link-list__item + .link-list__item {
    margin-top: 1.25em;
    padding-top: 1.25em;
    border-top: 1px solid #dddddd;
}

.link-list__name {
    font-weight: bold;
}
.menu > li a.preparation {
    background-color: #d1d1d194;
    color: #6f6f6f;
}