@charset "utf-8";

/***********************************************************************
ベーススタイル
***********************************************************************/
html,
body {
    font-family: "Noto Sans", sans-serif;
}

html {
    overflow: auto;
    font-size: 62.5%;
}

body {
    font-size: 1.7em;
}

header a:link,
header a:hover,
header a:visited,
footer a:link,
footer a:hover,
footer a:visited {
    text-decoration: none;
    color: inherit;
}

a:hover {
    opacity: 0.7;
}

p {
    margin-bottom: 1.2em;
    line-height: 1.8;
}

strong {
    font-weight: bold;
    color: var(--colorPnk);
}

input,
select,
textarea {
    border: 1px solid #dedede;
    background: #ffeeee;
    border-radius: 3px;
    margin: 0 5px 0 0;
    padding: 5px;
}

input:checked {
    background: #444;
}

input[type='radio'] {
    border-radius: 30px;
}

input[type='radio'],
input[type='checkbox'] {
    vertical-align: middle;
}

input[type='submit'] {
    cursor: pointer;
}

label {
    margin: 0 5px 0 0;
}

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

.taC {
    text-align: center;
    margin: auto;
}

.fs90 {
    font-size: 90%;
}

.fs120 {
    font-size: 120%;
}

.fwB {
    font-weight: 700;
}

/* レスポンシブ
----------------------------------------- */
.under834,
.under820,
.under600 {
    display: none;
}

@media screen and (max-width: 834px) {
    .under834 {
        display: block;
    }

    .over835 {
        display: none;
    }
}

@media screen and (max-width: 820px) {
    .under820 {
        display: block;
    }

    .over821 {
        display: none;
    }
}

@media screen and (max-width: 600px) {
    .under600 {
        display: block;
    }

    .over601 {
        display: none;
    }
}

/* 変数定義
----------------------------------------- */
:root {
    --colorPnk: #d71d63;

}

a {
    text-decoration: none;
}

a:hover {
    text-decoration: none;
}

/***********************************************************************
ヘッダー
***********************************************************************/
header {
    width: 100%;
    max-width: 1660px;
    height: 100px;
    display: flex;
    justify-content: space-between;
}

header .logo {
    width: 380px;
    height: 100%;
    background-image: linear-gradient(0deg, #0a54ea 20%, #013ebc);

}

header .logo a {
    width: 100%;
    height: 100%;
    color: #fff;
    font: 700 28px/1.3 "Shippori Mincho", serif;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
}

header .logo a span {
    text-align: left;
}

header .logo a span.sub_txt {
    display: block;
    margin-bottom: 10px;
    font-size: 12px;
    font: 500 12px/1.3 "Noto Sans", sans-serif;
}

header .logo a span img {
    width: 100%;
    height: auto;
}

header #ctaHeader {
    padding: 10px;
}

header #ctaHeader {
    display: flex;
    padding-inline: 0 16px;
    gap: 1.4rem;
}

header .ctabtn {
    transition: transform 400ms ease;
}


header .ctabtn:hover {
    transform: translateY(4px);
}

header #telBtn {
    display: none!important;
}

@media screen and (max-width: 768px) {
	header {
        height: 70px;
    }

    header .logo {
        width: 62%;
        height: 70px;
    }

    header .logo a {
        padding: 10px 15px;
        font-size: clamp(2rem, var(--sp-8px), 2.8rem);
    }

    header .logo a span {
        text-align: left;
    }

    header .logo a span.sub_txt {
        display: block;
        margin-bottom: 5px;
        font-size: clamp(1.1rem, var(--sp-11px), 1.2rem);
    }

    header .logo a span img {
        width: 100%;
        height: auto;
    }
    header .logo a span.sub_txt {
        display: block;
        margin-bottom: 5px;
        font-size: clamp(1.1rem, var(--sp-11px), 1.2rem);
    }

    header #ctaHeader {
        width: 38%;
        height: 70px;
        background: #fff;
        padding-inline: 10px;
    }

    header #telBtn {
        display: none!important;
    }
}

/***********************************************************************
グローバルナビ
***********************************************************************/
#gnav {
    background: var(--colorLogoBlue);
    position: sticky;
    top: 0;
    z-index: 10;
    width: 100%;
    height: 65px;
    transition: transform 0.1s;
    box-shadow: 0 2px 6px rgba(0, 0, 0, 0.25);
    background-color: rgba(255,255,255,0.95);
    display: none!important;
}

.gNavWrap {
    display: grid;
    grid-auto-flow: column;
    grid-template-columns: repeat(8, 1fr);
    gap: 1px;
    margin: 0 auto;
    width: 1141px;
    height: 100%;
    border-width: 0 1px;
}

