/* ============================================================
   AiMii サイト スタイル (v1)
   配色や文字を変えたいときは下の :root の値を書き換えてください。
   ============================================================ */
:root{
  --bg:        #0a0a0a;   /* 背景色（黒） */
  --bg-soft:   #141414;   /* 少し明るい黒 */
  --fg:        #f2f2f0;   /* 文字色（オフホワイト） */
  --muted:     #8a8a86;   /* 補助テキスト */
  --line:      #2a2a2a;   /* 区切り線 */
  --accent:    #ffffff;   /* アクセント */
  --maxw:      1100px;
  --ease:      cubic-bezier(.16,1,.3,1);   /* ゆっくり上品なイージング */
  /* 欧文=上品なセリフ(Bodoni Moda) / 和文=細いゴシック（明朝フォールバックを防ぐ） */
  --serif: 'Bodoni Moda','Noto Sans JP',serif;
  --jp:    'Noto Sans JP','Hiragino Kaku Gothic ProN',sans-serif;
}

*{ box-sizing:border-box; margin:0; padding:0; }
html{ scroll-behavior:smooth; }
body{
  background:var(--bg); color:var(--fg);
  font-family:'Inter','Noto Sans JP',-apple-system,'Helvetica Neue',sans-serif;
  font-weight:300; line-height:1.8; letter-spacing:.04em;
  overflow-x:hidden;
}
/* 和文は細いゴシックで上品に（明朝フォールバックを避ける） */
:lang(ja){ font-weight:300; }
/* 和文(Noto Sans JP)は欧文(Cormorant)より大きく見えるので、日本語のときだけ少し縮小 */
html[lang="ja"] .hero-name{ font-size:clamp(3.1rem,12.5vw,8.6rem); }
html[lang="ja"] .section-title{ font-size:clamp(1.7rem,4.2vw,2.9rem); }
html[lang="ja"] .profile-text > p{ font-size:clamp(.92rem,1.3vw,1.1rem); line-height:1.85; }
html[lang="ja"] .profile-long > p{ font-size:clamp(1.05rem,1.7vw,1.35rem); }
img{ max-width:100%; display:block; }
a{ color:inherit; text-decoration:none; }

