/*
Theme Name: Tsukasa Yoru
Theme URI: https://example.invalid/
Description: 個人VTuber・司ヨル(Tsukasa Yoru)公式サイト カスタムテーマ。sales-mock承認済み mock-full.html(案A「ギルドの灯」)を忠実に移植。
Author: NSS Group
Version: 2.0.3
Requires at least: 6.3
Requires PHP: 8.0
Text Domain: tsukasa-yoru
*/

:root{
  --ease-ember: cubic-bezier(.16,1,.3,1);
  --navy-0:#05070c;
  --navy-1:#0a0f1e;
  --navy-2:#121a30;
  --navy-3:#182140;
  --gold:#cda15a;
  --gold-bright:#ecc888;
  --ember:#f0a35c;
  --parchment:#f3ecd9;
  --ink-soft:#c9c2ac;
  --font-jp:'Noto Serif JP', serif;
  --font-en:'Cormorant Garamond', serif;
}
*{box-sizing:border-box;}
html{scroll-behavior:smooth;}
html,body{margin:0;padding:0;}
body{
  background:var(--navy-0);
  color:var(--parchment);
  font-family:var(--font-jp);
  line-break:strict;
  text-wrap:balance;
  overflow-x:hidden;
  -webkit-font-smoothing:antialiased;
}
.nowrap{white-space:nowrap;}
img{max-width:100%;display:block;}

.skip-link{
  position:absolute;left:-9999px;top:0;z-index:300;
  padding:10px 18px;background:var(--gold);color:var(--navy-0);
  font-weight:700;text-decoration:none;
}
.skip-link:focus{left:0;}

/* ---------- ambient stage (hero) ---------- */
.stage{
  position:relative;
  display:flex;
  flex-direction:column;
  min-height:100svh;
  isolation:isolate;
  background:
    radial-gradient(ellipse 620px 520px at 76% 58%, rgba(236,200,136,.16), transparent 62%),
    radial-gradient(ellipse 460px 420px at 14% 82%, rgba(205,161,90,.09), transparent 68%),
    radial-gradient(ellipse 900px 500px at 50% -10%, rgba(18,26,48,.9), transparent 60%),
    repeating-linear-gradient(180deg, rgba(255,255,255,.012) 0 2px, transparent 2px 34px),
    repeating-linear-gradient(90deg, rgba(255,255,255,.01) 0 2px, transparent 2px 46px),
    linear-gradient(180deg, var(--navy-0) 0%, var(--navy-1) 46%, var(--navy-0) 100%);
}

/* ヒーロー背景: ネームロゴのウォーターマーク(立ち絵の背後に大きく薄く) */
.stage::after{
  content:"";
  position:absolute;inset:0;
  background:url('images/character/logo.png') center 34% / min(62vmin,700px) no-repeat;
  opacity:.055;
  z-index:1;
  pointer-events:none;
}

/* floating embers */
.embers{position:absolute;inset:0;overflow:hidden;pointer-events:none;z-index:1;}
.ember{
  position:absolute;
  width:3px;height:3px;border-radius:50%;
  background:radial-gradient(circle, var(--gold-bright), rgba(236,200,136,0));
  box-shadow:0 0 6px 1px rgba(236,200,136,.6);
  opacity:.35;
  animation:drift 12s ease-in-out infinite;
}
.ember:nth-child(1){left:20%;top:70%;animation-duration:13s;animation-delay:-1s;}
.ember:nth-child(2){left:34%;top:82%;animation-duration:16s;animation-delay:-4s;width:2px;height:2px;}
.ember:nth-child(3){left:62%;top:78%;animation-duration:11s;animation-delay:-6s;}
.ember:nth-child(4){left:80%;top:66%;animation-duration:15s;animation-delay:-2s;width:4px;height:4px;}
.ember:nth-child(5){left:70%;top:40%;animation-duration:14s;animation-delay:-8s;width:2px;height:2px;}
.ember:nth-child(6){left:47%;top:88%;animation-duration:17s;animation-delay:-3s;}
@keyframes drift{
  0%{transform:translate(0,0);opacity:.15;}
  50%{transform:translate(-6px,-46px);opacity:.55;}
  100%{transform:translate(4px,-92px);opacity:0;}
}

/* thin gold frame around the whole scene
   (initial hidden states are gated behind html.js so the page is fully
   readable when JavaScript or GSAP fails to load) */
.frame-edge{position:absolute;background:linear-gradient(90deg, transparent, var(--gold) 50%, transparent);opacity:.55;z-index:2;pointer-events:none;}
html.js .frame-edge{opacity:0;}
.frame-edge--top,.frame-edge--bottom{left:min(6vw,80px);right:min(6vw,80px);height:1px;}
html.js .frame-edge--top{transform:scaleX(0);}
html.js .frame-edge--bottom{transform:scaleX(0);}
.frame-edge--top{top:min(3vw,34px);}
.frame-edge--bottom{bottom:min(3vw,34px);}
.frame-edge--left,.frame-edge--right{top:min(6vw,80px);bottom:min(6vw,80px);width:1px;background:linear-gradient(180deg, transparent, var(--gold) 50%, transparent);}
html.js .frame-edge--left{transform:scaleY(0);}
html.js .frame-edge--right{transform:scaleY(0);}
.frame-edge--left{left:min(3vw,34px);}
.frame-edge--right{right:min(3vw,34px);}
.corner{position:absolute;width:18px;height:18px;border:1px solid var(--gold);opacity:.8;z-index:2;pointer-events:none;}
html.js .corner{opacity:0;}
.corner--tl{top:min(3vw,34px);left:min(3vw,34px);border-right:none;border-bottom:none;}
.corner--tr{top:min(3vw,34px);right:min(3vw,34px);border-left:none;border-bottom:none;}
.corner--bl{bottom:min(3vw,34px);left:min(3vw,34px);border-right:none;border-top:none;}
.corner--br{bottom:min(3vw,34px);right:min(3vw,34px);border-left:none;border-top:none;}

/* ---------- slim in-hero header (decorative, part of hero) ---------- */
.site-header{
  position:relative;z-index:3;
  flex:none;
  display:flex;align-items:center;gap:14px;
  padding:min(3.6vw,30px) min(6vw,80px) 0;
}
.site-header img{height:55px;width:auto;filter:drop-shadow(0 0 8px rgba(236,200,136,.35));}
html.js .site-header img{opacity:0;}
.site-header__mark{
  font-family:var(--font-en);font-style:italic;font-weight:500;
  letter-spacing:.14em;font-size:13px;color:var(--ink-soft);
}
html.js .site-header__mark{opacity:0;}

/* ---------- hero (S6 skeleton) ---------- */
.hero{
  position:relative;z-index:3;
  display:grid;
  grid-template-columns:auto minmax(0,1fr) auto;
  align-items:end;
  flex:0 1 auto;
  width:100%;
  margin-top:auto;
  margin-bottom:auto;
  gap:min(4vw,48px);
  padding:min(4vw,46px) min(6vw,80px) min(8.5vw,120px);
}
/* デスクトップ: 中央カラムは立ち絵の実寸に合わせ、左右テキストが立ち絵に寄り添う。
   余った幅は外側(1fr)へ逃がすので、ワイド画面でも間延びしない */
@media(min-width:769px){
  .hero{grid-template-columns:1fr auto 1fr;}
  .hero__title{justify-self:end;}
  .hero__info{justify-self:start;}
  .hero__media img{max-width:48vw;}
}

.hero__title{
  margin:0;
  writing-mode:vertical-rl;
  text-orientation:mixed;
  font-family:var(--font-jp);
  font-weight:900;
  font-size:clamp(30px,5.6vw,84px);
  line-height:1.95;
  letter-spacing:.09em;
  color:var(--parchment);
  text-shadow:0 0 22px rgba(236,200,136,.3), 0 0 3px rgba(0,0,0,.6);
  line-break:strict;
  align-self:end;
}
.hero__title small{
  display:block;
  font-family:var(--font-en);
  font-style:italic;
  font-weight:500;
  font-size:14px;
  letter-spacing:.3em;
  color:var(--gold);
  margin-block-end:.6em;
}