#gnav a {
    position: relative;
    display: flex;
    justify-content: center;
    align-items: center;
    z-index: 10;
    font-weight: 700;
    font-size: clamp(1.1rem, var(--sp-11px), 1.5rem) ;
    line-height: 1.2;
    font-feature-settings: 'halt';
    text-align: center;
    line-height: 1.3;
    cursor: pointer;
    color: #000;
    text-decoration: none;
    height: 100%;
}

#gnav li a.gnav-active {
    background: linear-gradient(to bottom, #fff, #e6e6e6);
    color: #1a294a;
    border-bottom: solid 3px #0a54ea;
}

#gnav li a.gnav-active::before {
    display: none;
}

.gNavWrap>li>a::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    z-index: -1;
    transform: scale(1, 0);
    transform-origin: left bottom;
    transition: transform 0.2s;
    background: linear-gradient(to bottom, #fff, #e6e6e6);
    width: 100%;
    height: 100%;
}

.gNavWrap>li:hover>a::before {
    transform: scale(1, 1);
    transform-origin: center top;
}

#gnav li:hover a {
    color: #1a294a;
    opacity: 1;
}

#gnav .gNavWrap li.has-dropdown {
    position: relative;
}

#gnav .gNavWrap li.has-dropdown a::after {
    content: '';
    position: absolute;
    transform: translate(50%, 6px);
    right: 50%;
    bottom: 4px;
    border: 6px solid rgba(0, 0, 0, 0);
    border-top-color: rgba(10, 84, 234, 1);
}

#gnav .gNavWrap li.has-dropdown:hover>a::after,
#gnav .gNavWrap li.has-dropdown a.gnav-active::after,
#gnav .gNavWrap li.has-dropdown.open::after {
    border-top-color: var(--colorLogoBlue);
}

#gnav .gNavWrap .dropdown {
    position: absolute;
    left: 0;
    top: 100%;
    display: none;
    min-width: 226px;
    background: #fff;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
    opacity: 0;
    transform: translateY(-16px);
    transition: opacity 0.35s cubic-bezier(0.4, 0, 0.2, 1), transform 0.35s cubic-bezier(0.4, 0, 0.2, 1);
    pointer-events: none;
    z-index: 1;
}

#gnav .gNavWrap .dropdown.right_side {
    left: auto;
    right: 0;
}

#gnav .gNavWrap li.has-dropdown {
    position: relative;
}

#gnav .gNavWrap li.has-dropdown .dropdown li a {
    height: 65px;
    color: #444;
    font: 600 clamp(1.1rem, var(--sp-15px), 1.5rem) / 1.2 var(--fontFamily-yugo);
    background: #fff;
    pointer-events: auto;
}

#gnav .gNavWrap li.has-dropdown.open .dropdown {
    opacity: 1;
    transform: translateY(0);
    pointer-events: auto;
    display: block;
}

#gnav .gNavWrap li.has-dropdown.open .dropdown li:first-of-type a {
    border-bottom: solid 1px #c4d9e5;
}

#gnav .gNavWrap li.has-dropdown.open .dropdown li:hover a {
    color: var(--colorLogoBlue);
    background: #e3ecf5;
    transition: all 0.3s ease;
    opacity: 1;
}

#gnav .gNavWrap li.has-dropdown.open .dropdown li a::after {
    content: '';
    position: absolute;
    transform: translateY(-50%);
    top: 50%;
    right: 5%;
    bottom: auto;
    border: 6px solid rgba(0, 0, 0, 0);
    border-left-color: rgba(10, 84, 234, 1);
}

@media screen and (max-width: 1140px) {
    #gnav {
        height: fit-content;
    }

    .gNavWrap {
        grid-template-columns: repeat(4, 1fr);
        grid-auto-flow: row;
        width: 100%;
        border: unset;
    }

    #gnav a {
        min-height: 4.8rem;
        padding-block: 0.8em;
    }

    #gnav .gNavWrap .dropdown {
        position: fixed;
        left: 0;
        width: 100vw;
        min-width: 0;
        border-radius: 0;
        z-index: 1000;
        transform: translateY(0px);
    }

    .gNavWrap>li.js-reset>a::before {
        background: var(--colorLogoBlue) !important;
    }

    .gNavWrap>li.js-reset>a {
        color: #fff !important;
    }

    #gnav .gNavWrap li.js-reset:hover>a::after {
        border-top-color: #fff;
    }
}

@media screen and (max-width: 1140px) {
    #gnav .ffs a {
        font-feature-settings: 'palt';
    }
}



