/* components.css - ボタン・カード・CTA などの部品 */

input::-webkit-input-placeholder,
textarea::-webkit-input-placeholder {
    color:var(--c-text-subtle);
    font-weight: normal
}

input:-ms-input-placeholder,
textarea:-ms-input-placeholder {
    color:var(--c-text-subtle);
    font-weight: normal
}

input::-moz-placeholder,
textarea::-moz-placeholder {
    color:var(--c-text-subtle);
    font-weight: normal
}

input[type=text],
input[type=tel],
input[type=email],
input[type=button],
input[type=submit],
textarea,
select {
    -moz-appearance: none;
    -webkit-appearance: none;
    border: 0;
    border-radius: 0;
    background-color: inherit;
    font-family: "Noto Sans JP", "游ゴシック", YuGothic, "Hiragino Sans", "Hiragino Kaku Gothic ProN", "メイリオ", Meiryo, sans-serif;
    color: var(--c-text)
}

input[type=text],
input[type=tel],
input[type=email] {
    padding: 0 20px;
    height: 60px;
    width: 100%;
    background-color: var(--c-text-invert);
    border: 1px solid var(--c-border);
    border-radius:var(--r-md);
    font-weight: 400
}

@media only screen and (max-width: 768px) {
    input[type=text],
        input[type=tel],
        input[type=email] {
            padding: 0 15px;
            height: 50px
        }
}

textarea {
    width: 100%;
    height: 160px;
    box-sizing: border-box;
    border-radius:var(--r-md);
    background-color: var(--c-text-invert);
    border: 1px solid var(--c-border);
    padding: 15px 20px;
    font-weight: 400
}

@media only screen and (max-width: 768px) {
    textarea {
            padding: 10px 15px;
            height: 140px
        }
}

input[type=submit] {
    width: 360px;
    border-radius:var(--r-md);
    height: 60px;
    background-color: var(--c-brand-800);
    color: var(--c-text-invert);
    font-size:var(--fs-lead);
    cursor: pointer;
    transition: all .3s ease-out
}

@media only screen and (max-width: 768px) {
    input[type=submit] {
            width: 100%;
            max-width: 360px
        }
}

input[type=submit]:hover {
    opacity: .7
}

.select_wrap {
    max-width: 485px;
    border: 1px solid var(--c-text);
    background-color: var(--c-text-invert);
    position: relative
}

.select_wrap::before {
    content: " ";
    display: block;
    width: 14px;
    height: 8px;
    background: url("../images/common/icon/select_arrow.svg") 0 0 no-repeat;
    position: absolute;
    top: 50%;
    right: 12px;
    margin-top: -4px
}

@media only screen and (max-width: 768px) {
    .select_wrap::before {
            background-size: 10px auto;
            width: 10px;
            right: 6px
        }
}

.select_wrap select {
    height: 50px;
    width: 100%;
    padding: 0 30px 0 20px;
    font-size:var(--fs-base)
}

@media only screen and (max-width: 768px) {
    .select_wrap select {
            padding: 0 20px 0 15px;
            height: 38px;
            font-size: 1.5rem
        }
}

.select_wrap .wpcf7-not-valid-tip {
    display: none
}

input[type=radio] {
    display: none
}

input[type=radio]+span {
    display: inline-block;
    padding-left: 26px;
    position: relative;
    font-size:var(--fs-base)
}

input[type=radio]+span::before,
input[type=radio]+span::after {
    content: " ";
    display: block
}

input[type=radio]+span::before {
    border: 1px solid var(--c-border-light);
    width: 16px;
    height: 16px;
    border-radius: 50%;
    box-sizing: border-box;
    position: absolute;
    top: 3px;
    left: 0;
    background-color: var(--c-text-invert)
}

input[type=radio]+span::after {
    width: 8px;
    height: 8px;
    background-color: var(--c-brand-800);
    border-radius: 50%;
    position: absolute;
    top: 7px;
    left: 4px;
    display: none
}

input[type=radio].invalid+span::before {
    background-color: var(--c-error-bg)
}

input[type=radio]:checked+span::before {
    border-color: var(--c-brand-800)
}

input[type=radio]:checked+span::after {
    display: block
}

input[type=checkbox] {
    display: none
}

input[type=checkbox]+span {
    display: inline-block;
    padding-left: 32px;
    position: relative;
    font-size:var(--fs-base)
}

@media only screen and (max-width: 768px) {
    input[type=checkbox]+span {
            padding-left: 28px;
            font-size:var(--fs-small)
        }
}

input[type=checkbox]+span::before,
input[type=checkbox]+span::after {
    content: " ";
    display: block
}

input[type=checkbox]+span::before {
    border: 1px solid var(--c-border);
    width: 24px;
    height: 24px;
    border-radius:var(--r-sm);
    box-sizing: border-box;
    position: absolute;
    top: 2px;
    left: 0;
    background-color: var(--c-text-invert)
}

@media only screen and (max-width: 768px) {
    input[type=checkbox]+span::before {
            width: 20px;
            height: 20px;
            top: 3px
        }
}

input[type=checkbox]+span::after {
    width: 24px;
    height: 24px;
    background: url("../img/common/checkmark.svg") center no-repeat;
    position: absolute;
    top: 2px;
    left: 0;
    display: none
}

@media only screen and (max-width: 768px) {
    input[type=checkbox]+span::after {
            width: 20px;
            height: 20px;
            top: 3px;
            background-size: 12px auto
        }
}

input[type=checkbox].invalid+span::before {
    background-color: var(--c-error-bg)
}

input[type=checkbox]:checked+span::before {
    border-color: var(--c-brand-800);
    background-color: var(--c-brand-800)
}

input[type=checkbox]:checked+span::after {
    display: block
}

.tmpl_thum {
    position: relative
}

.tmpl_thum::after {
    content: " ";
    display: block;
    padding-bottom: 63.2275132275%
}

.tmpl_thum img {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    -o-object-fit: cover;
    object-fit: cover
}

.tmpl_page_mv {
    margin: 0 2rem;
    padding: 2rem 0;
    border-radius:var(--r-xl);
    overflow: hidden;
    min-height: 400px;
    display: flex;
    justify-content: flex-start;
    align-items: center;
    color: var(--c-text-invert);
    position: relative
}

@media only screen and (max-width: 768px) {
    .tmpl_page_mv {
            border-radius:var(--r-sp-md);
            min-height: 360px
        }
}

.tmpl_page_mv .tmpl_inner {
    width: 100%
}

.tmpl_page_mv .tmpl_page_mv_image {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    -o-object-fit: cover;
    object-fit: cover;
    -o-object-position: right center;
    object-position: right center;
    z-index: -1
}

.tmpl_page_mv .tmpl_page_mv_category {
    margin-bottom: .5rem;
    font-family: "Montserrat", sans-serif;
    font-size:var(--fs-lead)
}

@media only screen and (max-width: 768px) {
    .tmpl_page_mv .tmpl_page_mv_category {
            font-size:var(--fs-base)
        }
}

.tmpl_page_mv .tmpl_page_mv_heading {
    font-size:var(--fs-mv);
    font-weight: 500
}

@media only screen and (max-width: 768px) {
    .tmpl_page_mv .tmpl_page_mv_heading {
            font-size:var(--fs-mv-sp)
        }
}

.tmpl_page_mv .tmpl_page_mv_tx {
    margin-top: 3rem;
    max-width: 820px;
    font-size:var(--fs-lead)
}

@media only screen and (max-width: 768px) {
    .tmpl_page_mv .tmpl_page_mv_tx {
            margin-top: 2rem;
            font-size:var(--fs-base)
        }
}

.tmpl_topicpath {
    padding: 15px 0;
    display: flex;
    justify-content: flex-start;
    align-items: flex-start;
    font-size: 1.5rem
}

@media only screen and (max-width: 768px) {
    .tmpl_topicpath {
            padding: 1rem 0;
            font-size: 1.3rem;
            white-space: nowrap;
            overflow-x: scroll;
            overflow-y: hidden
        }
}

