/* ==========================================================================
   １．@import / ルート変数／リセット
   ========================================================================== */

/* Google Fonts */
@import 'https://fonts.googleapis.com/css2?family=Noto+Serif+Display:ital,wght@0,100..900;1,100..900&family=Shippori+Mincho+B1:wght@400;500;600;700;800&family=Shippori+Mincho:wght@400;500;600;700;800&display=swap';

/* ルート変数定義 */
:root {
    --breakpoint-sm: 640px;
    --breakpoint-md: 768px;
    --breakpoint-lg: 1024px;
    --breakpoint-xl: 1366px;
    --breakpoint-xxl: 1500px;

    --inner-slim: 80rem;
    --inner-base: 120rem;
    --view-width: 100vw;

    --header-height: 6.5rem;

    --font-family-body: "Noto Sans JP", sans-serif;
    --font-family-mincho: "Noto Sans JP", serif;
    --font-family-latin: "Noto Sans JP", serif;

    --font-size-body: 1.4rem;
    --line-height-body: 2;

    --color-text-body: #122;
    --color-black: #122;
    --color-grey: #ededed;
    --color-orange: #d78d50;
    --color-black-rgb: 0 0 0;
    --color-grey-rgb: 237 237 237;
    --color-orange-rgb: 215 141 80;

    --gutter: min(6.4vw, 2.4rem);
    --menu-btn-width: 8.8rem;

    /* Swiper 共通色 */
    --swiper-theme-color: #007aff;
}

/* ルート変数上書き：ブレークポイント */
@media (min-width: 640px) {
    :root {
        --header-height: 8.125rem;
    }
}
@media (min-width: 1024px) {
    :root {
        --header-height: 11.8rem;
        --font-size-body: 1.8rem;
    }
}
@media (max-width: 640px) {
    :root {
        --cta-height: 6.4rem; /* 固定CTA高さを想定 */
    }
}

/* ------------------------------------------------------------
   リセット / ベーススタイル
   ------------------------------------------------------------ */
*, *::before, *::after {
    box-sizing: border-box;
}

html {
    font-size: 0.625em; /* 全体のフォントサイズ基準 */
    -moz-text-size-adjust: none;
    -webkit-text-size-adjust: none;
    text-size-adjust: none;
}

body, h1, h2, h3, h4, p, figure, blockquote, dl, dd, ul, ol {
    margin: 0;
    padding: 0;
}

ul, ol {
    list-style: none;
}

body {
    min-height: 100dvh;
    background: var(--color-grey);
    font: var(--font-size-body)/var(--line-height-body) var(--font-family-body);
    color: var(--color-text-body);
}

a {
    color: inherit;
    text-decoration-skip-ink: auto;
}

button, input, textarea, select {
    font: inherit;
    color: inherit;
}

button {
    background: transparent;
    border: none;
    cursor: pointer;
}

img, video, canvas, svg {
    max-width: 100%;
    height: auto;
    display: block;
}

picture {
    display: block;
    max-width: 100%;
}

:target {
    scroll-margin-block: 5ex;
}

/* Utility */
.tb { display: none; }
@media (max-width: 1024px) {
    .tb { display: block; }
}

.sp-br { display: none; }
@media (max-width: 640px) {
    .sp-br { display: block; }
}

/* ==========================================================================
   ２．PhotoSwipe（pswp）スタイル
   ========================================================================== */
/* PhotoSwipe v5 の主要スタイルをまとめ。不要な重複を除去しています。 */
.pswp {
    --pswp-bg: #122;
    --pswp-placeholder-bg: #222;
    --pswp-root-z-index: 100000;
    --pswp-preloader-color: rgb(79 79 79 / 40%);
    --pswp-preloader-color-secondary: rgb(255 255 255 / 90%);
    --pswp-icon-color: #fff;
    --pswp-icon-color-secondary: #4f4f4f;
    --pswp-icon-stroke-color: #4f4f4f;
    --pswp-icon-stroke-width: 0.2rem;
    --pswp-error-text-color: var(--pswp-icon-color);

    display: none;
    position: fixed;
    top: 0;
    left: 0;
    z-index: var(--pswp-root-z-index);
    width: 100%;
    height: 100%;
    opacity: .003;
    outline: 0;
    touch-action: none;
    contain: layout style size;
    transform: translateZ(0);
    will-change: opacity;
    overflow: hidden;
}

.pswp--open {
    display: block;
}

.pswp__bg {
    background: var(--pswp-bg);
    opacity: .005;
}

.pswp__container,
.pswp__content,
.pswp__img,
.pswp__item,
.pswp__scroll-wrap,
.pswp__zoom-wrap {
    position: absolute;
    top: 0; left: 0;
    width: 100%; height: 100%;
}

.pswp__img,
.pswp__zoom-wrap {
    width: auto; height: auto;
}

.pswp--click-to-zoom.pswp--zoom-allowed .pswp__img { cursor: zoom-in; }
.pswp--click-to-zoom.pswp--zoomed-in .pswp__img { cursor: grab; }
.pswp--no-mouse-drag.pswp--zoomed-in .pswp__img { cursor: zoom-out; }

.pswp__button,
.pswp__container,
.pswp__counter,
.pswp__img {
    user-select: none;
}

.pswp__button {
    position: relative;
    width: 5rem; height: 6rem;
    padding: 0; margin: 0;
    background: none; border: none;
    opacity: .85;
}

.pswp__button:active,
.pswp__button:hover,
.pswp__button:focus {
    opacity: 1;
    transition: none;
}

.pswp__button:disabled {
    opacity: .3;
    cursor: default;
}

.pswp__icn {
    position: absolute;
    top: 1.4rem; left: 0.9rem;
    width: 3.2rem; height: 3.2rem;
    fill: var(--pswp-icon-color);
    color: var(--pswp-icon-color-secondary);
}

.pswp__icn-shadow {
    fill: none;
    stroke: var(--pswp-icon-stroke-color);
    stroke-width: var(--pswp-icon-stroke-width);
}

.pswp__top-bar {
    display: flex;
    position: absolute;
    top: 0; left: 0;
    width: 100%; height: 6rem;
    justify-content: flex-end;
    pointer-events: none;
}

.pswp__hide-on-close {
    opacity: .005;
    transition: opacity var(--pswp-transition-duration) cubic-bezier(0.4,0,0.22,1);
    will-change: opacity;
    pointer-events: none;
}

.pswp--ui-visible .pswp__hide-on-close {
    opacity: 1;
    pointer-events: auto;
}

.pswp__preloader {
    position: relative;
    width: 5rem; height: 6rem;
    margin-right: auto;
}

.pswp__preloader .pswp__icn {
    opacity: 0;
    animation: pswp-clockwise .6s linear infinite;
    transition: opacity .2s linear;
}

.pswp__preloader--active .pswp__icn {
    opacity: .85;
}

@keyframes pswp-clockwise {
    0%   { transform: rotate(0); }
    100% { transform: rotate(360deg); }
}

.pswp__counter {
    height: 3rem;
    margin-top: 1.5rem;
    opacity: .85;
    font-size: 1.4rem;
    color: var(--pswp-icon-color);
    text-shadow: 0.1rem 0.1rem 0.3rem var(--pswp-icon-color-secondary);
    line-height: 3rem;
    margin-inline-start: 2rem;
}

.pswp--one-slide .pswp__button--arrow,
.pswp--one-slide .pswp__counter {
    display: none;
}

/* ==========================================================================
   ３．SimpleBar（custom scrollbar）スタイル
   ========================================================================== */
[data-simplebar] {
    position: relative;
    display: flex;
    flex-flow: column wrap;
    align-items: flex-start;
}

.simplebar-wrapper,
.simplebar-offset,
.simplebar-mask,
.simplebar-content-wrapper,
.simplebar-placeholder,
.simplebar-height-auto-observer-wrapper,
.simplebar-height-auto-observer {
    position: absolute;
    top: 0; left: 0;
    width: 100%; height: 100%;
    overflow: hidden;

    margin: 0!important;
}

.simplebar-content-wrapper {
    display: block;
    max-width: 100%;
    max-height: 100%;
    direction: inherit;
    scrollbar-width: none;
    -ms-overflow-style: none;
}

.simplebar-content-wrapper::-webkit-scrollbar,
.simplebar-hide-scrollbar::-webkit-scrollbar {
    width: 0; height: 0;
}

.simplebar-placeholder {
    pointer-events: none;
}

.simplebar-track {
    position: absolute;
    bottom: 0; right: 0;
    z-index: 1;
    overflow: hidden;
    pointer-events: none;
}

.simplebar-scrollbar {
    position: absolute;
    left: 0; right: 0;
    min-height: 1rem;
}

.simplebar-scrollbar::before {
    content: "";
    position: absolute;
    left: 0.2rem; right: 0.2rem;
    background: #122;
    border-radius: 7px;
    opacity: 0;
    transition: opacity .2s linear;
}

.simplebar-scrollbar.simplebar-visible::before {
    opacity: .5;
    transition: opacity 0s linear;
}

.simplebar-track.simplebar-vertical {
    top: 0; width: 1.1rem;
}

.simplebar-track.simplebar-vertical .simplebar-scrollbar::before {
    top: 0.2rem; bottom: 0.2rem;
}

