@charset "UTF-8";
/* =========================================================
   鼓舞 -koodori-  ／ 和太鼓スクール 公式サイト
   ========================================================= */

/* ---------- 変数 ---------- */
:root{
  --bk:        #0B0B0B;
  --bk2:       #111111;
  --bk3:       #171717;
  --red:       #C8102E;
  --red-dk:    #B3001B;
  --gold:      #D6A84F;
  --kinari:    #F5F0E8;
  --white:     #FFFFFF;
  --txt:       #E8E1D5;
  --txt-dim:   rgba(232,225,213,.62);
  --line:      rgba(232,225,213,.14);
  --line-soft: rgba(232,225,213,.07);

  --mincho: "Shippori Mincho B1", "Hiragino Mincho ProN", "Yu Mincho", serif;
  --gothic: "Noto Sans JP", "Hiragino Sans", "Hiragino Kaku Gothic ProN", sans-serif;
  --en:     "Oswald", "Noto Sans JP", sans-serif;

  --head-h: 78px;
  --pad:    clamp(20px, 5vw, 40px);
  --sec-y:  clamp(80px, 11vw, 150px);
  --ease:   cubic-bezier(.22,.75,.24,1);
}

/* ---------- reset ---------- */
*,*::before,*::after{ box-sizing:border-box; }
html{ scroll-behavior:smooth; -webkit-text-size-adjust:100%; }
body{
  margin:0;
  background:var(--bk);
  color:var(--txt);
  font-family:var(--gothic);
  font-size:16px;
  font-weight:400;
  line-height:1.95;
  letter-spacing:.04em;
  overflow-x:hidden;
  -webkit-font-smoothing:antialiased;
}
img{ max-width:100%; height:auto; display:block; }
a{ color:inherit; text-decoration:none; }
button{ font:inherit; color:inherit; background:none; border:0; cursor:pointer; }
h1,h2,h3,h4,p,dl,dd,figure,blockquote{ margin:0; }
ul,ol{ margin:0; padding:0; list-style:none; }
::selection{ background:var(--red); color:#fff; }

/* 全体に薄いノイズ（紙・墨の質感） */
body::after{
  content:""; position:fixed; inset:0; z-index:9998; pointer-events:none;
  opacity:.035; will-change:auto; contain:strict;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23n)'/%3E%3C/svg%3E");
}

.svg-defs{ position:absolute; width:0; height:0; overflow:hidden; }

.skip-link{
  position:absolute; left:-9999px; top:0; z-index:10000;
  background:var(--red); color:#fff; padding:12px 20px;
}
.skip-link:focus{ left:0; }

:focus-visible{ outline:2px solid var(--gold); outline-offset:3px; }

/* ページ内リンクで飛んだとき、見出しが固定ヘッダーに隠れないように */
[id]{ scroll-margin-top:calc(var(--head-h) + 14px); }

/* 改行しないかたまり（見出しの泣き別れ防止。幅が足りなければ中で折り返す） */
.nw{ display:inline-block; }

/* 日本語の改行位置を自然に（対応ブラウザのみ） */
.intro-lead, .about-body p, .about-quote, .students-lead, .students-copy,
.request-lead, .request-copy, .step-body p, .faq-a-inner p, .news-note, .kikka-body p,
.footer-concept, .notice, .sec-lead, .dojo-note, .request-note, .sponsor-note, .sponsor-cta-body p{
  word-break:auto-phrase;
  line-break:strict;
}

/* ---------- レイアウト ---------- */
.container{ width:min(1240px, 100% - var(--pad)*2); margin-inline:auto; }
.container-narrow{ width:min(880px, 100% - var(--pad)*2); }
.section{ position:relative; padding-block:var(--sec-y); overflow:hidden; }

/* 背景の透かし漢字 */
.sec-kanji{
  position:absolute; top:-.12em; right:-.06em; z-index:0;
  font-family:var(--mincho); font-weight:800;
  font-size:min(46vw, 620px); line-height:.78;
  color:rgba(232,225,213,.028);
  pointer-events:none; user-select:none;
}
.section > .container{ position:relative; z-index:1; }