.tmpl_topicpath li {
    margin-right: 15px;
    padding-right: 21px;
    position: relative
}

@media only screen and (max-width: 768px) {
    .tmpl_topicpath li {
            margin-right: 1rem;
            padding-right: 1.6rem
        }
}

.tmpl_topicpath li::after {
    content: " ";
    display: block;
    width: 6px;
    height: 12px;
    background: url("../img/common/link_arrow.svg") center no-repeat;
    position: absolute;
    top: 50%;
    right: 0;
    margin-top: -6px
}

.tmpl_topicpath li:last-child {
    margin-right: 0;
    padding-right: 0
}

.tmpl_topicpath li:last-child::after {
    display: none
}

.tmpl_topicpath li a {
    color: var(--c-text);
    text-decoration: none;
    opacity: 1
}

.tmpl_topicpath li a:hover {
    color: var(--c-brand-800)
}

.tmpl_tx_anchor {
    padding: 10px;
    border-radius:var(--r-lg);
    background:var(--c-bg-alt);
    display: flex;
    justify-content: center;
    align-items: flex-start;
    flex-wrap: wrap
}

@media only screen and (max-width: 768px) {
    .tmpl_tx_anchor {
            border-radius:var(--r-sp)
        }
}

.tmpl_tx_anchor li {
    margin: 10px 40px
}

@media only screen and (max-width: 768px) {
    .tmpl_tx_anchor li {
            margin: .5rem 1.5rem
        }
}

.tmpl_tx_anchor li a {
    text-decoration: none
}

.tmpl_tx_anchor li a:hover {
    text-decoration: underline
}

.tmpl_archive_navi {
    display: flex;
    justify-content: flex-start;
    align-items: flex-start;
    flex-wrap: wrap;
    margin: 0 -6px
}

@media only screen and (max-width: 768px) {
    .tmpl_archive_navi {
            margin: 0 -5px
        }
}

.tmpl_archive_navi a {
    min-width: 190px;
    text-align: center;
    margin: 6px;
    padding: 14px;
    border-radius:var(--r-md);
    background-color: var(--c-brand-50);
    color: var(--c-brand-800);
    text-decoration: none
}

@media only screen and (max-width: 768px) {
    .tmpl_archive_navi a {
            margin: 5px;
            min-width: 162px;
            padding: 10px
        }
}

.tmpl_archive_navi a.current {
    background-color: var(--c-brand-800);
    color: var(--c-text-invert);
    font-weight: 700;
    opacity: 1
}

.tmpl_archive_box {
    display: flex;
    justify-content: space-between;
    align-items: flex-start
}

@media only screen and (max-width: 768px) {
    .tmpl_archive_box {
            display: block
        }
}

.tmpl_archive_box .tmpl_archive_box_main {
    width: 70%
}

@media only screen and (max-width: 768px) {
    .tmpl_archive_box .tmpl_archive_box_main {
            width: auto;
            margin-bottom: 4rem
        }
}

.tmpl_archive_box .tmpl_archive_box_main .tmpl_section_catch {
    text-align: left
}

.tmpl_archive_box .tmpl_archive_box_main .tmpl_heading2 {
    text-align: left
}

.tmpl_archive_box .tmpl_archive_box_side {
    width: 26.6666666667%
}

@media only screen and (max-width: 768px) {
    .tmpl_archive_box .tmpl_archive_box_side {
            width: auto
        }
}

.tmpl_archive_category .tmpl_archive_category_item {
    padding: 3rem 4rem;
    margin-bottom: 1.5rem;
    background-color: var(--c-brand-50)
}

@media only screen and (max-width: 768px) {
    .tmpl_archive_category .tmpl_archive_category_item {
            padding: 1.5rem 2rem
        }
}

.tmpl_archive_category .tmpl_archive_category_item:last-child {
    margin-bottom: 0
}

.tmpl_archive_category .tmpl_archive_category_item dt {
    margin-bottom: 2rem;
    font-weight: 700;
    color: var(--c-brand-800)
}

@media only screen and (max-width: 768px) {
    .tmpl_archive_category .tmpl_archive_category_item dt {
            margin-bottom: 1.5rem
        }
}

.tmpl_pager {
    margin-top: 4rem
}

@media only screen and (max-width: 768px) {
    .tmpl_pager {
            margin-top: 2.5rem
        }
}

.tmpl_pager .tmpl_pager_btn {
    padding: 0 14rem;
    position: relative;
    display: flex;
    justify-content: center;
    align-items: center;
    font-size:var(--fs-lead);
    flex-wrap: wrap
}

@media only screen and (max-width: 768px) {
    .tmpl_pager .tmpl_pager_btn {
            font-size:var(--fs-base);
            padding: 0 7rem
        }
}

.tmpl_pager .tmpl_pager_btn .tmpl_pager_item {
    margin: 8px;
    width: 60px;
    height: 60px;
    border-radius:var(--r-md);
    border: 1px solid var(--c-brand-800);
    color: var(--c-brand-800);
    font-family: "Montserrat", sans-serif;
    display: flex;
    justify-content: center;
    align-items: center;
    text-decoration: none
}

@media only screen and (max-width: 768px) {
    .tmpl_pager .tmpl_pager_btn .tmpl_pager_item {
            margin: 3px;
            width: 36px;
            height: 36px
        }
}

.tmpl_pager .tmpl_pager_btn .current {
    background-color: var(--c-brand-800);
    color: var(--c-text-invert)
}

.tmpl_pager .tmpl_pager_btn .dot {
    border: 0;
    width: auto
}

.tmpl_pager .tmpl_pager_btn .tmpl_pager_prev,
.tmpl_pager .tmpl_pager_btn .tmpl_pager_next {
    width: 125px;
    height: 60px;
    border-radius:var(--r-md);
    border: 1px solid var(--c-brand-800);
    color: var(--c-brand-800);
    display: flex;
    justify-content: center;
    align-items: center;
    text-decoration: none;
    position: absolute;
    top: 50%;
    transform: translate(0, -50%)
}

@media only screen and (max-width: 768px) {
    .tmpl_pager .tmpl_pager_btn .tmpl_pager_prev,
        .tmpl_pager .tmpl_pager_btn .tmpl_pager_next {
            width: 65px;
            height: 36px
        }
}

.tmpl_pager .tmpl_pager_btn .tmpl_pager_prev span,
.tmpl_pager .tmpl_pager_btn .tmpl_pager_next span {
    position: relative
}

.tmpl_pager .tmpl_pager_btn .tmpl_pager_prev span::before,
.tmpl_pager .tmpl_pager_btn .tmpl_pager_next span::before {
    content: " ";
    display: block;
    width: 12px;
    height: 12px;
    background: url("../img/common/btn_arrrow02.svg") center no-repeat;
    position: absolute;
    top: 50%;
    margin-top: -6px
}

.tmpl_pager .tmpl_pager_btn .tmpl_pager_prev {
    left: 0
}

.tmpl_pager .tmpl_pager_btn .tmpl_pager_prev span {
    padding-left: 25px
}

@media only screen and (max-width: 768px) {
    .tmpl_pager .tmpl_pager_btn .tmpl_pager_prev span {
            padding-left: 16px
        }
}

.tmpl_pager .tmpl_pager_btn .tmpl_pager_prev span::before {
    left: 0;
    transform: scale(-1, 1)
}

.tmpl_pager .tmpl_pager_btn .tmpl_pager_next {
    right: 0
}

.tmpl_pager .tmpl_pager_btn .tmpl_pager_next span {
    padding-right: 25px
}

@media only screen and (max-width: 768px) {
    .tmpl_pager .tmpl_pager_btn .tmpl_pager_next span {
            padding-right: 16px
        }
}

.tmpl_pager .tmpl_pager_btn .tmpl_pager_next span::before {
    right: 0
}

