@charset "UTF-8";
/* ========================================
   variables
======================================== */
/*----------------------------------------
	@media breakpoint
----------------------------------------*/
/* ======================================== 
   Utilities
======================================== */
/* ----------------------------------------
   Visibility / スクリーンリーダー
---------------------------------------- */
.u-visuallyHidden {
  position: absolute !important;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  white-space: nowrap;
  border: 0;
  -webkit-clip-path: inset(50%);
          clip-path: inset(50%);
  clip: rect(0 0 0 0);
}

/* ----------------------------------------
   Text Utilities
---------------------------------------- */
.u-red-text {
  color: #EA5532;
  font-weight: 600;
}

.u-muted {
  color: rgba(0, 0, 0, 0.6);
  font-size: 0.9em;
}

.u-fw-bold {
  font-weight: 650;
}

.u-nowrap {
  white-space: nowrap;
}

.u-hang {
  -webkit-padding-start: 1em;
          padding-inline-start: 1em;
  text-indent: -1em;
}

/* ----------------------------------------
   Display / Responsive
---------------------------------------- */
.u-br--pc {
  display: none;
}
@media screen and (min-width: 768px) {
  .u-br--pc {
    display: inline;
  }
}

.u-br--sp {
  display: inline;
}
@media screen and (min-width: 768px) {
  .u-br--sp {
    display: none;
  }
}

.u-pc-only {
  display: none;
}
@media screen and (min-width: 768px) {
  .u-pc-only {
    display: block;
  }
}

.u-pc-only-text {
  display: none;
}
@media screen and (min-width: 768px) {
  .u-pc-only-text {
    display: contents;
  }
}

/* ----------------------------------------
   Text alignment
---------------------------------------- */
.u-ta-right {
  text-align: right;
}

.u-ta-center {
  text-align: center;
}

/* ----------------------------------------
   Spacing
---------------------------------------- */
.u-mt-5, .mt5 {
  margin-top: 5px;
}

.u-mt-10, .mt10 {
  margin-top: 10px;
}

.u-mt-15, .mt15 {
  margin-top: 15px;
}

.u-mt-20, .mt20 {
  margin-top: 20px;
}

.u-mt-30, .mt30 {
  margin-top: 30px;
}

.u-mb-5, .mb5 {
  margin-bottom: 5px;
}

.u-mb-10, .mb10 {
  margin-bottom: 10px;
}

.u-mb-15, .mb15 {
  margin-bottom: 15px;
}

.u-mb-20, .mb20 {
  margin-bottom: 20px;
}

.u-mb-30, .mb30 {
  margin-bottom: 30px;
}

/* ----------------------------------------
   Mixins を利用したユーティリティ
---------------------------------------- */
.u-align-left-center {
  max-inline-size: -webkit-max-content;
  max-inline-size: -moz-max-content;
  max-inline-size: max-content;
  margin-inline: auto;
}

.u-underline, .underline {
  text-decoration: underline;
  text-underline-offset: 5px;
}

.u-text-hidden, .text-display-none {
  text-indent: 100%;
  white-space: nowrap;
  overflow: hidden;
}

/* ----------------------------------------
   Anchor / Scroll offset
   固定ヘッダーに隠れないようにするアンカー用ユーティリティ
---------------------------------------- */
.u-anchorOffset {
  scroll-margin-top: 116px;
}

@media screen and (max-width: 768px) {
  .u-anchorOffset {
    scroll-margin-top: 108px;
  }
}
/* =========================================================
   共通プレースホルダ / ミックスイン
========================================================= */
/* ページネーション：横バー風 */
.c-books--new .splide__pagination,
.c-books--upcoming .splide__pagination, .c-top-banners .splide__pagination {
  font-size: 0;
  display: flex;
  flex-wrap: wrap;
  gap: 1.2rem 0.5rem;
  justify-content: center;
  margin-top: var(--pager-mt, 1.5rem);
  text-align: center;
}
.c-books--new .splide__pagination .splide__pagination__page,
.c-books--upcoming .splide__pagination .splide__pagination__page, .c-top-banners .splide__pagination .splide__pagination__page {
  width: 1.5625rem;
  height: 5px;
  border-radius: 10px;
  cursor: pointer;
  transition: 0.8s cubic-bezier(0.2, 1, 0.2, 1);
  vertical-align: top;
  background-color: #dadada;
}
.c-books--new .splide__pagination .splide__pagination__page:focus-visible,
.c-books--upcoming .splide__pagination .splide__pagination__page:focus-visible, .c-top-banners .splide__pagination .splide__pagination__page:focus-visible {
  outline: 3px solid rgba(180, 233, 0, 0.8);
  outline-offset: 3px;
  z-index: 1;
  transition: none;
}
.c-books--new .splide__pagination .splide__pagination__page.is-active,
.c-books--upcoming .splide__pagination .splide__pagination__page.is-active, .c-top-banners .splide__pagination .splide__pagination__page.is-active {
  width: 2.8rem;
  background-color: #33adad;
}

