@import "./common.css";

/* ---------- animation ---------- */
.fade-in-left {
opacity: 0;
transform: translateX(-50px);
transition: all 0.8s ease-out;
}
.fade-in-right {
opacity: 0;
transform: translateX(50px);
transition: all 0.8s ease-out;
}
.fade-in.visible {
opacity: 1;
transform: translateX(0);
}


@keyframes fadeInLeft {
from {
  opacity: 0;
  transform: translateX(-30px);
}
to {
  opacity: 1;
  transform: translateX(0);
}
}


.top-text#main {
/* 最初は透明だけど、fadeInDelayed で 1 まで上がる */
opacity: 1;
animation:
  slowZoom 10s ease-in-out forwards;
}

@keyframes fadeInDelayed {
from { opacity: 0; }
to { opacity: 1; }
}

/* ナビだけフェードさせたいなら .top-section だけにする */
.top-section {
animation: fadeInDelayed 3s ease forwards;
opacity: 0;
transition: opacity 1s ease;
}

/* テキストだけふわっと出す */
.top-fadein{
opacity: 0;
animation: fadeInDelayed 3s ease forwards;
}



/* ------------------------------ トップイメージ */

/* ------------------------------
 トップイメージ共通設定
------------------------------ */

/* ▼ グローバル変数（すべてのデバイスで共通） */
:root {
--overlay-delay: 5.3s;   /* 動画の白面を消し始めるまでの待ち */
--overlay-dur:   0.4s;   /* 白面が消えるまでの時間 */
--bg-delay:      5.4s;   /* 背景画像のフェード開始までの待ち */
--bg-dur:        1.8s;   /* 背景画像のフェード時間 */
--text-delay:    6.3s;   /* 文字フェード開始までの待ち */
--text-dur:      4.2s;   /* 文字のフェード時間（スライド＋フェード） */
}

/* 2回目以降（introPlayed=true）時の即時停止オーバーライド */
.intro-skip {
--overlay-delay: 0s !important;
--overlay-dur:   0s !important;
--bg-delay:      0s !important;
--bg-dur:        0s !important;
--text-delay:    0s !important;
--text-dur:      0s !important;
}

.intro-skip #intro {
display: none !important;
pointer-events: none !important;
opacity: 0 !important;
transition: none !important;
animation: none !important;
}

.intro-skip #intro * {
transition: none !important;
animation: none !important;
}

/* ▼ アニメーション定義（共通） */
@keyframes overlayFade {
0% { opacity: 1; }
99% { opacity: 0; }
100% { opacity: 0; visibility: hidden; pointer-events: none; }
}

@keyframes bgFadeIn {
from { opacity: 0; }
to   { opacity: 1; }
}

@keyframes slideFadeIn {
from { opacity: 0; transform: translateX(-40px); }
to   { opacity: 1; transform: translateX(0); }
}

@keyframes slowZoom {
0%   { transform: scale(1); }
100% { transform: scale(1.06); }  /* おしゃれに見えるのは 1.03〜1.08 */
}

@keyframes oilMotion {
0%   { transform: rotate(0deg)   scale(1); }
50%  { transform: rotate(180deg) scale(1.05); }
100% { transform: rotate(360deg) scale(1); }
}

@keyframes oilFadeIn {
from { opacity: 0; transform: scale(0.95); }
to   { opacity: 1; transform: scale(1); }
}

@keyframes bgFadeOut {
from { opacity: 1; }
to   { opacity: 0; }
}


/* =====================================
   Intro Overlay
===================================== */

.intro-overlay {
position: fixed;
inset: 0;
background-color: #fff;
display: flex;
align-items: center;
justify-content: center;
z-index: 9999;
overflow: hidden;
opacity: 1;
animation: overlayFade var(--overlay-dur) ease var(--overlay-delay) forwards;
will-change: opacity;
}

.body-lock {
overflow: hidden;
overscroll-behavior: none;
touch-action: none;
}

/* =====================================
   Intro Video
===================================== */

.intro-logo {
width: 100%;
height: auto;
object-fit: cover;
object-position: 50% 50%;
display: block;
animation: none !important;
}

/* まず全部隠す */
.intro-overlay video {
  display: none;
}

/* ★intro-overlay配下のsp動画だけ表示（詳細度を上げて勝つ） */
.intro-overlay video.intro-video-sp {
  display: block;
}

/* Introはスマホのみ表示 */
@media (min-width: 768px) {
  #intro {
    display: none !important;
    pointer-events: none !important;
    opacity: 0 !important;
    animation: none !important;
  }
}


/* =====================================
   Top Section
===================================== */

.top-text {
  position: relative;
  width: 100%;
  overflow: hidden;

  /* iOS / 各ブラウザのvhズレ対策 */
  height: 100svh;
  height: 100dvh;
  height: 100vh;
  min-height: 0;

  display: flex;
  align-items: center;
  justify-content: center;

  /* セーフエリア吸収 */
  padding-top: env(safe-area-inset-top);
  padding-bottom: env(safe-area-inset-bottom);
  box-sizing: border-box;

  /* 既存踏襲 */
  animation: slowZoom 10s ease-in-out forwards;
  transform-origin: center;
}

