@charset "utf-8";

#page-introduction #page-introduction_lead {
    max-width: 1000px;
    margin: 0 auto;
}

.intro_bg {
    padding-top: 100px;
}

.intro_bg_content {
    opacity: 0;
    transition: opacity 0.8s ease;
}

#page-introduction h2 {
    width: 90%;
    max-width: 900px;
    margin: 0 auto 50px;
    mix-blend-mode: screen;
}

#page-introduction .feature_card h3 {
    font-size: clamp(1.25rem, 0.867rem + 1.633vw, 2.5rem);
    position: relative;
    padding-bottom: 15px;
    width: min(100%, 630px);
    margin: 0 auto 15px;
    text-shadow: 0px 0px 20px var(--title-color);
}

#page-introduction .feature_card h3::after {
    content: "";
    background: url("../img/add/introduction/intro_border-sp.webp") center/contain no-repeat;
    width: 100%;
    height: 15px;
    position: absolute;
    bottom: 0;
    left: 50%;
    transform: translateX(-50%);
}

#page-introduction .intro_sub-title_world {
    width: 60%;
    max-width: 400px;
    margin: clamp(1.563rem, 0.762rem + 3.415vw, 3.75rem) auto 0;
}

#page-introduction .feature_card h4 {
    font-size: clamp(1rem, 0.736rem + 1.127vw, 1.75rem);
    text-shadow: 0px 0px 20px rgba(12, 15, 42, 0.8);
    margin-bottom: 15px;
    letter-spacing: 0.03em;
    text-align: center;
}

#page-introduction .center {
    text-align: center;
}

#page-introduction .bold {
    font-weight: bold;
}

#page-introduction .sep {
    display: inline-block;
}

#page-introduction .respd {
    max-width: 100%;
    height: auto;
    width
    /***/
    : auto;
    display: block;
}

#page-introduction .flex-item_link {
    width: calc(50% - 10px);
}

#page-introduction .story_about_wrapper {
    width: 100%;
    max-width: 1000px;
    margin: 0 auto clamp(60px, 39.878px + 5.366vw, 115px);
}

#page-introduction .story_copy {
    font-size: clamp(1.875rem, 0.503rem + 5.854vw, 5.625rem);
    margin-bottom: 10px;
    letter-spacing: clamp(0rem, -0.018rem + 0.075vw, 0.05rem);
}

#page-introduction .story_lead {
    font-size: clamp(0.813rem, 0.561rem + 1.073vw, 1.5rem);
    margin-bottom: 45px;
    line-height: 2.5;
    letter-spacing: clamp(0rem, -0.018rem + 0.075vw, 0.05rem);
}

#page-introduction .story_list {
    display: flex;
    gap: 20px 10px;
    justify-content: center;
}

#page-introduction .story_list li {
    width: calc((100% / 6) - 13.5px);
    font-size: clamp(0.4rem, 0.43rem + 0.488vw, 1rem);
}

#page-introduction .list_icon {
    width: 100%;
    max-width: 105px;
    margin: 0 auto 10px;
}

#page-introduction .feature_wraper {
    position: relative;
}

#page-introduction .feature_wraper:not(:last-of-type) {
    margin-bottom: 50px;
}

#page-introduction .feature_wraper:last-of-type {
    margin-bottom: clamp(3.125rem, 1.982rem + 4.878vw, 6.25rem);
}

#page-introduction .feature_card {
    position: relative;
    color: #fff;
    isolation: isolate;
}

#page-introduction .text-r.feature_card {
    text-align: right;
}

/* Clip：角丸＆背景＆枠は “ここ” に閉じ込める */
#page-introduction .feature_clip {
    position: relative;
    border-radius: 10px;
    overflow: hidden;
    /* 背景＆枠を角丸でクリップ */
    padding: clamp(2.188rem, 1.197rem + 4.225vw, 5rem) clamp(35px, 18vw + -131.51px, 125px) 80px;
    background: var(--feture-bg) center/cover no-repeat, var(--feture-color);
}

/* 枠（疑似） */
.feature_clip::after {
    content: "";
    position: absolute;
    inset: 0;
    border-radius: inherit;
    z-index: 0;
    pointer-events: none;
    /* background: var(--feture-frame-sp) center/100% 100% no-repeat; */
    border: solid #ccc 20px;
    padding: 20px 20px 30px;
    border-image-source: var(--feture-frame-pc);
    border-image-slice: 170 fill;
    border-image-width: 70px;
    border-image-repeat: round;
}

#page-introduction .feature_clip>* {
    position: relative;
    z-index: 1;
}

#page-introduction .feature_text {
    position: relative;
    z-index: 2;
}