/***********************************************************************
電話・資料請求ボタン
***********************************************************************/
#telBtn{
    width: 285px;
    color: #fff;
    gap: 6px;
    display: flex;
    justify-content: center;
    display: none;
}

#telBtn img {
    width: 3.5rem;
    padding-top: 2%;
}

#telBtn div {
    display: flex;
    flex-direction: column;
    justify-content: center;
    gap: 2px;
    color:#0a54ea;
}

#telBtn div > span {
    line-height: 1;
    display: block;
}

#telBtn div .telNumb {
    font: 900 3.4rem/1 "Noto Serif JP", serif;
}

#telBtn div .telText {
    font-size: clamp(1.1rem, var(--sp-11px), 1.4rem);
    font-weight: 700;
}

@media screen and (min-width: 601px) {

    #telBtn {
        pointer-events: none;
    }

    #telBtn:hover {
        transform: unset;
        box-shadow: 0 3px 2px rgba(36, 57, 123, 0.3);
    }
}


div.ctabtn {
    position: relative;
    width: 300px;
    height: 80px;
    background-image: linear-gradient(0deg, #0a54ea 20%, #013ebc);
    border-radius: 50px;
    margin:auto;
}

div.ctabtn::after {
    position: absolute;
    content: "";
    top: 50%;
    right: 5%;
    transform: translateY(-50%);
    width: 13px;
    height: 18px;
    background-image: url(/assets/images/common/arrow.svg);
    background-size: contain;
}

div.ctabtn a {
    width: 100%;
    height: 100%;
    display: flex;
    justify-content: center;
    align-items: center;
    text-decoration: none;
}

div.ctabtn a span {
    color: #fff;
    font-weight: 700;
    line-height: 1.3;
    font-size: 20px;
    text-align: center;
    padding-right: 4%;
}

@media screen and (max-width: 768px) {
    div.ctabtn {
        width: 100%;
        max-width: 180px;
        height: 50px;
    }

    div.ctabtn::after {
        right: 7%;
        width: 8px;
        height: 11px;
    }

    div.ctabtn a span {
        color: #fff;
        font-weight: 600;
        line-height: 1.3;
        font-size: 1.5rem
    }
}

/***********************************************************************
追従CTA
***********************************************************************/
#fixedCTAWrap {
    display: flex;
    flex-direction: column;
    gap: 1.95rem;
    background-color: #fff;
    border-radius: 2rem 0 0 2rem;
    width: 29rem;
    box-shadow: 0 0 1.6rem rgba(36, 57, 123, 0.25);
    padding-block: 3rem;
    position: fixed;
    right: 0;
    bottom: 1.5rem;
    z-index: 9999;
    transform: translateX(120%);
    opacity: 0;
    transition: transform 0.4s ease, opacity 0.4s ease;
}

#fixedCTAWrap.visible {
    transform: translateX(0%);
    opacity: 1;
}

#fixedCTAWrap :is(#telBtn, .ctaBtn) {
    width: 25rem;
    height: 60px;
}

#fixedCTAWrap #telBtn {
    border:solid 2px #0a54ea;
    border-radius: 10px;
    margin: auto;
}

#fixedCTAWrap #telBtn img {
    width: 2.8rem;
}

#fixedCTAWrap #telBtn div .telText {
    font-size:1.1rem;
}

#fixedCTAWrap #telBtn div .telNumb {
    font: 900 2.7rem/1.3 "Noto Serif JP", serif;
}

 #fixedCTAWrap div.ctabtn::after {
    width: 11px;
    height: 15px;

}

#fixedCTAWrap div.ctabtn a span {
     font-size:1.8rem;
}

@media screen and (max-width: 768px) {
    #fixedCTAWrap {
        width: 100%;
        flex-direction: row;
        border-radius: unset;
        bottom: 0;
        gap: 0.6rem;
        padding: 0.6rem 0.6rem 1rem;
        transform: translateY(100%);
    }

    #fixedCTAWrap.visible {
        transform: translateY(0%);
        opacity: 1;
    }

    #fixedCTAWrap :is(#telBtn, .ctaBtn) {
        width: 50%;
        max-width: 100%;
        aspect-ratio: 175/56;
        border-radius: 50px;
        padding-inline: 0.8rem;
    }

    #telBtn {
        aspect-ratio: 345/114;
        height: 60px;
    }

    #telBtn div {
        align-items: flex-start;
    }

    #fixedCTAWrap #telBtn img {
        width: 4.5vw;
    }

    #fixedCTAWrap #telBtn .telText_sp {
        font-weight: 900;
        font-size: 4vw;
        letter-spacing: -.05em;
    }
    #fixedCTAWrap #telBtn .telTextbottom_sp {
        font-size: 2.2vw;
        margin-top: 0.25em;
    }
}






