/* ========================================
   Layout Tokens
======================================== */

:root {
  --gutter: 16px;
  --gutter-pc: 32px;
  --container-max: 1200px;
  --hamburger-line: #040000;
}

#message,
#vision,
#policy,
#access,
#philosophy,
#profile,
#history {
  scroll-margin-top: 200px;
}

@media (max-width: 1024px) {
  #message,
  #vision,
  #policy,
  #access,
  #philosophy,
  #profile,
  #history {
    scroll-margin-top: 120px;
  }
}

/* ========================================
   Container
======================================== */

.l-container,
.l-container-wide {
  width: 100%;
  margin-inline: auto;
  padding-inline: var(--gutter);
}

@media (min-width: 1024px) {
  .l-container {
    max-width: var(--container-max);
    padding-inline: var(--gutter-pc);
  }

  .l-container-wide {
    padding-inline: var(--gutter-pc);
  }
}

/* ========================================
   Header
======================================== */

.header {
  position: fixed;
  inset: 0 0 auto 0;
  z-index: 100;
  color: var(--color-black);
  --hamburger-line: #040000;
  background: rgba(255, 255, 255, 0.8);
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(8px);
  transition:
    color 0.3s ease,
    background 0.3s ease,
    backdrop-filter 0.3s ease,
    -webkit-backdrop-filter 0.3s ease;
}

.header.is-top {
  color: var(--color-white);
  --hamburger-line: #ffffff;
  background: transparent;
  backdrop-filter: unset;
  -webkit-backdrop-filter: unset;
}

.header a {
  color: inherit;
}

.header.is-top a {
  color: inherit;
}

/* サブメニュー表示中は通常ヘッダーを白ベタに */
.header.is-submenu-open {
  background: #fff;
  color: var(--color-black);
  backdrop-filter: none;
  -webkit-backdrop-filter: none;
  border-bottom: 1px solid #d9d9d9;
}

.header__submenu {
  top: 100%;
  right: 0;
  border-top: none;
}

.header__inner {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 10px;
  padding: 12px var(--gutter);
  position: relative;
}

/* ========================================
   Branding
======================================== */

.header__left {
  display: flex;
  flex-direction: column;
  gap: var(--header-left-gap);
}

.header__branding {
  display: flex;
  align-items: center;
  gap: 16px;
  text-decoration: none;
  color: inherit;
}

.header__sublogo {
  width: 80px;
  flex-shrink: 0;
}

