/* =========================================================
   GLOBAL
   ---------------------------------------------------------
   01. Reset / Base
   02. Typography / Accessibility
   03. Global Utility
   04. Breadcrumb
   05. Buttons
      - Magnet Button
      - CTA Swap
      - RGB CTA Pill
   06. Loop Item Common
      - Journal Title Underline
      - Book Clip Image
========================================================= */



/* #########################################################
   01. Reset / Base
######################################################### */

*{
  margin:0;
  padding:0;
  box-sizing:border-box;
  -webkit-tap-highlight-color:transparent;
}

html{
  font-size:100%;
  scroll-behavior:auto !important;
}

html.lenis,
html.lenis body{
  height:auto;
}

html body{
  /* background:oklch(0.9393 0.0177 81.33); */
  /* background:oklch(0.9631 0.0108 76.6); */
  background:#fff;
}

body{
  overflow-x:clip;
  text-rendering:optimizeLegibility;
  -webkit-font-smoothing:antialiased;
}

img,
picture,
video,
canvas,
svg{
  display:block;
  max-width:100%;
  height:auto;
}



/* #########################################################
   02. Typography / Accessibility
######################################################### */

body{
  font-family:
    "Helvetica Neue",
    "Arial",
    "Hiragino Kaku Gothic ProN",
    "Hiragino Sans",
    "Noto Sans JP",
    sans-serif;
}

:focus-visible{
  outline:0.125rem solid currentColor;
  outline-offset:0.125rem;
}



/* #########################################################
   03. Global Utility
######################################################### */

/* PCでは改行を表示、SPでは非表示 */
.pc_br{
  display:block !important;
}

/* SPでは改行を表示、PCでは非表示 */
.sp_br{
  display:none !important;
}

@media only screen and (max-width:767px){
  .pc_br{
    display:none !important;
  }

  .sp_br{
    display:block !important;
  }
}



/* #########################################################
   04. Breadcrumb
######################################################### */

.rank-math-breadcrumb{
  font-size:0.8vw;
  margin:0;
  padding:0;
}

.rank-math-breadcrumb p{
  font-size:inherit;
  margin:0;
  padding:0;
}

.rank-math-breadcrumb a{
  color:#111;
  text-decoration:none;
  transition:color 0.3s ease;
}

.rank-math-breadcrumb a:hover{
  color:#111;
}

.rank-math-breadcrumb .last{
  color:#111;
}

.rank-math-breadcrumb .separator{
  margin:0 0.2em;
  opacity:0.6;
}

/* Tablet */
@media only screen and (max-width:1020px) and (min-width:768px){
  .rank-math-breadcrumb{
    font-size:1.3vw;
  }
}

/* Mobile */
@media only screen and (max-width:767px){
  .rank-math-breadcrumb{
    font-size:2.8vw;
  }
}



/* #########################################################
   05. Buttons
######################################################### */



/* =========================================================
   05-1. Magnet Button
========================================================= */

.magnet_button{
  --mb-bg:#222;
  --mb-text:#F9FAFC;
  --mb-ring:#fff;

  --mb-size:9vw;
  --mb-font:1.05vw;
  --mb-gap:0.4vw;
  --mb-padding:1vw;
  --mb-ring-inset:0.3vw;
  --mb-ring-width:0.15vw;
  --mb-arrow-width:20%;
  --mb-arrow-shift:140%;
  --mb-arrow-duration:0.35s;
  --mb-arrow-ease:ease;

  font-weight:500;
  text-decoration:none !important;
  color:var(--mb-text) !important;
  background:var(--mb-bg);

  width:var(--mb-size);
  height:var(--mb-size);
  font-size:var(--mb-font);
  border-radius:50%;

  display:flex;
  flex-direction:column;
  justify-content:center;
  align-items:center;
  gap:var(--mb-gap);

  padding:var(--mb-padding);
  position:relative;
  text-align:center;
  line-height:1.5;
  letter-spacing:0.07em;
  cursor:pointer !important;
  overflow:hidden;
  z-index:0;
  transform:translate3d(0,0,0);
}

.magnet_button,
.magnet_button:link,
.magnet_button:visited,
.magnet_button:hover,
.magnet_button:focus-visible{
  color:var(--mb-text) !important;
}

.magnet_button__label{
  display:block;
  position:relative;
  z-index:1;
  color:inherit;
}