/* “スライド化しない”時（JSが .splide に .is-static を付与） */
.c-books .is-static.splide .splide__arrows, .c-top-banners .is-static.splide .splide__arrows,
.c-books .is-static.splide .splide__pagination,
.c-top-banners .is-static.splide .splide__pagination {
  display: none;
}
.c-books .is-static.splide .splide__list, .c-top-banners .is-static.splide .splide__list {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: var(--grid-gap, 60px);
}
@media (max-width: 749px) {
  .c-books .is-static.splide .splide__list, .c-top-banners .is-static.splide .splide__list {
    grid-template-columns: repeat(2, 1fr);
    gap: 40px;
  }
}

/* 矢印（サイズと左右のオフセットを変更可能）
   ※ ページネーションを除いた“スライド域”の中央 = bottom: var(--pager-height) で算出 */
/* クリック操作時はアウトライン非表示（キーボードは残す） */
.splide :focus:not(:focus-visible) {
  outline: 0;
}

/* =========================================================
   A) トップバナー（.c-top-banners）
========================================================= */
.c-top-banners .splide {
  position: relative;
  /* 矢印の基準を安定化 */
  /* ドット5px + 余白1.5rem 相当（微調整OK） */
  --pager-height: 36px;
}
.c-top-banners .splide__slide {
  max-width: 896px;
}
.c-top-banners .splide__slide img {
  display: block;
  width: 100%;
  height: auto;
}
.c-top-banners .splide__arrow {
  display: none;
}
.c-top-banners {
  margin-top: 25px;
  margin-bottom: 50px;
}
@media screen and (max-width: 480px) {
  .c-top-banners {
    margin-inline: 10px;
  }
}

/* =========================================================
   B/C) 本スライダー共通（.c-books）
========================================================= */
.c-books .l-inner {
  max-width: 1152px;
  margin: 0 auto;
  position: relative;
  padding: 6.25rem;
}
.c-books .splide {
  position: relative;
  /* 矢印の基準に */
  z-index: 0;
}
.c-books .splide__track {
  /* PC時の余白は下の media query で */
}
.c-books {
  /* hover用に transform を効かせるため block 化 */
}
.c-books .item {
  display: block;
}
.c-books .item__tmb {
  display: flex;
  justify-content: center;
}
.c-books .item__tmb img {
  width: 100%;
}
.c-books .item__title {
  font-size: clamp(0.938rem, 0.887rem + 0.22vw, 1.063rem);
  font-weight: 500;
  margin-top: 0.35em;
  line-height: 1.5;
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: normal;
  max-height: 3em;
}
.c-books .item__bookPub, .c-books .item__price {
  font-size: clamp(0.813rem, 0.79rem + 0.11vw, 0.875rem);
  font-weight: 500;
  margin-top: 0.5em;
}
.c-books .item__magVol {
  font-size: clamp(0.813rem, 0.762rem + 0.22vw, 0.938rem);
  font-weight: 500;
  margin-top: 0;
}

/* ====== B) 新刊/近刊の調整（index用） ====== */
.c-books--new .l-inner,
.c-books--upcoming .l-inner {
  max-width: 974px;
  padding: 4rem;
  padding: 1rem 4em;
}
.c-books--new,
.c-books--upcoming {
  /* ページネーション表示あり */
}
.c-books--new .splide,
.c-books--upcoming .splide {
  --pager-height: 21px;
  /* 余白1rem + ドット5px 目安（要微調整可） */
}
.c-books--new .splide__pagination,
.c-books--upcoming .splide__pagination {
  --pager-mt: 1rem;
}
@media (max-width: 480px) {
  .c-books--new .splide__pagination,
  .c-books--upcoming .splide__pagination {
    display: none;
  }
}
.c-books--new,
.c-books--upcoming {
  /* 矢印（小さめ & 外側オフセット6px） */
}
.c-books--new .splide__arrow,
.c-books--upcoming .splide__arrow {
  position: absolute;
  z-index: 10;
  display: grid;
  place-content: center;
  width: 3.2rem;
  height: 3.2rem;
  cursor: pointer;
  border-radius: 50%;
  background-color: #33adad;
  transition: 0.8s cubic-bezier(0.2, 1, 0.2, 1);
  /* ※ */
  top: 0;
  bottom: var(--pager-height, 0);
  margin-block: auto;
}
.c-books--new .splide__arrow > svg,
.c-books--upcoming .splide__arrow > svg {
  display: none;
}
.c-books--new .splide__arrow:hover,
.c-books--upcoming .splide__arrow:hover {
  background-color: #0a9596;
}
.c-books--new .splide__arrow:disabled,
.c-books--upcoming .splide__arrow:disabled {
  pointer-events: none;
  opacity: 0;
}
.c-books--new .splide__arrow:focus-visible,
.c-books--upcoming .splide__arrow:focus-visible {
  outline: 3px solid #33adad;
  outline-offset: 3px;
  z-index: 1;
  transition: none;
}
.c-books--new .splide__arrow--prev,
.c-books--upcoming .splide__arrow--prev {
  right: calc(100% + 6px);
}
.c-books--new .splide__arrow--prev::after,
.c-books--upcoming .splide__arrow--prev::after {
  content: "";
  margin-left: 0.2rem;
  transform: rotate(-135deg);
  border: solid #fff;
  border-width: 3px 3px 0 0;
  width: 0.75rem;
  height: 0.75rem;
}
.c-books--new .splide__arrow--next,
.c-books--upcoming .splide__arrow--next {
  left: calc(100% + 6px);
}
.c-books--new .splide__arrow--next::after,
.c-books--upcoming .splide__arrow--next::after {
  content: "";
  margin-right: 0.2rem;
  transform: rotate(45deg);
  border: solid #fff;
  border-width: 3px 3px 0 0;
  width: 0.75rem;
  height: 0.75rem;
}

