/* =========================================================
   VIBES JAPAN vol.8  LP  ―  style.css
   Theme: RED × BLACK (no blue) / Single-page scroll
   SP-first / max 1200px
   ========================================================= */

:root{
  --bg:        #0A0A0A;
  --bg-2:      #141414;
  --bg-3:      #1e1e1e;
  --line:      rgba(255,255,255,.09);
  --line-2:    rgba(255,255,255,.16);
  --text:      #F4F4F4;
  --text-dim:  #9a9a9a;

  --red:       #FF2233;
  --red-soft:  #ff5a68;
  --red-deep:  #B00721;
  --ember:     #ff6a3d;   /* 赤系の暖色アクセント（炎） */

  --glow-red:  none;   /* 装飾のグローは廃止。光り物は主要CTA（.btn--primary / .sticky-cta）のみ */
  --grad-fire: linear-gradient(180deg, #FF2A3A 0%, #D80D1F 100%);  /* CTA：赤 */

  --maxw: 1200px;
  --radius: 10px;
  --head-h: 60px;   /* ナビバー高（スクロールオフセット用） */
  --ff-jp: "Noto Sans JP", system-ui, -apple-system, "Hiragino Kaku Gothic ProN", "Yu Gothic", Meiryo, sans-serif;
  --ff-dis: "Noto Sans JP", system-ui, -apple-system, sans-serif;
  --ff-mono: "Noto Sans JP", system-ui, -apple-system, sans-serif;
  --ff-num: "Oswald", "Noto Sans JP", system-ui, sans-serif;   /* 数字用（参考サイト寄せ） */
}

/* ---------- Reset ---------- */
*,*::before,*::after{ box-sizing:border-box; }
html{ -webkit-text-size-adjust:100%; scroll-behavior:smooth; }
body{ margin:0; font-family:var(--ff-jp); background:var(--bg); color:var(--text); line-height:1.85; font-size:16px; letter-spacing:.01em; overflow-x:hidden; -webkit-font-smoothing:antialiased; }
img{ max-width:100%; height:auto; display:block; }
a{ color:inherit; text-decoration:none; }
h1,h2,h3,p,ul,ol,dl,dd,dt,figure,blockquote{ margin:0; }
ul,ol{ padding:0; list-style:none; }
button{ font-family:inherit; cursor:pointer; color:inherit; }
:target{ scroll-margin-top:0; }
section[id]{ scroll-margin-top:calc(var(--head-h) + 14px); }

/* ---------- Layout helpers ---------- */
.wrap{ width:100%; max-width:var(--maxw); margin-inline:auto; padding-inline:20px; }
.wrap--mid{ max-width:820px; }
.wrap--narrow{ max-width:640px; }

.section{ padding:76px 0; }
main{ counter-reset: sec; }
.sec-head{ text-align:left; margin-bottom:44px; }
.sec-lead{ max-width:640px; }
.sec-head .kicker::before{ counter-increment: sec; content: counter(sec, decimal-leading-zero) " — "; color: var(--text-dim); }
.kicker{ display:inline-block; font-family:var(--ff-mono); font-weight:700; letter-spacing:.28em; font-size:12px; text-transform:uppercase; color:var(--red-soft); position:relative; padding-bottom:14px; margin-bottom:18px; }
.kicker::after{ content:""; position:absolute; left:0; bottom:0; width:34px; height:3px; border-radius:3px; background:var(--red); }
.sec-title{ font-size:clamp(26px,6.6vw,44px); font-weight:900; line-height:1.28; letter-spacing:.01em; }
.sec-lead{ margin-top:16px; color:var(--text-dim); font-size:clamp(13.5px,3.8vw,16px); }
.ember{ color:var(--red); }
.mark{ color:var(--red-soft); }

/* =========================================================
   Buttons
   ========================================================= */
.btn{ display:inline-flex; align-items:center; justify-content:center; gap:.5em; text-align:center; font-weight:900; letter-spacing:.04em; border:none; border-radius:4px; padding:14px 30px; font-size:clamp(14px,3.6vw,16px); line-height:1.3; transition:transform .15s ease, box-shadow .25s ease, filter .2s ease; }
.btn--primary{ color:#fff; background:var(--grad-fire); box-shadow:0 0 20px rgba(255,34,51,.45), 0 10px 30px rgba(0,0,0,.5); }
.btn--primary:hover{ transform:translateY(-2px); box-shadow:0 0 32px rgba(255,34,51,.7), 0 12px 34px rgba(0,0,0,.55); }
.btn--primary:active{ transform:translateY(0); }
.btn--block{ display:flex; width:100%; }
.btn--ghost{ background:transparent; color:var(--text); border:1.5px solid var(--line-2); padding:14px 26px; }
.btn--ghost:hover{ border-color:var(--red); box-shadow:var(--glow-red); }
.btn--submit{ padding-block:20px; animation:pulseBtn 2.6s ease-in-out infinite; }
@keyframes pulseBtn{ 0%,100%{ box-shadow:0 0 20px rgba(255,34,51,.45), 0 10px 30px rgba(0,0,0,.5); } 50%{ box-shadow:0 0 34px rgba(255,34,51,.8), 0 10px 30px rgba(0,0,0,.5); } }

/* =========================================================
   Header (sticky) : ticker + nav
   ========================================================= */
.hdr{ position:fixed; top:0; left:0; right:0; z-index:70; background:rgba(10,10,10,.9); backdrop-filter:blur(10px); border-bottom:1px solid var(--line); }
.hdr__ticker{ background:linear-gradient(90deg, rgba(255,34,51,.2), rgba(10,10,10,.5) 70%); border-bottom:1px solid rgba(255,34,51,.28); }
.hdr__ticker-inner{ max-width:var(--maxw); margin-inline:auto; display:flex; align-items:center; gap:9px; padding:6px 16px; font-size:11.5px; font-weight:700; color:#ffd0d5; }
.hdr__dot{ width:8px; height:8px; border-radius:50%; background:var(--red); flex:none; }
@keyframes blink{ 0%,100%{opacity:1} 50%{opacity:.25} }
.hdr__ticker-text{ overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }

.hdr__bar{ max-width:var(--maxw); margin-inline:auto; height:var(--head-h); display:flex; align-items:center; gap:16px; padding:0 16px; }
.hdr__logo{ font-family:var(--ff-dis); font-size:19px; letter-spacing:.03em; white-space:nowrap; flex:none; display:flex; align-items:center; }
.hdr__logo .logo-text b{ color:var(--red-soft); }
.hdr__logo .logo-text span{ font-size:.62em; color:var(--text-dim); }
.hdr__logo .logo-img{ height:46px; }

/* ロゴ画像ローダー：画像があれば画像、無ければテキスト */
.logo-img{ display:none; width:auto; }
[data-logo-wrap].logo-ready .logo-img{ display:inline-block; }
[data-logo-wrap].logo-ready .logo-text{ display:none; }
.footer-org-logo{ display:inline-flex; align-items:center; vertical-align:middle; }
.footer-org-logo .logo-img{ height:20px; margin:0 4px; }
.footer-org-rep{ color:var(--text-dim); }
.nav{ display:flex; align-items:center; gap:4px; margin-left:auto; }
.nav a{ font-family:var(--ff-dis); letter-spacing:.06em; font-size:13.5px; color:var(--text-dim); padding:8px 11px; border-radius:8px; position:relative; transition:color .2s; white-space:nowrap; }
.nav a:hover{ color:#fff; }
.nav a.is-current{ color:#fff; }
.nav a.is-current::after{ content:""; position:absolute; left:11px; right:11px; bottom:2px; height:2px; border-radius:2px; background:var(--grad-fire); box-shadow:var(--glow-red); }
.nav__entry{ display:none; }
.hdr__cta{ flex:none; font-family:var(--ff-dis); letter-spacing:.06em; font-size:14px; color:#fff; background:var(--grad-fire); padding:9px 20px; border-radius:4px; }
.hdr__cta:hover{ filter:brightness(1.08); }
.hdr__burger{ display:none; flex:none; width:42px; height:42px; margin-left:auto; background:none; border:1px solid var(--line-2); border-radius:10px; padding:0; flex-direction:column; align-items:center; justify-content:center; gap:5px; }
.hdr__burger span{ display:block; width:20px; height:2px; background:#fff; border-radius:2px; transition:transform .25s, opacity .2s; }
.hdr__burger[aria-expanded="true"] span:nth-child(1){ transform:translateY(7px) rotate(45deg); }
.hdr__burger[aria-expanded="true"] span:nth-child(2){ opacity:0; }
.hdr__burger[aria-expanded="true"] span:nth-child(3){ transform:translateY(-7px) rotate(-45deg); }
.nav-scrim{ position:fixed; inset:0; z-index:65; background:rgba(0,0,0,.6); backdrop-filter:blur(2px); }

/* --- mobile nav --- */
@media (max-width:900px){
  .hdr__cta{ display:none; }
  .hdr__burger{ display:flex; }
  .nav{
    position:fixed; top:0; right:0; width:min(78vw,320px); height:100dvh; margin:0;
    flex-direction:column; align-items:stretch; gap:2px; padding:88px 22px 30px;
    background:#0f0f0f; border-left:1px solid var(--line);
    transform:translateX(100%); transition:transform .3s cubic-bezier(.2,.8,.2,1); z-index:68;
  }
  .nav.is-open{ transform:translateX(0); }
  .nav a{ font-size:16px; padding:14px 12px; border-bottom:1px solid var(--line); border-radius:0; }
  .nav a.is-current::after{ display:none; }
  .nav a.is-current{ color:var(--red-soft); }
  .nav__entry{ display:block; margin-top:18px; text-align:center; background:var(--grad-fire); color:#fff; border-radius:999px; border:none !important; box-shadow:var(--glow-red); font-family:var(--ff-dis); letter-spacing:.06em; }
}

/* =========================================================
   Photo frame system (drop file into /assets)
   ========================================================= */
.photo{ position:relative; overflow:hidden; background:linear-gradient(135deg,#181818,#0e0e0e); }
.photo img{ width:100%; height:100%; object-fit:cover; opacity:0; transition:opacity .5s ease; }
.photo.is-loaded img{ opacity:1; }
.photo__ph{ position:absolute; inset:0; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:6px; text-align:center; padding:14px; color:#7f7f7f; font-size:12px; font-weight:700; border:1.5px dashed rgba(255,255,255,.14); border-radius:inherit; background:repeating-linear-gradient(45deg, rgba(255,255,255,.02) 0 10px, transparent 10px 20px); }
.photo.is-loaded .photo__ph{ display:none; }
.photo__ph .photo__ico{ font-size:26px; }
.photo__ph code{ font-family:ui-monospace,Menlo,Consolas,monospace; font-size:10.5px; color:var(--red-soft); background:rgba(255,34,51,.1); padding:2px 8px; border-radius:5px; }
.photo__ph small{ font-weight:500; font-size:10px; color:#6f6f6f; max-width:220px; line-height:1.5; }

/* =========================================================
   HERO
   ========================================================= */
.hero{ position:relative; min-height:100svh; display:flex; flex-direction:column; justify-content:center; align-items:center; overflow:hidden; padding:130px 0 70px; }
.hero__bg{ position:absolute; inset:0; z-index:0; background:var(--bg); }
.hero__bg .photo{ position:absolute; inset:0; background:none; }
.hero__bg .photo img{ opacity:0; }
.hero__bg .photo.is-loaded img{ opacity:.48; }
@media (max-width:640px){
  /* PC画像をスマホで使う場合は下部を強調（スマホ専用画像が入ったら解除） */
  .hero__bg .photo img:not(.is-sp){ object-position:center bottom; transform:scale(1.35); transform-origin:50% 100%; }
  /* スマホ専用画像はそのまま中央表示 */
  .hero__bg .photo img.is-sp{ object-position:center center; transform:none; }
}
.hero__bg .photo__ph{ border:none; background:none; color:#4a4a4a; }
.hero__bg .photo.is-loaded .photo__ph{ display:none; }
.hero__scrim{ position:absolute; inset:0; background:linear-gradient(180deg, rgba(10,10,10,.45) 0%, rgba(10,10,10,.2) 40%, rgba(10,10,10,.92) 100%); }
.hero__glow{ display:none; }   /* 背景ネオン（発光グロー）削除 */
@keyframes float1{ 0%,100%{transform:translateY(0)} 50%{transform:translateY(30px)} }
.hero__noise{ position:absolute; inset:0; opacity:.05; background-image:radial-gradient(rgba(255,255,255,.6) .5px, transparent .5px); background-size:3px 3px; }
.hero__inner{ position:relative; z-index:2; width:100%; max-width:760px; margin-inline:auto; padding-inline:20px; text-align:center; display:flex; flex-direction:column; align-items:center; }
.hero__eyebrow{ font-family:var(--ff-mono); font-weight:700; letter-spacing:.16em; color:var(--red-soft); font-size:clamp(10px,3vw,12px); margin-bottom:18px; }
.hero__logo{ font-family:"Anton","Noto Sans JP",sans-serif; font-weight:400; font-size:clamp(48px,14vw,104px); line-height:.95; letter-spacing:.02em; color:var(--red); text-shadow:0 2px 24px rgba(0,0,0,.55); margin:0; }
.hero__logo-img{ width:min(84%, 500px); height:auto; margin:0 auto; filter:drop-shadow(0 4px 24px rgba(0,0,0,.55)); }
@media (max-width:640px){ .hero__logo-img{ width:min(80%, 360px); } }
.hero__vol{ font-family:var(--ff-mono); font-weight:700; letter-spacing:.24em; font-size:clamp(11px,3.2vw,14px); color:var(--text-dim); margin:14px 0 20px; }
.hero__catch{ margin:0 0 26px; }
.hero__catch-jp{ font-family:"Zen Old Mincho","Noto Sans JP",serif; font-weight:900; font-size:clamp(20px,5.4vw,34px); line-height:1.4; letter-spacing:.04em; color:#fff; text-shadow:0 2px 16px rgba(0,0,0,.6); }
.hero__catch-en{ font-family:var(--ff-dis); font-weight:700; font-size:clamp(11px,3vw,14px); letter-spacing:.24em; color:var(--red-soft); margin-top:10px; }
.hero__title{ font-weight:900; font-size:clamp(24px,6.6vw,40px); line-height:1.4; letter-spacing:.02em; margin:0 0 30px; text-shadow:0 2px 20px rgba(0,0,0,.5); }
.hero__title .line{ display:block; }
.ember{ color:var(--red); }
/* 1文字ずつ出るアニメ（is-armed が付いた時だけ隠す＝JS失敗時も文字は表示される） */
.hero__title .char{ display:inline-block; }
.hero__title.is-armed .char{ opacity:0; transform:translateY(16px); filter:blur(5px); transition:opacity .5s ease, transform .5s ease, filter .5s ease; }
.hero__title.is-armed .char.is-in{ opacity:1; transform:none; filter:none; }

/* ヒーロー下部：登壇者スライドショー（自動流し） */
.hero__guests{ position:relative; z-index:2; width:100%; margin-top:38px; overflow:hidden; -webkit-mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent); mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent); }
.hero__guests-track{ display:flex; width:max-content; animation:guestScroll 75s linear infinite; }
.hero__guests:hover .hero__guests-track{ animation-play-state:paused; }
.hero__guest{ flex:none; width:180px; margin-right:18px; }
.hero__guest .photo{ position:relative; aspect-ratio:3/4; border-radius:10px; border:1px solid var(--line); overflow:hidden; background:#161616; }
/* 今回の登壇者：赤枠＋「今回登壇」バッジで強調 */
.hero__guest--now .photo{ border:1.5px solid var(--red); box-shadow:0 0 0 1px rgba(255,34,51,.3) inset; }
.hero__guest--now .photo::after{ content:"今回登壇"; position:absolute; top:8px; left:8px; z-index:2; font-size:10px; font-weight:700; color:#fff; background:var(--grad-fire); padding:3px 9px; border-radius:4px; letter-spacing:.02em; }
.hero__guest--now small{ color:var(--red-soft); }
/* 過去の登壇者：少しトーンを落として区別 */
.hero__guest--past .photo img{ filter:grayscale(.2) brightness(.82); }
.hero__guest--past .photo{ opacity:.92; }
.hero__guest--past small{ color:var(--text-dim); }
.hero__guest .photo img{ width:100%; height:100%; object-fit:cover; object-position:center top; opacity:1; }
.hero__guest b{ display:block; font-size:13px; font-weight:900; color:#fff; margin-top:8px; }
.hero__guest small{ display:block; font-family:var(--ff-mono); font-size:10px; color:var(--red-soft); letter-spacing:.04em; margin-top:2px; }
@keyframes guestScroll{ from{transform:translateX(0)} to{transform:translateX(-50%)} }
@media (prefers-reduced-motion:reduce){ .hero__guests-track{ animation:none; } }

.hero__facts{ margin-bottom:22px; }
.hero__date{ display:flex; flex-wrap:wrap; align-items:baseline; justify-content:center; gap:12px; }
.hero__date b{ font-family:var(--ff-num); font-weight:700; font-size:clamp(30px,8vw,50px); color:#fff; letter-spacing:.02em; }
.hero__date span{ font-family:var(--ff-num); font-weight:600; font-size:15px; color:var(--red-soft); letter-spacing:.1em; }
.hero__date i{ font-style:normal; font-family:var(--ff-num); font-weight:600; font-size:clamp(16px,4.4vw,22px); color:#fff; letter-spacing:.04em; }
.hero__venue{ font-size:clamp(13px,3.6vw,15px); font-weight:700; color:#e6e6e6; margin-top:8px; }

.hero__pills{ display:flex; flex-wrap:wrap; justify-content:center; gap:10px; margin-bottom:30px; }
.hero__pill{ display:inline-flex; align-items:center; gap:7px; font-size:13px; font-weight:700; color:#fff; background:rgba(255,255,255,.05); border:1px solid var(--line-2); border-radius:2px; padding:6px 14px; }
.hero__pill b{ font-family:var(--ff-mono); font-size:10.5px; font-weight:700; letter-spacing:.08em; color:var(--red-soft); }

.hero__btn{ width:auto; max-width:100%; padding-inline:48px; }
.hero__note{ font-family:"Zen Old Mincho","Noto Sans JP",serif; font-size:clamp(14px,3.8vw,16px); font-weight:700; color:#e2e2e2; letter-spacing:.04em; margin:20px auto 0; max-width:540px; line-height:2; }
.hero__scroll{ margin-top:30px; font-family:var(--ff-mono); letter-spacing:.3em; font-size:11px; color:var(--text-dim); }
.hero__scroll::after{ content:""; display:block; width:1px; height:34px; margin:8px auto 0; background:linear-gradient(var(--red),transparent); animation:scrollLine 1.8s infinite; }
@keyframes scrollLine{ 0%{opacity:0; transform:scaleY(.2); transform-origin:top} 50%{opacity:1} 100%{opacity:0; transform:scaleY(1); transform-origin:top} }

@media (min-width:900px){
  .hero{ padding:150px 0 90px; }
}

/* =========================================================
   MOVIE
   ========================================================= */
.movie{ background:linear-gradient(180deg,var(--bg),#0c0c0c); }
.movie__frame{ position:relative; max-width:900px; margin:0 auto; aspect-ratio:16/9; overflow:hidden; border-radius:18px; border:1px solid var(--line-2); background:linear-gradient(135deg,#141414,#0b0b0b); box-shadow:0 0 40px rgba(255,34,51,.14), 0 20px 50px rgba(0,0,0,.5); }
.movie__video{ width:100%; height:100%; object-fit:cover; display:block; background:#000; }
.movie__play{ position:absolute; inset:0; display:flex; align-items:center; justify-content:center; background:radial-gradient(circle at 50% 50%, rgba(10,10,10,.25), rgba(10,10,10,.66)); border:none; transition:background .25s; }
.movie__play:hover{ background:radial-gradient(circle at 50% 50%, rgba(10,10,10,.1), rgba(10,10,10,.55)); }
.movie__play-ico{ width:82px; height:82px; border-radius:50%; display:grid; place-items:center; position:relative; background:var(--grad-fire); box-shadow:0 10px 26px rgba(0,0,0,.5); }
.movie__play-ico::before{ content:""; width:0; height:0; margin-left:6px; border-style:solid; border-width:16px 0 16px 26px; border-color:transparent transparent transparent #fff; }
.movie__frame.is-playing .movie__play{ display:none; }
.movie__ph{ position:absolute; inset:0; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:6px; text-align:center; padding:14px; color:#7f7f7f; font-size:12px; font-weight:700; border:1.5px dashed rgba(255,255,255,.14); border-radius:inherit; background:repeating-linear-gradient(45deg, rgba(255,255,255,.02) 0 10px, transparent 10px 20px); }
.movie__ph .photo__ico{ font-size:30px; }
.movie__ph code{ font-family:ui-monospace,Menlo,Consolas,monospace; font-size:10.5px; color:var(--red-soft); background:rgba(255,34,51,.1); padding:2px 8px; border-radius:5px; }
.movie__frame.has-video .movie__ph{ display:none; }
.movie__frame.is-missing .movie__play{ display:none; }
.movie__frame:not(.has-video):not(.is-missing) .movie__ph{ display:none; }

/* =========================================================
   QUICK / ENTRY form
   ========================================================= */
.quick{ background:linear-gradient(180deg,#0c0c0c,var(--bg)); }
.quick__title{ font-size:clamp(20px,5.6vw,30px); font-weight:900; line-height:1.35; margin-bottom:22px; text-align:center; }
.quick__badge{ display:inline-block; font-size:.6em; background:var(--red); color:#fff; padding:2px 10px; border-radius:6px; margin-right:8px; vertical-align:middle; box-shadow:var(--glow-red); }

.seat-meter{ background:var(--bg-2); border:1px solid rgba(255,34,51,.35); border-radius:var(--radius); padding:16px 18px; margin-bottom:26px; box-shadow:0 0 24px rgba(255,34,51,.1); }
.seat-meter__head{ display:flex; justify-content:space-between; align-items:baseline; gap:10px; margin-bottom:10px; }
.seat-meter__label{ font-weight:900; font-size:13.5px; color:#ffd0d5; }
.seat-meter__count{ font-size:13px; color:var(--text-dim); }
.seat-meter__count b{ font-family:var(--ff-dis); font-size:22px; color:var(--red-soft); text-shadow:var(--glow-red); margin-right:2px; }
.seat-meter__bar{ height:12px; border-radius:999px; background:#000; overflow:hidden; border:1px solid var(--line); }
.seat-meter__fill{ display:block; height:100%; width:var(--pct); border-radius:999px; background:linear-gradient(90deg,var(--red-deep),var(--red) 55%,var(--ember)); transition:width 1.4s cubic-bezier(.2,.8,.2,1); }
@keyframes meterShift{ 0%{background-position:0 0} 100%{background-position:200% 0} }
.seat-meter__note{ margin-top:10px; font-size:11.5px; color:var(--text-dim); }

.entry-form{ background:var(--bg-2); border:1px solid var(--line); border-radius:var(--radius); padding:24px 22px 28px; }
.entry-form__grid{ display:grid; gap:0 18px; }
@media (min-width:640px){ .entry-form__grid{ grid-template-columns:1fr 1fr; } .field--full{ grid-column:1 / -1; } }
.field{ margin-bottom:18px; border:0; padding:0; }
.field > label, .field legend{ display:block; font-weight:700; font-size:13.5px; margin-bottom:7px; color:#eaeaea; }
.req{ display:inline-block; font-size:10.5px; font-weight:900; color:#fff; background:var(--red); padding:1px 7px; border-radius:4px; margin-left:6px; vertical-align:1px; }
.req--soft{ background:var(--bg-3); color:var(--text-dim); }
.field input[type=text], .field input[type=email], .field input[type=tel]{ width:100%; padding:14px 15px; font-size:16px; color:var(--text); background:#0d0d0d; border:1.5px solid var(--line); border-radius:6px; transition:border-color .2s, box-shadow .2s; }
.field input::placeholder{ color:#5f5f5f; }
.field input:focus{ outline:none; border-color:var(--red); box-shadow:var(--glow-red); }
.field input.is-error{ border-color:var(--red); box-shadow:0 0 0 2px rgba(255,34,51,.25); }
.field select{ width:100%; padding:14px 15px; font-size:16px; color:var(--text); background:#0d0d0d; border:1.5px solid var(--line); border-radius:6px; transition:border-color .2s, box-shadow .2s;
  appearance:none; -webkit-appearance:none; cursor:pointer;
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'><path d='M1 1l5 5 5-5' stroke='%23ff5a68' stroke-width='2' fill='none' stroke-linecap='round'/></svg>");
  background-repeat:no-repeat; background-position:right 15px center; padding-right:38px; }
.field select:focus{ outline:none; border-color:var(--red); box-shadow:var(--glow-red); }
.field select.is-error{ border-color:var(--red); box-shadow:0 0 0 2px rgba(255,34,51,.25); }
.field select:invalid{ color:#5f5f5f; }
.err{ font-size:11.5px; color:var(--red-soft); margin-top:5px; }
.err:empty{ display:none; }
.field--check legend{ margin-bottom:11px; }
/* 参加目的：タップしやすいボタン（チップ）化 */
.field--check .check{ display:inline-block; margin:0 8px 8px 0; cursor:pointer; }
.field--check .check input{ position:absolute; opacity:0; width:0; height:0; margin:0; }
.field--check .check span{ display:inline-flex; align-items:center; gap:6px; padding:11px 16px; font-weight:600; font-size:13.5px; color:#cfcfcf; background:#0d0d0d; border:1.5px solid var(--line); border-radius:999px; transition:color .18s, border-color .18s, background .18s, box-shadow .18s; }
.field--check .check span::before{ content:"＋"; color:var(--text-dim); font-weight:900; }
.field--check .check:hover span{ color:#fff; border-color:var(--red-soft); }
.field--check .check input:checked + span{ color:#fff; background:rgba(255,34,51,.16); border-color:transparent; box-shadow:inset 0 0 0 1.6px var(--red); }
.field--check .check input:checked + span::before{ content:"✓"; color:var(--red-soft); }
.field--check .check input:focus-visible + span{ outline:2px solid var(--red-soft); outline-offset:2px; }
/* 入力補助：正しく入力できた欄に緑のふち（進捗が見える） */
.field input:valid:not(:placeholder-shown){ border-color:rgba(46,204,113,.6); }
.field select:valid{ border-color:rgba(46,204,113,.6); }
.agree input{ width:20px; height:20px; accent-color:var(--red); flex:none; }
.agree{ display:flex; align-items:center; gap:11px; margin:6px 0 20px; font-size:13.5px; }
.agree a{ color:var(--red-soft); text-decoration:underline; }
.entry-form__privacy{ margin-top:14px; font-size:11.5px; color:var(--text-dim); text-align:center; }
.entry-form__privacy a{ color:var(--red-soft); text-decoration:underline; }

/* =========================================================
   INTRODUCTION
   ========================================================= */
.intro{ background:#0c0c0c; text-align:center; }
.intro__q{ font-size:clamp(20px,5.6vw,32px); font-weight:900; line-height:1.4; margin-bottom:22px; }
/* 手書き（筆文字）：スクロールで行ごとに書き写される */
.handwrite{ font-family:var(--ff-jp); font-weight:900; color:var(--red); font-size:min(4.3vw, 56px); line-height:1.5; letter-spacing:.02em; text-align:center; max-width:none; margin:10px auto 30px; }
.handwrite .hw-a, .handwrite .hw-b{ display:block; white-space:nowrap; }
/* スクロールで全体が浮き出るアニメ（なぞりから変更） */
.handwrite[data-fade]{ opacity:0; transform:translateY(30px); filter:blur(9px); transition:opacity 1.1s ease, transform 1.1s ease, filter 1.1s ease; }
.handwrite[data-fade].is-in{ opacity:1; transform:none; filter:none; }
.intro .sec-head{ text-align:center; }
.intro__lead{ color:#d2d2d2; font-size:clamp(14px,4vw,17px); margin-bottom:40px; }
.intro__lead b{ color:var(--red-soft); }
.intro__defs{ display:grid; gap:14px; margin-bottom:44px; text-align:left; }
@media (min-width:720px){ .intro__defs{ grid-template-columns:repeat(3,1fr); } }
.intro__def{ background:var(--bg-2); border:1px solid var(--line); border-top:3px solid var(--red); border-radius:14px; padding:22px 20px; position:relative; }
.intro__num{ font-family:var(--ff-dis); font-size:26px; color:var(--red); opacity:.6; }
.intro__def b{ display:block; font-size:clamp(16px,4.4vw,20px); font-weight:900; margin:4px 0 6px; }
.intro__def p{ color:var(--text-dim); font-size:13.5px; }
.intro__body{ color:#d2d2d2; font-size:clamp(14px,4vw,17px); margin-bottom:30px; }
.intro__body b{ color:#fff; }
/* メッセージ用の大きな空欄（01/02/03の枠デザインを流用） */
.intro__msg{ background:var(--bg-2); border:1px solid var(--line); border-top:3px solid var(--red); border-radius:14px; padding:clamp(28px,6vw,48px) clamp(22px,5vw,44px); text-align:left; margin:0 0 34px; }
.intro__msg p{ color:#dcdcdc; font-size:clamp(14px,3.9vw,17px); line-height:2.05; margin:0 0 20px; }
.intro__msg p:last-child{ margin-bottom:0; }
.intro__msg strong{ display:inline-block; margin-top:6px; color:var(--red); font-weight:900; font-size:1.08em; }
/* 筆文字：スクロールで書き写される信条 */
.intro__cry{ font-family:var(--ff-jp); font-weight:900; font-size:clamp(22px,6.6vw,60px); letter-spacing:.06em; white-space:nowrap; margin-bottom:16px; color:var(--red); display:inline-block; position:relative; }
.intro__cry[data-write]{ clip-path:inset(0 calc((1 - var(--p,0)) * 100%) -0.2em 0); }
.intro__cry[data-write]::after{ content:""; position:absolute; top:6%; bottom:6%; width:3px; background:var(--red); left:calc(var(--p,0) * 100%); box-shadow:0 0 10px rgba(255,34,51,.7); opacity:0; transition:opacity .2s; }
.intro__cry[data-write].is-writing::after{ opacity:.85; }
.intro__fire{ font-weight:900; font-size:clamp(16px,4.6vw,22px); }
.intro__fire[data-fade]{ opacity:0; transform:translateY(12px); transition:opacity .7s ease, transform .7s ease; }
.intro__fire[data-fade].is-in{ opacity:1; transform:none; }

/* =========================================================
   CONTENTS (cards)
   ========================================================= */
.cards{ display:grid; gap:20px; }
@media (min-width:860px){
  .cards{ grid-template-columns:repeat(3,1fr); align-items:stretch; }
  .card--full{ grid-column:1 / -1; display:flex; align-items:stretch; }
  .card--full .photo--card{ width:42%; flex:none; aspect-ratio:auto; }
  .card--full .card__body{ flex:1; padding:28px 32px; display:flex; flex-direction:column; justify-content:center; }
  .card .steps{ display:none; }
}
.card{ position:relative; background:var(--bg-2); border:1px solid var(--line); border-radius:10px; overflow:hidden; transition:transform .2s, border-color .2s, box-shadow .2s; }
.card:hover{ transform:translateY(-4px); border-color:rgba(255,34,51,.42); box-shadow:0 12px 40px rgba(0,0,0,.5), 0 0 24px rgba(255,34,51,.15); }
.card .photo--card{ aspect-ratio:16/9; }
.card__body{ padding:26px 24px 28px; position:relative; }
.card__no{ position:absolute; top:-26px; right:20px; font-family:var(--ff-dis); font-size:52px; color:var(--red); opacity:.22; }
.card__title{ font-size:clamp(19px,5vw,26px); font-weight:900; margin-bottom:12px; }
.card p{ color:#cfcfcf; font-size:14.5px; }
.card b{ color:var(--red-soft); }
.steps{ margin-top:18px; display:grid; gap:12px; }
.steps li{ background:#0d0d0d; border:1px solid var(--line); border-left:3px solid var(--red); border-radius:10px; padding:14px 16px; font-size:14px; color:#cfcfcf; }
.steps b{ display:block; color:#fff; margin-bottom:3px; font-size:15px; }

/* =========================================================
   CONTENTS (editorial / program blocks)
   ========================================================= */
.progs{ display:grid; grid-template-columns:1fr; gap:40px; }
@media (min-width:760px){ .progs{ grid-template-columns:1fr 1fr; gap:48px 32px; } }
.prog{ display:flex; flex-direction:column; }
.prog .photo--prog{ width:100%; aspect-ratio:16/9; border-radius:12px; border:1px solid var(--line); margin-bottom:18px; }
.prog__body{ display:flex; flex-direction:column; }
.prog__time{ font-family:var(--ff-num); font-weight:600; letter-spacing:.06em; font-size:15px; color:var(--red-soft); margin-bottom:8px; }
.prog__title{ font-size:clamp(22px,4.4vw,28px); font-weight:900; line-height:1.3; margin-bottom:12px; }
.prog__hook{ font-size:clamp(15px,3.4vw,17px); font-weight:900; color:#fff; line-height:1.65; margin-bottom:12px; padding-left:12px; border-left:3px solid var(--red); }
.prog__desc{ font-size:14px; color:#cfcfcf; line-height:1.9; }
.prog__desc b{ color:var(--red-soft); }

/* =========================================================
   SPEAKERS
   ========================================================= */
.speakers{ background:#0c0c0c; }
.speakers__grid{ display:grid; gap:14px; grid-template-columns:repeat(3,1fr); align-items:start; }
.speakers__group{ grid-column:1 / -1; font-weight:900; font-size:16px; color:#fff; border-left:3px solid var(--red); padding-left:12px; margin:20px 0 2px; }
.speaker{ background:var(--bg-2); border:1px solid var(--line); border-radius:16px; overflow:hidden; }
.speaker .photo--portrait{ aspect-ratio:1; border-radius:0; border:none; }
.speaker--main{ grid-column:1 / -1; display:flex; flex-direction:row; }
.speaker--main .photo--portrait{ width:40%; max-width:300px; flex:none; aspect-ratio:auto; }
@media (max-width:520px){
  .speaker--coming .speaker__body{ padding:10px 9px 13px; }
  .speaker--coming .speaker__role{ font-size:9.5px; padding:2px 7px; margin-bottom:7px; }
  .speaker--coming .speaker__name{ font-size:14px; }
  .speaker--coming .speaker__org{ font-size:11px; }
}
.speaker__body{ padding:16px 16px 20px; }
.speaker__role{ display:inline-block; font-size:10.5px; font-weight:900; color:#fff; background:var(--red); padding:2px 10px; border-radius:5px; margin-bottom:10px; box-shadow:var(--glow-red); }
.speaker__role--soon{ background:var(--bg-3); color:var(--text-dim); box-shadow:none; border:1px solid var(--line); }
.speaker__name{ font-size:clamp(17px,4.6vw,22px); font-weight:900; margin-bottom:4px; }
.speaker__name small{ font-size:.6em; color:var(--text-dim); font-weight:700; margin-left:3px; }
.speaker__org{ font-size:12.5px; color:var(--text-dim); margin-bottom:10px; }
.speaker__desc{ font-size:13px; color:#c4c4c4; }
.speaker__desc--ph{ color:var(--text-dim); font-size:12.5px; margin-top:4px; }
@keyframes speakerPhotoFade{ from{ opacity:.35; } to{ opacity:1; } }
/* プロフィール開閉トグル（PCでは非表示・全文表示のまま） */
.speaker__toggle{ display:none; }
@media (max-width:640px){
  .speaker__toggle{
    display:inline-flex; align-items:center; gap:6px; margin-top:10px;
    font-size:12px; font-weight:700; color:var(--red-soft);
    background:rgba(255,34,51,.08); border:1px solid rgba(255,34,51,.4);
    border-radius:4px; padding:7px 14px;
  }
  .speaker__toggle::after{ content:"▼"; font-size:9px; }
  .speaker.is-open .speaker__toggle::after{ content:"▲"; }
  .speaker__desc{ max-height:0; overflow:hidden; opacity:0; margin-top:0; transform:translateY(-6px);
    transition:max-height .4s ease, opacity .45s ease, margin-top .4s ease, transform .45s ease; }
  .speaker.is-open .speaker__desc{ max-height:1600px; opacity:1; margin-top:12px; transform:translateY(0); }
  /* 横長の長方形カードを1人ずつ縦に並べる（写真は伸ばさず固定） */
  .speakers__grid{ grid-template-columns:1fr; gap:12px; }
  .speaker{ display:flex; flex-direction:row; align-items:flex-start; }
  .speaker .photo--portrait{ width:36%; max-width:150px; flex:none; aspect-ratio:3/4; align-self:flex-start; }
  .speaker--main .photo--portrait{ width:36%; max-width:150px; aspect-ratio:3/4; }
  .speaker__body{ flex:1; padding:14px 15px; display:flex; flex-direction:column; }
  .speaker--coming .speaker__body{ min-height:0; }
  /* 開いたときに写真をふわっとフェード */
  .speaker.is-open .photo--portrait img{ animation:speakerPhotoFade .5s ease; }
}
.speaker--coming .speaker__body{ min-height:132px; }
.photo--guest .photo__ico{ font-family:var(--ff-dis); font-size:30px; color:#555; }
.speaker--coming .speaker__name{ color:#cfcfcf; }

/* =========================================================
   TIMETABLE
   ========================================================= */
.timetable{ background:linear-gradient(180deg,#0c0c0c,var(--bg)); }
.tt{ position:relative; display:grid; gap:12px; }
.tt::before{ content:""; position:absolute; left:84px; top:8px; bottom:8px; width:2px; background:linear-gradient(var(--red),transparent); }
@media (max-width:560px){ .tt::before{ left:66px; } }
.tt__row{ display:grid; grid-template-columns:72px 1fr; gap:28px; align-items:start; position:relative; }
@media (max-width:560px){ .tt__row{ grid-template-columns:56px 1fr; gap:22px; } }
.tt__time{ font-family:var(--ff-num); font-weight:600; font-size:16px; letter-spacing:.02em; color:var(--red-soft); padding-top:15px; text-align:right; }
.tt__body{ background:var(--bg-2); border:1px solid var(--line); border-radius:12px; padding:14px 18px; position:relative; }
.tt__body::before{ content:""; position:absolute; left:-33px; top:20px; width:11px; height:11px; border-radius:50%; background:#3a3a3a; border:2px solid var(--bg); }
@media (max-width:560px){ .tt__body::before{ left:-27px; } }
.tt__row--hot .tt__body{ border-color:rgba(255,34,51,.45); }
.tt__row--hot .tt__body::before{ background:var(--red); box-shadow:var(--glow-red); }
.tt__row--box .tt__body{ border:1.5px solid var(--red); box-shadow:0 0 0 1px rgba(255,34,51,.25) inset; }
.tt__row--box .tt__body::before{ background:var(--red); }
.tt__body b{ font-size:15.5px; font-weight:900; }
.tt__body p{ color:var(--text-dim); font-size:13px; margin-top:3px; }

/* =========================================================
   VOICE / PROOF
   ========================================================= */
.stats{ display:grid; grid-template-columns:repeat(3,1fr); gap:12px; margin-bottom:44px; }
.stat{ text-align:center; background:var(--bg-2); border:1px solid var(--line); border-radius:14px; padding:22px 8px; }
.stat__num{ display:block; font-family:var(--ff-num); font-weight:700; font-size:clamp(30px,9vw,54px); line-height:1; color:var(--red); }
.stat span{ display:block; margin-top:8px; font-size:11px; color:var(--text-dim); line-height:1.5; }
.gallery{ margin-bottom:44px; }
.gallery__label{ font-weight:900; font-size:14px; margin-bottom:14px; }
.gallery__grid{ display:grid; grid-template-columns:repeat(2,1fr); gap:10px; }
@media (min-width:640px){ .gallery__grid{ grid-template-columns:repeat(3,1fr); } }
.photo--gallery{ aspect-ratio:4/3; border-radius:12px; border:1px solid var(--line); }
.photo--gallery .photo__ph{ font-size:11px; }
/* 実績ギャラリー：開催回タブ */
.gallery__tabs{ display:flex; gap:8px; flex-wrap:wrap; margin-bottom:14px; }
.gtab{ font-family:var(--ff-dis); letter-spacing:.05em; font-size:14px; color:var(--text-dim); background:#141414; border:1.5px solid var(--line); border-radius:999px; padding:8px 22px; cursor:pointer; transition:color .18s, border-color .18s, background .18s, box-shadow .18s; }
.gtab:hover{ color:#fff; border-color:var(--red-soft); }
.gtab.is-active{ color:#fff; background:var(--grad-fire); border-color:transparent; box-shadow:var(--glow-red); }
.gallery__panel{ display:none; }
.gallery__panel.is-active{ display:block; animation:gfade .3s ease; }
@keyframes gfade{ from{ opacity:0; transform:translateY(6px); } to{ opacity:1; transform:none; } }

/* PAST SPEAKERS */
.pspk__tabs{ display:flex; gap:8px; flex-wrap:wrap; margin-bottom:18px; }
.pstab{ font-family:var(--ff-dis); letter-spacing:.05em; font-size:14px; color:var(--text-dim); background:#141414; border:1.5px solid var(--line); border-radius:999px; padding:8px 22px; cursor:pointer; transition:color .18s, border-color .18s, background .18s, box-shadow .18s; }
.pstab:hover{ color:#fff; border-color:var(--red-soft); }
.pstab.is-active{ color:#fff; background:var(--grad-fire); border-color:transparent; box-shadow:var(--glow-red); }
.pspk__panel{ display:none; }
.pspk__panel.is-active{ display:block; animation:gfade .3s ease; }
.pspk__grid{ display:grid; grid-template-columns:repeat(2,1fr); gap:12px; }
@media (min-width:640px){ .pspk__grid{ grid-template-columns:repeat(3,1fr); } }
@media (min-width:900px){ .pspk__grid{ grid-template-columns:repeat(4,1fr); } }
.pcard{ background:var(--bg-2); border:1px solid var(--line); border-radius:14px; overflow:hidden; }
.pcard .photo--portrait{ aspect-ratio:1; border-radius:0; border:none; overflow:hidden; }
.pcard .photo--portrait img{ object-position:center top; transform-origin:center center; }
.pcard__body{ padding:12px 13px 15px; }
.pcard__name{ font-size:15px; font-weight:900; color:#fff; line-height:1.3; }
.pcard__org{ font-size:12px; color:var(--text-dim); margin-top:4px; line-height:1.5; }
.pcard__tag{ display:inline-block; font-family:var(--ff-mono); font-size:10px; letter-spacing:.06em; font-weight:700; color:#fff; background:var(--red); padding:2px 8px; border-radius:4px; margin-bottom:7px; }
.pcard__tag--mc{ background:#333; border:1px solid var(--line); }
/* PAST SPEAKERS - フィーチャー（写真＋文言・横並び） */
.pspk__feature{ margin-top:16px; background:var(--bg-2); border:1.5px solid var(--red); border-radius:14px; overflow:hidden; display:flex; flex-direction:column; box-shadow:0 0 0 1px rgba(255,34,51,.25) inset; }
.pspk__feature .photo--feature{ aspect-ratio:16/9; border-radius:0; border:none; }
.pspk__feature-body{ padding:22px 22px 26px; display:flex; flex-direction:column; align-items:flex-start; }
.pspk__feature-body .pcard__tag{ align-self:flex-start; }
.pspk__feature-title{ font-size:clamp(19px,4.6vw,26px); font-weight:900; color:#fff; line-height:1.35; margin:8px 0 10px; }
.pspk__feature-name{ font-size:21px; font-weight:900; color:#fff; margin:8px 0 12px; }
.pspk__feature-desc{ font-size:13.5px; color:#cfcfcf; line-height:1.75; }
@media (min-width:860px){
  .pspk__feature{ flex-direction:row; align-items:stretch; }
  .pspk__feature .photo--feature{ width:46%; flex:none; aspect-ratio:auto; }
  .pspk__feature-body{ flex:1; padding:30px 34px; justify-content:center; }
}
.pcard--special{ border-color:rgba(255,34,51,.55); box-shadow:0 0 0 1px rgba(255,34,51,.25) inset; }
.pspk__note{ font-size:12.5px; color:var(--text-dim); margin-bottom:14px; display:flex; align-items:center; gap:8px; }
.pspk__note-tag{ font-family:var(--ff-mono); font-size:10px; letter-spacing:.06em; font-weight:700; color:#fff; background:var(--red); padding:2px 8px; border-radius:4px; }
.unis{ margin-bottom:44px; }
.unis__label{ font-weight:900; font-size:14px; margin-bottom:14px; }
.unis ul{ display:flex; flex-wrap:wrap; gap:9px; }
.unis li{ font-size:12.5px; padding:7px 13px; border-radius:999px; background:var(--bg-2); border:1px solid var(--line); color:#d6d6d6; }
.unis li:last-child{ color:var(--red-soft); border-color:rgba(255,34,51,.4); }
.voices{ display:grid; gap:16px; }
@media (min-width:720px){ .voices{ grid-template-columns:1fr 1fr; } }
.vc{ background:linear-gradient(160deg,var(--bg-2),#111); border:1px solid var(--line); border-radius:16px; padding:24px; position:relative; }
.vc::before{ content:"“"; position:absolute; top:2px; left:14px; font-family:var(--ff-dis); font-size:60px; color:rgba(255,34,51,.35); }
.vc p{ position:relative; font-size:15px; font-weight:700; color:#fff; margin-bottom:12px; padding-top:14px; }
.vc cite{ font-style:normal; font-size:12.5px; color:var(--text-dim); }

/* =========================================================
   SPONSOR
   ========================================================= */
.sponsor{ background:#0c0c0c; }
.logos{ display:grid; grid-template-columns:repeat(2,1fr); gap:12px; }
@media (min-width:560px){ .logos{ grid-template-columns:repeat(4,1fr); } }
.photo--logo{ aspect-ratio:3/2; border-radius:12px; border:1px solid var(--line); background:#161616; }
.photo--logo img{ object-fit:contain; padding:14%; }
.photo--logo .photo__ph{ border-style:solid; border-color:var(--line); color:#5a5a5a; }
.sponsor__sub{ margin:40px 0 16px; font-weight:900; font-size:16px; color:#fff; border-left:3px solid var(--red); padding-left:12px; }
.pspk__sponsors{ margin-top:44px; border-top:1px solid var(--line); padding-top:8px; }
/* 透過ロゴの下に白背景 */
.photo--logo-white{ background:#fff !important; border-color:rgba(255,255,255,.2); }
.photo--logo-white img{ padding:12%; }
.sponsor__note{ margin-top:16px; text-align:center; font-size:11.5px; color:var(--text-dim); }
.sponsor__note code{ font-family:ui-monospace,Menlo,Consolas,monospace; color:var(--red-soft); }

/* =========================================================
   FAQ
   ========================================================= */
.faq__list{ display:grid; gap:12px; }
.faq__item{ background:var(--bg-2); border:1px solid var(--line); border-radius:12px; overflow:hidden; }
.faq__item summary{ list-style:none; cursor:pointer; padding:18px 52px 18px 20px; font-weight:700; font-size:15px; position:relative; }
.faq__item summary::-webkit-details-marker{ display:none; }
.faq__item summary::before{ content:"Q"; color:var(--red-soft); font-family:var(--ff-dis); margin-right:10px; }
.faq__item summary::after{ content:"＋"; position:absolute; right:20px; top:50%; transform:translateY(-50%); color:var(--red-soft); }
.faq__item[open] summary::after{ content:"－"; }
.faq__a{ padding:16px 20px 20px; color:#cfcfcf; font-size:14.5px; border-top:1px solid var(--line); }
.faq__a::before{ content:"A"; color:#fff; font-family:var(--ff-dis); margin-right:10px; }

/* =========================================================
   OUTLINE
   ========================================================= */
.outline{ background:linear-gradient(180deg,#0c0c0c,var(--bg)); }
.outline__list{ border:1px solid var(--line); border-radius:16px; overflow:hidden; }
.outline__list > div{ display:grid; grid-template-columns:1fr; border-bottom:1px solid var(--line); }
.outline__list > div:last-child{ border-bottom:none; }
@media (min-width:640px){ .outline__list > div{ grid-template-columns:200px 1fr; } }
.outline__list dt{ background:var(--bg-2); padding:16px 20px; font-weight:900; font-size:13.5px; color:#eaeaea; border-right:1px solid var(--line); }
.outline__list dd{ padding:16px 20px; font-size:14.5px; color:#d6d6d6; }

/* =========================================================
   ENTRY
   ========================================================= */
.entry{ background:radial-gradient(120% 100% at 50% 0%, #1c0a0e, var(--bg) 60%); }

/* =========================================================
   Footer / Sticky CTA
   ========================================================= */
.site-footer{ padding:56px 0 100px; background:#080808; border-top:1px solid var(--line); text-align:center; }
.site-footer__logo{ font-family:var(--ff-dis); font-size:26px; letter-spacing:.06em; margin-bottom:16px; }
.site-footer__logo .logo-text span{ color:var(--red-soft); }
.site-footer__logo .logo-img{ height:80px; margin:0 auto; }
.site-footer__info,.site-footer__org{ font-size:13px; color:var(--text-dim); margin-bottom:6px; }
.site-footer__copy{ margin-top:18px; font-size:11px; color:#555; }

.sticky-cta{ position:fixed; left:12px; right:12px; bottom:12px; z-index:50; display:none; align-items:center; justify-content:center; padding:16px; border:none; border-radius:14px; font-weight:900; font-size:16px; color:#fff; background:var(--grad-fire); box-shadow:0 0 24px rgba(255,34,51,.6), 0 8px 30px rgba(0,0,0,.6); animation:pulseBtn 2.6s ease-in-out infinite; }
.sticky-cta.is-visible{ display:flex; }
@media (min-width:768px){ .sticky-cta{ left:auto; right:24px; max-width:340px; } }

/* =========================================================
   Thanks modal
   ========================================================= */
.thanks{ position:fixed; inset:0; z-index:100; display:none; align-items:center; justify-content:center; padding:20px; }
.thanks.is-open{ display:flex; }
.thanks__overlay{ position:absolute; inset:0; background:rgba(0,0,0,.82); backdrop-filter:blur(6px); }
.thanks__panel{ position:relative; z-index:1; width:100%; max-width:440px; max-height:90vh; overflow-y:auto; background:linear-gradient(180deg,#161616,#0b0b0b); border:1px solid rgba(255,34,51,.4); border-radius:22px; padding:34px 26px 30px; text-align:center; box-shadow:0 0 50px rgba(255,34,51,.3); animation:pop .35s cubic-bezier(.2,1.2,.3,1); }
@keyframes pop{ from{ opacity:0; transform:translateY(20px) scale(.96); } to{ opacity:1; transform:none; } }
.thanks__close{ position:absolute; top:12px; right:16px; background:none; border:none; color:var(--text-dim); font-size:28px; line-height:1; }
.thanks__check{ width:66px; height:66px; margin:0 auto 18px; border-radius:50%; display:grid; place-items:center; font-size:34px; color:#fff; background:var(--grad-fire); box-shadow:var(--glow-red); animation:pop .5s .1s both; }
.thanks__title{ font-size:clamp(22px,6vw,28px); font-weight:900; margin-bottom:14px; }
.thanks__lead{ color:#d6d6d6; font-size:14.5px; margin-bottom:24px; }
.thanks__lead b{ color:var(--red-soft); }
.thanks__ticket{ background:#0a0a0a; border:1px dashed rgba(255,255,255,.2); border-radius:16px; padding:22px; margin-bottom:20px; }
.thanks__ticket-label{ font-family:var(--ff-dis); letter-spacing:.16em; color:var(--red-soft); font-size:13px; margin-bottom:14px; }
.thanks__qr{ width:132px; height:132px; margin:0 auto 14px; border-radius:8px; background:#fff; padding:8px; }
.thanks__qr canvas{ width:100%; height:100%; image-rendering:pixelated; }
.thanks__serial{ font-size:13px; color:var(--text-dim); margin-bottom:4px; }
.thanks__serial b{ font-family:var(--ff-dis); letter-spacing:.08em; color:#fff; font-size:17px; }
.thanks__date{ font-size:12.5px; color:var(--red-soft); font-weight:700; }
.thanks__note{ font-size:11.5px; color:var(--text-dim); margin-bottom:20px; line-height:1.6; }
.thanks__ok{ width:100%; }

/* =========================================================
   Reveal + reduced motion
   ========================================================= */
.reveal{ opacity:0; transform:translateY(24px); transition:opacity .7s ease, transform .7s ease; }
.reveal.is-in{ opacity:1; transform:none; }
@media (prefers-reduced-motion:reduce){ *{ animation-duration:.001ms !important; animation-iteration-count:1 !important; transition-duration:.001ms !important; scroll-behavior:auto !important; } }

/* =========================================================
   赤シグナル 背景アニメ（ステージ照明風・全体に薄く／ヒーロー以外）
   ========================================================= */
.fx-signals{ display:none; }   /* スポットライト（ネオン）演出を全て非表示 */
.fx-signals--disabled{ position:fixed; inset:0; z-index:5; pointer-events:none; overflow:hidden; mix-blend-mode:screen; opacity:0; transition:opacity 1.1s ease; }
.fx-signals.is-visible{ opacity:.72; }
.fx-beam{ position:absolute; top:-10%; width:72px; height:150%; transform-origin:top center; background:linear-gradient(to bottom, rgba(255,48,62,.85), rgba(255,48,62,.26) 42%, transparent 72%); filter:blur(13px); border-radius:0 0 50% 50%; will-change:transform,opacity; animation:beamSway 10s ease-in-out infinite, beamPulse 7s ease-in-out infinite; }
.fx-beam:nth-child(1){ left:7%;  --a:-24deg; animation-duration:9s, 6.2s;  animation-delay:0s, 0s; }
.fx-beam:nth-child(2){ left:23%; --a:-10deg; animation-duration:11s, 7.6s; animation-delay:-3s, .9s; }
.fx-beam:nth-child(3){ left:41%; --a:3deg;   animation-duration:13s, 6.8s; animation-delay:-6s, 1.7s; }
.fx-beam:nth-child(4){ left:59%; --a:-5deg;  animation-duration:10s, 8s;   animation-delay:-2s, .5s; }
.fx-beam:nth-child(5){ left:77%; --a:13deg;  animation-duration:12s, 7.1s; animation-delay:-8s, 2.1s; }
.fx-beam:nth-child(6){ left:92%; --a:25deg;  animation-duration:14s, 6.5s; animation-delay:-5s, 1.3s; }
@keyframes beamSway{ 0%,100%{ transform:rotate(var(--a)); } 50%{ transform:rotate(calc(var(--a) + 6deg)); } }
@keyframes beamPulse{ 0%,100%{ opacity:.45; } 50%{ opacity:1; } }
@media (max-width:640px){ .fx-signals.is-visible{ opacity:.6; } .fx-beam{ width:54px; } }

/* =========================================================
   背景デザイン強化（ダイジェスト動画以降）
   ―― 黒ベースに赤みの光のにじみ＋うっすらグリッドで奥行き
   ========================================================= */
main{ position:relative; background:
  radial-gradient(58% 42% at 88% 4%,  rgba(255,34,51,.08), transparent 62%),
  radial-gradient(52% 40% at 5% 30%,  rgba(255,42,58,.055), transparent 60%),
  radial-gradient(60% 46% at 94% 60%, rgba(255,34,51,.07),  transparent 62%),
  radial-gradient(48% 38% at 8% 88%,  rgba(255,42,58,.05),  transparent 60%),
  var(--bg);
}
/* うっすらグリッドのテクスチャ（ヒーローの下から表示） */
main::before{
  content:""; position:absolute; left:0; right:0; top:100svh; bottom:0; z-index:0; pointer-events:none;
  background-image:
    linear-gradient(rgba(255,255,255,.028) 1px, transparent 1px),
    linear-gradient(90deg, rgba(255,255,255,.028) 1px, transparent 1px);
  background-size:48px 48px;
  -webkit-mask-image:linear-gradient(180deg, transparent 0, #000 6%, #000 100%);
          mask-image:linear-gradient(180deg, transparent 0, #000 6%, #000 100%);
}
.hero, .section{ position:relative; z-index:1; }

/* セクションの区切りライン（中央が赤くにじむ細い線） */
.section + .section::before,
.section.movie::before{
  content:""; position:absolute; top:0; left:50%; transform:translateX(-50%);
  width:min(94%, 1140px); height:4px; border-radius:4px;
  background:linear-gradient(90deg, transparent, var(--red) 20%, #ff6a3d 50%, var(--red) 80%, transparent);
  box-shadow:0 0 18px rgba(255,34,51,.7), 0 0 40px rgba(255,34,51,.35);
  opacity:.9;
}

/* 交互のセクション地色でリズム（entry / sponsor は自前背景を尊重） */
.section:nth-of-type(even):not(.entry):not(.sponsor){ background:rgba(255,255,255,.02); }

/* 動画フレーム以降のカード類を少し持ち上げてコントラストUP */
.card, .speaker, .pcard{ background:linear-gradient(180deg, #17171a, #101012); }
.pspk__feature{ background:linear-gradient(180deg, #1a1113, #100c0d); }

/* 説明文をほんの少し明るく（可読性UP・フォントは変更なし） */
.prog__desc, .card p, .speaker__desc{ color:#d7d7d7; }