.header__branding-text {
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.header__tagline {
  font-size: 12px;
  line-height: 1.4;
  letter-spacing: 0.4em;
  text-align: center;
}

.header__logo {
  position: relative;
  display: inline-block;
}

.header__logo-img {
  display: block;
  width: auto;
  height: var(--header-logo-h);
  transition: opacity 0.3s ease;
}

.header__logo-img--black {
  position: absolute;
  inset: 0;
  opacity: 1;
}

.header__logo-img--white {
  opacity: 0;
}

.header.is-top .header__logo-img--white {
  opacity: 1;
}

.header.is-top .header__logo-img--black {
  opacity: 0;
}

/* is-top でもサブメニュー表示時は黒ロゴに戻す */
.header.is-top.is-submenu-open .header__logo-img--white {
  opacity: 0;
}

.header.is-top.is-submenu-open .header__logo-img--black {
  opacity: 1;
}

/* ========================================
   Navigation
======================================== */

.header__nav {
  position: relative;
  z-index: 2;
}

.header__menu {
  display: none;
  align-items: center;
  gap: 28px;
}

.header__item {
  position: relative;
}

.header__item--has-sub {
  position: relative;
}

.header__menu-link {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  text-decoration: none;
  line-height: 1;
  transition: opacity 0.3s ease;
}

.header__menu-link:hover {
  opacity: 0.7;
}

.header__menu-link--has-sub {
  position: relative;
}

.header__menu-arrow {
  position: relative;
  width: 10px;
  height: 10px;
  flex-shrink: 0;
}

.header__menu-arrow .arrow {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  transition: opacity 0.3s ease;
}

.arrow--black {
  opacity: 1;
}

.arrow--white {
  opacity: 0;
}

.header.is-top:not(.is-submenu-open) .arrow--black {
  opacity: 0;
}

.header.is-top:not(.is-submenu-open) .arrow--white {
  opacity: 1;
}

@media (min-width: 1024px) {
  .header__menu {
    display: flex;
    gap: var(--header-menu-gap);
  }

  .header__menu a {
    font-size: var(--font-size-header-nav);
    letter-spacing: var(--ls-header-nav);
    text-decoration: none;
  }
}

/* ========================================
   Submenu
======================================== */

.header__submenu {
  position: absolute;
  top: calc(100% + 38px);
  left: 0;
  right: auto;
  z-index: 3;
  width: 718px;
  padding: 34px 38px 30px;
  box-sizing: border-box;
  background: #fff;
  border-top: 1px solid #d9d9d9;
  border-radius: 0 0 0 20px;
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transition:
    opacity 0.3s ease,
    visibility 0.3s ease;
}

.header__submenu::before {
  content: "";
  position: absolute;
  left: 0;
  top: -38px;
  width: 100%;
  height: 38px;
  background: transparent;
}

.header__item--has-sub:hover .header__submenu {
  opacity: 1;
  visibility: visible;
  pointer-events: auto;
}

.header__submenu-list {
  display: grid;
  grid-template-columns: repeat(4, max-content);
  column-gap: 56px;
  row-gap: 26px;
  justify-content: start;

  margin: 0;
  padding: 0;
  list-style: none;
}

.header__submenu-list li {
  margin: 0;
  padding: 0;
}

.header__submenu-list a {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  color: #000;
  text-decoration: none;
  font-size: 16px;
  line-height: 1;
  white-space: nowrap;
  transition: opacity 0.3s ease;
}

.header__submenu-list a:hover {
  opacity: 0.7;
}

.header__submenu-arrow {
  display: block;
  width: 10px;
  height: auto;
  flex-shrink: 0;
}

/* ========================================
   Overlay
======================================== */

.header__overlay {
  position: fixed;
  inset: 0;
  z-index: 50;
  background: rgba(0, 0, 0, 0.4);
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transition:
    opacity 0.3s ease,
    visibility 0.3s ease;
}

.header__overlay.is-active {
  opacity: 1;
  visibility: visible;
  pointer-events: auto;
}

@media (min-width: 1024px) {
  .header__inner {
    align-items: center;
    padding: var(--header-pad);
    padding-inline: var(--gutter-pc);
  }

  .header__tagline {
    font-size: 16px;
    letter-spacing: 0.25em;
  }

  .header__logo img {
    height: var(--header-logo-h);
  }

  .header__menu {
    display: flex;
    gap: var(--header-menu-gap);
  }

  .header__menu a {
    font-size: var(--font-size-header-nav);
    letter-spacing: var(--ls-header-nav);
    text-decoration: none;
  }
}

/* ========================================
   SP Menu Toggle
======================================== */

.header__toggle {
  position: relative;
  z-index: 2100;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 44px;
  height: 44px;
  padding: 0;
  background: transparent;
  border: 0;
  cursor: pointer;
  appearance: none;
  -webkit-appearance: none;
}

@media (min-width: 1024px) {
  .header__toggle {
    display: none;
  }
}

html.is-menu-open .header__toggle {
  z-index: 2201;
}

/* メニュー展開中はヘッダーごと前面へ */

html.is-menu-open .header,
html.is-menu-open .header a {
  color: #040000;
}

html.is-menu-open .header__toggle {
  z-index: 2102;
}

/* 3本線本体 */
.header__toggle-icon {
  position: relative;
  display: block;
  width: 25px;
  height: 2px;
  background: var(--hamburger-line);
  border-radius: 999px;
  transition: background 0.3s ease;
}

.header__toggle-icon::before,
.header__toggle-icon::after {
  content: "";
  position: absolute;
  left: 0;
  width: 25px;
  height: 2px;
  background: var(--hamburger-line);
  border-radius: 999px;
  transition:
    top 0.3s ease,
    transform 0.3s ease,
    background 0.3s ease,
    opacity 0.2s ease;
}

.header__toggle-icon::before {
  top: -8px;
}

/* ========================================
   SP Menu Toggle
======================================== */

.header__toggle {
  position: fixed;
  top: 20px;
  right: var(--gutter);
  z-index: 2102;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 44px;
  height: 44px;
  padding: 0;
  background: transparent;
  border: 0;
  cursor: pointer;
  appearance: none;
  -webkit-appearance: none;
}

@media (min-width: 1024px) {
  .header__toggle {
    display: none;
  }
}

.header__toggle-icon {
  position: relative;
  display: block;
  width: 25px;
  height: 2px;
  background: var(--hamburger-line, #040000);
  border-radius: 999px;
  transition: background 0.3s ease;
}

.header__toggle-icon::before,
.header__toggle-icon::after {
  content: "";
  position: absolute;
  left: 0;
  width: 25px;
  height: 2px;
  background: var(--hamburger-line, #040000);
  border-radius: 999px;
  transition:
    top 0.3s ease,
    transform 0.3s ease,
    background 0.3s ease,
    opacity 0.2s ease;
}

.header__toggle-icon::before {
  top: -8px;
}

.header__toggle-icon::after {
  top: 8px;
}

html.is-menu-open .header__toggle-icon {
  background: transparent;
}

html.is-menu-open .header__toggle-icon::before,
html.is-menu-open .header__toggle-icon::after {
  top: 0;
  background: #040000;
}

html.is-menu-open .header__toggle-icon::before {
  transform: rotate(45deg);
}

html.is-menu-open .header__toggle-icon::after {
  transform: rotate(-45deg);
}

html.is-menu-open,
html.is-menu-open body {
  overflow: hidden;
}

html:not(.is-menu-open) .header.is-top + .header__toggle .header__toggle-icon,
html:not(.is-menu-open)
  .header.is-top
  + .header__toggle
  .header__toggle-icon::before,
html:not(.is-menu-open)
  .header.is-top
  + .header__toggle
  .header__toggle-icon::after {
  background: #ffffff;
}

html.is-menu-open .header__toggle .header__toggle-icon::before,
html.is-menu-open .header__toggle .header__toggle-icon::after {
  background: #040000;
}

/* ========================================
   Header Drawer
======================================== */

.header__drawer {
  position: fixed;
  inset: 0;
  z-index: 2000;
  color: #040000;
  background: #fff;
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transition:
    opacity 0.35s ease,
    visibility 0.35s ease;
}

html.is-menu-open .header__drawer {
  opacity: 1;
  visibility: visible;
  pointer-events: auto;
}

.header__drawer .header__logo {
  display: inline-block;
  line-height: 0;
}

.header__drawer .header__logo img {
  display: block;
  width: auto;
  max-width: none;
  height: var(--header-logo-h);
}

.header__drawer .header__logo-img--white {
  display: none;
}

.header__drawer .header__logo-img--black {
  position: static;
  opacity: 1;
}

.header__drawer-inner {
  display: flex;
  flex-direction: column;
  height: 100dvh;
  padding: 12px var(--gutter) 0;
  overflow: hidden;
}

html.is-menu-open .header,
html.is-menu-open .header a {
  color: #040000;
}

.header__drawer-head {
  flex-shrink: 0;
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 16px;
  padding-bottom: 30px;
  border-bottom: 1px solid rgba(0, 0, 0, 0.15);
}

.header__drawer-nav {
  flex: 1 1 auto;
  min-height: 0;
  overflow-y: auto;
  overflow-x: hidden;
  -webkit-overflow-scrolling: touch;
  padding-bottom: 120px;
}

.header__drawer-list {
  display: grid;
  gap: 0;
  margin: 0;
}

.header__drawer-item {
  border-bottom: 1px solid rgba(0, 0, 0, 0.12);
}

.header__drawer-item > a {
  display: block;
  padding: 12px 0;
  font-size: 14px;
  letter-spacing: 0.12em;
}

.header__drawer-accordion {
  display: flex;
  align-items: center;
  justify-content: space-between;
  width: 100%;
  padding: 12px 0;
  border: 0;
  background: transparent;
  font-size: 14px;
  letter-spacing: 0.12em;
  color: inherit;
  text-align: left;
  cursor: pointer;
  appearance: none;
}

.header__drawer-accordion-label {
  display: block;
}

.header__drawer-accordion-icon {
  display: block;
  flex: 0 0 auto;
  width: 10px;
  height: auto;
  margin-left: 12px;
  margin-right: 8px;
  transform: rotate(0deg);
  transition: transform 0.3s ease;
}

.header__drawer-accordion[aria-expanded="true"] .header__drawer-accordion-icon {
  transform: rotate(-180deg);
}

.header__drawer-submenu {
  box-sizing: border-box;
  height: 0;
  padding: 0;
  overflow: hidden;
  opacity: 0;
  border-top: 0 solid rgba(0, 0, 0, 0);
  transition:
    height 0.5s ease,
    opacity 0.35s ease,
    padding 0.5s ease,
    border-color 0.5s ease;
}

.header__drawer-submenu.is-open {
  opacity: 1;
  border-top: 1px solid rgba(0, 0, 0, 0.12);
}

.header__drawer-submenu-list {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  column-gap: 30px;
  margin: 0;
}

.header__drawer-submenu-list li {
  min-width: 0;
}

.header__drawer-submenu-list a {
  display: flex;
  align-items: center;
  justify-content: space-between;
  min-height: 20px;
  font-size: 12px;
  letter-spacing: 0.08em;
  line-height: 1.6;
  gap: 8px;
  padding: 12px 0;
}

.header__drawer-submenu-list a span {
  min-width: 0;
}

.header__drawer-submenu-arrow {
  display: block;
  flex: 0 0 auto;
  width: 10px;
  height: auto;
  margin-right: 8px;
}

.header__drawer-actions {
  padding-top: 24px;
  background: transparent;
}

.header__drawer-contact {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 180px;
  height: 44px;
  border: 1px solid #040000;
  font-size: 14px;
  letter-spacing: 0.14em;
}

.header__drawer-anniv {
  position: fixed;
  right: 0;
  bottom: 0;
  left: 0;
  z-index: 300;
  display: grid;
  justify-items: center;
  width: 100%;
  pointer-events: none;
}

.header__drawer-banner {
  display: block;
  width: min(92vw, 560px);
  pointer-events: auto;
}

.header__drawer-anniv img {
  display: block;
  width: 100%;
  height: auto;
}

html.is-menu-open #js-side-banner-anniversary-sp {
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
}

/* ========================================
   Header Drawer / Tablet Adjust
======================================== */

@media screen and (min-width: 768px) {
  .header__drawer-inner {
    padding-top: 20px;
  }

  .header__drawer-head {
    padding-bottom: 24px;
  }

  .header__drawer-nav {
    padding-bottom: 110px;
  }

  .header__drawer-actions {
    padding-top: 16px;
  }

  .header__drawer-contact {
    width: 160px;
    height: 40px;
    font-size: 13px;
    letter-spacing: 0.12em;
  }

  .header__drawer-banner {
    width: min(460px, calc(100% - 32px));
  }
}

/* ========================================
   Footer
======================================== */

.footer {
  color: var(--color-text);
}

.footer__content {
  background: var(--footer-bg);
  border-bottom: 1px solid var(--color-black);
}

.footer__inner {
  padding-top: var(--footer-inner-pt);
  padding-bottom: var(--space-2xl);
}

.footer__banner {
  display: block;
  width: 100%;
  max-width: 520px;
  margin-inline: auto;
  margin-bottom: var(--footer-banner-mb);
}

.footer__banner img {
  display: block;
  width: 100%;
  height: auto;
}

.footer__grid {
  display: flex;
  flex-direction: column-reverse;
  align-items: stretch;
  gap: 70px;
}

.footer__logo {
  display: inline-block;
  width: var(--footer-logo-w);
  margin-bottom: 20px;
}

.footer__logo img {
  display: block;
  width: 100%;
  height: auto;
}

.footer__info {
  font-size: var(--font-size-footer-text);
  line-height: var(--lh-footer);
  letter-spacing: var(--ls-footer-info);
}

.footer__factories {
  display: grid;
  grid-template-columns: 1fr;
  gap: 30px;
  margin-bottom: 30px;
}

.footer__factory {
  display: grid;
  grid-template-columns: 1fr;
  gap: 8px;
}

.footer__factory-left,
.footer__factory-right,
.footer__nav {
  width: 100%;
}

.footer__contact {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: var(--footer-contact-w);
  max-width: none;
  height: var(--footer-contact-h);
  border: 1px solid var(--color-black);
}

.footer__contact > span {
  font-size: var(--font-size-footer-btn);
  line-height: 1;
  transform: none;
}

.footer__copyright {
  display: grid;
  place-items: center;
  height: var(--footer-copyright-h);
  background: var(--footer-bg);
}

.footer__copyright small {
  font-size: var(--font-size-copyright);
  line-height: 1;
  letter-spacing: var(--ls-copyright);
}

/* ========================================
   Footer Menu
======================================== */

.footer__menu {
  display: grid;
  grid-template-columns: auto auto;
  grid-template-rows: repeat(3, auto);
  grid-auto-flow: column;
  justify-content: start;
  column-gap: 60px;
  row-gap: 12px;
  margin-bottom: 36px;
}

.footer__menu a {
  display: inline-block;
  font-size: var(--font-size-footer-nav);
  line-height: var(--lh-footer);
  letter-spacing: var(--ls-footer-nav);
}

@media (min-width: 768px) and (max-width: 1023px) {
  .footer__grid {
    display: flex;
    justify-content: space-between;
    flex-direction: unset;
    width: min(100% - (var(--gutter) * 2), var(--content));
    margin-inline: auto;
  }

  .footer__menu {
    grid-template-columns: 1fr;
    grid-template-rows: none;
    grid-auto-flow: row;
    column-gap: 0;
    row-gap: 12px;
    margin-bottom: 15px;
  }

  .footer__factory-left,
  .footer__factory-right,
  .footer__nav {
    width: auto;
  }
}

@media (min-width: 1024px) {
  .footer__inner {
    padding-inline: var(--gutter-pc);
  }

  .footer__banner {
    width: var(--footer-banner-w);
    max-width: 100%;
    margin-bottom: var(--footer-banner-mb);
  }

  .footer__grid {
    flex-direction: row;
    justify-content: space-between;
    align-items: flex-start;
    gap: var(--footer-grid-gap);
  }

  .footer__logo {
    width: var(--footer-logo-w);
    margin-bottom: var(--footer-logo-mb);
  }

  .footer__info {
    font-size: var(--font-size-footer-info);
  }

  .footer__factories {
    grid-template-columns: 1fr 1fr;
    gap: var(--footer-factories-gap);
    margin-bottom: var(--footer-factories-gap);
  }

  .footer__factory {
    display: flex;
    gap: var(--footer-factory-gap);
  }

  .footer__factory-left {
    flex-shrink: 0;
    width: 100%;
    max-width: var(--footer-factory-left-w);
  }

  .footer__factory-right {
    flex-shrink: 0;
    width: 100%;
    max-width: var(--footer-factory-right-w);
  }

  .footer__nav {
    flex-shrink: 0;
    width: var(--footer-nav-w);
  }

  .footer__menu {
    grid-template-columns: 1fr;
    grid-auto-flow: row;
    column-gap: 0;
    row-gap: 0;
    margin-bottom: var(--footer-menu-mb);
  }

  .footer__contact {
    max-width: none;
  }
}

/* ========================================
   Side Banner Anniversary
======================================== */

.c-side-banner-anniversary--pc {
  position: fixed;
  right: 0;
  bottom: var(--side-anniv-bottom);
  z-index: 40;
  display: none;
  width: var(--side-anniv-w);
  pointer-events: none;
  transform: translateX(var(--side-anniv-hide-x));
  transition:
    transform 1.6s cubic-bezier(0.16, 1, 0.3, 1),
    opacity 0.6s ease;
  will-change: transform;
}

@media (min-width: 1024px) {
  .c-side-banner-anniversary--pc {
    display: block;
  }
}

.c-side-banner-anniversary--pc:hover {
  opacity: 0.8;
}

html.is-side-anniv-show .c-side-banner-anniversary--pc {
  pointer-events: auto;
  transform: translateX(var(--side-anniv-show-x));
}

html.is-side-anniv-hide .c-side-banner-anniversary--pc {
  pointer-events: none;
  transform: translateX(var(--side-anniv-hide-x));
}

.c-side-banner-anniversary--pc img {
  display: block;
  width: 100%;
  height: auto;
}

.c-side-banner-anniversary--sp {
  position: fixed;
  right: 0;
  left: 0;
  bottom: calc(env(safe-area-inset-bottom) + var(--ios-bottom-offset, 0px));
  display: grid;
  align-items: end;
  justify-items: center;
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.3s ease;
}

html.is-side-anniv-sp-show .c-side-banner-anniversary--sp {
  opacity: 1;
  pointer-events: auto;
}

html.is-side-anniv-sp-hide .c-side-banner-anniversary--sp {
  opacity: 0;
  pointer-events: none;
}

.c-side-banner-anniversary--sp img {
  display: block;
  width: min(92vw, 560px);
  height: auto;
}

@media screen and (min-width: 768px) {
  .c-side-banner-anniversary--sp img {
    display: block;
    width: min(460px, calc(100% - 32px));
    pointer-events: auto;
  }
}

/* ========================================
   Page Wipe
======================================== */

.c-pagewipe {
  position: fixed;
  inset: 0;
  z-index: 10000;
  pointer-events: none;
  opacity: 0;
  will-change: opacity;
}

.c-pagewipe__white,
.c-pagewipe__clear {
  position: absolute;
  inset: 0;
  will-change: transform;
}

.c-pagewipe__white {
  background: #f4f8f8;
}

.c-pagewipe__clear {
  background: transparent;
}

html.is-pagewipe-pending #js-app {
  opacity: 0;
  pointer-events: none;
}

#js-app {
  opacity: 1;
}