/***汎用メダルアコーディオン
***********************************/
.hideCont-parent {
    cursor: pointer;
}

.hideCont {
    position: relative;
    z-index: 0;
    padding-bottom: 0;
    max-height: var(--hide-height);
    overflow: hidden;
    transition: 0.2s max-height;
    --hide-color: #fff;
    --hide-height: 4em;
    --hide-after-size: 12px;
    --hide-animation: 0.2s;
}

.hideCont::before {
    content: '';
    position: absolute;
    bottom: 0;
    left: 0;
    z-index: 1;
    width: 100%;
    height: 100%;
    transition: var(--hide-animation) height;
    background: linear-gradient(to left, var(--hide-color) calc(var(--hide-after-size) + 0.8em), rgba(255, 255, 255, 0) calc(var(--hide-after-size) + 1.5em) 100%), linear-gradient(to bottom, rgba(255, 255, 255, 0) 40%, var(--hide-color) 100%);
}

.hideCont::after {
    content: '';
    position: absolute;
    transform: translateY(50%);
    right: 5px;
    bottom: 50%;
    z-index: 2;
    width: var(--hide-after-size);
    height: var(--hide-after-size);
    background-color: #acacac;
    clip-path: polygon(0 calc(50% - 0.5px), calc(50% - 0.5px) calc(50% - 0.5px), calc(50% - 0.5px) 0, calc(50% + 0.5px) 0, calc(50% + 0.5px) calc(50% - 0.5px), 100% calc(50% - 0.5px), 100% calc(50% + 0.5px), calc(50% + 0.5px) calc(50% + 0.5px), calc(50% + 0.5px) 100%, calc(50% - 0.5px) 100%, calc(50% - 0.5px) calc(50% + 0.5px), 0 calc(50% + 0.5px));
    box-shadow: 0 0 1px var(--hide-color);
    transition: var(--hide-animation);
}

.hideCont-parent.active .hideCont {
    max-height: 100vh !important;
    padding-bottom: calc(var(--hide-after-size) + 2px);
}

.hideCont-parent.active .hideCont::before {
    height: 0;
}

.hideCont-parent.active .hideCont::after {
    transform: translateY(0);
    right: 5px;
    bottom: 0;
    clip-path: polygon(0 calc(50% - 0.5px), calc(50% - 0.5px) calc(50% - 0.5px), calc(50% - 0.5px) calc(50% - 0.5px), calc(50% + 0.5px) calc(50% - 0.5px), calc(50% + 0.5px) calc(50% - 0.5px), 100% calc(50% - 0.5px), 100% calc(50% + 0.5px), calc(50% + 0.5px) calc(50% + 0.5px), calc(50% + 0.5px) calc(50% + 0.5px), calc(50% - 0.5px) calc(50% + 0.5px), calc(50% - 0.5px) calc(50% + 0.5px), 0 calc(50% + 0.5px));
}

@media screen and (max-width: 834px) {
    .hideCont {
        --hide-after-size: 10px;
    }
}


