@charset "utf-8";

/* トップページ専用：FV・紹介・サービス・お知らせ */

.fv {
  position: relative;
  height: min(810px, 62vw);
  min-height: 620px;
  background: #d8d5c9;
  overflow: hidden;
  z-index: 3
}

.fv-main {
  position: absolute;
  inset: 0 0 0 43%;
  clip-path: polygon(25% 0, 100% 0, 100% 100%, 0 100%)
}

.fv-cut {
  position: absolute;
  width: 29%;
}

.cut-one {
  top: 16%;
  left: -5%;
}

.cut-two {
  top: 43%;
  left: 16%;
}

.fv-title {
  position: absolute;
  top: 19%;
  left: 22%;
  line-height: 1.5
}

.fv-copy {
  position: absolute;
  top: 63%;
  left: 5.3%
}

.fv-en {
  position: absolute;
  left: 40%;
  bottom: 5%;
  color: #eee8d7;
  opacity: .75;
  letter-spacing: .025em;
  pointer-events: none
}

.fv-buttons {
  position: absolute;
  left: 5.3%;
  bottom: 6%;
  justify-content: flex-start
}

.fv-buttons .more_f a {
  min-width: 220px
}

.news-ticker {
  background: black;
  color: white;
  padding: 16px 25px;
  gap: 16px;
  min-height: 60px
}

.ticker-label {
  border: 1px solid white;
  border-radius: 3px;
  padding: 3px 14px;
  white-space: nowrap
}

.news-ticker > span:last-child {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap
}

.about-copy p {
  margin-bottom: 30px
}

.about-collage {
  position: relative;
  height: 275px;
  margin-top: 30px
}

.collage-one {
  position: absolute;
  width: 32%;
  left: 4%;
  top: 55px
}

.collage-two {
  position: absolute;
  width: 25%;
  right: 0;
  top: 0
}

.collage-three {
  position: absolute;
  width: 40%;
  right: 4%;
  bottom: 0
}

.hospital {
  background: #e4e1dc;
  padding-top: 65px
}

.care-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  row-gap: 30px
}

.care-grid > div {
  border-right: 1px solid #c3beb7
}

.care-grid > div:nth-child(3n) {
  border: 0
}

.care-icon {
  color: #95938d;
  display: block
}

.hospital .more_f {
  justify-content: center
}

.first-section {
  padding-bottom: 30px
}

.first-card {
  position: relative;
  margin: -210px 0 0 80px;
  padding: 40px 40px 45px;
  background-color: #f4f3ee;
  background-blend-mode: screen
}

.service-title {
  position: relative
}

.service-title:before,
.service-title:after {
  content: '';
  width:20px;
  height:26px;
  background:url('https://famillehair.com/system_panel/uploads/images/icon.png') center/contain no-repeat;
  color: #bc9a5b;
  position: absolute;
  top: 15px
}

.service-title:before {
  left: 0
}

.service-title:after {
  right: 0
}

.service-card {
  padding-bottom: 28px;
  border-bottom: 1px solid #ddd;
  margin-bottom: 55px
}

.service-card:last-child {
  margin-bottom: 0;
  border: 0
}

.news-section h2 {
  color: #bd9a61
}

.news-section {
  padding-top: 75px;
  padding-bottom: 65px
}

@media(max-width:1080px) {
  .fv {
    min-height: 650px
  }

  .fv-title {
    left: 15%;
    top: 23%
  }

  .fv-main {
    left: 35%
  }

  .fv-buttons {
    gap: 10px
  }

  .fv-buttons .more_f a {
    min-width: 180px;
    padding: 12px 20px
  }

  .cut-one {
    top: 20%
  }

  .cut-two {
    top: 43%
  }
}