.tmpl_pager .tmpl_pager_number {
    margin-top: 1.5rem;
    text-align: center;
    color: gray;
    font-family: "Montserrat", sans-serif;
    font-size:var(--fs-lead)
}

@media only screen and (max-width: 768px) {
    .tmpl_pager .tmpl_pager_number {
            margin-top: .5rem;
            font-size:var(--fs-base)
        }
}

.tmpl_more_tx {
    font-size: 1.5rem;
    font-weight: 800;
    padding-right: 2rem;
    color: var(--c-brand-800);
    text-align: right;
    background: url("../img/common/btn_arrrow02.svg") right center no-repeat
}

@media only screen and (max-width: 768px) {
    .tmpl_more_tx {
            font-size: 1.3rem
        }
}

.tmpl_category_tx {
    font-size: 1.5rem;
    color: var(--c-brand-800)
}

@media only screen and (max-width: 768px) {
    .tmpl_category_tx {
            font-size: 1.3rem
        }
}

.tmpl_link-arrow {
    display: inline-block
}

.tmpl_link-arrow::after {
    content: " ";
    display: inline-block;
    margin-left: .8rem;
    width: 11px;
    height: 11px;
    background: url("../img/common/btn_arrrow02.svg") center no-repeat
}

.tmpl_link-archive {
    display: block;
    opacity: 1 !important;
    text-decoration: none;
    padding: 1.5rem 2rem 1.5rem 0;
    border-bottom: 1px solid var(--c-border);
    position: relative;
    font-size: 1.5rem;
    line-height: 1.4;
    color: var(--c-text) !important
}

@media only screen and (max-width: 768px) {
    .tmpl_link-archive {
            font-size: 1.3rem
        }
}

.tmpl_link-archive:hover {
    color: var(--c-brand-800) !important
}

.tmpl_link-archive::after {
    content: " ";
    display: block;
    width: 12px;
    height: 12px;
    background: url("../img/common/btn_arrrow02.svg") center no-repeat;
    position: absolute;
    top: 50%;
    margin-top: -6px;
    right: .5rem
}

.tmpl_link-archive:first-child {
    border-top: 1px solid var(--c-border)
}

.tmpl_link-tag {
    display: flex;
    justify-content: flex-start;
    align-items: flex-start;
    flex-wrap: wrap;
    margin-left: -5px;
    margin-right: -5px
}

.tmpl_link-tag a {
    margin: 0 0 5px 5px;
    padding: .5rem .8rem;
    border: 1px solid var(--c-brand-800);
    color: var(--c-brand-800);
    text-decoration: none;
    opacity: 1;
    font-size: 1.5rem
}

@media only screen and (max-width: 768px) {
    .tmpl_link-tag a {
            font-size: 1.3rem
        }
}

.tmpl_link-tag a:hover {
    background-color: var(--c-brand-800);
    color: var(--c-text-invert)
}

.tmpl_btn {
    font-size:var(--fs-lead)
}

@media only screen and (max-width: 768px) {
    .tmpl_btn {
            font-size:var(--fs-base)
        }
}

.tmpl_btn a {
    display: inline-block;
    padding: 15px 40px;
    min-width: 320px;
    border: 1px solid var(--c-brand-800);
    border-radius:var(--r-md);
    background-color: var(--c-brand-800);
    color: var(--c-text-invert);
    text-decoration: none;
    text-align: center;
    position: relative
}

@media only screen and (max-width: 768px) {
    .tmpl_btn a {
            padding: 1.3rem 3rem
        }
}

.tmpl_btn a::after {
    content: " ";
    display: block;
    width: 12px;
    height: 12px;
    background: url("../img/common/btn_arrrow01.svg") center no-repeat;
    position: absolute;
    top: 50%;
    right: 24px;
    margin-top: -6px
}

@media only screen and (max-width: 768px) {
    .tmpl_btn a::after {
            right: 1.4rem
        }
}

.tmpl_btn.tmpl_btn_secondary a {
    background-color: var(--c-brand-50);
    color: var(--c-brand-800)
}

.tmpl_btn.tmpl_btn_secondary a::after {
    background-image: url("../img/common/btn_arrrow02.svg")
}

.tmpl_btn.tmpl_btn_third a {
    border-color: var(--c-brand-300);
    background-color: var(--c-brand-300)
}

.tmpl_btn.tmpl_btn_ghost a {
    background-color: var(--c-text-invert);
    color: var(--c-brand-800)
}

.tmpl_btn.tmpl_btn_ghost a::after {
    background-image: url("../img/common/btn_arrrow02.svg")
}

.tmpl_btn.tmpl_btn--small {
    font-size:var(--fs-base)
}

@media only screen and (max-width: 768px) {
    .tmpl_btn.tmpl_btn--small {
            font-size:var(--fs-small)
        }
}

.tmpl_btn.tmpl_btn--small a {
    padding: 12px 40px;
    min-width: 240px
}

@media only screen and (max-width: 768px) {
    .tmpl_btn.tmpl_btn--small a {
            padding: 1rem 3rem
        }
}

.tmpl_btn.tmpl_btn--large {
    font-size:var(--fs-h4)
}

@media only screen and (max-width: 768px) {
    .tmpl_btn.tmpl_btn--large {
            font-size:var(--fs-lead)
        }
}

.tmpl_btn.tmpl_btn--large a {
    padding: 22px 40px;
    min-width: 400px
}

@media only screen and (max-width: 768px) {
    .tmpl_btn.tmpl_btn--large a {
            padding: 2rem 3rem;
            min-width: inherit;
            width: 100%
        }
}

.tmpl_style_card {
    display: block;
    text-decoration: none;
    opacity: 1;
    color: var(--c-text);
    border: 1px solid var(--c-brand-800);
    border-radius: 15px;
    overflow: hidden;
    background-color: var(--c-text-invert);
    box-shadow: 3px 3px 0 rgba(55, 152, 96, .1)
}

.tmpl_style_card:has(.tmpl_thum) {
    background-color: var(--c-brand-50)
}

@media only screen and (max-width: 768px) {
    .tmpl_style_card {
            border-radius:var(--r-sp)
        }
}

.tmpl_style_card .tmpl_thum {
    border-bottom: 1px solid var(--c-brand-800);
    overflow: hidden
}

.tmpl_style_card .tmpl_thum::after {
    padding-bottom: 63.2275132275%
}

.tmpl_style_card .tmpl_thum img {
    transition: all .3s ease-out
}

.tmpl_style_card .tmpl_style_card_textbody {
    padding: 3rem
}

@media only screen and (max-width: 768px) {
    .tmpl_style_card .tmpl_style_card_textbody {
            padding: 1.5rem 2rem
        }
}

.tmpl_style_card .tmpl_style_card_textbody p {
    margin: 0;
    color: var(--c-text)
}

.tmpl_style_card .tmpl_style_card_textbody .tmpl_category_tx {
    margin-bottom: .5rem;
    color: var(--c-brand-800)
}

.tmpl_style_card .tmpl_style_card_textbody .tmpl_heading3 {
    color: var(--c-text);
    margin-bottom: 1rem
}

.tmpl_style_card .tmpl_style_card_textbody .tmpl_more_tx {
    margin-top: 2.5rem
}

@media only screen and (max-width: 768px) {
    .tmpl_style_card .tmpl_style_card_textbody .tmpl_more_tx {
            margin-top: 1.5rem
        }
}

.tmpl_style_largecard {
    display: flex;
    justify-content: flex-start;
    align-items: stretch;
    text-decoration: none;
    opacity: 1;
    color: var(--c-text);
    border: 1px solid var(--c-brand-800);
    border-radius: 15px;
    overflow: hidden;
    background-color: var(--c-text-invert);
    box-shadow: 3px 3px 0 rgba(55, 152, 96, .1)
}

.tmpl_style_largecard:nth-of-type(2n) .tmpl_thum {
    order: 2
}

.tmpl_style_largecard:nth-of-type(2n) .tmpl_style_largecard_textbody {
    order: 1
}

