@charset "UTF-8";

:root {
  --gold: #C4A265;
  --gold-light: #D4B87A;
  --gold-dark: #A8884D;
  --cream: #F5F0E8;
  --cream-dark: #EDE5D8;
  --marble-light: #FAF7F2;
  --black: #1A1A1A;
  --black-soft: #2A2A2A;
  --gray: #6B6B6B;
  --gray-light: #9A9A9A;
  --white: #FFFFFF;
  --font-jp:"Noto Sans JP", sans-serif;
  --font-min:"Noto Serif JP", serif;
  --font-en:"Cormorant Garamond", serif;
}
/* ---------------------------------------common set */
/* -------------------------
   共通設定
------------------------- */
html {
  font-size: 1px; /* PC基準: 1rem = 1px */
  overscroll-behavior: none;
  scroll-behavior: smooth;
}
/* -------------------------
   スマホ（〜767px）
   → 375px幅を基準に拡大
------------------------- */
@media (max-width: 767px) {
  html {
    font-size: calc(100vw / 375);
  }
}
/* -------------------------
   タブレット（768〜1180px）
   → デザイン幅1140px基準で縮小
------------------------- */
@media (min-width: 768px) and (max-width: 1180px) {
  html {
    font-size: calc(100vw / 1180);
  }
}
/* CSS STYLE */
body {
  font-family: var(--font-jp);
  font-size: 16rem;
  font-weight: 400;
  letter-spacing: 0.08;
  line-height: 2;
  color: var(--black);
}
@media only screen and (max-width: 959px) {
  body {
    font-size: 15rem;
  }
}
* {
  box-sizing: border-box;
}
a,
a img {
  -webkit-transition: 0.3s ease;
  transition: 0.3s ease;
}
a[href^="tel:"] {
  pointer-events: none;
  text-decoration: none;
}
a:hover img {
  opacity: 0.7;
}
img {
  max-width: 100%;
  height: auto;
}
iframe {
  vertical-align: bottom;
}
.cb {
  clear: both;
}
.nolink {
  pointer-events: none;
  color: #999 !important;
}
.pc {
  display: block;
}
.sp {
  display: none;
}
@media only screen and (max-width: 767px) {
  .pc {
    display: none;
  }
  .sp {
    display: block;
  }
}
/* PARTS */
.inner {
  position: relative;
  width: min(calc(100% - 40rem),1200rem);
  margin: auto;
}
.btn {
  display: flex;
  justify-content: center;
  align-items: center;
  width: min(100%,390rem);
  height: 68rem;
  position: relative;
  color: #fff;
  background: var(--gold);
  font-weight: 500;
  letter-spacing: 0.1em;
}
.btn::before {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(135deg, transparent 30%, rgba(255,255,255,0.15) 50%, transparent 70%);
  background-size: 200% 100%;
  animation: shimmer 3s linear infinite;
}
.btn::after {
  content: "→";
  position: absolute;
  top: 50%;
  margin: auto;
  right: 24rem;
  transform: translateY(-50%);
  transition: .3s;
}
.btn:hover {
  background: var(--gold-dark);
}
.btn:hover::after {
  transform: translateY(-50%) translateX(8rem);
}
.btn span {
  display: flex;
  justify-content: center;
  align-items: center;
  line-height: 1.3;
  font-size: 12rem;
  font-weight: 600;
  width: 50rem;
  height: 50rem;
  border-radius: 50%;
  text-align: center;
  position: absolute;
  top: 50%;
  left: 24rem;
  transform: translateY(-50%);
  background: var(--cream);
  color: var(--gold-dark);
  box-shadow: 0 2rem 4rem rgba(0, 0, 0, .2);
  border: var(--gold) 1rem solid;
}
@keyframes shimmer {
  0% { background-position: -200% center; }
  100% { background-position: 200% center; }
}
@media only screen and (max-width: 767px) {
  .btn {
    height: 64rem;
    padding-left: 20rem;
  }
  .btn::after {
    right: 8rem;
  }
  .btn:hover::after {
    transform: translateY(-50%);
  }
  .btn span {
    font-size: 11rem;
    left: 8rem;
  }
}
.ttl {
	text-align: center;
	font-family: var(--font-min);
	font-size: 36rem;
	font-weight: 500;
	line-height: 1.8;
	color: var(--black-soft);
	margin-bottom: 36rem;
}
.ttl span {
	display: block;
	font-family: var(--font-en);
	font-size: 18rem;
	font-weight: 600;
	letter-spacing: 0.2em;
	line-height: 1em;
	color: var(--gold);
	margin-bottom: 8rem;
	text-transform: uppercase;
}
.ttl strong {
	font-weight: 600;
	color: var(--gold);
}
@media only screen and (max-width: 767px) {
  .ttl {
		font-size: 23rem;
		margin-bottom: 24rem;
	}
	.ttl span {
		font-size: 14rem;
	}
}
.pb {
  padding-bottom: 1em;
}
.fade {
  opacity: 0;
  -webkit-transition: 0.6s linear;
  transition: 0.6s linear;
}
.fade.active {
  opacity: 1;
}
.fade-l {
  position: relative;
  opacity: 0;
  -webkit-transform: translate(-20rem, 0);
  transform: translate(-20rem, 0);
  -webkit-transition: 0.6s ease-out;
  transition: 0.6s ease-out;
}
.fade-l.active {
  opacity: 1;
  -webkit-transform: translate(0, 0);
  transform: translate(0, 0);
}
.fade-r {
  position: relative;
  opacity: 0;
  -webkit-transform: translate(20rem, 0);
  transform: translate(20rem, 0);
  -webkit-transition: 0.6s ease-out;
  transition: 0.6s ease-out;
}
.fade-r.active {
  opacity: 1;
  -webkit-transform: translate(0, 0);
  transform: translate(0, 0);
}
.fade-t {
  position: relative;
  opacity: 0;
  -webkit-transform: translate(0, -20rem);
  transform: translate(0, -20rem);
  -webkit-transition: 0.6s ease-out;
  transition: 0.6s ease-out;
}
.fade-t.active {
  opacity: 1;
  -webkit-transform: translate(0, 0);
  transform: translate(0, 0);
}
.fade-b {
  position: relative;
  opacity: 0;
  -webkit-transform: translate(0, 20rem);
  transform: translate(0, 20rem);
  -webkit-transition: 0.6s ease-out;
  transition: 0.6s ease-out;
}
.fade-b.active {
  opacity: 1;
  -webkit-transform: translate(0, 0);
  transform: translate(0, 0);
}
/* -------------------------------------------------------------------------- HEADER */
header {
  width: 100%;
  height: 72rem;
  display: flex;
  justify-content: flex-end;
  align-items: center;
  position: fixed;
  top: 0;
  left: 0;
  z-index: 99;
  padding: 0 48rem;
  background: linear-gradient(rgba(196, 162, 101,.3),rgba(245, 240, 232,.3));
  backdrop-filter: blur(6px);
  border-bottom: 1px solid rgba(196, 162, 101, 0.15);
}
header .logo {
  font-family: var(--font-en);
  font-size: 24rem;
  font-weight: 500;
  letter-spacing: 0.15em;
  margin-right: auto;
}
header .logo:hover {
  color: var(--gold);
}
header .btn {
  width: 200rem;
  height: 48rem;
  font-size: 14rem;
}
.gnav {
  display: flex;
  justify-content: flex-start;
  align-items: center;
  padding-right: 10rem;
}
.gnav li {
  display: block;
  margin-right: 30rem;
  font-family: var(--font-en);
  font-size: 14rem;
  letter-spacing: 0.1em;
}
.gnav li a {
  font-weight: 500;
}
.menubtn {
  display: none;
}
.spnav {
  display: none;
}
@media only screen and (max-width: 767px) {
  header {
    height: 64rem;
    padding: 0 0 0 16rem;
  }
  header .logo {
    font-size: 18rem;
  }
  header .btn {
    width: 140rem;
    height: 36rem;
    font-size: 12rem;
    padding-left: 0;
  }
  .gnav {
    display: none;
  }
  .menubtn {
    display: flex;
    justify-content: center;
    align-items: center;
    flex-direction: column;
    width: 64rem;
    height: 64rem;
    position: relative;
  }
  .menubtn span {
    display: block;
    width: 34rem;
    height: 2rem;
    background: var(--gold);
    margin-bottom: 8rem;
    transition: .3s;
  }
  .menubtn span:last-of-type {
    margin-bottom: 0;
  }
  .menubtn.active span {
    position: absolute;
    top: 50%;
    left: 25%;
    margin-bottom: 0;
  }
  .menubtn.active span:nth-of-type(1) {
    transform: rotate(45deg);
  }
  .menubtn.active span:nth-of-type(2) {
    transform: rotate(-45deg);
  }
  .menubtn.active span:nth-of-type(3) {
    opacity: 0;
  }
  .spnav {
    display: block;
    width: 100%;
    height: calc(100dvh - 64px);
    position: absolute;
    top: 100%;
    left: 0;
    background: var(--cream);
    padding: 40rem 36rem 0;
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
    transition: opacity 0.3s;
  }
  .spnav.is-open {
    opacity: 1;
    visibility: visible;
    pointer-events: auto;
  }
  .spnav .nav {
    padding-bottom: 40rem;
  }
  .spnav .nav li {
    font-family: var(--font-en);
    font-size: 18rem;
    letter-spacing: 0.1em;
    line-height: 3;
  }
  .spnav .nav li a {
    font-weight: 500;
  }
  .spnav .nav li ul {
    padding-left: 1em;
  }
  .spnav .nav li ul li {
    font-size: 14rem;
  }
  .spnav .btns li .btn {
    display: flex;
    width: 100%;
    height: 68rem;
    font-size: 16rem;
  }
  .spnav .btns li .btn::after {
    right: 18rem;
  }
}
/* -------------------------------------------------------------------------- FOOTER */
.pagetop {
  display: flex;
  justify-content: center;
  align-items: center;
  flex-direction: column;
  font-family: var(--font-en);
  font-size: 14rem;
  font-weight: 400;
  line-height: 1.3;
  margin-left: 0;
  text-align: center;
  width: 80rem;
  height: 80rem;
  border-radius: 50%;
  border: var(--gold) 1px solid;
  color: var(--gold);
  margin-left: auto;
  margin-right: 30rem;
  position: absolute;
  top: 30rem;
  right: 52rem;
  transition: .3s;
}
.pagetop::before {
  content: "";
  display: block;
  width: 8rem;
  height: 8rem;
  clip-path: polygon(50% 0, 100% 100%, 0 100%);
  background: var(--gold);
  margin-bottom: 4rem;
}
.pagetop:hover {
  opacity: .7;
}
@media only screen and (max-width: 767px) {
  .pagetop {
    font-size: 12rem;
    width: 64rem;
    height: 64rem;
    line-height: 1.2;
    margin-right: 16rem;
    top: 20rem;
    right: 0;
  }
}
footer {
  background: var(--black);
  padding: 80rem 0 20rem;
  text-align: center;
  color: var(--gray);
  position: relative;
}
footer h2 {
  color: var(--gold);
  font-family: var(--font-en);
  font-size: 24rem;
  font-weight: 500;
  letter-spacing: 0.15em;
  padding-bottom: 42rem;
}
footer h2 span {
  display: block;
  font-size: 12rem;
  color: var(--gray);
}
footer .copy {
  font-size: 10rem;
}
/* -------------------------------------------------------------------------- CTA */
.cta {
  background: linear-gradient(135deg, var(--black) 0%, #2A2520 50%, var(--black) 100%);
  text-align: center;
  padding: 140rem 0;
  position: relative;
  overflow: hidden;
  color: var(--cream);
}
.cta h2 {
  font-family: var(--font-en);
  color: var(--gold-dark);
  font-size: 64rem;
  font-weight: 400;
  letter-spacing: 0.15em;
}
.cta h3 {
  font-family: var(--font-min);
  font-size: 36rem;
  font-weight: 400;
  padding-bottom: 36rem;
}
.cta .btn {
  margin: auto;
}
.cta .txtopen {
  margin: auto;
  padding-top: 16rem;
}
.cta .txtopen p {
  color: var(--cream-dark);
}
@media only screen and (max-width: 767px) {
  .cta {
    padding: 60rem 0 80rem;
  }
  .cta h2 {
    font-size: 40rem;
  }
  .cta h3 {
    font-size: 18rem;
    padding-bottom: 24rem;
  }
  .cta .btn {
    width: 80%;
  }
  .cta .txtopen {
    width: 80%;
  }
}
/* -------------------------------------------------------------------------- CONTENTS */
.mv {
  width: 100%;
  height: 800rem;
  overflow: hidden;
  position: relative;
  z-index: 1;
}
.mv .inner {
  width: calc(100% - 40rem);
  height: 100%;
  display: flex;
  justify-content: center;
  align-items: flex-end;
  flex-direction: column;
}
.mv .txt {
  width: 800rem;
}
.mv h1 {
  color: var(--black-soft);
  font-family: var(--font-en);
  font-size: 46rem;
  font-weight: 500;
  letter-spacing: 0.15em;
  line-height: 1.6;
  margin-bottom: 42rem;
}
.mv h1 b {
  display: block;
  font-family: var(--font-en);
  font-size: 22rem;
  font-weight: 400;
  color: var(--gold);
}
.mv h1 span {
  display: inline-block;
  color: var(--gray);
  font-family: var(--font-en);
  font-size: 18rem;
  font-weight: 400;
  margin-left: 20rem;
}
.mv .lead{
  display: block;
  font-family: var(--font-min);
  font-size: 36rem;
  font-weight: 400;
  letter-spacing: 0.1em;
  line-height: 1.8;
  color: var(--black-soft);
  position: relative;
  padding-bottom: 20rem;
  margin-bottom: 30rem;
  position: relative;
}
.mv .lead b {
  display: block;
  font-weight: 400;
  color: var(--gold-dark);
}
.mv .lead::after {
  content: "";
  display: block;
  height: 1rem;
  position: absolute;
  left: 0;
  top: 100%;
}
.mv .lead::after {
  background: linear-gradient(90deg,var(--gold-dark),var(--cream));
  width: 100%;
}
.txtopen {
  width: min(100%,390rem);
  padding-top: 6rem;
}
.txtopen p {
  font-size: 14rem;
  color: var(--gray);
  text-align: center;
}
@media only screen and (max-width: 767px) {
  .mv {
    height: 100dvh;
  }
  .mv .inner {
    justify-content: flex-end;
    padding-bottom: 20rem;
  }
  .mv .txt {
    width: 100%;
  }
  .mv h1 {
    font-size: 26rem;
    margin-bottom: 20rem;
    line-height: 1.2;
  }
  .mv h1 b {
    font-size: 16rem;
  }
  .mv h1 span {
    font-size: 14rem;
    margin-left: 16rem;
  }
  .mv .lead{
    font-size: 24rem;
    line-height: 1.4;
    padding-bottom: 12rem;
    margin-bottom: 20rem;
  }
  .mv .lead b {
    font-size: 19rem;
    margin-bottom: 8rem;
  }
  .mv .btn {
    width: calc(100% - 100rem);
    padding-left: 0;
  }
  .mv .btn::after {
    content: none;
  }
  .mv .btn span {
    display: none;
  }
  .mv .txtopen {
    width: calc(100% - 100rem);
  }
  .mv .txtopen p {
    font-size: 12rem;
  }
}
.bg-slide {
  width: 100%;
  height: 100%;
  list-style: none;
  position: absolute;
  top: 0;
  left: 0;
  z-index: -1;
}
.bg-slide::after {
  content: "";
  display: block;
  width: 100%;
  height: 100%;
  background: linear-gradient(135deg,rgba(245, 240, 232,.3),rgba(245, 240, 232,.9),rgba(255, 255, 255,1));
  position: absolute;
  top: 0;
  left: 0;
  z-index: 5;
}
.bg-slide li {
  width: 100%;
  height: 100%;
  position: absolute;
  top: 0;
  left: 0;
  opacity: 0;
  overflow: hidden;
  transform: scale(1);
  transition: opacity 1.5s ease-in-out, transform 15s linear;
}
.bg-slide li.is-active {
  opacity: 1;
  transform: scale(1.1);
  transition: opacity 1.5s ease-in-out, transform 6s linear;
}
.bg-slide li img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  backface-visibility: hidden;
  -webkit-backface-visibility: hidden;
}
@media only screen and (max-width: 767px) {
  .bg-slide  {
    opacity: .7;
  }
  .bg-slide::after {
    background: linear-gradient(-165deg,rgba(245, 240, 232,.1),rgba(245, 240, 232,.3),rgba(255, 255, 255,1));
  }
}
.scroll-down {
  display: flex;
  justify-content: center;
  align-items: center;
  width: 110rem;
  height: 110rem;
  border-radius: 50%;
  border: var(--gold) 1px solid;
  font-family: var(--font-en);
  font-size: 16rem;
  font-weight: 400;
  line-height: 1.3;
  color: var(--gold);
  position: absolute;
  right: 52rem;
  bottom: 22rem;
  transition: .3s;
  z-index: 5;
}
.scroll-down::after {
  content: "";
  display: block;
  width: 1rem;
  height: 42rem;
  position: absolute;
  top: 90rem;
  left: 50%;
  transform: translateX(-50%);
  background: var(--gold);
  transition: .3s;
}
.scroll-down:hover {
  background: rgba(245, 240, 232,.5);
}
.scroll-down:hover::after {
    transform: translateX(-50%) translateY(100%);
}
@media only screen and (max-width: 767px) {
  .scroll-down {
    width: 90rem;
    height: 90rem;
    bottom: 22rem;
    right: 19rem;
  }
  .scroll-down::after {
    top: 70rem;
  }
}
/* The Problem */
.problem {
  padding: 120rem 0;
  z-index: 2;
  background: linear-gradient(135deg,var(--cream),var(--white));
  position: relative;
}
.problem::before {
  content: "";
  display: block;
  width: 700rem;
  aspect-ratio: 1 / 1;
  background: url(../img/problem-bg.webp) center top no-repeat;
  background-size: cover;
  position: absolute;
  top: 0;
  right: 0;
}
.problem .inner {
  position: relative;
  z-index: 2;
}
.problem .ttl {
  text-align: left;
}
.problem p {
  line-height: 2.4em;
}
.problem p.pb {
  padding-bottom: 2em;
}
.problem strong {
  color: var(--gold);
  font-family: var(--font-min);
  font-size: 20rem;
  font-weight: 400;
}
.problem strong::before {
  content: "";
  display: inline-block;
  width: 48rem;
  height: 1rem;
  background: var(--gold);
  vertical-align: middle;
  margin-right: 16rem;
}
.problem p.txt {
  color: var(--gold);
  font-family: var(--font-min);
  font-size: 24rem;
  font-weight: 500;
  line-height: 2em;
  padding-top: 36rem;
}
.problem p.txt::after{
  content: "";
  display: inline-block;
  width: 48rem;
  height: 1rem;
  background: var(--gold);
  vertical-align: middle;
  margin-right: 16rem;
}
@media only screen and (max-width: 767px) {
  .problem {
    padding: 80rem 0;
    background: linear-gradient(-135deg,var(--cream),var(--white));
  }
  .problem::before {
    width: 72%;
    aspect-ratio: 70 / 130;
  }
  .problem p {
    line-height: 2em;
  }
  .problem strong {
    font-size: 18rem;
  }
  .problem strong::before {
    width: 22rem;
    margin-right: 8rem;
  }
  .problem p.txt {
    font-size: 20rem;
    text-align: center;
  }
  .problem p.txt::after{
    content: none;
  }
}
/* Our Answer */
.answer {
  padding: 120rem 0;
  background: url(../img/answer-bg.webp) center left no-repeat;
  background-size: auto 100%;
  overflow: hidden;
}
.answer .inner {
  padding-left: 480rem;
}
.answer .fade-r:nth-of-type(n+ 2) {
  margin-top: 60rem;
}
.answer .ttl {
  text-align: left;
}
.answer h3 {
  font-family: var(--font-min);
	font-size: 28rem;
	font-weight: 500;
	line-height: 1.8;
	color: var(--black-soft);
	margin-bottom: 18rem;
}
.answer h3 strong {
  font-weight: 600;
	color: var(--gold);
}
.answer p {
  line-height: 2.4em;
}
.answer p strong {
  color: var(--gold);
  font-size: 18rem;
  font-weight: 600;
}
.answer p.pb {
  padding-bottom: 1em;
}
@media only screen and (max-width: 767px) {
  .answer {
    padding-top: 280rem;
    padding-bottom: 80rem;
    background: url(../img/answer-bg-sp.webp) center top no-repeat;
  background-size: 100% auto;
  }
  .answer .inner {
    padding-left: 0;
  }
  .answer .fade-r:nth-of-type(n+ 2) {
    margin-top: 40rem;
  }
  .answer .ttl {
    text-align: center;
  }
  .answer h3 {
    font-size: 22rem;
    text-align: center;
  }
  .answer p {
    line-height: 2em;
  }
}
/* Body Design */
.design {
  padding: 120rem 0;
  position: relative;
  z-index: 1;
}
.design::before {
  content: "";
  display: block;
  width: 100%;
  height: 100%;
  background: url(../img/problem-bg.webp) center no-repeat;
  background-size: cover;
  position: absolute;
  top: 0;
  left: 0;
  opacity: .5;
  z-index: -1;
}
.design .list {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
  gap: 30rem;
  text-align: center;
}
.design .card {
  display: grid;
  grid-row: span 3;
  grid-template-rows: subgrid;
  gap: 0;
  background: var(--white);
  padding: 32rem 24rem 36rem;
  border: var(--gold-light) 1px solid;
  box-shadow: 0 4rem 6rem rgba(0, 0, 0, .2);
}
.design .card.fade-b:nth-of-type(2),.design .card.fade-b:nth-of-type(5) {
  transition-delay: .2s;
}
.design .card.fade-b:nth-of-type(3),.design .card.fade-b:nth-of-type(6) {
  transition-delay: .4s;
}
.design .card h3 {
  font-family: var(--font-min);
  font-size: 22rem;
  font-weight: 500;
  color: var(--gold-dark);
  padding-bottom: 8rem;
}
.design .card h3::before {
  content: "";
  display: block;
  width: 30rem;
  aspect-ratio: 1 / 1;
  background: url(../img/check.svg) center no-repeat;
  background-size: 100% auto;
  margin: 0 auto 6rem;
}
.design .card h3::after {
  content: "↓";
  font-family: var(--font-jp);
  display: block;
  color: var(--gold);
  line-height: 1;
}
.design h4 {
  font-weight: 600;
  font-size: 18rem;
  line-height: 1.6;
}
.design p {
  color: var(--gray);
  font-weight: 500;
}
.design p::before {
  content: "";
  display: block;
  width: 100%;
  height: 1rem;
  background: var(--gray);
  margin: 16rem 0;
}
@media only screen and (max-width: 767px) {
  .design {
    padding: 80rem 0;
  }
  .design .list {
    grid-template-columns: 1fr;
    gap: 20rem;
  }
  .design .card {
    padding: 24rem 16rem 30rem;
  }
  .design .card.fade-b:nth-of-type(2),.design .card.fade-b:nth-of-type(5),.design .card.fade-b:nth-of-type(3),.design .card.fade-b:nth-of-type(6) {
    transition-delay: 0;
  }
  .design .card h3 {
    font-size: 18rem;
  }
  .design .card h3::before {
    width: 24rem;
  }
  .design h4 {
    font-size: 16rem;
  }
  .design p::before {
    margin: 14rem 0 10rem;
  }
}
/* Vision */
.vision {
  padding: 120rem 0;
  background: url(../img/vision-bg.webp) center right no-repeat;
  background-size: auto 100%;
  overflow: hidden;
}
.vision .inner {
  padding-right: 480rem;
}
.vision .fade-l:nth-of-type(n + 2) {
  margin-top: 70rem;
}
.vision .ttl {
  text-align: left;
}
.vision h3 {
  font-family: var(--font-min);
	font-size: 28rem;
	font-weight: 500;
	line-height: 1.8;
	color: var(--black-soft);
	margin-bottom: 18rem;
}
.vision h3 b {
  font-family: var(--font-en);
  letter-spacing: 0.15em;
  color: var(--gold);
  font-size: 32rem;
}
.vision p {
  line-height: 2.4em;
}
.vision p strong {
  color: var(--gold);
  font-size: 18rem;
  font-weight: 600;
}
.vision p.pb {
  padding-bottom: 1em;
}
.vision dt {
  font-family: var(--font-en);
  font-size: 18rem;
  letter-spacing: 0.15em;
  font-weight: 500;
  color: var(--gold-dark);
}
.vision dt span {
  font-family: var(--font-en);
  color: var(--gold-light);
  background: linear-gradient(135deg,var(--gold-dark),var(--gold-light));
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  font-size: 26rem;
  font-weight: 600;
  letter-spacing: 0.1em;
  margin-right: 16rem;
}
.vision dt:nth-of-type(n + 2) {
  margin-top: 24rem;
}
.vision dd {
  font-weight: 400;
  color: var(--gray);
}
.vision dd::before {
  content: "";
  display: inline-block;
  width: 40rem;
  height: 0.7rem;
  background: var(--gold-light);
  margin-right: 16rem;
  vertical-align: middle;
}
@media only screen and (max-width: 767px) {
  .vision {
    padding-top: 280rem;
    padding-bottom: 80rem;
    background: url(../img/vision-bg-sp.webp) center top no-repeat;
  background-size: 100% auto;
  }
  .vision .inner {
    padding-right: 0;
  }
  .vision .fade-l:nth-of-type(n + 2) {
    margin-top: 40rem;
  }
  .vision .ttl {
    text-align: center;
  }
  .vision h3 {
    font-size: 22rem;
    text-align: center;
  }
  .vision h3 b {
    font-size: 26rem;
  }
  .vision p br {
    display: none;
  }
  .vision p strong {
    font-size: 16rem;
  }
  .vision dt {
    font-size: 16rem;
    margin-bottom: 4rem;
  }
  .vision dt span {
    font-size: 22rem;
    margin-right: 8rem;
  }
  .vision dd {
    font-size: 14rem;
    text-indent: -38rem;
    padding-left: 38rem;
    line-height: 1.6;
  }
  .vision dd::before {
    width: 30rem;
    height: 1rem;
    margin-right: 8rem;
  }
}
/* Your Daily Routine, Refined */
.routine {
  padding: 120rem 0;
  background: radial-gradient(var(--white),var(--cream-dark));
}
.routine .list {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr 1fr;
  gap: 20rem;
}
.routine .list .card {
  display: grid;
  grid-row: span 3;
   grid-template-rows: subgrid;
   gap: 10rem;
   padding: 32rem 10rem;
   background: #fff;
   text-align: center;
   border: var(--cream) 1rem solid;
   box-shadow: 0 4rem 6rem rgba(0, 0, 0, .2);
}
.routine .list .card.fade-b:nth-of-type(3) {
  transition-delay: .2s;
}
.routine .list .card.fade-b:nth-of-type(4) {
  transition-delay: .4s;
}
.routine .lis .cardt.fade-b:nth-of-type(5) {
  transition-delay: .6s;
}
.routine .list .card figure {
  display: flex;
  justify-content: center;
  align-items: center;
  width: 60rem;
  height: 60rem;
  border-radius: 50%;
  background: var(--gold);
  margin: auto
}
.routine .list .card figure img {
  display: block;
  filter: brightness(0) invert(1);
  width: 60%;
}
.routine .list h3 {
  display: block;
  font-family: var(--font-en);
  font-size: 20rem;
  font-weight: 600;
  color: var(--gold-dark);
  text-transform: uppercase;
}
.routine .list h3::first-letter {
  font-size: 28rem;
}
.routine .list p strong {
  color: var(--gold);
  font-weight: 600;
}
@media only screen and (max-width: 767px){
  .routine {
    padding: 80rem 0;
  }
  .routine .list {
    grid-template-columns: 1fr;
    gap: 30rem;
  }
  .routine .list .card {
    gap: 6rem;
    padding: 24rem 10rem;
  }
  .routine .list .card.fade-b:nth-of-type(3),.routine .list .card.fade-b:nth-of-type(4),.routine .list .card.fade-b:nth-of-type(5) {
    transition-delay: 0;
  }
}
/* For You */
.foryou {
  padding: 120rem 0;
  background: linear-gradient(var(--cream),var(--white));
  text-align: center;
}
.foryou ul {
  display: inline-block;
  text-align: left;
  padding-top: 20rem;
}
.foryou ul::after {
  content: "";
  display: block;
  width: 100rem;
  height: 40rem;
  background: var(--gold);
  clip-path: polygon(0 0, 100% 0, 50% 100%);
  margin: 0 auto 50rem;
}
.foryou ul li {
  font-size: 22rem;
  padding-bottom: 8rem;
  margin-bottom: 40rem;
  color: var(--black-soft);
  position: relative;
}
.foryou ul li::before {
  content: "";
  display: inline-block;
  width: 28rem;
  aspect-ratio: 115 / 119;
  background: url(../img/worries.webp) center no-repeat;
  background-size: 100% auto;
  vertical-align: -2rem;
  margin-right: 16rem;
}
.foryou ul li::after {
  content: "";
  display: block;
  width: 100%;
  height: 2rem;
  background: linear-gradient(90deg,var(--cream),var(--gold-dark),var(--cream));
  position: absolute;
  left: 0;
  bottom: 0;
}
.foryou .lead {
  font-family: var(--font-min);
  font-size: 32rem;
}
.foryou .lead strong {
  color: var(--gold);
  font-weight: 600;
}
@media only screen and (max-width: 767px) {
  .foryou {
    padding: 80rem 0;
  }
  .foryou ul {
    display: block;
    padding-top: 20rem;
  }
  .foryou ul::after {
    width: 50rem;
    height: 25rem;
    margin-bottom: 20rem;
  }
  .foryou ul li {
    font-size: 16rem;
    margin-bottom: 24rem;
    text-indent: -28rem;
    padding-left: 28rem;
    line-height: 1.6em;
    padding-bottom: 12rem;
  }
  .foryou ul li::before {
    width: 20rem;
    margin-right: 8rem;
  }
  .foryou ul li::after {
    height: 1rem;
  }
  .foryou .lead {
    font-size: 20rem;
  }
}
/* Why LUMERA */
.why {
  padding: 120rem 0;
  position: relative;
  z-index: 1;
}
.why::before {
  content: "";
  display: block;
  width: 100%;
  height: 100%;
  background: url(../img/problem-bg.webp) center no-repeat;
  background-size: cover;
  position: absolute;
  top: 0;
  left: 0;
  opacity: .5;
  z-index: -1;
}
.why .list {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 80rem;
}
.why .list:nth-of-type(even) {
  flex-direction: row-reverse;
}
.why .list:last-of-type {
  margin-bottom: 0;
}
.why .list figure {
  display: block;
  padding: 10rem;
  background: linear-gradient(135deg,var(--white),var(--cream),var(--white));
  box-shadow: 0 4rem 6rem rgba(0, 0, 0, .2);
  border: var(--cream) 1rem solid;
  width: 45%;
  position: relative;
}
.why .list figure::after {
  content: "";
  display: block;
  width: 100%;
  height: 100%;
  background: rgba(255,255,255,.1);
  backdrop-filter: blur(3px);
  position: absolute;
  top: 0;
  left: 0;
}
.why .list .txt {
  width: 48%;
}
.why h3 {
  font-family: var(--font-min);
  font-size: 28rem;
  font-weight: 600;
  line-height: 1.6em;
  padding-bottom: 20rem;
}
.why h3 span {
  font-family: var(--font-en);
  font-size: 42rem;
  color: var(--gold);
  display: block;
}
.why p {
  font-weight: 400;
}
@media only screen and (max-width: 767px) {
  .why {
    padding: 80rem 0;
  }
  .why .list {
    display: block;
    margin-bottom: 40rem;
  }
  .why .list figure {
    margin-bottom: 16rem;
  }
  .why .list figure,.why .list .txt {
    width: 100%;
  }
  .why h3 {
    font-size: 18rem;
    padding-bottom: 16rem;
  }
  .why h3 span {
    font-size: 36rem;
    margin-bottom: 8rem;
  }
  .why p {
    font-weight: 400;
  }
}
/* Price */
.price {
  padding: 120rem 0;
  background: radial-gradient(var(--black-soft),var(--black));
}
.price .inner {
  max-width: 900rem;
}
.price .ttl {
  color: #fff;
}
.price .ttl span {
  color: var(--gold);
}
.price .list {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 30rem;
  padding: 20rem 0;
}
.price .card {
  border: var(--gray) 1px solid;
  background: rgba(245, 240, 232,.1);
  text-align: center;
  color: #fff;
  display: grid;
  grid-template-rows: subgrid;
  grid-row: span 3;
  gap: 8rem;
  padding-top: 8rem;
  position: relative;
}
.price h3 {
  padding: 16rem 0;
  font-family: var(--font-en);
  font-size: 24rem;
  font-weight: 500;
  letter-spacing: 0.1em;
  color: var(--white);
}
.price h3 b {
  font-family: var(--font-min);
  font-size: 32rem;
  font-weight: 400;
}
.price h3 span {
  display: inline-block;
  background: var(--gold);
  color: #fff;
  position: absolute;
  top: 0;
  left: 0;
  font-family: var(--font-jp);
  font-size: 14rem;
  font-weight: 500;
  padding: 4rem 16rem
}
.price .box {
  width: calc(100% - 48rem);
  background: var(--black);
  margin: auto;
  padding: 16rem 0;
}
.price .num {
  font-family: var(--font-min);
  font-size: 32rem;
  font-weight: 400;
  letter-spacing: 0.1em;
}
.price .num b {
  font-size: 48rem;
  font-weight: 700;
  letter-spacing: 0.1em;
  margin: 0 8rem;
}
.price .num span {
  font-family: var(--font-jp);
  font-size: 14rem;
  font-weight: 300;
  letter-spacing: 0.04;
}
.price .pace {
  font-weight: 300;
  letter-spacing: 0.1em;
}
.price ul {
  text-align: left;
  padding: 24rem;
}
.price li {
  padding-bottom: 10rem;
  margin-bottom: 10rem;
  border-bottom: rgba(255,255,255,.2) 1rem solid;
}
.price li::before {
  content: "✦";
  color: var(--gold-light);
  font-size: 12rem;
  margin-right: 10rem;
}
.price .card:nth-of-type(2) {
  border-image: linear-gradient(90deg, var(--gold),var(--cream), var(--gold-light)) 1;
  border-width: 5rem;
}
.price .card:nth-of-type(2) h3 {
  color: var(--gold);
}
.price .att {
  display: flex;
  justify-content: center;
  gap: 60rem;
  padding-top: 40rem;
}
.price .att dl {
  color: var(--white);
}
.price .att dl dt,.price .att dl dd {
  font-weight: 400;
  letter-spacing: 0.1em;
}
.price .att dl dt {
  color: var(--gray-light);
  font-size: 14rem;
}
.price .att dl dd {
  color: var(--gold);
  font-family: var(--font-min);
}
@media only screen and (max-width: 767px) {
  .price {
    padding: 80rem 0;
  }
  .price .list {
    grid-template-columns: 1fr;
    padding: 10rem 0;
  }
  .price .card {
    display: grid;
  }
  .price h3 {
    padding: 8rem 0;
    font-size: 20rem;
  }
  .price h3 b {
    font-size: 24rem;
  }
  .price h3 span {
    font-size: 12rem;
    padding: 2rem 8rem
  }
  .price .num {
    font-size: 24rem;
  }
  .price .num b {
    font-size: 32rem;
  }
  .price .num span {
    font-size: 12rem;
  }
  .price .pace {
    font-size: 12rem;
  }
  .price li {
    font-size: 14rem;
  }
  .price li::before {
    font-size: 11rem;
    margin-right: 8rem;
  }
  .price .card:nth-of-type(2) {
    padding-top: 16rem;
  }
  .price .att {
    padding-top: 20rem;
  }
  .price .att dl dt {
    font-size: 13rem;
  }
}
/* Trial Lesson */
.trial {
  padding: 120rem 0;
  text-align: center;
  background: radial-gradient(var(--cream),var(--white));
}
.trial .num {
  font-family: var(--font-min);
  font-size: 36rem;
  font-weight: 400;
  letter-spacing: 0.1em;
  line-height: 1.6em;
  color: var(--gold);
}
.trial .num b {
  font-size: 52rem;
  font-weight: 700;
  letter-spacing: 0.1em;
  margin: 0 8rem;
}
.trial .num span {
  font-family: var(--font-jp);
  font-size: 14rem;
  font-weight: 300;
  letter-spacing: 0.04;
  color: var(--gray);
}
.trial .btn {
  margin: 50rem auto 0;
}
.trial .txtopen {
  margin: auto;
}
@media only screen and (max-width: 767px) {
  .trial {
    padding: 80rem 0;
  }
  .trial .num {
    font-size: 28rem;
  }
  .trial .num b {
    font-size: 48rem;
    margin: 0 4rem;
  }
  .trial .num span {
    font-size: 12rem;
  }
  .trial .btn {
    margin-top: 30rem;
  }
  .trial .txtopen {
    margin: auto;
  }
}
.campaign {
  background: var(--black);
  border-image: linear-gradient(90deg, var(--gold),var(--cream), var(--gold-light)) 1;
  border-width: 6rem;
  color: var(--white);
  margin: auto;
  position: relative;
  padding-bottom: 50rem;
}

