/* ページ全体（html/body）の標準余白をリセット
   ※スマホ表示でファーストビュー画像の上に余白ができる場合の対策 */
html, body{
  margin:0;
  padding:0;
}

:root{
  --black:#111111;
  --white:#ffffff;
  --red:#e2001a;
  --splash-red:#E61518;
  --gray-line:#dddddd;
  --gray-bg:#f5f5f5;
  --gray-text:#666666;
  /* ▼LPテンプレート自体に共通の固定ヘッダーがある場合のみ、その高さ(px)に変更してください。
     通常は 0px のままでOKです。 */
  --header-offset:0px;
}
.lp-root *{box-sizing:border-box;margin:0;padding:0;}

/* ---------- スプラッシュアニメーション ----------
   .lp-splash は lp-root の外（bodyの一番上）に配置されるため、
   .lp-root に依存しない単独のセレクタにしています */
.lp-splash{
  position:fixed;
  inset:0;
  z-index:9999;
  background:var(--splash-red);
  display:flex;
  align-items:center;
  justify-content:center;
  animation:lpSplashOut .7s cubic-bezier(.65,0,.35,1) forwards;
  animation-delay:1.6s;
}
.lp-splash-mark-link{
  display:block;
  line-height:0;
}
.lp-splash-mark{
  width:140px;
  max-width:40vw;
  opacity:0;
  transform:scale(.85);
  animation:lpSplashMarkIn .8s cubic-bezier(.22,1,.36,1) forwards;
  animation-delay:.2s;
}
@keyframes lpSplashMarkIn{
  to{ opacity:1; transform:scale(1); }
}
@keyframes lpSplashOut{
  to{ transform:translateY(-100%); visibility:hidden; pointer-events:none; }
}
/* アニメーションを好まない設定のユーザーには、動きを最小限にする */
@media (prefers-reduced-motion:reduce){
  .lp-splash{ animation:none; opacity:0; visibility:hidden; pointer-events:none; }
  .lp-splash-mark{ animation:none; opacity:1; transform:none; }
}

.lp-root{
  font-family:'Noto Sans JP','Hiragino Kaku Gothic ProN',sans-serif;
  color:var(--black);
  background:var(--white);
  line-height:1.7;
  -webkit-font-smoothing:antialiased;
  scroll-behavior:smooth;
}
.lp-root img{max-width:100%;display:block;}
.lp-root a{color:inherit;text-decoration:none;}

/* ---------- ① ファーストビュー ---------- */
.lp-root .hero{
  position:relative;
  width:100vw;
  left:50%;
  margin-left:-50vw;
  overflow:hidden;
  line-height:0;
}
.lp-root .hero img{
  width:100%;
  height:auto;
  display:block;
}

/* スマホ：LP_KV.png（16:9） / PC：LP_KV(PC面).png（横長・トリミング不要）を出し分け
   ※「.lp-root .hero img」より詳細度を上げるため img タグも含めて指定 */
.lp-root .hero img.hero-img-sp{
  display:block;
}
.lp-root .hero img.hero-img-pc{
  display:none;
}
@media (min-width:600px){
  .lp-root .hero img.hero-img-sp{
    display:none;
  }
  .lp-root .hero img.hero-img-pc{
    display:block;
  }
}

/* 商品一覧バナー（PC/SP共通で表示、中の画像だけ出し分け） */
.lp-root .hero-banner{
  display:block;
  width:100vw;
  position:relative;
  left:50%;
  margin-left:-50vw;
  padding:0;
  border:none;
  background:none;
  cursor:pointer;
  line-height:0;
  transition:opacity .2s ease;
}
.lp-root .hero-banner:hover{
  opacity:.85;
}
.lp-root .hero-banner img{
  width:100%;
  height:auto;
  display:block;
}
.lp-root .hero-banner img.hero-banner-sp{
  display:block;
}
.lp-root .hero-banner img.hero-banner-pc{
  display:none;
}
@media (min-width:600px){
  .lp-root .hero-banner img.hero-banner-sp{
    display:none;
  }
  .lp-root .hero-banner img.hero-banner-pc{
    display:block;
  }
}

/* 商品一覧ポップアップ */
.lp-root .popup-overlay{
  display:none;
  position:fixed;
  inset:0;
  z-index:1000;
  background:rgba(0,0,0,.7);
  align-items:center;
  justify-content:center;
  padding:24px;
}
.lp-root .popup-overlay.is-open{
  display:flex;
}
.lp-root .popup-content{
  position:relative;
  max-width:900px;
  max-height:90vh;
  width:100%;
}
.lp-root .popup-content img{
  width:100%;
  height:auto;
  max-height:90vh;
  object-fit:contain;
  display:block;
  border-radius:4px;
}
.lp-root .popup-close{
  position:absolute;
  top:-40px;
  right:0;
  width:36px;
  height:36px;
  border:none;
  border-radius:50%;
  background:#fff;
  color:var(--black);
  font-size:22px;
  line-height:1;
  cursor:pointer;
  display:flex;
  align-items:center;
  justify-content:center;
}

