@charset "UTF-8";
/*
Theme Name : 彩プロダクツ
*/

*,
::before,
::after {
  /* fluid 計算式） */
  --size-root: 16;
  --clamp-slope: calc((var(--size-max) - var(--size-min)) / (var(--viewport-max) - var(--viewport-min)));
  --clamp-intercept: calc(var(--size-min) - (var(--clamp-slope) * var(--viewport-min)));
  --clamp-value: calc(var(--clamp-intercept) * (1rem / var(--size-root)) + (var(--clamp-slope) * 100vw));
  --clamp: clamp(
    calc(var(--size-min) * (1rem / var(--size-root))),
    var(--clamp-value),
    calc(var(--size-max) * (1rem / var(--size-root)))
  );
  font-size: var(--clamp);
}

html {
	scroll-behavior: smooth;
}

body {
	font-family: var(--font-serif);
  font-optical-sizing: auto;
  font-weight:  400;
  font-style: normal;
  background: #fff;
	color: var(--color-txt);
	line-height: 2;

  --viewport-min: 375;
  --viewport-max: 1440;
}


img {
  display: block;
	width: 100%;
	height: auto;
}

/* 電話番号a表示 */
/* @media screen and (min-width: 810.1px) {
	a[href^="tel:"] {
		pointer-events: none;
		cursor: default;
	}
} */

/* PC/SP 出し分け */
@media screen and (max-width: 810px) {
	.pc {
		display: none !important;
	}
}

@media screen and (min-width: 810.1px) {
	.sp {
		display: none !important;
	}
}

h1,
h2,
h3,
h4,
h5,
h6 {
	font-weight: 600;
	line-height: 1.3;
}

:where(p){
  --size-max: 16;
}
.note{
  font-size: var(--font-13);
  line-height: 1.5;
  margin-top: 1em;
}



a {
	text-decoration: none;
  color: #000;
}
.fb{
  font-weight: 700;
}
.fsb{
  font-weight: 600;
}
.fl{
  --size-max: 18;
  --size-min: 16;
}
/* 個別クラス */
.dib {
	display: inline-block;
}
.tac {
	text-align: center;
	margin-inline: auto;
	width: fit-content;
}

@media screen and (min-width: 810.1px) {
	.tac-pc {
		text-align: center;
	}
}
@media screen and (max-width: 810px) {
	.tac-sp {
		text-align: center;
	}
}

.tar {
	text-align: right;
	margin-left: auto;
	width: fit-content;
}
.tal {
	text-align: left;
}

.disc {
	list-style-type: "・";
	padding-left: 1em;
}
.relative{
  position: relative;
}


/* ------------------
loading
------------------ */
.loading{
  position: fixed;
  inset: 0;
  background-color: #fff;
  display: grid;
  place-content: center;
  z-index: 999;
}
.loading-cont{
  width: min(320px, 23.611vw);
}
@media screen and (max-width: 810px) {
  .loading-cont{
    width: min(260px, 69.333vw);
  }
}
.loading-img {
  clip-path: inset(0 100% 0 0);
  animation: clipImg .8s ease-in-out forwards;
  margin-top: -8px;
}
@keyframes clipImg {
  to { clip-path: inset(0 0 0 0); }
}
.loading-txt{
  width: 88%;
  margin-inline: auto;
  opacity: 0;
  transform: translateY(10px);
  animation: fadeTxt 1s ease-in-out forwards;
  animation-delay: 0.4s; /* 0.5秒後に開始 */
}
@keyframes fadeTxt {
  0% { opacity: 0; transform: translateY(10px);}
  40% { opacity: 0;}
  100% { opacity: 1; transform: translateY(0);}
}
/* アニメ軽減ユーザー配慮 */
@media (prefers-reduced-motion: reduce) {
  .loading-img { animation: none; clip-path: inset(0); }
  .loading-txt { animation: none; opacity: 1; transform: none; }
}


/* ------------------
ヘッダー
------------------ */
header {
  z-index: 100;
}
@media screen and (min-width: 810.1px) {
  header {
    position: sticky;
    top: 0;
    left: 0;
    display: flex;
    justify-content: space-between;
    align-items: center;
    background-color: #fff;
    padding-inline: 40px;
  }
  header h1,
  .header-wrap > div{
    width: min(252px,  17.5vw);
  }

  nav{
    display: grid;
    grid-template-columns: 1fr auto;
    height: var(--header-h);
    align-items: center;
    gap: 2em;
    font-size: clamp(12px, 1.25vw, 16px);
  }
  nav .menu{
    display: flex;
    justify-content: end;
    gap: 1em;
  }
  nav .menu li a{
    position: relative;
    line-height: 1;
  }
  nav .menu li a::after{
    content: "";
    position: absolute;
    bottom: -4px;
    left: 0;
    width: 100%;
    height: 2px;
    background: #333;
    transform-origin: center top;
    transform: scale(0, 1);
    transition: transform .2s ease;
  }
  @media (any-hover: hover) {
    nav .menu li a:hover::after{
      transform: scale(1, 1);
    }
  }
  nav .submenu a::after{
    bottom: -2px !important;
    transform-origin: right top !important;
    height: 1px !important;
  }
  @media (any-hover: hover) {
    nav .submenu a:hover::after{
      transform-origin: left top !important;
    }
  }
  nav .menu .has-sub{ position: relative;}
  nav .submenu {
    --gap-space: 8px;
    position: absolute;
    top: calc(100% + var(--gap-space));
    left: 0;
    min-width: 18em; 
    padding: 16px;
    border-radius: var(--rounded);
    background: var(--color-light);
    opacity: 0;
    visibility: hidden;
    transform: translateY(10px);
    transition: all .3s ease;
    pointer-events: none;
  }
  nav .submenu::before{
    content:"";
    position:absolute;
    left:0; right:0;
    top:calc(var(--gap-space) * -1);
    height:var(--gap-space);
  }
  @media (hover:hover) {
    .has-sub:hover > .submenu,
    .has-sub:focus-within > .submenu {
      opacity: 1;
      visibility: visible;
      transform: translateY(0);
      transition-delay: 0s;
      pointer-events: auto;
    }
  }
  nav .menu-btn{
    display: flex;
    gap: 1em;
  }
}
nav .menu-btn a{
  display: block;
  color: #fff;
  border-radius: 100vmax;
  padding: .3em 1.5em;
  transition: background-color var(--transition);
}
nav .menu-btn li:first-child a{ background-color: var(--color-main);}
nav .menu-btn li:last-child a{ background-color: var(--color-blk);}
@media (any-hover: hover) {
  nav .menu-btn li:first-child a:hover{ background-color: var(--color-main-h);}
  nav .menu-btn li:last-child a:hover{ background-color: var(--color-blk-h);}
}
@media screen and (min-width: 810.1px) and (max-width: 950px) {
  header{
    display: grid;
    grid-template-columns: 1fr auto auto;
    align-items: center;
  }
  .header-wrap{ display: contents;}
  header h1, .header-wrap > div{ order: 1;}
  .nav-btn { order: 3;}
  nav { order: 2;}
  nav {
    display: grid;
    grid-template-columns: 1fr auto; /* 左空き / 右にmenu-btn */
    height: var(--header-h);
    align-items: center;
    gap: 1.25em;
  }

  /* ▼ メニュー本体だけをオフキャンバス化（panel） */
  nav .menu {
    position: fixed;
    right: -100%;
    top: var(--header-h); /* ヘッダーの下から出す */
    width: 100dvw;
    height: calc(100vh - var(--header-h));
    margin: 0;
    padding: 32px 40px;
    display: block;               /* パネル内は縦並び */
    background-color: rgba(255,255,255,.92);
    -webkit-backdrop-filter: blur(5px);
    backdrop-filter: blur(5px);
    overflow-y: auto;
    transition: right .4s ease;
    z-index: 120;
    border-top: 1px solid rgba(0,0,0,.08);
  }
  /* 開いたとき */
  .nav-open nav .menu { right: 0; }

  /* パネル内の見た目はSPと同様でOK */
  nav .menu > li {
    font-weight: 700;
    padding-block: 1em;
    border-bottom: 1px solid #666;
    margin-bottom: .4em;
  }
  nav .menu .submenu > li {
    font-weight: 600;
    font-size: var(--font-14);
    margin-top: 1em;
  }

  /* PC時のホバー用アンダーライン/サブメニューは無効化 */
  nav .menu li a::after { content: none; }
  @media (hover:hover) {
    .has-sub:hover > .submenu,
    .has-sub:focus-within > .submenu { opacity: 0; visibility: hidden; transform: none; }
  }
  nav .submenu { position: static; opacity: 1; visibility: visible; transform: none; pointer-events: auto; padding: 0; background: transparent; }

  nav .menu-btn {
    display: flex;
    gap: 1em;
  }
  nav .menu-btn a {
    display: block;
    color: #fff;
    border-radius: 100vmax;
    padding: .3em 1.5em;
    text-align: center;
  }
}

@media screen and (max-width: 810px) {
  nav{
    font-size: var(--font-16);
  }
  nav .menu{
    text-align: left;
    margin-bottom: 0.8em;
  }
  nav ul.menu > li{
    font-weight: 700;
    padding-block: 1em;
    border-bottom: 1px solid #666;
    margin-bottom: 0.4em;
  }
  nav .menu .submenu > li{
    font-weight: 600;
    font-size: var(--font-14);
    margin-top: 1em;
  }
  nav .menu-btn li{
    margin-top: 1.5em;
  }
  nav .menu-btn a{
    text-align: center;
  }

  nav .menu a{
    display: block;
    position: relative;
  }
  nav .menu a::before,
  nav .menu a::after{
    content: "";
    position: absolute;
    top: calc(50% - 0.5px);
    right: 0;
    display: block;
    width: 7px;
    height: 1px;
    background-color: #333;
    transform-origin: calc(100% - 0.5px) 50%;
  }
  nav .menu a::before { transform: rotate(40deg);}
  nav .menu a::after { transform: rotate(-40deg);}
}



/* hamburger */
header .nav-btn {
  display: none;
}
@media screen and (max-width: 950px) {
  header .nav-btn {
    display: block;
    width: 52px;
    height: 52px;
    cursor: pointer;
    position: relative;
  }
  header .nav-btn .hamburger {
    transition: all 0.2s;
    width: 15px;
    height: 1px;
    background-color: var(--color-blk);
    position: absolute;
    left: 50%;
    transform: translate(-50%, -50%);
  }
  header .nav-btn .hamburger.line1 {
    top: calc(50% - 4px);
  }
  header .nav-btn .hamburger.line2 {
    top: calc(50% + 4px);
  }
  .nav-open header .hamburger.line1 {
    top: 50%;
    transform: translate(-50%, -50%) rotate(45deg);
  }
  .nav-open header .hamburger.line2 {
    top: 50%;
    transform: translate(-50%, -50%) rotate(-45deg);
  }
}

@media screen and (max-width: 810px) {
  header{
    position: fixed;
    bottom: 0;
    left: 0;
    width: 100%;
    height: var(--header-h);
  }
  .header-wrap{
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding-inline: 10px 24px;
    background-color: #fff;
    position: relative;
    z-index: 110;
  }
  header h1,
  .header-wrap > div{
    width: min(130px, 34.666vw);
  }
  /* nav-open */
  body.nav-open{
    height: 100%;
    overflow: hidden;
  }
  header nav {
    width: 100dvw;
    height: calc(100dvh - var(--header-h));
    right: -100%;
    top: 0;
    padding: 40px 40px 80px;
    background-color: rgba(255, 255, 255, 0.8);
    position: fixed;
    transition: all 0.4s;
    overflow-y: scroll;
    -webkit-backdrop-filter: blur(5px);
    backdrop-filter: blur(5px);
  }
  .nav-open header nav {
    right: 0;
    transition: all 0.4s;
  }
}


/* hero */
.hero-area{
  position: relative;
  height: calc(100vh - var(--header-h));
}
@media screen and (max-width: 810px) {
  .hero-area{
    height: calc(100dvh - var(--header-h));
  }
}
/* splide */
.hero-area .splide{
  overflow: hidden;
  height: calc(100vh - var(--header-h));
}
@media screen and (max-width: 810px) {
  .hero-area .splide{
    height: calc(100dvh - var(--header-h));
  }
}
.hero-area .splide__track,
.hero-area .splide__list,
.hero-area .splide__slide{
  height: 100%;
}

/* スライド表示 */
#hero .splide__slide {
  position: relative;
  overflow: hidden;
}
#hero .splide__slide video,
#hero .splide__slide img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}
/* #hero .splide__track { aspect-ratio: 16 / 9; } */

#hero .splide__slide video { visibility: hidden; }
#hero .splide__slide.is-playing video { visibility: visible; }

#hero .media video {
  will-change: opacity;
  backface-visibility: hidden;
  -webkit-transform: translateZ(0);
  transform: translateZ(0);
}

#hero .over-txt {
  position: absolute;
  inset: 6vw 12vw auto 8vw;
  z-index: 2;
  pointer-events: none;
  opacity: 0;
  transform: translateY(10px);
  transition: opacity 1.5s ease,transform 1.5s ease;

  writing-mode: vertical-rl; 
}
#hero .splide__slide.is-active .over-txt {
  opacity: 1;
  transform: none;
  transition-delay: .5s; /* フェード後に少し遅れて出す */
}
.ov-ttl {
  display: block;
  color: var(--color-blk);
  font-size: clamp(20px, 2.5vw, 36px);
  font-weight: 800;
  letter-spacing: .3em;
  writing-mode: vertical-lr; 
  padding: 1.2em .4em; 
  background: #fff;
}
.ov-txt {
  position: absolute;
  right: var(--space-sm);
  bottom: -100px;
  display: inline-block;
  color: #fff;
  font-size: clamp(16px, 1.25vw, 18px);
  letter-spacing: .8em;
  padding: 1em .4em .5em .4em;
  background: var(--color-blk);
}

/* ページネーションの土台 */
#hero .splide__pagination {
  display: flex;
  gap: 12px;
  justify-content: center;
  bottom: var(--space-sm);
}
#hero .splide__pagination__page {
  width: auto;
  height: auto;
  background: transparent !important;
  border: none;
  padding: 0;
  transform: none !important;   /* アクティブ時のscale(1.4)を潰す */
  opacity: 1 !important;
}