/* ========================================
   MV
======================================== */

.mv {
  position: relative;
  height: 100svh;
  min-height: 560px;
  overflow: hidden;
  background: #000;
}

.mv__zoom {
  position: absolute;
  inset: 0;
}

.mv__zoom::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 1;
  background: #86c4c7;
  opacity: 0.1;
  pointer-events: none;
}

.mv__layer {
  position: absolute;
  inset: 0;
  z-index: 0;
  background-position: center;
  background-size: cover;
  background-repeat: no-repeat;
  opacity: 0;
  transform: scale(1);
  will-change: opacity, transform;
  transition-property: opacity, transform;
  transition-timing-function: linear, linear;
}

.mv__layer.is-show {
  opacity: 1;
}

.mv__copy {
  position: absolute;
  bottom: 40px;
  left: 40px;
  z-index: 2;
  margin: 0;
  color: #fff;
  font-family: var(--font-ja);
  font-size: var(--font-size-kv);
  line-height: var(--lh-tight);
  letter-spacing: var(--ls-kv);
  text-shadow: 0 0 8px rgba(102, 102, 102, 0.8);
}

.mv__copy img {
  width: 100%;
  height: auto;
}

@media (max-width: 1023px) {
  .mv__copy {
    top: 50.2%;
    right: 20px;
    bottom: auto;
    left: auto;
    width: 46.154vw;
    transform: translateY(-50%);
  }

  .mv__zoom {
    display: none;
  }
}