#page-introduction .feature_text p {
    font-size: clamp(0.813rem, 0.658rem + 0.657vw, 1.25rem);
    line-height: 2;
    letter-spacing: 0.05em;
    text-align: center;
}

#page-introduction .text-r .feature_text {
    text-align: left;
}

#page-introduction .feature_text::after {
    content: "";
    position: absolute;
    inset: 0;
    z-index: 1;
    pointer-events: none;
    background: var(--feture-icon) center/contain no-repeat;
}

#page-introduction .feature_media--sp {
    margin: clamp(16px, 4vw, 24px) auto 0;
    width: min(100%, 600px);
}

#page-introduction .feature_media--sp img {
    width: 100%;
    height: auto;
    object-fit: cover;
}

#page-introduction .feature_media--pc {
    display: none;
    /* PC条件になるまで背景は指定しない */
}

/*マップ*/
#page-introduction .map_description {
    font-size: clamp(0.688rem, 0.533rem + 0.657vw, 1.125rem);
}

#page-introduction .map_image-container {
    width: 100%;
    max-width: 1000px;
    margin: clamp(1.563rem, 1.105rem + 1.951vw, 2.813rem) auto 0;
}

#page-introduction .map-viewport {
    width: 100%;
    aspect-ratio: 1080 / 976;
    position: relative;
    overflow: visible;
}

#page-introduction .map-stage {
    position: relative;
    width: 100%;
    height: 100%;
    transform-origin: 0 0;
    overflow: hidden;
}

/*重なりとヒットテストを安定化 */
#page-introduction .map-pc,
#page-introduction .map-sp {
    position: relative;
}

#page-introduction .map-svg {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    z-index: 10;
    pointer-events: auto;
    will-change: transform;
    background: rgba(0, 0, 0, 0.01);
}

#page-introduction .map-stage img.respd {
    position: relative;
    z-index: 1;
    pointer-events: none !important;
}

/* 可視はさせずに“タップ可能”にする塗り（重要） */
#page-introduction .map-area .country {
    fill: rgba(255, 255, 255, 0.001);
    /* ほぼ透明。クリックを確実に拾う */
    stroke: none;
    cursor: pointer;
    transition: fill .2s ease, stroke .2s ease;
}

#page-introduction .map-area .country:hover {
    fill: rgba(66, 153, 225, .25);
}

#page-introduction .map-area .country:focus {
    outline: none;
}

#page-introduction .map-area .country:focus-visible {
    fill: rgba(66, 153, 225, .25);
    outline: 1px solid #aaa;
}

#page-introduction .map-area .country.is-active {
    fill: rgba(255, 255, 255, 0.001);
    stroke: rgba(255, 255, 255, 0.5);
    stroke-width: 2;
}

#page-introduction .map-pc {
    display: none;
}

#page-introduction .map-sp {
    display: block;
}

/* Panzoom 有効中だけ crosshair にしたい場合 */
#page-introduction .is-panzoom-enabled.map-viewport {
    cursor: crosshair;
}

/* ドラッグ中の手の形にしたい場合は grab/ grabbing を状態に応じて切替も可 */
#page-introduction .is-panzoom-enabled .map-stage {
    cursor: grab;
}

#page-introduction .is-panzoom-enabled .map-stage:active {
    cursor: grabbing;
}

/*スライダー*/
#page-introduction .world_slider {
    width: 100%;
    max-width: 1000px;
    margin: clamp(20px, 12.683px + 1.951vw, 40px) auto clamp(30px, 29.707px + 4.878vw, 80px);
    position: relative;
    overflow: hidden;
}

#page-introduction .world_slider-container {
    padding: clamp(64px, 53.024px + 2.927vw, 94px) clamp(15px, -34.390px + 13.171vw, 150px);
    background-color: #aaa;
    /* 画像未読込時のプレースホルダ */
    background-size: cover;
    background-position: center;
    background-repeat: no-repeat;
    display: grid;
    place-items: center;
    min-height: var(--unified-slide-height);
}

#page-introduction .world_slider-content {
    position: relative;
    border-radius: 5px;
    --fallback-height: 420px;
    display: flex;
    flex-direction: column;
    justify-content: center;
    place-items: center;
    --box-max-width: 720px;
    --box-padding-y: clamp(25px, 14.024px + 2.927vw, 55px);
    --box-padding-x: clamp(20px, 18.239px + 0.469vw, 25px);
    max-width: var(--box-max-width);
    width: 100%;
    padding: var(--box-padding-y) var(--box-padding-x);
    min-height: var(--content-unified-height);
    background: var(--icon-url) center/contain no-repeat, var(--bg-color);
    backdrop-filter: blur(5px);
}

