/* ========================================
   RESIDENCE PAGE
======================================== */

.residence-page {
  background: #f7f4ed;
  color: #454b46;
}

.rs-inner {
  width: min(88vw, 1380px);
  margin: 0 auto;
}

.rs-section {
  position: relative;
  padding:
    clamp(130px, 13vw, 210px)
    0;
}

.rs-eyebrow {
  margin: 0 0 30px;

  font-size: 14px;
  line-height: 1;

  letter-spacing: .24em;

  color: #737b75;
}

.rs-section-head {
  max-width: 900px;
}

.rs-section-head h2,
.rs-dark-head h2,
.rs-rehab-copy h2,
.rs-brochure-copy h2,
.rs-contact-copy h2 {
  margin: 0;

  font-family:
    "Noto Serif JP",
    serif;

  font-size:
    clamp(38px, 4.6vw, 66px);

  line-height: 1.65;

  font-weight: 300;

  letter-spacing: .06em;

  color: #444a45;
}

.rs-section-note {
  margin:
    35px 0 0;

  font-size:
    clamp(15px, 1vw, 17px);

  line-height: 2;

  color: #727772;
}


/* ========================================
   HERO
======================================== */

.rs-hero {
  position: relative;

  height: 100svh;
  min-height: 720px;

  overflow: hidden;

  background: #303a35;
}

.rs-hero-photo {
  position: absolute;
  inset: 0;
}

.rs-hero-photo img {
  width: 100%;
  height: 100%;

  object-fit: cover;

  transform: scale(1.04);

  filter:
    saturate(.88)
    contrast(.96)
    brightness(.88);
}

.rs-hero-shade {
  position: absolute;
  inset: 0;

  background:
    linear-gradient(
      90deg,
      rgba(26,34,29,.42) 0%,
      rgba(26,34,29,.16) 48%,
      rgba(26,34,29,.05) 100%
    );
}

.rs-hero-copy {
  position: absolute;

  left: max(6vw, 70px);
  bottom: clamp(90px, 10vh, 140px);

  z-index: 3;

  color: #fff;
}

.rs-hero-label {
  margin:
    0 0 30px;

  font-size: 13px;

  letter-spacing: .25em;

  color:
    rgba(255,255,255,.72);
}

.rs-hero-copy h1 {
  margin: 0;

  font-family:
    "Noto Serif JP",
    serif;

  font-size:
    clamp(42px, 5.3vw, 78px);

  line-height: 1.6;

  font-weight: 300;

  letter-spacing: .07em;

  color: #fff;
}

.rs-hero-name {
  margin:
    30px 0 0;

  font-size:
    clamp(14px, 1vw, 17px);

  letter-spacing: .08em;

  color:
    rgba(255,255,255,.78);
}

.rs-hero-scroll {
  position: absolute;

  right: 40px;
  bottom: 45px;

  z-index: 4;

  display: flex;
  align-items: center;

  gap: 14px;

  color:
    rgba(255,255,255,.68);

  font-size: 10px;

  letter-spacing: .25em;
}

.rs-hero-scroll i {
  display: block;

  width: 42px;
  height: 1px;

  background:
    rgba(255,255,255,.52);
}


/* ========================================
   LOCAL NAV
======================================== */

.rs-nav {
  position: sticky;
  top: 0;

  z-index: 50;

  background:
    rgba(247,244,237,.94);

  backdrop-filter:
    blur(12px);

  border-bottom:
    1px solid rgba(80,95,85,.13);
}

.rs-nav-inner {
  display: flex;

  justify-content: center;

  gap:
    clamp(18px, 2.8vw, 45px);

  width:
    min(94vw, 1400px);

  margin: 0 auto;

  padding:
    18px 0;

  overflow-x: auto;

  scrollbar-width: none;
}

.rs-nav-inner::-webkit-scrollbar {
  display: none;
}

.rs-nav a {
  flex: 0 0 auto;

  color: #677069;

  text-decoration: none;

  font-size: 12px;

  letter-spacing: .16em;

  transition:
    color .35s ease;
}

.rs-nav a:hover,
.rs-nav a.is-active {
  color: #314039;
}


/* ========================================
   ABOUT
======================================== */

.rs-about {
  padding-top:
    clamp(150px, 15vw, 230px);
}

.rs-about-grid {
  display: grid;

  grid-template-columns:
    minmax(0, .9fr)
    minmax(0, 1.1fr);

  gap:
    clamp(70px, 9vw, 150px);

  margin-top:
    clamp(85px, 9vw, 140px);
}

.rs-about-lead p {
  margin: 0;

  font-family:
    "Noto Serif JP",
    serif;

  font-size:
    clamp(22px, 2.2vw, 32px);

  line-height: 2;

  letter-spacing: .055em;

  color: #566059;
}

.rs-about-text {
  padding-left: 30px;

  border-left:
    1px solid rgba(90,105,95,.22);
}

.rs-about-text p {
  margin:
    0 0 28px;

  font-size:
    clamp(15px, 1.05vw, 17px);

  line-height: 2.25;

  letter-spacing: .04em;

  color: #6b706b;
}

.rs-about-text p:last-child {
  margin-bottom: 0;
}


/* ========================================
   FEATURES
======================================== */

.rs-features {
  padding:
    clamp(130px, 13vw, 200px)
    0;

  background: #f1eee6;
}

.rs-feature-list {
  display: grid;

  grid-template-columns:
    repeat(5, minmax(0,1fr));

  margin-top:
    clamp(80px, 8vw, 120px);

  border-top:
    1px solid rgba(85,101,90,.18);

  border-bottom:
    1px solid rgba(85,101,90,.18);
}

.rs-feature {
  min-width: 0;

  padding:
    34px
    clamp(18px, 1.6vw, 28px)
    40px;
}

.rs-feature + .rs-feature {
  border-left:
    1px solid rgba(85,101,90,.16);
}

.rs-feature-no {
  display: block;

  margin-bottom: 24px;

  font-size: 12px;

  letter-spacing: .16em;

  color: #8a908a;
}