@media(max-width:576px) {
  .fv {
    height: 760px;
    min-height: 0
  }

  .fv-main {
    inset: 95px 0 0 22%;
    clip-path: polygon(25% 0, 100% 0, 100% 100%, 0 100%);
    background-position: 58% center
  }

  .fv-title {
    left: 8%;
    top: 18%;
    z-index: 1
  }

  .fv-cut {
    width: 47%
  }

  .cut-one {
    left: -14%;
    top: 33%
  }

  .cut-two {
    left: 3%;
    top: 49%
  }

  .fv-copy {
    top: auto;
    bottom: 19%;
    left: 6%;
    max-width: 48%
  }

  .fv-en {
    left: 43%;
    bottom: 18%
  }

  .fv-buttons {
    left: 6%;
    right: 6%;
    bottom: 6%;
    flex-wrap: nowrap
  }

  .fv-buttons > .more_f {
    width: 50%
  }

  .fv-buttons .more_f a {
    min-width: 0;
    width: 100%;
    padding: 12px;
    background: #eee9dcbb
  }

  .news-ticker {
    gap: 10px;
    padding: 14px 16px
  }

  .news-ticker time {
    display: none
  }

  .about-collage {
    height: 230px
  }

  .first-card {
    margin: -70px 0 0 30px;
    padding: 30px 22px
  }

  .service-title:before {
    left: -10px
  }

  .service-title:after {
    right: -10px
  }

  .service-card {
    margin-bottom: 35px
  }

  .about-copy br {
    display: none
  }
}

.fv .cut-two {
  left: 21%;
  width: 25%
}

@media(max-width:576px) {
  .fv .cut-two {
    left: 8%;
    width: 47%
  }

  .fv-copy {
    background: #dad6cbbf;
    padding: 10px;
    max-width: 65%
  }
}

@media(max-width:576px) {
  .fv-title {
    background: #d8d5c9b8;
    padding: 8px 12px;
    left: 5%
  }

  .hospital h3 br {
    display: none
  }
}

.hair-comparison {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 18px
}

.hair-comparison > div {
  display: flex;
  flex-direction: column
}

.hair-comparison h4 {
  min-height: 48px
}

.hair-comparison img {
  height: 255px;
  object-fit: contain;
  margin: 15px 0
}

.care-grid .care-icon {
  display: block;
  width: 55px;
  height: 60px;
  object-fit: contain;
  margin: 0 auto 12px
}

.service-title:before,
.service-title:after {
  content: "";
  width: 18px;
  height: 25px;
  background: url('https://famillehair.com/system_panel/uploads/images/icon.png') center/contain no-repeat
}

@media(max-width:576px) {
  .hair-comparison {
    gap: 10px
  }

  .hair-comparison img {
    height: 165px
  }
}

.fv-heading {
  position: absolute;
  top: 18%;
  left: 22%;
  z-index: 2
}

.fv-heading .fv-title {
  position: static;
  margin-top: 14px
}

.fv-certified {
  display: inline-block;
  border-top: 1px solid #95846b;
  border-bottom: 1px solid #95846b;
  padding: 7px 12px;
  background: #e4dfd3b8
}

.fv-copy {
  z-index: 2
}

.fv-buttons {
  z-index: 4
}

.fv-cut {
  isolation: isolate
}

.fv-cut img {
  display: block;
  position: relative;
  z-index: 1
}

.fv-cut:before {
  content: "";
  position: absolute;
  inset: 10px -12px -10px 12px;
  background: #fff;
  clip-path: polygon(28% 0, 100% 0, 72% 100%, 0 100%);
  z-index: 0
}

.fv-outline-size {
  font-size: clamp(70px, 10.8vw, 165px)
}

.fv .fv-en {
  left: auto;
  right: -.025em;
  bottom: 1%;
  z-index: 3;
  color: transparent;
  -webkit-text-fill-color: transparent;
  -webkit-text-stroke: 1px #f7f1e3;
  mix-blend-mode: overlay;
  opacity: 1;
  white-space: nowrap;
  line-height: .95;
  letter-spacing: .04em
}