/* PCデフォ（64px） */
#hero .thumb-dot {
  --size-dot: 60px;
  position: relative;
  width: var(--size-dot);
  height: var(--size-dot);
  border-radius: 50%;
  cursor: pointer;
  isolation: isolate;
}
#hero .thumb-dot .thumb {
  position: absolute;
  inset: 4px;        /* 外周リング分の余白 */
  border-radius: 50%;
  overflow: hidden;
}
#hero .thumb-dot .thumb img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

/* 円形リング（CSSだけで1周して停止） */
#hero .thumb-dot .ring {
  position: absolute; 
  inset: 0; 
  margin: auto; 
  width: 100%; 
  height: 100%;
  transform: rotate(-90deg); /* 上から開始（不要なら消してOK） */
}
/* 背景リング（常時表示・透過はお好みで） */
#hero .thumb-dot .ring .track {
  fill: none;
  stroke: rgba(255,255,255,.35);
  stroke-width: 3;
}
/* 進行リング（初期は非表示状態） */
#hero .thumb-dot .ring .progress {
  fill: none;
  stroke: #fff;
  stroke-width: 3;
  stroke-linecap: butt;
  stroke-dasharray: 125.66;   /* 2πr (r=20) */
  stroke-dashoffset: 125.66;  /* 全部隠す */
  /* ここではアニメは付けない。is-active時にだけ付ける */
}

/* アクティブ時だけ 1回・--dur（既定10s）で再生 → 最後の状態で停止 */
#hero .thumb-dot.is-active .ring .progress {
  animation: ringProgress var(--dur, 10s) linear forwards;
  /* iteration-count: 1 が既定なので指定不要。forwardsで止まる */
}
@keyframes ringProgress {
  from { stroke-dashoffset: 125.66; }
  to   { stroke-dashoffset: 0; }
}

/* SP（≤767px）は小さめに。前回どおり拡大なし */
@media (max-width: 810px) {
  #hero .splide__pagination { gap: 2px;}
  #hero .thumb-dot { --size-dot: 42px; }
  #hero .thumb-dot .thumb { inset: 3px; }
  #hero .thumb-dot .ring .track { stroke-width: 2; }
}

/* アクセシビリティ：動きを減らすユーザーには停止 */
@media (prefers-reduced-motion: reduce) {
  #hero .thumb-dot.is-active .ring .progress { animation: none; stroke-dashoffset: 0; }
}




/* ------------------
フッター
------------------ */
.bnr-list{
  padding-block: var(--space-md);
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: var(--space-sm);
}
@media (max-width: 810px) {
  .bnr-list{
    display: block;
    width: 90%;
    margin-inline: auto;
  }
  .bnr-list li + li{ margin-top: 16px;}
}

.totop{ display: none;}
@media screen and (max-width: 810px) {
  .totop{
    margin: 24px auto 16px;
    display: block;
    width: fit-content;
    padding: .5em 6em .5em 0;
    border-bottom: 1px solid var(--color-blk);
    position: relative;
  }
  .totop::before,
  .totop::after{
    content: "";
    position: absolute;
    top: 50%;
    right: 8px;
    width: var(--border-angle);
    height: var(--border-size);
    background-color: var(--color-blk);
  }
  .totop::before {
    transform: rotate(50deg) translateX(50%);
    transform-origin: center top;
  }
  .totop::after {
    transform: rotate(-50deg) translateX(-50%);
    transform-origin: center top;
  }
}
footer {
  font-family: var(--font-sans);
  background-color: var(--color-light);
  padding-block: var(--space-lg) var(--space-sm);
}
@media screen and (max-width: 810px) {
  footer {
    padding-block: var(--space-lg) 80px;
  }
}
@media screen and (min-width: 810.1px) {
  .ft-wrap{
    display: flex;
    justify-content: space-between;
    gap: 40px;
  }
}
.ft-logo{
  width: min(300px, 20.833vw);
}
.ft-sns{
  margin-top: 40px;
  display: flex;
  gap: 1em;
}
@media screen and (max-width: 810px) {
  .ft-logo{
    width: min(300px, 62.666vw);
    margin-inline: auto;
  }
  .ft-sns{
    margin-block: 24px;
    justify-content: center;
  }
}
.ft-sns li{
  width: 30px;
}
.ft-menu{
  font-size: var(--font-14);
  display: grid;
  grid-template-columns: auto auto auto;
  gap: 1em 2em;
  margin-bottom: var(--space-md);
}
.ft-menu a:hover{ text-decoration: underline;}
.ft-menu > li > a{
  font-weight: 600;
}
@media screen and (max-width: 810px) {
  .ft-menu{
    display: none;
  }
}

@media screen and (min-width: 810.1px) {
  .ft-btm{
    display: flex;
    justify-content: space-between;
    align-items: end;
  }
}
@media screen and (max-width: 810px) {
  .ft-btm{
    text-align: center;
  }
}
.ft-btn{
  display: flex;
  gap: 1em;
}

.ft-btn li a{
  display: block;
  color: #fff;
  padding: 0 2em;
  border-radius: 100vmax;
  transition: background-color var(--transition);
}
@media screen and (max-width: 810px) {
  .ft-btn{
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 1em;
  }
  .ft-btn li a{
    padding: 0;
  }
}
.ft-btn li:first-child a{ background-color: var(--color-blk);}
.ft-btn li:last-child a{ background-color: var(--color-main);}
@media (any-hover: hover) {
  .ft-btn li:first-child a:hover{ background-color: var(--color-blk-h);}
  .ft-btn li:last-child a:hover{ background-color: var(--color-main-h);}
}
.ft-submenu{
  font-size: var(--font-12);
  font-weight: 600;
  display: flex;
  justify-content: end;
  line-height: 1.6;
  margin-bottom: 1em;
}
.ft-submenu a:hover{ text-decoration: underline;}
.ft-submenu li{ padding-inline: 1em;}
.ft-submenu li + li{
  border-left: 1px solid var(--color-blk);
}
@media screen and (max-width: 810px) {
  .ft-submenu{
    margin-top: 24px;
    display: grid;
    grid-template-columns: 1fr; /*　プラポリonly */
    /* grid-template-columns: repeat(2, 1fr); 特商法追加時*/
    justify-content: center;
  }
}
.copy{
  --size-max: 14;
  --size-min: 12;
}

/*------------------
 main 
 -----------------*/
/* サイト設計 */
.inner {
  width: var(--width-inner);
	margin-inline: auto;
}
.inner-narrow{
  width: var(--width-narrow);
	margin-inline: auto;
}
.inner-article{
  width: var(--width-article);
	margin-inline: auto;
}
.inner.my{
  margin-block: var(--space-xl2);
}

/* タイトル周り */
.vt{
  text-orientation: upright;
  -webkit-writing-mode: vertical-rl;
  writing-mode: vertical-rl;
  display: inline-block;
  white-space: nowrap;
}
.ttl--ja{
  --size-max: 40;
  --size-min: 24;
  font-weight: 700;
  letter-spacing: .16em;
}
@media screen and (max-width: 810px) {
  .ttl--ja{ letter-spacing: .1em; line-height: 1.6;}
}
.ttl--en{
  display: block;
  font-family: var(--font-en);
  -webkit-writing-mode: horizontal-tb;
  writing-mode: horizontal-tb;
  --size-max: 18;
  --size-min: 16;
  margin-block-start: .6em;
}
.vt .ttl--ja{
  letter-spacing: .3em;
}
.vt .ttl--en{
  display: inline-block;
}
.en{ font-family: var(--font-en); letter-spacing: 0 !important;}

.full-bleed{ margin-inline: calc(50% - 50vw);}

.pt-lg{ padding-top: var(--space-lg);}

.pr{ padding-right: 1em;}

.pb-sm{ padding-block: var(--space-sm) !important;}
.pb-lg{ padding-block: var(--space-lg) !important;}

.mt-sm{ margin-top: var(--space-sm) !important;}
.mt-lg{ margin-top: var(--space-lg) !important;}
.mt-xl2{ margin-top: var(--space-xl2) !important;}
/*------------------
 TOP
 -----------------*/
.bg-leaf{
  background: url(../img/bg_leaf.jpg) no-repeat top right 3.47vw;
  background-size: 34%;
}
.intro{
  text-align: center;
  padding-block: var(--space-xl2);
}
.intro p{
  text-align: start;
  display: inline-block;
  writing-mode: vertical-rl;
  letter-spacing: .2em;
  line-height: 3;
  --size-max: 32;
  --size-min: 20;
}
@media screen and (max-width: 810px) {
  .intro p{
    line-height: 2.4;
  }  
}
.tree{
  width: min(80px, 6.944vw);
  margin-inline: auto;
  margin-bottom: var(--space-md);
}
@media screen and (max-width: 810px) {
  .tree{
    width: min(100px, 21.333vw);
  }
}
.bg-company{
  position: relative;
  margin-bottom: var(--space-md);
}
.bg-company::before,
.bg-company::after {
  content: "";
  position: absolute;
  top: 1px;
  left: 0;
  right: 0;
  bottom: 1px;
  background-position: center;
  background-size: cover;
  pointer-events: none;
  will-change: opacity;
}
.bg-company::before {
  background-image: url("../img/bg_top.jpg");
  animation: fadeA 7s linear infinite both;
}
.bg-company::after {
  background-image: url("../img/bg_sub.jpg");
  animation: fadeB 7s linear infinite both;
}
@keyframes fadeA {
  0%   { opacity: 1; }
  30%  { opacity: 1; }
  50%  { opacity: 0; }
  60%  { opacity: 0; }
  80%  { opacity: 1; }
  100% { opacity: 1; }
}
@keyframes fadeB {
  0%   { opacity: 0; }
  10%   { opacity: 0; }
  30%  { opacity: 1; }
  80%  { opacity: 1; }
  100%  { opacity: 0; }
}
@media (prefers-reduced-motion: reduce) {
  .bg-company::before,
  .bg-company::after { animation: none; opacity: 1;}
}
.top-co{
  position: relative;
  z-index: 5;
}
@media screen and (min-width: 810.1px) {
  .top-co{
    display: grid;
    grid-template-columns: auto 1fr;
    gap: 80px;
  }
}

.bk-wht{
  text-align: center;
  background-color: #fff;
  padding: 24px 0 0;
  width: min(180px, 12vw);
}
@media screen and (max-width: 810px) {
  .bk-wht{
    width: min(80px, 21.333vw);
    padding-block: 24px;
  }
  .bk-wht.top-co-ttl{
    margin-inline: calc(50% - 50vw);
    width: 100vw;
    text-align: left;
    padding-left: 9vw;
  }
}
.top-co-txt{
  color: #fff;
  padding-block: 80px 160px;
}
@media screen and (min-width: 810.1px) {
  .top-co-txt{
    width: 48%;
  }
}
.top-co h3{
  --size-max: 24;
  --size-min: 20;
  padding-bottom: 1em;
  line-height: 1.8;
}
@media screen and (min-width: 810.1px) {
  .top-co p span{	display: inline-block;}
}
.top-co p + p{
  margin-top: 1em;
}
.top-co-img1{
  position: absolute;
  overflow: hidden;
  z-index: 5;
}
.top-co-img2{
  position: absolute;
  border-radius: var(--rounded);
  overflow: hidden;
  z-index: 5;
}
@media screen and (min-width: 810.1px) {
  .top-co-img1{
    top: -80px;
    right: var(--space-lg);
    width: min(460px, 31.944vw);
    border-radius: var(--rounded);
  }  
  .top-co-img2{
    bottom: max(-13.888vw, -200px);
    right: 50%;
    width: min(300px, 20.833vw);
  }
}
@media screen and (max-width: 810px) {
  .top-co-img1{
    top: 0;
    right: 0;
    width: min(360px, 62%);
    border-radius: var(--rounded) 0 0 var(--rounded);
  }
  .top-co-img2{
    bottom: max(-13.888vw, -200px);
    left: 6vw;
    width: min(200px, 53.333vw);
  }
}
.top-co-btn{
  margin-bottom: var(--space-xl4);
}
@media screen and (max-width: 810px) {
  .top-co-btn{
    margin-top: 80px;
  }
}

/* Business */
:root{
  --vh: 1vh;
  --hold: 260vh;                       
}
@media (max-width: 810px){
  :root{ --hold: 160dvh; }
}
/* セクションブロック */
.top-biz{
  position: relative;
}

/* 固定（sticky）タイトル＋カウンター */
.biz-sticky{
  color: #fff;
  position: sticky;
  top: var(--header-h);
  padding-top: 80px;
  z-index: 50;
  margin-bottom: -188px;
  will-change: transform;
  transition: none;
}
@media screen and (max-width: 810px) {
  .biz-sticky{
    top: 0;
    padding-top: 60px;
    margin-bottom: -174px;
  }
}
.biz-sticky-ttl{
  margin: 0;
  font-size: clamp(18px, 2.6vw, 28px);
  line-height: 1.2;
}
.biz-counter{
  font-variant-numeric: tabular-nums;
  letter-spacing: .06em;
}



.biz-progress{
  margin-top: 16px;
  width: 100px;
  height: 3px;
  background: color-mix(in srgb, currentColor 30%, transparent);
  border-radius: 9999px;
  overflow: hidden;
  pointer-events: none;
}
.biz-progress__bar{
  display: block;
  width: 100%;
  height: 100%;
  background: currentColor;
  transform-origin: left center;
  transform: scaleX(0);
  will-change: transform;
}

/* スタック全体。最後の固定時間用に内側でスペーサを生成 */
.biz-stack{
  position: relative;
}
.biz-stack::after{
  content:"";
  display:block;
  height: var(--hold);
}
/* 各スライド：stickyで上端に固定→次がかぶさってくる */
.biz-slide{
  position: sticky;
  top: var(--header-h);
  height: calc(100vh - var(--header-h));
  z-index: 1;
  overflow: clip;
  isolation: isolate;
  margin-bottom: var(--hold);
}
@media screen and (max-width: 810px) {
  .biz-slide{
    top: 0;
    height: calc(100dvh - var(--header-h));
  }
}
.biz-slide:last-of-type{
  margin-bottom: 0;
}
/* 重なり順（必要数に応じて増やす／JSで連番付与でもOK） */
.biz-slide + .biz-slide{ z-index: 2; }
.biz-slide + .biz-slide + .biz-slide{ z-index: 3; }

