/* ===================================================================
   content.css
   Scope : p- classes (+ page-specific l-xxx__container as exception)
   Strategy : Mobile First（Default = SP）
   Breakpoint : 768px (Laptop)
   =================================================================== */

/* -----------------------------------------------------------
   p-top-main
   ----------------------------------------------------------- */

.p-top-main {
  position: relative;

  &::before {
    content: "";
    z-index: 2;
    position: absolute;
    top: 0;
    left: -100%;
    right: -100%;
    margin: auto;
    display: block;
    width: 100%;
    background-image: url(../images/top-main__bg.svg);
    mask-image: linear-gradient(to bottom, transparent 0%, #000 25%);
    background-position: center top;
    background-size: 1280px auto;
  }
}

@media (max-width: 767.98px) {
  .p-top-main::before {
    top: 88.8vw;
    left:  -100%;
    right: -100%;
    width: 100vw;
    height: 162vw;
    background-size: calc(976 * var(--vw-scale));
    background-position: left 25% top;
  }
}
@media (min-width: 540px) and (max-width: 767.98px) {
  .p-top-main::before {
    top: 120vw;
  }
}
@media (min-width: 768px) {
  .p-top-main::before {
    min-height: 1278px;
    background-size: 2560px auto;
  }
}


/* -----------------------------------------------------------
   p-top-keyvisual
   ----------------------------------------------------------- */

.p-top-keyvisual {
  position: relative;
  z-index: 1001;

  & .l-keyvisual__container {
    display: flex;
    flex-direction: column;
    gap: var(--semantic-spacing-8);
  }

  & .l-keyvisual__container::after {
    content: "";
    z-index: -21;
    position: absolute;
    display: block;
    background-image: url(../images/keyvisual-image.webp);
    background-repeat: no-repeat;
    background-size: auto 100%;
    background-position: left center;
  }
}

.p-top-keyvisual__catchcopy {
  display: flex;
  flex-direction: column;
  justify-content: center;
}

.p-top-keyvisual__main-catch {
  margin: 0;
  font-family: var(--component-kv-main-catch-font-family);
  font-size: var(--component-kv-main-catch-font-size-sm);
  font-weight: var(--component-kv-main-catch-font-weight);
  line-height: var(--component-kv-main-catch-line-height);
  letter-spacing: var(--component-kv-main-catch-letter-spacing);
}

.p-top-keyvisual__linear {
  display: block;

  & > * {
    position: relative;
    display: inline-block;
    color: transparent;
    background-clip: text;
    background-image: linear-gradient(90deg, var(--semantic-color-brand-primary-active) 0%, var(--semantic-color-brand-primary) 100%);
  }

  & > *::before {
    display: inline-block;
    content: attr(data-label);
    position: absolute;
    bottom: 0;
    left: 0;
    z-index: -1;
    -webkit-text-stroke: var(--component-kv-main-catch-stroke-width) var(--component-kv-main-catch-stroke-color);
    color: var(--component-kv-main-catch-stroke-color);

    white-space: pre;
  }
}

.p-top-keyvisual__catch-text--lg {
  font-size: var(--component-kv-main-catch-font-size);
  font-weight: var(--component-kv-main-catch-font-weight);
}


.p-top-keyvisual__sub-catch {
  max-width: 15em;
  margin-block-start: 1em;
  font-family: var(--component-kv-sub-catch-font-family);
  font-size: var(--component-kv-sub-catch-font-size);
  font-weight: var(--component-kv-sub-catch-font-weight);
  line-height: var(--component-kv-sub-catch-line-height);
  color: var(--component-kv-sub-catch-color);

  & span {
    display: inline-block;
    font-size: inherit;
    line-height: inherit;
  }
}

.p-top-keyvisual__text {
  margin-block-start: 1em;
  color: var(--component-kv-text-color);
}

.p-top-keyvisual__images {
  position: relative;
  flex-grow: 1;
}

.p-keyvisual__icon {
  display: flex;
  flex-direction: column;
  align-items: flex-end;

  & > img {
    width: var(--component-kv-icon-width);
    aspect-ratio: var(--component-kv-icon-aspect-ratio-x) / var(--component-kv-icon-aspect-ratio-y);
  }
}

.p-keyvisual__caption {
  flex-shrink: 0;
  width: var(--component-kv-caption-width);
  padding-block-start: var(--component-kv-caption-block-space);
  margin-inline-start: var(--component-kv-caption-gap);

  & > img {
    width: 100%;
    max-width: unset;
  }
}


@media (max-width: 767.98px) {
  .p-top-keyvisual {
    min-height: 128vw;

    & .l-keyvisual__container {
      padding-block-start: var(--component-kv-image-block-start);

      &::after {
        content: "";
        top: 0;
        left: var(--component-kv-image-inline-start);
        width: calc(100vw - var(--component-kv-image-inline-start));
        max-width: var(--component-kv-image-width);
        height: var(--component-kv-image-height);
      }
    }
  }

  .p-top-keyvisual__images {
    display: none;
  }
}
@media (min-width: 540px) and (max-width: 767.98px) {
  .p-top-keyvisual {
    min-height: 160vw;
  }
}
@media (min-width: 768px) {
  .p-top-keyvisual .l-keyvisual__container {
    flex-direction: row;
    align-items: stretch;

    &::after {
      content: "";
      position: absolute;
      top: -32px;
      left: 57.5%;
      width: 42.5%;
      max-width: 720px;
      height: 480px;
    }
  }

  .p-top-keyvisual__linear > *::before {
    content: attr(data-label-lg);
    white-space: nowrap;
  }

  .p-top-keyvisual__text {
    max-width: 30em;
  }

  .p-keyvisual__icon {
    position: absolute;
    top:   108px;
    left: -192px;
    flex-direction: row;
  }
}

/* -----------------------------------------------------------
   p-top-about
   ----------------------------------------------------------- */
.p-top-about {
  z-index: 2;
  position: relative;

  & .l-about__container {
    position: relative;
    display: flex;
    flex-direction: column;
  }

  & .c-btn__wrap {
    display: flex;
    flex-direction: column;
    align-items: center;
    margin-block-start: 1.5em;
  }
}

.p-top-about__figure {
  position: relative;
}

.p-top-about__content {
  display: flex;
  flex-direction: column;
  color: var(--semantic-color-text-inverse);
}

@media (max-width: 767.98px) {
  .p-top-about {
    padding-block: var(--semantic-spacing-6) var(--semantic-spacing-12);
    background-image: linear-gradient(var(--semantic-color-brand-primary-active) 75%, var(--semantic-color-brand-primary-light) 100%);
  }

  .p-top-about__figure {
    margin-block-end: -6%;

    & .c-figure:first-of-type {
      width: 76.389%;
    }

    & .c-figure:last-of-type {
        width: 38.333%;
        margin-block-start: calc((46/393) * -100vw);
        margin-inline-start: 61.667%;
    }
  }
}
@media (min-width: 768px) {
  .p-top-about {
    padding-block: var(--semantic-spacing-24);
    background-image: linear-gradient(0deg, var(--semantic-color-brand-primary) 0%, transparent 50%);

    & .l-about__container {
      flex-direction: row;
      align-items: flex-start;
      gap: var(--semantic-spacing-16);
    }

    & .c-paragraph {
      color: var(--semantic-color-text-inverse);
    }

    & .c-btn__wrap {
      align-items: flex-end;

    }
  }

  .p-top-about__figure {
    flex-shrink: 0;
    width: 480px;

    & .c-figure:last-of-type {
      margin-block-start: -25%;
      margin-inline-start: 75%;
      width: 50%;
    }
  }
}

/* -----------------------------------------------------------
   p-top-information
   ----------------------------------------------------------- */

.p-top-information {
  position: relative;
  z-index: 2;

  & .l-information__container {
    position: relative;
    z-index: 1;
    display: flex;
    flex-direction: column;
  }
}

.p-top-information__header {
  display: flex;
  flex-direction: column;
  color: var(--semantic-color-text-inverse);
}

.p-top-information__content {
  flex-grow: 1;
  flex-shrink: 0;
}

.p-top-information__items {
  display: flex;
  flex-direction: column;
  gap: var(--semantic-spacing-2);
  list-style: none;
  padding-block-start: var(--semantic-spacing-2);
  padding-inline: 0;
  margin: 0;
}

.p-top-information__item {
  width: 100%;
}

.p-top-information__link {
  padding: var(--semantic-spacing-4);
  min-height: 4.25em;
  background-color: var(--semantic-color-bg-primary);
  border-radius: var(--semantic-border-radius-sm);
}

.p-top-information__date {
  flex-shrink: 0;

  & time {
    font-size: var(--semantic-font-size-sm);
    font-weight: bold;
    color: var(--semantic-color-text-secondary);
  }
}

.p-top-information__text {
  flex-grow: 1;
}

@media (max-width: 767.98px) {
  .p-top-information {
    background-image: linear-gradient(var(--semantic-color-brand-primary-light) 0%, transparent 50%);

    & .l-information__container {
      width: calc(100vw - var(--semantic-layout-padding-x));
      margin-inline-start: 0;
      padding-block: var(--semantic-spacing-12) var(--semantic-spacing-4);
      background-color: var(--semantic-color-brand-primary-active);
      background-image: url(../images/top-information__bg.svg);
      background-position: center center;
      border-radius: 0  var(--semantic-border-radius-md) var(--semantic-border-radius-md) 0;
    }
  }

  .p-top-information__header {
    display: grid;
    grid-template-columns: 1fr auto;

    & .c-title__section {
      order: 1;
    }

    & .c-paragraph {
      order: 3;
      grid-column: span 2;
    }

    & .c-btn__wrap {
      order: 2;
      margin-block-start: 0;
      align-self: center;
    }
  }

  .p-top-information__content {
    padding-block: var(--semantic-spacing-6) var(--semantic-spacing-2);
  }

  .p-top-information__link {
    display: grid;
    grid-template-columns: 1fr auto;
  }

  .p-top-information__date {
    order: 1;
  }

  .p-top-information__text {
    order: 3;
  }

  .p-top-information__icon {
    order: 2;
    grid-row: span 2;
    align-self: center;
  }
}
@media (min-width: 768px) {
  .p-top-information {
    margin-block-start: -1px;
    padding-block: var(--semantic-spacing-16);
    background-image: linear-gradient(180deg, var(--semantic-color-brand-primary) 25%, transparent 100%);

    &::before {
      content: "";
      display: block;
      position: absolute;
      top: 0;
      left: 0;
      bottom: 0;
      width: calc(50vw + 600px);
      height: 100%;
      background-color: var(--semantic-color-brand-primary-active);
      background-image: url(../images/top-information__bg.svg);
      background-position: center center;
      border-radius: 0  var(--semantic-border-radius-xl) var(--semantic-border-radius-xl) 0;
    }

    & .l-information__container {
      flex-direction: row;
      align-items: stretch;
    }
  }

  .p-top-information__header {
    width: 384px;
  }

  .p-top-information__link {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--semantic-spacing-4);
  }
}

