/* =========================
   Hero
========================= */
.hero{
  position: relative;
  height: auto;
  min-height: 420px;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:flex-start;
  padding-top: clamp(24px, 6vh, 56px);
  padding-bottom: clamp(24px, 6vh, 56px);
  text-align:center;
}

.hero-title{
  font-family:"Times New Roman", serif;
  font-size:clamp(44px,6vw,76px);
  line-height:1.1;
  letter-spacing:.02em;
  padding-top: 40px;
  margin: 0;
}

.hero-title span{
  color:#c9a6a6;
}

.hero-sub{
  margin-top:0px;
  margin-bottom: 0;
  font-size:14px;
  letter-spacing:.18em;
  color:#666;
}

.hero-sub::before,
.hero-sub::after{
  content:"";
  display:inline-block;
  width:40px;
  height:1px;
  background:#bbb;
  margin:0 12px;
  vertical-align:middle;
}

.hero-role{
  margin-top: 6px;
  font-size: 13px;
  letter-spacing: .08em;
  color: rgba(30,30,30,.55);}

.hero-dual{
  margin: 2.2rem 0 2.4rem;
  text-align: center;
  font-size: 14px;
  letter-spacing: 0.22em;
  color: var(--text-muted);
}

.hero-dual span{
  display: block;
}

.hero-dual__design{
  font-size: 13px;
  color: var(--text-main);
  letter-spacing: 1px;
}

.hero-dual__illu{
  margin-top: 0.7rem;
  font-size: 11px;
  letter-spacing: 0.18em;
  color: var(--text-muted);
  opacity: 0.75;
}

.as-accent{
  font-size: 17px;
  color: #c9a6a6;
  letter-spacing: 0.22em;
}

/* =========================
   Scroll Indicator
========================= */
.scroll-indicator{
  position:absolute;
  left:50%;
  bottom:16px;
  transform:translateX(-50%);
  display:flex;
  flex-direction:column;
  align-items:center;
  text-decoration:none;
  pointer-events:auto;
}

.scroll-indicator__line{
  width:2px;
  height:75px;
  background:rgba(30,30,30,.45);
  margin-top:2px;
}

.scroll-indicator__dot{
  width:8px;
  height:8px;
  border-radius:50%;
  background:rgba(30,30,30,.75);

  --travel:85px;

  animation:dotSlideFade 2.8s ease-in-out infinite;
}

@keyframes dotSlideFade{
  0%{
    transform:translateY(0);
    opacity:1;
  }

  60%{
    transform:translateY(var(--travel));
    opacity:0.95;
  }

  80%{
    transform:translateY(var(--travel));
    opacity:0;
  }

  81%{
    transform:translateY(0);
    opacity:0;
  }

  100%{
    transform:translateY(0);
    opacity:1;
  }
}

@media (prefers-reduced-motion: reduce){
  .scroll-indicator__dot{
    animation:none;
  }
}

/* =========================
   Works
========================= */
.works-tabs{
  width: min(520px, 92vw);
  margin: 0 auto 48px;
  padding: 6px;
  background: rgba(0,0,0,.06);
  border-radius: 999px;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 6px;
}

.works-tab{
  border: 0;
  background: transparent;
  border-radius: 999px;
  padding: 12px 10px;
  cursor: pointer;

  font-size: 14px;
  letter-spacing: .06em;
  color: rgba(30,30,30,.6);
}

.works-tab.is-active{
  background: #fff;
  color: rgba(30,30,30,.9);
  box-shadow: 0 6px 18px rgba(0,0,0,.06);
}

.works-grid{
  width: min(1100px, 92vw);
  margin: 0 auto;
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 56px;
}


.works-section{
  width: min(1100px, 92vw);
  margin: 0 auto;
}

@media (max-width: 720px){
  .works-grid{ grid-template-columns: 1fr; gap: 40px; }
}

.work-card.is-hidden{ display:none; }

.works-more{
  display: inline-block;
  margin: 0 0 0 auto;
  padding: 10px 18px;
  border: 1px solid rgba(0,0,0,.12);
  background: transparent;
  border-radius: 999px;
  font-size: 13px;
  letter-spacing: .08em;
  color: rgba(30,30,30,.75);
  cursor: pointer;
}