/* =====================================
   円形テキスト：画面（top-text）の右上へ固定
   ※オブジェクト基準ではなくビューポート基準
===================================== */
.top-text::after{
  content: "";
  position: absolute;
  z-index: 6;

  /* 画面右上（セーフエリア考慮） */
  top: calc(env(safe-area-inset-top) + 18px);
  right: 18px;

  width: 170px;
  height: 170px;

  opacity: 0.55;
  pointer-events: none;
  user-select: none;

  background-repeat: no-repeat;
  background-size: contain;
  background-position: center;

  transform: rotate(8deg);

  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='200' height='200' viewBox='0 0 200 200'%3E%3Cdefs%3E%3Cpath id='p' d='M100,100 m-72,0 a72,72 0 1,1 144,0 a72,72 0 1,1 -144,0'/%3E%3C/defs%3E%3Ctext fill='%23E36B71' font-size='12' letter-spacing='3'%3E%3CtextPath href='%23p' startOffset='50%25' text-anchor='middle'%3Eintroduce%20only%20%E3%83%BB%20beauty%20acupuncture%20%E3%83%BB%20quiet%20beauty%20%E3%83%BB%20deep%20balance%20%E3%83%BB%3C/textPath%3E%3C/text%3E%3C/svg%3E");
}

/* “背面”レイヤーを持つ親 */
.top-pc-text1 {
  position: relative;
  width: 100%;
  height: 100%;
  min-height: 0;

  display: flex;
  align-items: center;
  justify-content: center;

  opacity: 0;
  animation: slideFadeIn var(--text-dur) ease var(--text-delay) forwards;
}

/* 背景 */
.top-pc-text1 > img,
.top-pc-text1 > canvas {
  position: absolute;
  inset: 0;
  z-index: 0;
}

.nowrap {
  white-space: nowrap;
  display: inline-block;
}

.top-picture-img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
}

#bubbleCanvas {
  width: 100%;
  height: 100%;
  display: block;
}

/* =====================================
   白い透過ボックス（左下配置＋ガラス感）
   ※透過を“弱める”＝白を少し濃く
===================================== */
.top-textbox {
  position: absolute;
  z-index: 2;
  left: clamp(16px, 5vw, 72px);
  bottom: clamp(18px, 7vh, 92px);
  width: min(800px, 90vw);

  background: transparent;
  border: none;
  backdrop-filter: none;
  -webkit-backdrop-filter: none;

  border-radius: 22px;
  box-sizing: border-box;
  padding: clamp(18px, 3.2vw, 30px);

  display: flex;
  align-items: flex-end;
  justify-content: flex-start;
  text-align: left;

  overflow: visible;
}

/* （重要）円をtop-textに移したので、textbox側の円は無効化 */
.top-textbox::before{
  content: none;
}

/* =====================================
   テキスト本体（タイポっぽく）
===================================== */
.top-textbox .text-fadein {
  background: none !important;
  box-shadow: none !important;
  padding: 0 !important;
  border-radius: 0 !important;
  margin: 0 !important;

  display: block;
  text-align: left;

  color: rgb(165, 105, 95);

  letter-spacing: 0.02em;
  line-height: 1.6;
  font-size: 26px;
  font-weight: bold;

  white-space: normal;
  word-break: normal;
  overflow-wrap: break-word;

  /* アニメーション用 */
  opacity: 0;
  transform: translateY(12px);
  animation: textFadeIn 1.6s ease-out 0.6s forwards;
  will-change: opacity, transform;
}