.campaign .ribbon {
  display: inline-block;
  position: relative;
  height: 60rem;
  z-index: 1;
  transform: translateY(-86%);
}
.campaign .ribbon::before {
  content: '';
  display: block;
  position: absolute;
  width: 10rem;
  bottom: -10rem;
  left: -25rem;
  z-index: -2;
  border: 20rem solid var(--gold-light);
  border-left-color: transparent;
}
.campaign .ribbon::after {
  content: '';
  position: absolute;
  width: 10rem;
  bottom: -10rem;
  right: -25rem;
  z-index: -2;
  border: 20rem solid var(--gold-light);
  border-right-color: transparent;
}
.campaign .ribbon h2 {
  display: inline-block;
  position: relative;
  padding: 0 50rem;
  line-height: 60rem;
  font-family: var(--font-min);
  font-size: 24rem;
  font-weight: 600;
  letter-spacing: 0.15em;
  background: var(--gold);
  position: relative;
}
.campaign .ribbon h2::before {
  content: "";
  display: block;
  position: absolute;
  top: 100%;
  left: 0;
  border: none;
  border-bottom: solid 10rem transparent;
  border-right: solid 15rem var(--gold-dark);
}
.campaign .ribbon h2::after {
  content: "";
  display: block;
  position: absolute;
  top: 100%;
  right: 0;
  border: none;
  border-bottom: solid 10rem transparent;
  border-left: solid 15rem var(--gold-dark);
}
.campaign .ttl {
  color: var(--white);
  font-size: 28rem;
}
.campaign h4 {
  display: inline-block;
  background: var(--black);
  padding: 0 30rem;
  position: relative;
  z-index: 1;
  font-size: 20rem;
  font-weight: 600;
  letter-spacing: 0.1em;
}
.campaign-price {
  display: flex;
  justify-content: center;
  align-items: center;
  flex-wrap: wrap;
  border: var(--gold-light) 1rem solid;
  width: min(90%,500rem);
  margin: -22rem auto 0;
  padding: 20rem 0;
}
.campaign-price p {
  font-size: 18rem;
}
.campaign-price p b {
  font-weight: 400;
  position: relative;
}
.campaign-price p b::after {
  content: "";
  display: block;
  width: 100%;
  height: 3rem;
  position: absolute;
  top: 50%;
  left: 0;
  background: var(--gold);
}
.campaign-price p strong {
  font-family: var(--font-min);
  font-size: 46rem;
  color: var(--gold);
  display: flex;
  justify-content: center;
  align-items: center;
  letter-spacing: 0.2em;
}
.campaign-price p strong::before {
  content: "";
  display: inline-block;
  width: 14rem;
  height: 16rem;
  clip-path: polygon(0 0, 100% 50%, 0 100%);
  background: var(--gold-light);
  margin: 0 20rem;
}
.campaign-price p.off {
  width: 100%;
  color: var(--gold);
  font-size: 22rem;
  letter-spacing: 0.15em;
}
@media only screen and (max-width: 767px) {
  .campaign {
    border-width: 3rem;
    padding-bottom: 40rem;
  }
  .campaign .ribbon {
    height: 50rem;
    transform: translateY(-86%);
  }
  .campaign .ribbon::before {
    width: 8rem;
  }
  .campaign .ribbon::after {
    width: 8rem;
  }
  .campaign .ribbon h2 {
    padding: 0 18rem;
    line-height: 50rem;
    font-size: 18rem;
    letter-spacing: 0.1em;
  }
  .campaign .ttl {
    font-size: 20rem;
  }
  .campaign h4 {
    padding: 0 16rem;
    font-size: 17rem;
  }
  .campaign-price {
    margin-top: -17rem;
    padding: 30rem 0 20rem;
  }
  .campaign-price p {
    font-size: 16rem;
  }
  .campaign-price p strong {
    font-size: 36rem;
  }
  .campaign-price p strong::before {
    width: 10rem;
    height: 12rem;
    margin: 0 12rem;
  }
  .campaign-price p.off {
    font-size: 18rem;
  }
  .campaign .btn {
    width: 90%;
  }
}
/* Access */
.access {
  padding: 120rem 0;
}
.access .inner {
  display: flex;
  justify-content: space-between;
}
.access .txt {
  width: 45%;
}
.access .ttl {
  text-align: left;
}
.access dl {
  display: flex;
  justify-content: flex-start;
  flex-wrap: wrap;
}
.access dt,.access dd {
  font-weight: 400;
  line-height: 1.8em;
  padding-bottom: 20rem;
  margin-bottom: 20rem;
  border-bottom: var(--gold-light) 1rem solid;
}
.access dt {
  width: 120rem;
  color: var(--gold);
}
.access dd {
  width: calc(100% - 120rem);
}
.access .gmap {
  width: 45%;
  padding: 10rem;
  box-shadow: 0 4rem 6rem rgba(0, 0, 0, .2);
}
.access .gmap iframe {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  border: var(--cream) 1rem solid;
}
@media only screen and (max-width: 767px)  {
  .access {
    padding: 80rem 0;
  }
  .access .inner {
    display: block;
  }
  .access .txt {
    width: 100%;
    padding-bottom: 20rem;
  }
  .access .ttl {
    text-align: center;
  }
  .access dl {
    padding-top: 20rem;
  }
  .access dt,.access dd {
    padding-bottom: 16rem;
    margin-bottom: 16rem;
  }
  .access dt {
    width: 100rem;
  }
  .access dd {
    width: calc(100% - 100rem);
  }
  .access .gmap {
    width: 100%;
    height: 280rem;
  }
}
/* FAQ */
.faq {
  padding: 120rem 0;
  background: linear-gradient(var(--cream),var(--white));
}
.faq dt,.faq dd {
  position: relative;
}
.faq dt span,.faq dd span {
  display: flex;
  justify-content: center;
  align-items: center;
  width: 40rem;
  height: 40rem;
  font-family: var(--font-en);
  font-size: 24rem;
  font-weight: 600;
  color: #fff;
  position: absolute;
}
.faq dt {
  font-weight: 700;
  padding-left: 60rem;
  margin-bottom: 32rem;
}
.faq dt span {
  top: -4rem;
  left: 0;
  background: var(--gold-dark);
}
.faq dd {
  background: #fff;
  padding: 25rem 30rem 25rem 90rem;
  margin-bottom: 48rem;
}
.faq dd span {
  background: var(--gold-light);
  top: 21rem;
  left: 30rem;
}
.faq dd:last-of-type {
  margin-bottom: 0;
}
@media only screen and (max-width: 767px) {
  .faq {
    padding: 80rem 0;
  }
  .faq dt span,.faq dd span {
    width: 30rem;
    height: 30rem;
    font-size: 16rem;
  }
  .faq dt {
    padding-left: 40rem;
    margin-bottom: 16rem;
  }
  .faq dt span {
    top: -1rem;
  }
  .faq dd {
    padding: 15rem 20rem 15rem 62rem;
    margin-bottom: 24rem;
  }
  .faq dd span {
    top: 15rem;
    left: 20rem;
  }
}