.simplebar-track.simplebar-horizontal {
    left: 0; height: 1.1rem;
}

.simplebar-track.simplebar-horizontal .simplebar-scrollbar::before {
    left: 0.2rem; right: 0.2rem; height: 100%;
}

.simplebar-track.simplebar-horizontal .simplebar-scrollbar {
    top: 0.2rem; width: auto; height: 0.7rem; min-width: 1rem;
}

.simplebar-hide-scrollbar {
    position: fixed;
    left: 0;
    overflow-y: scroll;
    visibility: hidden;
    scrollbar-width: none;
    -ms-overflow-style: none;
}

.hs-dummy-scrollbar-size {
    position: fixed;
    width: 50rem;
    height: 50rem;
    overflow: scroll hidden;
    opacity: 0;
    visibility: hidden;
    direction: rtl;
}

/* ==========================================================================
   ４．Swiper スタイル
   ========================================================================== */
/* 主要クラスをまとめ、重複した部分を除去 */
.swiper {
    display: block;
    position: relative;
    z-index: 1;
    padding: 0;
    margin: 0 auto;
    overflow: hidden;
    list-style: none;
}

.swiper-wrapper {
    display: flex;
    position: relative;
    z-index: 1;
    width: 100%; height: 100%;
    box-sizing: content-box;
    transition-property: transform;
    transition-timing-function: var(--swiper-wrapper-transition-timing-function, initial);
    transform: translate3d(0,0,0);
}

.swiper-slide {
    flex-shrink: 0;
    width: 100%; height: 100%;
    transition-property: transform;
}

.swiper-horizontal { touch-action: pan-y; }
.swiper-vertical   { touch-action: pan-x; }

.swiper-3d { perspective: 120rem; }
.swiper-3d .swiper-wrapper { transform-style: preserve-3d; }
.swiper-backface-hidden .swiper-slide { backface-visibility: hidden; }

.swiper-css-mode > .swiper-wrapper {
    overflow: auto;
    scrollbar-width: none;
    -ms-overflow-style: none;
}
.swiper-css-mode > .swiper-wrapper::-webkit-scrollbar { display: none; }

@keyframes swiper-preloader-spin {
    0%   { transform: rotate(0deg); }
    100% { transform: rotate(360deg); }
}

.swiper-lazy-preloader {
    position: absolute;
    top: 50%; left: 50%;
    z-index: 10;
    width: 4.2rem; height: 4.2rem;
    margin-top: -2.1rem; margin-left: -2.1rem;
    border: 4px solid var(--swiper-preloader-color, var(--swiper-theme-color));
    border-radius: 50%;
    border-top-color: rgba(0, 0, 0, 0);
    animation: swiper-preloader-spin 1s infinite linear;
}

.swiper-button-next,
.swiper-button-prev {
    display: flex;
    position: absolute;
    top: var(--swiper-navigation-top-offset, 50%);
    z-index: 10;
    justify-content: center;
    align-items: center;
    width: calc(var(--swiper-navigation-size, 4.4rem) / 44 * 27);
    height: var(--swiper-navigation-size, 4.4rem);
    margin-top: calc(0 - var(--swiper-navigation-size, 4.4rem) / 2);
    color: var(--swiper-navigation-color, var(--swiper-theme-color));
    cursor: pointer;
}
.swiper-button-next.swiper-button-disabled,
.swiper-button-prev.swiper-button-disabled {
    opacity: .35; cursor: default; pointer-events: none;
}