/* フェードイン定義（★必須） */
@keyframes textFadeIn {
  from {
    opacity: 0;
    transform: translateY(12px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

/* br由来の余白制御（<br><br>想定） */
.top-textbox .text-fadein br {
  display: block;
  margin-top: 0.55em;
}
.top-textbox .text-fadein br + br {
  margin-top: 0.85em;
}

/* 動きを減らす設定の人向け */
@media (prefers-reduced-motion: reduce) {
  .top-textbox .text-fadein {
    animation: none;
    opacity: 1;
    transform: none;
  }
}

/* -----------------------------
   スマホ（〜767px）
----------------------------- */
@media (max-width: 767px) {
  .top-textbox {
    left: 24px;
    right: 24px;
    width: auto;

    bottom: clamp(96px, 18vh, 160px);
    padding: 20px 0px 20px 14px;
    border-radius: 18px;

    /* スマホは背景が近いので少しだけ濃くして可読性確保 */
    background: transparent;
    border: none;
    backdrop-filter: none;
    -webkit-backdrop-filter: none;
  }

  .top-textbox .text-fadein {
    font-size: 30px;  
    line-height: 1.4;
    letter-spacing: 0.02em;
  }

  /* 円：画面右上（スマホは少し小さく） */
  .top-text::after{
    top: calc(env(safe-area-inset-top) + 130px);
    right: 30px;
    width: 170px;
    height: 170px;
    opacity: 0.52;
  }
}

/* -----------------------------
   タブレット（768px〜1199px）
----------------------------- */
@media (min-width: 768px) and (max-width: 1199px) {

  .top-text {
    height: 100svh;
    height: 100dvh;
    height: 100vh;
    min-height: 0;

    padding-top: env(safe-area-inset-top);
    padding-bottom: env(safe-area-inset-bottom);
  }

  .top-pc-text1 {
    height: 100%;
    min-height: 0;
  }

  .top-textbox {
    width: min(600px, 70vw);
    padding: 26px 24px;
    border-radius: 22px;

    left: clamp(22px, 5vw, 84px);
    bottom: clamp(22px, 7vh, 104px);

    background: transparent;
    border: none;
    backdrop-filter: none;
    -webkit-backdrop-filter: none;
  }

  .top-textbox .text-fadein {
    font-size: 26px;
    line-height: 1.26;
    letter-spacing: 0.04em;
  }

  /* 円：画面右上（タブレット） */
  .top-text::after{
    top: calc(env(safe-area-inset-top) + 36px);
    right: 36px;
    width: 150px;
    height: 150px;
    opacity: 0.54;
  }
}


/* -----------------------------
   PC（1200px〜）
----------------------------- */
@media (min-width: 1200px) {

  .top-pc-text1 {
    max-width: 1500px;
    margin: 0 auto;
  }

  .top-textbox {
    width: min(800px, 90vw);
    padding: 30px 30px;
    border-radius: 24px;

    left: clamp(36px, 6vw, 110px);
    bottom: clamp(28px, 8vh, 120px);

    background: transparent;
    border: none;
    backdrop-filter: none;
    -webkit-backdrop-filter: none;
  }

.top-textbox .text-fadein {
  background: none !important;
  box-shadow: none !important;
  padding: 0 !important;
  border-radius: 0 !important;
  margin: 0 !important;

  display: block;
  text-align: left;

  color: rgb(165, 105, 95);

  /* タイポグラフィの核 */
  font-size: clamp(26px, 2.1vw, 34px);
  line-height: 1.25;
  letter-spacing: 0.04em;

  white-space: normal;
  word-break: normal;
  overflow-wrap: normal;
}

/* brは「ただの改行」にする */
.top-textbox .text-fadein br {
  display: block;
  content: "";
  line-height: 0;
  margin: 0;
}

  .top-textbox br.sp {
    display: none;
  }

  /* 改行制御（既存踏襲） */
  .top-textbox .nowrap::before {
    content: "\2060";
  }
  .top-textbox .nowrap {
    white-space: nowrap;
  }

  .top-picture-img {
    object-position: center top;
  }

  /* 円：画面右上（PC） */
  .top-text::after{
    top: calc(env(safe-area-inset-top) + 100px);
    right: 40px;
    width: 170px;
    height: 170px;
    opacity: 0.55;
  }
}



/* =====================================
   Background Images
===================================== */

.top-picture-img,
.top-img-slide,
.top-img-slide2 {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
object-fit: cover;
}

/* 1枚目 */
.top-picture-img {
z-index: 0;
opacity: 0;
animation:
  bgFadeIn  var(--bg-dur) ease var(--bg-delay) forwards,
  bgFadeOut var(--bg-dur) ease calc(var(--bg-delay) + 5s) forwards;
will-change: opacity;
}

/* 2枚目 */
.top-img-slide {
z-index: 1;
opacity: 0;
animation:
  bgFadeIn  var(--bg-dur) ease calc(var(--bg-delay) + 5s) forwards,
  bgFadeOut var(--bg-dur) ease calc(var(--bg-delay) + 10s) forwards;
will-change: opacity;
}

/* 3枚目 */
.top-img-slide2 {
z-index: 1;
opacity: 0;
animation:
  bgFadeIn var(--bg-dur) ease calc(var(--bg-delay) + 10s) forwards;
will-change: opacity;
}

/* =====================================
   Oil Circle
===================================== */

.oil-circle {
position: absolute;
bottom: 3%;
right: 3%;
width: 100px;
z-index: 3;
pointer-events: none;
animation:
  oilFadeIn var(--text-dur) ease var(--text-delay) forwards,
  oilMotion 40s ease-in-out infinite;
}

/* =====================================
   Text Overlay
===================================== */

.text-fadein {
display: flex;
align-items: center;
justify-content: center;
flex-direction: column;
position: relative;
z-index: 1;
font-family: 'Shippori Mincho B1', serif;
line-height: 2;
text-align: center;
opacity: 0;
transform: translateX(-40px);
animation: slideFadeIn var(--text-dur) ease var(--text-delay) forwards;
will-change: opacity, transform;
width: 80%;
margin: 30px auto;
border-radius: 12px;
color: #b48a5a;
text-shadow: 0 0 8px rgba(255,255,255,.4);
background: rgba(255,255,255,.50);
}

/* =====================================
   Responsive Settings
===================================== */

/* 共通：スマホ〜タブレット */
@media (max-width: 1199px) {
.intro-logo {
  width: 200vw;
  height: 200dvh;
  aspect-ratio: auto;
  transform: scale(0.5);
  transform-origin: center;
}
}

/* 小型スマホ */
@media (max-width: 390px) {
.text-fadein {
  font-size: 22px;
}
}

/* スマホ */
@media (min-width: 391px) and (max-width: 767px) {
.text-fadein {
  font-size: 24px;
  margin: 100px auto 30px;
}
}

/* タブレット */
@media (min-width: 768px) and (max-width: 1199px) {
.text-fadein {
  font-size: 36px;
  margin: 100px auto 30px;
}
}

/* PC */
@media (min-width: 1200px) {
.intro-logo {
  width: 100vw;
  height: 100vh;
  height: 100dvh;
  transform: none;
}

.text-fadein {
  font-size: 36px;
  margin: 20px auto 30px;
}
}


/* ---------------- コンセプトセクション ---------------- */

/* =========================================
  1) ピンクのメッセージ
     「美と健康は、心と身体、そして自律神経が…」
========================================= */
.concept-message{
  width: min(90%, 820px);
  margin: 0 auto 16px;

  padding: 0 12px;
  box-sizing: border-box;

  text-align: center;

  /* フォント指定（pxのみ） */
  font-size: 24px;          /* PC・タブレット基準 */
  font-weight: bold;
  line-height: 1.9;
  letter-spacing: 0.02em;

  color: #E36B71;
}

/* br.rows による改行後の余白調整 */
.concept-message .rows{
  display: block;
  margin-top: 6px;
}

/* ---------- スマホ（〜767px） ---------- */
@media (max-width: 767px){
  .concept-message{
    width: min(92%, 520px);
    padding: 0 12px;

    font-size: 18px;
    font-weight: bold;
    line-height: 2.05;

    margin-bottom: 14px;
  }

  .concept-message .rows{
    margin-top: 8px;
  }
}

/* ---------- 小型スマホ（〜390px） ---------- */
@media (max-width: 390px){
  .concept-message{
    width: min(92%, 480px);
    padding: 0 12px;

    font-size: 17px;
    font-weight: bold;
    line-height: 2.1;
  }
}


/* =========================================
  2) 本文説明
========================================= */

.concept-description{
  width: min(92%, 820px);
  margin: 22px auto 0;

  padding: 0 10px;
  box-sizing: border-box;

  text-align: left;

  font-size: 16px;        /* PC・タブレット基準 */
  font-weight: normal;
  line-height: 1.75;
  letter-spacing: 0.01em;
}

/* ---------- スマホ（〜767px） ---------- */
@media (max-width: 767px){
  .concept-description{
    width: min(96%, 560px);
    padding: 0 20px;

    font-size: 15.5px;
    line-height: 1.7;
    margin-top: 18px;
  }
}

/* ---------- 小型スマホ（〜390px） ---------- */
@media (max-width: 390px){
  .concept-description{
    width: min(96%, 520px);
    padding: 0 22px;

    font-size: 15px;
    line-height: 1.75;
  }
}

/* ---------- タブレット（768px〜1199px） ---------- */
@media (min-width: 768px) and (max-width: 1199px){
  .concept-description{
    width: min(88%, 900px);
    padding: 0 16px;

    font-size: 20px;
    line-height: 1.75;
  }
}

/* ---------- PC（1200px〜） ---------- */
@media (min-width: 1200px){
  .concept-description{
    width: min(78%, 920px);
    padding: 0 16px;

    font-size: 20px;
    line-height: 1.75;
  }
}



/* =====================================================
   FEATURES セクション（差分のみ）
===================================================== */

/* ---------- セクション内共通 ---------- */

.features-section {
  position: relative;
}

.feature-item {
  margin-bottom: 60px;
}

/* バッジは common.css の .section-badge を使用
   必要なら Features だけ位置を微調整（基本は不要） */
.features-section .section-header .section-badge {
  top: -40px;
  right: 5px;
}

/* 隠れNANA */
.hidden-nana {
  position: absolute;
  bottom: 20px;
  right: 20px;
  width: 10px;
  cursor: pointer;
  z-index: 2;
}


/* ---------- レイアウト共通 ---------- */

.feature-content {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 2rem;
  margin-bottom: 4rem;
}

.feature-text {
  flex: 1;
  min-width: 300px;
}

.feature-text ul {
  padding-left: 1.2rem;
  list-style-type: disc;
}

.feature-text ul li {
  margin-bottom: 1rem;
  line-height: 1.6;
}


/* =====================================================
   スマホ・小型スマホ（〜767px）
===================================================== */

@media (max-width: 767px) {
  .feature-img {
    width: 250px;
    height: 250px;
    object-fit: cover;
    border-radius: 50%;
    margin: 0 auto;
    box-shadow: 0 8px 20px rgba(0, 0, 0, 0.2);
    opacity: 0;
    transform: translateX(-40px);
    animation: featureSlideIn 2.4s ease forwards;
    transition: transform 0.8s ease, box-shadow 0.8s ease;
  }

  .feature-img:hover {
    transform: translateX(-35px) scale(1.03);
    box-shadow: 0 12px 28px rgba(0, 0, 0, 0.3);
  }

  .feature-title {
    font-size: 22px;
    font-weight: bold;
    color: #E36B71;
    line-height: 2;
    text-align: center;
    margin: 0 auto;
    opacity: 0;
    transform: translateY(20px);
    animation: fadeInUp 1s ease forwards;
    animation-delay: 1s;
  }

  .feature-subtitle {
    font-size: 18px;
    text-decoration: underline #E36B71;
    text-decoration-thickness: 0.9px;
    text-underline-offset: 6px;
    margin: 30px auto;
    text-align: center;
    color: #333;
    opacity: 0;
    transform: translateY(20px);
    animation: fadeInUp 1s ease forwards;
    animation-delay: 1.2s;
  }

  .feature-text ul {
    font-size: 17px;
    width: 85%;
    margin: 0 auto;
    opacity: 0;
    transform: translateY(20px);
    animation: fadeInUp 1s ease forwards;
    animation-delay: 1.4s;
  }
}


/* =====================================================
   タブレット（768px〜1199px）
===================================================== */

@media (min-width: 768px) and (max-width: 1199px) {
  .feature-img {
    width: 200px;
    height: 200px;
    object-fit: cover;
    border-radius: 8px;
    margin: 0 auto 0 20px;
  }

  .feature-title {
    font-size: 26px;
    font-weight: bold;
    color: #E36B71;
    line-height: 2;
    text-align: left;
  }

  .feature-subtitle {
    font-size: 22px;
    text-decoration: underline #E36B71;
    text-decoration-thickness: 0.9px;
    text-underline-offset: 4px;
    margin: 30px auto;
    color: #333;
  }

  .feature-text ul {
    font-size: 20px;
    width: 85%;
    margin: 0 auto;
  }
}


/* =====================================================
   PC（1200px〜）
===================================================== */

@media (min-width: 1200px) {
  .feature-img {
    width: 300px;
    height: 300px;
    object-fit: cover;
    border-radius: 8px;
    margin-left: 30px;
  }

  .feature-title {
    font-size: 30px;
    font-weight: bold;
    color: #E36B71;
    line-height: 1.5;
  }

  .feature-subtitle {
    font-size: 20px;
    text-decoration: underline #E36B71;
    text-decoration-thickness: 0.9px;
    text-underline-offset: 4px;
    margin: 30px 0;
    color: #333;
  }

  .feature-text ul {
    font-size: 18px;
    width: 90%;
  }
}



/* =====================================================
   FEATURES 専用アニメーション
===================================================== */

@keyframes featureSlideIn {
to {
  opacity: 1;
  transform: translateX(0);
}
}



/* =====================================================
   THERAPIST セクション（差分のみ）
===================================================== */

/* ---------- セクション内共通 ---------- */

.therapist-section {
  position: relative;
}

/* バッジは common.css の .section-badge を使用
   必要なら Therapist だけ位置を微調整（基本は不要） */
.therapist-section .section-header .section-badge {
  top: -40px;
  right: 5px;
}

/* プロフィール全体 */
.therapist-profile {
  max-width: 1100px;
  margin: 0 auto;
}

/* 写真 */
.therapist-photo {
  flex-shrink: 0;
}

.therapist-photo img {
  width: 100%;
  height: auto;
  border-radius: 12px;
}

/* 説明文全体 */
.therapist-description {
  text-align: left;
}

/* 名前 */
.therapist-name {
  font-weight: bold;
  border-left: 3px solid #E36B71;
  padding-left: 1rem;
}

/* メッセージボックス */
.therapist-message {
  background-color: #F6E3DE;
  padding: 20px 20px 40px;
  position: relative;
  margin-top: 20px;
}

.therapist-message h4 {
  color: #E36B71;
}

/* h4間の余白 */
.mt-space {
  margin-top: 30px;
}

/* リスト */
.therapist-message ul {
  list-style-type: disc;
  padding-left: 1.5rem;
  margin-top: 20px;
}

.therapist-message li {
  margin-bottom: 1rem;
  line-height: 1.6;
  color: #333;
}

/* サイン */
.signature {
  position: absolute;
  bottom: 20px;
  right: 10px;
}


/* =====================================================
   小型スマホ（〜390px）
===================================================== */

@media (max-width: 390px) {
  .therapist-section .section-header .section-badge {
    top: -40px;
    right: 5px;
  }

  .therapist-profile {
    display: block;
  }

  .therapist-photo {
    margin: 0 auto;
    text-align: center;
  }

  .therapist-photo img {
    width: 90%;
  }

  .therapist-name {
    font-size: 18px;
    width: 80%;
    margin: 30px auto;
    text-align: center;
  }

  .therapist-message h4 {
    font-size: 20px;
  }

  .therapist-message ul {
    font-size: 17px;
  }

  .signature {
    width: 200px;
  }
}


/* =====================================================
   スマホ（391px〜767px）
===================================================== */

@media (min-width: 391px) and (max-width: 767px) {
  .therapist-profile {
    display: block;
  }

  .therapist-photo {
    width: 350px;
    margin: 0 auto;
  }

  .therapist-name {
    font-size: 22px;
    width: 80%;
    margin: 30px auto;
    text-align: center;
  }

  .therapist-message h4 {
    font-size: 20px;
  }

  .therapist-message ul {
    font-size: 18px;
  }

  .signature {
    width: 200px;
  }
}


/* =====================================================
   タブレット（768px〜1199px）
===================================================== */

@media (min-width: 768px) and (max-width: 1199px) {
  .therapist-profile {
    display: block;
  }

  .therapist-photo {
    width: 350px;
    margin: 0 auto;
  }

  .therapist-name {
    font-size: 24px;
    width: 45%;
    margin: 30px auto;
    text-align: center;
  }

  .therapist-message h4 {
    font-size: 24px;
  }

  .therapist-message ul {
    font-size: 20px;
  }

  .signature {
    width: 200px;
  }
}


/* =====================================================
   PC（1200px〜）
===================================================== */

@media (min-width: 1200px) {
  .therapist-profile {
    display: flex;
    align-items: flex-start;
    gap: 40px;
  }

  .therapist-photo {
    width: 350px;
  }

  .therapist-photo img {
    transition: transform 0.3s ease, box-shadow 0.3s ease;
    will-change: transform;
  }

  .therapist-photo img:hover {
    transform: translateY(-5px);
    box-shadow: 0 8px 20px rgba(227, 107, 113, 0.2);
  }

  .therapist-description {
    flex: 1;
  }

  .therapist-name {
    font-size: 1.5rem;
    margin-bottom: 1rem;
  }

  .therapist-message h4 {
    font-size: 20px;
  }

  .therapist-message ul {
    font-size: 16px;
  }

  .signature {
    width: 200px;
  }
}


/* =====================================================
   FLOW セクション（差分のみ）
===================================================== */

/* ---------- 共通（全デバイス） ---------- */

.flow-section {
position: relative;
}

.cards {
max-width: 1200px;
margin: 0 auto;
box-sizing: border-box;
}

/* カード共通 */
.card {
background-color: #fff;
border-radius: 1rem;
padding: 2rem;
box-shadow: 0 4px 12px rgba(0,0,0,0.08);
min-height: 300px;
position: relative;
opacity: 0;
transform: translateY(30px);
animation: fadeInUp 0.8s forwards;
}

/* フェードイン遅延 */
.card:nth-child(1) { animation-delay: 0.1s; }
.card:nth-child(2) { animation-delay: 0.3s; }
.card:nth-child(3) { animation-delay: 0.5s; }
.card:nth-child(4) { animation-delay: 0.7s; }

/* ステップヘッダー */
.step-header {
display: flex;
align-items: center;
gap: 1rem;
}

/* ステップ丸 */
.step-circle {
background-color: #eb7b84;
color: #fff;
font-weight: bold;
border-radius: 50%;
width: 60px;
height: 60px;
display: flex;
align-items: center;
justify-content: center;
font-size: 0.9rem;
margin-bottom: 1rem;
}

/* タイトル */
.card h3 {
color: #eb7b84;
font-weight: bold;
line-height: 2.0;
margin-bottom: 0.5rem;
}

/* 説明文 */
.card p {
color: #555;
line-height: 2.0;
}

/* 画像 */
.step-image {
width: 100%;
max-height: 250px;
object-fit: cover;
margin-top: 1rem;
}

/* NOTE */
.flow-note {
text-align: center;
color: #E36B71;
font-weight: bold;
width: 90%;
margin: 0 auto;
}

/* hover */
.card:hover {
transform: translateY(-5px);
}

/* アニメーション */
@keyframes fadeInUp {
to {
  opacity: 1;
  transform: translateY(0);
}
}


/* =====================================================
   小型スマホ（〜390px）
===================================================== */

@media (max-width: 390px) {
.cards {
  display: block;
}

.card {
  margin: 20px;
}

.card h3 {
  font-size: 20px;
}

.card p {
  font-size: 17px;
}

.flow-note {
  font-size: 17px;
  margin-top: 20%;
  line-height: 2.0;
}
}


/* =====================================================
   スマホ（391px〜767px）
===================================================== */

@media (min-width: 391px) and (max-width: 767px) {
.cards {
  display: block;
}

.card {
  margin: 20px;
}

.card h3 {
  font-size: 20px;
}

.card p {
  font-size: 17px;
}

.flow-note {
  font-size: 20px;
  margin-top: 40px;
  line-height: 2.0;
}
}


/* =====================================================
   タブレット（768px〜1199px）
===================================================== */

@media (min-width: 768px) and (max-width: 1199px) {
.cards {
  display: block;
}

.card {
  margin: 20px 30px;
  max-width: 90%;
}

.card h3 {
  font-size: 26px;
}

.card p {
  font-size: 24px;
}

.flow-note {
  font-size: 1.2rem;
  margin-top: 40px;
  line-height: 1.5;
}
}


/* =====================================================
   PC（1200px〜）
===================================================== */

@media (min-width: 1200px) {
.cards {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 5rem;
  max-width: 1000px;
  padding: 0 1rem;
}

.card {
  max-width: 500px;
}

.card h3 {
  font-size: 1.2rem;
}

.card p {
  font-size: 0.95rem;
}

.step-image {
  border-radius: 25px;
}

/* 矢印 */
.card::after {
  content: "→";
  position: absolute;
  top: 50%;
  right: -55px;
  transform: translateY(-50%);
  font-size: 2rem;
  color: #e6a1a4;
  font-family: Arial, sans-serif;
}

.card:last-child::after {
  display: none;
}

.flow-note {
  font-size: 1.2rem;
  margin-top: 3rem;
}
}



/* =====================================================
   BEAUTY セクション（差分のみ）
===================================================== */

/* ---------- 共通（全デバイス） ---------- */

.beauty-section {
position: relative;
}

.beauty-content {
max-width: 1100px;
margin: 0 auto 2rem;
}

.benefits-list {
list-style: none;
padding: 0;
}

.benefits-list li {
display: flex;
align-items: center;
margin-bottom: 1.5rem;
}

.triangle-icon {
height: 100px;
display: block;
margin: 0 auto;
}

.membership-info h3 {
line-height: 1.8;
}

.beauty-footer {
max-width: 900px;
margin: 0 auto;
text-align: center;
}

.membership-invite {
background: rgba(168,32,38,0.5);
color: #fff;
padding: 1rem;
line-height: 1.8;
}

.blog-img {
display: inline-block;
margin: 20px;
}

/* チェックマーク画像（日本語クラスそのまま） */
.リストイメージ（チェックマーク） {
display: block;
object-fit: contain;
}


/* =====================================================
   小型スマホ（〜390px）
===================================================== */

@media (max-width: 390px) {
.beauty-content {
  display: block;
}

.リストイメージ（チェックマーク） {
  width: 45px;
  height: 45px;
}

.benefits-list li {
  gap: 0.1rem;
  font-size: 17px;
}

.membership-info h3 {
  font-size: 17px;
  width: 90%;
  margin: 20px auto 10px;
}

.membership-invite {
  font-size: 15px;
}

.blog-img {
  width: 35%;
  margin: 20px;
}
}


/* =====================================================
   スマホ（391px〜767px）
===================================================== */

@media (min-width: 391px) and (max-width: 767px) {
.beauty-content {
  display: block;
}

.リストイメージ（チェックマーク） {
  width: 60px;
  height: 60px;
}

.benefits-list li {
  gap: 0.1rem;
  font-size: 18px;
}

.membership-info h3 {
  font-size: 18px;
  width: 90%;
  margin: 20px auto 10px;
}

.membership-invite {
  font-size: 17px;
}

.blog-img {
  width: 35%;
  margin: 25px;
}
}


/* =====================================================
   タブレット（768px〜1199px）
===================================================== */

@media (min-width: 768px) and (max-width: 1199px) {
.beauty-content {
  display: block;
}

.リストイメージ（チェックマーク） {
  width: 60px;
  height: 60px;
}

.benefits-list {
  width: fit-content;
  margin: 0 auto;
}

.benefits-list li {
  gap: 1rem;
  font-size: 24px;
}

.membership-info h3 {
  font-size: 24px;
  width: 90%;
  margin: 20px auto 10px;
}

.membership-invite {
  font-size: 24px;
}

.blog-img {
  width: 35%;
  margin: 20px;
  padding-left: 40px;
}
}


/* =====================================================
   PC（1200px〜）
===================================================== */

@media (min-width: 1200px) {
.beauty-content {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 2rem;
}

.リストイメージ（チェックマーク） {
  width: 60px;
  height: 60px;
}

.benefits-list {
  padding-left: 1.2rem;
  flex: 1 1 30%;
}

.benefits-list li {
  gap: 0.8rem;
  font-size: 20px;
}

.triangle-icon {
  margin-top: 50px;
}

.membership-info {
  flex: 1 1 45%;
}

.membership-info h3 {
  font-size: 1.2rem;
  width: 80%;
  margin-top: 50px;
}

.membership-invite {
  font-size: 24px;
  margin-bottom: 1.5rem;
}

.blog-img {
  width: 30%;
  margin: 20px;
}
}

/* 小型スマホ（〜390px） */
@media (max-width: 390px) {
  .triangle-icon {
    transform: rotate(90deg);
  }
}

/* スマホ（391px〜767px） */
@media (min-width: 391px) and (max-width: 767px) {
  .triangle-icon {
    transform: rotate(90deg);
  }
}



/* =====================================================
   CALENDAR セクション（差分のみ）
===================================================== */

/* ---------- 共通（全デバイス） ---------- */

.calendar {
position: relative;
}

.calendar-wrapper {
text-align: center;
}

.Google-calendar {
display: block;
margin: 0 auto;
border: 0;
}


/* =====================================================
   小型スマホ（〜390px）
===================================================== */

@media (max-width: 390px) {
.Google-calendar {
  width: 90%;
  height: 500px;
}
}


/* =====================================================
   スマホ（391px〜767px）
===================================================== */

@media (min-width: 391px) and (max-width: 767px) {
.Google-calendar {
  width: 90%;
  height: 500px;
}
}


/* =====================================================
   タブレット（768px〜1199px）
===================================================== */

@media (min-width: 768px) and (max-width: 1199px) {
.Google-calendar {
  width: 90%;
  height: 500px;
}
}


/* =====================================================
   PC（1200px〜）
===================================================== */

@media (min-width: 1200px) {
.Google-calendar {
  width: 1000px;
  height: 600px;
}
}



/* =====================================================
   ACCESS / SNS セクション（差分のみ）
===================================================== */

/* ---------- 共通（全デバイス） ---------- */

.access-section {
position: relative;
}

.inner-access {
width: 100%;
}

.access-section .container {
box-sizing: border-box;
}

/* -----------------------------------------------------
   店舗情報 共通
----------------------------------------------------- */

.store-information {
color: #E05A60;
font-weight: bold;
border-bottom: 1px solid #E05A60;
margin-bottom: 10px;
padding-left: 5px;
line-height: 1.5;
}

.store-box-group {
display: flex;
flex-wrap: wrap;
justify-content: space-between;
}

.store-box {
box-sizing: border-box;
white-space: normal;
word-wrap: break-word;
}

.store-name {
font-weight: bold;
color: #000;
}

.store-address,
.store-hours,
.store-description {
margin: 15px 0 20px;
line-height: 1.5;
word-break: keep-all;
overflow-wrap: break-word;
white-space: normal;
}

/* -----------------------------------------------------
   SNS 共通
----------------------------------------------------- */

.SNS {
line-height: 1.5;
}

.container-line,
.container-instagram {
display: flex;
align-items: center;
}

.icon-line,
.icon-instagram {
width: 30px;
height: 30px;
margin: 10px;
transition: transform 0.3s ease;
}

.icon-line:hover,
.icon-instagram:hover {
transform: scale(1.1);
}

.icon-line-context,
.icon-instagram-context {
line-height: 1.5;
font-size: 16px;
word-wrap: break-word;
white-space: normal;
}


/* =====================================================
   スマホ（〜767px）
===================================================== */

@media (max-width: 767px) {

/* 店舗情報は非表示 */
.store-access {
  display: none;
}

.SNS {
  display: block;
  width: 94%;
  margin: 0 auto;
  padding: 20px;
  border-radius: 10px;
  border: 1px solid #E05A60;
  box-shadow: 0 4px 8px rgba(0,0,0,0.1);
  box-sizing: border-box;
}

.container-line,
.container-instagram {
  gap: 15px;
}

.icon-line-context,
.icon-instagram-context {
  width: 75%;
  text-align: left;
  margin: 10px 3px;
  font-size: 16px;
}

/* SNS見出しは非表示（既存挙動維持） */
.SNS h3 {
  display: none;
}
}


/* =====================================================
   タブレット（768px〜1199px）
===================================================== */

@media (min-width: 768px) and (max-width: 1199px) {

.access-section .container {
  display: block;
}

/* 店舗情報 */
.store-access {
  background-color: rgba(243,191,193,0.5);
  margin: 20px;
  padding: 20px 20px 0;
  border-radius: 10px;
}

.store-information {
  font-size: 18px;
}

.store-box-group {
  gap: 5px;
}

.store-box {
  width: 45%;
  padding: 20px;
}

.store-name {
  font-size: 20px;
}

.store-address,
.store-hours,
.store-description {
  font-size: 15px;
}

/* SNS */
.SNS {
  background-color: rgba(243,191,193,0.5);
  margin: 20px;
  padding: 20px;
  border-radius: 10px;
}

.SNS h3 {
  color: #E05A60;
  font-weight: bold;
  font-size: 18px;
  border-bottom: 1px solid #E05A60;
  margin-bottom: 10px;
}

.icon-line-context,
.icon-instagram-context {
  margin: 10px;
  padding-top: 5px;
}
}


/* =====================================================
   PC（1200px〜）
===================================================== */

@media (min-width: 1200px) {

.access-section .container {
  display: flex;
  gap: 30px;
  align-items: stretch;
}

/* 左：店舗情報 */
.store-access {
  width: 58%;
  flex: 0 0 58%;
  background-color: rgba(243,191,193,0.5);
  margin: 20px 0 20px 30px;
  padding: 20px 20px 0;
  border-radius: 10px;
}

.store-information {
  font-size: 18px;
}

.store-box-group {
  gap: 10px;
}

.store-box {
  width: 45%;
  padding: 20px 5px;
}

.store-name {
  font-size: 20px;
}

.store-address,
.store-hours,
.store-description {
  font-size: 15px;
}

/* 右：SNS */
.SNS {
  flex: 1 1 auto;
  align-self: stretch;
  background-color: rgba(243,191,193,0.5);
  margin: 20px 30px 20px 0;
  padding: 10px 20px;
  border-radius: 10px;
}

.SNS h3 {
  color: #E05A60;
  font-weight: bold;
  font-size: 18px;
  border-bottom: 1px solid #E05A60;
  margin-bottom: 10px;
}

.icon-line-context {
  margin: 0 10px 10px;
  padding-top: 5px;
}

.icon-instagram-context {
  margin: 0 10px 10px;
  padding-top: 20px;
}
}



/* =========================================================
   隠れNANA：クーポンモーダル
   ========================================================= */

.secret-modal{
  position: fixed;
  inset: 0;
  background: rgba(227,107,113,0.10);
  z-index: 9999;

  display: none;
  place-items: center;
  padding: 24px;
}

.secret-modal.is-open{
  display: grid;
}

.secret-modal__dialog{
  width: min(560px, 92vw);
  background: rgb(227,107,113);
  color: #fff;
  border-radius: 12px;
  padding: 20px 30px;
  line-height: 2.0;
  text-align: center;
  position: relative;
  box-sizing: border-box;
}

.secret-modal__close{
  position: absolute;
  top: 10px;
  right: 14px;
  border: none;
  background: transparent;
  color: #fff;
  font-size: 26px;
  cursor: pointer;
  line-height: 1;
}

.secret-modal__title{
  font-size: 1.2em;
  font-weight: 700;
  margin: 0 0 10px 0;
}

.secret-modal__text{
  margin: 0 0 14px 0;
}

.secret-modal__btn{
  border: 1px solid rgba(255,255,255,0.75);
  background: rgba(255,255,255,0.12);
  color: #fff;
  padding: 10px 14px;
  border-radius: 10px;
  cursor: pointer;
  font-weight: 700;
}

.secret-modal__btn:hover{
  background: rgba(255,255,255,0.18);
}

.secret-modal__note{
  font-size: 0.9em;
  margin: 12px 0 0 0;
  opacity: 0.95;
}