/* 背景画像（相対内で全画面フィット） */
.slide-img{
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
.biz-slide::before{
  content:"";
  position:absolute;
  inset:0;
  background: rgba(0,0,0,0.6);
  z-index: 1;
  opacity: var(--ov, 0); /* ← ここを変数に */
  transition: none;      /* ← GSAPが制御するので無効化 */
  pointer-events: none;
}

.slide-box{
  position: absolute;
  inset: 0;
  width: var(--width-inner);
  margin-inline: auto;
  text-align: center;
  color: #fff;
  z-index: 2;  
}
.slide-box .slide-txt{
  font-family: var(--font-sans);
  position: absolute;
  top: 50%;
  left: 0;
  right: 0;
  transform: translate(0, -50%);
  width: fit-content;
  margin-inline: auto;
}

.slide-box .slide-txt h3{
  opacity: 0; /* from */
}
.slide-box .slide-txt h3 .txt--en{
  display: inline-block;
  -webkit-clip-path: inset(0 100% 0 0);
          clip-path: inset(0 100% 0 0); /* from */
  will-change: clip-path;
}
.slide-box .slide-txt .biz-bg,
.slide-box .slide-txt .biz-ex{
  opacity: 0;
}
.slide-box .slide-btn{
  opacity: 0; /* from */
  position: absolute;
  bottom: 80px;
  right: 0;
  will-change: opacity;
  /* transition はGSAPで管理するので不要 */
}
.biz-slide.is-active .slide-txt h3{
  animation: bizFloatUp 1.5s var(--ease) forwards;
  animation-delay: .5s;
}

/* スライドテキスト装飾 */

.slide-txt h3{
  --size-max: 48;
  --size-min: 24; 
}
.slide-txt h3 span:not([class]){
  display: inline-block;
  border: 1px solid #fff;
  padding: 0 .3em;
  height: 1.8em;
  vertical-align: bottom;
  margin-inline: .2em;
}
.slide-txt h3 span .txt--en{
  display: inline-block;
  --size-max: 100;
  --size-min: 50;
  font-family: var(--font-script);
  font-weight: 400;
  line-height: 1.1;
  transform-origin: left center;
  transform: rotate(-4deg); 
}
.slide-txt p.biz-bg{
  --size-max: 18;
  --size-min: 16;
  display: block;
  width: fit-content;
  margin-inline: auto;
  padding: 0 1em;
  line-height: 1.6;
  margin-top: 1em;
  background: #000;
}
.slide-txt p.biz-bg.biz1{
  background: var(--grad-biz1);
}
.slide-txt p.biz-bg.biz2{
  background: var(--grad-biz2);
}
.slide-txt p.biz-bg.biz3{
  background:  -webkit-linear-gradient(80deg, #1893C4 0%, #003457 80%);
  background: var(--grad-biz3);
}
.slide-txt .biz-ex{
  --size-max: 20;
  --size-min: 16;
  font-family: var(--font-serif);
  line-height: 1.8;
  margin-top: 1.5em;
}
@media screen and (max-width: 810px) {
  .slide-txt h3{
    line-height: 1.8;
  }
  .slide-txt{
    text-align: left;
  }
  .slide-txt .biz-ex{ display: none;}
  .slide-txt h3 span:not([class]){
    margin-inline: 1.2em .2em;
  }
}

/* プロジェクトストーリー */
.bg-blk{
  color: #fff;
  background-color: #202020;
  padding-block: var(--space-lg);
}
.top-story .splide {
  position: relative;
  margin-block: var(--space-lg);
}
.top-story .splide__slide > a{
  display: grid;
  grid-template-columns: auto 1fr;
  align-items: stretch;
  block-size: 100%;
  background-color: #fff;
  border-radius: var(--rounded);
  overflow: hidden;
}
@media screen and (max-width: 810px) {
  .top-story .splide {
    margin-block: 60px;
  }
  .top-story .splide__slide > a{
    display: block;
  }
}
.top-story h2{ color: #fff;}
.top-story h3{
  --size-max: 32;
  --size-min: 18;
  color: #fff;
  letter-spacing: .15em;
}
@media screen and (min-width: 810.1px) {
  .top-story h3{
    display: block;
    writing-mode: vertical-lr;
    height: 100%;
    padding: 1.5em .8em 0;
  }
  .top-story h3.hiroo{ background: var(--grad-v-grn);}
  .top-story h3.reiwa{ background: var(--grad-v-blu);}
  .top-story h3.hugaku{ background: var(--grad-v-orn);}
  .top-story h3.kuon{ background: var(--grad-v-pnk);}
  .top-story h3.ryuko{ background: var(--grad-v-ppl);}
}
@media screen and (max-width: 810px) {
  .top-story h3{ 
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: .8em 1em;
  }
  .top-story h3.hiroo{ background: var(--grad-h-grn);}
  .top-story h3.reiwa{ background: var(--grad-h-blu);}
  .top-story h3.hugaku{ background: var(--grad-h-orn);}
  .top-story h3.kuon{ background: var(--grad-h-pnk);}
  .top-story h3.ryuko{ background: var(--grad-h-ppl);}
}
.top-story h3 span{
  --size-max: 18;
  --size-min: 14;
  display: inline-block;
  margin-inline-start: 1em;
}
.top-story-box{
  padding: 20px;
}
.top-story-box .top-story-img{
  border-radius: var(--rounded);
  overflow: hidden;
}
.top-story-img img{
  transform: scale(1);
  transition: transform var(--transition);
}
@media (any-hover: hover) {
  .top-story a:hover .top-story-img img{
    transform: scale(1.05);
  }
}
.top-story-box .top-story-img + p{
  --size-max: 18;
  --size-min: 16;
  display: block;
  text-align: center;
  width: 90%;
  padding: .5em 0;
  border-top: 1px solid var(--color-blk);
  border-bottom: 1px solid var(--color-blk);
  margin: 1em auto;
}

.slider-controls {
  position: absolute;
  top: -80px;
  right: 40px;
  display: flex;
  gap: 8px;
  align-items: center;
  z-index: 2;
}
@media screen and (max-width: 810px) {
  .slider-controls {
    top: -50px;
    right: 12vw;
  }
}
/* ボタン */
.ctrl {
  -webkit-appearance: none;
  appearance: none;
  border: none;
  background: #fff;
  border-radius: 8px;
  width: 40px;
  height: 40px;
  cursor: pointer;
  position: relative;
}
.btn-prev::before,
.btn-next::before {
  content: "";
  position: absolute;
  top: 50%;
  left: 50%;
  width: 10px;
  height: 10px;
}
.btn-prev::before{
  border-top: 2px solid #000;
  border-left: 2px solid #000;
  transform: translate(-30%, -50%) rotate(-45deg);
}
.btn-next::before {
  border-top: 2px solid #000;
  border-right: 2px solid #000;
  transform: translate(-70%, -50%) rotate(45deg);
}
/* || ポーズ */
.btn-toggle::before,
.btn-toggle::after {
  content: "";
  position: absolute;
  top: 50%;
  width: 2px;
  height: 12px;
  background: #000;
  transform: translateY(-50%);
}
.btn-toggle::before {
  left: 16px;
}
.btn-toggle::after {
  right: 16px;
}
/* ▶ 三角形 */
.btn-toggle.is-play::before {
  content: "";
  position: absolute;
  top: 50%;
  left: 55%;
  width: 12px;
  height: 14px;
  background: #000;
  clip-path: polygon(0 0, 0 100%, 100% 50%);
  transform: translate(-50%, -50%);
}
.btn-toggle.is-play::after {
  content: none;
}
@media screen and (max-width: 810px) {
  .ctrl {
    width: 30px;
    height: 30px;
  }
  .btn-prev::before,
  .btn-next::before {
    width: 8px;
    height: 8px;
  }
  .btn-toggle::before,
  .btn-toggle::after {
    height: 10px;
  }
  .btn-toggle.is-play::before {  
    width: 10px;
    height: 11px;
  }
}

/* 樹木葬 */
.top-case-list{
  margin-top: var(--space-lg);
}
@media screen and (min-width: 810.1px) {
  .top-case-list{
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: var(--space-md);
    margin-bottom: var(--space-md);
  }
  .top-case-list li:nth-last-child(2){
    margin-top: var(--space-lg);
  }
}
@media screen and (max-width: 810px) {
  .top-case-list li{
    margin-bottom: var(--space-xl2);
  }
}
.top-case-img{
  border-radius: var(--rounded);
  aspect-ratio: 1;
  overflow: hidden;
  margin-bottom: 2em;
  position: relative;
}

@media screen and (min-width: 810.1px) {
  .top-case-img::before{
    content:"";
    position:absolute;
    inset:0;
    background: var(--color-blk); 
    z-index: 1;
    opacity: 0.3;
    transition: opacity var(--transition);
  }
}
.top-case-img img{
  object-fit: cover;
  width: 100%;
  height: 100%;
  transform: scale(1);
  transition: transform var(--transition);
}
@media screen and (max-width: 810px) {
  .top-case-img{
    aspect-ratio: 16 / 10;
    margin-bottom: 1em;
  }
}
@media (any-hover: hover) {
  .top-case-list a:hover .top-case-img::before{
    opacity: 0;
  }
  .top-case-list a:hover .top-case-img img{
    transform: scale(1.05);
  }
}
.top-case-list p:not([class]){
  --size-max: 18;
  --size-min: 16;
  font-weight: 700;
  line-height: 1.8;
}



.link-txt{
  margin-top: .5em;
  display: block;
  width: fit-content;
  margin-left: auto;
  padding-right: 1.6em;
  position: relative;
}
.link-txt::after {
  content: "";
  position: absolute;
  left: 0;
  bottom: 0;
  width: 100%;
  height: 1px;
  background-color: #000;
  transform: scaleX(0);
  transform-origin: right center;
  transition: transform .3s ease;
}
@media (any-hover: hover) {
  a:hover .link-txt::after{
    transform: scaleX(1);
    transform-origin: left center;
  }
}

.link-txt span{
  position: absolute;
  top: 50%;
  right: 0;
  width: 6px;
  height: 6px;
  transform: translateY(-50%);
}
.link-txt span::before,
.link-txt span::after {
  content: "";
  position: absolute;
  top: calc(50% - 0.5px);
  right: 0;
  width: 6px;
  height: 1px;
  background-color: #000000;
  transform-origin: calc(100% - 0.5px) 50%;
}
.link-txt span::before { transform: rotate(45deg);}
.link-txt span::after { transform: rotate(-45deg);}

/* 新着情報 */
.bg-news{
  background: url(../img/icon_tree_w.svg) no-repeat left 40px bottom var(--color-light);
  background-size: 17% auto;
  border-radius: var(--rounded);
  padding: var(--space-md) var(--space-lg) var(--space-lg) var(--space-lg);
}
@media screen and (max-width: 810px) {
  .bg-news{
    background: url(../img/icon_tree_w.svg) no-repeat left -10px bottom var(--color-light);
    background-size: 40% auto;
  }
}
.top-news{
  display: grid;
  grid-template-columns: auto 1fr;
  gap: var(--space-lg);
  margin-bottom: var(--space-md);
}
@media screen and (max-width: 810px) {
  .top-news{
    display: block;
    text-align: center;
  }
}
.top-news-list{
  text-align: left;
  margin-top: var(--space-lg);
  margin-bottom: 40px;
}
.top-news-list li{
  display: grid;
  align-items: center;
  grid-template-columns: 5em auto minmax(0, 1fr);
  gap: 1.5em;
  border-bottom: 1px dotted var(--color-blk);
  padding-block: 2em;
}
.top-news-list li > p{
	display: flex;
	align-items: center;
	line-height: 1;
}
.top-news-list li > p a{
  display: inline-block;
  min-width: 0;
  overflow: hidden;
  white-space: nowrap;
  text-overflow: ellipsis;
  transition: color var(--transition);
}
@media (any-hover: hover) {
  .top-news-list li > p a:hover{ color: var(--color-main);}
}
.top-news-list li > * { min-width: 0; } /* safari */


@media screen and (max-width: 810px) {
  .top-news-list{
    width: 100%;
    margin-top: 0;
  }
  .top-news-list li{
    display: block;
  }
  .top-news-list li p{
    display: block;
  }
  .top-news-list li > p a{
    max-width: 100%;
    min-width: 0;
    margin-top: 1em;
  }
  .category{ margin-left: 1em;}
  .top-news-list li > p .badge-new + a{ margin-top: 0;}
}

.top-news-list li a{ font-weight: 700;}
.category{
  display: inline-block;
  font-size: var(--font-14);
  width: 7em;
  text-align: center;
  line-height: 1.6;
  color: #fff;
  background-color: var(--color-main);
  border-radius: 100vmax;
}
.category a,.category a:hover{ color: #fff; text-decoration: none;}
.bg-news .btn-more::before{
  background: #fff;
}

.badge-new{
  display: inline-block;
  font-family: var(--font-sans);
  font-size: var(--font-12);
  font-weight: 600;
  color: #B62D2D;
  margin-right: .5em;
	margin-top: .2em;
  line-height: 1;
}
@media screen and (max-width: 810px) {
  .badge-new{ line-height: 2; margin-top: 1em;}
}


/* CSR */
.top-csr-ttl{
  position: relative;
  margin-top: var(--space-xl2);
}
.top-csr-ttl .bk-wht{
  position: absolute;
  left: 0;
  top: -1px;
  height: calc(100% + 2px);
}
.top-csr{
  margin-block: var(--space-md) var(--space-xl2);
}
@media screen and (min-width: 810.1px) {
  .top-csr{
    display: grid;
    grid-template-areas: "txt thumb1" "txt thumb2";
    grid-template-columns: 1fr 60%;
    align-items: center;
    gap: 0 var(--space-xl2);
  }
  .top-csr > div:nth-child(1){ grid-area: thumb1;}
  .top-csr > div:nth-child(2){ grid-area: thumb2;}
  .top-csr > div:nth-child(3){ grid-area: txt;}
  .top-csr .top-csr-img1{
    width: 44%;
    z-index: 5;
  }
  .top-csr .top-csr-img2{
    margin-top: calc(var(--space-xl2) * -1);
    margin-right: calc(var(--space-md) * -1);
    width: 83%;
    justify-self: end;
  }
}
.top-csr > div img{
  border-radius: var(--rounded);
  overflow: hidden;
}
@media screen and (max-width: 810px) {
  .top-csr .top-csr-img1{
    position: relative;
    width: 40%;
    margin-left: auto;
    z-index: 5;
  }
  .top-csr .top-csr-img2{
    margin-top: -40px;
    margin-left: var(--bleed);
    width: 90%;
    margin-bottom: 40px;
  }
  .top-csr > .top-csr-img2 img{
    border-radius: 0 var(--rounded) var(--rounded) 0;
  }
}
.top-csr h3{
  --size-max: 24;
  --size-min: 20; 
  font-weight: 700;
  margin-bottom: 1em;
}
@media screen and (min-width: 810.1px) {
  .top-csr .btn-more{
    margin-top: var(--space-sm);
    margin-left: 0;
  }
}
/* 採用 */
.top-recruit{
  display: grid;
  grid-template-columns: 1fr auto;
  background: url(../img/top_recruit.jpg) no-repeat;
  background-size: cover;
  padding: var(--space-md);
  width: 100%;
  border-radius: var(--rounded);
  overflow: hidden;
  color: #fff;
}
@media screen and (max-width: 810px) {
  .top-recruit{
    display: block;
    padding: 40px var(--space-md);
    background: url(../img/top_recruit_sp.jpg) center bottom no-repeat;
    background-size: cover;
  }  
}
.top-recruit h2{ margin-bottom: var(--space-sm);}
.top-recruit p{ 
  --size-max: 18;
  --size-min: 16;
}
.circle{
  position: relative;
  width: 100%;
  margin-block: -16px;
  aspect-ratio: 1;
  border-radius: 50%;
  display: grid;
  place-content: center;
  transition: .3s ease;
  overflow: visible;
}
.circle::before {
  content: "";
  position: absolute;
  inset: 0;
  border: 1px solid #fff;
  border-radius: 50%;
  transition: transform .3s ease;
}
@media (any-hover: hover) {
  a:hover .circle::before{
    transform: scale(1.08);
  }
}
.circle .arrow{
  width: 24px;
  margin: 11px 0;
  background-color: #fff;
}
.circle .arrow::before,
.circle .arrow::after {
  width: 14px;
  background-color: #fff;
}
@media screen and (max-width: 810px) {
  .circle{
    width: 70%;
    margin: 40px auto 0;
  }
  .circle .arrow{
    width: 18px;
    margin: 8px 0;
  }
  .circle .arrow::before,
  .circle .arrow::after {
    width: 12px;
  }
}

.top-contact{
  padding-block: var(--space-md);
  margin-top: var(--space-xl2);
  background: url(../img/noise.png) repeat var(--color-beige);
  background-blend-mode: multiply;
  text-align: center;
}
.top-contact h2{ margin-bottom: 1em;}
.top-contact h3{ margin-bottom: 1.5em;}
.top-contact h3 span{
  display: inline-block;
  height: 38px;
  width: auto;
  margin-right: 1em;
  vertical-align: bottom;
}
.top-contact p{ line-height: 1.8;}
.contact-list{
  margin-top: var(--space-sm);
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: var(--space-sm);
}
@media screen and (max-width: 810px) {
  .contact-list{
    grid-template-columns: 1fr;
  }
}
.contact-list li{
  padding: 10px var(--space-sm) 20px;
  background: #fff;
  border-radius: var(--rounded);
}
.contact-tel{
  --size-max: 42;
  --size-min: 28;
  font-family: var(--font-sans);
  font-weight: 900;
  line-height: 1;
}
.contact-hours{
  font-size: var(--font-14);
  font-family: var(--font-sans);
}
.contact-mail{
  --size-max: 24;
  --size-min: 18;
  font-family: var(--font-sans);
  font-weight: 700;
  display: grid;
  grid-template-columns: 1fr auto;
  align-items: center;
  color: #fff;
  background-color: var(--color-blk);
  padding: .5em var(--space-sm);
  border-radius: 100vmax;
  transition: background-color var(--transition);
}
@media (any-hover: hover) {
  .contact-mail:hover{
    background: var(--color-blk-h);
  }
}
.contact-mail .arrow{
  background-color: #fff;
}
.contact-mail .arrow::before,
.contact-mail .arrow::after{
  background-color: #fff;
}

/* ===================
button
=================== */
.btn-more{
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 6em;
  width: fit-content;
  position: relative;
  padding: .5em 0;
  margin-left: auto;
  color: var(--color-main);
  font-weight: bold;
  letter-spacing: .1em;
  --size-max: 18;
  --size-min: 16;
}
@media screen and (max-width: 810px) {
  .btn-more{
    gap: 4.8em;
    margin-right: 2.1em;
  }
}
.btn-more::after{
  content: "";
  position: absolute;
  left: 0;
  bottom: 0;
  display: block;
  width: 100%;
  height: var(--border-size);
  background: var(--color-main);
  transform: scaleX(1);
  transform-origin: right center;
}
@media (any-hover: hover) {
  a.btn-more:hover::after,
  a:hover .btn-more::after {
    animation: line-replay 0.8s forwards;
  }
}
@keyframes line-replay {
  0%   { transform: scaleX(1); transform-origin: right center;}
  50%  { transform: scaleX(0); transform-origin: right center;}   /* 消える */
  51%  { transform: scaleX(0); transform-origin: left center;} /* 消えた後にリセット */
  100% { transform: scaleX(1); transform-origin: left center;}   /* もう一度左から出現 */
}
.btn-more::before{
  content: "";
  position: absolute;
  top: -1em;
  right: -2.1em;
  display: block;
  width: 5em;
  height: 5em;
  border-radius: 50%;
  background: var(--color-light);
  transform: scale(1);
  transition: transform var(--transition);
}
@media (any-hover: hover) {
  a.btn-more:hover::before,
  a:hover .btn-more::before {
    transform: scale(1.2);
  }
}

.btn-more .detail{
  display: block;
  position: absolute;
  top: -1.2em;
  left: 0;
  font-size: var(--font-12);
  letter-spacing: 0;
  display: block;
}
@media screen and (max-width: 810px) {
  .btn-more .detail{
    font-size: var(--font-11);
  }
}


.arrow {
  position: relative;
  display: inline-block;
  width: var(--border-width);
  height: var(--border-size);
  margin: 5px 0;
  background-color: #000000;
}
.arrow::before,
.arrow::after {
  content: "";
  position: absolute;
  top: calc(50% - var(--border-half));
  right: 0;
  width: var(--border-angle);
  height: var(--border-size);
  background-color: var(--color-main);
  transform-origin: calc(100% - var(--border-half)) 50%;
}
.arrow::before {
  transform: rotate(45deg);
}
.arrow::after {
  transform: rotate(-45deg);
}
/* btn white */
.btn-more.white{
  color: #fff;
}
.btn-more.white::after{
  background: #fff;
}
.btn-more.white::before{
  background: rgba(255, 255, 255, 0.3);
}
.white .arrow {
  background-color: #fff;
}
.white .arrow::before,
.white .arrow::after {
  background-color: #fff;
}


.anchor-list{
  display: flex;
  justify-content: center;
  gap: 2em;
  margin-top: var(--space-sm);
}
@media screen and (max-width: 810px) {
  .anchor-list{
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 1em 2em;
  }
}
.anchor-list li{
  position: relative;
}
.anchor-list li::before,
.anchor-list li::after{
  content: "";
  position: absolute;
  top: 55%;
  right: 8px;
  width: 8px;
  height: 1px;
  background-color: var(--color-blk);
}
.anchor-list li::before {
  transform: rotate(-50deg) translateX(50%);
  transform-origin: center bottom;
}
.anchor-list li::after {
  transform: rotate(50deg) translateX(-50%);
  transform-origin: center bottom;
}
.anchor-list li a{
  position: relative;
  display: block;
  width: 100%;
  padding-right: var(--space-xs);
  padding-bottom: 4px;
}
@media screen and (min-width: 810.1px) {
  .anchor-list li a{
    width: min(180px, 15vw);
  }
}
.anchor-list li a::after{
  content: "";
  position: absolute;
  left: 0;
  bottom: 0;
  display: block;
  width: 100%;
  height: 1px;
  background: #666;
  transform: scaleX(1);
  transform-origin: right center;
}
@media (any-hover: hover) {
  .anchor-list li a:hover::after {
    animation: line-replay 0.8s forwards;
  }
}

.txt-link{
  color: var(--color-main);
  box-shadow: inset 0 -1px 0 0 var(--color-main);
  -webkit-box-decoration-break: clone;  /* Safari */
  box-decoration-break: clone;
  padding-bottom: 1px;                   /* オフセット相当 */
  transition: box-shadow .2s ease;
}
@media (any-hover: hover) {
  .txt-link:hover{
    box-shadow: inset 0 -1px 0 0 transparent;   /* フェードさせたい時 */
  }
}

a[target="_blank"]:not(:has(img, svg))::after{
  content: "";
  display: inline-block;
  width: .9em;
  height: .9em;
  margin-inline: .2em .3em;
  background: url("../img/icon_external.svg") center / contain no-repeat;
  vertical-align: middle;
}


/* ===================
下層ページ
=================== */

.h-sub .inner{
  position: relative;
}
.h-sub h1{
  color: #fff;
  position: absolute;
  top: 50%;
  left: 0;
  transform: translate(0, -50%);
}
.h-sub .h-bg{
  margin-inline: var(--bleed);
}
@media screen and (max-width: 810px) {
  .h-sub .ttl--en{ margin-block-start: .5em;}
  .h-sub .h-bg img{
    object-fit: cover;
    aspect-ratio: 3 / 1;
    overflow: hidden;
  }
}

.h-biz{
  aspect-ratio: 1440 / 320;
}
.h-biz.biz1{ background: var(--grad-biz1);}
.h-biz.biz2{ background: var(--grad-biz2);}
.h-biz.biz3{ background: var(--grad-biz3);}
@media screen and (max-width: 810px) {
  .h-biz{
    aspect-ratio: 3 / 1;
  }
}

.wrapper {margin-bottom: var(--space-xl2);}
@media screen and (min-width: 810.1px) {
  .wrapper{
    display: grid;
    grid-template-columns: auto min(69.444vw, 1000px);
  }
  .anchor-menu{
    position: sticky;
    top: var(--header-h);
    padding-top: var(--space-xl2);
    align-self: start; 
    margin-left: calc(var(--space-sm) * -1);
  }
  .anchor-menu > p{
    font-family: "Roboto", sans-serif;
    font-weight: 700;
    color: var(--color-main);
  }
  .anchor-menu li{
    position: relative;
    margin-top: 1em;
  }
  .anchor-menu li a{
    color: #B3B3B3;
  }
  .anchor-menu li.is-active a{
    color: #000;
  }
  .anchor-menu li.is-active::before{
    content: "";
    position: absolute;
    top: 50%;
    left: -20px;
    transform: translate(0, -50%);
    display: block;
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background-color: var(--color-main);
  }
}
@media screen and (max-width: 810px) {
  .anchor-menu{ display: none;}
}
.contents section{
  margin-top: var(--space-xl2);
  scroll-margin-top: var(--header-h);
}
.contents section > h2{
  margin-bottom: var(--space-md);
}

.bg-green{
  background-color: var(--color-light);
  padding-block: var(--space-md);
}
.bg-green .btn-more::before{ background: #fff;}
/*　--------------------
会社情報　
--------------------　*/
@media screen and (min-width: 810.1px) {
  .co-msg{
    display: grid;
    grid-template-columns: 36% auto;
    gap: var(--space-lg);
  }
}
.co-msg h3{
  --size-max: 24;
  --size-min: 18;
  margin-block: 1em;
}
.co-sign{ margin-left: auto; width: 20%; margin-top: 1em;}
@media screen and (max-width: 810px) {
  .co-msg div:first-child{ width: 60%; margin-inline: auto;}
  .co-sign{ width: 30%;}
}
.co-concept{
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: var(--space-sm);
}
@media screen and (max-width: 810px) {
  .co-concept{
    margin-top: 40px;
    grid-template-columns: 1fr;
    gap: 60px;
  }
}

.co-concept > div{
  position: relative;
  padding: 3.5em 1em 1.5em;
  border: 2px solid var(--color-beige);
  text-align: center;
}


.co-concept > div h3{
  position: absolute;
  display: inline-block;
  top: -2.8em;
  left: 50%;
  transform: translate(-50%, 0);
  color: var(--color-beige);
  padding-inline: 1em;
  background: #fff;
}
@media screen and (max-width: 810px) {
  .co-concept > div h3{
    top: -2em;
  }
}
.co-concept h3 .ttl--en{
  --size-max: 40;
  --size-min: 24;
  line-height: 1;
}
.co-concept h3 .ttl--ja{
  font-size: var(--font-14);
}
.co-concept > div p{ font-weight: 600;}

.profile {
  display: grid;
  grid-template-columns: auto 1fr;
  border-top: 1px solid #555;
}
.profile dt{
  font-weight: 700;
  padding: 1.2em 3em 1.2em 1.2em;
  border-bottom: 1px solid #555;
  background-color: var(--color-light);
}
.profile dd{
  padding: 1.2em;
  border-bottom: 1px solid #555;
}
.profile dd > span{
  display: inline-block;
  font-weight: 700;
  line-height: 1.6;
  padding: 0 .5em;
  background-color: var(--color-light);
}
.profile dd > ul + span,
.profile dd > ul + p{ margin-top: 1em;}
.profile a.pin{
  display: inline-block;
  width: .8em;
  margin-bottom: -3px;
  margin-inline: .2em 1em;
}
@media screen and (max-width: 810px) {
  .profile { display: block;}
  .profile dt{ border-bottom: none;}
  .profile dt,
  .profile dd{ padding: .5em 1em;}
  .profile dd > p{ line-height:1.4;}
  .profile dd > p + p{ margin-top: 1em;}
}
.co-timeline {
  color: #5D5D5D;
  --bar-left: 6em;
  --bar-top: 8px;
}
.co-timeline li {
  position: relative;
  display: grid;
  grid-template-columns: var(--bar-left) auto;
  gap: 2em;
  padding-bottom: var(--space-sm);
}
.co-timeline li:last-child{
  padding-bottom: 0;
}
.co-timeline li::before {
  content: "";
  position: absolute;
  left: var(--bar-left);
  top: var(--bar-top);
  display: block;
  width: 2px;
  height: 100%;
  background-color: #ccc;
}
.co-timeline li::after {
  content: "";
  position: absolute;
  top: var(--bar-top);
  left: calc(var(--bar-left) - 7px);
  width: 16px;
  height: 16px;
  border-radius: 50%;
  border: 3px solid var(--color-main);
  background: #fff;
}
.co-timeline li .year {
  --size-max: 28;
  --size-min: 20;
  font-family: "Roboto", sans-serif;
  font-weight: 700;
  line-height: 1.2;
  color: var(--color-main);
}
.co-timeline li dl{
  display: grid;
  grid-template-columns: 12em auto;
  gap: 1em;
}
.co-timeline li dl dt{
  color: var(--color-main);
  font-weight: 700;
}
@media screen and (max-width: 810px) {
  .co-timeline{
    --bar-left: 0em;
    --bar-top: 4px;
  }
  .co-timeline li {
    display: block;
    padding-left: 2em;
  }
  .co-timeline li dl{ display: block; margin-top: .5em;}
}
/*　--------------------
各地の樹木葬　
--------------------　*/
.case h2{
  --size-max: 24;
  --size-min: 18;
  padding-bottom: .5em;
  border-bottom: 1px solid var(--color-blk);
}
.case h3{
  --size-max: 18;
  --size-min: 16;
}
.case-list{
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
  gap: var(--space-lg) var(--space-sm);
}
.case-list div:has(img){
  overflow: hidden;
  aspect-ratio: 16 / 10;
  border-radius: 8px;
}
.case-list img{
  transform: scale(1);
  transition: transform var(--transition);
}
.case-list a:hover img{ transform: scale(1.08);}
.case-list p:not([class]){
  font-size: var(--font-14);
  color: var(--color-blk-h);
  margin-block: .5em;
}
.case-list span{ display: inline-block; line-height: 1;}
.case-list span + span{
  border-left: 1px solid var(--color-blk-h);
  padding-left: 1em;
  margin-left: 1em;
}

.case-h{
  margin-block: var(--space-lg);
}
@media screen and (min-width: 810.1px) {
  .case-h{
    display: grid;
    grid-template-areas: "ttl img" "link img";
    grid-template-columns: repeat(2, 1fr);
    gap: var(--space-sm);
  }
  .case-txt{ grid-area: ttl;}
  .case-img{ grid-area: img;}
  .case-link{ grid-area: link; margin-top: auto;}
}

.case-h img{
  overflow: hidden;
  aspect-ratio: 16 / 10;
  object-fit: cover;
  border-radius: var(--rounded);
}
@media screen and (max-width: 810px) {
  .case-h img{ margin-block: .8em .5em;}
  .case-link { text-align: right;}
}
.case-h h2{
  --size-max: 24;
  --size-min: 20;
  margin-block: .5em;
}
.case-h .case-info{
  font-size: var(--font-14);
}
.case-info span{
  padding-right: 1em;
  display: inline-block;
  line-height: 1.2;
}
.case-info span + span{ border-left: 1px solid var(--color-blk); padding-left: 1em;}

.case-cont h3{
  font-size: var(--font-18);
  font-weight: 700;
  line-height: 1.6;
  margin-top: 2em;
  margin-bottom: 1.2em;
}
.case-box{
  padding: var(--space-sm) var(--space-md) var(--space-md);
  border: 1px solid var(--color-main);
  border-radius: var(--rounded);
  margin-block: var(--space-lg) var(--space-xl2);
}
.case-box .en{ color: var(--color-main);}
.case-grid{
  margin-top: var(--space-md);
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: var(--space-sm);
}
@media screen and (max-width: 810px) {
  .case-grid{
    grid-template-columns: 1fr;
  }
}
.case-grid img{
  overflow: hidden;
  aspect-ratio: 16 / 10;
  object-fit: cover;
  border-radius: var(--rounded);
}
#casestudy{
  margin-top: var(--space-md);
}
#casestudy img{
  overflow: hidden;
  border-radius: var(--rounded);
}
/*　--------------------
プロジェクトストーリー　
--------------------　*/
.story-menu{
  margin-top: var(--space-lg);
}
.story-menu li{ margin-bottom: 16px;}
.story-menu li a{
  display: block;
  overflow: hidden;
  border-radius: var(--rounded);
}
@media screen and (min-width: 810.1px) {
  .story-menu li a{
    display: grid;
    grid-template-columns: 55% 1fr;
  }
}
.story-menu li a div:has(img){
  overflow: hidden;
}
@media screen and (max-width: 810px) {
  .story-menu li a div:has(img){
    aspect-ratio: 2 / 1;
  }
}
.story-menu a img{
  object-fit: cover;
  width: 100%;
  height: 100%;
  transform: scale(1);
  transition: transform var(--transition);
}
@media (any-hover: hover) {
  .story-menu a:hover img{
    transform: scale(1.04);
  }
}
.story-box{
  padding: var(--space-sm);
  display: flex;
  flex-direction: column;
}
.story-box.hiroo{ background: var(--grad-v-grn);}
.story-box.reiwa{ background: var(--grad-v-blu);}
.story-box.ryuko{ background: var(--grad-v-ppl);}
.story-box.hugaku{ background: var(--grad-v-orn);}
.story-box.kuon{ background: var(--grad-v-pnk);}
.story-box h2{
  --size-max: 32;
  --size-min: 24;
  color: #fff;
  font-weight: 700;
  margin-bottom: 1em;
}
.story-box h2 span{
  --size-max: 18;
  --size-min: 16;
  display: block;
  margin-top: .5em;
}
@media screen and (max-width: 810px) {
  .story-box h2{
    display: flex;
    justify-content: space-between;
  }
}
.story-box.hiroo p{ color: #6BFFBD;}
.story-box.reiwa p{ color: #77B4FF;}
.story-box.ryuko p{ color: #C571FF;}
.story-box.hugaku p{ color: #FFA75D;}
.story-box.kuon p{ color: #FF8C8C;}
.story-box p.link-txt{ color: #fff;} 
.story-box .link-txt{ margin-top: auto;}
.story-box .link-txt::after{ background-color: #fff;}
.story-box .link-txt span::before,
.story-box .link-txt span::after {
  background-color: #fff;
}
@media screen and (max-width: 810px) {
  .story-box .link-txt{ margin-top: 1em;}
}

.h-story{
  margin-block: var(--space-lg) var(--space-xl2);
  border-radius: var(--rounded);
  padding: var(--space-md) var(--space-lg);
  position: relative;
}
@media screen and (max-width: 810px) {
  .h-story{
    padding: var(--space-sm);
  }
}
.h-story.hiroo{ background: var(--grad-h-grn);}
.h-story.reiwa{ background: var(--grad-h-blu);}
.h-story.ryuko{ background: var(--grad-h-ppl);}
.h-story.hugaku{ background: var(--grad-h-orn);}
.h-story.kuon{ background: var(--grad-h-pnk);}
.h-story h2{
  --size-max: 40;
  --size-min: 21;
  color: #fff;
}
.h-story h2 > span{
  --size-max: 24;
  --size-min: 16;
  display: inline-block;
  margin-left: 2em;
  vertical-align: middle;
}
.h-story > p{
  --size-max: 70;
  --size-min: 28;
  position: absolute;
  right: 0;
  bottom: 0;
  font-family: var(--font-script);
  line-height: 1;
  color: rgba(32,32,32,0.2);
  mix-blend-mode: multiply;
  transform: rotate(-6deg);
  transform-origin: bottom left;
}
@media screen and (min-width: 810.1px) {
  .story-main{
    display: grid;
    grid-template-columns: auto 30%;
    align-items: center;
    gap: var(--space-sm);
  }
}
.story-img{
  margin-left: var(--bleed);
  overflow: hidden;
  border-radius: 0 var(--rounded) var(--rounded) 0;
  margin-top: calc(var(--space-xl) * -1);
}
@media screen and (max-width: 810px) {
  .story-img{
    margin-top: calc(var(--space-xl) * -1);
  }
}

.story-txt > ul > li{
  position: relative;
	padding-left: 1.5em;
  margin-top: 1em;
}
.story-txt > ul > li::before{
  content: "";
  position: absolute;
  top: calc(1em + 2px);
  left: 0;
  display: block;
  width: 1.2em;
  height: 1px;
  background-color: var(--color-main);
}
.story-txt > ul > li p{
  --size-max: 18;
  --size-min: 16;
  font-weight: 700;
}
.story-cont{ margin-block: var(--space-xl2);}
.story-cont h3{
  --size-max: 40;
  --size-min: 24;
}

.story-project{
  display: grid;
  grid-template-columns: var(--space-lg) auto;
  gap: var(--space-lg) 2em;
  margin-block: var(--space-lg) var(--space-xl2);
}
.story-project dt{
  --size-max: 24;
  --size-min: 18;
  writing-mode: vertical-lr;
  letter-spacing: .05em;
  font-weight: 700;
  border-right: 1px solid var(--color-blk);
}

.story-project h4{
  --size-max: 18;
  --size-min: 16;  
  display: inline-block;
  color: #fff;
  padding: .2em 1em;
  background-color: var(--color-blk);
}
.story-project .box{
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: var(--space-sm);
}
@media screen and (max-width: 810px) {
  .story-project .box{
    grid-template-columns: 1fr;
  }
}
.story-project .box1{
  margin-top: var(--space-sm);
}
@media screen and (max-width: 810px) {
  .story-project .box1 img{
    overflow: hidden;
    aspect-ratio: 16 / 10;
    object-fit: cover;
  }
}
.story-project p{
  margin-top: var(--space-sm);
}
.story-project .box div span{
  --size-max:14;
  --size-min:12;
  display: block;
  text-align: center;
  font-weight: 700;
}

.story-cont img{
  object-fit: cover;
  overflow: hidden;
  border-radius: var(--rounded);
}

.gallery{
  margin-top: var(--space-sm);
  display: grid;
  grid-template-columns: repeat(3,1fr);
  gap: 16px;
  line-height: 1;
}
@media screen and (max-width: 810px) {
  .gallery{
    grid-template-columns: repeat(2,1fr);
    gap: 8px;
  }
}
.gallery button { 
  padding:0;
  border:0;
  background:transparent;
  cursor:pointer;
}
.gallery img{
  object-fit: cover;
  aspect-ratio: 16 / 10;
  overflow: hidden;
  border-radius: var(--rounded);
}
.dlg {
  padding: 20px;
  border: 0;
  max-width:min(80vw, 1000px);
  background: transparent;
}
.dlg::backdrop { background: rgba(0,0,0,0); }
.dlg[open]::backdrop {
  animation: dlg-backdrop var(--transition) both;
}
@keyframes dlg-backdrop {
  from { background: rgba(0,0,0,0); }
  to   { background: rgba(0,0,0,.6); }
}
.dlg[open] {
  inset: 0;
  margin: auto;
  animation: dlg-pop var(--transition) both;
}
@keyframes dlg-pop {
  from { scale(.9); opacity: 0; }
  to   { scale(1);  opacity:1; }
}
@supports selector(html:has(dialog[open])) {
  html:has(dialog[open]) { overflow: hidden; }
}
.dlg img {
  max-width:90vw;
  max-height:90vh;
  object-fit:contain;
}
.dlg__close {
  position: absolute;
  top: 0;
  right: 0;
  width: 40px;
  height: 40px;
  border: 0;
  background: #fff;
  border-radius: 50%;
  cursor: pointer;
}
/* Xマーク（擬似要素で2本線） */
.dlg__close::before,
.dlg__close::after {
  content: "";
  position: absolute;
  left: 50%;
  top: 50%;
  width: 18px;          /* 線の長さ */
  height: 1px;          /* 線の太さ */
  background: var(--color-blk);     /* 線の色 */
}
.dlg__close::before{ transform: translate(-50%, -50%) rotate(45deg);}
.dlg__close::after { transform: translate(-50%, -50%) rotate(-45deg);}

.story-list{
  margin-top: var(--space-xs);
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap:var(--space-sm);
}
@media screen and (max-width: 810px) {
  .story-list{
    grid-template-columns: repeat(2, 1fr);
    gap: 16px;
  }
}
.story-list a{
  display: grid;
  grid-template-columns: 20% auto;
  aspect-ratio: 1;
  overflow: hidden;
  border-radius: var(--rounded);
}
.story-list .story-ttl{
  --size-max: 16;
  --size-min: 13;
  color: #fff;
  writing-mode: vertical-rl;
  display: flex;
  align-items: center;
  flex-direction: row;
  padding-inline: 1em;
  font-weight: 700;
  letter-spacing: 0.05em;
  min-height: 100%;
  -webkit-transform: translateZ(0); 
}
.story-list .story-ttl span{
  margin-top: auto;
  font-weight: 400;
  font-size: var(--font-14);
}
@media screen and (max-width: 810px) {
  .story-list .story-ttl{ padding-inline: .5em; letter-spacing: 0;}
  .story-list .story-ttl span{ font-size: var(--font-12);}
}
.story-ttl.hiroo{ background: var(--grad-v-grn);}
.story-ttl.reiwa{ background: var(--grad-v-blu);}
.story-ttl.ryuko{ background: var(--grad-v-ppl);}
.story-ttl.hugaku{ background: var(--grad-v-orn);}
.story-ttl.kuon{ background: var(--grad-v-pnk);}

/*　--------------------
事業内容
--------------------　*/
.biz-menu{
  margin-block: var(--space-xl2);
}
.biz-menu li{ margin-bottom: var(--space-md);}
.biz-menu li a{
  display: block;
  overflow: hidden;
  border-radius: var(--rounded);
}
@media screen and (min-width: 810.1px) {
  .biz-menu li a{
    display: grid;
    grid-template-columns: repeat(2, 1fr);
  }
}

.biz-img{
  position: relative;
}
.biz-img > img{
  object-fit: cover;
  width: 100%;
  height: 100%;
}
@media screen and (max-width: 810px) {
  .biz-img{
    overflow: hidden;
    aspect-ratio: 2 / 1;
  }
}
.biz-img::before{
  content: "";
  position: absolute;
  inset: 0;
  background: var(--color-blk);
  z-index: 1;
  opacity: .4;
  transition: opacity var(--transition);
}
@media (any-hover: hover) {
  .biz-menu a:hover .biz-img::before{
    opacity: .1;
  }
}
.biz-img h2{
  --size-max: 24;
  --size-min: 18;
  color: #fff;
  font-family: var(--font-sans);
  display: inline-block;
  white-space: nowrap;
  padding: .1em .5em;
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  z-index: 5;
}
.biz-img h2.biz1{ background: var(--grad-biz1);}
.biz-img h2.biz2{ background: var(--grad-biz2);}
.biz-img h2.biz3{ background: var(--grad-biz3);}
.biz-box{
  padding: var(--space-md);
  display: flex;
  flex-direction: column;
  background-color: var(--color-light);
  position: relative;
}

.biz-box > span{
  --size-max: 120;
  --size-min: 76;
  line-height: 1;
  transform: rotate(-6deg);
  display: inline-block;
  position: absolute;
  top: -10px;
  right: 0;
  font-family: var(--font-script);
  color: rgb(0 87 40 / 10%);
  z-index: 1;
}
.biz-box p{ position: relative; z-index: 5;}
.biz-box .btn-more{
  margin-top: auto;
}
.biz-box .btn-more::before{
  background: #fff;
}
@media screen and (max-width: 810px) {
  .biz-box{ padding: var(--space-md) var(--space-sm);}
  .biz-box .btn-more{ margin-top: 40px;}
}

.bg-biz1{
  background: url(../img/biz1_bg.jpg) no-repeat;
  background-size: cover;
}
.biz-intro{
  text-align: center;
  padding-block: var(--space-xl);
  width: var(--width-narrow);
  margin-inline: auto;
}
.biz-intro span{
  display: inline-block;
  font-family: var(--font-script);
  line-height: 1;
  --size-max: 150;
  --size-min: 80;
  mix-blend-mode: multiply;
  transform: rotate(-6deg);
  transform-origin: bottom left;
}

.biz-intro > p + p{ margin-top: 1em;}

.biz-intro span.biz1{ color: rgb(104 148 39 / 35%);}
.biz-intro span.biz2{ color: rgb(178 98 97 / 15%);}
.biz-intro span.biz3{ color: rgb(22 135 182 / 20%);}
.biz-intro span + h2{
  margin-top: calc(var(--space-md) * -1);
  margin-bottom: 1em;
  letter-spacing: 0;
}
@media screen and (max-width: 810px) {
  .biz-intro p{ text-align: left;}
}
.biz-cont section{
  margin-top: var(--space-xl);
}
.biz-cont h3{
  display: inline-block;
  --size-max: 24;
  --size-min: 18;
  padding-right: 1em;
  margin-bottom: 1em;
  position: relative;
}
.biz-cont h3::after{
  content: "";
  position: absolute;
  bottom: 0;
  left: var(--bleed);
  display: block;
  width: calc(100% + (var(--bleed) * -1));
  height: 1px;
  background-color: var(--color-main);
}
.biz-cont h3 span{
  --size-max: 56;
  --size-min: 40;
  color: var(--color-main);
  padding-right: 0.5em;
}
@media screen and (max-width: 810px) {
  .biz-cont h3{
    display: flex;
    align-items: center;
    padding-right: 0;
  }
}
.biz-cont img{
  overflow: hidden;
  border-radius: var(--rounded);
}
.biz-cont .biz1-grid{
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: var(--space-sm);
}
@media screen and (min-width: 810.1px) {
  .grid-th1{ order: 1;}
  .grid-th2{ order: 2;}
}
@media screen and (max-width: 810px) {
  .biz-cont .biz1-grid{
    grid-template-columns: 1fr;
  }
}
.biz1-box{
  margin-top: var(--space-sm);
  display: grid;
  grid-template-columns: 24px auto;
  gap: var(--space-xs);
  padding: 16px;
  background-color: var(--color-light);
}
.biz1-box .biz1-ex{
  display: flex;
  align-items: center;
  padding: 1em 0;
  color: #fff;
  background: linear-gradient(180deg, #689427 0%, #004D3D 90%);
  writing-mode: vertical-lr;
  letter-spacing: .2em;
}
.biz1-box p{ line-height: 1.6;}
.biz1-box p + p{ margin-top: .5em;}
.biz-cont .biz1-grid3{
  margin-top: var(--space-sm);
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: var(--space-sm);
  margin-bottom: var(--space-xl3);
}
@media screen and (max-width: 810px) {
  .biz-cont .biz1-grid3{ grid-template-columns:1fr;}
}

.carousel{
  overflow: hidden;
  width: 100%;
}
.carousel-track{
  display: flex;
  gap: 16px;
  animation: marquee 90s linear infinite;
}
.carousel-track.recruit-track{
  animation: marquee 40s linear infinite;
}
.carousel-track.toleft{ animation-direction: normal;}
.carousel-track.toright{ margin-top: 16px; animation-direction: reverse;}
.carousel-track li{
  width: calc(100% / 4);
  min-width: calc(100% / 4);
  flex-shrink: 0;
  overflow: hidden;
  border-radius: 8px;
}
@media (max-width: 810px) {
  .carousel-track{
    gap: 8px;
  }
  .carousel-track li {
    width: calc(100% / 3);
    min-width: calc(100% / 3);
  }
  .carousel-track.recruit-track li {
    width: calc(100% / 2);
    min-width: calc(100% / 2);
  }
  .carousel-track.toright{ margin-top: 8px;}

}
/* アニメーション */
@keyframes marquee {
  0% {
    transform: translateX(0);
  }
  100% {
    transform: translateX(-50%);
  }
}

.biz2-circle{
  width: min(50%, 600px);
  margin: var(--space-lg) auto;
}
@media (max-width: 810px) {
  .biz2-circle{
    width: min(80%, 600px);
  }
}
.biz2-circle > div{ position: relative;}
.biz2-circle > div::before{
  content:""; 
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  width: 85%;
  aspect-ratio: 1;
  border-radius: 50%;
  background-color: #fff;
  z-index: -1;
  filter: drop-shadow(0px 0px 24px rgb(221 199 201 / 0.5));
}
.biz2-list{
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: var(--space-md) var(--space-sm);
  margin-bottom: var(--space-xl2);
}
.biz2-list .col2{
  grid-column: span 2;
}
@media (max-width: 810px) {
  .biz2-list{
    grid-template-columns: repeat(2, 1fr);
  }
}
.biz2-list h3{
  --size-max: 18;
  --size-min: 16;
  font-weight: 700;
  margin-block: 1em .5em;
}
.biz2-list h3 span{
  color: #B4737A;
  font-weight: 800;
  display: inline-grid;
  place-items: center;
  inline-size: 1.5em;
  font-size: .9em;
  aspect-ratio: 1;
  border-radius: 50%;
  border: 1px solid #B4737A;
  margin-right: .3em;
}
.biz2-list img{
  overflow: hidden;
  border-radius: 8px;
}
.biz2-list p{
  --size-max: 16;
  --size-min: 14;
  line-height: 1.6;
}

.link-box{
  padding: var(--space-sm) var(--space-lg) var(--space-sm) var(--space-sm);
  border-radius: var(--rounded);
  background-color: var(--color-light);
}
@media (min-width: 810.1px) {
  .link-box{
    display: grid;
    grid-template-columns: 1fr auto;
    align-items: center;
  }
  .link-box div:last-child{
    align-self: end;
  }
}
@media (max-width: 810px) {
  .link-box div:last-child{ margin-top: 32px;}
}
.link-box p{ line-height: 2;}
.link-box .ttl{
  --size-max: 24;
  --size-min: 18;
  color: var(--color-main);
  font-weight: 700;
  margin-bottom: .5em;
}
.link-box .btn-more{ font-size: var(--font-16);}
.link-box .btn-more::before{
  background: #fff;
}
.bg-biz3{
  background: #efefef;
  padding-block: var(--space-lg);
}
p.biz3-ttl{ font-weight: 600;}
.biz3-ttl{ 
  --size-max: 24;
  --size-min: 18;
  text-align: center;
  margin-bottom: 2em;
}
.biz3-feature{
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: var(--space-xs);
  margin-bottom: var(--space-xl2);
}
@media (max-width: 810px) {
  .biz3-feature{
    grid-template-columns: 1fr;
  }
}
.biz3-feature li{
  color: #fff;
  line-height: 1.6;
  padding: var(--space-sm) var(--space-md);
  border-radius: 8px;
  background-color: #005C82;
}
.biz3-feature li h4{
  --size-max: 24;
  --size-min: 18;
  text-align: center;
  margin-bottom: .8em;
}

.biz3-box{
  background: #fff;
  border-radius: var(--rounded);
  padding: var(--space-lg) var(--space-xl3) 0;
  overflow: hidden;
}
.biz3-box h3{
  --size-max: 40;
  --size-min: 24;
  margin-bottom: 1em;
  text-align: center;
}
.biz3-boxbtm{
  color: #fff;
  text-align: center;
  background-color: #005C82;
  padding: var(--space-md) var(--space-sm);
  margin-top: var(--space-lg);
  margin-inline: calc(var(--space-xl3) * -1);
  z-index: 1;
}
@media (max-width: 810px) {
  .biz3-box{
    padding: var(--space-lg) var(--space-sm) 0;
  }
  .biz3-boxbtm{
    margin-inline: calc(var(--space-sm) * -1);
    text-align: left;
  }
}

.biz3-case{
  display: grid;
  grid-template-columns: 30% auto;
  gap: var(--space-sm);
  align-items: center;
  margin-bottom: var(--space-xl2);
}
@media (max-width: 810px) {
  .biz3-case{
    grid-template-columns: 1fr;
    justify-items: center;
  }
  .biz3-case div:has(img){ width: 60%;}
  .biz3-case h4{ text-align: center;}
}
.biz3-case img{
  overflow: hidden;
  aspect-ratio: 1;
  object-fit: cover;
  border-radius: 100vmax;
}
.biz3-case h4{
  --size-max: 32;
  --size-min: 20;
  font-weight: 600;
  margin-bottom: 1em;
}

.biz3-step li{
  display: grid;
  grid-template-columns: 71px auto;
  gap: var(--space-sm);
  padding-bottom: var(--space-lg);
  position: relative;
}
.biz3-step li:not(:last-child)::before{
  content: "";
  position: absolute;
  top: 0;
  bottom: 0;
  left: 35px;
  display: block;
  width: 1px;
  background-color: #005C82;
  z-index: 1;
}
@media (max-width: 810px) {
  .biz3-step li{
    grid-template-columns: 51px auto;
  }
  .biz3-step li:not(:last-child)::before{
    left: 25px;
  }
}
.biz3-step .biz3-step-num{
  font-weight: 600;
  text-align: center;
  color: #fff;
  aspect-ratio: 1;
  border-radius: 50%;
  background: #005C82;
  position: relative;
  z-index: 5;
  display: grid;
  place-content: center;
  font-size: var(--font-20);
  line-height: 1.3;
}
.biz3-step-num span{ 
  display: block;
  font-size: var(--font-12);
}
.biz3-step-cont{
  display: grid;
  grid-template-columns: min(220px,28%) auto;
  gap: var(--space-xs);
  line-height: 1.8;
}
@media (max-width: 810px) {
  .biz3-step-cont{
    grid-template-columns: 1fr;
  }
}
.biz3-step-cont img{
  overflow: hidden;
  border-radius: 8px;
}
.biz3-step-cont dt{
  --size-max: 24;
  --size-min: 18;
  font-weight: 600;
  line-height: 1;
  margin-bottom: .5em;
}

.biz3-letter{
  margin-top: var(--space-lg);
  padding: var(--space-md) var(--space-lg);
  border: 1px solid #005C82;
  background: #F9FAFE;
  border-radius: var(--rounded);
  position: relative;
  z-index: 1;
}
.biz3-letter::after{
  content: "";
  position: absolute;
  top: -44px;
  left: 50%;
  transform: translate(-50% , 0);
  display: block;
  width: 90%;
  height: 60px;
  z-index: 5;
  background: url(../img/biz3_deco.svg) center / contain no-repeat;
}
@media (max-width: 810px) {
  .biz3-letter{
    padding: 32px 24px;
  }
  .biz3-letter::after{
    top: -5.333vw;
    height: 8vw;z
  }
}
.biz3-letter > p{
  --size-max: 24;
  --size-min: 18;
  font-weight: 600;
  color: #003457;
  text-align: center;
  margin-bottom: 1em;
}
.biz3-note{
  line-height: 2.5;
  background: linear-gradient(180deg, transparent calc(100% - 1px), #ccc 0);
  background-size: 100% 2.5em;
  line-height: 2.5;
}
.biz3-note p{ font-family: var(--font-sans);}
.biz3-note p + p{ margin-top: 2.5em;}



.biz-link ul{
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  /* gap: 1px; */
}
@media screen and (max-width: 810px) {
  .biz-link ul{ display: block;}
  .biz-link ul li{
    margin-top: 1px;
  }
  .biz-link ul li img{
    overflow: hidden;
    aspect-ratio: 3 / 1;
    object-fit: cover;
    object-position: top center;
  }
}
.biz-link ul li a{
  display: block;
  position: relative;
}
.biz-link ul li a .biz-linktxt{
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  display: grid;
  grid-template-columns: auto min(90px, 6.25vw);
  justify-content: center;
  align-items: center;
  gap: 2em;
  width: 80%;
}
@media screen and (max-width: 810px) {
  .biz-link ul li a .biz-linktxt{
    grid-template-columns: auto 90px;
    width: 98%;
  }
  .biz-link .circle{ margin: 0 auto;}
}
.biz-link ul li a .biz-linktxt p{
  --size-max: 18;
  --size-min: 16;
  color: #fff;
  font-weight: 600;
  font-family: var(--font-sans);
}
.biz-link ul li a::before{
  content:"";
  position:absolute;
  inset:0;
  background: var(--color-blk); 
  opacity: 0.7;
  transition: opacity var(--transition);
}

@media (any-hover: hover) {
  .biz-link ul li a:hover::before{
    opacity: 0.4;
  }
}
.biz-link .circle .arrow{
  width: 12px;
}
.biz-link .circle::before{ border: 1px solid #ccc;}
.biz-link .circle .arrow::before,
.biz-link .circle .arrow::after {
  width: 8px;
}


/*　--------------------
新着情報　
--------------------　*/
.news {margin-top: var(--space-xl2);}
.news-list{
  text-align: left;
  margin-top: var(--space-sm);
  margin-bottom: var(--space-md);
  line-height: 1.8;
}
.news-ttl{
  font-weight: 700;
}
.news-ttl + p{ font-size: var(--font-14); margin-top: .5em;}
.news-list li{
  display: grid;
  align-items: center;
  grid-template-columns: 5em auto minmax(0, 1fr);
  gap: 2.5em;
  border-bottom: 1px dotted var(--color-blk);
  padding-block: 2em;
  padding-inline: 1em;
}
.news-list li a{
  display: block;
  min-width: 0;
  max-width: 100%;
  transition: color var(--transition);
}
.news-list li a p:not(.news-ttl){
  overflow: hidden;
  white-space: nowrap;
  text-overflow: ellipsis;
}

@media (any-hover: hover) {
  .news-list li a:hover{ color: var(--color-main);}
}
.news-list li > * { min-width: 0; } /* safari */
@media screen and (max-width: 810px) {
  .news-list{
    width: 100%;
    margin-top: 0;
  }
  .news-list li{
    display: block;
  }
  .news-list li a{
    max-width: 100%;
    min-width: 0;
    margin-top: 1em;
  }
  .category{ margin-left: 1em;}
}

.blog-list{
  margin-block: var(--space-md);
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
  gap: var(--space-lg) var(--space-sm);
  line-height: 1.8;
}
.blog-list .blog-img{
  overflow: hidden;
  aspect-ratio: 16 / 10;
  border-radius: 8px;
  margin-bottom: .5em;
}
.blog-list img{
  transform: scale(1);
  transition: transform var(--transition);
}
.blog-list a:hover img{ transform: scale(1.08);}
.blog-list .blog-date{ font-size: var(--font-12); margin-top: .5em;}
.blog-ttl{ font-weight: 600;}
.blog-txt{ font-size: var(--font-14);}


/*　--------------------
CSR活動　
--------------------　*/
.sub-intro{
  text-align: center;
  margin-block: var(--space-lg);
}
@media (max-width: 810px) {
  .sub-intro{ text-align: left;}
}

.csr-flow{ margin-block: var(--space-md) var(--space-xl2);}
.csr-flow li{
  display: grid;
  grid-template-columns: 80px 1fr;
  gap: var(--space-sm);
  margin-bottom: var(--space-md);
}
@media (max-width: 810px) {
  .csr-flow li{
    grid-template-columns: 1fr;
  }
}
.csr-flow h3{
  --size-max: 24;
  --size-min: 18;
  line-height: 1.4;
}
@media (min-width: 810.1px) {
  .csr-flow h3{ padding-top: .3em;}
}
.flow-arrow{
  padding: .5em 1em;
  border: 1px solid var(--color-main);
  border-radius: 8px;
}
@media (min-width: 810.1px) {
  .flow-arrow{ 
    padding: 12px 0 0;
    text-align: center;
    width: 80px;
  }
  .flow-arrow.line{
    padding: 12px 0 80px;
    min-height: 10em;
    border-bottom: none;
    position: relative;
  }
  .flow-arrow.line::after{
    content: "";
    position: absolute;
    bottom: 0;
    left: -1px;
    right: 0;
    display: block;
    width: 80px;
    height: 80px;
    background: url(../img/flow_arrow.svg) center bottom no-repeat;
  }
}
@media (max-width: 810px) {
  .flow-arrow{ position: relative;}
  .flow-arrow::after{
    content: "";
    position: absolute;
    top: 3px;
    bottom: -4px;
    left: 3px;
    right: -4px;
    border-radius: var(--rounded);
    border: solid 1px var(--color-main);
    /* background-color: var(--color-light); */
    z-index: -1;
  }
}

.flow-arrow span{
  --size-max: 24;
  --size-min: 18;
  color: var(--color-main);
  font-weight: 700;
}
@media (min-width: 810.1px) {
  .flow-arrow span{
    display: inline-block;
    writing-mode: vertical-lr;
    text-orientation: upright;
    letter-spacing: .2em;
  }
}
.flow-cont{
  display: grid;
  grid-template-columns: auto 45%;
  gap: var(--space-sm);
  margin-top: var(--space-xs);
}
@media (max-width: 810px) {
  .flow-cont{
    grid-template-columns: 1fr;
  }
}
.flow-cont div:has(img){
  overflow: hidden;
  aspect-ratio: 16 / 10;
  border-radius: var(--rounded);
}
.flow-box{
  display: grid;
  grid-template-columns: calc(100% / 3) auto;
  border-radius: var(--rounded);
  border: 1px solid var(--color-main);
  overflow: hidden;
  margin-top: var(--space-sm);
}
.flow-box .flow-point{
  display: grid;
  place-items: center;
  color: #fff;
  background-color: var(--color-main);
  position: relative;
}
@media (max-width: 810px) {
  .flow-box{
    display: block;
  }
  .flow-box .flow-point{
    padding-block: 50px 20px;
  }
}
.flow-box .flow-point > span{
  display: inline-block;
  position: absolute;
  top: 8px;
  left: 10px;
  font-family: var(--font-sans);
  font-size: var(--font-12);
  font-weight: 900;
  padding-inline: 2.5em 4px;
  background: url(../img/icon_onion_w.svg) left 2px bottom 4px no-repeat;
}
.flow-box .flow-point > span::before,
.flow-box .flow-point > span::after{
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  display: block;
  height: 1px;
  background-color: var(--color-beige);
}
.flow-box .flow-point > span::before{ bottom: 0;}
.flow-box .flow-point > span::after{ bottom: -3px;}


.flow-box .flow-point p{
  --size-max: 24;
  --size-min: 18;
  font-weight: 600;
  text-align: center;
}
.flow-box dl{
  padding: var(--space-xs) var(--space-sm);
}
.flow-box dt{
  color: var(--color-main);
  font-weight: 700;
}
.flow-box dd + dt{ margin-top: 1em;}

.csr-box{
  display: grid;
  gap: var(--space-md);
  margin-top: var(--space-xl);
}
.csr-box.grid2{
  margin-bottom: var(--space-xl2);
}
@media (min-width: 810.1px) {
  .csr-box.grid1{
    grid-template-columns: auto 60%;
  }
  .csr-box.grid2{
    grid-template-columns: 60% auto;
  }
  .csr-order2{ order: 2;}
  .csr-order1{ order: 1;}
}
.csr-box p{ margin-top: 1em;}
.csr-img1{
  width: 44%;
  margin-right: auto;
}
.csr-img2{
  width: 83%;
  margin-left: auto;
  margin-top: max(-8.33vw, -120px);
  position: relative;
  z-index: -1;
}
.csr-img1{
  width: 44%;
  margin-right: auto;
}
.csr-img2{
  width: 83%;
  margin-left: auto;
  margin-top: max(-8.33vw, -120px);
}
.csr-img3{
  width: 83%;
  margin-right: auto;
}
.csr-img4{
  width: 44%;
  margin-left: auto;
  margin-top: max(-4.166vw, -60px);
}
.csr-img1,
.csr-img2,
.csr-img3,
.csr-img4{
  overflow: hidden;
  border-radius: var(--rounded);
}


.csr-ttl{
  --size-max: 40;
  --size-min: 24;
  color: var(--color-main);
  padding-top: var(--space-md);
  display: flex;
  align-items: center;
}
.csr-ttl span{
  display: inline-block;
  width: 1em;
  margin-right: .5em;
}
.csr-ppl{
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: var(--space-md) var(--space-sm);
  margin-top: var(--space-sm);
}
.ppl-name{
  margin-top: 1em; 
  color:var(--color-main);
  font-weight: 700;
}
@media screen and (max-width: 810px) {
  .csr-ppl{
    width: 90%;
    margin-inline: auto;
    grid-template-columns: 1fr;
  }
  .ppl-name{ margin-top: .5em;}

}
.csr-ppl p:not([class]){ font-size: var(--font-14);}
.csr-ppl img{
  overflow: hidden;
  border-radius: var(--rounded);
}

.csr-bnr{
  width: min(45%, 560px);
  margin: var(--space-xl2) auto;
}
@media screen and (max-width: 810px) {
  .csr-bnr{
    width: 100%;
  }
}

.csr-prod{
  display: grid;
  grid-template-columns: 40% 1fr 40%;
  padding: var(--space-sm);
  border-radius: var(--rounded);
  background-color: var(--color-beige);
  margin-block: var(--space-sm) var(--space-xl);
}
@media screen and (max-width: 810px) {
  .csr-prod{
    grid-template-columns: 1fr;
    gap: var(--space-sm);
  }
}
.prod-box{
  overflow: hidden;
  border-radius: var(--rounded);
  background: #fff;
}
.prod-box dl{
  background-color: #F9F6EB;
  text-align: center;
  padding-block: 1em;
  font-weight: 700;
  margin-bottom: 8px;
}
.prod-box dt{
  --size-max: 24;
  --size-min: 18;
}
.prod-box > div{
  width: 50%;
  margin-inline: auto;
}
.prod-box > p{
  padding: 16px;
  line-height: 1.6;
}
.prod-arrow{
  display: grid;
  justify-items: center;
}
.prod-arrow span{
  display: block;
  width: 54px;
  height: 2px;
  background-color: #fff;
  position: relative;
  align-self: end;
  margin-bottom: 1em;
}
.prod-arrow span::before,
.prod-arrow span::after{
  content: "";
  position: absolute;
  display: block;
  background-color: #fff;
  transform-origin: calc(100% - 1px) 50%;
}
@media screen and (min-width: 810.1px) {
  .prod-arrow span::before,
  .prod-arrow span::after{
    top: calc(50% - 1px);
    right: 0;
    width: 10px;
    height: 2px;
    transform-origin: calc(100% - 1px) 50%;
  }
}
.prod-arrow span::before { transform: rotate(40deg);}
.prod-arrow span::after { transform: rotate(-40deg);}
@media screen and (max-width: 810px) {
  .prod-arrow{
    display: grid;
    grid-template-columns: auto 1fr;
  }
  .prod-arrow span{
    width: 2px;
    height: 40px;
    justify-self: end;
    margin-bottom: 0;
    margin-left: 60px;
  }
  .prod-arrow span::before,
  .prod-arrow span::after{
    left: calc(50% - 1px);
    bottom: 0;
    width: 2px;
    height: 10px;
    transform-origin: 50% calc(100% - 1px) ;
  }
  .prod-arrow span::before { transform: rotate(40deg);}
  .prod-arrow span::after { transform: rotate(-40deg);}
}
.prod-arrow p{ 
  font-family: var(--font-sans);
  font-weight: 600;
  color: #fff;
}


/*　--------------------
採用情報
--------------------　*/

.recruit-ttl{
  --size-max: 40;
  --size-min: 24;
  margin-block: var(--space-xl) var(--space-sm);
  text-align: center;
}
.check-list{
  width: fit-content;
  margin-inline: auto;
}
.check-list li{
  --size-max: 18;
  --size-min: 16;
  background: url(../img/icon_check.svg) left top 30% no-repeat;
  background-size: 1.5em;
  padding: 0 0 .5em 2.5em;
  border-bottom: 1px solid var(--color-main);
  margin-top: 1em;
  line-height: 1.6;
}
.recruit-bg{
  background: url(../img/recruit_bg.jpg) no-repeat;
  background-size: cover;
  margin-top: var(--space-xl);
}
@media screen and (max-width: 810px) {
  .recruit-bg{
    background: url(../img/top_recruit_sp.jpg) no-repeat;
    background-size: cover;
  }
}
.recruit-bg > p{  
  --size-max: 32;
  --size-min: 24;
  letter-spacing: .3em;
  font-weight: 600;
  display: inline-block;
  color: #fff;
}
@media screen and (min-width: 810.1px) {
  .recruit-bg > p{
    margin-left: 36.111vw;
    margin-block: 8.333vw 6.25vw;
  }
}
@media screen and (max-width: 810px) {
  .recruit-bg > p{
    margin-left: 10%;
    margin-block: 10vw 74.666vw;
  }

}
.recruit-box{
  padding: 6.25vw;
  background-color: rgba(255, 255, 255, 0.6);
  -webkit-backdrop-filter: blur(8px);
  backdrop-filter: blur(8px);
}
.recruit-box ul{
  display: flex;
  justify-content: center;
}
.recruit-box ul li + li{ position: relative;}
.recruit-box ul li + li::before{
  content: "";
  position: absolute;
  display: block;
  background-color: var(--color-main);
}
@media screen and (min-width: 810.1px) {
  .recruit-box ul li{
    padding-inline: 4.86vw;
  }
  .recruit-box ul li + li::before{
    top: calc(50% - 2em);
    left: 0;
    width: 1px;
    height: 4em;
  }
}
@media screen and (max-width: 810px) {
  .recruit-box{
    padding: 16px;
  }
  .recruit-box ul{
    flex-direction: column;
    align-items: center;
  }
  .recruit-box ul li{
    padding-block: 16px;
  }
  .recruit-box ul li + li::before{
    top: 0;
    left: calc(50% - 5em);
    width: 10em;
    height: 1px;
  }
}

.recruit-box li a{
  color: #062C00;
  display: flex;
  gap: 1em;
  align-items: center;
}
.recruit-box li p{
  --size-max: 40;
  --size-min: 32;
  font-weight: 700;
  line-height: 1.4;
  letter-spacing: .1em;
  text-align: center;
}
.recruit-box li a > p span{
  display: block;
  font-weight: 600;
  letter-spacing: 0;
  font-size: var(--font-16);
}

.recruit-box li a > div{
  position: relative;
  width: min(104px,7.22vw);
  height: min(104px,7.22vw);
  display: grid;
  place-items: center;
}
@media screen and (max-width: 810px) {
  .recruit-box li a > div{
    width: min(80px,21.333vw);
    height: min(80px,21.333vw);
  }
}
.recruit-box li a > div::before{
  content: "";
  position: absolute;
  inset: 0;
  display: block;
  border-radius: 50%;
  background: #062C00;
  transform: scale(1);
  transition: transform var(--transition);
  z-index: 1;
}
@media (any-hover: hover) {
  .recruit-box li a:hover > div::before{
    transform: scale(1.1);
  }
}
.recruit-box li a > div span{
  position: relative;
  z-index: 5;
  display: block;
  width: 18px;
}
.recruit-box .arrow{
  width: 12px;
  background-color: #fff;
}
.recruit-box .arrow::before,
.recruit-box .arrow::after {
  background-color: #fff;
}

/*　--------------------
プライバシーポリシー
--------------------　*/
.privacypolicy h2{
  --size-max: 24;
  --size-min: 18;
  margin-top: var(--space-md);
}
.privacypolicy p,
.privacypolicy ul{ margin-top: 1em;}
.privacypolicy .enactment{
  text-align: right;
  margin-block: var(--space-lg);
}
/* ===================
animation
=================== */
.fade > *{
  opacity: 0;
  transform: translateY(40px);
  filter: blur(5px);
  transition: opacity 0.6s ease-out, transform 0.6s ease-out, filter 0.6s ease-out;
}
.fade > *.inview{
  opacity: 1;
  filter: blur(0);
  transform: translateY(0);
}

.fade-up{
  opacity: 0;
  transform: translateY(40px);
  filter: blur(5px);
  transition: opacity 0.6s ease-out, transform 0.6s ease-out, filter 0.6s ease-out;
}
.fade-up.inview{
  opacity: 1;
  filter: blur(0);
  transform: translateY(0);
}

.blur {
  opacity: 0;
  filter: blur(10px);
  transition: opacity 0.6s ease-out, filter 0.6s ease-out;
}
.blur.inview {
  opacity: 1;
  filter: blur(0);
}



/* ===================
banner　POPUP
=================== */
/* open 中だけ背景スクロール停止 */
body:has(#bnr-popup[open]) { overflow: hidden; }
/* dialog 自体は透明コンテナに */
#bnr-popup {border: 0; padding: 0; background: transparent; }
/* フェード（任意） */
#bnr-popup:not([open]) { opacity: 0; visibility: hidden; }
#bnr-popup[open]       { opacity: 1; visibility: visible; transition: opacity .4s; }

#bnr-popup .dlg__overlay{
  position: fixed;
  inset: 0;
  background: rgba(0,0,0,.8);
  border: 0;
  padding: 0;
  margin: 0;
  z-index: 100;
  cursor: pointer;
}



#bnr-popup .dlg__panel{
  position: fixed;
  top: 50%; left: 50%;
  transform: translate(-50%, -50%);
  width: min(800px, 80%);
  max-height: 80dvh;
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
  overscroll-behavior: contain;

  background: #fff;
  border-radius: var(--rounded);
  padding: 16px;
  text-align: center;
  z-index: 101;

  transition: opacity .4s;
  opacity: 1;
}
#bnr-popup:not([open]) .dlg__panel{
  opacity: 0;
}

/* 閉じるボタン */
#bnr-popup .btn-close{
  position: fixed; 
  right: calc((100vw - min(800px, 80vw)) / 2 + 10px);
  top: calc(10vh + 10px);
  z-index: 102;
  width: 34px; height: 34px;
  border: 0;
  color: #fff;
  background: var(--color-blk);
  border-radius: 50%;
  cursor: pointer;
}

@media (prefers-reduced-motion: reduce){
  * { transition: none !important; }
}

.pop-ttl{
  --size-max: 24;
  --size-min: 18;
  font-weight: 600;
  color: var(--color-main);
  margin-block: 1em;
}
.pop-txt{
  line-height: 1.8;
}
.pop-btn{
  --size-max: 24;
  --size-min: 18;
  font-family: var(--font-sans);
  display: block;
  width: min(400px, 60%);
  color: #fff;
  padding: .2em 0;
  border-radius: 100vmax;
  background: var(--color-main);
  margin: var(--space-xs) auto ;
}
#bnr-popup a[target="_blank"]:not(:has(img, svg))::after{
  background: url("../img/icon_external_w.svg") center / contain no-repeat;
}
@media screen and (max-width: 810px) {
  .pop-btn{ width: 100%;}
}

/* ===================
input
=================== */

/* 見た目（最低限） */
.tabs[role="tablist"] { 
  display: grid;
  grid-template-columns: repeat(3, 20%); 
  justify-content: center;
  align-items: center;
  gap: 8px; 
  border-bottom: 1px solid var(--color-main); 
  margin-top: var(--space-lg);
}
.contact-tab {
  appearance: none;
  border: 0;
  background: var(--color-light);
  padding: 0 0.2em;
  line-height: 1.2;
  min-height: 4.5em;
  color: #B3B3B3;
  font-weight: 700; 
  cursor: pointer; 
  border-radius: 2px 2px 0 0;
  transition: .3s ease;
}
@media screen and (max-width: 810px) {
  .tabs[role="tablist"] { 
    grid-template-columns: repeat(3, calc((100% - 24px) / 3));
    gap: 4px;
  }
  .contact-tab {
    font-size: var(--font-12);
    min-height: 5em;
  }
}
.contact-tab:hover {
  color: #fff;
  background: var(--color-main);
}
.contact-tab[aria-selected="true"] { 
  color: var(--color-main);
  border-left: 1px solid var(--color-main);
  border-right: 1px solid var(--color-main);
  border-top: 1px solid var(--color-main);
  background: #fff;
  position: relative;
}
.contact-tab[aria-selected="true"]::after{
  content: "";
  position: absolute;
  bottom: -1px;
  left: 0;
  right: 0;
  display: block;
  height: 1px;
  background-color: #fff;
}
.contact-tab:focus-visible {
  outline: 2px solid var(--color-beige);
  outline-offset: 3px;
  border-radius: 2px;
}

.contact-panel { padding: var(--space-xl) 0 ; }
.contact-panel h2{
  --size-max: 24;
  --size-min: 18;
  font-weight: 700;
  text-align: center;
}
.contact-panel h3{
  width: fit-content;
  border-top: 1px solid #ccc;
  border-bottom: 1px solid #ccc;
  text-align: center;
  padding: 1em;
  margin: var(--space-md) auto 0;
}
.contact-panel h3 + .sub-intro{ margin-block: 1.5em var(--space-lg);}
.c-form {
  padding: var(--space-lg);
  border-radius: var(--rounded);
  background-color: var(--color-light);
}
@media screen and (max-width: 810px) {
  .c-form { padding: var(--space-sm);}
}
@media screen and (min-width: 810.1px) {
  .c-form form > div:not([class]){
    display: grid;
    grid-template-columns: 20% auto;
  }
}
.c-form div + div{
	margin-top: 2em;
}
label{ padding: 1em 0;}
label .req,
label .opt{
  display: inline-block;
  line-height: 1;
  color: #fff;
  font-size: .7em;
  padding: .2em .5em;
  margin-left: .8em;
  border-radius: 2px;
}
label .req { background-color: #B62D2D; }
label .opt { background-color: #B3B3B3; }

.contact-btn,
.entry-btn { text-align: center;}
.contact-btn button {
  font-size: var(--font-20);
  text-align: center;
  font-family: var(--font-sans);
  width: 50%;
  margin-inline: auto;
  color: #fff;
  font-weight: 700;
  cursor: pointer;
  padding: 1em 0;
  border: 0;
  border-radius: 100vmax;
  background: var(--color-blk);
}

.entry-btn button,
.thanks-btn {
  font-size: var(--font-20);
  text-align: center;
  font-family: var(--font-sans);
  width: 50%;
  margin-inline: auto;
  color: #fff;
  font-weight: 700;
  cursor: pointer;
  padding: 1em 0;
  border: 0;
  border-radius: 100vmax;
  background: var(--color-main);
}
.thanks-btn{
  display: block;
  width: 40%;
  margin-top: var(--space-lg);
}
@media screen and (max-width: 810px) {
  .contact-btn input[type="submit"],
  .entry-btn button,
  .thanks-btn {
    font-size: var(--font-18);
    width: 100%;
    padding: .5em 0;
  }
}

.entry-file span.file-type{ display: block;}
.entry-file input[type=file] { margin-bottom: 1em;}


.thanks{
  margin-block: var(--space-lg);
  text-align: center;
}
.thanks-img{
  width: min(52px, 13.333vw);
  margin-inline: auto;
}
.thanks h2{
  --size-max: 24;
  --size-min: 18;
  margin-block: 1em 2em;
}



span.wpcf7-list-item{
  display: block;
/*   margin-top: 1em; */
/*   margin-left: 2em; */
}
span[data-name="inquiry"] {
/*   margin-bottom: 3em; */
}

input[type=text],
input[type=email],
input[type=password],
input[type=tel],
input[type=date],
input[type=number],
textarea,
select {
  vertical-align: middle;
  width: 100%;
  max-width: 100%;
  padding: .5em;
  color: #555;
  background-color: #fff;
  text-align: left;
  border: 0.5px solid #909090;
  border-radius: 2px;
  margin-block: 0.5em;
}

textarea {
	resize: vertical;
	min-height: 14em;
	field-sizing: content;
}

input[type=radio] {
	position: relative;
	width: 22px;
	height: 22px;
	border: 2px solid #949494;
  background-color: #fff;
	border-radius: 50%;
	vertical-align: -5px;
	margin-right: 0.5em;
}
input[type=radio]:checked{
  border: 2px solid #B9191E;
}
input[type=radio]:checked:before {
	content: "";
	position: absolute;
	top: 50%;
	left: 50%;
	transform: translate(-50%, -50%);
	width: 16px;
	height: 16px;
	border-radius: 50%;
	background: #B9191E;
}

input[type=checkbox] {
  position: relative;
  width: 1em;
  height: 1em;
  border-radius: 2px;
  border: 0.5px solid var(--color-gray);
  background-color: #fff;
  margin-right: 0.5em;
}
input[type="checkbox"]:checked:before {
  position: absolute;
  top: 40%;
  left: 50%;
  transform: translate(-50%, -50%) rotate(50deg);
  width: 7px;
  height: 12px;
  border-right: 2px solid var(--color-main);
  border-bottom: 2px solid var(--color-main);
  content: '';
}

input[type=submit] {
  display: block;
  font-family: inherit;
  width: 50%;
  margin: 0 auto 0;
  background: #000;
  color: #fff;
  padding: .8em 0;
  cursor: pointer;
  border: none;
  border-radius: 100vmax;
  font-size: var(--font-20);
  font-weight: bold;
  transition: .3s ease;
}
@media (any-hover: hover) {
  input[type=submit]:hover{
    background-color: #696969;
  }
}
@media screen and (max-width: 810px) {
  input[type=submit] {
    width: 80%;
  }
}

::placeholder {
  color: #ccc;
}

.checkbox-wrapper {
  width: fit-content;
  margin-inline: auto;
  margin-bottom: var(--space-sm);
}

.visually-hidden { 
  position: absolute; 
  width: 1px; 
  height: 1px; 
  padding: 0; 
  margin: -1px; 
  overflow: hidden; 
  clip: rect(0, 0, 0, 0); 
  white-space: nowrap; 
  border: 0; 
}


/*------------------
 single
-----------------*/
article{ 
  margin-top: var(--space-xl2);  
  overflow-wrap: anywhere; /* 収まらない場合に折り返す */
  word-break: normal; 
  line-break: strict; 
}
article h1{
  --size-max: 32;
  --size-min: 20;
  font-weight: 600;
  color: var(--color-main);
}
article p{
  margin-bottom: 1em;
}
article a{
  color: var(--color-main);
  text-decoration: underline;
}
article a:hover{ text-decoration: none;}
.article-info{
  position: relative;
  margin-block: 1em var(--space-lg);
  padding-bottom: var(--space-lg);
}
.article-info::after{
  content: "";
  position: absolute;
  bottom: 0;
  left: 0;
  display: block;
  width: 120px;
  height: 1px;
  background-color: var(--color-main);
}
.article-info .category{ margin-left: 1em;}

article p{
  margin-top: 1em;
}
article img{
  width: 70%;
  margin: 2em auto;
  overflow: hidden;
  border-radius: var(--rounded);
}
@media screen and (max-width: 810px) {
  article img{
    width: 90%;
  }
}

.page-nav{
  --size-max: 14;
  --size-min: 12;
  display: flex;
  justify-content: center;
  margin-block: var(--space-xl);
  line-height: 1.2;
}
.page-nav a{
  color: var(--color-main);
}
.page-nav a:hover{
  text-decoration: underline;
}
.page-nav span{
  display: block;
}
.page-nav span a{
  display: inline-block;
  padding: 0 1em;
}
.page-nav span.prev a{
  border-right: 1px solid var(--color-gray);
  position: relative;
}
.page-nav span.next a{
  border-left: 1px solid var(--color-gray);
  position: relative;
}
.page-nav span.prev a::after,
.page-nav span.prev a::before,
.page-nav span.next a::after,
.page-nav span.next a::before{
  content: "";
  position: absolute;
  top: 50%;
  display: block;
  width: 8px;
  height: 1px;
  background-color: var(--color-main);
  
}
.page-nav span.prev a::after,
.page-nav span.prev a::before{
  left: 0;
  transform-origin: 0.5px 50%;
}
.page-nav span.next a::after,
.page-nav span.next a::before{
  right: 0;
  transform-origin: calc(100% - 0.5px) 50%;
}
.page-nav span.prev a::before,
.page-nav span.next a::before{
  transform: rotate(40deg);
}
.page-nav span.prev a::after,
.page-nav span.next a::after {
  transform: rotate( -40deg);
}

/*------------------
404
 -----------------*/
.notfound{
  text-align: center;
  padding-block: var(--space-xl3) var(--space-xl2);
}

@media screen and (max-width: 810px) {
  .notfound{
    padding-block: 160px var(--space-xl2);
  }
}
.notfound h1{
  --size-max: 80;
  --size-min: 40;
  color: var(--color-main);
}
.notfound h2{
  --size-max: 24;
  --size-min: 20;
  color: var(--color-main);
}
.notfound h2 + p{
  margin-top: 2em;
}
/*
/* ============================
  breadcrumbs
============================ */
.breadcrumbs{
  position: absolute;
  top: -1000px;
  left: -1000px;
}
/*