/* -----------------------------------------------------------
   p-top-reservation
   ----------------------------------------------------------- */

.p-top-reservation {
  padding-block-start: var(--semantic-spacing-12);
  padding-block-end: var(--semantic-spacing-8);

  & .l-reservation__container {
    position: relative;
    display: flex;
    flex-direction: column-reverse;
    gap: var(--semantic-spacing-8);
  }
}

.p-top-reservation__content {
  display: flex;
  flex-direction: column;
}

@media (max-width: 767.98px) {
  .p-top-reservation__content .c-btn__wrap {
    justify-content: center;
  }
}
@media (min-width: 768px) {
  .p-top-reservation {
    padding-block-start: var(--semantic-spacing-24);
    padding-block-end: var(--semantic-spacing-16);

    & .l-reservation__container {
      flex-direction: row;
      align-items: center;
    }
  }

  .p-top-reservation__content {
    flex-grow: 1;
  }
}


/* -----------------------------------------------------------
   p-facilities / p-top-facilities
   ----------------------------------------------------------- */

.p-facilities,
.p-top-facilities {
  padding-block: var(--semantic-spacing-8);

  & .l-facilities__container {
    display: flex;
    flex-direction: column;
    gap: var(--semantic-spacing-8);
  }
}

.p-facilities__header,
.p-top-facilities__header {
  display: flex;
  flex-direction: column;
}