/* ---------- ② エリアナビ ---------- */
.lp-root .area-nav{
  position:sticky;
  top:var(--header-offset);
  z-index:50;
  background:#fff;
  border-bottom:1px solid var(--gray-line);
  padding:14px 12px;
}
.lp-root .area-nav ul{
  list-style:none;
  display:grid;
  grid-template-columns:repeat(4,1fr);
  gap:8px;
  max-width:720px;
  margin:0 auto;
}
.lp-root .area-nav button{
  width:100%;
  padding:12px 4px;
  font-family:'Noto Sans JP',sans-serif;
  font-size:14px;
  font-weight:700;
  letter-spacing:.05em;
  background:#fff;
  color:var(--black);
  border:1.5px solid var(--black);
  cursor:pointer;
  transition:background .2s ease,color .2s ease;
}
.lp-root .area-nav button:hover{
  background:#f0f0f0;
}
.lp-root .area-nav button.is-active{
  background:var(--black);
  color:#fff;
}

/* ---------- ③ エリアコンテンツ ---------- */
.lp-root .area-section{
  max-width:1080px;
  margin:0 auto;
  padding:48px 20px 64px;
  border-bottom:8px solid var(--gray-bg);
}
.lp-root .area-title{
  text-align:center;
  font-size:20px;
  font-weight:900;
  letter-spacing:.05em;
  margin-bottom:32px;
  position:relative;
}
.lp-root .area-title::before,
.lp-root .area-title::after{
  content:"";
  display:inline-block;
  width:24px;
  height:1px;
  background:var(--black);
  vertical-align:middle;
  margin:0 10px;
}

.lp-root .staff-grid{
  position:relative;
  display:flex;
  flex-direction:column;
}
.lp-root .staff-card{
  position:relative;
  z-index:1;
  display:flex;
  flex-direction:column;
  margin-bottom:36px;
}
.lp-root .staff-card + .staff-card{
  padding-top:36px;
  border-top:1px solid var(--gray-line);
}

/* 写真ペア(STAFF PHOTO＋STYLE PHOTO)を1つの枠にまとめる */
.lp-root .photo-row{
  position:relative;
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:16px;
}

/* 写真ペアの背景に流れる文字（"LIPPS hair"）
   .staff-grid はページ中央に配置されているコンテナ（.area-section）の
   幅いっぱいに広がる要素のため、これを基準に画面幅いっぱい(100vw)へ
   ブレイクアウトさせることで、PCでも正しく画面中央に配置されます。
   縦位置・高さは写真ペア(.photo-row)の実際の高さにJSで合わせています。 */
.lp-root .area-bg-marquee{
  position:absolute;
  top:0;
  left:50%;
  width:100vw;
  margin-left:-50vw;
  height:300px; /* JS未実行時のフォールバック値 */
  overflow:hidden;
  white-space:nowrap;
  pointer-events:none;
  z-index:0;
}
.lp-root .area-bg-marquee .marquee-track{
  display:inline-flex;
  align-items:center;
  height:100%;
  animation:lpMarqueeScroll 24s linear infinite;
  will-change:transform;
}
.lp-root .area-bg-marquee span{
  flex:0 0 auto;
  font-family:'Oswald',sans-serif;
  font-weight:700;
  font-style:italic;
  font-size:clamp(32px,6vw,72px);
  letter-spacing:.02em;
  color:var(--gray-line);
  padding-right:.4em;
}
@keyframes lpMarqueeScroll{
  from{ transform:translateX(0); }
  to{ transform:translateX(-50%); }
}
@media (prefers-reduced-motion:reduce){
  .lp-root .area-bg-marquee .marquee-track{ animation:none; }
}

/* 写真ペア内の実コンテンツ（写真・名前・STYLEタグ）は背景文字より前面に表示 */
.lp-root .staff-basic,
.lp-root .style-block{
  position:relative;
  z-index:1;
}

.lp-root .staff-basic{
  display:flex;
  flex-direction:column;
}
.lp-root .staff-photo-wrap{
  aspect-ratio:3/4;
  background:#e9e9e9;
  border:1px solid var(--black);
  display:flex;
  align-items:center;
  justify-content:center;
  overflow:hidden;
}
.lp-root .staff-photo-wrap img{width:100%;height:100%;object-fit:cover;}
.lp-root .ph-label{
  font-family:'Oswald',sans-serif;
  font-size:11px;
  letter-spacing:.08em;
  color:#999;
  text-align:center;
  padding:0 6px;
}
.lp-root .staff-name{
  margin-top:10px;
  font-size:15px;
  font-weight:700;
}
.lp-root .staff-store{
  display:block;
  margin-top:2px;
  font-size:12px;
  font-weight:500;
  color:var(--gray-text);
}
@media (min-width:600px){
  .lp-root .staff-name{
    white-space:nowrap;
  }
  .lp-root .staff-store{
    display:inline;
    margin-top:0;
    margin-left:.3em;
    font-size:11px;
    font-weight:500;
    color:var(--gray-text);
  }
}