@media only screen and (max-width: 768px) {
    .tmpl_style_largecard {
            border-radius:var(--r-sp);
            display: block
        }
}

.tmpl_style_largecard .tmpl_thum {
    width: 31.5%;
    overflow: hidden
}

@media only screen and (max-width: 768px) {
    .tmpl_style_largecard .tmpl_thum {
            width: auto
        }
}

.tmpl_style_largecard .tmpl_thum::after {
    padding-bottom: 63.2275132275%
}

.tmpl_style_largecard .tmpl_thum img {
    transition: all .3s ease-out
}

.tmpl_style_largecard .tmpl_style_largecard_textbody {
    width: 68.5%;
    padding: 4.5rem 5rem
}

@media only screen and (max-width: 768px) {
    .tmpl_style_largecard .tmpl_style_largecard_textbody {
            width: auto;
            padding: 1.5rem 2rem
        }
}

.tmpl_style_largecard .tmpl_style_largecard_textbody p {
    margin: 0;
    color: var(--c-text)
}

.tmpl_style_largecard .tmpl_style_largecard_textbody .tmpl_section_catch {
    margin-bottom: .8rem;
    font-size:var(--fs-lead);
    color: var(--c-brand-800);
    text-align: left
}

@media only screen and (max-width: 768px) {
    .tmpl_style_largecard .tmpl_style_largecard_textbody .tmpl_section_catch {
            font-size:var(--fs-small);
            margin-bottom: .5rem
        }
}

.tmpl_style_largecard .tmpl_style_largecard_textbody .tmpl_heading3 {
    color: var(--c-text)
}

@media only screen and (max-width: 768px) {
    .tmpl_style_largecard .tmpl_style_largecard_textbody .tmpl_heading3 {
            margin-bottom: 1rem
        }
}

.tmpl_style_largecard .tmpl_style_largecard_textbody .tmpl_heading3+p {
    padding-right: 17.5rem
}

@media only screen and (max-width: 768px) {
    .tmpl_style_largecard .tmpl_style_largecard_textbody .tmpl_heading3+p {
            padding-right: 0
        }
}

.tmpl_style_largecard .tmpl_style_largecard_textbody .tmpl_more_tx {
    margin-top: -2.5rem
}

@media only screen and (max-width: 768px) {
    .tmpl_style_largecard .tmpl_style_largecard_textbody .tmpl_more_tx {
            margin-top: 1.5rem
        }
}

.tmpl_style_largecard+.tmpl_style_largecard {
    margin-top: 3rem
}

@media only screen and (max-width: 768px) {
    .tmpl_style_largecard+.tmpl_style_largecard {
            margin-top: 2rem
        }
}

.tmpl_style_imgbox {
    display: block;
    text-decoration: none;
    opacity: 1;
    color: var(--c-text);
    overflow: hidden
}

.tmpl_style_imgbox .tmpl_thum::after {
    padding-bottom: 61.9444444444%
}

.tmpl_style_imgbox .tmpl_thum img {
    border-radius:var(--r-lg)
}

@media only screen and (max-width: 768px) {
    .tmpl_style_imgbox .tmpl_thum img {
            border-radius:var(--r-sp)
        }
}

.tmpl_style_imgbox .tmpl_style_imgbox_textbody {
    margin-top: 2rem
}

@media only screen and (max-width: 768px) {
    .tmpl_style_imgbox .tmpl_style_imgbox_textbody {
            margin-top: .8rem
        }
}

.tmpl_style_imgbox .tmpl_style_imgbox_textbody p {
    margin: 0
}

.tmpl_style_imgbox .tmpl_style_imgbox_textbody .tmpl_heading4 {
    color: var(--c-brand-800);
    margin-bottom: 1rem
}


/* ==========================================================================
   お役立ち情報カード (tmpl_style_info_card)
   ---------------------------------------------------------------------------
   元HTML (ccd/css/parts.css) の仕様に準拠。
   .sec_info_list 内で縦積み、各カードは flex横並び (サムネ左41.59% + 本文右53.09%)。
   ========================================================================== */

.tmpl_style_info_card {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    padding: 22px;
    border: 2px solid var(--c-bg);
    border-radius: var(--r-lg);
    background-color: var(--c-bg);
    box-shadow: 3px 3px 0 rgba(55, 152, 96, .1);
    text-decoration: none;
    color: var(--c-text);
}

@media only screen and (max-width: 768px) {
    .tmpl_style_info_card {
        padding: .5rem;
        border-radius: var(--r-sp);
    }
}

.tmpl_style_info_card .tmpl_thum {
    width: 41.592920354%;
}

@media only screen and (max-width: 768px) {
    .tmpl_style_info_card .tmpl_thum {
        width: auto;
        flex: 0 0 100px;
        margin-right: 1.5rem;
    }
}

.tmpl_style_info_card .tmpl_thum::after {
    padding-bottom: 70.7446808511%;
}

.tmpl_style_info_card .tmpl_thum img {
    border-radius: 8px;
}

.tmpl_style_info_card .tmpl_style_info_card_textbody {
    width: 53.0973451327%;
}

@media only screen and (max-width: 768px) {
    .tmpl_style_info_card .tmpl_style_info_card_textbody {
        width: auto;
        flex: 1 1 100%;
        max-width: 100%;
    }
}

.tmpl_style_info_card .tmpl_style_info_card_textbody .tmpl_style_info_card_category {
    margin-bottom: .5rem;
    display: inline-block;
    padding: 3px 8px;
    border-radius: var(--r-sm);
    background-color: var(--c-brand-50);
    font-size: 1.4rem;
}

@media only screen and (max-width: 768px) {
    .tmpl_style_info_card .tmpl_style_info_card_textbody .tmpl_style_info_card_category {
        font-size: 1.2rem;
    }
}

.tmpl_style_info_card .tmpl_style_info_card_textbody p {
    margin: 0;
}

.tmpl_style_info_card .tmpl_style_info_card_textbody .tmpl_style_info_card_heading {
    margin: 0;
    font-size: 1.6rem;
    font-weight: 700;
    line-height: 1.4;
    color: var(--c-brand-800);
}

@media only screen and (max-width: 768px) {
    .tmpl_style_info_card .tmpl_style_info_card_textbody .tmpl_style_info_card_heading {
        font-size: 1.5rem;
    }
}