.swiper-pagination {
    position: absolute; z-index: 10;
    text-align: center; transition: .3s opacity;
    transform: translate3d(0, 0, 0);
}
.swiper-pagination-bullet {
    display: inline-block;
    width: var(--swiper-pagination-bullet-size, 8px);
    height: var(--swiper-pagination-bullet-size, 8px);
    background: var(--swiper-pagination-bullet-inactive-color, #122);
    border-radius: 50%;
    opacity: var(--swiper-pagination-bullet-inactive-opacity, 0.2);
}
.swiper-pagination-bullet-active {
    background: var(--swiper-pagination-color, var(--swiper-theme-color));
    opacity: var(--swiper-pagination-bullet-opacity, 1);
}

/* ==========================================================================
   ５．ヘッダー / ナビ / メニュー
   ========================================================================== */
.l-header {
    position: sticky;
    top: 0; left: 0; right: 0;
    z-index: 999;
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding-inline: var(--gutter);
    height: var(--header-height);
    background: #FFF;
}

.l-header__logo {
    flex: 0 0 25rem;
    line-height: 1;
}
@media(max-width: 1024px) {
    .l-header__logo {
        flex: 0 0 13rem;
    }
}
.l-header__menu {
    display: none;
}
.l-header__menubtn {
    flex: 0 0 4rem;
}

@media (min-width: 640px) {
    .l-header__logo {
    }
    .l-header__menubtn {
        flex: 0 0 tabelt(40);
    }
}

@media (min-width: 1024px) {
    .l-header {
        position: sticky;
        top: 0;
    }
    .l-header__logo {
    }
    .l-header__menu {
        display: block;
        flex: 0 1 auto;
    }
    .l-header__menubtn { display: none; }
}

@media (min-width: 1366px) {
    .l-header__logo {
    }
}

.l-header-menu {
    display: flex;
    gap: 0 2rem;
}
.l-header-menu li { font-size: 1.6rem; }
.l-header-menu a {
    font-size: inherit;
    text-decoration: none;
    transition: opacity .4s;
}
@media (any-hover: hover) {
    .l-header-menu a:hover { opacity: .5; }
}
.l-header-menu a:focus-visible { text-decoration: underline; }

@media (min-width: 1366px) {
    .l-header-menu { gap: 0 2rem; }
    .l-header-menu li {font-size: 1.8rem; }
}
@media (min-width: 1500px) {
    .l-header-menu { gap: 0 4.1rem; }
}

/* モバイルナビ */
.l-nav {
    position: fixed;
    inset: 0;
    z-index: 99;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: var(--header-height) 0 7rem;
    background-color: #FDFDFD;
    opacity: 0;
    visibility: hidden;
    transition: visibility .5s, opacity .5s;
}
.l-wrapper.is-open .l-nav {
    opacity: 1;
    visibility: visible;
}
.l-nav__logo { text-align: center; }
.l-nav__logo img { width: 19rem; }
@media (min-width: 640px) {
    .l-nav__logo img { width: 23.75rem; }
}
.l-nav__menu { padding-top: 4rem; }
@media (min-width: 640px) {
    .l-nav__menu { padding-top: 5rem; }
}
@media (min-width: 1024px) {
    .l-nav { display: none; }
}
.l-nav-menu {
    display: grid;
    grid-template-columns: 100%;
    gap: 3.2rem 0;
}
.l-nav-menu li { font-size: 1.6rem; text-align: center; line-height: 1.5; }
.l-nav-menu span {
    font-size: inherit;
    letter-spacing: .1em;
    cursor: pointer;
    transition: color .3s;
}
@media (any-hover: hover) {
    .l-nav-menu span:hover { color: #898989; }
}
.l-nav-menu span:focus-visible { color: #898989; }
@media (min-width: 640px) {
    .l-nav-menu { gap: 2rem 0; }
    .l-nav-menu li { font-size: 2rem; }
}

/* ==========================================================================
   ６．イントロ / メリット / ワークス セクション
   ========================================================================== */
/* — イントロ — */
.l-intro {
    padding-top: 16rem;
}
@media (max-width: 1024px) {
    .l-intro { padding-top: 16%; }
}
@media(max-width: 640px) {
        .l-intro { padding-top: 6%; }
}
.l-intro__ttl {
    color: #122;
    text-align: center;
    font-family: "Noto Sans JP";
    font-size: 2.4rem;
    font-weight: 400;
    line-height: 1.6;
    letter-spacing: 0.1em;
}
@media (max-width: 1024px) {
    .l-intro__ttl { font-size: 2rem; }
}
@media (max-width: 640px) {
    .l-intro__ttl { font-size: 1.6rem; }
}
.l-intro__images {
    display: grid;
    grid-template-columns: 135fr 132fr 92fr;
    gap: 0 0.8rem;
    max-width: 192rem;
    margin-inline: auto;
    padding-top: 2%;
}
@media(max-width: 640px) {
    .l-intro__images {
        padding-top: 4%;
    }
}
.l-intro__images figure:nth-child(2) { padding-top: 22.8%; }
.l-intro__images figure:nth-child(3) { padding-top: 20.4%; }
.l-intro__container {
    padding-top: 16.8rem;
}
@media (max-width: 1024px) {
    .l-intro__container { padding-top: 16%; }
}
.l-intro__cont p {
    color: #122;
    font-family: "Noto Sans JP";
    font-size: 1.8rem;
    font-weight: 400;
    line-height: 2;
}
@media (max-width: 1024px) {
    .l-intro__cont p { font-size: 1.6rem; }
}
@media (max-width: 640px) {
    .l-intro__cont p { font-size: 1.4rem; }
}

@media (min-width: 1024px) {
    .l-intro__container {
        display: flex;
        gap: 0 4.8rem;
        padding-top: 16.8rem;
        margin-left: max(var(--gutter), var(--view-width) * 0.5 - 60rem);
    }
    .l-intro__cont {
        flex: 0 0 calc(50% - 2.4rem);
        max-width: 53.3rem;
    }
    .l-intro__cont p { line-height: 2.3333333333; }
    .l-intro__img {
        flex: 1 1 auto;
        padding-top: 0.8rem;
    }
    .l-intro__images {
        grid-template-columns: 662fr 646fr 452fr;
        gap: 0 4rem;
    }
}
@media (min-width: 1366px) {
    .l-intro__images { gap: 0 8rem; }
}
@media (max-width: 1023.98px) {
    .l-intro__cont { padding: 0 var(--gutter); }
    .l-intro__img { padding: 2.25rem 0 0 calc(var(--gutter) + 2.1rem); }
}

/* — メリット — */
.l-merit {
    padding-top: 20.6rem;
}
@media(max-width: 1024px) {
    .l-merit {
        padding-top: 20%;
    }
}
.l-merit__hdr {
    display: flex;
    position: relative;
    padding-block: 8rem;
    margin-left: max(var(--gutter), var(--view-width) * 0.5 - 60rem);
}
@media(max-width: 1024px) {
    .l-merit__hdr {
        padding-block: 8%;
    }
}
.l-merit__hdr-img img {
    width: 100%; height: 100%; object-fit: cover;
}
.l-merit__anchors {
    padding-bottom: 12rem;
    display: grid;
    grid-template-columns: 100%;
    gap: 1.1rem 0;
}
@media(max-width: 1024px) {
    .l-merit__anchors {
        padding-bottom: 12%;
    }
}
.l-merit__anchor {
    color: inherit; text-decoration: none;
    max-width: 34.2rem;
    transition: opacity .3s;
}
@media(max-width: 1024px) {
    .l-merit__anchor {
    }
}
@media(max-width: 640px) {
    .l-merit__anchor {
        max-width: 100%;
    }
}
@media (any-hover: hover) {
    .l-merit__anchor:hover { opacity: .7; }
}
.l-merit__anchor i {
    margin-bottom: 1.6rem;
    display: block;
    color: #122;
    text-align: center;
    font-family: Poppins;
    font-size: 4rem;
    font-weight: 300;
    font-style: normal;
    line-height: 1;
    letter-spacing: 0.1em;
}
@media(max-width: 1024px) {
    .l-merit__anchor i {
        font-size: 3.2rem;
    }
}
@media(max-width: 640px) {
    .l-merit__anchor i {
        width: 30px;
        flex-shrink: 0;
        font-size: 2.4rem;
    }
}
.l-merit__anchor figure {
    display: flex;
    flex-direction: column;
    align-items: center;
}
.l-merit__anchor span {
    padding-top: 2.4rem;
    display: block;
    color: #122;
    text-align: center;
    font-family: "Noto Sans JP";
    font-size: 1.8rem;
    font-weight: 400;
    line-height: 1.44;
}
@media(max-width: 1024px) {
    .l-merit__anchor span {
        font-size: 1.6rem;
    }
}
@media(max-width: 640px) {
    .l-merit__anchor span {
        padding-top: 0;
        display: block;
        font-size: 1.4rem;
        font-weight: 500;
        line-height: 1.8888888889;
        text-align: left;
    }
}
.l-merit__sec {
    margin-top: 6rem;
}
.l-merit__sec + .l-merit__sec {
    margin-top: 6.2rem;
}

/* js-merit-slide */
@media(max-width: 640px) {
.js-merit-slide .l-merit__sec {
    margin-top: 0;
}
.js-merit-slide .l-merit__sec + .l-merit__sec {
    margin-top: 0;
}
}
@media (max-width: 640px) {
  .js-merit-slide {
    margin: 0 !important;
    padding: 0 1.6rem;
    position: relative;
  }
  .js-merit-slide .c-inner {
    max-width: 100% !important;
    width: 100% !important;
    padding: 0 !important;
  }
  .js-merit-slide .swiper-slide {
    width: 100% !important;
    box-sizing: border-box;
  }
}
@media (min-width: 641px) {
  .js-merit-slide .swiper-wrapper {
    display: block !important;
    width: 100% !important;
  }
  .js-merit-slide .swiper-slide {
    display: block !important;
    width: auto !important;
    margin-top: 6rem;
  }
  .js-merit-prev,
  .js-merit-next {
    display: none !important;
  }
}
@media(max-width: 640px) {
  .js-merit-slide .swiper-wrapper {
        display: flex !important;
        align-items: stretch !important;
    }
}
@media(max-width: 640px) {
    .l-merit-slider__prev,
    .l-merit-slider__next {
        display: flex;
        position: absolute;
        top: 40%;
        justify-content: center;
        align-items: center;
        width: 3.6rem;
        height: 3.6rem;
        background-color: var(--color-black);
        border-radius: 50%;
        color: #fff;
        transform: translateY(-50%);
        transition: background-color .5s, color .5s;
        z-index: 2;
        cursor: pointer;
    }
    .l-merit-slider__prev {
        left: 2%;
    }
    .l-merit-slider__next {
        right: 2%;
    }
}



@media (min-width: 640px) {
    .l-merit__anchors {
        display: flex;
        justify-content: space-between;
        gap: 0 1.2rem;
    }
    .l-merit__anchor {
        flex: 1;
    }
    .l-merit__anchor figure::before {
        content: "";
        display: block;
        width: 0.1rem;
        height: 3.2rem;
        background-color: currentColor;
        margin-inline: auto;
    }
}
@media (max-width: 639.98px) {
    .l-merit__anchor {
        display: flex;
        align-items: center;
        gap: 0 1.6rem;
    }
    .l-merit__anchor figure {
        flex: 0 0 8rem;
    }
}

/* — ワークス — */
.l-works {
    background-color: var(--color-grey);
}
@media(max-width: 1024px) {
    .l-works {
        padding-block: 16%;
    }
}
.l-works__container {
    padding-top: 8rem;
    position: relative;
}
@media(max-width: 1024px) {
    .l-works__container {
        padding-top: 8%;
    }
}
.l-works__ttl {
    display: flex;
    justify-content: center;
}
.l-works__ttl span {
    font-size: 2rem;
    font-weight: 500;
    letter-spacing: .12em;
    writing-mode: vertical-rl;
    line-height: 1;
}
.l-works__slider {
    margin-top: 2rem;
    overflow: hidden;
}
.l-works__navi {
    display: flex;
    gap: 0 2rem;
    width: fit-content;
    margin: 2rem var(--gutter) 0 auto;
}
.l-works__prev, .l-works__next {
    flex: 0 0 5.28rem;
    width: 5.28rem;
    height: 0.96rem;
    line-height: 0;
}
@media (any-hover: hover) {
    .l-works__prev:hover, .l-works__next:hover {
        opacity: .7;
    }
}

@media (min-width: 640px) {
    .l-works__ttl span { font-size: 3rem; }
}
@media (min-width: 1024px) {
    .l-works {
        padding-block: 16rem;
    }
    .l-works__container {
        display: flex;
        margin-left: max(var(--gutter), var(--view-width)*0.5 - 60rem);
    }
    .l-works__ttl {
        justify-content: flex-start;
        flex: 0 0 10.4rem;
        padding-top: 1.1rem;
    }
    .l-works__ttl span { font-size: 4rem; }
    .l-works__slider {
        flex: 1 1 auto;
        width: calc(100% - 10.4rem);
        margin-top: 0;
    }
    .l-works__slider .swiper-slide { width: 81.8rem; }
    .l-works__navi {
        gap: 0 8rem;
        margin: 4rem max(var(--gutter), var(--view-width)*0.5 - 60rem) 0 auto;
    }
    .l-works__prev, .l-works__next {
        flex: 0 0 9rem;
        width: 9rem;
        height: 1.7rem;
        cursor: pointer;
    }
}
@media (max-width: 1023.98px) {
    .l-works__slider { margin-left: var(--gutter); }
}

/* — プロミス — */
.l-promise {
}
@media(max-width: 1024px) {
    .l-promise {
        padding-top: 16%;
    }
}

.l-promise__inner {
    padding-bottom: 120px;
}
@media(max-width: 1024px) {
    .l-promise__inner {
        padding-bottom: 12%;
    }
}

.l-promise__desc {
    padding-top: 1.8rem
}

.l-promise__grid {
    display: grid;
    grid-template-columns:100%;
    gap: 5rem 0;
    padding-top: 5rem
}

@media (min-width: 640px) {
    .l-promise__grid {
        display: flex;
        justify-content: space-between;
        gap: 0 4rem
    }
}

@media (min-width: 1024px) {
    .l-promise {
        padding-top: 16rem;
    }

    .l-promise__desc {
        padding-top: 3.8rem
    }

    .l-promise__desc p {
        font-size: 1.8rem;
        line-height: 2.3333333333
    }

    .l-promise__grid {
        padding-top: 8.3rem
    }
}

.l-promise-card__num {
    color: #122;
    text-align: center;
    font-family: Poppins;
    font-size: 3.2rem;
    font-style: normal;
    font-weight: 300;
    line-height: 1;
}
@media(max-width: 1024px) {
    .l-promise-card__num {
        font-size: 2.4rem;
    }
}

@media(max-width: 640px) {
    .l-promise-card__num {
        font-size: 2rem;
        text-align: left;
    }
}




.l-promise-card__img {
    text-align: center
}

.l-promise-card__ttl {
    margin-block: 3.2rem;
    color: #122;
    text-align: center;
    font-family: "Noto Sans JP";
    font-size: 2.4rem;
    font-style: normal;
    font-weight: 400;
    line-height: 1.33;
}

@media(max-width: 1024px) {
    .l-promise-card__ttl {
        margin-block: 6%;
        font-size: 2rem;
    }
}

@media(max-width: 640px) {
    .l-promise-card__ttl {
        margin: 0;
        font-size: 1.8rem;
        text-align: left;
    }
}

.l-promise-card__desc p {
    color: #122;
    font-family: "Noto Sans JP";
    font-size: 1.8rem;
    font-style: normal;
    font-weight: 400;
    line-height: 1.77;
}

@media(max-width: 1024px) {
    .l-promise-card__desc p {
        font-size: 1.4rem;
    }
}

@media (min-width: 640px) {
    .l-promise-card {
        flex: 1 1 100%;
        max-width: 28rem
    }

    .l-promise-card__num {
        text-align: center
    }

    .l-promise-card__ttl {
        text-align: center
    }

    .l-promise-card__img::before {
        content: "";
        display: block;
        width: 0.1rem;
        height: 3.3rem;
        background-color: #898989;
        margin-inline: auto
    }

    .l-promise-card__desc {
        padding-top: 1rem
    }
}

@media (min-width: 1024px) {
    .l-promise-card__num {
    }

    .l-promise-card__ttl {
    }

    .l-promise-card__desc {
    }

    .l-promise-card__desc p {
    }
}

@media (max-width: 639.98px) {
    .l-promise-card {
        display: grid;
        grid-template:"num img" auto "ttl img" auto "desc desc" 1fr/1fr 10rem
    }

    .l-promise-card__num {
        align-self: flex-end;
        grid-area: num
    }

    .l-promise-card__img {
        grid-area: img
    }

    .l-promise-card__ttl {
        align-self: flex-start;
        grid-area: ttl;
        padding-top: 1rem
    }

    .l-promise-card__desc {
        grid-area: desc;
        padding-top: 2rem
    }
}

/* ==========================================================================
   ７．イベント関連セクション（.l-event, .l-event-art など）
   ========================================================================== */
/* — イベント一覧（l-event） — */
.l-event {
    padding-block: 16rem;
}
@media (max-width: 1024px) {
    .l-event {
        padding-block: 16%;
    }
}
.l-event__ttl {
    color: #FFF;
    font-family: "Noto Sans JP";
    font-size: 2.4rem;
    font-weight: 400;
    line-height: 1.62;
    border-bottom: 1px solid #BFBFBF;
}
.l-event__arts {
    display: grid;
    grid-template-columns: 100%;
    gap: 6rem 0;
}
@media (min-width: 1024px) {
    /* 追加のスタイルが不要なら空でOK */
}

/* — イベント個別（l-event-art） — */
.l-event-art {
    position: relative;
}
.l-event-art__num {
    position: relative;
    z-index: 10;
    color: #122;
    font-family: Poppins;
    font-size: 4rem;
    font-weight: 300;
    line-height: 1;
    letter-spacing: 4px;
}

.l-event-art__container {
    margin-top: 16.7rem;
    padding-bottom: 16rem;
    background-color: #E5E5E5;
}
@media (max-width: 1024px) {
    .l-event-art__container {
        margin-top: 16%;
        padding-bottom: 16%;
    }
}
.l-event-art__ttl {
    color: #122;
    font-family: "Noto Sans JP";
    font-size: 2.4rem;
    font-weight: 400;
    line-height: 1.66;
}
@media (max-width: 1024px) {
    .l-event-art__ttl { font-size: 2rem; }
}
.l-event-art__info {
    display: grid;
    grid-template-columns: 100%;
    gap: 1rem 0;
    padding-top: 5rem;
}
@media (max-width: 1024px) {
    .l-event-art__info { padding-top: 5%; }
}
.l-event-art__info dt {
    padding-block: 1rem;
    margin-bottom: 1.6rem;
    color: #122;
    font-family: "Noto Sans JP";
    font-size: 1.8rem;
    font-weight: 400;
    line-height: 1;
    border-bottom: 1px solid #BFBFBF;
}
@media (max-width: 1024px) {
    .l-event-art__info dt { font-size: 1.6rem; }
}
.l-event-art__info dd {
    line-height: 1.5;
}
.l-event-art__info .-date {
    color: #122;
    font-family: "Noto Sans JP";
    font-size: 2.4rem;
    font-weight: 500;
    line-height: 1.5;
}
@media (max-width: 1024px) {
    .l-event-art__info .-date { font-size: 1.8rem; }
}
.l-event-art__info .-time {
    margin-top: 1rem;
    color: #122;
    font-family: "Noto Sans JP";
    font-size: 1.8rem;
    font-weight: 500;
    line-height: 1.5;
}
@media (max-width: 1024px) {
    .l-event-art__info .-time { font-size: 1.4rem; }
}
.l-event-art__info .-notice {
    font-size: 1.4rem;
    line-height: 2.2;
}
@media(max-width: 1024px) {
    .l-event-art__info .-notice {
        font-size: 1.2rem;
    }
}
.l-event-art__info .-place {
    font-size: 2rem;
    font-weight: 600;
    line-height: 1.5;
}
.l-event-art__point {
    position: relative;
    z-index: 0;
    padding-block: 0 6.4rem;
    color: #122;
    font-family: Poppins;
    font-size: 4rem;
    font-weight: 300;
    line-height: 1;
    letter-spacing: 0.1em;
    text-align: center;
}
@media (max-width: 1024px) {
    .l-event-art__point {
        padding-block: 0 6%;
        font-size: 3.2rem;
    }
}
.l-event-art__slider {
    position: relative;
    z-index: 1;
    margin-top: -2rem;
}

.l-event-art__data,
.l-event-art__access {
    margin-top: 6.4rem;
    padding-inline: 4.8rem;
}
@media(max-width: 640px) {
    .l-event-art__data,
    .l-event-art__access {
        margin-top: 6%;
        padding-inline: 4%;
    }
}

.l-event-art__num {
    position: absolute;
    top: -4.7rem;
    right: 0;
}
@media(max-width: 640px) {
    .l-event-art__num {
        top: -2%;
        right: -4%;
    }
}

/* — イベント個別 レイアウト（large screens） — */
@media (min-width: 1024px) {
    .l-event-art__num {
        position: absolute;
        top: -4.7rem;
        right: 0;
    }
    .l-event-art__hdr {
        display: flex;
        position: relative;
        z-index: 2;
        justify-content: space-between;
        gap: 0 2.4rem;
        padding-bottom: 8rem;
    }
    .l-event-art__hdr-thumb {
        flex: 1 1 auto;
        transform: translateY(-8.7rem);
    }
    .l-event-art__hdr-cont {
        flex: 0 0 38rem;
        padding: 4rem 4.8rem 0 0;
    }
    .l-event-art__info {
        gap: 1.5rem 0;
    }
}

/* — イベント個別 レイアウト（tablet〜mobile） — */
@media (max-width: 1024px) {
    .l-event-art__num {
        margin-left: calc(-1 * var(--gutter));
        margin-bottom: -0.33em;
    }
    .l-event-art__hdr {
        display: flex;
        position: relative;
        z-index: 2;
        justify-content: space-between;
        gap: 0 2.4rem;
        padding-bottom: 8%;
    }
    .l-event-art__hdr-thumb {
        flex: 1 1 auto;
        transform: translateY(-8%);
        position: relative;
    }
    .l-event-art__hdr-thumb img {
        position: relative;
        z-index: 1;
    }
    .l-event-art__hdr-cont {
        flex: 0 0 32rem;
        padding: 2% 3% 0 0;
    }
}

/* — イベント個別 コンパクト（スマホ極小） — */
@media (max-width: 640px) {
    .l-event-art__hdr {
        flex-direction: column;
    }
    .l-event-art__hdr-cont {
        padding: 4%;
    }
}

/* — イベントスライダー（l-event-slider） — */
.l-event-slider {
    position: relative;
    padding: 0 2.4rem;
}
.l-event-slider__prev,
.l-event-slider__next {
    display: flex;
    position: absolute;
    top: 50%;
    justify-content: center;
    align-items: center;
    width: 3.6rem;
    height: 3.6rem;
    background-color: var(--color-black);
    border-radius: 50%;
    color: #fff;
    transform: translateY(-50%);
    transition: background-color .5s, color .5s;
    z-index: 2;
    cursor: pointer;
}
.l-event-slider__prev {
    left: 4.8rem;
}
.l-event-slider__next {
    right: 4.8rem;
}

@media(max-width: 1024px) {
    .l-event-slider__prev {
        left: -2%;
    }
    .l-event-slider__next {
        right: -2%;
    } 
}


@media (any-hover: hover) {
    .l-event-slider__prev:hover,
    .l-event-slider__next:hover {
        background-color: #fff;
        color: var(--color-black);
    }
}
.l-event-slider__prev:focus-visible,
.l-event-slider__next:focus-visible {
    background-color: #fff;
    color: var(--color-black);
}
.l-event-slider__prev svg,
.l-event-slider__next svg {
    flex: 0 0 47.2222%;
    line-height: 0;
}
@media (min-width: 640px) {
    .l-event-slider .swiper-slide {
        width: 52.1rem;
    }
}
@media (min-width: 1024px) {
    .l-event-slider {
        padding: 0 16rem;
    }
    .l-event-slider__prev,
    .l-event-slider__next {
        width: 7.2rem;
        height: 7.2rem;
    }
}
@media(max-width: 640px) {
.l-event-slider__prev { left: -4%; }
.l-event-slider__next { right: -4%; }
}

/* — イベントカード（.l-event-card） — */
.l-event-card__num {
    margin-bottom: 16px;
    display: flex;
    align-items: center;
    width: 6rem;
    height: 2.3rem;
    color: #122;
    font-family: Poppins;
    font-size: 2.4rem;
    font-weight: 300;
    line-height: 1;
}
.l-event-card__ttl {
    color: #122;
    font-family: "Noto Sans JP";
    font-size: 2.4rem;
	min-height:74px;
    font-weight: 400;
    line-height: 1.54;
}
@media (max-width: 1024px) {
    .l-event-card__ttl { font-size: 2rem; }
	min-height:unset;
}
.l-event-card__txt {
    padding-top: 1.6rem;
    min-height: calc(1.6rem + 9em);
}
.l-event-card__txt p {
    color: #122;
    font-family: "Noto Sans JP";
    font-size: 1.6rem;
    font-weight: 400;
    line-height: 2;
}
@media (max-width: 1024px) {
    .l-event-card__txt p {
        font-size: 1.4rem;
        min-height: 140px;
    }
}
@media(max-width: 640px) {
    .l-event-card__txt p {
        min-height: 160px;
    }
}
.l-event-card__img {
    display: flex;
    align-items: flex-end;
    padding-top: 8rem;
}
@media (max-width: 1024px) {
    .l-event-card__img { padding-top: 8%; }
}
@media (min-width: 640px) {
    .l-event-card {
        display: grid;
        grid-template-columns: 100%;
        grid-template-rows: auto auto auto 1fr;
        height: 100%;
    }
}

/* — イベント詳細データ／アクセス — */
.l-event-data__ttl,
.l-event-access__ttl {
    margin-bottom: 2.4rem;
    padding-bottom: 1.6rem;
    color: #122;
    font-family: "Noto Sans JP";
    font-size: 1.8rem;
    font-weight: 400;
    line-height: 1;
    border-bottom: 1px solid #BFBFBF;
}
@media(max-width: 640px) {
    .l-event-data__ttl,
    .l-event-access__ttl {
    margin-bottom: 3%;
    padding-bottom: 2%;
    }
}
.l-event-data__group {
    display: flex;
    gap: 5.5rem;
}
.l-event-data__item {
    color: #122;
    font-family: "Noto Sans JP";
    font-size: 1.6rem;
    font-weight: 400;
    line-height: 2.5;
}
@media(max-width: 640px) {
    .l-event-data__item {
        font-size: 1.4rem;
    }
}
.l-event-access__notice {
    color: #122;
    font-family: "Noto Sans JP";
    font-size: 1.6rem;
    font-weight: 400;
    line-height: 2;
}
@media(max-width: 640px) {
    .l-event-access__notice {
        font-size: 1.4rem;
    }
}
.l-event-access__list {
    display: grid;
    grid-template-columns: 100%;
    gap: 0.4rem 0;
    padding-top: 0.8rem;
    font-size: 1.6rem;
}
.l-event-access__list li {
    line-height: 1.5;
}
.l-event-access__map {
    padding-top: 2.2rem;
}
.l-event-access__map iframe {
    width: 100%;
    height: 30rem;
    border: 0;
}
@media (min-width: 768px) {
    .l-event-access__address {
        display: grid;
        grid-template-columns: 12.4rem 1fr;
        gap: 0 0.8rem;
    }
    .l-event-access__address dd { padding-top: 0; }
    .l-event-access__list {
        display: flex;
        flex-wrap: wrap;
        gap: 0 .25em;
        padding-top: 1.2rem;
    }
}
@media (min-width: 1024px) {
    .l-event-access__list {
        padding-top: 2.8rem;
        font-size: 2rem;
    }
    .l-event-access__map {
        padding-top: 3.7rem;
    }
    .l-event-access__map iframe {
        height: 45rem;
    }
}
@media (max-width: 767.98px) {
    .l-event-access__address dt {
        width: fit-content;
        padding: 0 2.5em;
    }
    .l-event-data__group {
        flex-direction: column;
        gap: 0;
    }
}

/* ==========================================================================
   ８．CTA / Contact / Company / Biz セクション
   ========================================================================== */
/* — CTA — */
.l-cta {
    padding-top: 1.9rem;
    padding-bottom: 3.1rem;
    background: url("../images/openhouse03/cta-bg.jpg") no-repeat center/cover;
}
.l-cta__ttl {
    margin-bottom: 2.4rem;
    padding-bottom: 2.4rem;
    max-width: 26.6rem;
    margin-inline: auto;
    border-bottom: 1px solid #fff;
    color: #FFF;
    font-family: "Noto Sans JP";
    font-size: 2.4rem;
    font-weight: 400;
    line-height: 1;
    text-align: center;
}
.l-cta__txt {
    max-width: 614px;
    width: 100%;
    margin-inline: auto;
    padding-bottom: 3.2rem;
    text-align: center;
    margin: 0 auto;
}
.l-cta__term {
    padding-block: 4rem 3.2rem;
    color: #FFF;
    font-family: "Noto Sans JP";
    font-size: 1.4rem;
    font-weight: 400;
    line-height: 1;
    text-align: center;
}
.l-cta__btn {
    margin-inline: auto;
    margin-top: 4rem;
}
@media(max-width: 1024px) {
    .l-cta__btn {
        margin-top: 4%;
    }
}
@media(max-width: 640px) {
    .l-cta__btn {
        margin-top: 6%;
    }
}
.l-cta__privacy {
    height: 14rem;
    max-width: 60rem;
    padding: 1.8rem 2.4rem;
    border: 1px solid #fff;
    margin-inline: auto;
}
@media(max-width: 640px) {
    .l-cta__privacy {
        height: 10rem;
    }
}
.l-cta__privacy p {
    color: #FFF;
    font-family: "Noto Sans JP";
    font-size: 1.6rem;
    font-weight: 400;
    line-height: 1.5;
}
@media(max-width: 1024px) {
    .l-cta__privacy p {
        font-size: 1.4rem;
    }
}
@media(max-width: 640px) {
    .l-cta__privacy p {
        font-size: 1.3rem;
    }
}
.l-cta__privacy .simplebar-track {
    right: 0.9rem;
    width: 0.5rem;
}
.l-cta__privacy .simplebar-scrollbar {
    width: 0.5rem;
}
.l-cta__privacy .simplebar-track.simplebar-vertical .simplebar-scrollbar::before {
    inset: 0.4rem 0;
    background-color: #fff;
    opacity: 1;
}

@media (min-width: 1024px) {
    .l-cta {
        padding-top: 7.4rem;
        padding-bottom: 8rem;
        background-image: url("../images/openhouse03/cta-bg.jpg");
    }
    .l-cta__txt img {
        width: 100%;
    }
}
@media (max-width: 1024px) {
    .l-cta {
        padding-block: 2% 3%;
    }
    .l-cta__ttl {
        margin-bottom: 4%;
        padding-bottom: 4%;
        font-size: 2rem;
    }
    .l-cta__txt {
        padding-bottom: 3%;
    }
    .l-cta__privacy p {
        font-size: 1.4rem;
    }
}
@media(max-width: 640px) {
    .l-cta {
        padding: 6%;
    }
    .l-cta__txt {
        padding-bottom: 6%;
    }
}

/* — Contact — */
.l-contact {
    padding-top: 16rem;
    background-color: #E5E5E5;
}
@media(max-width: 1024px) {
    .l-contact {
        padding-top: 16%;
    }
}
.l-contact__desc {
    padding-block: 8rem 6.4rem;
}
@media(max-width: 1024px) {
    .l-contact__desc {
        padding-block: 8% 6%;
    }
}
.l-contact__desc p {
    max-width: 522px;
    margin: 0 auto;
    color: #122;
    font-family: "Noto Sans JP";
    font-size: 1.8rem;
    font-weight: 400;
    line-height: 1.88;
}
@media(max-width: 1024px) {
    .l-contact__desc p {
        font-size: 1.6rem;
    }
}
@media(max-width: 640px) {
    .l-contact__desc p {
        font-size: 1.4rem;
    }
}
.l-contact__form {
    max-width: 900px;
    margin: 0 auto;
}

/* — Company テーブル — */
.l-company {
    padding-bottom: 16rem;
}
@media(max-width: 1024px) {
    .l-company {
        padding-bottom: 16%;
    }
}
.l-company__table {
/*     padding-top: 8rem; */
}
@media(max-width: 1024px) {
    .l-company__table {
/*         padding-top: 8%; */
    }
}
.l-company__table-th,
.l-company__table-td {
    color: #122;
    font-family: "Noto Sans JP";
    font-size: 1.6rem;
    font-weight: 400;
    line-height: 2;
}
@media (min-width: 640px) {
    .l-company__table {
        display: flex;
        flex-wrap: wrap;
    }
    .l-company__table-th {
        flex: 0 0 16rem;
        padding-top: 2.4rem;
    }
    .l-company__table-td {
        flex: 0 0 calc(100% - 16rem);
        padding-top: 2rem;
        padding-left: 2.4rem;
        position: relative;
    }
    .l-company__table-td::before {
        content: "";
        position: absolute;
        top: 2.4rem; left: -0.05rem;
        width: 0.1rem; height: 2.4rem;
        background-color: #BFBFBF;
    }
    .l-company__table-th,
    .l-company__table-td {
        padding-bottom: 1.6rem;
        border-bottom: 1px solid #BFBFBF;
    }
}
@media (max-width: 639.98px) {
    .l-company__table-th {
        position: relative;
        padding-top: 1rem;
        font-size: 1.4rem;
    }
    .l-company__table-td {
        padding-top: 0.3rem;
        border-bottom: 1px solid #BFBFBF;
        font-size: 1.4rem;
    }
}

/* — Biz セクション — */
.l-biz {
}
@media(max-width: 1024px) {
    .l-biz {
        padding-block: 16%;
    }
}
.l-biz__ttl {
    padding-top: 8rem;
    color: #122;
    font-family: "Noto Sans JP";
    font-size: 2.4rem;
    font-weight: 400;
    line-height: 1;
}
@media(max-width: 1024px) {
    .l-biz__ttl {
        padding-top: 8%;
    }
}
.l-biz__blks {
    display: grid;
    grid-template-columns: 100%;
    gap: 4.3rem 0;
}
@media(max-width: 1024px) {
    .l-biz__blks {
        padding-top: 8%;
    }
}
@media (min-width: 1024px) {
    .l-biz {
        padding-block: 16rem;
    }
    .l-biz__blks {
        gap: 8.6rem 0;
        padding-top: 8rem;
    }
}

/* ==========================================================================
   ９．固定バナー/CTA
   ========================================================================== */
.l-fixed-bnr {
    display: none;
}
@media (min-width: 640px) {
    .l-fixed-bnr {
        display: block;
        position: fixed;
        bottom: 2.4rem;
        right: 2.4rem;
        z-index: 98;
        width: 18rem;
        height: 18rem;
    }
}
@media (min-width: 1024px) and (any-hover: hover) {
    .l-fixed-bnr:hover { opacity: .7; }
}
@media (min-width: 1366px) {
    .l-fixed-bnr {
        right: 2.4rem;
        width: 20rem;
        height: 20rem;
    }
}
@media (min-width: 1500px) {
    .l-fixed-bnr {
        width: 24rem;
        height: 24rem;
    }
}

.l-fixed-cta {
    display: none;
}
@media (max-width: 640px) {
    .l-fixed-cta.is-show {
        display: flex;
        position: fixed;
        left: 0;
        bottom: 0;
        z-index: 101;
        width: 100%;
        gap: 2%;
    }
}

.l-fixed-cta__phone img,
.l-fixed-cta__amzn img {
    width: 100%;
    height: auto;
}


/* ==========================================================================
   １０．Footer
   ========================================================================== */
.l-footer {
    padding-block: 16rem 4.8rem;
}
@media(max-width: 1024px) {
    .l-footer {
        padding-block: 16% 6%;
    }
}
.l-footer__logo {
    text-align: center;
}
.l-footer__logo img {
    margin: 0 auto;
}
.l-footer__copyright {
    margin-top: 7.4rem;
    color: #122;
    text-align: center;
    font-family: "Noto Sans JP";
    font-size: 1.8rem;
    font-weight: 400;
    line-height: 2.33;
}
@media(max-width: 1024px) {
    .l-footer__copyright {
        margin-top: 7%;
        font-size: 1.6rem;
    }
}
@media(max-width: 640px) {
    .l-footer__copyright {
        font-size: 1.2rem;
    }
}
.l-footer__menu {
    padding-top: 4rem;
}
@media (min-width: 1024px) {
    .l-footer__menu { display: none; }
    .l-footer__logo img { width: 25rem; }
}

.l-footer-menu {
    display: grid;
    grid-template-columns: 100%;
    gap: 1.6rem 0;
}
.l-footer-menu li {
    font-size: 1.6rem;
    text-align: center;
    line-height: 1.5;
}
@media(max-width: 1024px) {
    .l-footer-menu li {
        font-size: 1.4rem;
    }
}
.l-footer-menu a {
    text-decoration: none;
    letter-spacing: .1em;
    transition: color .3s;
}
@media (any-hover: hover) {
    .l-footer-menu a:hover { color: #898989; }
}
.l-footer-menu a:focus-visible { color: #898989; }
@media (min-width: 640px) {
    .l-footer-menu { gap: 2rem 0; }
    .l-footer-menu li { font-size: 2rem; }
}

/* ==========================================================================
   １１．FV（ファーストビュー）セクション
   ========================================================================== */
/* ※コメントアウトされていた旧コードは削除 ／ メディアクエリを統合 */
.l-fv {
    position: relative;
}
@media (min-width: 640px) {
    .l-fv {
        padding-right: 10vw;
    }
}
@media (min-width: 1024px) {
    .l-fv {
        padding-right: 10vw;
    }
}
@media (min-width: 1366px) {
    .l-fv {
        padding-right: 20rem;
    }
}
.l-fv__main {
    position: relative;
}
.l-fv__catch {
    position: absolute;
    top: 0; right: 0;
    padding: 1vw 5vw 0 0;
    box-sizing: border-box;
    z-index: 1;
}
@media(max-width: 1024px) {
    .l-fv__catch {
        padding: 2vw 5vw 0 0;
    }
}
@media(max-width: 640px) {
    .l-fv__catch {
        top: 50%;
        transform: translateY(-50%);
    }
}
.l-fv__catch-sub {
    color: #FFF;
    text-align: right;
    font-family: "Noto Sans JP";
    font-size: 2.4rem;
    font-weight: 400;
    line-height: 1.62;
}
@media(max-width: 1440px) {
    .l-fv__catch-sub {
        font-size: 1.5vw;
    }
}
@media(max-width: 640px) {
    .l-fv__catch-sub {
        font-size: 1.6rem;
    }
}
.l-fv__catch-main {
    padding-top: 2vw;
    color: #FFF;
    text-align: right;
    font-family: "Noto Sans JP";
    font-size: 4.8rem;
    font-weight: 400;
    line-height: 1.66;
}
@media(max-width: 1440px) {
    .l-fv__catch-main {
        font-size: 3vw;
    }
}
@media(max-width: 640px) {
    .l-fv__catch-main {
        font-size: 2.4rem;
    }
}
.l-fv__catch-main span{
    font-size: 3.2rem;
    display: block;
    border: solid 1px #fff;
    padding: 4px 12px;
    width: fit-content;
    margin-left: auto;
    text-align: center;
}
@media(max-width: 1024px) {
	.l-fv__catch-main span{
        font-size: 2vw;
	}
}
@media(max-width: 640px) {
		.l-fv__catch-main span{
        font-size: 1.6rem;
	}
}
.l-fv__main:after{
	content:"※物件の画像はイメージです。";
	position:absolute;
	left:1rem;
	bottom:1rem;
	color:#fff;
	font-size:14px;
}
@media(max-width: 640px) {
	.l-fv__main:after{
        bottom: calc(32vw + 2rem);
		font-size:12px;
	}
}
.l-fv__date {
    position: absolute;
    bottom: 0; right: 0;
    background: #EDEDED;
    padding: 2vw 4vw;
    box-sizing: border-box;
    z-index: 1;
}
@media(max-width: 640px) {
    .l-fv__date {
        position: relative;
        margin-left: auto;
/*         top: -4vw; */
		top:0;
        max-width: 351px;
        width: 100%;
    }
}
.l-fv__date-label {
    max-width: 97px;
    width: 100%;
    color: #122;
    font-family: "Noto Sans JP";
    font-size: 1.4rem;
    font-weight: 400;
    line-height: 1.33;
    width: 100%;
    text-align: center;
    padding-inline: 1.2rem;
    padding-bottom: 0.4rem;
    border-bottom: 1px solid #112222;
}
.l-fv__date-range {
    padding-top: 2vw;
    color: #122;
    font-family: Poppins;
    font-size: 4rem;
    font-weight: 400;
    line-height: 1;
}
@media(max-width: 1024px) {
    .l-fv__date-range {
        font-size: 3.2rem;
    }
}
.l-fv__date-sm {
    color: #122;
    font-family: Poppins;
    font-size: 2.4rem;
    font-weight: 400;
    line-height: normal;
}
@media(max-width: 1024px) {
    .l-fv__date-sm {
        font-size: 2rem;
    }
}
.l-fv__date-location {
    padding-top: 2vw;
    color: #122;
    text-align: right;
    font-family: "Noto Sans JP";
    font-size: 2rem;
    font-weight: 400;
    line-height: normal;
}
@media(max-width: 1024px) {
    .l-fv__date-location {
        font-size: 1.6rem;
    }
}
.l-fv__date-note {
    display: block;
    padding-block: 0.4rem;
    font-size: 1.6rem;
}
@media(max-width: 1024px) {
    .l-fv__date-note {
        font-size: 1.4rem;
    }
}
/* ===============================================
   共通リセット
   =============================================== */
#modelhouse-form .form-list {
  margin: 0;
  padding: 0;
  list-style: none;
  display: flex;
  flex-direction: column; /* 各 <li> は縦積み */
  box-sizing: border-box;
}

#modelhouse-form .form-list > li.clearfix {
  width: 100%;
  display: flex;
  flex-direction: row;    /* デフォルトでPC向けの横並び */
  align-items: flex-start;
  margin-bottom: 20px;
  box-sizing: border-box;
  justify-content: space-between;
  gap: 0 48px;
  flex-wrap: wrap;
}

#modelhouse-form input[type="submit"], #form input[type="button"] {
    border-radius: 0!important;
}

#modelhouse-form .form-common__inner--privacy h3, .section-form-privacy h3 {
    font-size: 1.6rem;
}

#modelhouse-form .form-common__inner--privacy h2 {
    font-size: 1.8rem!important;
}