.lp-root .style-block{
  display:flex;
  flex-direction:column;
}
.lp-root .style-photo-wrap{
  aspect-ratio:3/4;
  background:#e9e9e9;
  border:3px solid var(--red);
  display:flex;
  align-items:center;
  justify-content:center;
  overflow:hidden;
}
.lp-root .style-photo-wrap img{width:100%;height:100%;object-fit:cover;}
.lp-root .style-tag{
  align-self:flex-start;
  margin-top:10px;
  background:#fff;
  color:var(--red);
  font-family:'Oswald',sans-serif;
  font-weight:700;
  font-size:13px;
  letter-spacing:.05em;
  padding:2px 10px;
  border:2px solid var(--red);
}

/* STYLE PHOTO 自動スライドショー */
.lp-root .style-slideshow{
  position:relative;
  width:100%;
  height:100%;
}
.lp-root .style-slideshow img{
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  object-fit:cover;
  opacity:0;
  transition:opacity .8s ease;
}
.lp-root .style-slideshow img.is-active{
  opacity:1;
}

.lp-root .item-block{
  margin-top:20px;
}
.lp-root .item-block .item-heading{
  display:flex;
  align-items:center;
  font-size:13px;
  font-weight:700;
  margin-bottom:10px;
}
.lp-root .item-block .item-heading::before{
  content:"";
  width:4px;
  height:14px;
  background:var(--red);
  display:inline-block;
  margin-right:6px;
}
.lp-root .item-list{
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:10px;
}
.lp-root .item-link{
  display:block;
  transition:opacity .2s ease;
}
.lp-root .item-link:hover{
  opacity:.75;
}
.lp-root .item-thumb{
  aspect-ratio:1/1;
  background:var(--gray-bg);
  border:1px solid var(--gray-line);
  display:flex;
  align-items:center;
  justify-content:center;
}

.lp-root .comment-box{
  margin-top:14px;
  background:var(--gray-bg);
  border:1px solid var(--gray-line);
  padding:16px;
  min-height:76px;
  font-size:13px;
  color:var(--gray-text);
}
.lp-root .comment-box .comment-title{
  font-weight:700;
  color:var(--black);
  margin-bottom:6px;
  font-size:12px;
  letter-spacing:.05em;
}
.lp-root .comment-box p{
  margin-top:8px;
}
.lp-root .comment-box p:first-of-type{
  margin-top:0;
}
.lp-root .comment-box strong{
  color:var(--black);
}

/* 指名して予約ボタン */
.lp-root .reserve-btn{
  display:block;
  margin-top:14px;
  padding:14px;
  background:var(--red);
  color:#fff;
  text-align:center;
  font-weight:700;
  font-size:15px;
  letter-spacing:.05em;
  border-radius:2px;
  transition:opacity .2s ease;
}
.lp-root .reserve-btn:hover{
  opacity:.85;
}

/* エリア準備中(骨子確認用のプレースホルダー) */
.lp-root .area-placeholder{
  text-align:center;
  padding:60px 20px;
  color:#aaa;
  font-family:'Oswald',sans-serif;
  font-size:13px;
  letter-spacing:.08em;
  border:1px dashed var(--gray-line);
}

/* フッター編集欄の内容は .lp-root の「外側」に出力されるため、
   .lp-root を親要素として要求しない単独のセレクタにしています */
.lp-footer{
  text-align:center;
  padding:32px 20px;
  font-size:11px;
  background:var(--black);
  color:#888;
}
.lp-footer-link{
  display:inline-block;
  margin-bottom:10px;
  color:#fff;
  font-weight:700;
  text-decoration:underline;
}
.lp-footer-link:hover{
  opacity:.8;
}

/* ECForce LPテンプレート側の footer タグに、購入ボタン固定表示等の
   独自スタイル（position:fixed 等）が既定で入っている場合の保険として、
   継承されうるスタイルをリセットしています。
   ※もし別途フッター固定ボタン等をこのLPで使う場合はこの記述は削除してください。 */
footer{
  position:static !important;
  width:auto !important;
  height:auto !important;
  z-index:auto !important;
}

@media (min-width:600px){
  .lp-root .area-nav ul{grid-template-columns:repeat(8,1fr);}

  .lp-root .staff-grid{
    flex-direction:row;
    flex-wrap:wrap;
    justify-content:center;
    column-gap:64px;
    row-gap:48px;
  }
  .lp-root .staff-card{
    width:464px;
    margin-bottom:0;
  }
  .lp-root .photo-row{
    grid-template-columns:220px 220px;
    gap:24px;
  }
  .lp-root .staff-card + .staff-card{
    padding-top:0;
    border-top:none;
  }
}