.tmpl_style_info_card .tmpl_style_info_card_textbody .tmpl_style_info_card_tx {
    margin-top: .5rem;
    font-size: 1.5rem;
    color: var(--c-text);
    line-height: 1.4;
    -webkit-line-clamp: 2;
    display: -webkit-box;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

@media only screen and (max-width: 768px) {
    .tmpl_style_info_card .tmpl_style_info_card_textbody .tmpl_style_info_card_tx {
        font-size: 1.3rem;
    }
}

a.tmpl_style_info_card:hover {
    border-color: var(--c-brand-800);
}


.tmpl_cta-contact {
    margin-top: 8rem;
    padding: 1px 60px 65px;
    border-radius:var(--r-xl);
    background-color: var(--c-brand-800);
    color: var(--c-text-invert)
}

@media only screen and (max-width: 768px) {
    .tmpl_cta-contact {
            padding: 1px 20px 20px
        }
}

.tmpl_cta-contact h2 {
    text-align: center;
    margin-top: -8rem
}

.tmpl_cta-contact .tmpl_cta-flow {
    margin: 3rem 0 4rem;
    border: 1px solid var(--c-text-invert);
    background-color: var(--c-text-invert)
}

.tmpl_cta-contact .tmpl_cta-flow .tmpl_cta-flow_item {
    background-color: var(--c-brand-800)
}

.tmpl_cta-contact .tmpl_cta-flow .tmpl_cta-flow_item .tmpl_cta-flow_number {
    color: var(--c-warning)
}

.tmpl_cta-contact .tmpl_cta-flow .tmpl_cta-flow_item h4 {
    color: var(--c-text-invert)
}

.tmpl_cta-flow {
    margin-top: 20px;
    display: flex;
    width: 100%;
    border: 1px solid var(--c-brand-800);
    background-color: var(--c-brand-800);
    border-radius:var(--r-lg);
    overflow: hidden
}

@media only screen and (max-width: 768px) {
    .tmpl_cta-flow {
            display: block;
            border-radius:var(--r-sp)
        }
}

.tmpl_cta-flow .tmpl_cta-flow_item {
    background-color: var(--c-text-invert);
    flex: 1;
    position: relative;
    padding: 30px 40px 30px 60px;
    clip-path: polygon(0 0, calc(100% - 40px) 0, 100% 50%, calc(100% - 40px) 100%, 0 100%, 40px 50%);
    margin-left: -20px;
    margin-right: -19px;
    position: relative
}

@media only screen and (max-width: 768px) {
    .tmpl_cta-flow .tmpl_cta-flow_item {
            margin: -19px 0 0 0;
            padding: 35px 20px 30px 50px;
            clip-path: polygon(0 0, 50% 20px, 100% 0, 100% calc(100% - 20px), 50% 100%, 0 calc(100% - 20px))
        }
}

.tmpl_cta-flow .tmpl_cta-flow_item:first-child {
    padding-left: 50px;
    clip-path: polygon(0 0, calc(100% - 40px) 0, 100% 50%, calc(100% - 40px) 100%, 0 100%)
}

@media only screen and (max-width: 768px) {
    .tmpl_cta-flow .tmpl_cta-flow_item:first-child {
            margin-top: 0;
            padding: 20px 20px 30px 50px;
            clip-path: polygon(0 0, 100% 0, 100% calc(100% - 20px), 50% 100%, 0 calc(100% - 20px))
        }
    .tmpl_cta-flow .tmpl_cta-flow_item:first-child .tmpl_cta-flow_number {
            top: 17px
        }
}

.tmpl_cta-flow .tmpl_cta-flow_item:last-child {
    clip-path: polygon(0 0, 100% 0, 100% 100%, 0 100%, 40px 50%)
}

@media only screen and (max-width: 768px) {
    .tmpl_cta-flow .tmpl_cta-flow_item:last-child {
            padding: 35px 20px 20px 50px;
            clip-path: polygon(0 0, 50% 20px, 100% 0, 100% 100%, 0 100%)
        }
}

.tmpl_cta-flow .tmpl_cta-flow_item p {
    margin: 0
}

.tmpl_cta-flow .tmpl_cta-flow_item .tmpl_cta-flow_number {
    margin-bottom: .5rem;
    font-family: "Montserrat", sans-serif;
    font-size:var(--fs-h2);
    font-weight: 700;
    line-height: 1.1;
    color: var(--c-brand-800)
}

@media only screen and (max-width: 768px) {
    .tmpl_cta-flow .tmpl_cta-flow_item .tmpl_cta-flow_number {
            font-size:var(--fs-h3);
            position: absolute;
            top: 32px;
            left: 20px;
            margin: 0
        }
}

.tmpl_cta-flow .tmpl_cta-flow_item h4 {
    margin-bottom: 1rem;
    color: var(--c-brand-800)
}

@media only screen and (max-width: 768px) {
    .tmpl_cta-flow .tmpl_cta-flow_item h4 {
            margin-bottom: .8rem
        }
}

.tmpl_cta {
    padding: 65px 0;
    position: relative;
    z-index: 1;
    text-align: center;
    color: var(--c-text-invert)
}

@media only screen and (max-width: 768px) {
    .tmpl_cta {
            padding: 4rem 0
        }
}

.tmpl_cta::before {
    content: " ";
    display: block;
    width: 100svw;
    height: 100%;
    position: absolute;
    top: 0;
    left: 50%;
    margin-left: -50svw;
    background: url("../img/common/cta_bg.jpg") center/cover no-repeat;
    z-index: -1
}

.tmpl_cta .tmpl_cta_inner {
    padding: 60px 20px;
    border: 1px solid var(--c-text-invert);
    border-radius:var(--r-lg)
}

@media only screen and (max-width: 768px) {
    .tmpl_cta .tmpl_cta_inner {
            padding: 3rem 2rem
        }
}

.tmpl_cta .tmpl_columns--btns {
    margin-top: 4.5rem;
    justify-content: center
}

@media only screen and (max-width: 768px) {
    .tmpl_cta .tmpl_columns--btns {
            margin-top: 3rem
        }
}

.tmpl_cta .tmpl_columns--btns .tmpl_btn {
    margin: 0 3rem 0 0
}

@media only screen and (max-width: 768px) {
    .tmpl_cta .tmpl_columns--btns .tmpl_btn {
            margin: 0 0 1.5rem
        }
}

.tmpl_cta .tmpl_columns--btns .tmpl_btn:last-child {
    margin-right: 0
}

@media only screen and (max-width: 768px) {
    .tmpl_cta .tmpl_columns--btns .tmpl_btn:last-child {
            margin-bottom: 0
        }
}

.tmpl_news_list .tmpl_news_item {
    display: flex;
    flex-wrap: wrap;
    padding: 40px 40px 40px 0;
    border-bottom: 1px solid var(--c-border);
    text-decoration: none;
    background: url("../img/common/btn_arrrow02.svg") right 15px center no-repeat;
    color: var(--c-text);
    opacity: 1
}

@media only screen and (max-width: 768px) {
    .tmpl_news_list .tmpl_news_item {
            padding: 1.5rem 3rem 1.5rem 0;
            background: url("../img/common/btn_arrrow02.svg") right 5px center no-repeat
        }
}

.tmpl_news_list .tmpl_news_item:first-child {
    border-top: 1px solid var(--c-border)
}

.tmpl_news_list .tmpl_news_item:hover {
    background-color: var(--c-brand-50)
}

.tmpl_news_list .tmpl_news_item p {
    margin: 0
}

.tmpl_news_list .tmpl_news_item .tmpl_news_item_date {
    margin-right: 1.5rem;
    font-family: "Montserrat", sans-serif;
    font-size: 1.5rem;
    color:var(--c-text-subtle)
}

@media only screen and (max-width: 768px) {
    .tmpl_news_list .tmpl_news_item .tmpl_news_item_date {
            font-size: 1.3rem
        }
}

.tmpl_news_list .tmpl_news_item .tmpl_news_item_category {
    font-size: 1.5rem;
    color: var(--c-brand-800)
}

@media only screen and (max-width: 768px) {
    .tmpl_news_list .tmpl_news_item .tmpl_news_item_category {
            font-size: 1.3rem
        }
}

.tmpl_news_list .tmpl_news_item .tmpl_news_item_heading {
    margin-top: .8rem;
    font-weight: 700
}

.tmpl_faq_item {
    border: 1px solid var(--c-brand-800);
    border-radius:var(--r-lg);
    background-color: var(--c-text-invert);
    box-shadow: 3px 3px 0 rgba(55, 152, 96, .1);
    overflow: hidden
}

@media only screen and (max-width: 768px) {
    .tmpl_faq_item {
            border-radius:var(--r-sp)
        }
}

.tmpl_faq_item .tmpl_faq_question {
    cursor: pointer;
    padding: 1.2rem 3rem;
    padding-right: 5.5rem;
    font-size:var(--fs-h4);
    font-weight: 700;
    position: relative
}

@media only screen and (max-width: 768px) {
    .tmpl_faq_item .tmpl_faq_question {
            padding: .5rem 2rem;
            padding-right: 3.5rem;
            font-size:var(--fs-lead)
        }
}

.tmpl_faq_item .tmpl_faq_question::before,
.tmpl_faq_item .tmpl_faq_question::after {
    content: " ";
    display: block;
    position: absolute;
    top: 50%;
    background-color: var(--c-brand-800)
}

.tmpl_faq_item .tmpl_faq_question::before {
    width: 16px;
    height: 1px;
    right: 3rem
}

@media only screen and (max-width: 768px) {
    .tmpl_faq_item .tmpl_faq_question::before {
            right: 1.5rem
        }
}

.tmpl_faq_item .tmpl_faq_question::after {
    width: 1px;
    height: 16px;
    margin-top: -0.8rem;
    right: 3.7rem
}

@media only screen and (max-width: 768px) {
    .tmpl_faq_item .tmpl_faq_question::after {
            right: 2.2rem
        }
}

.tmpl_faq_item .tmpl_faq_question.is-opened::after {
    display: none
}

.tmpl_faq_item .tmpl_faq_answer {
    border-top: 1px solid var(--c-brand-800);
    padding: 1.8rem 3rem;
    font-size:var(--fs-lead);
    background-color: var(--c-brand-50);
    display: none
}

@media only screen and (max-width: 768px) {
    .tmpl_faq_item .tmpl_faq_answer {
            padding: 1rem 2rem;
            font-size:var(--fs-base)
        }
}

.tmpl_faq_item+.tmpl_faq_item {
    margin-top: 2.5rem
}

@media only screen and (max-width: 768px) {
    .tmpl_faq_item+.tmpl_faq_item {
            margin-top: 1.5rem
        }
}

.tmpl_required {
    display: inline-block;
    font-size:var(--fs-caption);
    color: var(--c-error)
}

.tmpl_form {
    margin-top: 5rem;
    padding: 9rem 2rem 6rem;
    border-radius:var(--r-lg);
    background-color: var(--c-text-invert);
    box-shadow: 3px 3px 0 rgba(55, 152, 96, .1);
    position: relative;
    z-index: 1
}

@media only screen and (max-width: 768px) {
    .tmpl_form {
            margin-top: 13rem
        }
}

/* form_illust01 / form_illust02 の左右イラスト装飾は削除
   ::before/::after で top:-117px に絶対配置されていたが、
   フォーム直前のリード文・段落と重なって読みづらいため除去 */

@media only screen and (max-width: 768px) {
    .tmpl_form {
            padding: 2rem 2rem 3rem
        }
}

.tmpl_form .tmpl_form_item {
    max-width: 843px;
    margin: 0 auto;
    padding: 12px 0;
    display: flex;
    justify-content: flex-start;
    align-items: flex-start
}

@media only screen and (max-width: 768px) {
    .tmpl_form .tmpl_form_item {
            padding: 1rem 0;
            display: block
        }
}

.tmpl_form .tmpl_form_item:has(.tmpl_form_checkbox) .tmpl_form_heading {
    margin-top: 0
}

.tmpl_form .tmpl_form_item .tmpl_form_heading {
    margin: 15px 0 0;
    flex: 0 0 250px;
    font-size:var(--fs-lead);
    font-weight: 700
}

@media only screen and (max-width: 768px) {
    .tmpl_form .tmpl_form_item .tmpl_form_heading {
            margin: 0 0 1rem;
            font-size:var(--fs-base)
        }
}

.tmpl_form .tmpl_form_item .tmpl_form_heading .tmpl_required {
    margin-left: 1rem
}

.tmpl_form .tmpl_form_item .tmpl_form_field {
    flex: 1 1 100%;
    max-width: 100%
}

.tmpl_form .tmpl_form_privacy {
    margin-top: 1.5rem;
    text-align: center;
    font-size:var(--fs-lead);
    font-weight: 700
}

@media only screen and (max-width: 768px) {
    .tmpl_form .tmpl_form_privacy {
            font-size:var(--fs-base)
        }
}

.tmpl_form .tmpl_form_submit {
    margin-top: 3rem;
    text-align: center
}

@media only screen and (max-width: 768px) {
    .tmpl_form .tmpl_form_submit {
            margin-top: 2.5rem
        }
}

.tmpl_form_checkbox {
    display: flex;
    justify-content: flex-start;
    align-items: flex-start;
    flex-wrap: wrap
}

@media only screen and (max-width: 768px) {
    .tmpl_form_checkbox {
            display: block
        }
}

.tmpl_form_checkbox>* {
    margin: 0 30px 20px 0;
    min-width: 205px
}

@media only screen and (max-width: 768px) {
    .tmpl_form_checkbox>* {
            display: block;
            margin: 0 0 1rem 0
        }
    .tmpl_form_checkbox>*:last-child {
            margin-bottom: 0
        }
}

.tmpl_table-scrollable tr th,
.tmpl_table-scrollable tr td {
    white-space: nowrap
}

.tmpl_numbers_list {
    display: flex;
    justify-content: flex-start;
    align-items: stretch;
    flex-wrap: wrap
}

.tmpl_numbers_list .tmpl_numbers_item {
    padding: 4.5rem 2rem 5rem;
    border-radius:var(--r-lg);
    background-color: var(--c-text-invert);
    box-shadow: 3px 3px 0 rgba(55, 152, 96, .1);
    text-align: center
}

@media only screen and (min-width: 769px) {
    .tmpl_numbers_list .tmpl_numbers_item {
            width: 31.6666666667%;
            margin: 30px 2.5% 0 0
        }
    .tmpl_numbers_list .tmpl_numbers_item:nth-child(-n/**/+3) {
            margin-top: 0
        }
    .tmpl_numbers_list .tmpl_numbers_item:nth-child(3n) {
            margin-right: 0
        }
}

@media only screen and (max-width: 768px) {
    .tmpl_numbers_list .tmpl_numbers_item {
            width: 48%;
            margin: 1.5rem 4% 0 0;
            padding: 2.5rem 1rem
        }
    .tmpl_numbers_list .tmpl_numbers_item:nth-child(-n/**/+2) {
            margin-top: 0
        }
    .tmpl_numbers_list .tmpl_numbers_item:nth-child(2n) {
            margin-right: 0
        }
}

.tmpl_numbers_list .tmpl_numbers_item p {
    margin: 0
}

.tmpl_numbers_list .tmpl_numbers_item .tmpl_numbers_heading {
    margin-bottom: 2.5rem;
    font-size:var(--fs-h3);
    font-weight: 700;
    line-height: 1.4
}

@media only screen and (max-width: 768px) {
    .tmpl_numbers_list .tmpl_numbers_item .tmpl_numbers_heading {
            margin-bottom: 1.5rem;
            font-size:var(--fs-base)
        }
}

.tmpl_numbers_list .tmpl_numbers_item .tmpl_numbers_text {
    color: var(--c-brand-800);
    display: flex;
    justify-content: center;
    align-items: flex-end;
    line-height: 1.3;
    font-size:var(--fs-h3);
    font-weight: 700
}

@media only screen and (max-width: 768px) {
    .tmpl_numbers_list .tmpl_numbers_item .tmpl_numbers_text {
            font-size:var(--fs-base)
        }
}

.tmpl_numbers_list .tmpl_numbers_item .tmpl_numbers_text .tmpl_numbers_tx {
    margin-right: .5rem;
    font-family: "Montserrat", sans-serif;
    font-size: 8rem;
    white-space: nowrap;
    line-height: .7
}

@media only screen and (max-width: 768px) {
    .tmpl_numbers_list .tmpl_numbers_item .tmpl_numbers_text .tmpl_numbers_tx {
            font-size:var(--fs-mv)
        }
}

.tmpl_pagetop {
    position: fixed;
    bottom: 100px;
    right: 20px;
    z-index: 10;
    visibility: hidden;
    opacity: 0;
    transition: all .3s ease-out
}

@media only screen and (max-width: 768px) {
    .tmpl_pagetop {
            bottom: 60px;
            right: 10px
        }
}

/* ============================================================
   tmpl_card: カードラッパー（Gutenberg groupブロック対応）
   ============================================================ */
.tmpl_card {
    display: block;
    height: 100%;
}

/* ============================================================
   非推奨HTML代替
   ============================================================ */
.tmpl_btn_center {
    text-align: center;
}

.tmpl_td_highlight {
    background-color: var(--c-brand-50);
}


/* ==========================================================================
   Table (汎用)
   ========================================================================== */
/* Table (汎用テーブル装飾) */
table {
    border: 1px solid var(--c-brand-800);
    border-spacing: 0;
    border-collapse: separate;
    min-width: 100%
}

table tr th {
    padding: 14px 24px;
    border-right: 1px solid var(--c-border);
    border-bottom: 1px solid var(--c-border);
    vertical-align: middle;
    font-size:var(--fs-lead);
    font-weight: 700;
    background-color: var(--c-brand-50);
    color: var(--c-brand-800);
    text-align: left
}

@media only screen and (max-width: 768px) {
    table tr th {
        padding: .9rem 1.4rem;
        font-size:var(--fs-base)
    }
}

table tr th:last-child {
    border-right: 0
}

table tr td {
    padding: 14px 24px;
    border-right: 1px solid var(--c-border);
    border-bottom: 1px solid var(--c-border);
    vertical-align: middle
}

@media only screen and (max-width: 768px) {
    table tr td {
        padding: .9rem 1.4rem
    }
}

table tr td:last-child {
    border-right: 0
}

table tr:last-child th,
table tr:last-child td {
    border-bottom: 0
}

table thead tr th {
    background-color: var(--c-brand-800);
    color: var(--c-text-invert)
}

/* ==========================================================================
   components.css への追加分
   ---------------------------------------------------------------------------
   既存の components.css の末尾にこの内容を追記してください。
   ========================================================================== */


/* ==========================================================================
   記事詳細共通 (.tmpl_single_article / .tmpl_single_body)
   ---------------------------------------------------------------------------
   single.php で使用する記事本文のラッパー・見出しサイズなど
   ========================================================================== */

.tmpl_single_article {
    margin-bottom: 8rem;
}

@media only screen and (max-width: 768px) {
    .tmpl_single_article {
        margin-bottom: 4rem;
    }
}

.tmpl_single_date {
    font-family: var(--ff-num);
    font-size: var(--fs-base);
    color: var(--c-text-muted);
    margin-bottom: 2rem;
}

.tmpl_single_body {
    font-size: var(--fs-base);
    line-height: 1.9;
}

/* ----------------------------------------------------------
   本文内の見出し
   ----------------------------------------------------------
   h2: 大見出し（緑左線 + 薄緑背景） 章区切り用
   h3: 中見出し（左に緑アクセント + 下線） セクション見出し用
   h4: 小見出し（緑丸ポチ + インラインアクセント） 小トピック用
   ---------------------------------------------------------- */

.tmpl_single_body h2 {
    font-size: 2.6rem;
    font-weight: var(--fw-bold);
    padding: 1.8rem 2rem 1.8rem 2.5rem;
    margin: 6rem 0 3rem;
    background-color: var(--c-brand-50);
    border-left: 5px solid var(--c-brand-800);
    line-height: 1.5;
}

@media only screen and (max-width: 768px) {
    .tmpl_single_body h2 {
        font-size: 2.1rem;
        padding: 1.3rem 1.5rem 1.3rem 1.8rem;
        margin: 4rem 0 2rem;
    }
}

.tmpl_single_body h3 {
    position: relative;
    font-size: 2.2rem;
    font-weight: var(--fw-bold);
    margin: 5rem 0 2.5rem;
    padding: 0.5rem 0 1rem 2rem;
    border-bottom: 2px solid var(--c-brand-800);
    line-height: 1.5;
}

.tmpl_single_body h3::before {
    content: "";
    position: absolute;
    top: 0.8rem;
    bottom: 1.3rem;
    left: 0;
    width: 5px;
    background-color: var(--c-brand-800);
}

@media only screen and (max-width: 768px) {
    .tmpl_single_body h3 {
        font-size: 1.8rem;
        margin: 3.5rem 0 1.8rem;
        padding: 0.3rem 0 0.8rem 1.5rem;
    }
}

.tmpl_single_body h4 {
    position: relative;
    font-size: 1.9rem;
    font-weight: var(--fw-bold);
    margin: 4rem 0 1.8rem;
    padding-left: 2rem;
    line-height: 1.5;
    color: var(--c-brand-900);
}

.tmpl_single_body h4::before {
    content: "";
    position: absolute;
    top: 0.9rem;
    left: 0;
    width: 1rem;
    height: 1rem;
    background-color: var(--c-brand-800);
    border-radius: 50%;
}

@media only screen and (max-width: 768px) {
    .tmpl_single_body h4 {
        font-size: 1.7rem;
        margin: 3rem 0 1.4rem;
        padding-left: 1.6rem;
    }

    .tmpl_single_body h4::before {
        top: 0.7rem;
        width: 0.8rem;
        height: 0.8rem;
    }
}

/* 本文の段落 */
.tmpl_single_body p {
    margin-bottom: 2rem;
}

/* 本文内の画像 */
.tmpl_single_body img {
    max-width: 100%;
    height: auto;
    margin: 2rem 0;
}

/* リスト */
.tmpl_single_body ul,
.tmpl_single_body ol {
    margin: 2rem 0;
    padding-left: 3rem;
}

.tmpl_single_body ul li {
    list-style: disc;
    margin-bottom: 0.5rem;
}

.tmpl_single_body ol li {
    list-style: decimal;
    margin-bottom: 0.5rem;
}

/* 本文内のリンク */
.tmpl_single_body a {
    color: var(--c-brand-800);
    text-decoration: underline;
}


/* ==========================================================================
   著者ボックス (.tmpl_author_box)
   ---------------------------------------------------------------------------
   記事末尾に表示される執筆者情報
   ========================================================================== */

.tmpl_author_box {
    margin-top: 6rem;
    padding: 3rem;
    background-color: var(--c-brand-50);
    border: 1px solid var(--c-line);
}

@media only screen and (max-width: 768px) {
    .tmpl_author_box {
        margin-top: 4rem;
        padding: 2rem;
    }
}

.tmpl_author_box_head {
    display: flex;
    align-items: flex-start;
    gap: 2rem;
}

@media only screen and (max-width: 768px) {
    .tmpl_author_box_head {
        gap: 1.5rem;
    }
}

.tmpl_author_box_image {
    flex: 0 0 80px;
    width: 80px;
    height: 80px;
    overflow: hidden;
    border-radius: 50%;
    background-color: var(--c-bg);
}

@media only screen and (max-width: 768px) {
    .tmpl_author_box_image {
        flex: 0 0 60px;
        width: 60px;
        height: 60px;
    }
}

.tmpl_author_box_image img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.tmpl_author_box_meta {
    flex: 1 1 auto;
}

.tmpl_author_box_label {
    font-size: 1.3rem;
    color: var(--c-text-muted);
    margin: 0 0 0.3rem;
}

.tmpl_author_box_name {
    font-size: 2rem;
    font-weight: var(--fw-bold);
    margin: 0 0 0.3rem;
}

@media only screen and (max-width: 768px) {
    .tmpl_author_box_name {
        font-size: 1.8rem;
    }
}

.tmpl_author_box_name a {
    color: var(--c-text);
    text-decoration: none;
}

.tmpl_author_box_name a:hover {
    text-decoration: underline;
}

.tmpl_author_box_role {
    font-size: 1.4rem;
    color: var(--c-text-muted);
    margin: 0;
}

.tmpl_author_box_detail {
    margin-top: 2rem;
    padding-top: 2rem;
    border-top: 1px solid var(--c-line);
    font-size: 1.5rem;
    line-height: 1.8;
}

.tmpl_author_box_detail p {
    margin: 0;
}


/* ==========================================================================
   記事末尾バナー (.tmpl_post_end_banner)
   ========================================================================== */

.tmpl_post_end_banner {
    margin-top: 5rem;
    text-align: center;
}

@media only screen and (max-width: 768px) {
    .tmpl_post_end_banner {
        margin-top: 3rem;
    }
}

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

.tmpl_post_end_banner a {
    display: inline-block;
}


/* ==========================================================================
   著者プロフィールページ (.tmpl_writer_profile)
   ---------------------------------------------------------------------------
   single-writer.php で使用
   ========================================================================== */

.tmpl_writer_profile {
    margin-top: 4rem;
    padding: 4rem;
    background-color: var(--c-brand-50);
}

@media only screen and (max-width: 768px) {
    .tmpl_writer_profile {
        padding: 2.5rem;
    }
}

.tmpl_writer_profile_head {
    display: flex;
    align-items: center;
    gap: 3rem;
}

@media only screen and (max-width: 768px) {
    .tmpl_writer_profile_head {
        flex-direction: column;
        text-align: center;
        gap: 2rem;
    }
}

.tmpl_writer_profile_image {
    flex: 0 0 160px;
    width: 160px;
    height: 160px;
    overflow: hidden;
    border-radius: 50%;
    background-color: var(--c-bg);
}

@media only screen and (max-width: 768px) {
    .tmpl_writer_profile_image {
        flex: 0 0 120px;
        width: 120px;
        height: 120px;
    }
}

.tmpl_writer_profile_image img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.tmpl_writer_profile_meta {
    flex: 1 1 auto;
}

.tmpl_writer_profile_name {
    font-size: 3rem;
    font-weight: var(--fw-bold);
    margin: 0 0 1rem;
}

@media only screen and (max-width: 768px) {
    .tmpl_writer_profile_name {
        font-size: 2.4rem;
    }
}

.tmpl_writer_profile_role {
    font-size: 1.8rem;
    color: var(--c-brand-800);
    margin: 0;
}

.tmpl_writer_profile_detail {
    margin-top: 3rem;
    padding-top: 3rem;
    border-top: 1px solid var(--c-line);
    font-size: 1.6rem;
    line-height: 1.9;
}

.tmpl_writer_profile_detail p {
    margin: 0;
}


/* ==========================================================================
   著者ページ：執筆記事一覧 (.tmpl_writer_posts)
   ========================================================================== */

.tmpl_writer_posts {
    margin-top: 6rem;
}

@media only screen and (max-width: 768px) {
    .tmpl_writer_posts {
        margin-top: 4rem;
    }
}

.tmpl_writer_posts_count {
    font-size: 1.4rem;
    color: var(--c-text-muted);
    margin-bottom: 3rem;
}

.tmpl_writer_posts_list {
    list-style: none;
    padding: 0;
    margin: 0;
    border-top: 1px solid var(--c-line);
}

.tmpl_writer_posts_item {
    list-style: none;
    border-bottom: 1px solid var(--c-line);
}

.tmpl_writer_posts_item a {
    display: block;
    padding: 2rem 0;
    color: var(--c-text);
    text-decoration: none;
}

.tmpl_writer_posts_date {
    font-family: var(--ff-num);
    font-size: 1.4rem;
    color: var(--c-text-muted);
    margin: 0 0 0.5rem;
}

.tmpl_writer_posts_title {
    font-size: 1.8rem;
    font-weight: var(--fw-medium);
    margin: 0;
    line-height: 1.6;
}

@media only screen and (max-width: 768px) {
    .tmpl_writer_posts_title {
        font-size: 1.6rem;
    }
}

.tmpl_writer_posts_item a:hover .tmpl_writer_posts_title {
    color: var(--c-brand-800);
}


/* ==========================================================================
   前後記事ナビ (.tmpl_pager) - 既存拡張
   ========================================================================== */

.tmpl_pager {
    margin-top: 6rem;
    padding-top: 4rem;
    border-top: 1px solid var(--c-line);
}

@media only screen and (max-width: 768px) {
    .tmpl_pager {
        margin-top: 4rem;
        padding-top: 3rem;
    }
}

.tmpl_pager_btn {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 2rem;
}

@media only screen and (max-width: 768px) {
    .tmpl_pager_btn {
        flex-direction: column;
        gap: 1.5rem;
    }
}

.tmpl_pager_btn a {
    color: var(--c-brand-800);
    text-decoration: none;
    font-size: 1.5rem;
}

.tmpl_pager_btn a:hover {
    text-decoration: underline;
}

/* 「一覧へ」用のボタン(単一投稿ページ single.php) 
   .tmpl_pager_item は数字ページ番号ボタン(60x60)用に既存定義があるため
   専用クラスで分離して競合を回避。 */
.tmpl_pager_back {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 110px;
    padding: 1.4rem 2.4rem;
    border: 1px solid var(--c-brand-800);
    border-radius: var(--r-md);
    color: var(--c-brand-800);
    font-size: 1.6rem;
    font-weight: var(--fw-medium);
    text-decoration: none;
    transition: background var(--dur) var(--ease), color var(--dur) var(--ease);
}

.tmpl_pager_back:hover {
    background: var(--c-brand-800);
    color: var(--c-text-invert);
    text-decoration: none;
}

@media only screen and (max-width: 768px) {
    .tmpl_pager_back {
        min-width: 80px;
        padding: 1rem 1.5rem;
        font-size: 1.4rem;
    }
}


/* ==========================================================================
   目次プラグイン (Table of Contents Plus) カスタマイズ
   ---------------------------------------------------------------------------
   components.css の末尾に追記してください。
   プラグインの #toc_container に対してスタイルを上書きします。
   ========================================================================== */

#toc_container {
    width: 100% !important;
    max-width: 100%;
    margin: 3rem 0 4rem;
    padding: 2.5rem 3rem !important;
    background-color: var(--c-brand-50) !important;
    border: 1px solid var(--c-brand-200) !important;
    border-radius: 0 !important;
}