.fv-en > p {
  margin: 0;
  line-height: inherit
}

.news-compact {
  background: #000;
  color: #fff;
  padding: 0 22px
}

.news-compact .webgene-item {
  border: 0
}

.news-compact .item {
  padding: 16px 0
}

.news-compact .catelabel {
  border-color: white;
  border-radius: 2px
}

.news-compact .label {
  flex-direction: row-reverse
}

.news-compact a,
.news-compact a p {
  color: white
}

.news-section > .newstop_b3 .item {
  flex-direction: column;
  align-items: flex-start;
  gap: 10px
}

.news-section .news-title {
  width: 100%
}

.hair-comparison > div > p:first-child {
  min-height: 48px
}

@media(max-width:1080px) {
  .fv-heading {
    left: 15%;
    top: 20%
  }
}

@media(max-width:576px) {
  .fv-heading {
    top: 16%;
    left: 5%
  }

  .fv-heading .fv-title {
    background: #d8d5c9b8;
    padding: 8px 12px;
    margin-top: 8px
  }

  .fv-certified {
    padding: 5px 8px
  }

  .fv .fv-en {
    bottom: 2%;
    right: -.04em
  }

  .fv-outline-size {
    font-size: clamp(58px, 13vw, 75px)
  }

  .fv-buttons {
    bottom: 14%
  }

  .fv-copy {
    bottom: 24%;
    max-width: 70%
  }

  .news-compact {
    padding: 0 15px
  }

  .news-compact .label .date {
    display: none
  }

  .fv-cut:before {
    inset: 7px -8px -7px 8px
  }
}

@media(min-width:577px) {
  .fv {
    height: clamp(675px, 56vw, 900px);
    min-height: 0;
    background: #ded9cb url('https://famillehair.com/system_panel/uploads/images/bg1.png') left top/auto repeat
  }

  .fv .cut-one {
    width: min(25vw, 320px);
    left: 1%;
    top: 16%
  }

  .fv .cut-two {
    width: min(25vw, 320px);
    left: 18%;
    top: 44%
  }

  .fv-heading {
    left: 22%;
    top: 15%
  }

  .fv-copy {
    top: calc(16% + min(23.18vw, 297px) + 28px);
    bottom: auto;
    left: 4.2%;
    width: 220px;
    max-width: 22%;
    padding: 0;
    background: none
  }

  .fv-copy p {
    line-height: 2.2
  }

  .fv-buttons {
    left: 5.5%;
    bottom: 6%;
    gap: 30px
  }

  .fv-buttons .more_f a {
    min-width: 185px;
    padding: 11px 20px
  }

  .fv-main {
    background-position: center top
  }
}

.fv-cut:before {
  inset: 0;
  clip-path: none;
  transform: translate(10px, 12px);
  background: white;
  -webkit-mask: var(--cut-mask) center/100% 100% no-repeat;
  mask: var(--cut-mask) center/100% 100% no-repeat
}

.cut-one {
  --cut-mask: url('https://famillehair.com/system_panel/uploads/images/fv2.png')
}

.cut-two {
  --cut-mask: url('https://famillehair.com/system_panel/uploads/images/fv3.png')
}

@media(max-width:576px) {
  .fv-cut:before {
    inset: 0;
    transform: translate(7px, 8px)
  }
}

.about-copy {
  margin-bottom: 30px
}

.about-copy p {
  margin-bottom: 0
}

@media(max-width:576px) {
  .about-copy br {
    display: initial
  }
}

.care-grid .care-icon {
  width: 88px;
  height: 88px;
  max-width: 85%;
  object-fit: contain;
  margin: 0 auto 16px
}

@media(max-width:576px) {
  .care-grid .care-icon {
    width: 72px;
    height: 72px
  }
}

.service-card-link {
  display: block;
  color: inherit;
  text-decoration: none
}

.service-card-link:hover,
.service-card-link:focus-visible {
  opacity: 1;
  color: inherit
}