.hero__media{
  display:flex;
  align-items:flex-end;
  justify-content:center;
  min-height:min(calc(100svh - 260px),700px);
  position:relative;
}
.hero__media::before{
  content:"";
  position:absolute;
  left:50%;bottom:6%;
  width:70%;height:60%;
  transform:translateX(-50%);
  background:radial-gradient(ellipse at center, rgba(240,163,92,.30), transparent 70%);
  filter:blur(6px);
  z-index:0;
}
.hero__media img{
  position:relative;z-index:1;
  /* カラム幅を少し超えて左右の余白ゾーンまで使う(120%)。
     高さは画面高からヘッダー+応援ボタン帯ぶんを引いた値まで = 全身が常に画面内に収まる最大サイズ */
  max-width:120%;
  max-height:min(calc(100svh - 250px), 860px);
  width:auto;
  object-fit:contain;
  filter:drop-shadow(0 18px 40px rgba(0,0,0,.55)) drop-shadow(0 0 26px rgba(236,200,136,.16));
}

.hero__info{
  align-self:end;
  max-width:min(40ch,400px);
  padding-block-end:min(2vw,10px);
}
.hero__eyebrow{
  display:flex;align-items:center;gap:10px;
  margin:0 0 18px;
  font-size:13px;letter-spacing:.16em;color:var(--gold);
}
.hero__eyebrow::before{
  content:"";width:22px;height:1px;background:var(--gold);display:inline-block;flex:none;
}
.hero__name{
  margin:0 0 4px;
  font-family:var(--font-jp);
  font-weight:900;
  font-size:clamp(22px,2.6vw,30px);
  color:var(--parchment);
}
.hero__name-en{
  display:block;
  font-family:var(--font-en);
  font-style:italic;
  font-weight:500;
  font-size:13px;
  letter-spacing:.22em;
  color:var(--ink-soft);
  margin-top:6px;
}
.hero__catch{
  margin:18px 0 0;
  font-size:clamp(16px,1.7vw,19px);
  font-weight:700;
  color:var(--gold-bright);
  line-break:strict;
  text-wrap:balance;
}
.hero__lead{
  margin:14px 0 0;
  font-size:14.5px;
  line-height:2;
  color:var(--ink-soft);
  line-break:strict;
  text-wrap:balance;
}
.hero__cta{
  display:flex;
  flex-wrap:wrap;
  gap:14px;
  margin-top:30px;
}
.btn{
  display:inline-flex;align-items:center;justify-content:center;
  padding:14px 26px;
  font-family:var(--font-jp);
  font-size:13.5px;
  font-weight:700;
  letter-spacing:.06em;
  text-decoration:none;
  border-radius:2px;
  transition:box-shadow .6s var(--ease-ember), transform .6s var(--ease-ember), background .6s var(--ease-ember), color .5s var(--ease-ember);
  white-space:nowrap;
  cursor:pointer;
  border:none;
}
.btn--primary{
  color:var(--navy-0);
  background:linear-gradient(135deg, var(--gold-bright), var(--gold));
  box-shadow:0 0 0 rgba(240,163,92,0);
}
.btn--primary:hover{
  box-shadow:0 0 26px 4px rgba(240,163,92,.55);
  transform:translateY(-1px);
}
.btn--ghost{
  color:var(--gold-bright);
  background:transparent;
  border:1px solid var(--gold);
}
.btn--ghost:hover{
  background:rgba(205,161,90,.1);
  box-shadow:0 0 18px rgba(205,161,90,.35);
}
.btn:focus-visible,.more-link:focus-visible,.sns-btn:focus-visible,
.gnav__links a:focus-visible,.site-footer__col a:focus-visible{
  outline:2px solid var(--gold-bright);outline-offset:3px;
}

/* ---------- 英語ページのヒーロー(横書きタイトル) ---------- */
.hero__title--en{
  writing-mode:horizontal-tb;
  font-size:clamp(30px,3.6vw,54px);
  line-height:1.35;
  letter-spacing:.02em;
  align-self:center;
  max-width:8em;
}
.hero__title--en small{margin-block-end:.8em;}
.stage--en .cheer{position:absolute;}
@media(max-width:768px){
  .hero__title--en{max-width:none;}
  .stage--en .cheer{position:relative;left:auto;bottom:auto;transform:none;margin:10px auto 30px;}
}

/* ---------- ヒーロー内ボイスボタン(CTAボタンの下) ---------- */
.voice__btns--hero{margin-top:16px;}
.voice__btns--hero .voice-btn{
  font-size:13px;padding:12px 20px;
  white-space:normal;text-align:left;
}

/* ---------- 応援ボタン(ヒーロー下部中央・金縁フレームの内側) ---------- */
.cheer{
  position:absolute;
  left:50%;bottom:calc(min(3vw,34px) + 16px);
  transform:translateX(-50%);
  z-index:3;
  display:flex;align-items:center;justify-content:center;gap:18px;flex-wrap:wrap;
  white-space:nowrap;
}
@media(max-width:768px){
  .cheer{
    position:relative;left:auto;bottom:auto;transform:none;
    margin:10px auto 30px;
  }
}
.cheer__btn{
  display:inline-flex;align-items:center;gap:10px;
  padding:16px 34px;
  font-family:var(--font-jp);font-size:15.5px;font-weight:700;letter-spacing:.08em;
  color:var(--gold-bright);
  background:rgba(205,161,90,.1);
  border:1px solid var(--gold);
  border-radius:999px;
  cursor:pointer;
  box-shadow:0 0 14px rgba(236,200,136,.18);
  transition:box-shadow .5s var(--ease-ember), background .5s var(--ease-ember), transform .2s var(--ease-ember);
}
.cheer__btn:hover{background:rgba(205,161,90,.16);box-shadow:0 0 20px rgba(236,200,136,.4);}
.cheer__btn:focus-visible{outline:2px solid var(--gold-bright);outline-offset:3px;}
.cheer__btn.is-pop{animation:cheer-pop .35s var(--ease-ember);}
@keyframes cheer-pop{
  0%{transform:scale(1);}
  35%{transform:scale(1.12);}
  100%{transform:scale(1);}
}
.cheer__star{color:var(--gold-bright);text-shadow:0 0 8px rgba(236,200,136,.8);font-size:18px;}
.cheer__count{margin:0;font-size:13px;letter-spacing:.04em;color:var(--ink-soft);}
.cheer__count b{color:var(--gold-bright);font-size:18px;font-weight:700;margin:0 2px;}

.cheer-star-fx{
  position:fixed;z-index:150;
  color:var(--gold-bright);
  text-shadow:0 0 10px rgba(236,200,136,.9);
  pointer-events:none;
  animation:cheer-star-fly var(--dur,0.9s) cubic-bezier(.16,1,.3,1) forwards;
}
@keyframes cheer-star-fly{
  0%{transform:translate(-50%,-50%) scale(.4) rotate(0deg);opacity:1;}
  70%{opacity:1;}
  100%{transform:translate(calc(-50% + var(--tx,0px)), calc(-50% + var(--ty,-80px))) scale(1.1) rotate(var(--rot,0deg));opacity:0;}
}