.works-more-wrap{
  width: min(1100px, 92vw);
  margin: 56px auto 0;
  display: flex;
}

.works-more:hover{
  border-color: rgba(0,0,0,.2);
  color: rgba(30,30,30,.95);
}


/* =========================
   Skills
========================= */
#skills{
  background: #faf9f7;
}

#skills h2{
  margin-bottom:180px;
}

.graph-wrap{
  position:relative;
  width:min(520px,92vw);
  margin:0 auto;
}

#graphFill{
  transform-box:fill-box;
  transform-origin:center;
  transform:scale(.55);
  opacity:0;
  filter:blur(6px);
  transition:
    transform 1100ms cubic-bezier(.18,.95,.18,1),
    opacity 700ms ease,
    filter 1100ms ease;
}

.is-visible #graphFill{
  transform:scale(1);
  opacity:1;
  filter:blur(0);
}

.graph-labels{
  position:absolute;
  inset:0;
  pointer-events:none;
  font-size:14px;
  letter-spacing:.04em;
  color:rgba(30,30,30,.7);
}

.graph-labels span{
  position:absolute;
  transform:translate(-50%,-50%);
  white-space:nowrap;
}

#skillGraphSection{
  opacity: 0;
  transform: translateY(10px);
  filter: blur(6px);
  transition: opacity .6s ease, transform .6s ease, filter .6s ease;
}

#skillGraphSection.is-visible{
  opacity: 1;
  transform: none;
  filter: blur(0);
}

.skill-caption{
  margin-top: 28px;
  text-align: center;
}

.skill-caption__title{
  font-size: 14px;
  letter-spacing: .18em;
  text-transform: uppercase;
  color: rgba(30,30,30,.72);
  -webkit-text-stroke: 1px rgba(30,30,30,.55);
  margin: 0;
}

.skill-caption__sub{
  margin: 10px 0 0;
  font-size: 12px;
  letter-spacing: .12em;
  color: rgba(30,30,30,.55);
}

.top{ top:-6%; left:50%; }
.right{ top:28%; right:-6%; transform:translate(0,-50%); }
.bottom-right{ bottom:-6%; right:18%; }
.bottom-left{ bottom:-6%; left:18%; }
.left{ top:28%; left:-6%; transform:translate(0,-50%); 
}

.skill-text{
  width: min(760px, 92vw);
  margin: 120px auto 0;
  color: rgba(30,30,30,.75);
}

.skill-text__head{
  margin: 0 0 22px;
  font-size: 18px;
  letter-spacing: .06em;
}

.skill-text__head .jp{
  font-size: 14px;
  letter-spacing: .08em;
  color: rgba(30,30,30,.6);
  margin-left: 10px;
}

.skill-row{
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 18px;
  padding: 18px 0;
  border-bottom: 1px solid rgba(0,0,0,.08);
}

.skill-row__title{
  margin: 0;
  font-size: 18px;
  letter-spacing: .06em;
}

.skill-row__desc{
  margin: 8px 0 0;
  font-size: 14px;
  color: rgba(30,30,30,.6);
}

.skill-row__rate{
  flex: 0 0 auto;
  font-size: 18px;
  letter-spacing: .12em;
  color: rgba(30,30,30,.65);
}

.skill-text__subgrid{
  display: grid;
  grid-template-columns: 1fr 220px;
  gap: 64px;
  margin-top: 75px;
}

.skill-text__subhead{
  margin: 0 0 8px;
  font-size: 18px;
  letter-spacing: .06em;
}

.skill-text__note{
  margin: 0 0 14px;
  font-size: 13px;
  color: rgba(30,30,30,.55);
}

.skill-text__list{
  margin: 0;
  padding-left: 1.1em;
  color: rgba(30,30,30,.7);
}

.skill-text__list li{
  margin: 10px 0;
}

.skill-text__list .small{
  font-size: 12px;
  color: rgba(30,30,30,.55);
  margin-left: 8px;
  white-space: nowrap;
}

.star-full{
  opacity: .75;
}

.star-empty{
  opacity: .35;
}

@media (max-width: 720px){
  .skill-text__subgrid{
    grid-template-columns: 1fr;
    gap: 40px;
  }
}

/* =========================
   About
========================= */
#about{
  padding-bottom: 65px; 
}