.mv__split {
  position: absolute;
  inset: 0;
  display: grid;
  grid-template-rows: 1fr 1fr;
}

.mv__half {
  position: relative;
  overflow: hidden;
}

.mv__half::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 1;
  background: #86c4c7;
  opacity: 0.1;
  pointer-events: none;
}

.mv__half .mv__layer {
  position: absolute;
  inset: 0;
  z-index: 0;
  background-position: center;
  background-size: cover;
  background-repeat: no-repeat;
  opacity: 0;
  transform: scale(1);
  will-change: opacity, transform;
  transition-property: opacity, transform;
  transition-timing-function: linear, linear;
}

.mv__half .mv__layer.is-show {
  opacity: 1;
}

@media (min-width: 1024px) {
  .mv__split {
    display: none;
  }
}

/* ========================================
   Topics List
======================================== */

.p-topics__list {
  border-top: 1px solid rgba(0, 0, 0, 0.15);
}

.p-topics__item {
  display: grid;
  grid-template-columns: 1fr 10px;
  grid-template-rows: auto auto;
  column-gap: 16px;
  row-gap: 8px;
  padding: 18px 0;
  color: inherit;
  text-decoration: none;
  border-bottom: var(--border-hairline);
}

.p-topics__head {
  display: flex;
  grid-column: 1;
  grid-row: 1;
  align-items: center;
  gap: 12px;
  min-width: 0;
}