/* ---------- 認定クイズ(1問ずつの切り替え式) ---------- */
.quiz{max-width:820px;}
.quiz__progress{
  display:flex;align-items:center;gap:16px;
  margin:0 0 20px;
}
.quiz__progress-label{
  font-family:var(--font-en);font-style:italic;font-weight:600;
  font-size:20px;letter-spacing:.08em;color:var(--gold-bright);
}
.quiz__progress-label small{font-size:.65em;color:var(--ink-soft);}
.quiz__progress-bar{
  flex:1;height:2px;background:rgba(205,161,90,.2);
  position:relative;overflow:hidden;
}
.quiz__progress-bar span{
  position:absolute;left:0;top:0;bottom:0;width:10%;
  background:linear-gradient(90deg, var(--gold), var(--gold-bright));
  box-shadow:0 0 8px rgba(236,200,136,.6);
  transition:width .5s var(--ease-ember);
}
.quiz__item{
  margin:0 0 18px;padding:24px 26px;
  border:1px solid rgba(205,161,90,.2);
  background:linear-gradient(180deg, rgba(18,26,48,.35), rgba(5,7,12,.15));
}
/* JS有効時: 表示中の1問だけ見せる(採点後は全問展開して答え合わせ) */
html.js .quiz:not(.is-scored) .quiz__item{display:none;}
html.js .quiz:not(.is-scored) .quiz__item.is-active{display:block;}
html.js .quiz.is-scored .quiz__progress{display:none;}
#quizPrev[hidden],#quizNext[hidden],#quizSubmit[hidden],#quizReset[hidden]{display:none;}
.quiz__q{
  font-family:var(--font-jp);font-weight:700;font-size:15.5px;color:var(--parchment);
  padding:0;line-break:strict;text-wrap:balance;
}
.quiz__num{
  font-family:var(--font-en);font-style:italic;font-weight:600;
  font-size:13px;letter-spacing:.14em;color:var(--gold);
  margin-right:10px;
}
.quiz__multi{
  display:inline-block;margin-left:10px;
  font-size:10.5px;letter-spacing:.08em;color:var(--navy-0);
  background:var(--gold);padding:2px 8px;border-radius:2px;vertical-align:2px;
}
.quiz__opts{display:grid;gap:8px;margin-top:16px;}
.quiz__opt{
  display:flex;align-items:center;gap:12px;
  padding:12px 16px;
  border:1px solid rgba(205,161,90,.18);
  cursor:pointer;
  font-size:14.5px;color:var(--ink-soft);
  transition:border-color .4s var(--ease-ember), background .4s var(--ease-ember), color .4s var(--ease-ember);
}
.quiz__opt:hover{border-color:var(--gold);color:var(--parchment);}
.quiz__opt input{position:absolute;opacity:0;pointer-events:none;}
.quiz__opt-mark{
  flex:none;width:16px;height:16px;
  border:1px solid var(--gold);transform:rotate(45deg);
  transition:background .3s var(--ease-ember), box-shadow .3s var(--ease-ember);
}
.quiz__opt input:checked ~ .quiz__opt-mark{
  background:var(--gold-bright);
  box-shadow:0 0 10px rgba(236,200,136,.6);
}
.quiz__opt input:checked ~ .quiz__opt-text{color:var(--gold-bright);font-weight:700;}
.quiz__opt input:focus-visible ~ .quiz__opt-mark{outline:2px solid var(--gold-bright);outline-offset:3px;}
.quiz.is-scored .quiz__opt{cursor:default;}
.quiz.is-scored .quiz__opt.is-correct{border-color:var(--gold-bright);background:rgba(205,161,90,.12);color:var(--parchment);}
.quiz.is-scored .quiz__opt.is-correct .quiz__opt-text::after{content:" ◎正解";color:var(--gold-bright);font-size:12px;font-weight:700;}
.quiz.is-scored .quiz__opt.is-missed{border-color:rgba(168,56,76,.6);}
.quiz.is-scored .quiz__opt.is-missed .quiz__opt-text::after{content:" ✕";color:#c96a7c;font-size:12px;font-weight:700;}
.quiz__actions{display:flex;gap:14px;flex-wrap:wrap;margin-top:28px;}
.quiz__result{
  margin-top:28px;padding:28px 30px;
  border:1px solid var(--gold);
  background:radial-gradient(ellipse 400px 200px at 50% 0%, rgba(236,200,136,.12), transparent 70%), rgba(205,161,90,.06);
  text-align:center;
}
.quiz__result-logo{
  height:64px;width:auto;
  margin:0 auto 14px;
  filter:drop-shadow(0 0 12px rgba(236,200,136,.45));
}
.quiz__result-score{
  font-family:var(--font-en);font-style:italic;font-weight:600;
  font-size:clamp(36px,5vw,54px);color:var(--gold-bright);
  text-shadow:0 0 18px rgba(236,200,136,.5);
  display:block;line-height:1.2;
}
.quiz__result-score small{font-size:.45em;letter-spacing:.1em;margin-left:4px;}
.quiz__result-rank{
  display:block;margin-top:10px;
  font-family:var(--font-jp);font-weight:900;font-size:clamp(17px,2vw,21px);color:var(--parchment);
  line-break:strict;text-wrap:balance;
}
.quiz__result-note{display:block;margin-top:8px;font-size:13px;color:var(--ink-soft);}

/* ---------- 目立つフォローCTA(つながる) ---------- */
.follow-cta{
  margin:40px auto 0;
  max-width:720px;
  padding:30px clamp(20px,4vw,40px) 34px;
  border:1px solid var(--gold);
  background:radial-gradient(ellipse 400px 180px at 50% 0%, rgba(236,200,136,.14), transparent 70%), rgba(205,161,90,.05);
  box-shadow:0 0 30px rgba(236,200,136,.12);
}
.follow-cta__title{
  margin:0 0 20px;
  font-family:var(--font-jp);font-weight:900;
  font-size:clamp(18px,2.4vw,24px);color:var(--gold-bright);
  text-shadow:0 0 14px rgba(236,200,136,.4);
  line-break:strict;text-wrap:balance;
}
.follow-cta__btns{display:flex;gap:14px;flex-wrap:wrap;justify-content:center;}
.follow-cta__btn{
  font-size:15px;
  padding:16px 28px;
  display:inline-flex;align-items:center;gap:10px;
}
.follow-cta__btn svg{width:20px;height:20px;flex:none;}
.sp-only{display:none;}
@media(max-width:640px){
  .sp-only{display:inline;}
  .follow-cta__btns{flex-direction:column;align-items:stretch;}
}

/* ---------- 立ち絵の虫眼鏡ズーム ---------- */
#portraitZoom{cursor:zoom-in;}
.zoom-lens{
  position:absolute;z-index:5;
  width:140px;height:140px;
  margin:0;padding:0;
  transform:translate(-50%,-50%);
  border-radius:50%;
  border:1px solid var(--gold);
  box-shadow:0 0 0 3px rgba(5,7,12,.6), 0 0 24px rgba(236,200,136,.35), inset 0 0 14px rgba(5,7,12,.5);
  background-repeat:no-repeat;
  background-color:var(--navy-1);
  pointer-events:none;
  transition:opacity .2s ease;
}

.hero__seal{
  position:absolute;
  left:min(6vw,80px);
  bottom:min(2.4vw,26px);
  z-index:3;
  font-family:var(--font-en);
  font-style:italic;
  font-weight:600;
  font-size:clamp(14px,1.4vw,18px);
  letter-spacing:.26em;
  color:var(--gold-bright);
  text-shadow:0 0 12px rgba(236,200,136,.45);
  opacity:.95;
}

@media(max-width:768px){
  .hero{grid-template-columns:auto 1fr;min-height:auto;padding-top:min(6vw,40px);}
  .hero__info{grid-column:1/3;max-width:100%;margin-top:26px;}
  .hero__media{min-height:50svh;}
  .hero__media img{max-height:60svh;}
  .hero__title{font-size:clamp(26px,9vw,44px);line-height:1.7;}
  .hero__seal{position:relative;left:auto;bottom:auto;display:block;margin:34px min(6vw,40px) 0;}
}

@media(max-width:420px){
  .hero{padding-left:min(5vw,20px);padding-right:min(5vw,20px);gap:5vw;}
  .site-header{padding-left:min(5vw,20px);padding-right:min(5vw,20px);}
  .hero__title{font-size:clamp(24px,10vw,36px);letter-spacing:.05em;}
  .hero__lead{font-size:13.5px;}
  .frame-edge--top,.frame-edge--bottom{left:12px;right:12px;}
  .frame-edge--left,.frame-edge--right{top:12px;bottom:12px;}
}

@media (prefers-reduced-motion: reduce){
  .ember{animation:none;opacity:.2;}
}

/* =====================================================================
   GLOBAL NAV
   TOP(home): hidden above the viewport until the visitor scrolls past
   the hero (JS slides it in) so the hero's first impression stays
   exactly as designed. Subpages / no-JS: always visible.
   ===================================================================== */
.gnav{
  position:fixed;top:0;left:0;right:0;z-index:80;
  display:flex;align-items:center;justify-content:space-between;
  padding:16px min(6vw,80px);
  background:rgba(5,7,12,.86);
  backdrop-filter:blur(10px);
  -webkit-backdrop-filter:blur(10px);
  border-bottom:1px solid rgba(205,161,90,.18);
}
html.js body.home .gnav{transform:translateY(-100%);}
body:not(.home) .gnav{position:sticky;}
body:not(.home) .site-main{padding-top:0;}
.gnav__brand{display:flex;align-items:center;gap:10px;text-decoration:none;}
.gnav__brand img{height:52px;width:auto;filter:drop-shadow(0 0 6px rgba(236,200,136,.3));}
.gnav__brand span{font-family:var(--font-en);font-style:italic;font-weight:500;font-size:12px;letter-spacing:.16em;color:var(--ink-soft);}
.gnav__right{display:flex;align-items:center;gap:22px;}
.gnav__links{display:flex;align-items:center;gap:26px;list-style:none;margin:0;padding:0;}
.gnav__links a{color:var(--ink-soft);text-decoration:none;font-size:13px;letter-spacing:.03em;transition:color .5s var(--ease-ember);white-space:nowrap;}
.gnav__links a:hover{color:var(--gold-bright);}
.gnav__note{font-size:10px;color:var(--ink-soft);opacity:.55;letter-spacing:.01em;white-space:nowrap;}
.gnav__burger{display:none;width:44px;height:44px;border:1px solid rgba(205,161,90,.4);background:transparent;border-radius:2px;position:relative;cursor:pointer;flex:none;}
.gnav__burger span{position:absolute;left:12px;right:12px;height:1px;background:var(--gold-bright);transition:transform .4s var(--ease-ember),opacity .3s var(--ease-ember);}
.gnav__burger span:nth-child(1){top:16px;}
.gnav__burger span:nth-child(2){top:21px;}
.gnav__burger span:nth-child(3){top:26px;}
.gnav.is-open .gnav__burger span:nth-child(1){transform:translateY(5px) rotate(45deg);}
.gnav.is-open .gnav__burger span:nth-child(2){opacity:0;}
.gnav.is-open .gnav__burger span:nth-child(3){transform:translateY(-5px) rotate(-45deg);}

@media(max-width:860px){
  /* Mobile dropdown uses normal flex-wrap flow (no position:fixed/absolute
     on children) so it travels correctly with .gnav's own translateY.
     .gnav__right is display:contents so its children become direct flex
     items of .gnav itself and the wrapped panel spans the full width. */
  .gnav{flex-wrap:wrap;row-gap:0;}
  .gnav__right{display:contents;}
  .gnav__burger{display:block;order:1;}
  .gnav__links{
    order:2;flex-basis:100%;
    flex-direction:column;align-items:flex-start;gap:0;
    max-height:0;overflow:hidden;
    transition:max-height .5s var(--ease-ember);
  }
  .gnav.is-open .gnav__links{max-height:420px;margin-top:14px;}
  .gnav__links a{width:100%;padding:14px 0;border-top:1px solid rgba(205,161,90,.1);}
  .gnav__note{
    order:3;flex-basis:100%;
    white-space:normal;text-align:left;
    max-height:0;overflow:hidden;
    transition:max-height .5s var(--ease-ember);
  }
  .gnav.is-open .gnav__note{max-height:40px;padding:10px 0 4px;border-top:1px solid rgba(205,161,90,.1);}
}

/* =====================================================================
   SHARED SECTION SYSTEM
   ===================================================================== */
.section{
  position:relative;
  padding:clamp(64px,9vw,128px) min(6vw,80px);
  background:var(--navy-0);
}
.section--alt{background:linear-gradient(180deg, var(--navy-0), var(--navy-1) 40%, var(--navy-0));}
.section__inner{max-width:1180px;margin:0 auto;position:relative;z-index:2;}
.section__head{max-width:680px;margin-bottom:clamp(40px,6vw,64px);}
.section--center .section__head{max-width:760px;margin-left:auto;margin-right:auto;text-align:center;}

.eyebrow{
  display:flex;align-items:center;gap:10px;
  margin:0 0 18px;
  font-family:var(--font-en);font-style:italic;font-weight:600;
  font-size:12.5px;letter-spacing:.28em;color:var(--gold);
  text-transform:uppercase;
}
.eyebrow::before{content:"";width:22px;height:1px;background:var(--gold);display:inline-block;flex:none;}
.section--center .eyebrow{justify-content:center;}

.h2{
  margin:0;
  font-family:var(--font-jp);
  font-weight:900;
  font-size:clamp(28px,4.2vw,48px);
  line-height:1.4;
  color:var(--parchment);
  line-break:strict;
  text-wrap:balance;
}
.rule{
  width:64px;height:1px;
  background:linear-gradient(90deg, var(--gold), transparent);
  margin:22px 0 0;
  transform-origin:left center;
}
html.js .rule{transform:scaleX(0);}
.section--center .rule{margin-left:auto;margin-right:auto;transform-origin:center;}

.lede{
  margin:24px 0 0;
  font-size:clamp(15.5px,1.6vw,18px);
  font-weight:700;
  color:var(--gold-bright);
  line-height:1.8;
  line-break:strict;
  text-wrap:balance;
}
.body-text{
  margin:18px 0 0;
  font-size:15.5px;
  line-height:1.9;
  color:var(--ink-soft);
  line-break:strict;
  text-wrap:balance;
}
.body-text + .body-text{margin-top:20px;}
.body-text b{color:var(--parchment);font-weight:700;}

.more-link{
  display:inline-flex;align-items:center;gap:8px;
  margin-top:32px;
  color:var(--gold-bright);
  text-decoration:none;
  font-size:13.5px;
  letter-spacing:.05em;
  font-weight:700;
  border-bottom:1px solid rgba(236,200,136,.4);
  padding-bottom:4px;
  transition:border-color .5s var(--ease-ember), gap .5s var(--ease-ember), color .5s var(--ease-ember);
}
.more-link:hover{gap:14px;border-color:var(--gold-bright);color:var(--parchment);}

/* ---------- reveal groups (hidden only when JS is active) ---------- */
html.js [data-reveal]{opacity:0;}
html.js [data-reveal-scale]{opacity:0;}
html.js [data-reveal-line]{opacity:0;}
html.js [data-reveal-card]{opacity:0;}
html.js [data-reveal-job]{opacity:0;}

/* =====================================================================
   SECTION 2: 悩みの言語化(line-stretch reveal)
   ===================================================================== */
.worries{max-width:820px;}
.worries__list{list-style:none;margin:0;padding:0;}
.worries__item{
  position:relative;
  padding:26px 0 26px 30px;
  border-top:1px solid rgba(205,161,90,.16);
}
.worries__item:last-child{border-bottom:1px solid rgba(205,161,90,.16);}
.worries__item::before{
  content:"";
  position:absolute;left:0;top:0;
  width:100%;height:1px;
  background:linear-gradient(90deg, var(--gold), transparent 70%);
  transform-origin:left center;
}
html.js .worries__item::before{transform:scaleX(0);}
.worries__item p{
  margin:0;
  font-size:clamp(16px,2vw,20px);
  font-weight:700;
  color:var(--parchment);
  line-height:1.8;
  line-break:strict;
  text-wrap:balance;
}
.worries__bridge{
  margin:44px 0 0;
  font-size:15px;
  color:var(--gold-bright);
  font-weight:700;
}

/* =====================================================================
   SECTION 3: 解決アプローチ(fade+brightness)
   ===================================================================== */
.approach__grid{
  display:grid;
  grid-template-columns:minmax(0,1fr) minmax(300px,520px);
  gap:clamp(32px,4vw,56px);
  align-items:center;
}
.approach__text{max-width:720px;}
.approach__visual-frame{
  position:relative;
  border:1px solid rgba(205,161,90,.35);
  padding:14px;
  background:linear-gradient(180deg, rgba(18,26,48,.5), rgba(5,7,12,.2));
}
.approach__visual-frame::before,
.approach__visual-frame::after{
  content:"";position:absolute;width:16px;height:16px;border:1px solid var(--gold);
}
.approach__visual-frame::before{top:-1px;left:-1px;border-right:none;border-bottom:none;}
.approach__visual-frame::after{bottom:-1px;right:-1px;border-left:none;border-top:none;}
.approach__visual img{
  width:100%;height:auto;display:block;
  filter:drop-shadow(0 12px 24px rgba(0,0,0,.5));
}
@media(max-width:768px){
  .approach__grid{grid-template-columns:1fr;}
  .approach__visual{max-width:440px;margin:8px auto 0;}
}

/* =====================================================================
   SECTION 4: プロフィール(stagger cards)
   ===================================================================== */
.profile__layout{
  display:grid;
  grid-template-columns:minmax(220px,320px) 1fr;
  gap:clamp(32px,5vw,64px);
  align-items:start;
}
.profile__portrait{position:relative;}
.profile__portrait-frame{
  position:relative;
  border:1px solid rgba(205,161,90,.35);
  padding:18px;
  background:linear-gradient(180deg, rgba(18,26,48,.5), rgba(5,7,12,.2));
}
.profile__portrait-frame::before,
.profile__portrait-frame::after{
  content:"";position:absolute;width:16px;height:16px;border:1px solid var(--gold);
}
.profile__portrait-frame::before{top:-1px;left:-1px;border-right:none;border-bottom:none;}
.profile__portrait-frame::after{bottom:-1px;right:-1px;border-left:none;border-top:none;}
.profile__portrait img{
  width:100%;height:auto;
  filter:drop-shadow(0 12px 24px rgba(0,0,0,.5));
}
.profile__expressions{
  display:grid;grid-template-columns:repeat(3,1fr);
  gap:10px;margin-top:14px;
}
.profile__expr-btn{
  padding:0 0 6px;margin:0;border:1px solid rgba(205,161,90,.25);background:transparent;
  cursor:pointer;line-height:0;
  display:flex;flex-direction:column;gap:6px;
  transition:border-color .5s var(--ease-ember), box-shadow .5s var(--ease-ember);
}
.profile__expr-name{
  display:block;width:100%;
  font-family:var(--font-jp);
  font-size:11px;font-weight:700;line-height:1.4;
  letter-spacing:.06em;color:var(--ink-soft);
  text-align:center;
  transition:color .4s var(--ease-ember);
}
.profile__expr-btn:hover .profile__expr-name,
.profile__expr-btn:focus-visible .profile__expr-name{color:var(--gold-bright);}
.profile__expr-btn:hover,.profile__expr-btn:focus-visible{
  border-color:var(--gold);box-shadow:0 0 14px rgba(205,161,90,.35);
  outline:none;
}
.profile__expressions img{
  width:100%;aspect-ratio:1/1;object-fit:cover;object-position:top center;
  display:block;
  filter:brightness(.94);
  transition:filter .5s var(--ease-ember);
}
.profile__expr-btn:hover img,.profile__expr-btn:focus-visible img{filter:brightness(1.08);}
.profile__expressions-label{
  margin:10px 0 0;font-size:11px;letter-spacing:.14em;color:var(--ink-soft);opacity:.7;text-align:center;
}

/* ---------- lightbox (expression thumbnails) ---------- */
.lightbox{position:fixed;inset:0;z-index:200;display:flex;align-items:center;justify-content:center;padding:min(6vw,40px);}
.lightbox[hidden]{display:none;}
.lightbox__backdrop{position:absolute;inset:0;background:rgba(5,7,12,.92);backdrop-filter:blur(4px);border:none;padding:0;cursor:pointer;}
.lightbox__content{position:relative;z-index:1;max-width:min(92vw,1100px);max-height:88vh;overflow:hidden;}
.lightbox__img{
  width:100%;height:auto;max-height:88vh;object-fit:contain;display:block;
  border:1px solid rgba(205,161,90,.4);background:var(--navy-1);
  cursor:zoom-in;
  transition:transform .35s var(--ease-ember);
}
.lightbox__img.is-zoomed{cursor:zoom-out;transform:scale(2.2);}
.lightbox__close{
  position:absolute;top:-16px;right:-16px;z-index:2;
  width:38px;height:38px;border-radius:50%;
  border:1px solid var(--gold);background:var(--navy-0);color:var(--gold-bright);
  font-size:18px;line-height:1;cursor:pointer;
  display:flex;align-items:center;justify-content:center;
  transition:box-shadow .5s var(--ease-ember);
}
.lightbox__close:hover,.lightbox__close:focus-visible{box-shadow:0 0 16px rgba(205,161,90,.5);outline:none;}

.profile__name{
  font-family:var(--font-jp);font-weight:900;
  font-size:clamp(22px,2.6vw,28px);color:var(--parchment);margin:0 0 4px;
}
.profile__name-en{
  display:block;font-family:var(--font-en);font-style:italic;font-weight:500;
  font-size:13px;letter-spacing:.2em;color:var(--ink-soft);margin-top:6px;
}
.profile__desc{margin-top:20px;}
.profile__career{
  list-style:none;margin:26px 0 0;padding:0;
  display:grid;gap:12px;
}
.profile__career li{
  position:relative;
  padding-left:22px;
  font-size:14.5px;line-height:1.8;color:var(--ink-soft);
}
.profile__career li::before{
  content:"";position:absolute;left:0;top:.7em;
  width:8px;height:8px;border:1px solid var(--gold);transform:rotate(45deg);
}
.profile__career li b{color:var(--parchment);font-weight:700;}

/* ---------- SECTION 4b: 転職の軌跡(career chronicle sub-block) ---------- */
.profile__jobs{margin:40px 0 0;}
.profile__jobs-title{
  margin:0;
  font-family:var(--font-jp);
  font-weight:900;
  font-size:clamp(19px,2.2vw,23px);
  line-height:1.6;
  color:var(--parchment);
  line-break:strict;
  text-wrap:balance;
}
.profile__jobs-lede{
  margin:14px 0 0;
  max-width:56ch;
  font-size:13.5px;
  line-height:1.9;
  color:var(--ink-soft);
  line-break:strict;
  text-wrap:balance;
}
.jobs__grid{
  margin-top:22px;
  display:flex;
  flex-wrap:wrap;
  gap:1px;
  background:rgba(205,161,90,.16);
  border:1px solid rgba(205,161,90,.16);
}
.job-card{
  background:var(--navy-0);
  padding:18px 16px;
  display:flex;flex-direction:column;gap:6px;
  flex:1 1 240px;
}
.job-card__num{
  font-family:var(--font-en);font-style:italic;font-weight:600;
  font-size:11px;letter-spacing:.14em;color:var(--gold);
}
.job-card__name{
  margin:0;
  font-family:var(--font-jp);font-weight:900;
  font-size:14.5px;line-height:1.55;color:var(--gold-bright);
  line-break:strict;text-wrap:balance;
}
.job-card__orig{
  margin:0;
  font-size:11px;line-height:1.5;color:var(--ink-soft);opacity:.75;
}
.job-card__flavor{
  margin:2px 0 0;
  font-size:12px;line-height:1.75;color:var(--ink-soft);
  line-break:strict;text-wrap:balance;
}
@media(max-width:480px){
  .job-card{flex-basis:100%;}
}

@media(max-width:768px){
  .profile__layout{grid-template-columns:1fr;}
  .profile__portrait{max-width:280px;margin:0 auto;}
}

/* ---------- 衣装デザイン設定資料(三面図) ---------- */
.refsheet{margin-top:clamp(48px,6vw,72px);}
.refsheet__title{
  margin:0 0 18px;
  font-family:var(--font-jp);font-weight:900;
  font-size:clamp(19px,2.2vw,23px);color:var(--parchment);
  display:flex;align-items:baseline;gap:14px;flex-wrap:wrap;
}
.refsheet__title-en{
  font-family:var(--font-en);font-style:italic;font-weight:600;
  font-size:12px;letter-spacing:.24em;color:var(--gold);
}
.refsheet__frame{
  display:block;width:100%;
  padding:14px;margin:0;
  position:relative;
  border:1px solid rgba(205,161,90,.35);
  background:linear-gradient(180deg, rgba(18,26,48,.5), rgba(5,7,12,.2));
  cursor:zoom-in;
  transition:box-shadow .5s var(--ease-ember), border-color .5s var(--ease-ember);
}
.refsheet__frame::before,.refsheet__frame::after{
  content:"";position:absolute;width:16px;height:16px;border:1px solid var(--gold);
}
.refsheet__frame::before{top:-1px;left:-1px;border-right:none;border-bottom:none;}
.refsheet__frame::after{bottom:-1px;right:-1px;border-left:none;border-top:none;}
.refsheet__frame:hover,.refsheet__frame:focus-visible{
  border-color:var(--gold);box-shadow:0 0 24px rgba(205,161,90,.3);outline:none;
}
.refsheet__frame img{width:100%;height:auto;display:block;}
.refsheet__caption{
  margin:12px 0 0;font-size:12.5px;color:var(--ink-soft);opacity:.8;
}

/* ---------- 生みの親(ママ・パパ)紹介 ---------- */
.parents{margin-top:clamp(40px,5vw,56px);}
.parents__grid{
  display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));
  gap:16px;max-width:680px;
}
.parents__card{
  display:flex;flex-direction:column;gap:6px;
  padding:22px 24px;
  border:1px solid rgba(205,161,90,.25);
  text-decoration:none;
  transition:border-color .4s var(--ease-ember), box-shadow .4s var(--ease-ember), background .4s var(--ease-ember);
}
.parents__card:hover,.parents__card:focus-visible{
  border-color:var(--gold);
  background:rgba(205,161,90,.07);
  box-shadow:0 0 18px rgba(236,200,136,.25);
  outline:none;
}
.parents__role{font-size:11.5px;letter-spacing:.08em;color:var(--gold);}
.parents__name{
  font-family:var(--font-jp);font-weight:900;font-size:18px;color:var(--parchment);
}
.parents__x{font-size:13px;color:var(--gold-bright);font-weight:700;}
.illust-credit{
  margin:10px 0 0;font-size:12px;color:var(--ink-soft);opacity:.85;text-align:right;
}
.illust-credit a{color:var(--gold-bright);text-decoration:none;}
.illust-credit a:hover{text-decoration:underline;}