#modelhouse-form input#zip {
    width: 100%!important;
}
.form-common__inner--privacy p {
    font-size: 16px;
}

#modelhouse-form .form-list > li.clearfix .itemform_add_search button {
    background: #3A3A3A!important;
}

  #modelhouse-form .form-list > li.clearfix .item-form input[type="text"],
  #modelhouse-form .form-list > li.clearfix .item-form input[type="email"],
  #modelhouse-form .form-list > li.clearfix .item-form input[type="tel"],
  #modelhouse-form .form-list > li.clearfix .item-form input[type="date"],
  #modelhouse-form .form-list > li.clearfix .item-form select,
  #modelhouse-form .form-list > li.clearfix .item-form textarea {
    background: #FFF!important;
  }

/* ===============================================
   PC（641px以上）：ラベルと入力欄を横並び
   =============================================== */
@media (min-width: 641px) {
  /* 各liはそのまま幅100%、縦積みのまま */
  #modelhouse-form .form-list > li.clearfix {
    flex-direction: row;
  }

  /* .item-name */
  #modelhouse-form .form-list > li.clearfix .item-name {
    float: none !important;       /* 元のfloatをリセット */
    max-width: 244px;
    flex-shrink: 0;               /* ラベルが縮小しない */
    width: 244px;                 /* 固定幅として扱う */
    font-size: 16px;
    font-weight: bold;
    box-sizing: border-box;
    margin-right: 0;
    font-weight: 500!important;
  }

  /* .item-form */
  #modelhouse-form .form-list > li.clearfix .item-form {
    float: none !important;
    flex: 1;                      /* 残り幅すべてを入力欄に充てる */
    box-sizing: border-box;
  }

  #modelhouse-form .form-list > li.clearfix .item-notice {
    flex: 0 0 100%;       /* 親の flex 行の中で次の行に回し、幅100% */
    margin-top: 8px;      /* 上との隙間をお好みで調整 */
    box-sizing: border-box;
    font-size: 14px;
    }

  /* input/select/textarea は幅100% */
  #modelhouse-form .form-list > li.clearfix .item-form input[type="text"],
  #modelhouse-form .form-list > li.clearfix .item-form input[type="email"],
  #modelhouse-form .form-list > li.clearfix .item-form input[type="tel"],
  #modelhouse-form .form-list > li.clearfix .item-form input[type="date"],
  #modelhouse-form .form-list > li.clearfix .item-form select,
  #modelhouse-form .form-list > li.clearfix .item-form textarea {
    width: 100%;
    box-sizing: border-box;
    background-color: #fff;
    border: 1px solid #ccc;
    border-radius: 6px;
    padding: 10px 12px;
    font-size: 15px;
    line-height: 1.4;
    color: #333;
    transition: border-color 0.2s;
  }
  #modelhouse-form .form-list > li.clearfix .item-form input:focus,
  #modelhouse-form .form-list > li.clearfix .item-form select:focus,
  #modelhouse-form .form-list > li.clearfix .item-form textarea:focus {
    outline: none;
    border-color: #4a90e2;
  }

  /* “郵便番号＋住所検索” は横並びを維持 */
  #modelhouse-form .form-list > li.clearfix .itemform_add_search {
    display: flex;
    align-items: center;
    gap: 8px;
    width: 100%;
    box-sizing: border-box;
  }
  #modelhouse-form .form-list > li.clearfix .itemform_add_search .add_box {
    flex: 1;
    box-sizing: border-box;
  }
  #modelhouse-form .form-list > li.clearfix .itemform_add_search button {
    flex: 0 0 140px;
    height: 40px;
    background-color: #333;
    color: #fff;
    border: none;
    border-radius: 6px;
    font-size: 15px;
    cursor: pointer;
    transition: background-color 0.2s;
    box-sizing: border-box;
  }
  #modelhouse-form .form-list > li.clearfix .itemform_add_search button:hover {
    background-color: #555;
  }
}