@media only screen and (max-width: 768px) {
    #toc_container {
        padding: 2rem !important;
    }
}

/* 目次タイトル */
#toc_container .toc_title {
    font-size: 1.8rem !important;
    font-weight: var(--fw-bold) !important;
    text-align: left !important;
    padding-bottom: 1.2rem !important;
    margin-bottom: 1.5rem !important;
    border-bottom: 2px solid var(--c-brand-800);
    color: var(--c-text) !important;
    position: relative;
    padding-left: 2.5rem !important;
}

#toc_container .toc_title::before {
    content: "";
    position: absolute;
    top: 50%;
    left: 0;
    transform: translateY(-80%);
    width: 1.8rem;
    height: 1.8rem;
    background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path fill='%23068e62' d='M3 5h18v2H3zm0 6h18v2H3zm0 6h18v2H3z'/></svg>");
    background-repeat: no-repeat;
    background-size: contain;
}

/* トグルボタン（表示/非表示切替） */
#toc_container .toc_toggle {
    margin-left: 1rem;
    font-size: 1.3rem !important;
    font-weight: normal !important;
}

#toc_container .toc_toggle a {
    color: var(--c-brand-800) !important;
    text-decoration: none !important;
}

#toc_container .toc_toggle a:hover {
    text-decoration: underline !important;
}