/* =====================================================================
   SECTION 5: 実績・記録(stagger cards)
   ===================================================================== */
.achv__grid{
  display:flex;
  flex-wrap:wrap;
  gap:1px;
  background:rgba(205,161,90,.16);
  border:1px solid rgba(205,161,90,.16);
}
.achv__card{
  background:var(--navy-0);
  padding:30px 26px;
  display:flex;flex-direction:column;gap:12px;
  flex:1 1 220px;
}
.achv__num{
  font-family:var(--font-en);font-style:italic;font-weight:600;
  font-size:13px;letter-spacing:.14em;color:var(--gold);
}
.achv__title{
  font-family:var(--font-jp);font-weight:900;
  font-size:19px;color:var(--parchment);line-height:1.5;
  line-break:strict;text-wrap:balance;
}
.achv__desc{font-size:13.5px;line-height:1.8;color:var(--ink-soft);}

/* =====================================================================
   SECTION 6: 楽曲・動画(scale-in / climax)
   ===================================================================== */
.music__intro{display:grid;grid-template-columns:1fr auto;align-items:end;gap:32px;}
.music__deco{max-width:180px;opacity:.9;}
.music__deco img{filter:drop-shadow(0 14px 28px rgba(0,0,0,.5)) drop-shadow(0 0 20px rgba(236,200,136,.14));}
.music__grid{
  margin-top:48px;
  display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));
  gap:clamp(28px,4vw,44px);
}
.music__card{position:relative;}
.music__frame{
  position:relative;
  padding:10px;
  border:1px solid rgba(205,161,90,.35);
  background:linear-gradient(180deg, rgba(18,26,48,.5), rgba(5,7,12,.2));
}
.music__frame::before,.music__frame::after{
  content:"";position:absolute;width:16px;height:16px;border:1px solid var(--gold);
}
.music__frame::before{top:-1px;left:-1px;border-right:none;border-bottom:none;}
.music__frame::after{bottom:-1px;right:-1px;border-left:none;border-top:none;}
.music__embed{position:relative;width:100%;aspect-ratio:16/9;overflow:hidden;background:#000;}
.music__embed iframe{position:absolute;inset:0;width:100%;height:100%;border:0;}
.music__meta{margin-top:16px;}
.music__label{font-size:11px;letter-spacing:.18em;color:var(--gold);margin:0 0 6px;}
.music__title{font-family:var(--font-jp);font-weight:900;font-size:19px;color:var(--parchment);margin:0;}
.music__caption{margin:8px 0 0;font-size:14px;line-height:1.8;color:var(--ink-soft);}

@media(max-width:640px){
  .music__intro{grid-template-columns:1fr;}
  .music__deco{display:none;}
}

/* ---------- ボイスボタン(楽曲セクション内) ---------- */
.voice{margin-top:clamp(40px,5vw,56px);}
.voice__title{
  margin:0 0 18px;
  font-family:var(--font-jp);font-weight:900;
  font-size:clamp(19px,2.2vw,23px);color:var(--parchment);
  display:flex;align-items:baseline;gap:14px;flex-wrap:wrap;
}
.voice__title-en{
  font-family:var(--font-en);font-style:italic;font-weight:600;
  font-size:12px;letter-spacing:.24em;color:var(--gold);
}
.voice__btns{display:flex;flex-wrap:wrap;gap:14px;}
.voice-btn{
  display:inline-flex;align-items:center;gap:12px;
  padding:14px 24px;
  font-family:var(--font-jp);font-size:14.5px;font-weight:700;letter-spacing:.04em;
  color:var(--gold-bright);
  background:rgba(205,161,90,.08);
  border:1px solid var(--gold);
  border-radius:999px;
  cursor:pointer;
  transition:box-shadow .5s var(--ease-ember), background .5s var(--ease-ember);
}
.voice-btn:hover{background:rgba(205,161,90,.16);box-shadow:0 0 18px rgba(236,200,136,.35);}
.voice-btn:focus-visible{outline:2px solid var(--gold-bright);outline-offset:3px;}
.voice-btn__icon{
  flex:none;width:0;height:0;
  border-left:11px solid var(--gold-bright);
  border-top:7px solid transparent;
  border-bottom:7px solid transparent;
  filter:drop-shadow(0 0 6px rgba(236,200,136,.6));
}
.voice-btn.is-playing{
  background:rgba(205,161,90,.2);
  box-shadow:0 0 22px rgba(236,200,136,.5);
}
.voice-btn.is-playing .voice-btn__icon{
  border:none;width:12px;height:14px;
  background:linear-gradient(90deg, var(--gold-bright) 0 4px, transparent 4px 8px, var(--gold-bright) 8px 12px);
  animation:voice-eq .8s linear infinite;
}
@keyframes voice-eq{
  0%,100%{transform:scaleY(1);}
  50%{transform:scaleY(.55);}
}
.voice__caption{margin:12px 0 0;font-size:12px;color:var(--ink-soft);opacity:.7;}

/* ---------- 最新動画(YouTube RSS自動取得) ---------- */
.latest-videos{margin-top:clamp(40px,5vw,56px);}
.yt-grid{
  display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));
  gap:16px;
}
.yt-card{
  display:flex;flex-direction:column;gap:8px;
  text-decoration:none;
  border:1px solid rgba(205,161,90,.2);
  padding:10px;
  transition:border-color .4s var(--ease-ember), box-shadow .4s var(--ease-ember);
}
.yt-card:hover,.yt-card:focus-visible{
  border-color:var(--gold);box-shadow:0 0 18px rgba(236,200,136,.25);outline:none;
}
.yt-card__thumb{position:relative;display:block;overflow:hidden;background:#000;aspect-ratio:16/9;}
.yt-card__thumb img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .5s var(--ease-ember);}
.yt-card:hover .yt-card__thumb img{transform:scale(1.05);}
.yt-card__play{
  position:absolute;inset:0;display:flex;align-items:center;justify-content:center;
  color:var(--gold-bright);font-size:26px;
  background:rgba(5,7,12,.25);
  text-shadow:0 0 12px rgba(0,0,0,.8);
  transition:background .4s var(--ease-ember);
}
.yt-card:hover .yt-card__play{background:rgba(5,7,12,.05);}
.yt-card__title{
  font-family:var(--font-jp);font-size:13px;font-weight:700;line-height:1.6;color:var(--parchment);
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;
}
.yt-card__date{
  font-family:var(--font-en);font-style:italic;font-size:11px;letter-spacing:.1em;color:var(--gold);
}