.rs-feature h3 {
  margin: 0;

  font-family:
    "Noto Serif JP",
    serif;

  font-size:
    clamp(19px, 1.45vw, 25px);

  line-height: 1.8;

  font-weight: 300;

  letter-spacing: .04em;

  color: #4d554f;
}

.rs-feature p {
  margin:
    24px 0 0;

  font-size:
    clamp(14px, .95vw, 16px);

  line-height: 2;

  color: #747974;
}


/* ========================================
   LIFE
======================================== */

.rs-life {
  background: #f7f4ed;
}

.rs-life-block {
  display: grid;

  grid-template-columns:
    minmax(0, 1.18fr)
    minmax(320px, .82fr);

  gap:
    clamp(70px, 9vw, 145px);

  align-items: center;

  margin-top:
    clamp(110px, 11vw, 180px);
}

.rs-life-block-reverse {
  grid-template-columns:
    minmax(320px, .82fr)
    minmax(0, 1.18fr);
}

.rs-life-photo {
  position: relative;

  overflow: hidden;

  aspect-ratio: 1.25 / 1;

  background: #e5e1d8;
}

.rs-life-photo img,
.rs-rehab-photo img {
  display: block;

  width: 100%;
  height: 100%;

  object-fit: cover;

  opacity: .35;

  transform: scale(1.08);

  transition:
    opacity 1.6s
      cubic-bezier(.22,.61,.36,1),
    transform 2.8s
      cubic-bezier(.22,.61,.36,1);
}

.rs-image-reveal.is-visible img {
  opacity: 1;

  transform: scale(1.025);
}

.rs-photo-curtain {
  position: absolute;

  inset: 0;

  z-index: 3;

  background: #e9e5dc;

  transition:
    transform 1.75s
      cubic-bezier(.76,0,.24,1);
}

.rs-image-reveal.is-visible
.rs-photo-curtain {
  transform:
    translateX(102%);
}

.rs-life-copy h3 {
  margin:
    0 0 36px;

  font-family:
    "Noto Serif JP",
    serif;

  font-size:
    clamp(28px, 3vw, 44px);

  line-height: 1.8;

  font-weight: 300;

  letter-spacing: .055em;

  color: #4b534d;
}

.rs-small-label {
  margin:
    0 0 22px;

  font-size: 13px;

  letter-spacing: .22em;

  color: #7f867f;
}

.rs-life-copy p:not(.rs-small-label),
.rs-rehab-copy p {
  margin:
    0 0 24px;

  font-size:
    clamp(15px, 1vw, 17px);

  line-height: 2.2;

  color: #6a706a;
}


/* ========================================
   DARK CARE SECTION
======================================== */

.rs-dark-section {
  padding:
    clamp(140px, 14vw, 220px)
    0;

  background: #46554c;

  color: #f4f1e9;
}

.rs-dark-head h2 {
  color: #f4f1e9;
}

.rs-dark-section .rs-eyebrow {
  color:
    rgba(244,241,233,.7);
}

.rs-care-grid {
  display: grid;

  grid-template-columns:
    repeat(2, minmax(0,1fr));

  margin-top:
    clamp(90px, 9vw, 140px);

  border-top:
    1px solid rgba(255,255,255,.16);

  border-bottom:
    1px solid rgba(255,255,255,.16);
}

.rs-care-item {
  padding:
    38px
    clamp(28px, 3vw, 48px)
    42px;
}

.rs-care-item + .rs-care-item {
  border-left:
    1px solid rgba(255,255,255,.14);
}

.rs-care-item > span {
  display: block;

  margin-bottom: 28px;

  font-size: 12px;

  letter-spacing: .18em;

  color:
    rgba(255,255,255,.54);
}

.rs-care-item h3 {
  margin: 0;

  font-family:
    "Noto Serif JP",
    serif;

  font-size:
    clamp(23px, 2.2vw, 34px);

  line-height: 1.8;

  font-weight: 300;

  color: #fff;
}

.rs-care-item p {
  margin:
    26px 0 0;

  font-size:
    clamp(14px, 1vw, 16px);

  line-height: 2.15;

  color:
    rgba(255,255,255,.72);
}


/* ========================================
   MEDICAL
======================================== */

.rs-medical-grid {
  display: grid;

  grid-template-columns:
    minmax(300px, .7fr)
    minmax(0, 1.3fr);

  gap:
    clamp(70px, 9vw, 150px);

  margin-top:
    clamp(80px, 8vw, 125px);
}

.rs-medical-intro p {
  margin: 0;

  font-size:
    clamp(15px, 1.05vw, 17px);

  line-height: 2.25;

  color: #6a706b;
}

.rs-medical-list {
  display: grid;

  grid-template-columns:
    repeat(2, minmax(0,1fr));

  border-top:
    1px solid rgba(84,100,89,.18);
}

.rs-medical-list div {
  padding:
    20px 10px;

  border-bottom:
    1px solid rgba(84,100,89,.18);

  font-size:
    clamp(15px, 1.05vw, 17px);

  letter-spacing: .04em;

  color: #5b645e;
}

.rs-medical-list div:nth-child(even) {
  padding-left: 30px;

  border-left:
    1px solid rgba(84,100,89,.14);
}


/* ========================================
   REHAB
======================================== */

.rs-rehab {
  background: #f1eee6;
}

.rs-rehab-grid {
  display: grid;

  grid-template-columns:
    minmax(320px, .8fr)
    minmax(0, 1.2fr);

  gap:
    clamp(70px, 9vw, 145px);

  align-items: center;
}

.rs-rehab-photo {
  position: relative;

  overflow: hidden;

  aspect-ratio: 1.25 / 1;

  background: #e5e1d8;
}

.rs-rehab-copy h2 {
  margin-bottom:
    clamp(45px, 5vw, 65px);
}


/* ========================================
   ROOM
======================================== */

.rs-room-section {
  padding:
    clamp(140px, 14vw, 220px)
    0;

  background: #f7f4ed;
}