/* ===============================================
   スマホ（640px以下）：ラベル・入力欄を縦並び
   =============================================== */
@media (max-width: 640px) {
  /* 各liを縦積みに */
  #modelhouse-form .form-list > li.clearfix {
    flex-direction: column;
    margin-bottom: 16px;
  }

  /* .item-name */
  #modelhouse-form .form-list > li.clearfix .item-name {
    float: none !important;
    width: 100%;
    margin-bottom: 6px;
    font-size: 16px;
    box-sizing: border-box;
    margin-right: 0;
    font-weight: 500;
  }

  /* .item-form */
  #modelhouse-form .form-list > li.clearfix .item-form {
    float: none !important;
    width: 100%;
    box-sizing: border-box;
  }

  /* input/select/textarea は幅100% */
  #modelhouse-form .form-list > li.clearfix .item-form input[type="text"],
  #modelhouse-form .form-list > li.clearfix .item-form input[type="email"],
  #modelhouse-form .form-list > li.clearfix .item-form input[type="tel"],
  #modelhouse-form .form-list > li.clearfix .item-form input[type="date"],
  #modelhouse-form .form-list > li.clearfix .item-form select,
  #modelhouse-form .form-list > li.clearfix .item-form textarea {
    width: 100%;
    box-sizing: border-box;
    border: none;
  }

  /* “郵便番号＋住所検索” は横並びを維持 */
  #modelhouse-form .form-list > li.clearfix .itemform_add_search {
    display: flex;
    align-items: center;
    gap: 8px;
    width: 100%;
    box-sizing: border-box;
  }
  #modelhouse-form .form-list > li.clearfix .itemform_add_search .add_box {
    width: calc(100% - 148px); /* ボタン140px＋隙間8px分を引く */
    box-sizing: border-box;
  }
  #modelhouse-form .form-list > li.clearfix .itemform_add_search button {
    width: 140px;
    height: 40px;
  }
    #modelhouse-form .form-list > li.clearfix .item-notice {
        font-size: 12px;
    }