/* =====================================================================
   SECTION 7: スケジュール(fade+brightness)
   ===================================================================== */
.sched__notice{
  display:flex;align-items:flex-start;gap:14px;
  padding:20px 24px;
  border:1px solid rgba(205,161,90,.3);
  background:rgba(205,161,90,.06);
  max-width:640px;
}
.sched__notice-dot{
  flex:none;width:8px;height:8px;border-radius:50%;
  background:var(--gold-bright);margin-top:6px;
  box-shadow:0 0 8px 2px rgba(236,200,136,.5);
}
.sched__notice p{margin:0;font-size:14.5px;line-height:1.8;color:var(--parchment);}

.sched__week{
  margin-top:44px;
  display:flex;flex-wrap:wrap;
  gap:1px;
  background:rgba(205,161,90,.16);
  border:1px solid rgba(205,161,90,.16);
}
.sched__day{
  background:var(--navy-0);
  padding:18px 10px 20px;
  display:flex;flex-direction:column;align-items:center;gap:14px;
  text-align:center;
  flex:1 1 14.2857%;
}
.sched__day-name{
  margin:0;font-family:var(--font-jp);font-weight:900;font-size:18px;color:var(--parchment);
  display:flex;flex-direction:column;align-items:center;gap:4px;
}
.sched__day-en{
  font-family:var(--font-en);font-style:italic;font-weight:500;font-size:9.5px;
  letter-spacing:.16em;color:var(--gold);
}
.sched__day-genre{
  position:relative;
  margin:0;font-size:12.5px;line-height:1.6;color:var(--gold-bright);font-weight:700;
}
.sched__day-genre--off{color:var(--ink-soft);font-weight:500;opacity:.7;}
.sched__tag{
  display:inline-block;margin-left:4px;
  font-family:var(--font-en);font-style:italic;font-size:9px;letter-spacing:.05em;
  color:var(--navy-0);background:var(--gold);
  padding:1px 5px;border-radius:2px;vertical-align:2px;
}
.sched__week-caption{margin:14px 0 0;font-size:12px;color:var(--ink-soft);opacity:.7;}
.sched__disclaimer{
  margin:28px 0 0;padding:14px 18px;
  font-size:12.5px;line-height:1.8;color:var(--gold-bright);
  border:1px solid rgba(205,161,90,.3);background:rgba(205,161,90,.06);
  max-width:640px;
}
.sched__origin{
  margin-top:20px;
  font-size:15px;font-weight:700;
  color:var(--gold-bright);
}