.rs-room-grid {
  display: grid;

  grid-template-columns:
    repeat(2, minmax(0,1fr));

  margin-top:
    clamp(80px, 8vw, 120px);

  border-top:
    1px solid rgba(85,101,90,.18);

  border-bottom:
    1px solid rgba(85,101,90,.18);
}

.rs-room-card {
  padding:
    40px
    clamp(28px, 3vw, 48px)
    45px;
}

.rs-room-card + .rs-room-card {
  border-left:
    1px solid rgba(85,101,90,.16);
}

.rs-room-type {
  display: block;

  margin-bottom: 28px;

  font-size: 12px;

  letter-spacing: .20em;

  color: #858b85;
}

.rs-room-card h3 {
  margin: 0;

  font-family:
    "Noto Serif JP",
    serif;

  font-size:
    clamp(27px, 2.6vw, 40px);

  font-weight: 300;

  color: #4f5751;
}

.rs-room-card p {
  margin:
    26px 0 0;

  font-size:
    clamp(14px, 1vw, 16px);

  line-height: 2.1;

  color: #737873;
}

.rs-room-equipment {
  margin-top:
    clamp(65px, 7vw, 100px);
}

.rs-room-equipment > div {
  display: flex;

  flex-wrap: wrap;

  gap:
    12px 28px;

  margin-top: 25px;
}

.rs-room-equipment span {
  position: relative;

  padding-left: 16px;

  font-size: 14px;

  color: #626a64;
}

.rs-room-equipment span::before {
  content: "";

  position: absolute;

  left: 0;
  top: .65em;

  width: 5px;
  height: 1px;

  background: #7f8a82;
}


/* ========================================
   PRICE
======================================== */

.rs-price {
  background: #f1eee6;
}

.rs-price-notice {
  margin-top:
    70px;

  padding:
    30px;

  border:
    1px solid rgba(82,98,87,.18);
}

.rs-price-notice p {
  margin: 0;

  font-size: 15px;

  color: #727873;
}

.rs-price-info-grid {
  display: grid;

  grid-template-columns:
    repeat(2, minmax(0,1fr));

  gap:
    clamp(50px, 6vw, 90px);

  margin-top:
    clamp(65px, 7vw, 100px);
}

.rs-price-info h3 {
  margin:
    0 0 25px;

  font-family:
    "Noto Serif JP",
    serif;

  font-size:
    clamp(22px, 2vw, 30px);

  font-weight: 300;

  color: #505852;
}

.rs-price-info ul {
  margin: 0;
  padding: 0;

  list-style: none;

  border-top:
    1px solid rgba(82,98,87,.18);
}

.rs-price-info li {
  padding:
    15px 5px;

  border-bottom:
    1px solid rgba(82,98,87,.18);

  font-size: 14px;

  color: #6e746f;
}


/* ========================================
   FAQ
======================================== */

.rs-faq-section {
  padding:
    clamp(140px, 14vw, 220px)
    0;

  background: #f7f4ed;
}

.rs-faq-list {
  margin-top:
    clamp(70px, 8vw, 110px);

  border-top:
    1px solid rgba(82,98,87,.20);
}

.rs-faq-item {
  border-bottom:
    1px solid rgba(82,98,87,.20);
}

.rs-faq-item summary {
  position: relative;

  cursor: pointer;

  list-style: none;

  padding:
    28px 55px
    28px 0;

  font-family:
    "Noto Serif JP",
    serif;

  font-size:
    clamp(18px, 1.6vw, 23px);

  line-height: 1.7;

  color: #515a54;
}

.rs-faq-item summary::-webkit-details-marker {
  display: none;
}

.rs-faq-item summary::before,
.rs-faq-item summary::after {
  content: "";

  position: absolute;

  right: 10px;
  top: 50%;

  width: 18px;
  height: 1px;

  background: #69766e;
}

.rs-faq-item summary::after {
  transform: rotate(90deg);

  transition:
    transform .35s ease;
}

.rs-faq-item[open]
summary::after {
  transform: rotate(0);
}

.rs-faq-item > div {
  padding:
    0 55px
    30px 0;
}

.rs-faq-item p {
  margin: 0;

  max-width: 820px;

  font-size:
    clamp(14px, 1vw, 16px);

  line-height: 2.1;

  color: #747974;
}


/* ========================================
   BROCHURE
======================================== */

.rs-brochure {
  padding:
    clamp(120px, 12vw, 190px)
    0;

  background: #f1eee6;
}

.rs-brochure-grid {
  display: grid;

  grid-template-columns:
    minmax(0, 1fr)
    minmax(320px, .7fr);

  gap:
    clamp(70px, 9vw, 150px);

  align-items: end;
}

.rs-brochure-links {
  display: flex;

  flex-direction: column;
}

.rs-brochure-links a {
  display: flex;

  align-items: center;
  justify-content: space-between;

  padding:
    22px 0;

  border-top:
    1px solid rgba(82,98,87,.20);

  color: #536159;

  text-decoration: none;

  font-size: 15px;
}

.rs-brochure-links a:last-child {
  border-bottom:
    1px solid rgba(82,98,87,.20);
}

.rs-brochure-links i,
.rs-contact-link i {
  position: relative;

  width: 40px;
  height: 1px;

  background: #607067;
}

.rs-brochure-links i::after,
.rs-contact-link i::after {
  content: "";

  position: absolute;

  right: 0;
  top: -3px;

  width: 7px;
  height: 7px;

  border-top:
    1px solid #607067;

  border-right:
    1px solid #607067;

  transform: rotate(45deg);
}


/* ========================================
   CONTACT
======================================== */

.rs-contact {
  padding:
    clamp(130px, 13vw, 200px)
    0;

  background: #46554c;

  color: #fff;
}

.rs-contact-grid {
  display: grid;

  grid-template-columns:
    minmax(0, 1.1fr)
    minmax(340px, .9fr);

  gap:
    clamp(80px, 10vw, 160px);

  align-items: center;
}

.rs-contact .rs-eyebrow {
  color:
    rgba(255,255,255,.68);
}

.rs-contact-copy h2 {
  color: #fff;
}