#modelhouse-form input[type="submit"], #form input[type="button"] {
    line-height: 50px!important;
}

.form-common__inner--privacy, .section-form-privacy {
    height: 150px!important;
}

.form-common__inner--privacy p {
    font-size: 14px;
}

}










/* プライバシー文書スクロールコンテナ */
.section-form-privacy__cnt {
    height: 180px;
    overflow-y: scroll;
    padding: 24px;
    border: 1px solid;
    margin-bottom: 40px;
    background: #fff;
}
.section-form-privacy__cnt h3 {
    margin: 24px 0 12px;
    font-size: 16px;
    font-weight: normal;
}
.section-form-privacy__cnt p {
    font-size: 16px;
}
@media (max-width: 640px) {
    .section-form-privacy__cnt h3 {
        font-size: 14px;
        margin-top: 24px;
        margin-bottom: 12px;
        padding-bottom: 4px;
    }
    .section-form-privacy__cnt p {
        font-size: 10px;
    }
}

/* reCAPTCHA バッジ非表示 */
.grecaptcha-badge {
    visibility: hidden;
}

/* ==========================================================================
   １３．共通ラッパー・タイトルなど
   ========================================================================== */
.common-wrap {
    margin: 0 auto;
    padding-inline: var(--gutter);
    max-width: 124rem;
    width: 100%;
}
@media(max-width: 1024px) {
    .common-wrap {
        padding-inline: var(--gutter);
    }
}
.common-title {
    text-align: center;
}
.common-title__en {
    display: block;
    padding-bottom: 3.2rem;
    color: #122;
    font-family: Poppins;
    font-size: 4rem;
    font-weight: 300;
    line-height: 1;
    letter-spacing: 0.1em;
    text-align: center;
}
@media (max-width: 1024px) {
    .common-title__en {
        padding-bottom: 3%;
        font-size: 3.2rem;
    }
}
@media (max-width: 640px) {
    .common-title__en {
        font-size: 2.4rem;
    }
}
.common-title__jp {
    padding-bottom: 4rem;
    color: #122;
    font-family: "Noto Sans JP";
    font-size: 2.4rem;
    font-weight: 400;
    line-height: 1;
    text-align: center;
    position: relative;
}
.common-title__jp::after {
    content: '';
    display: block;
    width: 100%;
    height: 1px;
    background: #BFBFBF;
    position: absolute;
    bottom: 0;
}
@media (max-width: 1024px) {
    .common-title__jp {
        padding-bottom: 4%;
        font-size: 2rem;
    }
}
@media (max-width: 640px) {
    .common-title__jp {
        font-size: 1.8rem;
    }
}