.magnet_button__arrow{
  position:relative;
  width:var(--mb-arrow-width);
  aspect-ratio:1 / 1;
  overflow:hidden;
  flex:0 0 auto;
  z-index:1;
}

.magnet_button__img{
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  object-fit:contain;
  display:block;
  transition:
    transform var(--mb-arrow-duration) var(--mb-arrow-ease),
    opacity var(--mb-arrow-duration) var(--mb-arrow-ease);
  will-change:transform;
}

.magnet_button__img--current{
  transform:translateX(0);
  opacity:1;
}

.magnet_button__img--next{
  transform:translateX(calc(var(--mb-arrow-shift) * -1));
  opacity:1;
}

.magnet_button::after{
  content:"";
  position:absolute;
  inset:var(--mb-ring-inset);
  border:var(--mb-ring-width) solid var(--mb-ring);
  border-radius:50%;
  pointer-events:none;
  z-index:0;
}

@media (hover:hover) and (pointer:fine) and (min-width:1021px){
  .magnet_button:hover .magnet_button__img--current,
  .magnet_button:focus-visible .magnet_button__img--current{
    transform:translateX(var(--mb-arrow-shift));
  }

  .magnet_button:hover .magnet_button__img--next,
  .magnet_button:focus-visible .magnet_button__img--next{
    transform:translateX(0);
  }
}

@media only screen and (max-width:1020px) and (min-width:768px){
  .magnet_button{
    --mb-size:11vw;
    --mb-font:1.35vw;
    --mb-arrow-width:16%;
    --mb-ring-inset:0.4vw;
    --mb-ring-width:0.2vw;
  }

  .magnet_button__arrow{
    margin-top:0.2em;
  }

  .magnet_button__img{
    transition:none;
  }
}

@media only screen and (max-width:767px){
  .magnet_button{
    --mb-size:27.5vw;
    --mb-font:3.4vw;
    --mb-arrow-width:10%;
    --mb-ring-inset:0.4vw;
    --mb-ring-width:0.6vw;
  }

  .magnet_button__arrow{
    margin-top:0.4em;
  }

  .magnet_button__img{
    transition:none;
  }
}



/* =========================================================
   05-2. CTA Swap
========================================================= */

.cta-swap--onLight{
  --cta-text:#222;
  --cta-label:#333;
  --cta-sub:rgba(34,34,34,.80);
  --cta-pill-bg:#000;
  --cta-pill-fg:#fff;
}

.cta-swap--onDark{
  --cta-text:#fff;
  --cta-label:#fff;
  --cta-sub:rgba(255,255,255,.80);
  --cta-pill-bg:#fff;
  --cta-pill-fg:#000;
}

.cta-swap{
  --radius:23px;
  --pad-y:2vw;
  --pad-x:0vw;
  --gap:1vw;

  --shift:5.5vw;
  --icon-shift:2.5vw;

  --dur:.7s;
  --ease:cubic-bezier(.45,.05,.55,.95);

  --d-right-out:0s;
  --d-text-in:.05s;
  --d-left-in:.12s;

  --d-text-out:.12s;
  --d-right-in:.20s;

  --d-right:var(--d-right-in);
  --d-text:var(--d-text-out);
  --d-left:0s;

  --fs-label-d:2vw;
  --fs-label-t:2.8vw;
  --fs-label-s:5.2vw;
  --fs-label:var(--fs-label-d);

  --ul-out:0em;
  --ul-h:1px;
  --ul-inset-x:0;
  --ul-dur:.55s;
  --ul-ease:cubic-bezier(.22,1,.36,1);

  position:relative;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:var(--gap);

  padding:var(--pad-y) var(--pad-x);
  border-radius:var(--radius);
  text-decoration:none;
  line-height:1;
  color:var(--cta-text);

  overflow:visible;
  transform:translateZ(0);
  will-change:transform;
}

.cta-swap,
.cta-swap:link,
.cta-swap:visited,
.cta-swap:hover,
.cta-swap:focus-visible{
  color:var(--cta-text);
  text-decoration:none;
}

.cta-swap__label-wrap{
  display:flex;
  flex-direction:column;
  align-items:flex-start;
  font-size:var(--fs-label);
  transform:translateX(0);
  transition:transform var(--dur) var(--ease);
  transition-delay:var(--d-text);
}

.cta-swap__label{
  font-size:1em;
  font-weight:300;
  letter-spacing:-0.03em;
  text-transform:uppercase;
  color:var(--cta-label);
}