/* 測定用：非表示スライドでも寸法を正確に取る一時クラス */
#page-introduction .world_slider-content.__measure {
    position: absolute !important;
    visibility: hidden !important;
    left: -99999px !important;
    display: block !important;
    height: auto !important;
    max-height: none !important;
    overflow: visible !important;
}

#page-introduction .world_copy {
    font-size: clamp(0.875rem, 0.646rem + 0.976vw, 1.5rem);
    color: #fff;
    text-shadow: 0px 0px 20px rgba(12, 15, 42, 0.8);
}

#page-introduction .world_name {
    font-size: clamp(1.125rem, 0.622rem + 2.146vw, 2.5rem);
    color: #fff;
    text-shadow: 0px 0px 20px rgba(12, 15, 42, 0.8);
    margin-bottom: clamp(0.625rem, 0.168rem + 1.951vw, 1.875rem);
    font-weight: bold;
}

#page-introduction .world_text {
    font-size: clamp(0.75rem, 0.659rem + 0.39vw, 1rem);
    color: #fff;
    text-shadow: 0px 0px 20px rgba(12, 15, 42, 0.8);
}

#page-introduction .slide-arrow {
    width: clamp(50px, 20.732px + 7.805vw, 130px);
    height: clamp(30px, 15.366px + 3.902vw, 70px);
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    z-index: 2;
}

#page-introduction button.slide-arrow {
    background-color: transparent;
    border: none;
    cursor: pointer;
    outline: none;
    padding: 0;
    appearance: none;
}

#page-introduction .slide-arrow.prev-arrow {
    left: 0%;
    background: url("../img/add/introduction/prev_arrow.webp") center/contain no-repeat;
}

#page-introduction .slide-arrow.next-arrow {
    right: 0%;
    background: url("../img/add/introduction/next_arrow.webp") center/contain no-repeat;
}

#page-introduction button.slide-arrow.prev-arrow:hover {
    animation: fuwafuwa .5s;
}

#page-introduction button.slide-arrow.next-arrow:hover {
    animation: fuwafuwa2 .5s;
}

#page-introduction button.slide-arrow.prev-arrow:focus-visible,
#page-introduction button.slide-arrow.next-arrow:focus-visible {
    outline: 1px solid #aaa;
}

@keyframes fuwafuwa {
    0% {
        transform: translate(0, -50%)
    }

    50% {
        transform: translate(-5px, -50%)
    }

    100% {
        transform: translate(0, -50%)
    }
}

@keyframes fuwafuwa2 {
    0% {
        transform: translate(0, -50%)
    }

    50% {
        transform: translate(5px, -50%)
    }

    100% {
        transform: translate(0, -50%)
    }
}

#page-introduction .slick-track {
    display: flex;
}

#page-introduction .slick-slide {
    height: auto !important;
}

#page-introduction .link-pc {
    display: block !important;
}

#page-introduction .link-sp {
    display: none !important;
}

@supports (container-type: inline-size) {
    #page-introduction .feature_wraper {
        container-type: inline-size;
        container-name: feature;
    }

    #page-introduction .map_image-container {
        container-name: mapcontainer;
        container-type: inline-size;
    }

    #page-introduction .world_slider {
        container-name: slider;
        container-type: inline-size;
    }

    @container mapcontainer (min-width: 520px) {
        #page-introduction .map-pc {
            display: block;
        }

        #page-introduction .map-sp {
            display: none;
        }

        #page-introduction .map-viewport {
            aspect-ratio: 1920 / 1080;
        }
    }

    @container slider (min-width: 500px) {
        #page-introduction .slide-arrow.prev-arrow {
            left: 4%;
        }

        #page-introduction .slide-arrow.next-arrow {
            right: 4%;
        }
    }

    @container feature (min-width: 500px) {
        #page-introduction .feature_clip::after {
            content: "";
            position: absolute;
            inset: 0;
            z-index: 1;
            pointer-events: none;
            /* background: var(--feture-frame-tb) center/100% 100% no-repeat; */
        }

        #page-introduction .feature_card h3::after {
            background: url("../img/add/introduction/intro_border.webp") center/contain no-repeat;
        }
    }

    /* PC：カードが広いときだけ画像を外へはみ出す */
    @container feature (min-width: 800px) {
        #page-introduction .feature_clip {
            display: inline-block;
            /* ← これで背景＆枠が feature_text に合わせて縮む */
            max-inline-size: 70%;
            background: var(--feture-icon) center/contain no-repeat, var(--feture-bg) center/cover no-repeat, var(--feture-color);
        }

        #page-introduction .feature_media--sp {
            display: none;
        }

        #page-introduction .feature_media--pc {
            display: block;
            position: absolute;
            inset-block-start: 50%;
            inset-inline-end: 0;
            /* 右にはみ出す（負値が直感的） */
            transform: translateY(-50%);
            width: clamp(220px, 32.5cqw, 460px);
            aspect-ratio: 453 / 296;
            margin: 0;
            z-index: 3;
            background: var(--country-image) center/cover no-repeat;
        }

        #page-introduction .text-r .feature_media--pc {
            inset-inline-start: 0;
            inset-inline-end: initial;
        }

        #page-introduction .feature_clip::after {
            /* background: var(--feture-frame-pc) center/100% 100% no-repeat; */
        }

        #page-introduction .feature_text::after {
            content: none;
        }

    }

    @container slider (min-width: 1000px) {
        #page-introduction .slide-arrow.prev-arrow {
            left: 9%;
        }

        #page-introduction .slide-arrow.next-arrow {
            right: 9%;
        }
    }
}