#about .section-title{
  margin: 0 0 56px;
  text-align: center;
  font-size: 24px;
  letter-spacing: .1em;
  color: rgba(30,30,30,.85);
}

.about__inner{
  width: min(900px, 92vw);
  margin: 0 auto;

  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 30px;
  align-items: start;
}

.about__media{
  max-width: 1520px;
}

.about__media img{
  width: 80%;
  height: auto;
  display: block;

  aspect-ratio: 1 / 1;
  object-fit: cover;
  object-position: center top;
}

.about__header{
  position: relative;
  margin-bottom: 24px;
}

.about__name{
  width: fit-content;
  margin: 0 auto 18px;

  display: grid;
  grid-template-columns: auto auto;
  grid-template-rows: auto auto;
  column-gap: 48px;
  row-gap: 6px;
}

.name-line{
  display: inline-flex;
  align-items: baseline;
  gap: 8px;
  white-space: nowrap;
}

.name-line--design{
  grid-column: 1;
  grid-row: 1;
  justify-self: start;
}

.name-line--illu{
  grid-column: 2;
  grid-row: 2;
  justify-self: end;
}

.about__text{
  max-width: 520px;
}

.about__text p{
  margin: 0 0 14px;
  line-height: 1.9;
}

.about__text .en{
  margin-top: 10px;
  font-size: 11px;
  line-height: 1.5;
  color: rgba(30,30,30,.4);
}

.about__text strong{
  font-weight: 650;
}


.about__brandLabel{
  font-size: 12px;
  letter-spacing: .08em;
  color: #777;
}

.about__brandValue{
  font-size: 28px;
  font-weight: 600;
  letter-spacing: .02em;
  color: #222;
}

.about__role{
  margin-top: 18px;
  text-align: right;
  font-size: 13px;
  letter-spacing: .08em;
  color: rgba(30,30,30,.55);
}

.about__meta{
  margin-top: 28px;
}

.about__meta dd{
  max-width: 520px; 
}

.about__meta dd p{
  margin: 0;
  line-height: 1.9;
  white-space: normal;
  word-break: keep-all;
}

.about__moreWrap{
  margin: 32px auto 0;
  display: flex;
  justify-content: flex-end;
}

.about__more{
  display: inline-block;
  padding: 10px 18px;
  border: 1px solid rgba(0,0,0,.12);
  background: transparent;
  border-radius: 999px;

  font-size: 13px;
  letter-spacing: .08em;
  color: rgba(30,30,30,.75);
  text-decoration: none;

  transition:
    border-color .2s ease,
    color .2s ease,
    transform .2s ease;
}

.about__more:hover{
  border-color: rgba(0,0,0,.2);
  color: rgba(30,30,30,.95);
  transform: translateX(2px); 
}

.about__moreLink{
  display: inline-block;
  font-size: 13px;
  letter-spacing: .08em;
  color: rgba(30,30,30,.65);
  text-decoration: none;

  padding-bottom: 4px;
  border-bottom: 1px solid rgba(30,30,30,.35);

  transition: opacity .2s ease, border-color .2s ease;
}

.about__moreLink:hover{
  opacity: .9;
  border-color: rgba(30,30,30,.7);
}

@media (max-width: 720px){
  .about__name{
    grid-template-columns: 1fr;
    grid-template-rows: auto auto;
  }

  .name-line--illu{
    grid-column: 1;
    grid-row: 2;
    justify-self: start;
  }
}

/* =========================
   Contact
========================= */
#contact{
  padding-top: 65px;
  background:#f7f7f5;
}

#contact > h2{
  font-size: 20px;
  letter-spacing: .1em;
  margin-bottom: 48px;
}

.contact__cta{
  margin-top: 32px;
  display: grid;
  gap: 14px;
  justify-items: center;
}

.contact__mail{
  display: inline-block;
  padding: 12px 22px;
  border: 1px solid rgba(0,0,0,.12);
  border-radius: 999px;
  text-decoration: none;

  font-size: 13px;
  letter-spacing: .12em;
  color: rgba(30,30,30,.75);
  background: rgba(255,255,255,.65);

  transition: border-color .2s ease, color .2s ease, transform .2s ease, background .2s ease;
}