.c-books--upcoming {
  margin-top: 30px;
}

/* ====== C) 関連書籍の調整（detail用） ====== */
.c-books--related .l-inner {
  max-width: 1152px;
  -webkit-padding-before: 1.5rem;
          padding-block-start: 1.5rem;
  -webkit-padding-after: 4rem;
          padding-block-end: 4rem;
}
.c-books--related .splide {
  --pager-height: 0;
  /* ページネーションなし */
}
.c-books--related .splide__pagination {
  display: none;
}
.c-books--related {
  /* 矢印（大きめ & 外側オフセット24px） */
}
.c-books--related .splide__arrow {
  position: absolute;
  z-index: 10;
  display: grid;
  place-content: center;
  width: 4rem;
  height: 4rem;
  cursor: pointer;
  border-radius: 50%;
  background-color: #33adad;
  transition: 0.8s cubic-bezier(0.2, 1, 0.2, 1);
  /* ※ */
  top: 0;
  bottom: var(--pager-height, 0);
  margin-block: auto;
}
.c-books--related .splide__arrow > svg {
  display: none;
}
.c-books--related .splide__arrow:hover {
  background-color: #0a9596;
}
.c-books--related .splide__arrow:disabled {
  pointer-events: none;
  opacity: 0;
}
.c-books--related .splide__arrow:focus-visible {
  outline: 3px solid #33adad;
  outline-offset: 3px;
  z-index: 1;
  transition: none;
}
.c-books--related .splide__arrow--prev {
  right: calc(100% + 24px);
}
.c-books--related .splide__arrow--prev::after {
  content: "";
  margin-left: 0.2rem;
  transform: rotate(-135deg);
  border: solid #fff;
  border-width: 3px 3px 0 0;
  width: 0.75rem;
  height: 0.75rem;
}
.c-books--related .splide__arrow--next {
  left: calc(100% + 24px);
}
.c-books--related .splide__arrow--next::after {
  content: "";
  margin-right: 0.2rem;
  transform: rotate(45deg);
  border: solid #fff;
  border-width: 3px 3px 0 0;
  width: 0.75rem;
  height: 0.75rem;
}

/* =========================================================
   メディアクエリ（PC時のhover演出など）
========================================================= */
@media (min-width: 1025px) {
  .c-books .splide__track {
    padding-block: 16px;
    /* = padding-top/bottom */
  }
  .c-books .item,
  .c-books .item img {
    transition: 0.8s cubic-bezier(0.2, 1, 0.2, 1);
    will-change: transform;
  }
  .c-books .item:hover {
    transform: translateY(-16px);
    color: inherit;
  }
  .c-books .item:hover img {
    transform: translateY(0);
  }
}
@media (max-width: 1024px) {
  .c-books .splide__arrow {
    width: 3.2rem;
    height: 3.2rem;
  }
}
@media (max-width: 768px) {
  .c-books .l-inner {
    padding: 3.125rem;
  }
  .c-books .splide__arrow--prev {
    right: calc(100% - 20px);
  }
  .c-books .splide__arrow--next {
    left: calc(100% - 20px);
  }
}
@media (max-width: 480px) {
  .c-books--new .splide,
  .c-books--upcoming .splide {
    --pager-height: 0;
  }
  .c-books .splide__track {
    padding-block: 5px;
  }
  .c-books .l-inner {
    padding: 1.875rem 10px;
  }
  .c-books .splide__arrow {
    width: 2.5rem;
    height: 2.5rem;
  }
  .c-books .splide__arrow--prev::after, .c-books .splide__arrow--next::after {
    width: 0.625rem;
    height: 0.625rem;
  }
}
.splide, .splide__track {
  touch-action: pan-y; /* 縦スクロールは許可、横はスライダーに任せる */
}

.splide.is-static {
  visibility: visible;
}/*# sourceMappingURL=splide.css.map */