.rs-contact-copy > p:last-child {
  margin:
    40px 0 0;

  font-size:
    clamp(15px, 1vw, 17px);

  line-height: 2.15;

  color:
    rgba(255,255,255,.72);
}

.rs-contact-actions {
  display: flex;

  flex-direction: column;
}

.rs-contact-tel {
  padding:
    0 0 32px;

  border-bottom:
    1px solid rgba(255,255,255,.18);

  color: #fff;

  text-decoration: none;
}

.rs-contact-tel small {
  display: block;

  margin-bottom: 15px;

  font-size: 12px;

  letter-spacing: .20em;

  color:
    rgba(255,255,255,.56);
}

.rs-contact-tel span {
  font-family:
    "Noto Serif JP",
    serif;

  font-size:
    clamp(32px, 3.4vw, 50px);

  font-weight: 300;

  letter-spacing: .05em;
}

.rs-contact-link {
  display: flex;

  justify-content: space-between;

  align-items: center;

  padding:
    28px 0;

  border-bottom:
    1px solid rgba(255,255,255,.18);

  color: #fff;

  text-decoration: none;

  font-size: 15px;
}

.rs-contact-link i {
  background: rgba(255,255,255,.82);
}

.rs-contact-link i::after {
  border-color:
    rgba(255,255,255,.82);
}


/* ========================================
   REVEAL
======================================== */

.rs-reveal {
  opacity: 0;

  transform:
    translateY(24px);

  filter: blur(4px);

  transition:
    opacity 1.35s
      cubic-bezier(.22,.61,.36,1),
    transform 1.55s
      cubic-bezier(.22,.61,.36,1),
    filter 1.2s
      cubic-bezier(.22,.61,.36,1);
}

.rs-reveal.is-visible {
  opacity: 1;

  transform: translateY(0);

  filter: blur(0);
}


/* ========================================
   TABLET
======================================== */

@media (max-width: 1050px) {

  .rs-feature-list {
    grid-template-columns:
      repeat(2, minmax(0,1fr));
  }

  .rs-feature:nth-child(odd) {
    border-left: 0;
  }

  .rs-feature:nth-child(n+3) {
    border-top:
      1px solid rgba(85,101,90,.16);
  }


  .rs-about-grid,
  .rs-medical-grid,
  .rs-rehab-grid,
  .rs-brochure-grid,
  .rs-contact-grid {
    grid-template-columns: 1fr;

    gap: 65px;
  }

  .rs-life-block,
  .rs-life-block-reverse {
    grid-template-columns: 1fr;

    gap: 60px;
  }

  .rs-life-block-reverse
  .rs-life-copy {
    order: 2;
  }

  .rs-life-block-reverse
  .rs-life-photo {
    order: 1;
  }

}


/* ========================================
   SMARTPHONE
======================================== */

@media (max-width: 650px) {

  .rs-inner {
    width: min(88vw, 1380px);
  }

  .rs-section {
    padding:
      105px 0;
  }

  .rs-hero {
    min-height: 650px;
  }

  .rs-hero-copy {
    left: 6vw;
    right: 6vw;

    bottom: 90px;
  }

  .rs-hero-copy h1 {
    font-size:
      clamp(34px, 9vw, 46px);
  }

  .rs-hero-scroll {
    right: 20px;
    bottom: 25px;
  }

  .rs-nav-inner {
    justify-content: flex-start;

    padding:
      16px 6vw;
  }


  .rs-section-head h2,
  .rs-dark-head h2,
  .rs-rehab-copy h2,
  .rs-brochure-copy h2,
  .rs-contact-copy h2 {
    font-size:
      clamp(31px, 8vw, 42px);
  }


  .rs-about-grid {
    margin-top: 60px;
  }

  .rs-about-text {
    padding-left: 20px;
  }


  .rs-feature-list {
    grid-template-columns: 1fr;
  }

  .rs-feature {
    padding:
      28px 0 30px;

    border-left: 0 !important;
  }

  .rs-feature + .rs-feature {
    border-top:
      1px solid rgba(85,101,90,.16);
  }


  .rs-care-grid {
    grid-template-columns: 1fr;
  }

  .rs-care-item {
    padding:
      30px 0;
  }

  .rs-care-item + .rs-care-item {
    border-left: 0;

    border-top:
      1px solid rgba(255,255,255,.14);
  }


  .rs-medical-list {
    grid-template-columns: 1fr;
  }

  .rs-medical-list div:nth-child(even) {
    padding-left: 10px;

    border-left: 0;
  }


  .rs-room-grid,
  .rs-price-info-grid {
    grid-template-columns: 1fr;
  }

  .rs-room-card {
    padding:
      30px 0;
  }

  .rs-room-card + .rs-room-card {
    border-left: 0;

    border-top:
      1px solid rgba(85,101,90,.16);
  }


  .rs-brochure-links a,
  .rs-contact-link {
    font-size: 14px;
  }

}


/* ========================================
   REDUCED MOTION
======================================== */

@media (prefers-reduced-motion: reduce) {

  .rs-reveal,
  .rs-photo-curtain,
  .rs-life-photo img,
  .rs-rehab-photo img {
    transition: none !important;
  }

  .rs-reveal {
    opacity: 1 !important;

    transform: none !important;

    filter: none !important;
  }

  .rs-photo-curtain {
    display: none;
  }

  .rs-life-photo img,
  .rs-rehab-photo img {
    opacity: 1;

    transform: none;
  }

}




/* ========================================
   HERO JAPANESE TYPING EFFECT
======================================== */

.rs-typing-title {
  position: relative;
}

.rs-typing-output {
  position: relative;

  display: inline;

  white-space: pre-line;
}


/* 入力中のアンダーバー */

.rs-typing-output.is-typing::after {
  content: "";

  display: inline-block;

  width: 1.15em;
  height: 1px;

  margin-left: .12em;

  vertical-align: .12em;

  background:
    rgba(255,255,255,.82);

  animation:
    rsTypingCursor
    1s
    ease-in-out
    infinite;
}