.contact__mail:hover{
  border-color: rgba(0,0,0,.2);
  color: rgba(30,30,30,.95);
  background: rgba(255,255,255,.85);
  transform: translateY(-1px);
}

.contact__note{
  margin: 0;
  font-size: 12px;
  letter-spacing: .08em;
  color: rgba(30,30,30,.55);
}

/* =========================
   Contact + Accordion
========================= */
.contact__inner{
  width: min(760px, calc(100% - 32px));
  margin: 0 auto;
  text-align: center;
}

.contact__lead{
  margin: 0;
  font-size: 14px;
  letter-spacing: .08em;
  color: rgba(30,30,30,.7);
  line-height: 1.9;
}

.contact__lead.en{
  margin-top: 10px;
  font-size: 11px;
  letter-spacing: .08em;
  color: rgba(30,30,30,.4);
}

.contact-links{
  width: min(560px, 92vw);
  margin: 28px auto 0;
  display: grid;
  gap: 10px;
  justify-items: stretch;
}

.contact-link{
  display: block;
  padding: 12px 16px;
  border: 1px solid rgba(0,0,0,.10);
  background: rgba(255,255,255,.65);
  border-radius: 14px;
  text-decoration: none;

  font-size: 13px;
  letter-spacing: .08em;
  color: rgba(30,30,30,.75);

  transition: border-color .2s ease, color .2s ease, transform .2s ease, background .2s ease;
}

.contact-link:hover{
  border-color: rgba(0,0,0,.18);
  color: rgba(30,30,30,.95);
  background: rgba(255,255,255,.85);
  transform: translateY(-1px);
}

.contact-link--mail{
  border-radius: 999px;
}

.accordion{
  width: min(760px, 92vw);
  margin: 26px auto 0;
  text-align: left;

  border: 1px solid rgba(0,0,0,.10);
  border-radius: 16px;
  background: rgba(255,255,255,.65);
  overflow: hidden;
}

.accordion__summary{
  list-style: none;
  cursor: pointer;

  padding: 14px 16px;
  display: flex;
  align-items: center;
  justify-content: space-between;

  font-size: 13px;
  letter-spacing: .08em;
  color: rgba(30,30,30,.75);
}

.accordion__summary::-webkit-details-marker{ display:none; }

.accordion__chev{
  width: 10px;
  height: 10px;
  border-right: 1px solid rgba(30,30,30,.55);
  border-bottom: 1px solid rgba(30,30,30,.55);
  transform: rotate(45deg);
  transition: transform .2s ease, opacity .2s ease;
  opacity: .85;
}

.accordion[open] .accordion__chev{
  transform: rotate(225deg);
  opacity: .75;
}

.accordion__body{
  padding: 14px 16px 18px;
  border-top: 1px solid rgba(0,0,0,.08);
}

.accordion__intro{
  margin: 0;
  font-size: 13px;
  line-height: 1.9;
  color: rgba(30,30,30,.7);
}

.accordion__intro.en{
  margin-top: 10px;
  font-size: 11px;
  line-height: 1.6;
  color: rgba(30,30,30,.4);
}

.accordion__grid{
  margin-top: 16px;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 14px;
}

.accordion--inblock .accordion__summary{
  justify-content: center;
  text-align: center;
  position: relative;
}

.accordion--inblock .accordion__chev{
  position: absolute;
  right: 14px;
}

.accordion__block{
  padding: 12px 12px;
  border: 1px solid rgba(0,0,0,.08);
  border-radius: 14px;
  background: rgba(255,255,255,.55);
}

.accordion__head{
  margin: 0 0 8px;
  font-size: 12px;
  letter-spacing: .08em;
  color: rgba(30,30,30,.7);
}

.accordion__text{
  margin: 0;
  font-size: 12px;
  line-height: 1.85;
  color: rgba(30,30,30,.6);
}

.accordion__list{
  margin: 0 0 8px;
  padding-left: 1.2em;
  font-size: 12px;
  line-height: 1.85;
  color: rgba(30,30,30,.6);
}

.accordion__en{
  margin-top: 16px;
  padding-top: 14px;
  border-top: 1px solid rgba(0,0,0,.08);
}

.accordion__head.en,
.accordion__text.en{
  color: rgba(30,30,30,.45);
}