@media(max-width:768px){
  .sched__day{flex-basis:25%;}
}
@media(max-width:480px){
  .sched__day{flex-basis:100%;flex-direction:row;justify-content:space-between;text-align:left;padding:14px 16px;}
  .sched__day-name{flex-direction:row;gap:8px;font-size:15px;}
}

/* =====================================================================
   SECTION 8: FAQ(WP_Query: qa CPT・プログレッシブエンハンスメント)
   HTMLは展開状態で出力し、JS読み込み時に閉じる(非JS環境・クローラーは全文閲覧可)
   ===================================================================== */
.faq__list{max-width:820px;display:grid;gap:1px;background:rgba(205,161,90,.14);border:1px solid rgba(205,161,90,.14);}
.faq__item{background:var(--navy-0);}
.faq__q{margin:0;}
.faq__q button{
  width:100%;border:none;background:transparent;text-align:left;
  cursor:pointer;
  display:flex;align-items:center;justify-content:space-between;gap:16px;
  padding:22px 24px;
  font-family:var(--font-jp);font-weight:700;font-size:15.5px;color:var(--parchment);
}
.faq__q button::before{
  content:"Q";flex:none;
  font-family:var(--font-en);font-style:italic;font-weight:600;
  color:var(--gold);margin-right:4px;
}
.faq__q button:focus-visible{outline:2px solid var(--gold-bright);outline-offset:-2px;}
.faq__q-text{flex:1;}
.faq__icon{
  flex:none;width:18px;height:18px;position:relative;
}
.faq__icon::before,.faq__icon::after{
  content:"";position:absolute;background:var(--gold);
  transition:transform .4s var(--ease-ember), opacity .4s var(--ease-ember);
}
.faq__icon::before{left:0;top:8px;width:18px;height:1px;}
.faq__icon::after{left:8px;top:0;width:1px;height:18px;}
.faq__q button[aria-expanded="true"] .faq__icon::after{transform:rotate(90deg);opacity:0;}
.faq__answer{
  padding:0 24px 24px 46px;
  font-size:14.5px;line-height:1.85;color:var(--ink-soft);
}
.faq__answer[hidden]{display:none;}
.faq__answer p{margin:0 0 10px;}
.faq__answer p:last-child{margin-bottom:0;}
.faq__answer a{color:var(--gold-bright);}
.faq__more{max-width:820px;}