/* 変換中 */

.rs-typing-output.is-converting {
  opacity: .72;

  filter:
    blur(.6px);

  transition:
    opacity .16s ease,
    filter .16s ease;
}


/* 完成 */

.rs-typing-output.is-complete {
  opacity: 1;

  filter: none;
}


/* カーソル */

@keyframes rsTypingCursor {

  0%,
  100% {
    opacity: .35;

    transform:
      scaleX(.65);
  }

  50% {
    opacity: 1;

    transform:
      scaleX(1);
  }

}


/* ========================================
   MOBILE
======================================== */

@media (max-width: 650px) {

  .rs-typing-output.is-typing::after {
    width: .9em;
  }

}


/* ========================================
   REDUCED MOTION
======================================== */

@media (prefers-reduced-motion: reduce) {

  .rs-typing-output {
    white-space: pre-line;
  }

  .rs-typing-output::after {
    display: none !important;
  }

}


/* =========================================================
   PRICE SECTION / 2026
========================================================= */

.rs-price {
  position: relative;
  overflow: hidden;

  background: #f1eee6;
}


/* =========================================================
   SUMMARY
========================================================= */

.rs-price-summary {
  display: grid;

  grid-template-columns:
    repeat(2, minmax(0, 1fr));

  gap: 1px;

  margin-top:
    clamp(80px, 8vw, 125px);

  background:
    rgba(82, 98, 87, .18);

  border:
    1px solid rgba(82, 98, 87, .18);
}


.rs-price-summary-card {
  position: relative;

  min-width: 0;

  padding:
    clamp(34px, 4vw, 58px);

  background:
    #f7f4ed;
}


.rs-price-summary-card-b {
  background:
    #ece9df;
}


/* -----------------------------------------
   HEAD
----------------------------------------- */

.rs-price-summary-head {
  display: flex;

  align-items: flex-start;
  justify-content: space-between;

  gap: 30px;

  padding-bottom: 30px;

  border-bottom:
    1px solid rgba(82, 98, 87, .18);
}


.rs-price-type {
  display: block;

  margin-bottom: 12px;

  font-size: 12px;

  letter-spacing: .22em;

  color: #818982;
}


.rs-price-summary-head h3 {
  margin: 0;

  font-family:
    "Noto Serif JP",
    serif;

  font-size:
    clamp(26px, 2.5vw, 38px);

  line-height: 1.5;

  font-weight: 300;

  letter-spacing: .05em;

  color: #4b554e;
}


.rs-price-room-size {
  margin: 3px 0 0;

  white-space: nowrap;

  font-size: 13px;

  letter-spacing: .08em;

  color: #858b85;
}


/* -----------------------------------------
   MAIN PRICE
----------------------------------------- */

.rs-price-main {
  padding:
    clamp(36px, 4vw, 56px)
    0
    30px;
}


.rs-price-main-label {
  margin: 0 0 14px;

  font-size: 11px;

  letter-spacing: .22em;

  color: #89908a;
}


.rs-price-main-number {
  display: flex;

  align-items: baseline;

  flex-wrap: wrap;

  gap: 7px;
}


.rs-price-main-number strong {
  font-family:
    "Noto Serif JP",
    serif;

  font-size:
    clamp(46px, 5.2vw, 76px);

  line-height: 1;

  font-weight: 300;

  letter-spacing: .015em;

  color: #3f4e45;
}


.rs-price-from {
  margin-right: 4px;

  font-size: 14px;

  color: #747c76;
}


.rs-price-yen {
  font-size:
    clamp(15px, 1.2vw, 18px);

  color: #5d6761;
}


.rs-price-main-range {
  margin:
    17px 0 0
    45px;

  font-size: 15px;

  letter-spacing: .05em;

  color: #737b75;
}


.rs-price-summary-note {
  margin: 0;

  padding-top: 26px;

  border-top:
    1px solid rgba(82, 98, 87, .14);

  font-size:
    clamp(14px, .95vw, 16px);

  line-height: 2;

  color: #747a75;
}



/* =========================================================
   DETAIL TABLE
========================================================= */

.rs-price-detail {
  margin-top:
    clamp(110px, 11vw, 175px);
}


.rs-price-detail-head {
  display: flex;

  justify-content: space-between;
  align-items: flex-end;

  gap: 30px;

  margin-bottom: 35px;
}


.rs-price-detail-head h3 {
  margin: 0;

  font-family:
    "Noto Serif JP",
    serif;

  font-size:
    clamp(27px, 2.7vw, 40px);

  font-weight: 300;

  letter-spacing: .055em;

  color: #4b554e;
}


.rs-price-detail-head > p {
  margin: 0;

  font-size: 12px;

  color: #8a908b;
}


.rs-price-table-scroll {
  width: 100%;

  overflow-x: auto;

  -webkit-overflow-scrolling: touch;

  scrollbar-width: thin;
}


/* -----------------------------------------
   TABLE
----------------------------------------- */

.rs-price-table {
  width: 100%;
  min-width: 1040px;

  border-collapse: collapse;

  table-layout: fixed;

  background:
    rgba(255,255,255,.17);
}


.rs-price-table th,
.rs-price-table td {
  padding:
    22px 14px;

  border-bottom:
    1px solid rgba(82, 98, 87, .16);

  border-right:
    1px solid rgba(82, 98, 87, .10);

  text-align: right;

  font-size:
    clamp(14px, .95vw, 16px);

  font-weight: 300;

  color: #606962;
}


.rs-price-table thead th {
  padding-top: 25px;
  padding-bottom: 25px;

  background:
    rgba(82, 98, 87, .055);

  text-align: center;

  font-size: 13px;

  letter-spacing: .04em;

  color: #59645d;
}


.rs-price-table thead th:first-child {
  width: 150px;
}


.rs-price-table tbody th {
  text-align: left;

  font-family:
    "Noto Serif JP",
    serif;

  font-weight: 300;

  color: #505a53;
}


.rs-price-table-b {
  background:
    rgba(82, 98, 87, .055);
}