@media (max-width: 720px){
  .accordion__grid{
    grid-template-columns: 1fr;
  }
}

/* =========================
   Contact split (Illustration / Design)
========================= */
.contact-split{
  width: min(760px, calc(100% - 32px));
  margin: 40px auto 0;
  display: grid;
  gap: 18px;
}

.contact-block{
  border: 1px solid rgba(0,0,0,.10);
  border-radius: 16px;
  background: rgba(255,255,255,.55);
  padding: 16px 16px 18px;
  text-align: center;
}

.contact-block__label{
  margin: 0;
  font-size: 16px;
  letter-spacing: .14em;
  color: rgba(30,30,30,.65);
}

.contact-block__sub{
  margin: 8px 0 0;
  font-size: 11px;
  letter-spacing: .08em;
  color: rgba(30,30,30,.40);
}

/* icons row */
.contact-icons{
  width: min(520px, 92vw);
  margin: 16px auto 0;

  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 14px;
  justify-items: center;
}

.contact-block:last-child .contact-icons{
  grid-template-columns: 1fr;
  justify-items: center;
}

.contact-icon{
  width: min(520px, calc(100% - 32px));
  max-width: 140px;
  display: grid;
  justify-items: center;
  gap: 8px;

  text-decoration: none;
  color: rgba(30,30,30,.65);
  transition: transform .2s ease;
}

.contact-icon img{
  width: 56px;
  height: 56px;
  object-fit: contain;

  border-radius: 14px;
  background: rgba(255,255,255,.65);
  border: 1px solid rgba(0,0,0,.08);
  padding: 10px;

  transition: background .2s ease, border-color .2s ease, transform .2s ease;
}

.contact-icon span{
  font-size: 12px;
  letter-spacing: .08em;
}

.contact-icon:hover{
  transform: translateY(-1px);
}

.contact-icon:hover img{
  background: rgba(255,255,255,.85);
  border-color: rgba(0,0,0,.14);
  transform: translateY(-1px);
}

.contact-block .accordion{
  width: 100%;
  margin: 16px 0 0;
  box-sizing: border-box;
}

/* Mail block */
.contact-mail{
  margin: 16px auto 0;
  width: min(520px, 92vw);
  display: grid;
  justify-items: center;
  gap: 10px;

  text-decoration: none;
  color: rgba(30,30,30,.65);
}

.contact-mail__btn{
  display: inline-block;
  padding: 12px 22px;
  border: 1px solid rgba(0,0,0,.10);
  border-radius: 999px;
  background: rgba(255,255,255,.65);

  font-size: 13px;
  letter-spacing: .12em;

  transition: border-color .2s ease, background .2s ease, transform .2s ease, color .2s ease;
}

.contact-mail__addr{
  font-size: 12px;
  letter-spacing: .06em;
  color: rgba(30,30,30,.45);
}

.contact-mail:hover .contact-mail__btn{
  border-color: rgba(0,0,0,.18);
  background: rgba(255,255,255,.85);
  color: rgba(30,30,30,.95);
  transform: translateY(-1px);
}

@media (max-width: 720px){
  .contact-icons{
    grid-template-columns: repeat(3, 1fr);
    gap: 12px;
  }
}

/* =========================
   Ritz-ish preview component
========================= */
.rc-preview{
  --pad: clamp(16px, 4vw, 56px);
  --stage-radius: 18px;
  --ghost-blur: 10px;
  --ghost-opacity: .35;
  --ghost-scale: .92;
  --ghost-inset: clamp(12px, 3vw, 40px);
  --main-max: 980px;

  padding: var(--pad) var(--pad) 18px;
}

.rc-stage{
  position: relative;
  display: grid;
  place-items: center;
  min-height: clamp(260px, 40vw, 520px);
}

.rc-main{
  width: min(var(--main-max), 100%);
  margin: 0;
  border-radius: var(--stage-radius);
  overflow: hidden;
  box-shadow: 0 18px 40px rgba(0,0,0,.12);
}
.rc-main img{
  width: 100%;
  height: auto;
  display: block;
  transform: translateZ(0);
}