.cta-swap__sub{
  font-size:0.4em;
  line-height:1.7em;
  letter-spacing:0.03em;
  padding-top:0.25em;
  opacity:1;
  color:var(--cta-sub);
}

.cta-swap__icon{
  display:inline-grid;
  place-items:center;
  padding:0 1vw;
  min-width:4vw;
  height:1.4vw;
  border-radius:9999px;
  background:var(--cta-pill-bg);
  color:var(--cta-pill-fg);
  line-height:0;
  transition:
    transform var(--dur) var(--ease),
    opacity var(--dur) var(--ease);
  backface-visibility:hidden;
}

.cta-swap__icon--right{
  transform:translateX(0);
  opacity:1;
  transition-delay:var(--d-right);
}

.cta-swap__icon--left{
  position:absolute;
  left:var(--pad-x);
  top:50%;
  transform:translate(-4vw,-50%);
  opacity:0;
  transition-delay:var(--d-left);
}

.cta-swap::after,
.cta-swap::before{
  content:"";
  position:absolute;
  left:var(--ul-inset-x);
  right:var(--ul-inset-x);
  bottom:calc(var(--ul-out) * -1);
  height:var(--ul-h);
  pointer-events:none;
}

.cta-swap::after{
  background:var(--cta-text);
  opacity:.45;
}

.cta-swap::before{
  background:var(--cta-sub);
  transform:scaleX(0);
  transform-origin:left center;
  transition:transform var(--ul-dur) var(--ul-ease);
}

@media (hover:hover) and (pointer:fine) and (min-width:1021px){
  .cta-swap:hover,
  .cta-swap:focus-visible{
    --d-right:var(--d-right-out);
    --d-text:var(--d-text-in);
    --d-left:var(--d-left-in);
  }

  .cta-swap:hover .cta-swap__label-wrap,
  .cta-swap:focus-visible .cta-swap__label-wrap{
    transform:translateX(var(--shift));
  }

  .cta-swap:hover .cta-swap__icon--right,
  .cta-swap:focus-visible .cta-swap__icon--right{
    transform:translateX(var(--icon-shift));
    opacity:0;
  }

  .cta-swap:hover .cta-swap__icon--left,
  .cta-swap:focus-visible .cta-swap__icon--left{
    transform:translate(0,-50%);
    opacity:1;
  }

  .cta-swap:hover::before,
  .cta-swap:focus-visible::before{
    transform:scaleX(1);
  }
}

@media only screen and (max-width:1020px) and (min-width:768px){
  .cta-swap{
    --fs-label:var(--fs-label-t);
    --pad-y:3vw;
    --shift:8vw;
  }

  .cta-swap__icon{
    height:1.9vw;
    padding:0 1.2vw;
    min-width:5.2vw;
  }

  .cta-swap__icon svg{
    width:.95em;
    height:.95em;
    display:block;
  }
}

@media only screen and (max-width:767px){
  .cta-swap{
    --fs-label:var(--fs-label-s);
    --pad-y:4vw;
    --shift:14vw;
  }

  .cta-swap__sub{
    font-size:0.45em;
  }

  .cta-swap__icon{
    height:4.5vw;
    padding:0 2.5vw;
    min-width:10vw;
  }

  .cta-swap__icon svg{
    width:0.8em;
    height:1em;
    display:block;
  }
}



/* =========================================================
   05-3. RGB CTA Pill
========================================================= */

.rgb-cta-container{
  display:flex;
  justify-content:flex-end;
  align-items:center;
  width:100%;
}

.rgb-cta-pill{
  display:inline-grid;
  place-items:center;
  width:4vw;
  height:1.5vw;
  background-color:#fff;
  color:#000;
  border-radius:9999px;
  mix-blend-mode:difference;
  transition:none;
  pointer-events:none;
}

.rgb-cta-pill svg{
  width:1em;
  height:1em;
  display:block;
}

.rgb-item:hover .rgb-cta-pill{
  transform:none !important;
  box-shadow:none !important;
  background-color:#fff !important;
}

@media only screen and (max-width:1020px) and (min-width:768px){
  .rgb-cta-pill{
    width:6vw;
    height:2.5vw;
  }

  .rgb-cta-pill svg{
    width:0.95em;
    height:0.95em;
  }
}