.rs-price-table th:last-child,
.rs-price-table td:last-child {
  border-right: none;
}


.rs-price-table small {
  display: block;

  margin-top: 5px;

  font-size: 10px;

  font-weight: 300;

  color: #8b918c;
}


/* TOTAL */

.rs-price-total-row th,
.rs-price-total-row td {
  padding-top: 26px;
  padding-bottom: 26px;

  border-bottom:
    1px solid rgba(82, 98, 87, .30);

  background:
    rgba(82, 98, 87, .07);

  font-family:
    "Noto Serif JP",
    serif;

  font-size:
    clamp(17px, 1.25vw, 20px);

  color: #3f4e45;
}


.rs-price-swipe-note {
  display: none;

  margin:
    14px 0 0;

  font-size: 11px;

  color: #929791;
}



/* =========================================================
   COST IMAGE
========================================================= */

.rs-cost-image {
  margin-top:
    clamp(130px, 13vw, 210px);
}


.rs-cost-image-head {
  max-width: 760px;
}


.rs-cost-image-head h3 {
  margin:
    0 0 30px;

  font-family:
    "Noto Serif JP",
    serif;

  font-size:
    clamp(30px, 3.3vw, 48px);

  line-height: 1.75;

  font-weight: 300;

  letter-spacing: .055em;

  color: #48524b;
}


.rs-cost-image-head > p:last-child {
  margin: 0;

  font-size:
    clamp(14px, 1vw, 16px);

  line-height: 2.1;

  color: #747a75;
}


/* -----------------------------------------
   CASE GRID
----------------------------------------- */

.rs-cost-example-grid {
  display: grid;

  grid-template-columns:
    repeat(3, minmax(0, 1fr));

  gap: 1px;

  margin-top:
    clamp(60px, 6vw, 90px);

  background:
    rgba(82, 98, 87, .18);

  border:
    1px solid rgba(82, 98, 87, .18);
}


.rs-cost-example {
  position: relative;

  min-width: 0;

  padding:
    clamp(30px, 3vw, 45px);

  background:
    #f7f4ed;
}


.rs-cost-example-b {
  background:
    #ece9df;
}


/* CASE LABEL */

.rs-cost-example-meta > span {
  display: block;

  margin-bottom: 13px;

  font-size: 11px;

  letter-spacing: .21em;

  color: #8a918a;
}


.rs-cost-example-meta > p {
  margin: 0;

  font-family:
    "Noto Serif JP",
    serif;

  font-size:
    clamp(18px, 1.5vw, 23px);

  color: #525c55;
}


/* PRICE */

.rs-cost-example-price {
  margin-top: 42px;

  padding-bottom: 35px;

  border-bottom:
    1px solid rgba(82, 98, 87, .16);
}


.rs-cost-example-price small {
  display: block;

  margin-bottom: 10px;

  font-size: 12px;

  color: #848b85;
}


.rs-cost-example-price strong {
  font-family:
    "Noto Serif JP",
    serif;

  font-size:
    clamp(36px, 3.7vw, 52px);

  font-weight: 300;

  color: #405047;
}


.rs-cost-example-price > span {
  margin-left: 5px;

  font-size: 14px;

  color: #68736c;
}


/* PLUS */

.rs-cost-plus {
  display: grid;

  grid-template-columns:
    30px 1fr;

  gap: 15px;

  align-items: start;

  padding:
    30px 0;
}


.rs-cost-plus > span {
  font-family:
    "Noto Serif JP",
    serif;

  font-size: 26px;

  color: #819087;
}


.rs-cost-plus p {
  margin: 0;

  font-size:
    13px;

  line-height: 1.9;

  color: #757b76;
}


/* RESULT */

.rs-cost-result {
  padding-top: 25px;

  border-top:
    1px solid rgba(82, 98, 87, .16);
}


.rs-cost-result > span {
  display: block;

  margin-bottom: 13px;

  font-size: 10px;

  letter-spacing: .18em;

  color: #8b918c;
}


.rs-cost-result p {
  margin: 0;

  font-family:
    "Noto Serif JP",
    serif;

  font-size:
    clamp(17px, 1.4vw, 21px);

  line-height: 1.75;

  color: #525d56;
}


.rs-cost-result strong {
  display: block;

  margin-top: 5px;

  font-weight: 300;

  color: #748078;
}



/* =========================================================
   NOTES
========================================================= */

.rs-price-notes {
  display: grid;

  grid-template-columns:
    minmax(230px, .55fr)
    minmax(0, 1.45fr);

  gap:
    clamp(50px, 7vw, 110px);

  margin-top:
    clamp(110px, 11vw, 170px);

  padding:
    clamp(40px, 5vw, 70px)
    0;

  border-top:
    1px solid rgba(82, 98, 87, .20);

  border-bottom:
    1px solid rgba(82, 98, 87, .20);
}


.rs-price-notes-head > span {
  display: block;

  margin-bottom: 18px;

  font-size: 11px;

  letter-spacing: .22em;

  color: #8a918b;
}


.rs-price-notes-head h3 {
  margin: 0;

  font-family:
    "Noto Serif JP",
    serif;

  font-size:
    clamp(22px, 2vw, 30px);

  line-height: 1.7;

  font-weight: 300;

  color: #4e5951;
}


.rs-price-notes ul {
  margin: 0;
  padding: 0;

  list-style: none;
}


.rs-price-notes li {
  position: relative;

  padding:
    13px 0
    13px 20px;

  border-bottom:
    1px solid rgba(82, 98, 87, .11);

  font-size:
    clamp(13px, .95vw, 15px);

  line-height: 1.9;

  color: #6e756f;
}


.rs-price-notes li:first-child {
  padding-top: 0;
}


.rs-price-notes li:last-child {
  border-bottom: none;
}


.rs-price-notes li::before {
  content: "";

  position: absolute;

  left: 0;
  top: 1.25em;

  width: 6px;
  height: 1px;

  background: #7f8c84;
}



/* =========================================================
   EXISTING PRICE INFO
========================================================= */