.rc-ghost{
  position: absolute;
  top: 50%;
  transform: translateY(-50%) scale(var(--ghost-scale));
  width: clamp(110px, 18vw, 220px);
  aspect-ratio: 3 / 4;
  border-radius: 16px;
  overflow: hidden;
  opacity: var(--ghost-opacity);
  filter: blur(var(--ghost-blur));
  pointer-events: none; /* クリックをメインに通す */
}
.rc-ghost--left{ left: var(--ghost-inset); }
.rc-ghost--right{ right: var(--ghost-inset); }

.rc-ghost img{
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
.rc-ghost--left{
  -webkit-mask-image: linear-gradient(to right, transparent, #000 30%, #000);
          mask-image: linear-gradient(to right, transparent, #000 30%, #000);
}
.rc-ghost--right{
  -webkit-mask-image: linear-gradient(to left, transparent, #000 30%, #000);
          mask-image: linear-gradient(to left, transparent, #000 30%, #000);
}

.rc-nav{
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  width: 44px;
  height: 44px;
  border-radius: 999px;
  border: 1px solid rgba(0,0,0,.12);
  background: rgba(255,255,255,.75);
  backdrop-filter: blur(8px);
  cursor: pointer;
  display: grid;
  place-items: center;
  z-index: 3;
}
.rc-nav--prev{ left: calc(var(--ghost-inset) + 6px); }
.rc-nav--next{ right: calc(var(--ghost-inset) + 6px); }

.rc-controls{
  display: grid;
  grid-template-columns: auto minmax(260px, 420px) auto;
  gap: 14px;
  align-items: center;
  margin-top: 14px;
  padding-inline: clamp(8px, 2vw, 18px);
  justify-content: center;
}

.rc-btn{
  border: 0;
  background: transparent;
  padding: 8px 10px;
  cursor: pointer;
  letter-spacing: .02em;
  opacity: .85;
}
.rc-btn:hover{ opacity: 1; }

.rc-range{
  --x: 0%;
  --seg: 12%;
  --track-h: 2px;
  --pill-h: 10px;

  width: 100%;
  height: 24px;
  background: transparent;
  -webkit-appearance: none;
  appearance: none;
  cursor: pointer;
  position: relative;
}

.rc-range::-webkit-slider-runnable-track{
  height: var(--track-h);
  background: rgba(0,0,0,.22);
  border-radius: 999px;
}
.rc-range::-moz-range-track{
  height: var(--track-h);
  background: rgba(0,0,0,.22);
  border-radius: 999px;
}

.rc-range::-webkit-slider-thumb{
  -webkit-appearance: none;
  appearance: none;
  width: 18px;
  height: 18px;
  background: transparent;
  border: 0;
  margin-top: calc((var(--track-h) - 18px) / 2);
}
.rc-range::-moz-range-thumb{
  width: 18px;
  height: 18px;
  background: transparent;
  border: 0;
}

.rc-range::before{
  content:"";
  position:absolute;
  top: 50%;
  transform: translateY(-50%);
  height: var(--pill-h);

  width: var(--seg);
  left: var(--x);

  border-radius: 999px;
  background: #4d4d4d;
  opacity: 0.75;
  pointer-events: none;
}

.rc-range::-moz-range-progress{
  height: var(--track-h);
  background: transparent;
}

#works .rc-preview{
  padding-inline: 0;
  margin: 18px 0 26px;
}

#works .rc-stage{
  display: grid;
  grid-template-columns:
    clamp(160px, 16vw, 220px)
    minmax(0, 1.4fr)
    clamp(160px, 16vw, 220px);

  gap: clamp(18px, 3vw, 48px);
  align-items: center;
  min-height: clamp(240px, 34vw, 460px);

  /* absolute用の前提を消す */
  position: relative;
  place-items: unset;
}

#works .rc-main{
  width: 100%;
  aspect-ratio: 16 / 9;
  margin: 0;
  border-radius: 18px;
  overflow: hidden;
  box-shadow: 0 18px 40px rgba(0,0,0,.10);
  background: rgba(0,0,0,.04);
  transform: scale(1.17);
}

#works .rc-main img{
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

#works .rc-ghost{
  position: static;
  transform: scale(.92);
  width: 100%;
  aspect-ratio: 4 / 3;
  border-radius: 16px;
  overflow: hidden;

  opacity: .55;
  filter: saturate(.75) blur(1.5px);
  pointer-events: none;
}

#works .rc-ghost--left{
  -webkit-mask-image: linear-gradient(to right, transparent 0%, #000 38%, #000 100%);
          mask-image: linear-gradient(to right, transparent 0%, #000 38%, #000 100%);
}

#works .rc-ghost--right{
  -webkit-mask-image: linear-gradient(to left, transparent 0%, #000 38%, #000 100%);
          mask-image: linear-gradient(to left, transparent 0%, #000 38%, #000 100%);
}

#works .rc-ghost img{
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

#works .rc-ghost--left{
  -webkit-mask-image: linear-gradient(to right, transparent, #000 35%, #000);
          mask-image: linear-gradient(to right, transparent, #000 35%, #000);
}
#works .rc-ghost--right{
  -webkit-mask-image: linear-gradient(to left, transparent, #000 35%, #000);
          mask-image: linear-gradient(to left, transparent, #000 35%, #000);
}

#works .rc-nav--prev{ left: calc(50% - min(980px, 92vw)/2 + 12px); }
#works .rc-nav--next{ right: calc(50% - min(980px, 92vw)/2 + 12px); }

#works .works-caption{
  width: min(1100px, 92vw);
  margin: 16px auto 0;
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  align-items: end;
  gap: 12px;
}

#works .works-caption__spacer{
  min-width: 1px;
}

#works .works-caption__center{ 
  justify-self: center;
  text-align: center;
  max-width: 70ch;
}

#works .works-caption .works-more-wrap{
  width: auto;
  margin: 0;
  display: block;
  justify-self: end;
}

#works .works-caption .works-more{
  margin: 0;
}