.p-facilities__content,
.p-top-facilities__content {
  display: grid;
  grid-template-columns: repeat(1, 1fr);
  gap: var(--semantic-spacing-4);

  & .c-annotation {
    color: var(--semantic-color-text-body);

    &::before {
      color: var(--semantic-color-status-error);
    }
  }
}

@media (min-width: 576px) {
  .p-top-facilities__content {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: var(--semantic-spacing-4);
  }
}
@media (min-width: 768px) {
  .p-facilities,
  .p-top-facilities {
    padding-block: var(--semantic-spacing-16);
  }

  .p-top-facilities__content {
    grid-template-columns: repeat(3, 1fr);
    gap: var(--semantic-spacing-4);
  }
}


/* -----------------------------------------------------------
   p-aboutus
   ----------------------------------------------------------- */
.p-aboutus {
  position: relative;

  & .l-aboutus__container {
    position: relative;
    display: flex;
    flex-direction: column;
  }

  &::before {
    content: "";
    z-index: -1;
    position: absolute;
    top: 0;
    left: -100%;
    right: -100%;
    margin: auto;
    display: block;
    width: 100%;
    background-image: url(../images/top-main__bg.svg);
    mask-image: linear-gradient(to bottom, transparent 0%, #000 25%);
    background-position: center top;
    background-size: 1280px auto;
    transform: scale(-1, 1);
  }
}

.p-aboutus__figure {
  position: relative;
}

@media (max-width: 767.98px) {
  .p-aboutus {
    padding-block: var(--semantic-spacing-6) var(--semantic-spacing-12);

    &::before {
      top: calc(100% - 35vw);
      min-height: 100vw;
      background-size: calc(960 * var(--vw-scale));
      background-position: 25% top;
    }
  }

  .p-aboutus__figure {
    position: relative;
    margin-block-end: 1em;
  }
}
@media (min-width: 768px) {
  .p-aboutus {
    padding-block-start: var(--semantic-spacing-16);
    padding-block-end: var(--semantic-spacing-8);

    &::before {
      top: -12.5%;
      min-height: calc(250%);
      background-size: 2560px auto;
      background-position: 40% top;
    }

    & .l-aboutus__container {
      flex-direction: row;
      align-items: flex-start;
      gap: var(--semantic-spacing-16);
    }
  }

  .p-aboutus__figure {
    flex-shrink: 0;
    width: 480px;
  }
}

/* -----------------------------------------------------------
   p-learning
   ----------------------------------------------------------- */
.p-learning {
  counter-reset: sectionNum;
  position: relative;
  padding-block: var(--semantic-spacing-24) var(--semantic-spacing-16);
  background-image: linear-gradient(0deg, var(--semantic-color-bg-primary) 0%, var(--semantic-color-brand-primary-active) 10%, var(--semantic-color-brand-primary-active) 90%, transparent 100%);

  & .c-annotations {
    margin-block-start: .25em;
  }

  & .c-annotation {
    color: inherit;
  }
}

.p-learning__section {
  display: flow-root;

  counter-increment: sectionNum;

  & .c-heading-3,
  & .c-paragraph {
    color: var(--semantic-color-text-inverse);
  }

}

.p-learning-footer {
  display: flex;
  flex-direction: column;
  border-radius: var(--component-photo-border-radius);
  background-color: var(--semantic-color-bg-primary);
  box-shadow: var(--semantic-shadow-lg);
}

.p-learning-footer__figure {
  overflow: hidden;
  margin: 0;
  padding: 0;
  border-radius: var(--component-photo-border-radius)  var(--component-photo-border-radius) 0 0;

  & img {
    width: 100%;
    max-width: unset;
  }
}

.p-learning-footer__content {
  padding-inline: var(--semantic-layout-padding-x);
  padding-block-end: var(--semantic-spacing-8);
}

.p-learning-footer__icon {
  float: right;
  width: 7.5em;
  margin-inline-start: 1em;
}

@media (max-width: 767.98px) {
  .p-learning__section {
    padding-block-start: var(--semantic-spacing-8);
  }

  .p-learning-footer {
    margin-block-start: var(--semantic-spacing-12);
  }
}
@media (min-width: 768px) {
  .p-learning__section {
    display: flex;
    gap: var(--semantic-spacing-8);
    padding-block-start: var(--semantic-spacing-8);

    &:nth-of-type(odd) {
      flex-direction: row-reverse;
    }

    &:nth-of-type(even) {
      flex-direction: row;
    }
  }

  .p-learning__figure {
    flex-shrink: 0;
    width: 480px;
  }

  .p-learning__content {
    flex-grow: 1;
    display: flow-root;
  }

  .p-learning-footer {
    flex-direction: row-reverse;
    margin-block-start: var(--semantic-spacing-16);
  }

  .p-learning-footer__figure {
    flex-shrink: 0;
    width: 30em;
    border-radius: 0 var(--component-photo-border-radius)  var(--component-photo-border-radius) 0;
  }

  .p-learning-footer__content {
    padding: var(--semantic-spacing-2) var(--semantic-spacing-4) var(--semantic-spacing-2) var(--semantic-spacing-8);
  }

  .p-learning-footer__icon {
    width: 10em;
  }

}


/* -----------------------------------------------------------
   p-faq
   ----------------------------------------------------------- */
.p-faq {
  position: relative;
  padding-block: var(--semantic-spacing-12);
  background-image: linear-gradient(0deg, var(--semantic-color-bg-primary) 0%, var(--semantic-color-brand-primary-active) 10%, var(--semantic-color-brand-primary-active) calc(100% - 300px), transparent 100%);

  &::before {
    content: "";
    z-index: -1;
    position: absolute;
    top: 0;
    left: -100%;
    right: -100%;
    margin: auto;
    display: block;
    width: 100%;
    background-image: url(../images/top-main__bg.svg);
    mask-image: linear-gradient(to bottom, transparent 0%, #000 25%);
    background-position: center top;
    background-size: 1280px auto;
  }
}

.p-faq__item {
  counter-increment: faqNum;

  display: block;
  width: 100%;
  border-radius: var(--semantic-border-radius-sm);
  background: var(--semantic-color-bg-primary);
  box-shadow: var(--semantic-shadow-lg);

  & + & {
    margin-block-start: var(--semantic-spacing-4);
  }
}

/**
 * question
 */
.p-question {
  display: grid;
  grid-template-columns: auto 1fr auto;
  gap: .5em;
  padding: var(--semantic-spacing-3) var(--semantic-spacing-4);
  cursor: pointer;

  font-size: var(--semantic-font-size-base);
  font-weight: var(--semantic-typography-weight-bold);
  line-height: 1.35;
  color: var(--semantic-color-brand-primary);

  transform: rotate(-0.03deg);
  & > * { transform: rotate(0.03deg);}
}

.p-question__text {
  color: var(--semantic-color-text-body);
}

.p-question__label::before {
  content: "Q" counter(faqNum) ".";
}

.p-question__icon {
  position: relative;
  align-self: center;
  transform: rotate(0deg);
  transition: transform .3s;

  & span {
    display: block;
    width: 1em;
    height: .125em;
    background-color: currentColor;

    &:last-of-type {
      position: absolute;
      inset: 0;
      transform: rotate(90deg);
      transform-origin: center;
    }
  }

  [open] & {
    transform: rotate(360deg);
    & span:last-of-type {
      transform: rotate(180deg);
    }
  }
}

/**
 * answer
 */
.p-faq__content {
  display: grid;
  grid-template-columns: auto 1fr auto;
  gap: var(--semantic-spacing-2);
  border-block-start: 1px dotted var(--semantic-color-border-default);
  margin-inline: var(--semantic-layout-padding-x);
  padding-block: var(--semantic-spacing-3);
}

.p-answer__label::before {
  content: "A.";
  color: var(--semantic-color-brand-accent-active);

  font-size: var(--semantic-font-size-lg);
  font-weight: var(--semantic-typography-weight-bold);
  line-height: 1.25;
}

.p-answer__text {
  width: 100%;

  & .c-paragraph:first-of-type {
    margin-block-start: 0;
    padding-block-start: 0;

    & > * + * {
      margin-block-start: 1em;
    }
  }

  & .c-annotations {
    margin-block-start: 1em;
  }

  & ol {
    counter-reset: listDecimal;
    width: 100%;
  }

  & ol > li {
    counter-increment: listDecimal;

    display: grid;
    grid-template-columns: auto 1fr;
    gap: .25em;
    width: 100%;

    &::before {
      content: counter(listDecimal);
      display: inline-flex;
      justify-content: center;
      align-items: center;
      width: 1.286em;
      height: 1.286em;
      aspect-ratio: 1 / 1;
      border: 1px solid currentColor;
      border-radius: 50%;
      font-size: .875em;
      margin-block-start: .4em;
    }
  }

  & b {
    color: var(--semantic-color-text-darken);
  }

  & a[href^="tel:"] {
    color: inherit;
  }
}

@media (max-width: 767.98px) {
  .p-faq {
    &::before {
      top: -30vw;
      min-height: 100vw;
      background-size: calc(960 * var(--vw-scale));
      background-position: 30% top;
    }
  }

  .p-question__text {
    font-weight: var(--semantic-typography-weight-medium);
  }

  .p-question__icon {
    margin-inline-start: .5em;
  }

  .p-answer__label {
    padding-inline-start: .666em;

    .p-faq__item:nth-of-type(n+10) & {
      padding-inline-start: 1.25em;
    }
  }
}
@media (min-width: 768px) {
  .p-faq {
    min-height: 50em;
    padding-block: var(--semantic-spacing-24);
    background-image: linear-gradient(0deg, var(--semantic-color-bg-primary) 0%, var(--semantic-color-brand-primary-active) 192px, var(--semantic-color-brand-primary-active) calc(100% - 640px), transparent calc(100% - 320px));

    &::before {
      top: -320px;
      min-height: 960px;
      background-size: 2560px auto;
      background-position: 60% top;
    }
  }

  .p-faq__item {
    border-radius: var(--semantic-border-radius-xl);

    & + & {
      margin-block-start: var(--semantic-spacing-8);
    }
  }

  .p-question {
    gap: .5em;
    padding: var(--semantic-spacing-6) var(--semantic-spacing-8);

    font-size: var(--semantic-font-size-xl);
  }

  .p-faq__content {
    gap: var(--semantic-spacing-4);
    margin-inline: var(--semantic-spacing-8);
    padding-inline-start: var(--semantic-spacing-8);
    padding-block-end: var(--semantic-spacing-8);
  }

  .p-answer__label::before {
    font-size: var(--semantic-font-size-xl);
  }

}


/* -----------------------------------------------------------
   p-schedule
   ----------------------------------------------------------- */
.p-schedule {
  position: relative;
  margin-block-start: var(--semantic-spacing-12);

  &::before {
    content: "";
    z-index: -1;
    position: absolute;
    top: 0;
    left: -100%;
    right: -100%;
    margin: auto;
    display: block;
    width: 100%;
    background-image: url(../images/top-main__bg.svg);
    mask-image: linear-gradient(to bottom, transparent 0%, #000 25%);
    background-position: center top;
    background-size: 1280px auto;
  }

  & .c-title__icons {
    gap: var(--semantic-spacing-4);
  }

  & .c-select__wrap {
    margin-block-start: 1.5em;
  }
}

.p-schedule__container {
  background-color: var(--semantic-color-bg-body);
  border-radius: var(--semantic-border-radius-sm);

  .p-schedule &:first-child {
    border-bottom-left-radius: 0;
    border-bottom-right-radius: 0;
    border-block-end: 1px dashed var(--semantic-color-border-default);
  }

  .p-schedule &:last-child {
    border-top-left-radius: 0;
    border-top-right-radius: 0;
  }
}

.p-schedule__inner {
  overflow: auto;
  width: 100%;
  max-height: calc(75dvh - var(--component-header-height));
  border-block-end: var(--semantic-border-width-thin) solid var(--component-header-nav-border-color);
}


/***
 * month
 */
.p-schedule-month {
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  color: var(--semantic-color-brand-primary);

  & .c-button--secondary {
    min-width: unset;
  }
}

.p-schedule-month__text {
  order: 2;
}

.p-schedule-month--prev {
  order: 1;
  margin-inline-end: auto;
}

.p-schedule-month--next{
  order: 3;
  margin-inline-start: auto;
}

.p-schedule__time {
  font-weight: var(--semantic-typography-weight-bold);
  color: var(--semantic-color-bg-darken);
}

.p-schedule-status {
  display: flex;
  gap: .5em;
  margin-block: 1em .5em;
  font-size: var(--semantic-font-size-sm);
  line-height: var(--semantic-typography-body-small-line-height);
  /* color: var(--semantic-color-text-notes); */
}

.p-schedule-status__head {
  font-weight: var(--semantic-typography-weight-bold);
}

.p-schedule-status__desc {
  font-weight: var(--semantic-typography-weight-bold);

  & + &::before {
    content: "／";
    color: var(--semantic-color-border-default);
    padding-inline: var(--semantic-spacing-1);
  }
}

/***
 * table
 */
.p-schedule__table {
  width: 100%;
  table-layout: fixed;
  border-collapse: collapse;
  border: var(--semantic-border-width-thin) solid var(--component-header-nav-border-color);
  border-block-end: 0;
    background-color: var(--semantic-color-bg-disabled);

  & th,
  & td {
    border: var(--semantic-border-width-thin) solid var(--component-header-nav-border-color);
  }

  & tr:last-child th,
  & tr:last-child td {
    border-block-end: 0 none;
  }

  & .p-schedule-col--collapsed {
    padding: 0;
  }

  & th.p-schedule-col--collapsed {
    background-color: var(--semantic-color-bg-darken);
  }

  & td.p-schedule-col--collapsed {
    visibility: collapse;
  }
}

.p-schedule__session {
  width: auto;

  & > * + * {
    border-block-start: var(--semantic-border-width-thin) solid var(--component-header-nav-border-color);
  }

}

.p-schedule__session--am,
.p-schedule__session--pm {
  box-sizing: content-box;

  &:empty {
    background-color: var(--semantic-color-bg-tertiary);
    color: var(--semantic-color-text-disabled);
  }
}

.p-schedule-date__header > .p-schedule-date {
  position: sticky;
  top: -.125px;
  z-index: 1;
}

.p-schedule-date {
  width: auto;
  padding-block-end: .5em;
  background-color: var(--semantic-color-brand-primary);
  color: var(--semantic-color-text-inverse);

  &:empty {
    background-color: var(--semantic-color-bg-darken);
  }

  &:has([aria-day="saturday"]) {
    background-color: var(--semantic-color-brand-primary-active);
  }

  &:has([aria-day~="holiday"]),
  &:has([aria-day~="sunday"]) {
    background-color: var(--semantic-color-status-error);
  }
}

.p-schedule-date__day {
  width: 3em;
  margin-inline: auto;
  font-size: .666em;
  line-height: 1;
  text-align: center;

  &::before {
    content: "（";
  }
  &::after {
    content: "）";

  }
}

.p-schedule__name {
  background-color: var(--semantic-color-bg-primary);

  padding: 1em;
  font-size: .333rem;
  line-height: 1.5;

  & b {
    display: inline-block;
    width: 3.125em;
    font-size: 2.25em;
    text-align: justify;
    text-align-last: justify;
  }
}

@media (max-width: 767.98px) {
  .p-schedule {
    padding-block-end: var(--semantic-spacing-16);
    background-image: linear-gradient(0deg, var(--semantic-color-bg-primary) 0%, var(--semantic-color-brand-primary-active) 10%, var(--semantic-color-brand-primary-active) calc(100% - 15vw), transparent calc(100% - 5vw));

    &::before {
      top: -40vw;
      min-height: 100vw;
      background-size: calc(960 * var(--vw-scale));
      background-position: 40% top;
    }

    & .c-title__icons {
      padding-block-end: .5em;
      border-block-end: 5px double var(--semantic-color-text-secondary);
    }
  }

  .p-schedule__container {
    /* width: calc(100% - (var(--semantic-layout-padding-x) * 2));
    margin-inline: var(--semantic-layout-padding-x); */
    padding-block: var(--semantic-layout-padding-x) var(--semantic-spacing-4);
    padding-inline: var(--semantic-layout-padding-x);
    border-radius: var(--semantic-border-radius-sm);
  }

  .p-schedule-month {
    margin-block-start: 1.5em;

    & .c-button--secondary {
      width: fit-content;
      justify-content: center;
      aspect-ratio: 1 / 1;
      padding: var(--component-button-sm-padding-y);
    }

    & .c-button__icon:empty,
    & .c-button__text{
      display: none;
    }
  }

  .p-schedule__time {
    padding-inline-start: 1em;
    border-inline-start: var(--semantic-border-width-thick) solid var(--semantic-color-brand-primary-active);
    font-size: var(--semantic-font-size-sm);
  }

 .p-schedule__name {
    padding: 1em;
    font-size: .4rem;
    line-height: 1.5;

    & b {
      display: block;
      width: 1em;
      font-size: 3.325em;
      letter-spacing: .125em;
      line-height: 1.333;
      margin-block-end: .25em;
      writing-mode: vertical-rl;
      white-space: pre;

      & + br {
        display: none;
      }
    }

    & span {
      display: inline-block;
      width: 4em;
      font-size: 1em;
      text-align: justify;
      text-align-last: justify;
    }
  }

  .p-schedule__session--am,
  .p-schedule__session--pm {
    min-height: 3.5em;
  }

  .p-schedule__session--am,
  .p-schedule__session--pm {
    min-height: 4.125em;
  }
}
@media (min-width: 768px) {
  .p-schedule {
    padding-block-end: var(--semantic-spacing-12);
    background-image: linear-gradient(0deg, var(--semantic-color-bg-primary) 0%, var(--semantic-color-brand-primary-active) 192px, var(--semantic-color-brand-primary-active) calc(100% - 640px), transparent calc(100% - 320px));

    padding-block: var(--semantic-spacing-6);
    padding-inline: var(--semantic-spacing-8);

    &::before {
      top: -384px;
      min-height: 100vw;
      background-size: 2560px auto;
      background-position: center top;
    }
  }

  .p-schedule__container {
    padding-block: var(--semantic-spacing-8);
    padding-inline: var(--semantic-spacing-8);
  }

  .p-schedule-month {
    margin-block-start: 3em;

    & .c-button--secondary {
      width: fit-content;
      min-width: unset;
    }
  }

  .p-schedule__time {
    width: 100%;
    margin-block-end: 1.5em;

    & > * {
      display: flex;
      justify-content: center;

      & > * + *::before {
        content: "／";
        color: var(--semantic-color-border-default);
        padding-inline: var(--semantic-spacing-1);
      }
    }
  }

  .p-schedule__name {
    font-size: .5em;
  }

  .p-schedule__session--am,
  .p-schedule__session--pm {
    min-height: 3.5em;
  }
}

/**
 * p-schedule__session の状態修飾クラス
 *
 * --available : 選択可能（期間内・空きあり）      ○ 青系
 * --full      : 選択不可（期間内・定員）           × 赤系
 * --past      : 選択不可（過去の日付 ※期間外）    ○ グレー
 * --closed    : 選択不可（営業日ではないもの）     ‐ 薄グレー
 *
 * <td class="p-schedule__session--am --available"> … 空きあり
 * <td class="p-schedule__session--am --full">      … 定員
 * <td class="p-schedule__session--am --past">      … 過去日
 * <td class="p-schedule__session--am --closed">    … 非営業日
 */

.p-schedule__button {
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  gap: .25em;
  width: 100%;
  height: 100%;
  min-height: 2.75em;
  padding: .5em .25em;
  border: 0 none;
  font-size: 1.5em;
  font-weight: bold;
  text-align: center;
  line-height: 1;
  cursor: pointer;
  transition: opacity .15s;

  &::before {
    display: block;
    font-size: .5em;
    line-height: .75;
    text-align: center;
    color: var(--semantic-color-text-body);
  }

  .p-schedule__session--am.--available &::before,
  .p-schedule__session--am.--full &::before {
    content: "午前";
  }

  .p-schedule__session--pm.--available &::before,
  .p-schedule__session--pm.--full &::before {
    content: "午後";
  }

  .p-schedule__session--am.--available &::after,
  .p-schedule__session--pm.--available &::after {
    content: "";
    display: block;
    width:  .8em;
    height: .8em;
    margin: .1em;
    border-radius: 50%;
    border: 3px solid currentColor;
  }

  /* ── 選択可能（期間内・空きあり） ── */
  .--available & {
    background-color: var(--semantic-color-status-success-bg);
    color: var(--semantic-color-status-success);

    &:hover {
      background-color: var(--semantic-color-status-success-border);
      &, &::before {
        color: var(--semantic-color-status-success);
      }
    }
    &:active {
      opacity: .75;
    }
  }

  /* ── 選択不可（期間内・定員） ── */
  .--full & {
    background-color: var(--semantic-color-status-error-bg);
    color: var(--semantic-color-status-error);
    cursor: not-allowed;
    pointer-events: none;
  }

  /* ── 選択不可（過去の日付 ※期間外） ── */
  .--past & {
    background-color: var(--semantic-color-bg-disabled);
    color: var(--semantic-color-text-tertiary);
    cursor: default;
    pointer-events: none;
  }

  /* ── 選択不可（営業日ではないもの） ── */
  .--closed & {
    background-color: var(--semantic-color-bg-disabled);
    color: var(--semantic-color-text-body);
    cursor: default;
    pointer-events: none;
  }
}

.p-schedule__button--status {
  font-weight: bold;

  .p-schedule__session--am.--available &,
  .p-schedule__session--pm.--available & {
    display: none;
  }

}

@media (min-width: 768px) {
  .p-schedule__button {
    min-height: 2em;
    flex-direction: row;
    font-size: 1.75em;

    &::before {
      width: 1em;
      line-height: 1;
    }
  }
}


/**
 * how to reservation
 */
.p-howto {
  margin-block-start: var(--semantic-spacing-12);

  & .c-paragraph > * + * {
    margin-block-start: 1.5em;
  }
}

/* -----------------------------------------------------------
   p-information
   ----------------------------------------------------------- */
.p-information {
  position: relative;
  padding-block: var(--semantic-spacing-12);
}

.p-information:has(.p-information__item) {
  background-image: linear-gradient(0deg, var(--semantic-color-brand-primary-active) 0%, var(--semantic-color-brand-primary-active) calc(100% - 300px), transparent 100%);
}

.p-information__item {
  padding: var(--semantic-spacing-4) var(--semantic-layout-padding-x) var(--semantic-spacing-8);
  background-color: var(--semantic-color-bg-primary);
  border-radius: var(--component-card-border-radius);
  box-shadow: var(--semantic-shadow-lg);

  & + & {
    margin-block-start: var(--semantic-spacing-8);
  }
}

.p-information__title {
  width: 100%;
  padding-block-end: var(--semantic-spacing-2);
  border-block-end: 1px dotted currentColor;
  color: var(--semantic-color-text-secondary);
}

.p-information__heading {
  font-size: var(--semantic-font-size-lg);
  letter-spacing: var(--semantic-typography-letter-spacing-wide);
}

.p-information__date {
  margin-block-start: .5em;
  font-size: var(--semantic-font-size-sm);
  line-height: var(--semantic-typography-body-small-line-height);
  color: var(--semantic-color-text-notes);
}

.p-information__body {
  display: flow-root;
  margin-block-start: 1.25em;

  & * {
    letter-spacing: var(--semantic-typography-letter-spacing-wider);
    line-height: var(--semantic-typography-line-height-loose);
  }
}

.p-information__image {
  width: 100%;
  margin-inline: auto;
  margin-block-end: 1.25em;
  border: 1px solid var(--semantic-color-border-default);
  text-align: center;

  & a {
    display: inline-block;
    line-height: 1;
    vertical-align: bottom;
  }

  & img {
    line-height: 1;
    vertical-align: bottom;
  }
}

@media (max-width: 767.98px) {
  .p-information__item {
    border-block-start: 1px solid var(--semantic-color-border-focus);
    border-block-end:   1px solid var(--semantic-color-border-darken);
  }
}
@media (min-width: 768px) {
  .p-information:has(.p-information__item) {
    min-height: 320px;
    background-image: linear-gradient(0deg, var(--semantic-color-brand-primary-active) 0%, var(--semantic-color-brand-primary-active) calc(100% - 240px), transparent 100%);
    &::before {
      content: "";
      z-index: -1;
      position: absolute;
      top: -320px;
      left: -100%;
      right: -100%;
      margin: auto;
      display: block;
      width: 100%;
      min-height: 600px;
      background-image: url(../images/top-main__bg.svg);
      mask-image: linear-gradient(to bottom, transparent 0%, #000 25%);
      background-size: 2560px auto;
      background-position: 60% top;
    }
  }

  .p-information__item {
    padding: var(--semantic-spacing-6) var(--semantic-spacing-8);

    & + & {
      margin-block-start: var(--semantic-spacing-16);
    }
  }

  .p-information__heading {
    font-size: var(--semantic-font-size-3xl);
  }

  .p-information__image {
    float: right;
    max-width: 320px;
    margin-inline-start: 1.25em;
  }
}


/* -----------------------------------------------------------
   p-termsofuse
   ----------------------------------------------------------- */
.p-termsofuse {
  margin-block-start: var(--semantic-spacing-12);

  --semantic-list-type: decimal;

  & ul, & ol, & li {
    list-style: unset;
    margin: 0;
    padding: 0;
  }

  & ul > li,
  & ol > li {
    margin-inline-start: 1.5em;
  }

  & ol > li {
    list-style-position: outside;
    list-style-type: var(--semantic-list-type);
  }
}

.p-termsofuse__inner .c-paragraph > *:first-of-type {
  margin-block-start: .333em;
}
.p-termsofuse__inner .c-paragraph > * + * {
  margin-block-start: .666em;
}

@media (min-width: 768px) {
  .p-termsofuse {
    margin-block-start: var(--semantic-spacing-16);
  }
}


/* -----------------------------------------------------------
   p-contact / p-reservation
   ----------------------------------------------------------- */
.p-form {
  margin-block-start: var(--semantic-spacing-12);
}

/* completion */
.p-form--completion {
  margin-block: var(--semantic-spacing-12);
}

/* error */
.p-form--error {
  margin-block: var(--semantic-spacing-12);

  & [class*="c-heading"] {
    color: var(--component-alert-error-text);
  }

  & .c-title__row::after {
    color: var(--component-alert-warning-text);
  }
  & .c-title__row::before {
    background-color: var(--component-alert-error-text);
  }

  & .c-paragraph {
    font-weight: var(--semantic-typography-weight-bold);
    line-height: var(--semantic-typography-line-height-loose);
    color: var(--component-alert-error-text);
  }
}

@media (max-width: 767.98px) {
  .p-form {
    padding-block-end: var(--semantic-spacing-16);
  }

  .p-form__area {
    position: relative;
    width: auto;
    margin-block-start: var(--semantic-spacing-12);
    margin-inline: calc(var(--semantic-layout-padding-x) * -1);
    padding-inline: calc(var(--semantic-layout-padding-x) * 1);
    background-image: linear-gradient(0deg, var(--semantic-color-bg-primary) 0%, var(--semantic-color-brand-primary-active) 10%, var(--semantic-color-brand-primary-active) calc(100% - 15vw), transparent calc(100% - 5vw));

    &::before {
      content: "";
      z-index: -1;
      position: absolute;
      top: -40vw;
      left: -100%;
      right: -100%;
      margin: auto;
      display: block;
      width: 100%;
      min-height: 100vw;
      background-image: url(../images/top-main__bg.svg);
      mask-image: linear-gradient(to bottom, transparent 0%, #000 25%);
      background-size: calc(960 * var(--vw-scale));
      background-position: 40% top;
    }
  }

  .p-form__inner {
    padding-block: var(--semantic-layout-padding-x) var(--semantic-spacing-4);
    border-radius: var(--semantic-border-radius-sm);
    background-color: var(--semantic-color-bg-primary);
    box-shadow: var(--semantic-shadow-lg);
  }
}
@media (min-width: 768px) {
  .p-form {
    padding-block-end: var(--semantic-spacing-12);
    background-image: linear-gradient(0deg, var(--semantic-color-bg-primary) 0%, var(--semantic-color-brand-primary-active) 192px, var(--semantic-color-brand-primary-active) calc(100% - 640px), transparent calc(100% - 320px));

    &::before {
      content: "";
      z-index: -1;
      position: absolute;
      top: 192px;
      left: -100%;
      right: -100%;
      margin: auto;
      display: block;
      width: 100%;
      min-height: 720px;
      background-image: url(../images/top-main__bg.svg);
      mask-image: linear-gradient(to bottom, transparent 0%, #000 25%);
      background-size: 2560px auto;
      background-position: 60% top;
    }

    .page-reservation &::before {
      top: 32px;
      min-height: 1080px;
    }
  }

  .p-form__area:not(.page-reservation *) {
    padding-block: var(--semantic-spacing-12);
  }

  .p-form__inner {
    padding-block-end: var(--semantic-spacing-8);
    border-radius: var(--semantic-border-radius-md);
    background-color: var(--semantic-color-bg-primary);
    box-shadow: var(--semantic-shadow-lg);
  }
}