/* ---------- ページ遷移の白フェード ---------- */
.page-fade{ position:fixed; inset:0; background:#fff; z-index:9999; pointer-events:none; opacity:0; }
.page-fade.enter{ animation:pageIn 1.1s ease-in-out forwards; }   /* 読み込み時：白からやわらかく表示 */
@keyframes pageIn{ from{ opacity:1; } to{ opacity:0; } }
.page-fade.leaving{ opacity:1; transition:opacity .5s ease-in-out; }  /* 離脱時：もわっと白くなってから移動 */

/* ---------- ナビ ---------- */
.nav{
  position:fixed; top:0; left:0; width:100%; z-index:100;
  display:flex; align-items:center; justify-content:space-between; gap:48px;
  padding:18px 32px; background:rgba(10,10,10,.55);
  backdrop-filter:blur(10px); border-bottom:1px solid transparent;
  transition:background .3s,border-color .3s;
}
.logo{ flex:none; margin-right:8px; }
.nav.scrolled{ background:rgba(10,10,10,.9); border-color:var(--line); }
.logo{ font-family:var(--serif); font-size:1.6rem; letter-spacing:.1em; font-weight:500; }
.nav-links{ display:flex; align-items:center; gap:22px; }
.nav-links a{ position:relative; font-size:.72rem; letter-spacing:.18em; color:var(--muted); transition:color .3s var(--ease); text-transform:uppercase; white-space:nowrap; }
/* 2行で中央揃えにする項目（MUSIC MIX / PHOTO VIDEO） */
.nav-links a.nav-stack{ white-space:pre-line; text-align:center; line-height:1.18; }
.nav-links a:not(.lang-toggle):after{
  content:""; position:absolute; left:0; bottom:-5px; width:100%; height:1px;
  background:var(--fg); transform:scaleX(0); transform-origin:right; transition:transform .4s var(--ease);
}
.nav-links a:not(.lang-toggle):hover{ color:var(--fg); }
.nav-links a:not(.lang-toggle):hover:after{ transform:scaleX(1); transform-origin:left; }
/* 言語切替 JP / EN */
.lang-switch{ display:inline-flex; align-items:center; gap:8px; }
.lang-switch button{
  background:none; border:none; color:var(--muted); cursor:pointer;
  font-family:inherit; font-size:.72rem; letter-spacing:.15em; padding:4px 2px;
  transition:color .25s var(--ease); border-bottom:1px solid transparent;
}
.lang-switch button:hover{ color:var(--fg); }
.lang-switch button.active{ color:var(--fg); border-bottom-color:var(--fg); }
.lang-sep{ color:var(--line); font-size:.7rem; }
.nav-toggle{ display:none; background:none; border:none; color:var(--fg); font-size:1.5rem; cursor:pointer; }

/* OTHER ドロップダウン */
.nav-drop{ position:relative; }
.nav-drop-menu{
  position:absolute; top:100%; left:50%; transform:translateX(-50%) translateY(8px);
  display:flex; flex-direction:column; gap:2px; min-width:170px; padding:10px 0;
  background:rgba(12,12,14,.97); border:1px solid var(--line); border-radius:4px;
  opacity:0; visibility:hidden; transition:opacity .3s var(--ease),transform .3s var(--ease);
  z-index:120;
}
.nav-drop:hover .nav-drop-menu,
.nav-drop.open .nav-drop-menu{ opacity:1; visibility:visible; transform:translateX(-50%) translateY(4px); }
.nav-drop-menu a{ padding:8px 20px; white-space:nowrap; font-size:.72rem; letter-spacing:.14em; color:var(--muted); text-transform:uppercase; }
.nav-drop-menu a:hover{ color:var(--fg); background:rgba(255,255,255,.05); }
.nav-drop-menu a:after{ display:none; }

/* ---------- ヒーロー ---------- */
.hero{
  position:relative; min-height:100vh; display:flex; align-items:center; justify-content:center;
  text-align:center; overflow:hidden;
}
.hero-bg{
  position:absolute; inset:0; pointer-events:none;
  background:
    radial-gradient(circle at 30% 30%, #1c1c22 0%, transparent 60%),
    radial-gradient(circle at 70% 70%, #20161b 0%, transparent 55%),
    var(--bg);
  animation:drift 18s ease-in-out infinite alternate;
}
@keyframes drift{ from{transform:scale(1) translateY(0)} to{transform:scale(1.1) translateY(-20px)} }
/* AiMii の裏に薄く浮かび上がる背景写真 */
.hero-photo{
  position:absolute; inset:0; width:100%; height:100%; object-fit:cover; z-index:1; pointer-events:none;
  opacity:0; filter:grayscale(35%) contrast(1.05);
  -webkit-mask-image:radial-gradient(circle at 50% 45%, #000 0%, transparent 72%);
          mask-image:radial-gradient(circle at 50% 45%, #000 0%, transparent 72%);
  animation:heroPhotoIn 3.5s var(--ease) forwards; animation-delay:.3s;
}
@keyframes heroPhotoIn{ to{ opacity:.28; } }
.hero-inner{ position:relative; z-index:2; padding:0 24px; }
.hero-name{
  font-family:var(--serif); font-weight:500;
  font-size:clamp(4rem,16vw,11rem); line-height:.95; letter-spacing:.05em;
}
.hero-tag{ margin-top:18px; font-size:.8rem; letter-spacing:.5em; color:var(--muted); text-transform:uppercase; }
.hero-sub{ margin-top:10px; font-size:.85rem; letter-spacing:.1em; color:var(--muted); }
.hero-inner .btn{ margin-top:36px; }

/* ヒーロー登場アニメ（読み込み時に下から順にあらわれる） */
.hero-tag,.hero-sub,.hero-inner .btn,.hero-ig{
  opacity:0; transform:translateY(28px); animation:rise 1.1s var(--ease) forwards;
}
.hero-tag { animation-delay:1.1s; }
.hero-sub { animation-delay:1.25s; }
.hero-inner .btn{ animation-delay:1.45s; }
@keyframes rise{ to{ opacity:1; transform:translateY(0); } }

/* 「AiMii」エモーショナルな登場 → そのあと 禅のように静かにウェーブ（波打つ）
   ・登場: 上下＋左右＋回転＋拡大で、文字が集まってくる（<i>に適用）
   ・常時: 1文字ずつ位相をずらして ゆっくり上下に揺れる＝波（.ltrに適用） */
.hero-name .ltr{
  display:inline-block; vertical-align:top;
  will-change:transform; backface-visibility:hidden; transform:translateZ(0);
  animation:zenWave 5.2s ease-in-out infinite;   /* 静かな波（zen） */
}
.hero-name .ltr > i{
  display:inline-block; font-style:normal; opacity:0;
  will-change:transform,opacity; backface-visibility:hidden;
  animation:heroIn 1.5s cubic-bezier(.2,.85,.25,1) forwards;
}
/* 文字ごとに登場の方向・回転を少し変える（単調さを消す） */
.hero-name .ltr:nth-child(1){ --dx:-20px; --rz:-6deg; }
.hero-name .ltr:nth-child(2){ --dx: 13px; --rz: 5deg; }
.hero-name .ltr:nth-child(3){ --dx:-10px; --rz:-4deg; }
.hero-name .ltr:nth-child(4){ --dx: 15px; --rz: 5deg; }
.hero-name .ltr:nth-child(5){ --dx:-13px; --rz:-5deg; }
/* 登場のタイミングを少しずつ遅らせる */
.hero-name .ltr:nth-child(1) > i{ animation-delay:.10s; }
.hero-name .ltr:nth-child(2) > i{ animation-delay:.24s; }
.hero-name .ltr:nth-child(3) > i{ animation-delay:.38s; }
.hero-name .ltr:nth-child(4) > i{ animation-delay:.52s; }
.hero-name .ltr:nth-child(5) > i{ animation-delay:.66s; }
/* 波は登場後に開始＋1文字ずつ位相をずらして波を伝わらせる */
.hero-name .ltr:nth-child(1){ animation-delay:1.9s; }
.hero-name .ltr:nth-child(2){ animation-delay:2.16s; }
.hero-name .ltr:nth-child(3){ animation-delay:2.42s; }
.hero-name .ltr:nth-child(4){ animation-delay:2.68s; }
.hero-name .ltr:nth-child(5){ animation-delay:2.94s; }
@keyframes heroIn{
  0%   { opacity:0; transform:translateY(78px) translateX(var(--dx,0)) rotate(var(--rz,0)) scale(.85); }
  55%  { opacity:1; }
  100% { opacity:1; transform:translateY(0) translateX(0) rotate(0) scale(1); }
}
@keyframes zenWave{
  0%,100%{ transform:translateY(0); }
  50%    { transform:translateY(-9px); }
}
/* 最後の「ii」だけ：回転なしで まっすぐ・やわらかく波打つ（細い文字が綺麗に見える） */
.hero-name .ltr:nth-child(4){ --dx:8px;  --rz:0deg; animation-name:zenWaveI; }
.hero-name .ltr:nth-child(5){ --dx:-7px; --rz:0deg; animation-name:zenWaveI; }
@keyframes zenWaveI{
  0%,100%{ transform:translateY(0) scale(1); }
  50%    { transform:translateY(-12px) scale(1.05); }
}
/* Instagramリンクは中央寄せ(-50%)を保ったまま登場 */
.hero-ig{ animation:riseC 1.1s var(--ease) forwards; animation-delay:1s; transform:translate(-50%,28px); }
@keyframes riseC{ to{ opacity:1; transform:translate(-50%,0); } }
.hero-ig{
  position:absolute; bottom:28px; left:50%; transform:translateX(-50%);
  font-size:.72rem; letter-spacing:.2em; color:var(--muted); z-index:6;
}
.hero-ig:hover{ color:var(--fg); }

/* ---------- セクション共通 ---------- */
.section{ max-width:var(--maxw); margin:0 auto; padding:120px 32px; }
.section-title{
  font-family:var(--serif); font-weight:500;
  font-size:clamp(2rem,5vw,3.4rem); letter-spacing:.04em; margin-bottom:14px;
}
.section-lead{ color:var(--muted); margin-bottom:40px; max-width:640px; }

/* ---------- ボタン ---------- */
.btn{
  display:inline-block; font-size:.75rem; letter-spacing:.18em; text-transform:uppercase;
  padding:14px 30px; border:1px solid var(--fg); border-radius:2px; transition:.3s; cursor:pointer;
}
.btn:hover{ background:var(--fg); color:var(--bg); }
.btn-light{ background:var(--fg); color:var(--bg); }
.btn-light:hover{ background:transparent; color:var(--fg); }

/* ---------- プロフィール ---------- */
.profile{ display:grid; grid-template-columns:1fr 1.3fr; gap:48px; align-items:stretch; }
.profile-photo{ display:block; position:relative; aspect-ratio:3/4; background:var(--bg-soft); border:1px solid var(--line); overflow:hidden; }
a.profile-photo.main{ cursor:pointer; }
a.profile-photo.main:hover img{ opacity:.88; transition:opacity .4s var(--ease); }
.profile-photo img{ width:100%; height:100%; object-fit:cover; }
.profile-photo .ph-label{ position:absolute; inset:0; display:none; align-items:center; justify-content:center; color:var(--muted); letter-spacing:.3em; font-size:.8rem; }
.profile-photo.ph .ph-label{ display:flex; }
/* プロフィール本文：英字が映えるエディトリアル組版（CELINE / LOEWE / B.CUCINELLI の上質感） */
/* プロフィール写真：1枚目を大きく（左）、2・3枚目は右側の最下部に小さく2枚並べる */
.profile-photo.opt{ display:none; }   /* 写真が入ると content.js が表示 */
.profile-text{ display:flex; flex-direction:column; }
.profile-subphotos{
  display:grid; grid-template-columns:1fr 1fr; gap:12px;
  margin-top:auto; padding-top:28px; max-width:300px;
}
.profile-subphotos .profile-photo{ aspect-ratio:3/4; cursor:pointer; }
.profile-subphotos .profile-photo img{ width:100%; height:100%; object-fit:cover; transition:transform 1s var(--ease),opacity .3s; }
.profile-subphotos .profile-photo:hover img{ transform:scale(1.05); opacity:.85; }

/* 写真の拡大ポップアップ（ライトボックス） */
.lightbox{
  position:fixed; inset:0; z-index:200; display:flex; align-items:center; justify-content:center;
  flex-direction:column; gap:22px; padding:48px 24px;
  background:rgba(8,8,8,.93); backdrop-filter:blur(6px);
  opacity:0; visibility:hidden; transition:opacity .4s var(--ease),visibility .4s;
}
.lightbox.open{ opacity:1; visibility:visible; }
.lb-inner{ display:flex; flex-direction:column; align-items:center; gap:22px; transform:scale(.92); transition:transform .55s var(--ease); }
.lightbox.open .lb-inner{ transform:none; }
.lb-inner img{ max-height:76vh; max-width:90vw; object-fit:contain; border:1px solid var(--line); }
.lb-close{ position:absolute; top:22px; right:28px; background:none; border:none; color:var(--fg); font-size:2.2rem; line-height:1; cursor:pointer; transition:opacity .2s; }
.lb-close:hover{ opacity:.6; }
.profile-text > p{
  font-family:var(--serif);
  font-weight:400;
  font-size:clamp(1.1rem,1.7vw,1.4rem);
  line-height:1.6;
  letter-spacing:.01em;
  color:var(--fg);
}
.profile-text h3{ margin:36px 0 12px; font-size:.78rem; letter-spacing:.32em; color:var(--muted); text-transform:uppercase; }
.profile-all{ margin-top:30px; }
.history{ list-style:none; }
.history li{ padding:8px 0; border-bottom:1px solid var(--line); font-size:.9rem; }

/* ---------- プロフィール全文ページ ---------- */
.profile-page{ max-width:760px; }
.profile-eyebrow{ font-size:.74rem; letter-spacing:.34em; text-transform:uppercase; color:var(--muted); margin-bottom:8px; }
.reveal .profile-eyebrow{ opacity:0; transform:translateY(20px); transition:opacity 1s var(--ease),transform 1s var(--ease); }
.reveal.in .profile-eyebrow{ opacity:1; transform:none; }
.profile-page-photo{ position:relative; aspect-ratio:3/4; max-width:430px; background:var(--bg-soft); border:1px solid var(--line); overflow:hidden; }
.profile-page-photo.opt{ display:none; }
/* 大きい写真＋右に縦2枚のサムネ */
.profile-page-gallery{ display:flex; gap:14px; align-items:stretch; margin:30px 0 44px; }
.ppg-main{ flex:0 0 auto; width:430px; max-width:430px; }
.ppg-thumbs{ display:flex; flex-direction:column; gap:14px; margin-left:auto; width:200px; }
.ppg-thumb{ width:200px; max-width:200px; flex:1; aspect-ratio:auto; cursor:pointer; }
.ppg-thumb img{ width:100%; height:100%; object-fit:cover; transition:transform .8s var(--ease),opacity .3s; }
@media(max-width:680px){
  .profile-page-gallery{ flex-direction:column; align-items:flex-start; }
  .ppg-main{ width:100%; }
  .ppg-thumbs{ flex-direction:row; width:100%; margin-left:0; }
  .ppg-thumb{ flex:1; width:auto; aspect-ratio:3/4; }
}
.ppg-thumb:hover img{ opacity:.8; transform:scale(1.05); }
.profile-page-photo img{ width:100%; height:100%; object-fit:cover; }
.profile-page-photo .ph-label{ position:absolute; inset:0; display:none; align-items:center; justify-content:center; color:var(--muted); letter-spacing:.3em; font-size:.8rem; }
.profile-page-photo.ph .ph-label{ display:flex; }
.profile-long > p{
  font-family:var(--serif); font-weight:400;
  font-size:clamp(1.2rem,2vw,1.6rem); line-height:1.7; letter-spacing:.01em;
  margin-bottom:26px;
}
.profile-h3{ margin:50px 0 14px; font-size:.78rem; letter-spacing:.32em; color:var(--muted); text-transform:uppercase; }
.profile-actions{ display:flex; flex-wrap:wrap; gap:14px; margin-top:36px; }
.profile-history-text > p{ font-size:1rem; line-height:1.5; color:var(--fg); margin-bottom:12px; }

/* ---------- MUSIC ---------- */
.music-block{ margin-bottom:46px; }
.music-block h3{ font-size:1.1rem; letter-spacing:.15em; margin-bottom:6px; }
.music-note{ color:var(--muted); font-size:.85rem; margin-bottom:16px; }
.music-block iframe{ border:1px solid var(--line); }

/* ---------- ギャラリー ---------- */
.gallery{ display:grid; grid-template-columns:repeat(3,1fr); gap:14px; margin-bottom:40px; }
.g-item{
  position:relative; aspect-ratio:4/3; background:var(--bg-soft); border:1px solid var(--line);
  overflow:hidden; transition:.3s; cursor:pointer;
}
.g-img{
  position:absolute; inset:0; width:100%; height:100%; object-fit:cover;
  opacity:0; transition:opacity .6s var(--ease),transform 1.2s var(--ease); display:none;
}
.g-item.has-img .g-img{ opacity:1; display:block; }
.g-item.has-img:hover .g-img{ transform:scale(1.06); }
.g-cap{
  position:absolute; left:0; right:0; bottom:0; z-index:2;
  display:flex; align-items:center; justify-content:center;
  color:var(--muted); font-size:.78rem; letter-spacing:.2em; text-transform:uppercase;
  transition:.3s var(--ease);
}
/* 写真が無いときはカテゴリ名を中央に大きく */
.g-item:not(.has-img) .g-cap{ inset:0; }
/* 写真があるときはキャプションを下に小さく重ねる */
.g-item.has-img .g-cap{
  top:auto; height:auto; justify-content:flex-start;
  padding:10px 12px; font-size:.68rem; color:var(--fg);
  background:linear-gradient(transparent, rgba(0,0,0,.6));
}
.g-item:hover{ background:#1d1d1d; }
.media-h3{ margin:56px 0 18px; font-size:.78rem; letter-spacing:.32em; color:var(--muted); text-transform:uppercase; }
.reels-grid{ display:grid; grid-template-columns:repeat(auto-fill,minmax(300px,1fr)); gap:18px; align-items:start; }
.reel{ min-height:0; }
.reels-grid .instagram-media{ margin:0 !important; }
.video-grid{ display:grid; grid-template-columns:1fr 1fr; gap:14px; }
.video-wrap{ position:relative; padding-top:56.25%; border:1px solid var(--line); }
.video-wrap iframe,.video-wrap video{ position:absolute; inset:0; width:100%; height:100%; }
.video-wrap video{ object-fit:cover; background:#000; }
@media(max-width:680px){ .video-grid{ grid-template-columns:1fr; } }

/* ---------- サブスク ---------- */
.fanclub-card{ background:var(--bg-soft); border:1px solid var(--line); padding:40px; max-width:560px; }
.fanclub-card ul{ list-style:none; margin-bottom:28px; }
.fanclub-card li{ padding:10px 0; border-bottom:1px solid var(--line); font-size:.95rem; }
.fanclub-card li:before{ content:"—  "; color:var(--muted); }

/* ---------- SNS ---------- */
.sns-links{ display:flex; flex-wrap:wrap; gap:14px 34px; font-size:1.1rem; letter-spacing:.1em; }
.sns-links a{ color:var(--muted); transition:.25s; }
.sns-links a:hover{ color:var(--fg); }

/* ---------- OTHER ---------- */
.other-buttons{ display:flex; flex-wrap:wrap; gap:14px; }
/* OTHER ハブの活動カード */
.aya-roles{ font-family:var(--serif); font-size:clamp(1rem,1.6vw,1.3rem); color:var(--fg); margin-bottom:8px; line-height:1.6; }
.aya-aka{ font-size:.78rem; letter-spacing:.2em; color:var(--muted); text-transform:uppercase; margin-bottom:26px; }
.other-cards{ display:grid; grid-template-columns:repeat(3,1fr); gap:16px; }
.ocard{
  display:flex; flex-direction:column; justify-content:flex-end; gap:6px;
  aspect-ratio:4/3; padding:22px; border:1px solid var(--line); background:var(--bg-soft);
  transition:.4s var(--ease); overflow:hidden; position:relative;
}
.ocard:hover{ background:#1d1d1d; transform:translateY(-3px); }
.ocard-img{
  position:absolute; inset:0; width:100%; height:100%; object-fit:cover;
  opacity:0; display:none; transition:opacity .5s var(--ease),transform 1.2s var(--ease); z-index:0;
}
.ocard.has-img .ocard-img{ opacity:.55; display:block; }
.ocard.has-img:hover .ocard-img{ opacity:.7; transform:scale(1.05); }
.ocard.has-img{ background:#000; }
.ocard.has-img:after{ content:""; position:absolute; inset:0; background:linear-gradient(transparent 40%, rgba(0,0,0,.75)); z-index:1; }
.ocard-t{ position:relative; z-index:2; font-family:var(--serif); font-size:1.6rem; letter-spacing:.04em; }
.ocard-s{ position:relative; z-index:2; font-size:.72rem; letter-spacing:.14em; color:var(--muted); text-transform:uppercase; }
/* サブページのギャラリー */
.sub-gallery{ display:grid; grid-template-columns:repeat(3,1fr); gap:14px; margin-top:34px; }
.sub-img{ width:100%; aspect-ratio:3/4; object-fit:cover; border:1px solid var(--line); }
@media(max-width:680px){
  .other-cards{ grid-template-columns:1fr 1fr; }
  .sub-gallery{ grid-template-columns:1fr 1fr; }
}

/* ---------- BOOKING フォーム ---------- */
.booking-form{ display:grid; gap:18px; max-width:620px; }
.booking-form label{ display:flex; flex-direction:column; gap:7px; font-size:.78rem; letter-spacing:.12em; color:var(--muted); text-transform:uppercase; }
.booking-form input,.booking-form select,.booking-form textarea{
  background:var(--bg-soft); border:1px solid var(--line); color:var(--fg);
  padding:12px 14px; font-family:inherit; font-size:.95rem; border-radius:2px;
}
.booking-form input:focus,.booking-form select:focus,.booking-form textarea:focus{ outline:none; border-color:var(--fg); }
.booking-form .btn{ justify-self:start; margin-top:6px; border:none; }

.presskit{ margin-top:60px; padding-top:40px; border-top:1px solid var(--line); }
.presskit h3{ font-size:.9rem; letter-spacing:.3em; margin-bottom:10px; }
.presskit p{ color:var(--muted); margin-bottom:20px; }

/* ---------- フッター ---------- */
.footer{ text-align:center; padding:50px 0; color:var(--muted); font-size:.8rem; letter-spacing:.2em; border-top:1px solid var(--line); }

/* ---------- スクロール出現アニメ ---------- */
.reveal{ opacity:0; transform:translateY(40px); transition:opacity 1s var(--ease),transform 1s var(--ease); }
.reveal.in{ opacity:1; transform:none; }
/* 見出し（section-title）は zen のように、ゆっくり静かに浮かび上がる */
.reveal .section-title{
  opacity:0; transform:translateY(48px);
  transition:opacity 1.3s var(--ease),transform 1.3s var(--ease);
}
.reveal.in .section-title{ opacity:1; transform:none; transition-delay:.05s; }
/* 説明文は少し遅れて、続けてふわっと */
.reveal .section-lead{
  opacity:0; transform:translateY(26px);
  transition:opacity 1.1s var(--ease),transform 1.1s var(--ease);
}
.reveal.in .section-lead{ opacity:1; transform:none; transition-delay:.28s; }

/* ---------- 画像のゆっくりズーム ---------- */
.profile-photo,.g-item,.video-wrap{ overflow:hidden; }
.profile-photo img{ transition:transform 1.2s var(--ease); }
.profile-photo:hover img{ transform:scale(1.05); }
.g-item{ position:relative; }
.g-item:after{ content:""; position:absolute; inset:0; background:rgba(255,255,255,0); transition:background .5s var(--ease); }
.g-item:hover{ transform:none; }
.g-item span{ transition:transform .6s var(--ease),letter-spacing .6s var(--ease); }
.g-item:hover span{ transform:scale(1.08); letter-spacing:.32em; }

/* 動きを減らす設定の人には控える */
@media(prefers-reduced-motion:reduce){
  *{ animation:none !important; transition:none !important; }
  .reveal,.reveal .section-title,.reveal .section-lead,
  .hero-name .ltr,.hero-name .ltr > i,.hero-tag,.hero-sub,.hero-inner .btn,.hero-ig{ opacity:1 !important; transform:none !important; filter:none !important; }
  .hero-ig{ transform:translateX(-50%) !important; }
}

/* ---------- スマホ ---------- */
@media(max-width:820px){
  .nav{ padding:16px 20px; }
  .nav-toggle{ display:block; }
  .nav-links{
    position:fixed; top:0; right:0; height:100vh; width:74%;
    background:var(--bg); flex-direction:column; align-items:flex-start; justify-content:center;
    gap:22px; padding:40px; transform:translateX(100%); transition:transform .35s; border-left:1px solid var(--line);
  }
  .nav-links.open{ transform:translateX(0); }
  .nav-links a{ font-size:1rem; }
  .section{ padding:90px 22px; }
  .profile{ grid-template-columns:1fr; gap:28px; }
  .gallery{ grid-template-columns:repeat(2,1fr); }
}