#works .works-caption__title{
  margin: 0;
  font-size: 14px;
  letter-spacing: .02em;
  white-space: nowrap;
}

#works .works-caption__sub{
  margin: 4px 0 0;
  font-size: 12px;
  opacity: .65;
}

#works .works-more-wrap{ 
  justify-self: end; 
}

@media (max-width: 860px){
  #works .rc-stage{
    grid-template-columns: 1fr;
  }
  #works .rc-ghost{
    display: none;
  }
  #works .rc-nav{
    display: none;
  }
}

/* =========================
  Custom Cursor (PC only)
========================= */
html.cursor-on,
html.cursor-on *{
  cursor: none;
}

.cursor{
  position: fixed;
  left: 0;
  top: 0;

  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: rgba(30,30,30,.6);

  pointer-events: none;
  z-index: 10001;

  transform: translate(-50%, -50%);
  opacity: 0;

  transition:
    transform .12s ease,
    width .15s ease,
    height .15s ease,
    opacity .2s ease;
}

/* リンクに乗ったとき */
.cursor.is-hover{
  width: 14px;
  height: 14px;
}

/* ===== Scroll Reveal (from works.html) ===== */
html.js .reveal { opacity: 1; } /* JS無効でも破綻しない保険 */

html.js-reveal .reveal {
  opacity: 0;
  transform: translateY(8px);
  transition: opacity .6s ease, transform .6s ease;
  will-change: opacity, transform;
  transition-delay: .05s;
}

html.js-reveal .reveal.is-inview {
  opacity: 1;
  transform: none;
}

@media (prefers-reduced-motion: reduce) {
  html.js-reveal .reveal {
    transition: none;
    opacity: 1;
    transform: none;
  }
}

/* ===== spacing fix (Top → Works) ===== */
#works{
  padding-top: 72px;   /* 120px → 72px */
  padding-bottom: 110px;
}

@media (max-width: 720px){
  #works{
    padding-top: 56px;
    padding-bottom: 90px;
  }
}

/* =========================
   FINAL OVERRIDE PATCH
========================= */

.scroll-indicator{
  position: relative !important;
  left: auto !important;
  bottom: auto !important;
  transform: none !important;
  margin-top: clamp(28px, 5vh, 64px) !important;
}

/* rc-range のピル（;抜け修正） */
.rc-range::before{
  content:"";
  position:absolute;
  top: 50%;
  transform: translateY(-50%);
  height: var(--pill-h);

  width: var(--seg);
  left: var(--x);

  border-radius: 999px;
  background: #4d4d4d;
  opacity: 0.75;         /* ← ; 追加 */
  pointer-events: none;
}