/* 非対応ブラウザ向けフォールバック */
@supports not (container-type: inline-size) {
    @media (min-width: 540px) {
        #page-introduction .slide-arrow.prev-arrow {
            left: 4%;
        }

        #page-introduction .slide-arrow.next-arrow {
            right: 4%;
        }
    }

    @media (min-width: 560px) {
        #page-introduction .map-pc {
            display: block;
        }

        #page-introduction .map-sp {
            display: none;
        }

        #page-introduction .map-viewport {
            aspect-ratio: 1920 / 1080;
        }

        #page-introduction .feature_clip::after {
            content: "";
            position: absolute;
            inset: 0;
            z-index: 1;
            pointer-events: none;
            /* background: var(--feture-frame-tb) center/100% 100% no-repeat; */
        }

        #page-introduction .feature_card h3::after {
            background: url("../img/add/introduction/intro_border-sp.webp") center/contain no-repeat;
        }
    }

    @media (min-width: 840px) {
        #page-introduction .feature_clip {
            display: inline-block;
            /* ← これで背景＆枠が feature_text に合わせて縮む */
            max-inline-size: 70%;
            background: var(--feture-icon) center/contain no-repeat, var(--feture-bg) center/cover no-repeat, var(--feture-color);
        }

        #page-introduction .feature_media--sp {
            display: none;
        }

        #page-introduction .feature_media--pc {
            display: block;
            position: absolute;
            inset-block-start: 50%;
            inset-inline-end: 0;
            /* 右にはみ出す（負値が直感的） */
            transform: translateY(-50%);
            width: clamp(220px, 32.5cqw, 460px);
            aspect-ratio: 453 / 296;
            margin: 0;
            z-index: 3;
            background: var(--country-image) center/cover no-repeat;
        }

        #page-introduction .text-r .feature_media--pc {
            inset-inline-start: 0;
            inset-inline-end: initial;
        }

        #page-introduction .feature_clip::after {
            /* background: var(--feture-frame-pc) center/100% 100% no-repeat; */
        }

        #page-introduction .feature_text::after {
            content: none;
        }

    }

    @media (min-width: 1040px) {
        #page-introduction .slide-arrow.prev-arrow {
            left: 9%;
        }

        #page-introduction .slide-arrow.next-arrow {
            right: 9%;
        }
    }
}

@media screen and (max-width: 1000px) {
    #page-introduction h2 {
        width: 95%;
        margin: 0 auto 30px;
    }

    .intro_bg {
        padding-top: 120px;
    }
}

@media screen and (max-width: 768px) {
    #page-introduction .flex-item_link {
        width: calc(50% - 5px);
    }

    #page-introduction .story_list {
        flex-wrap: wrap;
        width: 100%;
        max-width: 480px;
        margin: 0 auto;
        justify-content: center;
    }

    #page-introduction .story_list li {
        width: calc((100% / 3) - (54px / 3));
    }
}

@media screen and (max-width: 480px) {
    #page-introduction .link-pc {
        display: none !important;
    }

    #page-introduction .link-sp {
        display: block !important;
    }

    #page-introduction .feature_clip {
        padding: clamp(35px, 6vw + -32.72px, 65px) clamp(35px, 18vw + -131.51px, 125px) 50px;
    }

    #page-introduction .feature_card h4 {
        margin-bottom: 15px;
    }

    .intro_bg {
        background-size: 250%, 65%, 100%;
    }

    .world_text.center {
        text-align: left !important;
    }

    .intro_bg {
        padding-top: 80px;
    }
}

#page-introduction #world {
    color: #333333;
}