/* 目次リスト */
#toc_container .toc_list {
    font-size: 1.5rem;
    line-height: 1.8;
    padding-left: 0 !important;
    margin: 0 !important;
}

@media only screen and (max-width: 768px) {
    #toc_container .toc_list {
        font-size: 1.4rem;
    }
}

/* 目次の各項目 */
#toc_container .toc_list li {
    list-style: none !important;
    margin: 0 !important;
    padding: 0.5rem 0;
}

#toc_container .toc_list li a {
    color: var(--c-text) !important;
    text-decoration: none !important;
    display: inline-block;
    line-height: 1.6;
}

#toc_container .toc_list li a:hover {
    color: var(--c-brand-800) !important;
    text-decoration: underline !important;
}

/* 番号（1. 2. 3.）のスタイリング */
#toc_container .toc_number {
    font-family: var(--ff-num);
    color: var(--c-brand-800);
    font-weight: var(--fw-bold);
    margin-right: 0.6rem;
}

/* ネストした見出し（h3, h4 は少しインデント） */
#toc_container .toc_list ul {
    padding-left: 2rem !important;
    margin: 0 !important;
}

#toc_container .toc_list ul li {
    padding: 0.3rem 0;
}

#toc_container .toc_list ul .toc_number {
    color: var(--c-text-muted);
}