.rs-price-info-grid {
  margin-top:
    clamp(90px, 9vw, 140px);
}


.rs-price-info h3 {
  font-size:
    clamp(21px, 1.9vw, 28px);
}



/* =========================================================
   TABLET
========================================================= */

@media (max-width: 1000px) {

  .rs-cost-example-grid {
    grid-template-columns:
      repeat(2, minmax(0, 1fr));
  }


  .rs-cost-example-b {
    grid-column:
      1 / -1;
  }

}



/* =========================================================
   SMARTPHONE
========================================================= */

@media (max-width: 650px) {

  /* SUMMARY */

  .rs-price-summary {
    grid-template-columns: 1fr;

    margin-top: 65px;
  }


  .rs-price-summary-card {
    padding:
      30px 24px
      34px;
  }


  .rs-price-summary-head {
    padding-bottom: 24px;
  }


  .rs-price-main {
    padding:
      32px 0
      25px;
  }


  .rs-price-main-number strong {
    font-size:
      clamp(43px, 13vw, 58px);
  }


  .rs-price-main-range {
    margin-left: 38px;
  }


  /* TABLE */

  .rs-price-detail {
    margin-top: 95px;
  }


  .rs-price-detail-head {
    align-items: flex-start;
  }


  .rs-price-table-scroll {
    width:
      calc(100vw - 12vw);

    margin-right:
      -6vw;
  }


  .rs-price-table {
    min-width: 900px;
  }


  .rs-price-table th,
  .rs-price-table td {
    padding:
      18px 12px;

    font-size: 14px;
  }


  /*
   * スマホでは左端の項目だけ
   * 固定して読みやすく
   */

  .rs-price-table thead th:first-child,
  .rs-price-table tbody th {
    position: sticky;

    left: 0;

    z-index: 3;

    background: #f1eee6;
  }


  .rs-price-table thead th:first-child {
    z-index: 4;
  }


  .rs-price-swipe-note {
    display: block;
  }


  /* COST IMAGE */

  .rs-cost-image {
    margin-top: 110px;
  }


  .rs-cost-example-grid {
    grid-template-columns: 1fr;

    margin-top: 55px;
  }


  .rs-cost-example-b {
    grid-column: auto;
  }


  .rs-cost-example {
    padding:
      30px 24px
      34px;
  }


  /* NOTES */

  .rs-price-notes {
    grid-template-columns: 1fr;

    gap: 42px;

    margin-top: 100px;

    padding:
      45px 0;
  }


  /* CURRENT INFO */

  .rs-price-info-grid {
    grid-template-columns: 1fr;

    margin-top: 80px;
  }

}

/* =========================================================
   FOOD SLIDER / SENJU NO MORI
========================================================= */

.rs-meal-gallery {
  position: relative;
  overflow: hidden;

  padding:
    clamp(120px, 12vw, 190px)
    0
    clamp(125px, 13vw, 205px);

  background: #eeeae1;
}


/* TOP */

.rs-meal-slider-top {
  display: grid;

  grid-template-columns:
    minmax(260px, .58fr)
    minmax(0, 1.42fr);

  gap:
    clamp(65px, 8vw, 135px);

  align-items: center;
}


/* COPY */

.rs-meal-slider-copy {
  padding-left:
    clamp(0px, 2vw, 28px);
}

.rs-meal-slider-copy h3 {
  margin:
    0 0 34px;

  font-family:
    "Noto Serif JP",
    serif;

  font-size:
    clamp(34px, 3.7vw, 54px);

  line-height: 1.72;

  font-weight: 300;

  letter-spacing: .07em;

  color: #465049;
}

.rs-meal-slider-copy > p:last-child {
  margin: 0;

  font-size:
    clamp(14px, .95vw, 16px);

  line-height: 2.18;

  letter-spacing: .025em;

  color: #727972;
}


/* SLIDER */

.rs-meal-slider {
  min-width: 0;

  outline: none;
}

.rs-meal-stage {
  position: relative;

  aspect-ratio: 1.58 / 1;

  overflow: hidden;

  background: #ddd8ce;
}

.rs-meal-slide {
  position: absolute;

  inset: 0;

  margin: 0;

  opacity: 0;

  visibility: hidden;

  transform:
    scale(1.025);

  transition:
    opacity .72s ease,
    visibility .72s ease,
    transform 1.15s
      cubic-bezier(.22,.61,.36,1);
}

.rs-meal-slide.is-active {
  opacity: 1;

  visibility: visible;

  transform:
    scale(1);
}

.rs-meal-slide img {
  display: block;

  width: 100%;
  height: 100%;

  object-fit: cover;
}


/* subtle image caption */

.rs-meal-slide figcaption {
  position: absolute;

  left:
    clamp(20px, 2.4vw, 38px);

  bottom:
    clamp(18px, 2.2vw, 34px);

  display: flex;

  align-items: baseline;

  gap: 14px;

  color: #fff;

  text-shadow:
    0 1px 10px rgba(0,0,0,.22);
}

.rs-meal-slide figcaption span {
  font-family:
    "Noto Serif JP",
    serif;

  font-size:
    clamp(27px, 2.6vw, 40px);

  font-weight: 300;

  letter-spacing: .05em;
}

.rs-meal-slide figcaption small {
  font-size: 10px;

  letter-spacing: .22em;

  color:
    rgba(255,255,255,.86);
}


/* CONTROLS */

.rs-meal-controls {
  display: flex;

  justify-content: space-between;
  align-items: center;

  gap: 25px;

  padding-top:
    22px;
}

.rs-meal-counter {
  display: flex;

  align-items: center;

  gap: 15px;

  font-family:
    "Noto Serif JP",
    serif;

  font-size: 12px;

  letter-spacing: .14em;

  color: #7c837d;
}

.rs-meal-counter i {
  display: block;

  width: 38px;
  height: 1px;

  background:
    rgba(82,98,87,.30);
}

.rs-meal-current {
  color: #435048;
}


/* ARROWS */

.rs-meal-arrows {
  display: flex;

  gap: 10px;
}