@media only screen and (max-width:767px){
  .rgb-cta-pill{
    width:12vw;
    height:4.8vw;
  }

  .rgb-cta-pill svg{
    width:0.85em;
    height:0.85em;
  }
}

@view-transition { navigation: auto; }

/* 旧ページ: 奥に倒れて消える */
::view-transition-old(root) {
  animation: cube-rotate-vertical-out 0.8s cubic-bezier(.6,0,.4,1);
  transform-origin: top center;
  backface-visibility: hidden;
  perspective: 1000px;
}

/* 新ページ: 手前から起き上がるように表示 */
::view-transition-new(root) {
  animation: cube-rotate-vertical-in 0.8s cubic-bezier(.6,0,.4,1);
  transform-origin: bottom center;
  backface-visibility: hidden;
  perspective: 1000px;
}

@keyframes cube-rotate-vertical-in {
  from {
    opacity: 0.4;
    transform: perspective(1000px) rotateX(90deg);
  }
  to {
    opacity: 1;
    transform: perspective(1000px) rotateX(0deg);
  }
}

@keyframes cube-rotate-vertical-out {
  from {
    opacity: 1;
    transform: perspective(1000px) rotateX(0deg);
  }
  to {
    opacity: 0.4;
    transform: perspective(1000px) rotateX(-90deg);
  }
}



/* #########################################################
   06. Loop Item Common
######################################################### */



/* =========================================================
   06-1. Journal Title Underline
   - 複数行対応
   - 区切り線なし
   - 文字色指定なし
   - 2行以上でも各行の文字部分だけ下線が伸びる
   - 下線色：#595C53
========================================================= */

.post_journal_container
  .post_journal_title_highlight
  .elementor-heading-title{
  display:inline;
  text-decoration:none;
  background-repeat:no-repeat;
  background-image:linear-gradient(#595C53, #595C53);
  background-position:0 100%;
  background-size:0% 1px;
  box-decoration-break:clone;
  -webkit-box-decoration-break:clone;
  transition:background-size 0.45s ease;
}

.post_journal_container:hover
  .post_journal_title_highlight
  .elementor-heading-title{
  background-size:100% 1px;
}



/* =========================================================
   06-2. Book Clip Image
   - SVG ClipPath本体は Loop Item 側に残す
   - ここでは見た目CSSのみ管理
========================================================= */

.bookClipImage{
  position:relative;
  aspect-ratio:4 / 3;
  overflow:visible;

  /* 線の調整 */
  --book-line-width:100%;
  --book-line-height:18%;
  --book-line-bottom:-6.0%;
}

.bookClipImage .elementor-image{
  display:block;
  width:100%;
  height:100%;
  line-height:0;
}

.bookClipImage img{
  display:block;
  width:100%;
  height:100%;
  object-fit:cover;
  -webkit-clip-path:url(#clippath-shape02);
  clip-path:url(#clippath-shape02);
}

/* ---------------------------------------------------------
   下の装飾線
   - 上の下辺カーブに寄せる
   - 中央では重ねない
--------------------------------------------------------- */
.bookClipImage::after{
  content:"";
  position:absolute;
  left:50%;
  bottom:var(--book-line-bottom);
  transform:translateX(-50%);
  width:var(--book-line-width);
  height:var(--book-line-height);
  pointer-events:none;
  z-index:3;

  background-repeat:no-repeat;
  background-position:center bottom;
  background-size:100% 100%;

  background-image:url("data:image/svg+xml;utf8,\
<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1000 140'>\
  <g fill='none' stroke='%233b342f' stroke-linecap='round' stroke-linejoin='round'>\
    <path d='\
      M 0 74\
      C 80 44 165 32 251 32\
      C 360 32 430 58 470 92'\
      stroke-width='4'/>\
    <path d='\
      M 0 96\
      C 80 66 165 54 251 54\
      C 360 54 425 80 463 113'\
      stroke-width='3.2'/>\
    <path d='\
      M 530 92\
      C 570 58 640 32 749 32\
      C 835 32 920 44 1000 74'\
      stroke-width='4'/>\
    <path d='\
      M 537 113\
      C 575 80 640 54 749 54\
      C 835 54 920 66 1000 96'\
      stroke-width='3.2'/>\
  </g>\
</svg>");
}

@media (max-width:767px){
  .bookClipImage{
    --book-line-width:100%;
    --book-line-height:18%;
    --book-line-bottom:-6.0%;
  }
}