/* ---------- 見出し ---------- */
.sec-head{ margin-bottom:clamp(38px,5vw,64px); }
.sec-en{
  display:flex; align-items:center; gap:14px;
  font-family:var(--en); font-weight:500;
  font-size:clamp(12px,1.4vw,13px); letter-spacing:.28em;
  color:var(--gold); margin-bottom:14px;
}
.sec-en::before{
  content:""; width:clamp(28px,4vw,52px); height:2px; flex:none;
  background:linear-gradient(90deg,var(--red),var(--gold));
}
.sec-en-light{ color:var(--kinari); }
.sec-en-light::before{ background:linear-gradient(90deg,#fff,var(--red)); }

.sec-ja{
  font-family:var(--mincho); font-weight:800;
  font-size:clamp(27px,4.4vw,50px);
  line-height:1.42; letter-spacing:.055em; color:var(--white);
}
.sec-lead{ margin-top:18px; color:var(--txt-dim); font-size:clamp(14px,1.6vw,15px); }
.sec-head-center{ text-align:center; }
.sec-head-center .sec-en{ justify-content:center; }
.sec-head-center .sec-en::after{
  content:""; width:clamp(28px,4vw,52px); height:2px; flex:none;
  background:linear-gradient(90deg,var(--gold),var(--red));
}
.sec-head-center .sec-lead{ max-width:46em; margin-inline:auto; line-height:2.05; }

/* ---------- ボタン ---------- */
.btn{
  position:relative; display:inline-flex; align-items:center; justify-content:center; gap:.7em;
  min-height:56px; padding:0 30px;
  font-family:var(--gothic); font-weight:700; font-size:15px; letter-spacing:.09em;
  border:1px solid transparent; border-radius:2px;
  transition:transform .3s var(--ease), background-color .3s, color .3s, border-color .3s, box-shadow .4s;
  overflow:hidden; isolation:isolate; text-align:center;
}
.btn::after{
  content:""; position:absolute; inset:0; z-index:-1;
  background:linear-gradient(100deg,transparent 20%,rgba(255,255,255,.22),transparent 80%);
  transform:translateX(-120%); transition:transform .7s var(--ease);
}
.btn:hover::after{ transform:translateX(120%); }
.btn:hover{ transform:translateY(-2px); }
.btn:active{ transform:translateY(0); }

/* 並んだボタンは同じ形・同じ影。色の面だけを変える（縁取りだけの白抜きにはしない） */
.btn-primary{ background:var(--red); color:#fff; box-shadow:0 6px 26px -10px rgba(200,16,46,.9); }
.btn-primary:hover{ background:var(--red-dk); box-shadow:0 10px 34px -8px rgba(200,16,46,1); }
.btn-gold{
  background:linear-gradient(180deg,#E2B866,#C9963A); color:#1A1307; border-color:#E2B866;
  box-shadow:0 6px 26px -12px rgba(214,168,79,.85);
}
.btn-gold:hover{ background:linear-gradient(180deg,#EDC77B,#D6A84F); box-shadow:0 10px 34px -10px rgba(214,168,79,1); }
.btn-ghost{
  background:linear-gradient(180deg,#232323,#171717); color:var(--white); border-color:rgba(232,225,213,.22);
  box-shadow:0 6px 24px -12px rgba(0,0,0,.95);
}
.btn-ghost:hover{ border-color:var(--kinari); background:linear-gradient(180deg,#2c2c2c,#1d1d1d); }
.btn-ic{ width:18px; height:18px; fill:currentColor; flex:none; }
/* ボタンの文字を2つのかたまりで折り返す（ボタンの中で1〜2文字だけ落ちないように） */
.btn-lines{ display:block; text-align:center; line-height:1.55; }
.btn-sm{ min-height:44px; padding:0 20px; font-size:13.5px; }
.btn-lg{ min-height:64px; padding:0 42px; font-size:16px; }
.btn-block{ display:flex; width:100%; }

.btn-pulse::before{
  content:""; position:absolute; inset:-2px; z-index:-2; border-radius:inherit;
  box-shadow:0 0 0 0 rgba(200,16,46,.55);
  animation:pulse 2.8s var(--ease) infinite;
}
@keyframes pulse{
  0%{ box-shadow:0 0 0 0 rgba(200,16,46,.5); }
  70%{ box-shadow:0 0 0 16px rgba(200,16,46,0); }
  100%{ box-shadow:0 0 0 0 rgba(200,16,46,0); }
}

.link-arrow{
  display:inline-flex; align-items:center; gap:.6em; min-height:44px;
  font-size:14px; font-weight:500; color:var(--gold);
  transition:gap .3s var(--ease), color .3s;
}
.link-arrow::after{ content:""; width:26px; height:1px; background:currentColor; transition:width .3s var(--ease); }
.link-arrow:hover{ color:var(--white); gap:1em; }
.link-arrow:hover::after{ width:36px; }

/* =========================================================
   HEADER
   ========================================================= */
.header{
  position:fixed; inset:0 0 auto; z-index:100;
  height:var(--head-h);
  transition:background-color .45s var(--ease), backdrop-filter .45s, border-color .45s, height .45s var(--ease);
  border-bottom:1px solid transparent;
}
.header.is-stuck{
  height:66px;
  background:rgba(9,9,9,.86);
  backdrop-filter:blur(14px) saturate(140%);
  -webkit-backdrop-filter:blur(14px) saturate(140%);
  border-bottom-color:var(--line-soft);
}
.header-inner{
  height:100%; width:min(1440px,100% - 32px); margin-inline:auto;
  display:flex; align-items:center; gap:clamp(16px,3vw,40px);
}

.brand{ display:flex; align-items:center; gap:12px; flex:none; }
.brand-mark{
  width:34px; height:34px; border-radius:50%; flex:none;
  background:radial-gradient(circle at 38% 34%, #E5354F, var(--red) 45%, var(--red-dk));
  box-shadow:0 0 22px -4px rgba(200,16,46,.85);
  position:relative;
}
.brand-mark::after{
  content:""; position:absolute; inset:-6px; border-radius:50%;
  border:1px solid rgba(214,168,79,.4);
}
.brand-text{ display:flex; flex-direction:column; line-height:1; }
.brand-ja{
  font-family:var(--mincho); font-weight:800; font-size:23px;
  letter-spacing:.14em; color:var(--white);
}
.brand-en{
  font-family:var(--en); font-weight:300; font-size:12px;
  letter-spacing:.24em; color:var(--gold); margin-top:5px;
}

.nav{ margin-left:auto; }
.nav-list{ display:flex; align-items:center; gap:clamp(12px,1.9vw,26px); }
.nav-list a{
  position:relative; display:flex; flex-direction:column; align-items:center; gap:2px;
  padding:6px 2px; min-width:44px;
}
.nav-en{
  font-family:var(--en); font-weight:400; font-size:10px;
  letter-spacing:.18em; color:var(--gold); opacity:.8;
  transition:opacity .3s;
}
.nav-ja{ font-size:12.5px; font-weight:500; letter-spacing:.05em; color:var(--txt); transition:color .3s; }
.nav-list a::after{
  content:""; position:absolute; left:50%; bottom:-2px; width:0; height:1px;
  background:var(--red); transform:translateX(-50%); transition:width .35s var(--ease);
}
.nav-list a:hover .nav-ja{ color:var(--white); }
.nav-list a:hover .nav-en{ opacity:1; }
.nav-list a:hover::after{ width:100%; }
.nav-foot{ display:none; }

.header-actions{ display:flex; align-items:center; gap:12px; flex:none; }
.header-ig{
  width:44px; height:44px; display:grid; place-items:center;
  border:1px solid var(--line); border-radius:2px;
  transition:border-color .3s, background-color .3s;
}
.header-ig svg{ width:19px; height:19px; fill:var(--txt); transition:fill .3s; }
.header-ig:hover{ border-color:var(--gold); background:rgba(214,168,79,.1); }
.header-ig:hover svg{ fill:var(--gold); }

.header-tel{ display:flex; align-items:center; gap:8px; min-height:44px; }
.header-tel-ico svg{ width:17px; height:17px; fill:var(--gold); display:block; }
.header-tel-num{
  font-family:var(--en); font-weight:500; font-size:17px; letter-spacing:.06em;
  color:var(--white); white-space:nowrap;
}

.hamburger{
  display:none; width:44px; height:44px; position:relative; flex:none;
  border:1px solid var(--line); border-radius:2px;
}
.hamburger span{
  position:absolute; left:12px; width:20px; height:1.5px; background:var(--kinari);
  transition:transform .4s var(--ease), opacity .25s;
}
.hamburger span:nth-child(1){ top:15px; }
.hamburger span:nth-child(2){ top:21px; }
.hamburger span:nth-child(3){ top:27px; }
.is-nav-open .hamburger span:nth-child(1){ transform:translateY(6px) rotate(45deg); }
.is-nav-open .hamburger span:nth-child(2){ opacity:0; }
.is-nav-open .hamburger span:nth-child(3){ transform:translateY(-6px) rotate(-45deg); }

.nav-scrim{
  position:fixed; inset:0; z-index:98; background:rgba(0,0,0,.6);
  opacity:0; transition:opacity .4s;
}
.is-nav-open .nav-scrim{ opacity:1; }

/* =========================================================
   HERO ― 全面写真 ＋ メインコピーのみ
   ========================================================= */
.hero{
  position:relative; min-height:100svh;
  display:grid; place-items:center;
  padding-block:calc(var(--head-h) + 30px) 96px;
  overflow:hidden; isolation:isolate;
}

.hero-media{ position:absolute; inset:0; z-index:-1; }
/* 鼓舞の舞台写真を、ゆっくりズームしながら切り替える */
.hero-slides{ position:absolute; inset:0; overflow:hidden; background:#050505; }
.hero-slide{
  position:absolute; inset:0; display:block; width:100%; height:100%;
  opacity:0; transition:opacity 1.8s ease;
}
.hero-slide.is-active{ opacity:1; }
.hero-media img{
  width:100%; height:100%; object-fit:cover; object-position:70% 42%;
}
.hero-slide.is-active img{ animation:kenburns 9s ease-out both; }
.hero-slide.s2 img{ object-position:72% 45%; }
.hero-slide.s3 img{ object-position:58% 50%; }
@keyframes kenburns{ from{ scale:1.02; } to{ scale:1.1; } }
.is-loading .hero-slide.is-active img{ animation-play-state:paused; }

/* 文字を読ませるための舞台照明風スクリム */
.hero-scrim{
  position:absolute; inset:0;
  background:
    linear-gradient(94deg,
      rgba(5,5,5,.92) 0%, rgba(5,5,5,.78) 22%,
      rgba(5,5,5,.34) 48%, rgba(5,5,5,.06) 66%, rgba(5,5,5,.38) 100%),
    linear-gradient(180deg,
      rgba(5,5,5,.78) 0%, rgba(5,5,5,.12) 24%,
      transparent 55%, rgba(5,5,5,.55) 82%, rgba(5,5,5,.92) 100%);
}
.hero-glow{
  position:absolute; left:14%; top:50%; translate:-50% -50%;
  width:min(80vw,860px); aspect-ratio:1; border-radius:50%;
  background:radial-gradient(circle, rgba(200,16,46,.34), rgba(140,6,28,.14) 45%, transparent 68%);
  filter:blur(30px);
  animation:breathe 8s ease-in-out infinite;
}
@keyframes breathe{ 0%,100%{ opacity:.7; scale:1; } 50%{ opacity:1; scale:1.07; } }

/* 太鼓の波紋 */
.hero-ring{
  position:absolute; left:14%; top:50%; translate:-50% -50%;
  width:min(62vw,660px); aspect-ratio:1; border-radius:50%;
  border:1px solid rgba(214,168,79,.26);
  animation:ripple 7s var(--ease) infinite;
}
.hero-ring.r2{ animation-delay:3.5s; border-color:rgba(200,16,46,.34); }
@keyframes ripple{
  0%{ scale:.36; opacity:0; }
  16%{ opacity:.85; }
  100%{ scale:1.45; opacity:0; }
}

/* ---- コピー ---- */
.hero-inner{
  position:relative; z-index:2;
  width:min(1440px, 100% - var(--pad)*2);
  display:flex; align-items:center; justify-content:flex-start;
  gap:clamp(20px,3.4vw,54px);
}

/* 縦書きの「鼓舞」 */
.hero-ranbu{
  writing-mode:vertical-rl; text-orientation:upright;
  font-family:var(--mincho); font-weight:800;
  font-size:clamp(40px,6.4vw,96px); line-height:1.06; letter-spacing:.14em;
  color:var(--kinari); flex:none;
  padding-block:clamp(16px,2.4vw,30px);
  position:relative;
  text-shadow:0 0 44px rgba(200,16,46,.7), 0 8px 34px rgba(0,0,0,.95);
}
.hero-ranbu::before,
.hero-ranbu::after{
  content:""; position:absolute; left:50%; translate:-50% 0;
  width:1px; height:clamp(14px,2vw,26px);
  background:linear-gradient(180deg,var(--gold),transparent);
}
.hero-ranbu::before{ top:0; }
.hero-ranbu::after{ bottom:0; rotate:180deg; }
/* 縦書きでは inline-block にしないと上下の順序が逆になる */
.hero-ranbu .ch{
  display:inline-block;
  animation:ranbuIn 1.2s var(--ease) both;
}
.hero-ranbu .ch:nth-child(1){ animation-delay:.25s; }
.hero-ranbu .ch:nth-child(2){ animation-delay:.4s; }
@keyframes ranbuIn{
  from{ opacity:0; transform:translateY(-26px) scale(.9); filter:blur(8px); }
  to{ opacity:1; transform:none; filter:none; }
}

/* 縦のあかり（鼓舞とコピーの仕切り） */
.hero-inner::after{
  content:""; align-self:stretch; flex:none;
  width:1px; margin-block:clamp(10px,2vw,26px);
  background:linear-gradient(180deg,transparent,rgba(214,168,79,.55),rgba(200,16,46,.6),transparent);
  order:1;
}
.hero-ranbu{ order:0; }
.hero-title{ order:2; }

.hero-title{
  font-family:var(--mincho); font-weight:800;
  font-size:clamp(38px,7.6vw,104px); line-height:1.24; letter-spacing:.05em;
  color:var(--white);
  text-shadow:0 6px 46px rgba(0,0,0,.92), 0 0 90px rgba(0,0,0,.7);
}
.hero-title .line{ display:block; }
.hero-title .ch{ display:inline-block; animation:chIn 1.1s var(--ease) both; }
.hero-title .line:nth-child(1) .ch:nth-child(1){ animation-delay:.55s; }
.hero-title .line:nth-child(1) .ch:nth-child(2){ animation-delay:.62s; }
.hero-title .line:nth-child(1) .ch:nth-child(3){ animation-delay:.69s; }
.hero-title .line:nth-child(1) .ch:nth-child(4){ animation-delay:.76s; }
.hero-title .line:nth-child(2) .ch:nth-child(1){ animation-delay:.86s; }
.hero-title .line:nth-child(2) .ch:nth-child(2){ animation-delay:.93s; }
.hero-title .line:nth-child(2) .ch:nth-child(3){ animation-delay:1.00s; }
.hero-title .line:nth-child(2) .ch:nth-child(4){ animation-delay:1.07s; }
.hero-title .line:nth-child(2) .ch:nth-child(5){ animation-delay:1.14s; }
.hero-title .line:nth-child(2) .ch:nth-child(6){ animation-delay:1.21s; }
@keyframes chIn{
  from{ opacity:0; transform:translateY(38px) rotate(2.5deg); filter:blur(7px); }
  to{ opacity:1; transform:none; filter:none; }
}
/* ローディング中はコピーの登場を待たせる（幕が上がってから1文字ずつ） */
.is-loading .hero-title .ch,
.is-loading .hero-ranbu .ch,
.is-loading .hero-scroll{ animation-play-state:paused; }

.hero-scroll{
  position:absolute; left:auto; right:clamp(14px,2.6vw,38px); bottom:22px; z-index:3;
  display:flex; flex-direction:column; align-items:center; gap:10px;
  animation:fadeUp 1s var(--ease) 1.7s both;
}
.hero-scroll-txt{ font-family:var(--en); font-size:10px; letter-spacing:.3em; color:var(--txt-dim); }
.hero-scroll-bar{
  width:1px; height:54px; background:linear-gradient(180deg,var(--gold),transparent);
  position:relative; overflow:hidden;
}
.hero-scroll-bar::after{
  content:""; position:absolute; left:0; top:0; width:1px; height:16px; background:var(--red);
  animation:scrollDot 2.2s var(--ease) infinite;
}
@keyframes scrollDot{ 0%{ transform:translateY(-18px); } 100%{ transform:translateY(58px); } }

@keyframes fadeUp{ from{ opacity:0; transform:translateY(26px); } to{ opacity:1; transform:none; } }

/* =========================================================
   INTRO（ファーストビュー直下のリード＋CTA）
   ========================================================= */
.intro{
  position:relative; padding-block:clamp(44px,6vw,74px);
  background:linear-gradient(180deg, #0A0A0A, var(--bk));
  border-bottom:1px solid var(--line-soft);
}
.intro-inner{
  display:grid; grid-template-columns:minmax(0,1fr) auto;
  gap:clamp(26px,4vw,60px); align-items:center;
}
.hero-tags{ display:flex; flex-wrap:wrap; gap:8px; margin-bottom:20px; }
.tag{
  display:inline-flex; align-items:center; height:30px; padding:0 13px;
  font-size:12px; font-weight:500; letter-spacing:.08em; white-space:nowrap;
  border:1px solid var(--line); color:var(--txt-dim); border-radius:1px;
  background:rgba(255,255,255,.02);
}
.tag-red{
  background:var(--red); border-color:var(--red); color:#fff; font-weight:700;
  box-shadow:0 0 18px -6px rgba(200,16,46,.95);
}
.intro-sub{
  position:relative; padding-left:20px; margin-bottom:16px;
  font-family:var(--mincho); font-weight:700;
  font-size:clamp(17px,2.2vw,24px); letter-spacing:.09em; color:var(--gold);
}
.intro-sub::before{
  content:""; position:absolute; left:0; top:.15em; bottom:.15em; width:2px;
  background:linear-gradient(180deg,var(--red),var(--gold));
}
.intro-lead{
  max-width:40em; font-size:clamp(13.5px,1.6vw,15px); line-height:2.1; color:var(--txt-dim);
}
.intro-cta{ display:flex; flex-direction:column; gap:10px; min-width:min(300px,100%); }
.intro-cta .btn{ width:100%; }

/* 次の出演（ファーストビュー直下の細い帯） */
.next-strip{
  display:flex; align-items:center; flex-wrap:wrap; gap:6px 18px;
  margin-bottom:clamp(30px,4vw,44px); padding:14px 20px; min-height:56px;
  border:1px solid rgba(214,168,79,.38);
  background:linear-gradient(100deg, rgba(200,16,46,.22), rgba(17,17,17,.6) 55%);
  transition:border-color .3s, background-color .3s;
}
.next-strip[hidden]{ display:none; }
.next-strip:hover{ border-color:var(--gold); }
.next-strip-label{
  font-family:var(--en); font-weight:500; font-size:12px; letter-spacing:.24em; color:var(--gold);
  display:inline-flex; align-items:center; gap:10px;
}
.next-strip-label::before{
  content:""; width:9px; height:9px; border-radius:50%; background:var(--red);
  box-shadow:0 0 0 0 rgba(200,16,46,.6); animation:livePing 1.8s ease-out infinite;
}
@keyframes livePing{ 0%{ box-shadow:0 0 0 0 rgba(200,16,46,.65); } 80%,100%{ box-shadow:0 0 0 9px rgba(200,16,46,0); } }
.next-strip-when{ font-family:var(--en); font-size:16px; letter-spacing:.06em; color:var(--white); }
.next-strip-title{ font-family:var(--mincho); font-weight:700; font-size:16px; letter-spacing:.06em; color:var(--white); }
.next-strip-go{
  margin-left:auto; display:inline-flex; align-items:center; gap:.6em;
  font-size:13px; font-weight:500; color:var(--gold);
}
.next-strip-go::after{ content:""; width:22px; height:1px; background:currentColor; transition:width .3s var(--ease); }
.next-strip:hover .next-strip-go::after{ width:32px; }

/* =========================================================
   ローディング画面（太鼓がドン、ドンと鳴って幕が上がる）
   ========================================================= */
.loader{ display:none; }
.is-loading .loader{
  display:grid; place-items:center;
  position:fixed; inset:0; z-index:10001; background:#060606;
  transition:opacity .8s var(--ease), visibility .8s;
}
.loader.is-out{ opacity:0; visibility:hidden; pointer-events:none; }
.loader-in{ display:grid; justify-items:center; gap:26px; transition:transform .8s var(--ease); }
.loader.is-out .loader-in{ transform:scale(1.08); }
.loader-drum{ position:relative; width:108px; height:108px; }
.loader-drum b{
  position:absolute; inset:0; border-radius:50%;
  background:radial-gradient(circle at 38% 34%, #E5354F, var(--red) 46%, var(--red-dk));
  box-shadow:0 0 50px -6px rgba(200,16,46,.9);
  animation:drumBeat 1.3s var(--ease) infinite;
}
.loader-drum i{
  position:absolute; inset:0; border-radius:50%; border:1px solid rgba(214,168,79,.7);
  animation:drumRing 1.3s ease-out infinite;
}
.loader-drum i:nth-child(2){ animation-delay:.24s; border-color:rgba(200,16,46,.7); }
@keyframes drumBeat{
  0%,100%{ scale:1; } 8%{ scale:1.12; } 18%{ scale:.98; } 26%{ scale:1.1; } 38%{ scale:1; }
}
@keyframes drumRing{ 0%{ scale:.9; opacity:0; } 10%{ opacity:.9; } 100%{ scale:2.3; opacity:0; } }
.loader-name{ display:flex; flex-direction:column; align-items:center; line-height:1; }
.loader-ja{ font-family:var(--mincho); font-weight:800; font-size:34px; letter-spacing:.3em; padding-left:.3em; color:var(--white); }
.loader-en{ margin-top:12px; font-family:var(--en); font-weight:300; font-size:13px; letter-spacing:.34em; color:var(--gold); }

/* ---------- 墨のかすれ 区切り（ドン、ドンと打って震える） ---------- */
/*
   光は控えめ。主役は「震え」。
     > .beat      … 打点ごとに細かく上下（墨線ごと震える）
     > .beat .ink … 墨のかすれ線（SVGフィルタ。親が動くのでレイヤーごと移動される）
     > .beat i    … ごく薄い芯の光
     ::after      … 淡い赤の残響
   速さは --beat、震えの大きさは --shake で調整
*/
.ink-divider{
  position:relative; height:56px; overflow:hidden;
  --beat: 2.4s;
  --shake: 1;      /* 震えの倍率。大きくすると激しくなる */
}

/* 淡い赤の残響 */
.ink-divider::after{
  content:""; position:absolute; left:50%; top:50%; z-index:0;
  transform:translate(-50%,-50%);
  width:min(96%,1300px); height:100%;
  background:radial-gradient(ellipse 56% 100% at 50% 50%, rgba(200,16,46,.26), transparent 74%);
  opacity:.14;
  animation:beatGlow var(--beat) var(--ease) infinite;
  will-change:opacity, transform;
}

/* 震える本体 */
.ink-divider > .beat{
  position:absolute; left:50%; top:50%; z-index:1;
  transform:translate(-50%,-50%);
  width:min(88%,1100px); height:3px;
  animation:beatTremble var(--beat) linear infinite;
  will-change:transform;
}

/* 墨のかすれ線 */
.ink-divider .ink{
  position:absolute; inset:0; display:block;
  background:linear-gradient(90deg,transparent,rgba(232,225,213,.34) 18%,rgba(214,168,79,.56) 50%,rgba(232,225,213,.34) 82%,transparent);
  filter:url(#inkFine);
  opacity:.5;
  animation:beatInk var(--beat) var(--ease) infinite;
}

/* ごく薄い芯の光 */
.ink-divider .beat > i{
  position:absolute; left:8%; right:8%; top:50%; height:1.5px;
  margin-top:-.75px; border-radius:2px; display:block;
  background:linear-gradient(90deg,transparent,rgba(214,168,79,.8) 30%,rgba(245,232,206,.95) 50%,rgba(214,168,79,.8) 70%,transparent);
  opacity:0;
  animation:beatFlash var(--beat) var(--ease) infinite;
  will-change:opacity, transform;
}

/* ドン ─ ドン ─ …（2発打って余韻） */
@keyframes beatFlash{
  0%   { opacity:0;   transform:scaleY(1); }
  2%   { opacity:.34; transform:scaleY(2); }    /* 一発目 */
  10%  { opacity:.05; transform:scaleY(1); }
  15%  { opacity:.26; transform:scaleY(1.7); }  /* 二発目 */
  27%  { opacity:0;   transform:scaleY(1); }
  100% { opacity:0;   transform:scaleY(1); }
}
@keyframes beatInk{
  0%   { opacity:.44; }
  2%   { opacity:.82; }
  10%  { opacity:.5;  }
  15%  { opacity:.72; }
  30%  { opacity:.44; }
  100% { opacity:.44; }
}
@keyframes beatGlow{
  0%   { opacity:.12; transform:translate(-50%,-50%) scaleX(.94); }
  2%   { opacity:.42; transform:translate(-50%,-50%) scaleX(1.05); }
  10%  { opacity:.16; transform:translate(-50%,-50%) scaleX(.97); }
  15%  { opacity:.34; transform:translate(-50%,-50%) scaleX(1.03); }
  34%  { opacity:.12; transform:translate(-50%,-50%) scaleX(.94); }
  100% { opacity:.12; transform:translate(-50%,-50%) scaleX(.94); }
}

/* 打った直後に細かく震えて収まる（太鼓の皮の余韻） */
@keyframes beatTremble{
  0%    { transform:translate(-50%,-50%) translateY(0); }
  0.9%  { transform:translate(-50%,-50%) translateY(calc(-6.5px * var(--shake))); }
  2.0%  { transform:translate(-50%,-50%) translateY(calc(5.2px * var(--shake))); }
  3.1%  { transform:translate(-50%,-50%) translateY(calc(-4.1px * var(--shake))); }
  4.2%  { transform:translate(-50%,-50%) translateY(calc(3.1px * var(--shake))); }
  5.3%  { transform:translate(-50%,-50%) translateY(calc(-2.3px * var(--shake))); }
  6.4%  { transform:translate(-50%,-50%) translateY(calc(1.6px * var(--shake))); }
  7.5%  { transform:translate(-50%,-50%) translateY(calc(-1.0px * var(--shake))); }
  8.6%  { transform:translate(-50%,-50%) translateY(calc(.55px * var(--shake))); }
  9.7%  { transform:translate(-50%,-50%) translateY(calc(-.25px * var(--shake))); }
  11%   { transform:translate(-50%,-50%) translateY(0); }

  14.2% { transform:translate(-50%,-50%) translateY(0); }
  15.1% { transform:translate(-50%,-50%) translateY(calc(-5.1px * var(--shake))); }
  16.2% { transform:translate(-50%,-50%) translateY(calc(4.0px * var(--shake))); }
  17.3% { transform:translate(-50%,-50%) translateY(calc(-3.1px * var(--shake))); }
  18.4% { transform:translate(-50%,-50%) translateY(calc(2.3px * var(--shake))); }
  19.5% { transform:translate(-50%,-50%) translateY(calc(-1.6px * var(--shake))); }
  20.6% { transform:translate(-50%,-50%) translateY(calc(1.0px * var(--shake))); }
  21.7% { transform:translate(-50%,-50%) translateY(calc(-.5px * var(--shake))); }
  23%   { transform:translate(-50%,-50%) translateY(0); }
  100%  { transform:translate(-50%,-50%) translateY(0); }
}

/* =========================================================
   ABOUT
   ========================================================= */
.about-grid{
  display:grid; grid-template-columns:minmax(0,.92fr) minmax(0,1.08fr);
  gap:clamp(30px,5vw,74px); align-items:center;
}
.about-media{ position:relative; }
.about-photo{ position:relative; overflow:hidden; border-radius:3px; aspect-ratio:5/4; }
.about-photo img{ width:100%; height:100%; object-fit:cover; transition:scale 1.2s var(--ease); }
.about-photo::after{
  content:""; position:absolute; inset:0;
  background:linear-gradient(160deg, rgba(200,16,46,.16), transparent 60%);
  mix-blend-mode:screen;
}
.about-media:hover .about-photo img{ scale:1.06; }
.about-circle{
  position:absolute; right:-6%; top:-16%; z-index:2;
  width:min(46%,220px); aspect-ratio:1; border-radius:50%; overflow:hidden;
  border:2px solid rgba(214,168,79,.5);
  box-shadow:0 24px 60px -22px rgba(0,0,0,.95), 0 0 0 8px rgba(11,11,11,.9);
}
.about-circle img{ width:100%; height:100%; object-fit:cover; }

.about-lead{
  font-family:var(--mincho); font-weight:700;
  font-size:clamp(19px,2.6vw,27px); line-height:1.7; letter-spacing:.06em;
  color:var(--white); margin-bottom:26px;
}
.about-body p{ margin-bottom:20px; font-size:clamp(14px,1.6vw,15.5px); color:var(--txt); line-height:2.15; }
.about-quote{
  margin-top:34px; padding:26px 28px;
  border-left:2px solid var(--red);
  background:linear-gradient(100deg, rgba(200,16,46,.08), rgba(17,17,17,.5));
  font-family:var(--mincho); font-size:clamp(13.5px,1.6vw,15px); line-height:2.05;
  letter-spacing:.05em; color:var(--kinari);
}

/* 数字で見る鼓舞 */
.about-stats{
  margin-top:clamp(52px,7vw,90px);
  display:grid; grid-template-columns:repeat(4,minmax(0,1fr));
  border-top:1px solid var(--line); border-bottom:1px solid var(--line);
}
.about-stats li{
  position:relative; display:flex; flex-direction:column; align-items:center; gap:8px;
  padding:clamp(22px,3vw,34px) 10px; text-align:center;
}
.about-stats li + li::before{
  content:""; position:absolute; left:0; top:22%; bottom:22%; width:1px; background:var(--line);
}
.stat-num{
  font-family:var(--mincho); font-weight:800; font-size:clamp(17px,2vw,22px);
  letter-spacing:.06em; color:var(--white); line-height:1.2; white-space:nowrap;
}
.stat-num b{
  font-family:var(--en); font-weight:500; font-size:clamp(34px,4.4vw,54px);
  color:var(--gold); margin:0 .08em; letter-spacing:.02em;
  text-shadow:0 0 30px rgba(214,168,79,.35);
}
.stat-label{ font-size:13px; letter-spacing:.08em; color:var(--txt-dim); line-height:1.6; }

/* =========================================================
   道場生募集
   ========================================================= */
.section-students{ background:var(--bk2); }
.students-bg{ position:absolute; inset:0; z-index:0; overflow:hidden; }
.students-band{
  position:absolute; left:-10%; right:-10%; top:12%; height:clamp(180px,26vw,300px);
  background:linear-gradient(100deg, var(--red-dk), var(--red) 55%, rgba(200,16,46,.15));
  rotate:-4deg; opacity:.15;
}
.students-glow{
  position:absolute; left:-14%; bottom:-24%;
  width:min(80vw,760px); aspect-ratio:1; border-radius:50%;
  background:radial-gradient(circle, rgba(200,16,46,.3), transparent 66%);
  filter:blur(30px);
}
.section-students > .container{ position:relative; z-index:1; }

.students-top{
  display:grid; grid-template-columns:minmax(0,1.06fr) minmax(0,.94fr);
  gap:clamp(30px,5vw,70px); align-items:center;
}
.students-brush{
  font-family:var(--mincho); font-weight:800;
  font-size:clamp(42px,7.6vw,86px); line-height:1.12; letter-spacing:.09em;
  color:var(--white); margin:6px 0 24px;
  text-shadow:0 0 60px rgba(200,16,46,.55);
  position:relative; display:inline-block;
}
.students-brush::after{
  content:""; position:absolute; left:0; right:-4%; bottom:-.06em; height:.1em;
  background:var(--red); filter:url(#inkRough); opacity:.9;
}
.students-copy{
  font-family:var(--mincho); font-weight:700;
  font-size:clamp(19px,2.8vw,30px); line-height:1.65; letter-spacing:.06em;
  color:var(--kinari); margin-bottom:22px;
}
.students-lead{
  font-size:clamp(13.5px,1.6vw,15px); line-height:2.1; color:var(--txt-dim);
  margin-bottom:32px;
}
.students-photo{
  position:relative; overflow:hidden; border-radius:3px; aspect-ratio:4/3;
  box-shadow:0 34px 80px -30px rgba(0,0,0,.95);
}
.students-photo img{ width:100%; height:100%; object-fit:cover; transition:scale 1.1s var(--ease); }
.students-photo:hover img{ scale:1.05; }
.students-photo::before{
  content:""; position:absolute; inset:0; z-index:2;
  background:linear-gradient(200deg, rgba(200,16,46,.2), transparent 55%);
  mix-blend-mode:screen;
}
.students-photo::after{
  content:""; position:absolute; inset:10px; z-index:2; border:1px solid rgba(245,240,232,.18); pointer-events:none;
}

.students-list{
  margin-top:clamp(46px,6vw,78px);
  padding:clamp(28px,4vw,44px);
  border:1px solid var(--line);
  background:linear-gradient(140deg, rgba(23,23,23,.85), rgba(11,11,11,.7));
  backdrop-filter:blur(4px);
}
.students-list-title{
  font-family:var(--mincho); font-weight:700; font-size:clamp(17px,2.2vw,22px);
  letter-spacing:.1em; color:var(--white); margin-bottom:24px;
  display:flex; align-items:center; gap:16px;
}
.students-list-title::after{ content:""; flex:1; height:1px; background:var(--line); }

.check-list{
  display:grid; grid-template-columns:repeat(auto-fit,minmax(310px,1fr)); gap:14px 30px;
}
.check-list li{
  position:relative; padding-left:34px; font-size:14.5px; font-weight:500; color:var(--txt);
  line-height:1.7;
}
.check-list li::before{
  content:""; position:absolute; left:0; top:.42em;
  width:19px; height:19px; border-radius:50%;
  background:radial-gradient(circle at 38% 34%, #E5354F, var(--red));
  box-shadow:0 0 12px -3px rgba(200,16,46,.9);
}
.check-list li::after{
  content:""; position:absolute; left:6px; top:.72em;
  width:7px; height:4px; border-left:1.6px solid #fff; border-bottom:1.6px solid #fff;
  rotate:-45deg;
}

/* 子どもたちのチーム「橘花 KIKKA」 */
.kikka{
  margin-top:clamp(22px,3vw,30px);
  display:grid; grid-template-columns:auto minmax(0,1fr); align-items:center;
  gap:clamp(20px,3.4vw,44px);
  padding:clamp(24px,3.4vw,36px) clamp(24px,4vw,44px);
  border:1px solid rgba(214,168,79,.34);
  background:
    radial-gradient(ellipse 50% 120% at 0% 50%, rgba(214,168,79,.14), transparent 70%),
    linear-gradient(140deg, rgba(23,23,23,.92), rgba(11,11,11,.8));
}
.kikka-mark{
  display:flex; flex-direction:column; align-items:center; justify-content:center;
  width:clamp(104px,12vw,128px); aspect-ratio:1; border-radius:50%;
  border:1px solid rgba(214,168,79,.6);
  box-shadow:0 0 0 6px rgba(214,168,79,.08), inset 0 0 30px rgba(214,168,79,.12);
}
.kikka-ja{ font-family:var(--mincho); font-weight:800; font-size:clamp(28px,3.4vw,36px); letter-spacing:.12em; padding-left:.12em; color:var(--white); line-height:1.2; }
.kikka-en{ font-family:var(--en); font-weight:400; font-size:12px; letter-spacing:.3em; padding-left:.3em; color:var(--gold); margin-top:4px; }
.kikka-title{
  font-family:var(--mincho); font-weight:700; font-size:clamp(18px,2.3vw,23px);
  letter-spacing:.06em; color:var(--white); margin-bottom:10px; line-height:1.6;
}
.kikka-body p{ font-size:14.5px; line-height:2; color:var(--txt); }

/* =========================================================
   道場案内
   ========================================================= */
.dojo-grid{ display:grid; grid-template-columns:repeat(auto-fit,minmax(300px,1fr)); gap:clamp(22px,3vw,34px); }
.dojo-card{
  border:1px solid var(--line); background:var(--bk2);
  transition:border-color .45s, transform .45s var(--ease), box-shadow .45s;
}
.dojo-card:hover{
  border-color:rgba(214,168,79,.45); transform:translateY(-6px);
  box-shadow:0 30px 70px -34px rgba(0,0,0,.95);
}
.dojo-photo{ position:relative; overflow:hidden; aspect-ratio:16/10; }
.dojo-photo img{ width:100%; height:100%; object-fit:cover; transition:scale 1.1s var(--ease); }
.dojo-card:hover .dojo-photo img{ scale:1.07; }
.dojo-photo::after{
  content:""; position:absolute; inset:0;
  background:linear-gradient(180deg, transparent 40%, rgba(11,11,11,.85));
}
.dojo-num{
  position:absolute; left:20px; bottom:14px; z-index:2;
  font-family:var(--en); font-weight:600; font-size:44px; line-height:1;
  color:transparent; -webkit-text-stroke:1px rgba(214,168,79,.75);
}
.dojo-body{ padding:clamp(22px,3vw,32px); }
.dojo-name{
  font-family:var(--mincho); font-weight:800; font-size:clamp(23px,3vw,30px);
  letter-spacing:.1em; color:var(--white); margin-bottom:20px;
  position:relative; padding-bottom:18px;
}
.dojo-name::after{
  content:""; position:absolute; left:0; bottom:0; width:44px; height:2px;
  background:linear-gradient(90deg,var(--red),var(--gold));
}
.dojo-dl > div{ display:flex; gap:16px; padding:11px 0; border-bottom:1px dashed var(--line-soft); }
.dojo-dl dt{
  flex:none; width:5.4em; font-size:12.5px; font-weight:500; letter-spacing:.1em;
  color:var(--gold); line-height:1.9;
}
.dojo-dl dd{ font-size:15px; font-weight:500; color:var(--white); line-height:1.9; }
.dojo-note{ margin:18px 0 20px; font-size:13px; color:var(--txt-dim); }

.notice{
  margin-top:clamp(30px,4vw,44px);
  display:flex; align-items:flex-start; gap:14px;
  padding:20px 24px; border:1px solid rgba(214,168,79,.28);
  background:rgba(214,168,79,.05);
  font-size:14px; color:var(--kinari); line-height:1.85;
}
.notice-mark{
  flex:none; width:22px; height:22px; margin-top:3px; border-radius:50%;
  display:grid; place-items:center;
  background:var(--gold); color:#141005; font-weight:900; font-size:13px; line-height:1;
}

/* =========================================================
   活動内容
   ========================================================= */
.step-list{ position:relative; display:grid; gap:clamp(18px,2.4vw,26px); max-width:1060px; }
.step{
  position:relative; display:grid;
  grid-template-columns:auto minmax(0,300px) minmax(0,1fr);
  align-items:center; gap:clamp(18px,3vw,34px);
  padding:clamp(16px,2.2vw,22px);
  border:1px solid var(--line-soft);
  background:linear-gradient(100deg, rgba(23,23,23,.7), rgba(11,11,11,.4));
  transition:border-color .45s, background-color .45s, transform .45s var(--ease);
}
.step:hover{ border-color:rgba(200,16,46,.5); transform:translateX(6px); }
.step-no{
  font-family:var(--en); font-weight:600; font-size:clamp(30px,4vw,52px); line-height:1;
  color:transparent; -webkit-text-stroke:1px rgba(200,16,46,.8);
  flex:none; transition:color .45s;
}
.step:hover .step-no{ color:rgba(200,16,46,.22); }
.step-photo{ overflow:hidden; aspect-ratio:3/2; border-radius:2px; }
.step-photo img{ width:100%; height:100%; object-fit:cover; transition:scale 1.1s var(--ease); }
.step:hover .step-photo img{ scale:1.07; }
.step-body h3{
  font-family:var(--mincho); font-weight:700; font-size:clamp(18px,2.3vw,23px);
  letter-spacing:.08em; color:var(--white); margin-bottom:10px;
}
.step-body p{ font-size:14.5px; color:var(--txt-dim); line-height:1.95; }

/* =========================================================
   イベント出演依頼
   ========================================================= */
.section-request{ background:var(--bk2); }
.request-photo{ position:absolute; inset:0; z-index:0; }
.request-photo img{ width:100%; height:100%; object-fit:cover; opacity:.3; }
.request-photo::after{
  content:""; position:absolute; inset:0;
  background:
    linear-gradient(180deg, rgba(11,11,11,.94), rgba(11,11,11,.7) 45%, rgba(11,11,11,.96)),
    radial-gradient(ellipse 60% 70% at 20% 40%, rgba(200,16,46,.34), transparent 70%);
}
.request-inner{ position:relative; z-index:1; }
.request-copy{
  font-family:var(--mincho); font-weight:800;
  font-size:clamp(24px,4.2vw,46px); line-height:1.55; letter-spacing:.06em;
  color:var(--white); margin:20px 0 22px;
  text-shadow:0 4px 40px rgba(0,0,0,.8);
}
.request-lead{
  max-width:44em; font-size:clamp(13.5px,1.6vw,15px); line-height:2.1; color:var(--txt);
}
.request-tags{
  display:flex; flex-wrap:wrap; gap:10px; margin:clamp(30px,4vw,44px) 0;
}
.request-tags span{
  display:inline-flex; align-items:center; height:40px; padding:0 20px;
  font-size:13.5px; font-weight:500; letter-spacing:.06em;
  border:1px solid rgba(214,168,79,.35); color:var(--kinari);
  background:rgba(11,11,11,.55); border-radius:1px;
  transition:background-color .35s, border-color .35s, color .35s;
}
.request-tags span:hover{ background:rgba(214,168,79,.14); border-color:var(--gold); color:var(--white); }
.request-foot{ display:flex; flex-wrap:wrap; align-items:center; gap:clamp(18px,3vw,34px); }
.request-note{ flex:1 1 300px; font-size:13px; color:var(--txt-dim); line-height:1.9; }

.request-sub{
  display:flex; align-items:baseline; flex-wrap:wrap; gap:4px 10px;
  font-family:var(--mincho); font-weight:700; font-size:clamp(17px,2vw,20px);
  letter-spacing:.08em; color:var(--white); margin-bottom:16px;
}
.request-sub-note{ font-family:var(--gothic); font-weight:400; font-size:13px; letter-spacing:.04em; color:var(--txt-dim); }
.request-works{ margin-bottom:clamp(30px,4vw,44px); }
.works-list{ display:flex; flex-wrap:wrap; gap:8px 8px; }
.works-list li{
  display:inline-flex; align-items:center; gap:9px; min-height:40px; padding:6px 16px;
  font-size:14px; font-weight:500; letter-spacing:.04em; color:var(--white);
  background:rgba(200,16,46,.12); border:1px solid rgba(200,16,46,.42); border-radius:1px;
}
.works-list li::before{ content:""; width:6px; height:6px; border-radius:50%; background:var(--red); flex:none; }

.request-flow{ margin-bottom:clamp(34px,4.6vw,52px); }
.flow-list{ display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:10px; counter-reset:f; }
.flow-list li{
  position:relative; display:flex; flex-direction:column; gap:4px;
  padding:20px 20px 22px; background:rgba(11,11,11,.72); border:1px solid var(--line);
}
.flow-list li:not(:last-child)::after{
  content:""; position:absolute; right:-9px; top:50%; z-index:1;
  width:8px; height:8px; border-top:1.5px solid var(--gold); border-right:1.5px solid var(--gold);
  translate:0 -50%; rotate:45deg;
}
.flow-no{ font-family:var(--en); font-weight:500; font-size:13px; letter-spacing:.18em; color:var(--gold); }
.flow-list b{ font-family:var(--mincho); font-weight:700; font-size:17px; letter-spacing:.06em; color:var(--white); }
.flow-list li > span:last-child{ font-size:13px; color:var(--txt-dim); line-height:1.75; }

/* =========================================================
   スポンサー
   ========================================================= */
.section-sponsor{ background:#0D0D0D; }
/* 青海波（せいがいは）の地紋 */
.sponsor-bg{
  position:absolute; inset:0; z-index:0; opacity:.5;
  background-color:#0D0D0D;
  background-image:
    radial-gradient(circle at 100% 150%, #0D0D0D 24%, #1d1d1d 24%, #1d1d1d 28%, #0D0D0D 28%, #0D0D0D 36%, #1d1d1d 36%, #1d1d1d 40%, transparent 40%, transparent),
    radial-gradient(circle at 0 150%, #0D0D0D 24%, #1d1d1d 24%, #1d1d1d 28%, #0D0D0D 28%, #0D0D0D 36%, #1d1d1d 36%, #1d1d1d 40%, transparent 40%, transparent),
    radial-gradient(circle at 50% 100%, #1d1d1d 10%, #0D0D0D 10%, #0D0D0D 23%, #1d1d1d 23%, #1d1d1d 30%, #0D0D0D 30%, #0D0D0D 43%, #1d1d1d 43%, #1d1d1d 50%, #0D0D0D 50%, #0D0D0D 63%, #1d1d1d 63%, #1d1d1d 71%, transparent 71%, transparent),
    radial-gradient(circle at 100% 50%, #1d1d1d 5%, #0D0D0D 5%, #0D0D0D 15%, #1d1d1d 15%, #1d1d1d 20%, #0D0D0D 20%, #0D0D0D 29%, #1d1d1d 29%, #1d1d1d 34%, #0D0D0D 34%, #0D0D0D 44%, #1d1d1d 44%, #1d1d1d 49%, transparent 49%, transparent),
    radial-gradient(circle at 0 50%, #1d1d1d 5%, #0D0D0D 5%, #0D0D0D 15%, #1d1d1d 15%, #1d1d1d 20%, #0D0D0D 20%, #0D0D0D 29%, #1d1d1d 29%, #1d1d1d 34%, #0D0D0D 34%, #0D0D0D 44%, #1d1d1d 44%, #1d1d1d 49%, transparent 49%, transparent);
  background-size:64px 32px;
  -webkit-mask-image:radial-gradient(ellipse 80% 70% at 50% 45%, #000 30%, transparent 85%);
          mask-image:radial-gradient(ellipse 80% 70% at 50% 45%, #000 30%, transparent 85%);
}
.sponsor-frame{
  position:relative; max-width:1040px; margin-inline:auto;
  padding:clamp(26px,4vw,48px) clamp(16px,3.6vw,44px) clamp(22px,3vw,34px);
  border:1px solid rgba(214,168,79,.4);
  background:linear-gradient(180deg, rgba(20,20,20,.92), rgba(10,10,10,.92));
  box-shadow:0 40px 90px -50px rgba(0,0,0,1), inset 0 0 80px -40px rgba(214,168,79,.35);
}
.sponsor-year{
  display:flex; flex-direction:column; align-items:center; gap:6px; margin-bottom:clamp(20px,3vw,30px);
  text-align:center; line-height:1.2;
}
.sponsor-year-en{ font-family:var(--mincho); font-weight:800; font-size:clamp(22px,3.4vw,34px); letter-spacing:.16em; padding-left:.16em; color:var(--white); }
.sponsor-year-ja{ font-size:13px; letter-spacing:.3em; padding-left:.3em; color:var(--gold); }
.sponsor-board{ display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:8px; }
.sp-plate{
  display:flex; flex-wrap:wrap; align-items:baseline; justify-content:center; gap:0 .5em;
  min-height:62px; padding:12px 14px; text-align:center;
  background:linear-gradient(180deg,#FBF8F2,#ECE5D8); color:#141414;
  font-family:var(--mincho); font-weight:800; font-size:16px; letter-spacing:.06em; line-height:1.5;
  align-content:center;
  box-shadow:0 1px 0 rgba(255,255,255,.6) inset, 0 8px 20px -14px rgba(0,0,0,.9);
}
.sp-plate small{ font-family:var(--gothic); font-weight:700; font-size:12px; letter-spacing:.04em; color:#555; }
.sp-xl{
  grid-column:1 / -1; min-height:96px; font-size:clamp(30px,4.4vw,44px); letter-spacing:.2em;
  background:linear-gradient(180deg,#D81A39,var(--red-dk)); color:#fff;
}
.sp-xl small{ color:rgba(255,255,255,.9); font-size:13px; letter-spacing:.12em; }
.sp-l{ grid-column:1 / -1; min-height:76px; font-size:clamp(20px,2.6vw,27px); letter-spacing:.12em; }
.sp-l small{ font-size:13px; }
.sp-m{ grid-column:span 2; min-height:68px; font-size:clamp(17px,2vw,21px); }
.sp-s{ min-height:64px; font-size:15px; }
.sp-join{ padding:0; background:transparent; box-shadow:none; }
.sp-join a{
  display:flex; flex-direction:column; align-items:center; justify-content:center; width:100%; height:100%;
  min-height:64px; padding:8px; border:1px dashed rgba(214,168,79,.7); color:var(--gold);
  font-family:var(--mincho); font-weight:800; font-size:16px; letter-spacing:.12em;
  transition:background-color .3s, color .3s;
}
.sp-join a small{ color:var(--kinari); font-size:12px; }
.sp-join a:hover{ background:rgba(214,168,79,.12); color:var(--white); }
.sponsor-note{ margin-top:18px; font-size:12.5px; line-height:1.9; color:var(--txt-dim); }

.sponsor-cta{
  max-width:1040px; margin:clamp(26px,3.4vw,40px) auto 0;
  display:grid; grid-template-columns:minmax(0,1fr) auto; align-items:center; gap:clamp(20px,3vw,40px);
  padding:clamp(24px,3.4vw,38px) clamp(22px,3.6vw,44px);
  border-left:3px solid var(--gold);
  background:linear-gradient(100deg, rgba(214,168,79,.12), rgba(17,17,17,.7) 60%);
}
.sponsor-cta-en{ font-family:var(--en); font-weight:500; font-size:12px; letter-spacing:.28em; color:var(--gold); margin-bottom:6px; }
.sponsor-cta-title{
  font-family:var(--mincho); font-weight:800; font-size:clamp(19px,2.4vw,25px);
  letter-spacing:.06em; color:var(--white); line-height:1.6; margin-bottom:10px;
}
.sponsor-cta-body p:last-child{ font-size:14px; line-height:1.95; color:var(--txt-dim); }

/* =========================================================
   出演情報（ニュース）
   ========================================================= */
.section-news{ background:linear-gradient(180deg, var(--bk), #0E0E0E); }

/* 次の出演 */
.next-stage{
  position:relative; overflow:hidden; isolation:isolate;
  display:grid; grid-template-columns:auto minmax(0,1fr) auto; align-items:center;
  gap:clamp(20px,3.4vw,48px);
  padding:clamp(26px,3.6vw,44px) clamp(22px,3.6vw,48px);
  margin-bottom:clamp(34px,4.6vw,56px);
  border:1px solid rgba(214,168,79,.5);
  box-shadow:0 40px 90px -46px rgba(0,0,0,1), 0 0 0 1px rgba(0,0,0,.6);
}
.next-stage[hidden]{ display:none; }
.next-stage-bg{ position:absolute; inset:0; z-index:-1; }
.next-stage-bg img{ width:100%; height:100%; object-fit:cover; object-position:75% 40%; opacity:.42; }
.next-stage-bg::after{
  content:""; position:absolute; inset:0;
  background:
    linear-gradient(90deg, rgba(8,8,8,.96) 0%, rgba(8,8,8,.88) 45%, rgba(8,8,8,.55) 100%),
    radial-gradient(ellipse 40% 90% at 8% 50%, rgba(200,16,46,.45), transparent 70%);
}
.next-stage-date{
  display:grid; justify-items:center; align-content:center; gap:2px;
  min-width:clamp(128px,14vw,168px); padding:12px 8px 16px;
  border-right:1px solid rgba(214,168,79,.35); padding-right:clamp(20px,3vw,42px);
}
.next-stage-label{
  display:inline-flex; align-items:center; gap:8px;
  font-family:var(--en); font-weight:500; font-size:12px; letter-spacing:.24em; color:var(--gold);
}
.next-stage-label::before{
  content:""; width:8px; height:8px; border-radius:50%; background:var(--red);
  animation:livePing 1.8s ease-out infinite;
}
.next-stage-md{
  font-family:var(--en); font-weight:500; font-size:clamp(52px,6.4vw,76px); line-height:1.05;
  letter-spacing:.02em; color:var(--white); text-shadow:0 0 40px rgba(200,16,46,.55);
}
.next-stage-dow{ font-size:14px; font-weight:500; letter-spacing:.1em; color:var(--kinari); }
.next-stage-count{
  margin-top:10px; padding:4px 14px; background:var(--red); color:#fff;
  font-size:13px; font-weight:700; letter-spacing:.1em;
  box-shadow:0 0 22px -6px rgba(200,16,46,1);
}
.next-stage-cat{ font-size:12.5px; font-weight:700; letter-spacing:.14em; color:var(--gold); margin-bottom:8px; }
.next-stage-title{
  font-family:var(--mincho); font-weight:800; font-size:clamp(25px,3.6vw,40px);
  line-height:1.4; letter-spacing:.06em; color:var(--white); margin-bottom:12px;
}
.next-stage-time,.next-stage-place{
  display:flex; align-items:flex-start; gap:10px; font-size:15px; line-height:1.75; color:var(--txt);
}
.next-stage-time::before,.next-stage-place::before{
  content:""; flex:none; width:16px; height:16px; margin-top:.3em;
  background:var(--gold);
  -webkit-mask:var(--ic) center/contain no-repeat; mask:var(--ic) center/contain no-repeat;
}
.next-stage-time::before{ --ic:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 2a10 10 0 1 1 0 20 10 10 0 0 1 0-20Zm1 5h-2v6l5 3 1-1.7-4-2.3V7Z'/%3E%3C/svg%3E"); }
.next-stage-place::before{ --ic:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 2a7 7 0 0 1 7 7c0 5.2-7 13-7 13S5 14.2 5 9a7 7 0 0 1 7-7Zm0 4.5a2.5 2.5 0 1 0 0 5 2.5 2.5 0 0 0 0-5Z'/%3E%3C/svg%3E"); }
.next-stage-time:empty,.next-stage-place:empty{ display:none; }
.next-stage-act{ display:grid; gap:8px; min-width:210px; }
.next-stage-act .btn{ min-height:48px; padding:0 18px; font-size:13.5px; width:100%; }
.next-stage-act .btn svg{ width:16px; height:16px; fill:var(--gold); flex:none; }
.next-stage-act .btn-ghost-cal{ border-color:rgba(214,168,79,.6); }

/* タブ */
.news-tabs{ display:flex; flex-wrap:wrap; gap:8px; margin-bottom:clamp(18px,2.4vw,26px); }
.js .news-tabs{ display:flex; }
.news-tabs{ display:none; }
.news-tab{
  display:inline-flex; align-items:center; gap:10px; min-height:46px; padding:0 20px;
  font-size:14px; font-weight:500; letter-spacing:.06em; color:var(--txt);
  border:1px solid var(--line); background:rgba(255,255,255,.02); border-radius:1px;
  transition:background-color .3s, border-color .3s, color .3s;
}
.news-tab:hover{ border-color:var(--kinari); color:var(--white); }
.news-tab.is-active{ background:var(--red); border-color:var(--red); color:#fff; font-weight:700; }
.news-tab-n{
  min-width:24px; height:24px; padding:0 7px; display:inline-grid; place-items:center;
  font-family:var(--en); font-size:13px; font-weight:500; line-height:1;
  background:rgba(255,255,255,.1); border-radius:12px;
}
.news-tab-n:empty{ display:none; }
.news-tab.is-active .news-tab-n{ background:rgba(0,0,0,.25); }

/* 一覧（ニュース形式） */
.news-list{ border-top:1px solid var(--line); }
.news-item{
  display:grid; grid-template-columns:clamp(96px,11vw,128px) minmax(0,1fr) auto;
  align-items:center; gap:clamp(16px,2.6vw,34px);
  padding:clamp(18px,2.4vw,24px) clamp(4px,1vw,14px);
  border-bottom:1px solid var(--line);
  transition:background-color .35s;
}
.news-item:hover{ background:rgba(255,255,255,.025); }
.news-item.is-hidden{ display:none; }
.news-date{ display:flex; flex-direction:column; align-items:flex-start; line-height:1.1; }
.news-md{ font-family:var(--en); font-weight:500; font-size:clamp(28px,3.2vw,36px); letter-spacing:.02em; color:var(--white); }
.news-dow{ font-size:13px; color:var(--kinari); margin-top:4px; }
.news-y{ font-family:var(--en); font-size:12px; letter-spacing:.2em; color:var(--txt-dim); margin-top:4px; }
.news-meta{ display:flex; flex-wrap:wrap; align-items:center; gap:6px 14px; margin-bottom:6px; }
.news-cat{
  display:inline-flex; align-items:center; height:26px; padding:0 11px;
  font-size:12px; font-weight:700; letter-spacing:.1em; color:#fff; background:var(--red);
}
.news-cat-contest{ background:var(--gold); color:#1A1307; }
.news-cat-info{ background:transparent; color:var(--kinari); border:1px solid var(--line); }
.news-time{ font-family:var(--en); font-size:14.5px; letter-spacing:.04em; color:var(--gold); }
.news-title{
  font-family:var(--mincho); font-weight:700; font-size:clamp(18px,2.2vw,23px);
  letter-spacing:.05em; color:var(--white); line-height:1.5;
}
.news-place{
  display:flex; align-items:flex-start; gap:6px; margin-top:4px;
  font-size:14px; color:var(--txt-dim); line-height:1.7;
}
.news-place::before{
  content:""; flex:none; width:13px; height:13px; margin-top:.35em; background:var(--txt-dim);
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 2a7 7 0 0 1 7 7c0 5.2-7 13-7 13S5 14.2 5 9a7 7 0 0 1 7-7Zm0 4.5a2.5 2.5 0 1 0 0 5 2.5 2.5 0 0 0 0-5Z'/%3E%3C/svg%3E") center/contain no-repeat;
          mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 2a7 7 0 0 1 7 7c0 5.2-7 13-7 13S5 14.2 5 9a7 7 0 0 1 7-7Zm0 4.5a2.5 2.5 0 1 0 0 5 2.5 2.5 0 0 0 0-5Z'/%3E%3C/svg%3E") center/contain no-repeat;
}
.news-note{ margin-top:8px; font-size:14px; color:var(--txt-dim); line-height:1.9; max-width:46em; }
.news-inlink{ color:var(--gold); text-decoration:underline; text-underline-offset:3px; margin-left:.4em; }
.news-act{ display:flex; flex-wrap:wrap; justify-content:flex-end; gap:6px; }
.news-btn{
  display:inline-flex; align-items:center; justify-content:center; gap:7px;
  min-height:44px; padding:0 14px; white-space:nowrap;
  font-size:13px; font-weight:500; letter-spacing:.04em; color:var(--txt);
  border:1px solid var(--line); background:rgba(255,255,255,.03); border-radius:1px;
  transition:background-color .3s, border-color .3s, color .3s;
}
.news-btn svg{ width:15px; height:15px; fill:var(--gold); flex:none; }
.news-btn:hover{ border-color:var(--gold); color:var(--white); background:rgba(214,168,79,.1); }
.news-btn-cal{ border-color:rgba(214,168,79,.45); color:var(--white); }
.news-empty{ padding:28px 4px; color:var(--txt-dim); font-size:14px; }

.news-foot{
  margin-top:clamp(28px,3.6vw,40px);
  display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:14px 24px;
}
.news-foot-txt{ font-size:14px; color:var(--txt-dim); }

/* =========================================================
   ギャラリー
   ========================================================= */
.gal-filter{ display:flex; flex-wrap:wrap; gap:8px; margin-top:-12px; }
.gal-btn{
  height:44px; padding:0 18px; font-size:13px; font-weight:500; letter-spacing:.08em;
  border:1px solid var(--line); color:var(--txt-dim); border-radius:1px;
  transition:background-color .3s, border-color .3s, color .3s;
}
.gal-btn:hover{ border-color:var(--kinari); color:var(--white); }
.gal-btn.is-active{ background:var(--red); border-color:var(--red); color:#fff; font-weight:700; }

.gal-grid{
  margin-top:clamp(26px,3.4vw,40px);
  width:min(1600px,100% - 24px); margin-inline:auto;
  display:grid; grid-template-columns:repeat(4,1fr); gap:6px;
}
.gal-item{
  position:relative; overflow:hidden; aspect-ratio:1; padding:0; display:block;
  background:var(--bk3);
}
.gal-item img{
  width:100%; height:100%; object-fit:cover;
  transition:scale .7s var(--ease), filter .5s;
  filter:brightness(.86) saturate(.92);
}
.gal-item::after{
  content:""; position:absolute; inset:0;
  background:linear-gradient(180deg, transparent 50%, rgba(11,11,11,.8));
  opacity:0; transition:opacity .4s;
}
.gal-item:hover img{ scale:1.08; filter:brightness(1) saturate(1); }
.gal-item:hover::after{ opacity:1; }
.gal-cap{
  position:absolute; left:14px; bottom:12px; z-index:2;
  font-size:12px; font-weight:500; letter-spacing:.14em; color:var(--kinari);
  opacity:0; transform:translateY(8px);
  transition:opacity .4s var(--ease), transform .4s var(--ease);
}
.gal-item:hover .gal-cap{ opacity:1; transform:none; }
.gal-item.is-hidden,
.gal-item.is-more{ display:none; }
.gal-more-wrap{ display:flex; justify-content:center; margin-top:clamp(22px,3vw,34px); }
.gal-more[hidden]{ display:none; }
.gal-more{ min-width:min(320px,100%); }
.gal-more::before{
  content:""; order:2; width:9px; height:9px; margin-top:-4px;
  border-right:1.6px solid var(--gold); border-bottom:1.6px solid var(--gold); rotate:45deg;
}
.gal-more-n{ font-family:var(--en); font-size:13px; color:var(--gold); margin-left:-.2em; }

/* =========================================================
   Instagram（正方形の写真が横に流れる）
   ========================================================= */
.igband{
  position:relative; overflow:hidden; isolation:isolate;
  padding:clamp(64px,8vw,104px) 0 clamp(60px,7vw,92px); text-align:center;
  background:#080808;
}
.igband-bg{ position:absolute; inset:0; z-index:-1; }
.igband-bg img{ width:100%; height:100%; object-fit:cover; filter:grayscale(1) brightness(.3) contrast(1.1); }
.igband-bg::after{
  content:""; position:absolute; inset:0;
  background:radial-gradient(ellipse 60% 70% at 50% 40%, rgba(200,16,46,.22), transparent 70%),
             linear-gradient(180deg, rgba(8,8,8,.7), transparent 30%, transparent 70%, rgba(8,8,8,.85));
}
.igband-ic{ width:40px; height:40px; fill:var(--gold); display:block; margin:0 auto 14px; }
.igband-title{
  font-family:var(--mincho); font-weight:800; font-size:clamp(25px,4.4vw,44px);
  line-height:1.5; letter-spacing:.08em; color:var(--white);
}
.igflow{ --g:12px; display:block; margin-top:clamp(28px,4vw,44px); overflow:hidden; }
.igflow-track{ display:flex; gap:var(--g); width:max-content; padding:0 calc(var(--g) / 2); }
.igflow-track img{
  flex:none; display:block; width:clamp(150px,22vw,280px); height:auto; aspect-ratio:1; object-fit:cover;
  border-radius:2px; background:var(--bk3);
  box-shadow:0 18px 40px -22px rgba(0,0,0,1);
}
.js .igflow.is-moving .igflow-track{ animation:igflow var(--igflow-dur, 60s) linear infinite; }
.igflow.is-paused .igflow-track, .igflow:hover .igflow-track{ animation-play-state:paused; }
@keyframes igflow{ to{ transform:translate3d(-50%,0,0); } }
.igband-foot{ display:flex; flex-direction:column; align-items:center; gap:16px; margin-top:clamp(28px,4vw,40px); }
.igband-note{ font-size:14px; color:var(--txt); line-height:1.9; }

/* ライトボックス */
.lb{
  position:fixed; inset:0; z-index:9999;
  background:rgba(6,6,6,.96); backdrop-filter:blur(6px);
  display:grid; place-items:center; padding:clamp(16px,4vw,56px);
  opacity:0; transition:opacity .3s;
}
.lb.is-open{ opacity:1; }
.lb[hidden]{ display:none; }
.lb-fig{ max-width:100%; max-height:100%; display:flex; flex-direction:column; gap:14px; align-items:center; }
.lb-fig img{
  max-width:100%; max-height:calc(100svh - 150px); width:auto; object-fit:contain;
  border:1px solid rgba(232,225,213,.14);
  animation:lbIn .4s var(--ease);
}
@keyframes lbIn{ from{ opacity:0; scale:.96; } to{ opacity:1; scale:1; } }
.lb-cap{
  display:flex; gap:18px; align-items:center;
  font-size:12px; letter-spacing:.14em; color:var(--txt-dim);
  font-family:var(--en);
}
#lbCat{ color:var(--gold); font-family:var(--gothic); letter-spacing:.1em; }
.lb-close,.lb-prev,.lb-next{
  position:absolute; z-index:2; width:52px; height:52px; border-radius:50%;
  border:1px solid var(--line); background:rgba(11,11,11,.7);
  transition:background-color .3s, border-color .3s;
}
.lb-close:hover,.lb-prev:hover,.lb-next:hover{ background:var(--red); border-color:var(--red); }
.lb-close{ top:clamp(12px,3vw,28px); right:clamp(12px,3vw,28px); }
.lb-close::before,.lb-close::after{
  content:""; position:absolute; left:16px; top:25px; width:20px; height:1.6px; background:var(--kinari);
}
.lb-close::before{ rotate:45deg; } .lb-close::after{ rotate:-45deg; }
.lb-prev{ left:clamp(8px,2vw,28px); top:50%; translate:0 -50%; }
.lb-next{ right:clamp(8px,2vw,28px); top:50%; translate:0 -50%; }
.lb-prev::before,.lb-next::before{
  content:""; position:absolute; left:19px; top:19px; width:12px; height:12px;
  border-left:1.6px solid var(--kinari); border-bottom:1.6px solid var(--kinari);
}
.lb-prev::before{ rotate:45deg; }
.lb-next::before{ rotate:-135deg; left:21px; }

/* =========================================================
   料金
   ========================================================= */
.price-box{
  position:relative; padding:clamp(30px,5vw,58px);
  border:1px solid rgba(214,168,79,.35);
  background:linear-gradient(150deg, rgba(23,23,23,.95), rgba(11,11,11,.9));
  box-shadow:0 0 90px -40px rgba(214,168,79,.5) inset;
}
.price-corner{ position:absolute; width:20px; height:20px; border:2px solid var(--gold); }
.price-corner.tl{ left:-1px; top:-1px; border-right:0; border-bottom:0; }
.price-corner.tr{ right:-1px; top:-1px; border-left:0; border-bottom:0; }
.price-corner.bl{ left:-1px; bottom:-1px; border-right:0; border-top:0; }
.price-corner.br{ right:-1px; bottom:-1px; border-left:0; border-top:0; }

.price-row{
  display:flex; flex-wrap:wrap; align-items:baseline; justify-content:space-between; gap:12px 20px;
  padding:22px 0; border-bottom:1px solid rgba(214,168,79,.16);
}
.price-row:last-of-type{ border-bottom:0; }
.price-list dt{
  font-family:var(--mincho); font-weight:700; font-size:clamp(16px,2vw,19px);
  letter-spacing:.14em; color:var(--kinari);
  position:relative; padding-left:18px;
}
.price-list dt::before{
  content:""; position:absolute; left:0; top:.55em; width:8px; height:8px; rotate:45deg;
  border:1px solid var(--gold);
}
.price-num{
  font-family:var(--en); font-weight:500; font-size:clamp(32px,5.4vw,46px); line-height:1;
  color:var(--white); letter-spacing:.02em;
}
.price-unit{ font-size:16px; margin-left:6px; color:var(--txt); }
.price-text{ font-size:clamp(16px,2.2vw,20px); font-weight:500; color:var(--white); text-align:right; }
.price-sub{ display:block; font-size:13px; font-weight:400; color:var(--txt-dim); margin-top:4px; }
.price-row-main .price-num{ color:var(--gold); text-shadow:0 0 30px rgba(214,168,79,.45); }
.price-row-free .price-text{ color:var(--red); font-weight:700; }
.price-row-free dt::before{ background:var(--red); border-color:var(--red); }
.price-note{ margin:26px 0 24px; font-size:13px; color:var(--txt-dim); }

/* =========================================================
   FAQ
   ========================================================= */
.faq-item{ border-bottom:1px solid var(--line-soft); }
.faq-item:first-child{ border-top:1px solid var(--line-soft); }
.faq-q{
  width:100%; display:flex; align-items:flex-start; gap:16px;
  padding:24px 46px 24px 0; position:relative; text-align:left;
  transition:color .3s;
}
.faq-q:hover{ color:var(--white); }
.faq-mark{
  flex:none; width:28px; height:28px; display:grid; place-items:center;
  font-family:var(--en); font-weight:500; font-size:15px; line-height:1;
  border:1px solid rgba(200,16,46,.7); color:var(--red);
}
.faq-mark-a{ border-color:rgba(214,168,79,.6); color:var(--gold); }
.faq-q-txt{
  font-family:var(--mincho); font-weight:700; font-size:clamp(15px,2vw,18px);
  line-height:1.7; letter-spacing:.05em; color:var(--white);
}
.faq-ico{
  position:absolute; right:6px; top:31px; width:16px; height:16px;
}
.faq-ico::before,.faq-ico::after{
  content:""; position:absolute; left:0; top:7px; width:16px; height:1.6px; background:var(--gold);
  transition:transform .4s var(--ease);
}
.faq-ico::after{ transform:rotate(90deg); }
.faq-q[aria-expanded="true"] .faq-ico::after{ transform:rotate(0); }
/* 閉じているあいだは中身を隠す（読み上げ・重なり検査の対象からも外す） */
.faq-a{ overflow:hidden; height:0; visibility:hidden; transition:height .45s var(--ease), visibility 0s linear .45s; }
.faq-q[aria-expanded="true"] + .faq-a{ visibility:visible; transition:height .45s var(--ease), visibility 0s; }
.faq-a-inner{ display:flex; gap:16px; padding:0 0 26px 0; }
.faq-a-inner p{ font-size:14.5px; line-height:2; color:var(--txt-dim); padding-top:2px; }

/* =========================================================
   フォーム
   ========================================================= */
.section-contact{ background:var(--bk2); }
.form{ display:grid; gap:22px; }
.field{ display:grid; gap:9px; }
.field-row{ display:grid; grid-template-columns:1fr 1fr; gap:22px; }
.field-label{
  display:flex; align-items:center; gap:10px; min-height:36px;
  font-size:14px; font-weight:500; letter-spacing:.08em; color:var(--kinari);
}
.field{ gap:4px; }
.req,.any{
  padding:3px 8px; font-size:12px; font-weight:700; letter-spacing:.08em; line-height:1.4;
  border-radius:1px;
}
.req{ background:var(--red); color:#fff; }
.any{ background:rgba(232,225,213,.12); color:var(--txt-dim); }

.form input,.form select,.form textarea{
  width:100%; font-family:var(--gothic); font-size:16px; color:var(--white);
  background:rgba(8,8,8,.85); border:1px solid var(--line); border-radius:2px;
  padding:14px 16px; min-height:54px; line-height:1.7;
  transition:border-color .3s, background-color .3s, box-shadow .3s;
  -webkit-appearance:none; appearance:none;
}
.form textarea{ resize:vertical; min-height:150px; }
.form input::placeholder,.form textarea::placeholder{ color:rgba(232,225,213,.3); }
.form input:focus,.form select:focus,.form textarea:focus{
  outline:none; border-color:var(--gold); background:rgba(20,20,20,.95);
  box-shadow:0 0 0 3px rgba(214,168,79,.16);
}
.form input[aria-invalid="true"],.form select[aria-invalid="true"],.form textarea[aria-invalid="true"]{
  border-color:var(--red); box-shadow:0 0 0 3px rgba(200,16,46,.18);
}
.select-wrap{ position:relative; }
.select-wrap::after{
  content:""; position:absolute; right:18px; top:50%; translate:0 -60%;
  width:9px; height:9px; border-right:1.6px solid var(--gold); border-bottom:1.6px solid var(--gold);
  rotate:45deg; pointer-events:none;
}
.form select{ padding-right:44px; cursor:pointer; }
.form select option{ background:#111; color:#fff; }
.form input[type="date"]::-webkit-calendar-picker-indicator{ filter:invert(1); opacity:.6; cursor:pointer; }

.field-error{ font-size:12.5px; color:#FF6C7F; min-height:0; }
.field-error:empty{ display:none; }

.field-group{
  padding:22px 24px; border:1px solid rgba(214,168,79,.28);
  background:rgba(214,168,79,.04); border-radius:2px;
  display:grid; gap:18px;
  transition:opacity .4s var(--ease);
}
.field-group[data-collapsed="true"]{ opacity:.55; }
.field-group-title{
  font-size:13.5px; font-weight:700; letter-spacing:.08em; color:var(--gold);
  display:flex; flex-wrap:wrap; align-items:baseline; gap:8px;
}
.field-group-note{ font-size:12px; font-weight:400; color:var(--txt-dim); }

.form-submit{ margin-top:8px; display:grid; gap:14px; }
.form-status{ font-size:13.5px; line-height:1.9; text-align:center; min-height:0; }
.form-status:empty{ display:none; }
.form-status.is-ok{ color:var(--gold); }
.form-status.is-ng{ color:#FF6C7F; }

.contact-tel{
  margin-top:clamp(34px,4vw,50px); padding:clamp(24px,3vw,34px);
  border:1px solid var(--line); background:var(--bk);
  text-align:center;
}
.contact-tel-lead{ font-size:14px; color:var(--txt-dim); margin-bottom:10px; }
.contact-tel-num{
  display:inline-flex; align-items:center; gap:12px;
  font-family:var(--en); font-weight:500; font-size:clamp(28px,5vw,40px); letter-spacing:.04em;
  color:var(--white); transition:color .3s;
}
.contact-tel-num svg{ width:clamp(24px,4vw,30px); height:clamp(24px,4vw,30px); fill:var(--red); }
.contact-tel-num:hover{ color:var(--gold); }
.contact-dm{
  display:inline-flex; align-items:center; justify-content:center; flex-wrap:wrap; gap:4px 8px;
  margin-top:14px; min-height:44px; padding:6px 18px;
  font-size:14px; font-weight:500; color:var(--gold);
  border:1px solid rgba(214,168,79,.4); border-radius:1px;
  transition:background-color .3s, color .3s;
}
.contact-dm svg{ width:17px; height:17px; fill:currentColor; flex:none; }
.contact-dm:hover{ background:rgba(214,168,79,.1); color:var(--white); }

/* =========================================================
   FOOTER
   ========================================================= */
.footer{ position:relative; padding-block:clamp(56px,7vw,84px) 0; overflow:hidden; background:var(--bk); }
.footer::before{
  content:""; position:absolute; left:0; right:0; top:0; height:2px;
  background:linear-gradient(90deg,transparent,var(--red) 30%,var(--gold) 70%,transparent);
  opacity:.7;
}
.footer-bg{ position:absolute; inset:0; z-index:0; }
.footer-circle{
  position:absolute; left:50%; bottom:-42%; translate:-50% 0;
  width:min(120vw,1100px); aspect-ratio:1; border-radius:50%;
  background:radial-gradient(circle, rgba(200,16,46,.16), transparent 62%);
  filter:blur(20px);
}
.footer > .container{ position:relative; z-index:1; }
.footer-grid{
  display:grid; grid-template-columns:minmax(0,1.6fr) repeat(3,minmax(0,1fr));
  gap:clamp(28px,4vw,48px); padding-bottom:clamp(38px,5vw,56px);
}
.footer-logo{ display:flex; align-items:baseline; gap:14px; margin-bottom:20px; }
.footer-logo-ja{
  font-family:var(--mincho); font-weight:800; font-size:clamp(30px,4vw,40px);
  letter-spacing:.16em; color:var(--white);
}
.footer-logo-en{ font-family:var(--en); font-weight:300; font-size:14px; letter-spacing:.3em; color:var(--gold); }
.footer-concept{ font-size:13.5px; line-height:2.05; color:var(--txt-dim); max-width:34em; }
.footer-h{
  font-family:var(--en); font-weight:500; font-size:12px; letter-spacing:.24em;
  color:var(--gold); margin-bottom:18px;
  display:flex; align-items:center; gap:10px;
}
.footer-h::after{ content:""; flex:1; height:1px; background:var(--line-soft); }
.footer-list li{ margin-bottom:2px; }
.footer-list a{
  font-size:14px; color:var(--txt); transition:color .3s;
  display:inline-flex; flex-direction:column; justify-content:center; min-height:44px;
}
.footer-list a:hover{ color:var(--gold); }
.footer-sub{ display:block; font-size:12px; color:var(--txt-dim); margin-top:2px; }
.footer-list-2{ display:grid; grid-template-columns:repeat(2,1fr); gap:0 14px; }
.footer-list-2 a{ display:flex; width:100%; }
.foot-note{
  padding:18px 0; border-top:1px solid var(--line-soft);
  font-size:13px; line-height:1.9; color:var(--txt-dim); text-align:center;
}

.copyright{
  padding:24px 0 clamp(24px,4vw,34px); border-top:1px solid var(--line-soft);
  font-family:var(--mincho); font-size:12.5px; letter-spacing:.14em; color:var(--txt-dim);
  text-align:center;
}

/* =========================================================
   スマホ固定CTA
   ========================================================= */
.sp-cta{
  position:fixed; left:0; right:0; bottom:0; z-index:90;
  display:none; gap:1px; padding:8px 10px calc(8px + env(safe-area-inset-bottom));
  background:rgba(9,9,9,.94); backdrop-filter:blur(12px);
  border-top:1px solid var(--line-soft);
  transform:translateY(110%); transition:transform .45s var(--ease);
}
.sp-cta.is-shown{ transform:none; }
.sp-cta-tel{
  flex:none; width:64px; display:grid; place-items:center; align-content:center; gap:2px;
  border:1px solid var(--line); border-radius:2px; color:var(--kinari);
  font-size:12px; letter-spacing:.1em; line-height:1.2;
}
.sp-cta-tel svg{ width:19px; height:19px; fill:var(--gold); }
.sp-cta-main{
  flex:1; display:grid; place-items:center; min-height:52px; margin-left:8px;
  background:var(--red); color:#fff; font-weight:700; font-size:14.5px; letter-spacing:.06em;
  border-radius:2px; box-shadow:0 0 24px -10px rgba(200,16,46,1);
}

/* =========================================================
   スクロールリビール
   ========================================================= */
/* JSが有効なときだけ隠す（JS無効でも本文が読めるように） */
.js .reveal{ opacity:0; transform:translateY(34px); }
.js .reveal.is-visible{
  opacity:1; transform:none;
  transition:opacity .9s var(--ease), transform .9s var(--ease);
}

/* =========================================================
   レスポンシブ
   ========================================================= */
/* 縦の狭いデスクトップ（ノートPC） */
@media (min-width:1025px) and (max-height:820px){
  .hero-ranbu{ font-size:clamp(38px,5.4vw,74px); }
  .hero-title{ font-size:clamp(36px,6vw,78px); }
}

@media (max-width:1500px){
  .header-tel{ display:none; }
}
@media (max-width:1320px){
  .nav-list{ gap:16px; }
  .nav-ja{ font-size:12px; }
}

@media (max-width:1024px){
  .intro-inner{ grid-template-columns:1fr; }
  /* 3つのボタンは同じ幅で横に並べる */
  .intro-cta{ display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); }
  .intro-cta .btn{ width:100%; padding:0 12px; font-size:14px; letter-spacing:.06em; }
  .about-grid{ grid-template-columns:1fr; }
  .about-circle{ width:132px; right:0; top:auto; bottom:-34px; }
  .students-top{ grid-template-columns:1fr; }
  .step{ grid-template-columns:auto minmax(0,220px) minmax(0,1fr); }
  .footer-grid{ grid-template-columns:1fr 1fr; }
  .gal-grid{ grid-template-columns:repeat(3,1fr); }

  .next-stage{ grid-template-columns:auto minmax(0,1fr); }
  .next-stage-act{ grid-column:1 / -1; grid-template-columns:repeat(3,minmax(0,1fr)); min-width:0; }
  .news-item{ grid-template-columns:clamp(84px,11vw,110px) minmax(0,1fr); }
  .news-act{ grid-column:2; justify-content:flex-start; }
  .flow-list{ grid-template-columns:repeat(2,minmax(0,1fr)); }
  .flow-list li:nth-child(2)::after{ display:none; }
  .sponsor-cta{ grid-template-columns:1fr; }
  .sponsor-cta .btn{ justify-self:start; }
}

/* ---- ハンバーガーメニュー ---- */
@media (max-width:1180px){
  :root{ --head-h:64px; }
  .hamburger{ display:block; }
  .header{ background:rgba(9,9,9,.8); backdrop-filter:blur(12px); border-bottom-color:var(--line-soft); }

  .nav{
    position:fixed; inset:0 0 0 auto; z-index:99;
    width:min(420px,88vw); margin:0;
    background:linear-gradient(200deg, #131313, #0A0A0A 60%);
    border-left:1px solid var(--line-soft);
    padding:calc(var(--head-h) + 20px) 30px 36px;
    overflow-y:auto; overscroll-behavior:contain;
    transform:translateX(102%); transition:transform .5s var(--ease), visibility 0s linear .5s;
    visibility:hidden;
    display:flex; flex-direction:column;
  }
  .nav::before{
    content:""; position:absolute; right:-30%; top:8%;
    width:70%; aspect-ratio:1; border-radius:50%;
    background:radial-gradient(circle, rgba(200,16,46,.3), transparent 65%);
    pointer-events:none;
  }
  .is-nav-open .nav{ transform:none; visibility:visible; transition:transform .5s var(--ease), visibility 0s; }
  .nav-list{ flex-direction:column; align-items:stretch; gap:0; position:relative; }
  .nav-list li{ border-bottom:1px solid var(--line-soft); }
  .nav-list a{
    flex-direction:row; align-items:baseline; gap:14px; padding:14px 4px; min-height:50px;
  }
  .nav-list a::after{ display:none; }
  .nav-en{ font-size:10px; width:7.4em; flex:none; }
  .nav-ja{ font-size:15px; font-weight:500; }

  .nav-foot{ display:block; margin-top:auto; padding-top:26px; }
  .nav-tel{
    display:block; padding:14px; border:1px solid rgba(214,168,79,.4);
    background:rgba(214,168,79,.06); text-align:center; margin-bottom:10px;
  }
  .nav-tel-label{ display:block; font-size:12px; color:var(--txt-dim); letter-spacing:.1em; }
  .nav-tel-num{
    display:block; font-family:var(--en); font-weight:500; font-size:26px;
    letter-spacing:.05em; color:var(--white); margin-top:4px;
  }
  .nav-foot-links a{ display:flex; align-items:center; justify-content:center; min-height:44px; font-size:13px; color:var(--gold); }
}
@media (max-width:900px){
  .header-cta{ display:none; }
}

@media (max-width:760px){
  body{ font-size:15.5px; line-height:1.9; }
  .sp-cta{ display:flex; }
  .footer{ padding-bottom:76px; }
  .sec-kanji{ font-size:min(64vw,420px); }

  .hero-tags{ gap:6px; }
  .tag{ height:30px; padding:0 10px; }

  /* スマホは写真を大きく見せて、コピーを下寄せ */
  .hero{ align-items:end; padding-block:calc(var(--head-h) + 20px) clamp(78px,14vh,108px); }
  .hero-media img,
  .hero-slide.s2 img,
  .hero-slide.s3 img{ object-position:50% 40%; }
  .hero-scrim{
    background:
      linear-gradient(180deg, rgba(5,5,5,.82) 0%, rgba(5,5,5,.18) 20%,
        transparent 40%, rgba(5,5,5,.62) 68%, rgba(5,5,5,.95) 100%);
  }
  .hero-glow,.hero-ring{ left:50%; top:66%; }
  .hero-inner{
    align-items:flex-end; justify-content:flex-start;
    gap:16px; padding-bottom:2vh;
  }
  .hero-ranbu{ font-size:clamp(34px,10vw,46px); letter-spacing:.12em; }
  .hero-title{ font-size:clamp(34px,10.4vw,50px); line-height:1.34; }
  .hero-title .line{ white-space:nowrap; }
  .hero-scroll{ right:auto; left:50%; translate:-50% 0; bottom:14px; }
  .hero-scroll-bar{ height:38px; }

  .intro-inner{ grid-template-columns:1fr; }
  .intro-cta{ grid-template-columns:1fr; }
  .intro-cta .btn{ font-size:15px; }
  .btn-lg{ padding:0 20px; }
  .next-strip{ padding:14px 16px; gap:4px 14px; }
  .next-strip-title{ flex-basis:100%; font-size:17px; }
  .next-strip-go{ margin-left:0; }

  /* 出演情報 */
  .next-stage{ grid-template-columns:1fr; gap:18px; padding:22px 18px 20px; }
  .next-stage-bg img{ object-position:70% 30%; }
  .next-stage-bg::after{
    background:linear-gradient(180deg, rgba(8,8,8,.9), rgba(8,8,8,.86) 60%, rgba(8,8,8,.95)),
               radial-gradient(ellipse 80% 40% at 30% 0%, rgba(200,16,46,.4), transparent 70%);
  }
  .next-stage-date{
    display:flex; flex-wrap:wrap; align-items:baseline; justify-content:flex-start; gap:4px 12px;
    min-width:0; padding:0 0 16px; border-right:0; border-bottom:1px solid rgba(214,168,79,.35);
  }
  .next-stage-label{ flex-basis:100%; }
  .next-stage-md{ font-size:52px; }
  .next-stage-count{ margin-top:0; align-self:center; }
  .next-stage-act{ grid-template-columns:1fr; }
  .news-tabs{ gap:6px; }
  .news-tab{ flex:1 1 auto; justify-content:center; padding:0 12px; font-size:13.5px; gap:6px; }
  .news-item{ grid-template-columns:76px minmax(0,1fr); gap:6px 14px; padding:18px 2px; align-items:start; }
  .news-md{ font-size:26px; }
  .news-dow{ font-size:12px; }
  .news-act{ grid-column:1 / -1; margin-top:8px; display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); }
  .news-act .news-btn{ padding:0 6px; font-size:13px; gap:6px; }
  .news-act .news-btn .lg{ display:none; }
  .news-foot{ flex-direction:column; align-items:stretch; text-align:center; }
  .news-foot .btn{ width:100%; }

  .about-stats{ grid-template-columns:repeat(2,minmax(0,1fr)); }
  .about-stats li:nth-child(3)::before{ display:none; }
  .about-stats li:nth-child(n+3){ border-top:1px solid var(--line); }
  .stat-label{ font-size:12.5px; }

  .kikka{ grid-template-columns:1fr; justify-items:center; text-align:center; padding:26px 20px; }
  .kikka-body p{ text-align:left; }

  .step{ grid-template-columns:auto 1fr; gap:14px 18px; padding:16px; }
  .step-photo{ grid-column:1 / -1; order:3; aspect-ratio:16/9; }
  .step-body{ order:2; }
  .step-no{ order:1; align-self:center; }
  .step:hover{ transform:none; }

  .works-list li{ font-size:13.5px; padding:6px 12px; }
  .flow-list{ grid-template-columns:1fr; gap:14px; }
  .flow-list li{ padding:16px 18px; }
  .flow-list li:not(:last-child)::after{ display:block; right:auto; left:50%; top:auto; bottom:-11px; translate:-50% 0; rotate:135deg; }

  .sponsor-frame{ padding:24px 12px 20px; }
  .sponsor-board{ grid-template-columns:repeat(2,minmax(0,1fr)); gap:6px; }
  .sp-xl{ min-height:84px; font-size:32px; }
  .sp-l{ min-height:64px; font-size:19px; letter-spacing:.08em; }
  .sp-m{ grid-column:span 1; font-size:16px; min-height:64px; }
  .sp-s{ font-size:14.5px; padding:10px 8px; }
  .sponsor-cta{ padding:24px 20px; }
  .sponsor-cta .btn{ justify-self:stretch; }

  .gal-grid{ grid-template-columns:repeat(2,1fr); gap:4px; width:min(1600px,100% - 16px); }
  .gal-cap{ display:none; }
  .gal-filter{ gap:6px; }
  .gal-btn{ padding:0 14px; font-size:13px; }

  .field-row{ grid-template-columns:1fr; gap:14px; }
  .price-row{ padding:18px 0; }
  .footer-grid{ grid-template-columns:1fr; gap:28px; }
  .footer-list-2{ grid-template-columns:repeat(2,1fr); }
  .request-foot{ flex-direction:column; align-items:stretch; }
  .request-foot .btn{ width:100%; }
  .lb-prev,.lb-next{ width:44px; height:44px; }
  .lb-prev::before,.lb-next::before{ left:16px; top:16px; width:10px; height:10px; }
  .lb-next::before{ left:18px; }
  .price-box .btn{ width:100%; padding:10px 18px; line-height:1.5; }
}

@media (max-width:400px){
  .hero-ranbu{ font-size:34px; }
  .hero-title{ font-size:min(37px, calc((100vw - 118px) / 6.4)); }
  .students-brush{ font-size:44px; }
  .check-list{ grid-template-columns:1fr; }
  .news-act .news-btn{ font-size:12px; }
}

/* =========================================================
   モーション低減
   ========================================================= */
@media (prefers-reduced-motion:reduce){
  html{ scroll-behavior:auto; }
  *,*::before,*::after{
    animation-duration:.001ms !important;
    animation-iteration-count:1 !important;
    transition-duration:.001ms !important;
  }
  .js .reveal{ opacity:1 !important; transform:none !important; }
  .hero-media img{ scale:1; }
  .faq-a{ transition:none; }
}