/* =====================================================================
   SECTION 9: つながる(line-stretch / 主CTA)
   ===================================================================== */
.connect{background:radial-gradient(ellipse 700px 400px at 50% 0%, rgba(236,200,136,.08), transparent 65%), var(--navy-0);}
.connect__sns{
  display:flex;flex-wrap:wrap;gap:16px;justify-content:center;
  margin-top:36px;
}
.sns-btn{
  display:inline-flex;align-items:center;gap:10px;
  padding:14px 28px;
  border:1px solid var(--gold);
  color:var(--gold-bright);
  text-decoration:none;
  font-size:14px;font-weight:700;letter-spacing:.05em;
  border-radius:2px;
  transition:background .5s var(--ease-ember), box-shadow .5s var(--ease-ember), transform .5s var(--ease-ember);
}
.sns-btn:hover{background:rgba(205,161,90,.12);box-shadow:0 0 20px rgba(205,161,90,.35);transform:translateY(-1px);}
.sns-btn svg{width:18px;height:18px;flex:none;}

.connect__cta{display:flex;justify-content:center;margin-top:18px;}

.connect__info{
  margin-top:56px;
  display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));
  gap:20px;
  max-width:820px;margin-left:auto;margin-right:auto;
}
.connect__info-card{
  padding:24px;
  border:1px solid rgba(205,161,90,.2);
  text-align:left;
}
.connect__info-title{font-family:var(--font-jp);font-weight:700;font-size:14.5px;color:var(--gold-bright);margin:0 0 8px;}
.connect__info-desc{font-size:13.5px;line-height:1.8;color:var(--ink-soft);margin:0;}