/* ==========================================================================
   １４．Canvas 用 Grid / カード系コンポーネント
   ========================================================================== */
/* 単体カードやグリッドなどの小コンポーネント */
.c-blk__num {
    display: flex;
    align-items: center;
    gap: 0 1.9rem;
}
@media(max-width: 640px) {
    .c-blk__num {
        padding-bottom: 2%;
    }
}
.c-blk__num span {
    color: #122;
    font-family: Poppins;
    font-size: 3.2rem;
    font-weight: 300;
    line-height: 1.68;
    letter-spacing: 0.1em;
}
@media(max-width: 1024px) {
    .c-blk__num span {
        font-size: 2.4rem;
    }
}
@media(max-width: 640px) {
    .c-blk__num span {
        font-size: 2rem;
    }
}
.c-blk__num b {
    color: #122;
    font-family: Poppins;
    font-size: 10.5rem;
    font-weight: 300;
    line-height: 1;
}
@media(max-width: 1024px) {
    .c-blk__num b {
        font-size: 6rem;
    }
}
@media(max-width: 640px) {
    .c-blk__num b {
        font-size: 4.8rem;
    }
}
.c-blk__copy {
    padding-top: 2.4rem;
}
.c-blk__copy p {
    color: #122;
    font-family: "Noto Sans JP";
    font-size: 2.4rem;
    font-weight: 400;
    line-height: 1.66;
}
@media (max-width: 1024px) {
    .c-blk__copy p {
        font-size: 2rem;
    }
}
@media (max-width: 640px) {
    .c-blk__copy p {
        font-size: 1.8rem;
    }
}
.c-blk__desc {
    padding-top: 2.4rem;
}
.c-blk__desc p {
    color: #122;
    font-family: "Noto Sans JP";
    font-size: 1.6rem;
    font-weight: 400;
    line-height: 2;
    letter-spacing: 0.03em;
}
@media(max-width: 1024px) {
    .c-blk__desc p {
        font-size: 1.4rem;
    }
}
.c-blk__images {
    padding-top: 1.6rem;
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 0 0.4rem;
}
@media (min-width: 768px) {
    .c-blk {
        display: grid;
        gap: 1.6rem 2.4rem;
    }
    .c-blk__num { grid-area: num; }
    .c-blk__thumb { grid-area: thumb; }
    .c-blk__copy { grid-area: copy; }
    .c-blk__desc { grid-area: desc; }
    .c-blk__images { grid-area: images; }
    .c-blk.--odd {
        grid-template:
            "num thumb" auto
            "copy thumb" auto
            "desc thumb" 1fr
            "images images" auto
            / 32rem 1fr;
    }
    .c-blk.--even {
        grid-template:
            "thumb num" auto
            "thumb copy" auto
            "thumb desc" 1fr
            "images images" auto
            / 1fr 32rem;
    }
}
@media (min-width: 1024px) {
    .c-blk {
        gap: 0 5.6rem;
    }
    .c-blk__num b {
        font-size: 10.5rem;
    }
    .c-blk__thumb { grid-area: thumb; }
    .c-blk__copy {
        grid-area: copy;
        padding-top: 1.1rem;
    }
    .c-blk__desc {
        grid-area: desc;
        padding-top: 2.2rem;
    }
    .c-blk__images {
        grid-area: images;
        gap: 0 1.6rem;
    }
    .c-blk.--odd {
        grid-template:
            "num thumb" auto
            "copy thumb" auto
            "desc thumb" 1fr
            "images images" auto
            / 45.8rem 1fr;
    }
    .c-blk.--even {
        grid-template:
            "thumb num" auto
            "thumb copy" auto
            "thumb desc" 1fr
            "images images" auto
            / 1fr 45.8rem;
    }
}