@media (max-width: 768px){

  /* rangeのつまみを“触れるけど見えない”に */
  .rc-range{
    -webkit-appearance: none;
    appearance: none;
    background: transparent;
    outline: none;
  }
  .rc-range::-webkit-slider-thumb{
    -webkit-appearance: none;
    appearance: none;
    width: 28px;
    height: 28px;
    background: transparent;
    border: 0;
    opacity: 0;
    box-shadow: none;
  }
  .rc-range::-moz-range-thumb{
    width: 28px;
    height: 28px;
    background: transparent;
    border: 0;
    opacity: 0;
  }

  .rc-controls{
    margin-top: 38px;
  }

  /* Works captionの整列 */
  #works .works-caption{
    display: grid;
    grid-template-columns: 1fr;
    row-gap: 8px;
    text-align: center;
  }
  #works .works-caption__center{
    justify-self: center;
    text-align: center;
  }
  #works .works-more-wrap{
    justify-self: end;
    margin-top: 6px;
  }

  /* graph */
  .graph-wrap{
    width: min(400px, 92vw);
    padding-inline: var(--sp-pad);
    overflow: visible;
  }
  .graph-labels{
    font-size: 12px;
  }
  .graph-labels .left{ left: 2%; }
  .graph-labels .right{ right: 2%; }
  .graph-labels .top{ top: 2%; }
  .graph-labels .bottom-left{ bottom: 2%; left: 20%; }
  .graph-labels .bottom-right{ bottom: 2%; right: 20%; }

  /* skill */
  .skill-text{
    width: min(900px, 84vw) !important;
  }
  .skill-text,
  .skills-list,
  .skills-note{
    padding-inline: 2px;
  }

  /* About: SPだけ画像を消す */
  .about__media,
  .about-photo,
  .about-img,
  .about__avatar{
    display: none !important;
  }
  .about__inner{
    grid-template-columns: 1fr !important;
    width: min(900px, 84vw) !important;
  }
  .about__text{
    max-width: 100% !important;
  }
}

/* ===== Contact (SP) : overflow/cut fix ===== */
@media (max-width: 768px){

  #contact,
  .contact,
  .contact__inner,
  .contact-links,
  .contact-split,
  .contact-card,
  .contact-note,
  .contact-icons,
  .contact-mail,
  .accordion{
    width: 100% !important;
    max-width: 100% !important;
    box-sizing: border-box !important;
  }

  #contact{
    overflow-x: hidden !important;
  }

  .contact-card,
  .contact-note{
    overflow: hidden !important; 
    overflow-wrap: anywhere !important;
    word-break: break-word !important;
  }

  .contact-card *,
  .contact-note *{
    max-width: 100% !important;
    box-sizing: border-box !important;
  }

  .contact-icons{
    grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
    gap: 14px !important;
  }

  .contact-icon{
    width: 100% !important;
    max-width: 120px !important;
    margin: 0 auto !important;
  }

  .contact-mail{
    display: grid;
    place-items: center;
    margin-inline: auto !important;
    text-align: center !important;
  }

  .contact-mail a,
  .contact-mail button,
  .contact-mail .contact-icon{
    margin-inline: auto !important;
    display: block;
  }
}

   
/* =========================
   FIX 2: Contact Mail center
========================= */
@media (max-width: 768px){
  .contact-icons--single{
    display: grid !important;
    grid-template-columns: 1fr !important;
    justify-items: center !important;
  }

  .contact-icons--single .contact-icon{
    margin: 0 auto !important;
  }
}

/* =========================
   < back / next > color fix
   ========================= */
.rc-controls .rc-btn{
  color: rgba(30,30,30,.6);
  background: transparent;
  border: none;
  font-size: 13px;
  letter-spacing: .06em;
}

.rc-controls .rc-btn:hover{
  color: rgba(30,30,30,.9);
}

.rc-controls .rc-btn:disabled{
  color: rgba(30,30,30,.35);
}

/* スワイプしやすくする（iOSの変な拡大や選択を減らす） */
.rc, .rc-stage, .rc-media, .modal{
  -webkit-user-select: none;
  user-select: none;
  -webkit-touch-callout: none;
}