.service-photo-wrap {
  overflow: hidden;
  border-radius: 4px
}

.service-photo-wrap img {
  transition: transform .5s ease
}

.service-card-link:hover .service-photo-wrap img,
.service-card-link:focus-visible .service-photo-wrap img {
  transform: scale(1.035)
}

.service-more {
  align-items: center;
  gap: .35em;
  transition: transform .3s, color .3s
}

.service-more > p {
  margin: 0
}

.service-card-link:hover .service-more,
.service-card-link:focus-visible .service-more {
  transform: translateX(4px);
  color: #98773f
}

.service-card-link > p:not([class]) {
  line-height: 2
}

.service-card-link:focus-visible {
  outline: 2px solid #bc9a5b;
  outline-offset: 6px
}

@media(prefers-reduced-motion:reduce) {
  .service-photo-wrap img,
  .service-more {
    transition: none;
    transform: none !important
  }
}

.news-compact .news-rotator {
  display:grid;overflow:hidden
}

.news-compact .news-rotator > .webgene-item {
  grid-area:1 / 1;min-width:0;visibility:hidden;pointer-events:none
}

.news-compact .news-rotator > .webgene-item.is-current {
  visibility:visible;pointer-events:auto
}

#news.news-section {
  padding-bottom:130px
}

.hair-comparison {
  display: flex;
  gap: 30px;
}

.hair-comparison > div {
  flex: 1;
}

@media screen and (max-width: 576px) {
  .hair-comparison {
    flex-direction: column;
    gap: 40px;
  }

  .hair-comparison > div {
    width: 100%;
  }

  .hair-comparison  p:not([class]) {
    text-align: center;
  }
}

body.on .fv-main {
  overflow: hidden;
}

body.on .fv-main > img {
  display: block;
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  max-width: none;
  margin: 0;
  object-fit: cover;
  object-position: center top;
  opacity: 0;
  transition: opacity 1.2s ease;
  pointer-events: none;
}

body.on .fv-main:not(.fv-running) > img:first-child,
body.on .fv-main.fv-running > img.fv-active {
  opacity: 1;
}

@media (max-width: 576px) {
  body.on .fv-main > img {
    object-position: 58% center;
  }
}

body:not(.on) .fv-main {
  position: relative;
  inset: auto;
  z-index: 10;
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 12px;
  width: 100%;
  padding: 12px;
  background: #fff;
  clip-path: none;
  overflow: visible;
}

body:not(.on) .fv-main > img {
  display: block;
  position: static;
  width: 100%;
  height: auto;
  max-width: 100%;
  margin: 0;
  opacity: 1;
  visibility: visible;
  pointer-events: auto;
  transition: none;
}

@media (prefers-reduced-motion: reduce) {
  body.on .fv-main > img {
    transition: none;
  }
}

body:not(.on) .fv {
  display: flex;
  flex-direction: column;
  gap: 24px;
  height: auto;
  min-height: 0;
  padding: 24px;
  overflow: visible;
}

body:not(.on) .fv > .fv-main,
body:not(.on) .fv > .fv-cut,
body:not(.on) .fv > .fv-heading,
body:not(.on) .fv > .fv-copy,
body:not(.on) .fv > .fv-en,
body:not(.on) .fv > .fv-buttons {
  position: relative;
  inset: auto;
  width: 100%;
  max-width: 100%;
  margin: 0;
  z-index: auto;
}

body:not(.on) .fv > .fv-cut {
  width: min(100%, 240px);
}

body:not(.on) .fv .fv-title {
  position: static;
}

body:not(.on) .fv > .fv-en {
  white-space: normal;
  overflow-wrap: anywhere;
}

body:not(.on) .fv > .fv-buttons {
  flex-wrap: wrap;
}

@media screen and (max-width: 576px) {
  body:not(.on) .fv > .fv-main {
    grid-template-columns: 1fr;
  }
}