.rs-meal-prev,
.rs-meal-next {
  position: relative;

  display: grid;

  place-items: center;

  width: 46px;
  height: 46px;

  padding: 0;

  border:
    1px solid rgba(82,98,87,.24);

  border-radius: 50%;

  background: transparent;

  cursor: pointer;

  transition:
    border-color .35s ease,
    background-color .35s ease,
    transform .35s ease;
}

.rs-meal-prev:hover,
.rs-meal-next:hover {
  border-color:
    rgba(82,98,87,.58);

  background:
    rgba(82,98,87,.045);
}

.rs-meal-prev:hover {
  transform:
    translateX(-2px);
}

.rs-meal-next:hover {
  transform:
    translateX(2px);
}

.rs-meal-prev span,
.rs-meal-next span {
  position: relative;

  display: block;

  width: 18px;
  height: 1px;

  background: #59675f;
}

.rs-meal-prev span::after,
.rs-meal-next span::after {
  content: "";

  position: absolute;

  top: -3px;

  width: 7px;
  height: 7px;

  border-top:
    1px solid #59675f;

  border-right:
    1px solid #59675f;
}

.rs-meal-prev span::after {
  left: 0;

  transform:
    rotate(-135deg);
}

.rs-meal-next span::after {
  right: 0;

  transform:
    rotate(45deg);
}


/* THUMBNAILS */

.rs-meal-thumbs {
  display: grid;

  grid-template-columns:
    repeat(7, minmax(0, 1fr));

  gap:
    clamp(8px, 1.1vw, 16px);

  margin-top:
    clamp(48px, 5vw, 72px);
}

.rs-meal-thumb {
  position: relative;

  aspect-ratio: 1.28 / 1;

  overflow: hidden;

  padding: 0;

  border: 0;

  background: #dcd7cd;

  cursor: pointer;

  opacity: .56;

  transition:
    opacity .35s ease,
    transform .35s ease;
}

.rs-meal-thumb::after {
  content: "";

  position: absolute;

  inset: 0;

  border:
    1px solid transparent;

  transition:
    border-color .35s ease;
}

.rs-meal-thumb img {
  display: block;

  width: 100%;
  height: 100%;

  object-fit: cover;

  transform:
    scale(1.035);

  transition:
    transform .55s
      cubic-bezier(.22,.61,.36,1);
}

.rs-meal-thumb:hover {
  opacity: .82;
}

.rs-meal-thumb:hover img {
  transform:
    scale(1);
}

.rs-meal-thumb.is-active {
  opacity: 1;

  transform:
    translateY(-3px);
}

.rs-meal-thumb.is-active::after {
  border-color:
    rgba(67,80,72,.70);
}


/* END MESSAGE */

.rs-meal-slider-end {
  display: grid;

  grid-template-columns:
    minmax(30px, 1fr)
    auto
    minmax(30px, 1fr);

  gap:
    clamp(24px, 4vw, 60px);

  align-items: center;

  width:
    min(84%, 900px);

  margin:
    clamp(70px, 7.5vw, 110px)
    auto
    0;
}

.rs-meal-slider-end span {
  display: block;

  height: 1px;

  background:
    rgba(82,98,87,.22);
}

.rs-meal-slider-end p {
  margin: 0;

  white-space: nowrap;

  font-family:
    "Noto Serif JP",
    serif;

  font-size:
    clamp(19px, 1.9vw, 28px);

  font-weight: 300;

  letter-spacing: .08em;

  color: #525d56;
}


/* TABLET */

@media (max-width: 1000px) {

  .rs-meal-slider-top {
    grid-template-columns:
      minmax(230px, .7fr)
      minmax(0, 1.3fr);

    gap: 55px;
  }

}


/* SMARTPHONE */

@media (max-width: 650px) {

  .rs-meal-gallery {
    padding:
      95px 0
      110px;
  }

  .rs-meal-slider-top {
    grid-template-columns:
      1fr;

    gap: 55px;
  }

  .rs-meal-slider-copy {
    padding-left: 0;
  }

  .rs-meal-slider-copy h3 {
    margin-bottom: 26px;

    font-size:
      clamp(31px, 8.5vw, 40px);
  }

  .rs-meal-slider-copy > p:last-child br {
    display: none;
  }

  .rs-meal-stage {
    aspect-ratio:
      1.12 / 1;
  }

  .rs-meal-slide figcaption {
    left: 18px;
    bottom: 17px;
  }

  .rs-meal-slide figcaption small {
    font-size: 9px;
  }

  .rs-meal-controls {
    padding-top: 18px;
  }

  .rs-meal-prev,
  .rs-meal-next {
    width: 42px;
    height: 42px;
  }

  .rs-meal-thumbs {
    grid-template-columns:
      repeat(7, 72px);

    gap: 9px;

    width:
      calc(100vw - 6vw);

    margin-top: 38px;

    margin-right: -6vw;

    overflow-x: auto;

    padding-bottom: 8px;

    scrollbar-width: none;

    -webkit-overflow-scrolling:
      touch;
  }

  .rs-meal-thumbs::-webkit-scrollbar {
    display: none;
  }

  .rs-meal-slider-end {
    grid-template-columns:
      1fr;

    gap: 24px;

    width: 100%;

    margin-top: 70px;

    text-align: center;
  }

  .rs-meal-slider-end p {
    white-space: normal;

    font-size:
      clamp(19px, 5.6vw, 25px);
  }

  .rs-meal-slider-end span {
    width: 55px;

    margin: 0 auto;
  }

}


/* REDUCED MOTION */

@media (prefers-reduced-motion: reduce) {

  .rs-meal-slide,
  .rs-meal-thumb,
  .rs-meal-thumb img,
  .rs-meal-prev,
  .rs-meal-next {
    transition:
      none !important;
  }

}


/* ========================================
   RESIDENCE / iPhone 横スクロール防止
======================================== */

.residence-page {
  width: 100%;
  max-width: 100%;
  overflow-x: clip;
}

@supports not (overflow: clip) {
  .residence-page {
    overflow-x: hidden;
  }
}