.guideWrap {
	position: relative;
    margin-top: 100px;
    padding-block: 40px;
    background-image: linear-gradient(0deg, #0a54ea 20%, #013ebc);
}

.guideWrap .innerArea{
	position: relative;
    width: 100%;
    max-width: 1080px;
    height: auto;
    margin:auto;
    padding-inline: 40px;
}
.guideWrap .inner{
	position: absolute;
	content: "";
	top:0;
	left: 4%;
    width: 92%;
    height: 100%;
    background: #1dd798;
    border-radius: 30px;
    transform: rotate(2.5deg);
}

.guideWrap .offerCont {
	position: relative;
    width: 100%;
    height: auto;
    padding: 40px 20px;
    background: #fff;
    border-radius: 30px;
    z-index: 1;
}

.guideWrap h2 {
    text-align: center;
}

.guideWrap h2 span {
    color: #d71d63;
    font: 900 clamp(2.2rem, var(--sp-15px), 4rem)/1.3 "Noto Serif JP", serif;
}

.guideWrap p {
    text-align: center;
    margin-bottom: 40px;
}

@media screen and (max-width: 600px) {
    .guideWrap {
        margin-top: 40px;
    }
    .guideWrap .innerArea{
        padding-inline: 30px;
    }
    .guideWrap .inner{
        top: -1%;
        left: 7%;
        width: 86%;
        height: 102%;
        border-radius: 20px;
    }
    .guideWrap .offerCont {
        padding: 20px 20px;
        border-radius: 20px;
    }
    .guideWrap p {
        margin-bottom: 20px;
        font-size: clamp(1.2rem, var(--sp-10px), 1.7rem);
    }
}


/***********************************************************************
CTAボタン
***********************************************************************/
/* Detail button----------------------------------------- */
.btns {
    margin-top: 20px;
    transition: transform 400ms ease;
}

.btns:hover {
    transform: translateY(4px);
}

.btns p {
    font-weight: bold;
    line-height: 1;
    margin-bottom: 0;
    text-align: center;
}

@media screen and (max-width: 480px) {
    .btns p {
        line-height: 1.2;
    }
}

.detailBtn {
    position: relative;
    display: grid;
    place-content: center;
    margin-block: 7px 25px;
    margin-inline: auto;
    padding: 5px min(5.333vw, 45px);
    width: 100%;
    max-width: 800px;
    height: 80px;
    text-align: center;
    color: #fff;
    text-decoration: none;
    font: 700 clamp(2rem, 4vw, 2.8rem)/1.3 var(--fontFamily-sans-noto);
    border-radius: 100px;
　　transition: translate .2s ease, box-shadow .2s ease, background-position .6s ease;

    /* グラデは固定。サイズと位置で演出（2倍幅で敷く） */
    background-image: linear-gradient(to right, #013ebc 0%, #0a54ea 50%, #013ebc 100%);
    background-size: 200% 100%;
    background-position: left center; /* 初期は左側 */
}


.detailBtn:hover,
.detailBtn:focus-visible {
    translate: 0 3px;
    box-shadow: none;
    color: #fff;
    /* グラデ自体は同じ。位置だけ右へスライド→反転して見える */
    background-position: right center;
    opacity: 1;
}

.detailBtn::after {
    position: absolute;
    content: "";
    top: 50%;
    right: 3%;
    transform: translateY(-50%);
    width: 13px;
    height: 18px;
    background-image: url(/assets/images/common/arrow.svg);
    background-size: contain;
}

.tel_number{
	width: 100%;
	max-width: 800px;
	border:solid 2px #0a54ea;
	border-radius: 20px;
	display: flex;
	justify-content: center;
	margin: auto;
	padding-block: 15px;
    padding: 5px min(5.333vw, 20px); gap:10px;
    display: none;
}
@media (min-width: 601px) {
    .tel_number{
        pointer-events: none;     /* クリック不可 */
    }
}
.tel_number img{
    padding-top: 2%;
	width: clamp(1.5em, var(--sp-22px), 3.2em)
}

.tel_number div{
    color: #0a54ea;
}

.tel_number div span{
    display: flex;
    flex-direction: column;
}

.tel_number div .telNumb{
    font: 900  clamp(2.2rem, var(--sp-22px), 5.8rem)/ 1 "Noto Serif JP", serif;
}

.tel_number div .telText{
    font-weight: 700;
    font-size: clamp(1.1rem, var(--sp-22px), 1.7rem);
}

.tel_number .telText_two{
    font-weight: 700;
    font-size: clamp(1.1rem, var(--sp-22px), 1.7rem);
    display: flex;
    align-items: flex-end;
    padding-bottom: 3px;
}
@media screen and (max-width: 768px) {
    .detailBtn {
        box-shadow: none;
        margin-block: 7px 11px;
    }

    .tel_number {
        border-radius: 50px;
        padding-inline: 0.8rem;
    }

    .tel_number {
        aspect-ratio: 345/114;
        height: 80px;
    }

    .tel_number img{
        padding-top: 2%;
        width: 4.5vw
    }

    .tel_number div {
        display: flex;
        flex-direction: column;
        align-items: center;
        justify-content: center;
    }

    .tel_number  img {
        width: 4.5vw;
    }

    .tel_number .telText_sp {
        font-weight: 900;
        font-size: clamp(1.4rem, var(--sp-22px), 2.2rem);
        letter-spacing: -.05em;
    }

    .tel_number .telTextbottom_sp {
        font-weight: 700;
        font-size: clamp(1.1rem, var(--sp-22px), 1.4rem);
    }
}


/***********************************************************************
footer
***********************************************************************/

footer .footerWrap {
    padding-block: 35px;
    background:#eef3fe;
    color: #000;
    text-align: center;
}

footer ul {
    display: flex;
    justify-content: center;

}

footer ul li {
    margin-inline: 10px;
}

footer .name {
    padding: 0;
    text-align: center;
}

footer .name img {
    width: 100%;
    max-width: 400px;
    margin: auto;
}

footer .footerBottom {
    margin-top: 20px;
    text-align: center;
}
@media screen and (max-width: 768px) {
    footer .name img {
        max-width: 280px;
    }
}