.p-topics__cat {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: fit-content;
  min-width: 92px;
  height: 28px;
  padding-inline: 10px;
  color: #ffffff;
  font-size: var(--font-size-sm);
  line-height: 1;
  white-space: nowrap;
  background: #a3c4c7;
}

.p-topics__cat.is-cat-anniversary-pj {
  color: #666666;
  background: #dedf89;
}

.p-topics__date {
  font-size: var(--font-size-news-date);
  letter-spacing: var(--ls-zero);
  white-space: nowrap;
}

.p-topics__title {
  display: -webkit-box;
  grid-column: 1;
  grid-row: 2;
  min-width: 0;
  overflow: hidden;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
}

.p-topics__arrow {
  position: static !important;
  top: auto !important;
  right: auto !important;
  display: block;
  grid-column: 2;
  grid-row: 2;
  align-self: center;
  justify-self: end;
  width: 10px;
  height: 10px;
  transform: none !important;
}

.p-topics__arrow.c-arrow-hover::after {
  top: auto;
}

.p-topics__actions {
  margin-top: 24px;
}

@media (min-width: 768px) and (max-width: 1023px) {
  .p-topics__title {
    display: block;
    overflow: hidden;
    white-space: nowrap;
    text-overflow: ellipsis;
  }
}

@media (min-width: 1024px) {
  .p-topics__item {
    position: relative;
    display: flex;
    align-items: center;
    gap: 18px;
    padding: 44px 30px 44px 0;
  }

  .p-topics__head {
    flex: 0 0 auto;
    gap: 18px;
    min-width: auto;
    white-space: nowrap;
  }

  .p-topics__cat {
    width: 106px;
    height: 32px;
    padding-inline: 0;
  }

  .p-topics__title {
    flex: 1 1 auto;
    min-width: 0;
    overflow: hidden;
    white-space: nowrap;
    text-overflow: ellipsis;
  }

  .p-topics__arrow {
    position: absolute;
    top: 50%;
    right: 30px;
    transform: translateY(-50%);
  }

  .p-topics__arrow.c-arrow-hover::after {
    top: 50%;
  }

  .p-topics__actions {
    margin-top: 44px;
  }
}

/* ========================================
   404
======================================== */

.p-404__lead {
  font-size: var(--font-size-body);
}

.p-404__actions {
  margin-top: var(--space-lg);
}