/* =====================================================================
   FOOTER(static)
   ===================================================================== */
.site-footer{
  background:var(--navy-1);
  border-top:1px solid rgba(205,161,90,.16);
  padding:clamp(48px,7vw,72px) min(6vw,80px) 28px;
}
.site-footer__inner{max-width:1180px;margin:0 auto;}
.site-footer__top{
  display:grid;
  grid-template-columns:auto 1fr;
  gap:clamp(32px,6vw,80px);
  padding-bottom:40px;
  border-bottom:1px solid rgba(205,161,90,.12);
}
.site-footer__brand{display:flex;flex-direction:column;gap:14px;max-width:280px;}
.site-footer__brand img{height:64px;width:auto;align-self:flex-start;object-fit:contain;filter:drop-shadow(0 0 8px rgba(236,200,136,.3));}
.site-footer__brand-name{font-family:var(--font-jp);font-weight:900;font-size:16px;color:var(--parchment);}
.site-footer__brand-en{font-family:var(--font-en);font-style:italic;font-size:12px;letter-spacing:.18em;color:var(--ink-soft);display:block;}
.site-footer__sitemap{
  display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:24px;
}
.site-footer__col h4{
  margin:0 0 14px;font-size:11px;letter-spacing:.16em;color:var(--gold);font-weight:700;text-transform:uppercase;
}
.site-footer__col ul{list-style:none;margin:0;padding:0;display:grid;gap:10px;}
.site-footer__col a{color:var(--ink-soft);text-decoration:none;font-size:13.5px;transition:color .5s var(--ease-ember);}
.site-footer__col a:hover{color:var(--gold-bright);}
.site-footer__note{margin-top:14px;font-size:11px;color:var(--ink-soft);opacity:.55;line-height:1.7;max-width:280px;}

.site-footer__bottom{
  padding-top:24px;
  display:flex;flex-wrap:wrap;gap:12px 24px;justify-content:space-between;align-items:center;
}
.site-footer__credit{font-size:12px;color:var(--ink-soft);}
.site-footer__credit b{color:var(--gold-bright);font-weight:700;}
.site-footer__copyright{font-size:11.5px;color:var(--ink-soft);opacity:.6;}

@media(max-width:640px){
  .site-footer__top{grid-template-columns:1fr;}
  .site-footer__bottom{flex-direction:column;align-items:flex-start;}
}

/* =====================================================================
   SUBPAGES(下層・アーカイブ・404 — モックの言語で追補)
   ===================================================================== */
.page-hero{
  padding:clamp(120px,16vw,180px) min(6vw,80px) clamp(48px,7vw,72px);
  background:
    radial-gradient(ellipse 620px 320px at 70% 20%, rgba(236,200,136,.1), transparent 62%),
    linear-gradient(180deg, var(--navy-1), var(--navy-0));
  border-bottom:1px solid rgba(205,161,90,.14);
}
.page-hero__inner{max-width:1180px;margin:0 auto;}
.page-hero .h2{font-size:clamp(26px,3.6vw,42px);}
.breadcrumb{margin:0 0 18px;font-size:12px;color:var(--ink-soft);}
.breadcrumb ol{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:6px;}
.breadcrumb li+li::before{content:"/";margin-right:6px;opacity:.5;}
.breadcrumb a{color:var(--ink-soft);text-decoration:none;}
.breadcrumb a:hover{color:var(--gold-bright);}

.entry-content{max-width:760px;font-size:15.5px;line-height:1.95;color:var(--ink-soft);}
.entry-content h2,.entry-content h3{font-family:var(--font-jp);color:var(--parchment);line-height:1.5;line-break:strict;text-wrap:balance;}
.entry-content h2{font-size:clamp(22px,2.6vw,28px);margin:2.2em 0 .8em;padding-bottom:14px;border-bottom:1px solid rgba(205,161,90,.25);}
.entry-content h3{font-size:clamp(18px,2vw,21px);margin:1.8em 0 .6em;}
.entry-content a{color:var(--gold-bright);}
.entry-content img{height:auto;}
.entry-content table{border-collapse:collapse;width:100%;margin:1.5em 0;}
.entry-content th,.entry-content td{border:1px solid rgba(205,161,90,.25);padding:10px 14px;font-size:14px;text-align:left;}
.entry-content th{background:rgba(205,161,90,.08);color:var(--parchment);}
.entry-content blockquote{margin:1.5em 0;padding:14px 20px;border-left:2px solid var(--gold);background:rgba(205,161,90,.05);}

.post-list{display:grid;gap:1px;background:rgba(205,161,90,.14);border:1px solid rgba(205,161,90,.14);max-width:820px;}
.post-card{background:var(--navy-0);padding:26px 28px;display:grid;gap:8px;}
.post-card__date{font-family:var(--font-en);font-style:italic;font-size:12px;letter-spacing:.12em;color:var(--gold);}
.post-card__title{margin:0;font-size:17px;font-weight:700;line-height:1.6;}
.post-card__title a{color:var(--parchment);text-decoration:none;transition:color .4s var(--ease-ember);}
.post-card__title a:hover{color:var(--gold-bright);}
.post-card__excerpt{margin:0;font-size:13.5px;line-height:1.8;color:var(--ink-soft);}
.post-meta{font-size:12.5px;color:var(--ink-soft);opacity:.8;margin:10px 0 0;}

.pagination{margin-top:40px;display:flex;gap:8px;flex-wrap:wrap;}
.pagination .page-numbers{
  display:inline-flex;align-items:center;justify-content:center;
  min-width:40px;height:40px;padding:0 12px;
  border:1px solid rgba(205,161,90,.3);color:var(--ink-soft);
  text-decoration:none;font-size:13.5px;
}
.pagination .page-numbers.current{background:rgba(205,161,90,.15);color:var(--gold-bright);border-color:var(--gold);}
.pagination a.page-numbers:hover{color:var(--gold-bright);border-color:var(--gold);}

.qa-cat-nav{display:flex;flex-wrap:wrap;gap:10px;margin:0 0 32px;}
.qa-cat-nav a{
  display:inline-flex;padding:8px 16px;border:1px solid rgba(205,161,90,.3);
  color:var(--ink-soft);text-decoration:none;font-size:13px;border-radius:2px;
}
.qa-cat-nav a:hover,.qa-cat-nav a.is-active{color:var(--gold-bright);border-color:var(--gold);background:rgba(205,161,90,.08);}

.error404 .section--center .h2{font-size:clamp(30px,5vw,56px);}
.error404 .lede{max-width:560px;margin-left:auto;margin-right:auto;}

/* generic responsive tightening */
@media(max-width:480px){
  .section{padding:56px min(5vw,20px);}
  .achv__card{flex-basis:100%;}
}

@media (prefers-reduced-motion: reduce){
  html{scroll-behavior:auto;}
  html.js [data-reveal],html.js [data-reveal-scale],html.js [data-reveal-line],
  html.js [data-reveal-card],html.js [data-reveal-job]{opacity:1 !important;transform:none !important;filter:none !important;}
  html.js .rule{transform:none !important;}
  html.js .worries__item::before{transform:none !important;}
  html.js .frame-edge,html.js .corner{opacity:.55 !important;transform:none !important;}
  html.js .site-header img,html.js .site-header__mark{opacity:1 !important;}
  html.js body.home .gnav{transform:none !important;}
}