/* メニューボタン（ハンバーガー） */
.c-menu-btn {
  display: flex;
  align-items: center;
  width: 4rem;
  height: 3.2rem;
  position: relative;
}
.c-menu-btn i {
  position: absolute;
  width: 100%;
  height: 0.1rem;
  background-color: var(--color-black);
  transition: transform .5s;
}
.c-menu-btn i:nth-child(1) {
  transform: translateY(-1.6rem);
}
.c-menu-btn i:nth-child(3) {
  transform: translateY(1.6rem);
}

/* ここを「.l-wrapper.is-open の中の .c-menu-btn」に変更 */
.l-wrapper.is-open .c-menu-btn i:nth-child(1) {
  transform: translateY(0) rotate(45deg);
}
.l-wrapper.is-open .c-menu-btn i:nth-child(2) {
  transform: scale(0);
}
.l-wrapper.is-open .c-menu-btn i:nth-child(3) {
  transform: translateY(0) rotate(-45deg);
}


/* ボタン共通 */
.c-btn {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 32rem;
    height: 6.4rem;
    background: transparent;
    border: 1px solid #FFF;
    border-radius: 100vmax;
    color: #fff;
    text-decoration: none;
    position: relative;
    transition: background-color .4s, color .4s;
}
@media(max-width: 640px) {
    .c-btn {
        height: 5rem;
    }
}
.c-btn span {
    color: #FFF;
    font-family: "Noto Sans JP";
    font-size: 2rem;
    font-weight: 400;
    line-height: 1;
    transition: color .4s;
}
@media(max-width: 1024px) {
    .c-btn span {
        font-size: 1.6rem;
    }
}
.c-btn i {
    position: absolute;
    top: 50%;
    right: 3.15rem;
    width: 2.1rem;
    line-height: 0;
    transform: translateY(-50%);
}
@media (min-width: 1024px) {
    .c-btn:hover {
        background: #FFF;
    }
    .c-btn:hover span {
        color: #112222;
    }
    .c-btn:hover i svg path {
        fill: #112222;
    }
}

/* カードタイトル／テキスト */
.c-card__ttl { padding-top: 1.1rem; text-align: center; }
.c-card__txt { padding-top: 0.5rem; }
@media (min-width: 1024px) {
    .c-card__ttl { padding-top: 1.65rem; }
}

/* ヘッダーグループ（タイトル＋サブテキスト） */
.c-hgrp > h2 {
    padding-top: 1.1rem;
    font-size: 2.4rem;
    font-weight: 500;
    line-height: 1.5;
}
.c-hgrp > p {
    font-family: var(--font-family-latin);
    font-size: 3.5rem;
    color: var(--color-grey);
    white-space: nowrap;
    line-height: 1;
    text-align: left;
}
.c-hgrp.--center > h2,
.c-hgrp.--center > p {
    text-align: center;
}
@media (min-width: 1024px) {
    .c-hgrp > h2 {
        padding-top: 2.2rem;
        font-size: 3.2rem;
    }
    .c-hgrp > p {
        font-size: 12rem;
    }
}

/* 隠しクラス */
@media (min-width: 640px) {
    .c-hide-sm_up { display: none; }
}
@media (min-width: 1024px) {
    .c-hide-pc { display: none; }
}
@media (max-width: 1023.98px) {
    .c-hide-mobile { display: none; }
}
@media (max-width: 639.98px) {
    .c-hide-sm_down { display: none; }
}

img.c-radius-img {
    border-radius: 10px;
}
@media (min-width: 1024px) {
    img.c-radius-img { border-radius: 20px; }
}

/* インナーラッパー */
.c-inner,
.c-inner-slim {
    width: 100%;
    margin: 0 auto;
}
.c-inner {
    max-width: min(var(--view-width) - var(--gutter)*2, var(--inner-base));
}
.c-inner-slim {
    max-width: min(var(--view-width) - var(--gutter)*2, var(--inner-slim));
}
.c-inner-slim.--nogutter { max-width: var(--inner-slim); }
.c-inner.--nogutter { max-width: var(--inner-base); }

/* ==========================================================================
   １５．最後に：その他共通ユーティリティ
   ========================================================================== */
/* フォーカス用アウトライン非表示 */
:focus:not(:focus-visible) {
    outline: none;
}

/* リンクのテキスト装飾スキップ */
a {
    -webkit-text-decoration-skip: ink;
    text-decoration-skip-ink: auto;
}

/* 電話リンク */
a[href^="tel:"] {
    color: inherit;
    text-decoration: none;
}

/* プレースホルダー色 */
input::placeholder,
textarea::placeholder {
    opacity: 1;
    color: #d5d5d5;
}

/* 単一共通ユーティリティ */
*:has(> wbr) {
    white-space: pre-wrap;
    word-break: keep-all;
}

/* ==========================================================================
   EOF
   ========================================================================== */

.br-sm {
    display: none;
}
.br-lg {
    display: block;
}
@media(max-width: 640px) {
    .br-sm {
        display: block;
    }
    .br-lg {
        display: none;
    }
}


.xdsoft_time_variant {
/*   max-height: 180px !important; */
  overflow-y: auto !important;
  position: relative !important;
}

.xdsoft_time_box {
  scroll-behavior: auto !important;
}

body.no-scroll {
  overflow: hidden;
}

/* #modelhouse-form .wpcf7-not-valid-tip {
    display: block!important;
} */

.xdsoft_datetimepicker {
	z-index: 99!important;
}