@charset "UTF-8";
/* ============================================================
   KTCC公式サイト スタイル
   配色はSNS投稿・スライドと共通（ダークネイビー＋ゴールド）
   ============================================================ */

:root{
  --navy:      #0E1C38;
  --deep:      #0A1428;
  --card:      #17294C;
  --card-soft: #1D3157;
  --gold:      #C9A24B;
  --gold-lt:   #DBBA6A;
  --off:       #F3F1EC;
  --muted:     #A9B6CC;
  --line:      rgba(243,241,236,.14);
  --line-soft: rgba(243,241,236,.08);

  --space:     clamp(72px, 9vw, 128px);
  --radius:    4px;
  --maxw:      1120px;
  --maxw-narrow: 760px;

  --ease: cubic-bezier(.22,.61,.36,1);
}

/* ---------- 土台 ---------- */
*,*::before,*::after{ box-sizing:border-box; }

/* hidden属性を付けた要素は必ず隠す（display指定に負けないように） */
[hidden]{ display:none !important; }

html{ scroll-behavior:smooth; scroll-padding-top:96px; }
@media (prefers-reduced-motion: reduce){
  html{ scroll-behavior:auto; }
  *,*::before,*::after{
    animation-duration:.01ms !important;
    transition-duration:.01ms !important;
  }
}

body{
  margin:0;
  background:var(--navy);
  color:var(--off);
  font-family:"Noto Sans JP","Hiragino Sans","Hiragino Kaku Gothic ProN",sans-serif;
  font-size:16px;
  line-height:1.9;
  font-feature-settings:"palt" 1;
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}

img{ max-width:100%; height:auto; display:block; }
a{ color:var(--gold-lt); }
h1,h2,h3{ text-wrap:balance; }

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

.skip-link{
  position:absolute; left:-9999px; top:0; z-index:200;
  background:var(--gold); color:var(--deep);
  padding:12px 20px; font-weight:700; text-decoration:none;
}
.skip-link:focus{ left:0; }

.container{ width:100%; max-width:var(--maxw); margin-inline:auto; padding-inline:24px; }
/* 読み物セクションは行を短くするが、左端は他のセクションと揃える */
.container--narrow > *{ max-width:var(--maxw-narrow); }

/* ---------- 共通パーツ ---------- */
.eyebrow{
  margin:0 0 14px;
  font-size:12px; font-weight:700;
  letter-spacing:.22em;
  color:var(--gold);
}
.section-title{
  margin:0 0 20px;
  font-size:clamp(24px,3.6vw,38px);
  font-weight:900;
  line-height:1.5;
  letter-spacing:.01em;
}
.section-lead{
  margin:0 0 44px;
  color:var(--muted);
  font-size:15.5px;
  max-width:62ch;
}
.rule{
  display:block; width:42px; height:2px;
  background:var(--gold); margin:0 0 26px;
}
.footnote{
  margin:34px 0 0;
  font-size:13px; line-height:1.85;
  color:var(--muted);
}

.section{ padding-block:var(--space); }
.section--deep{ background:var(--deep); }

.prose p{ margin:0 0 22px; color:var(--muted); font-size:15.5px; }
.prose p:last-child{ margin-bottom:0; }
.prose strong{ color:var(--off); font-weight:700; }

/* ---------- ボタン ---------- */
.btn{
  display:inline-flex; align-items:center; justify-content:center;
  gap:8px;
  padding:16px 34px;
  border-radius:999px;
  font-size:15px; font-weight:700;
  text-decoration:none;
  border:1px solid transparent;
  cursor:pointer;
  transition:background-color .25s var(--ease), color .25s var(--ease),
             border-color .25s var(--ease), transform .18s var(--ease);
}
.btn--gold{ background:var(--gold); color:var(--deep); border-color:var(--gold); }
.btn--gold:hover{ background:var(--gold-lt); border-color:var(--gold-lt); }
.btn--ghost{ background:transparent; color:var(--gold-lt); border-color:rgba(201,162,75,.55); }
.btn--ghost:hover{ border-color:var(--gold); background:rgba(201,162,75,.1); }
.btn:active{ transform:translateY(1px); }
.btn--sm{ padding:11px 22px; font-size:13.5px; }
.btn--full{ width:100%; padding-block:19px; font-size:16px; }
.btn[disabled]{ opacity:.55; cursor:not-allowed; }

/* ============================================================
   残席バー
   ============================================================ */
.notice-bar{
  background:var(--gold);
  color:var(--deep);
  font-size:13.5px; font-weight:700;
  position:relative; z-index:60;
}
.notice-bar__inner{
  max-width:var(--maxw); margin-inline:auto;
  padding:9px 24px;
  display:flex; align-items:center; gap:10px;
  flex-wrap:wrap;
}
.notice-bar__dot{
  width:7px; height:7px; border-radius:50%;
  background:var(--deep);
  animation:pulse 2.4s var(--ease) infinite;
}
@keyframes pulse{ 0%,100%{opacity:1} 50%{opacity:.35} }
.notice-bar__text{ flex:1 1 auto; }
.notice-bar__link{
  color:var(--deep); text-decoration:none;
  border-bottom:1px solid rgba(10,20,40,.4);
  padding-bottom:1px;
}
.notice-bar__link:hover{ border-bottom-color:var(--deep); }

/* ============================================================
   ヘッダー
   ============================================================ */
.site-header{
  position:sticky; top:0; z-index:50;
  background:rgba(14,28,56,.86);
  backdrop-filter:blur(14px);
  -webkit-backdrop-filter:blur(14px);
  border-bottom:1px solid var(--line-soft);
  transition:background-color .3s var(--ease);
}
.site-header.is-scrolled{ background:rgba(10,20,40,.95); }

.site-header__inner{
  max-width:var(--maxw); margin-inline:auto;
  padding:14px 24px;
  display:flex; align-items:center; gap:20px;
}

.brand{
  display:flex; align-items:center; gap:11px;
  text-decoration:none; color:var(--gold);
  margin-right:auto;
}
.brand__text strong{
  display:block; color:var(--gold);
  font-size:19px; font-weight:900; letter-spacing:.18em; line-height:1.2;
}
.brand__text small{
  display:block; color:var(--muted);
  font-size:10px; letter-spacing:.06em; line-height:1.4;
}

.site-nav{ display:none; gap:26px; }
.site-nav a{
  color:var(--off); text-decoration:none;
  font-size:13.5px; font-weight:500;
  position:relative; padding-block:4px;
}
.site-nav a::after{
  content:""; position:absolute; left:0; right:0; bottom:0;
  height:1px; background:var(--gold);
  transform:scaleX(0); transform-origin:left;
  transition:transform .28s var(--ease);
}
.site-nav a:hover::after{ transform:scaleX(1); }

.header-cta{ display:none; }

.menu-btn{
  display:flex; flex-direction:column; justify-content:center; gap:5px;
  width:42px; height:42px; padding:0 9px;
  background:none; border:1px solid var(--line); border-radius:var(--radius);
  cursor:pointer;
}
.menu-btn span{
  display:block; height:1.5px; background:var(--off);
  transition:transform .3s var(--ease), opacity .2s var(--ease);
}
.menu-btn[aria-expanded="true"] span:nth-child(1){ transform:translateY(6.5px) rotate(45deg); }
.menu-btn[aria-expanded="true"] span:nth-child(2){ opacity:0; }
.menu-btn[aria-expanded="true"] span:nth-child(3){ transform:translateY(-6.5px) rotate(-45deg); }

.mobile-menu{
  border-top:1px solid var(--line-soft);
  background:var(--deep);
  padding:20px 24px 28px;
  display:flex; flex-direction:column; gap:4px;
}
.mobile-menu a:not(.btn){
  color:var(--off); text-decoration:none;
  padding:13px 0; font-size:15px;
  border-bottom:1px solid var(--line-soft);
}
.mobile-menu .btn{ margin-top:16px; }

@media (min-width:960px){
  .site-nav{ display:flex; }
  .header-cta{ display:inline-flex; }
  .menu-btn{ display:none; }
  .mobile-menu{ display:none !important; }
}

/* ============================================================
   写真枠（写真がまだ無くても成立するプレースホルダ）
   ============================================================ */
.photo-frame{
  position:relative;
  overflow:hidden;
  background:
    radial-gradient(120% 90% at 78% 12%, rgba(201,162,75,.16), transparent 58%),
    linear-gradient(150deg, var(--deep) 0%, var(--card) 55%, var(--card-soft) 100%);
}
.photo-frame img{
  width:100%; height:100%; object-fit:cover;
  position:relative; z-index:2;
}
/* 写真が無いときに出る、跳躍のシルエット */
.photo-frame.is-empty::after{
  content:"";
  position:absolute; z-index:1;
  left:50%; bottom:-8%;
  width:34%; aspect-ratio:1/2.4;
  transform:translateX(-50%);
  background:linear-gradient(180deg, rgba(169,182,204,.24), rgba(169,182,204,.02));
  border-radius:50% 50% 40% 40% / 34% 34% 12% 12%;
}
/* ヒーローの背面はさらに控えめに */
.photo-frame--hero.is-empty::after{
  width:26%; opacity:.6; bottom:-4%;
}
.photo-frame.is-empty::before{
  content:"";
  position:absolute; inset:0; z-index:1;
  background:
    repeating-linear-gradient(115deg,
      rgba(243,241,236,.028) 0 2px, transparent 2px 9px);
}
/* 実行委員の写真枠は、頭文字を出す */
.photo-frame--portrait{ aspect-ratio:1/1; border-radius:var(--radius); }
.photo-frame--portrait.is-empty::after{
  content:attr(data-initial);
  inset:0; left:0; width:100%; height:100%;
  transform:none; border-radius:0; background:none;
  display:flex; align-items:center; justify-content:center;
  color:var(--gold); font-size:clamp(22px,4vw,30px);
  font-weight:900; letter-spacing:.14em;
}

/* ============================================================
   ヒーロー
   ============================================================ */
.hero{
  position:relative;
  background:var(--deep);
  padding-block:clamp(64px,11vw,120px);
  overflow:hidden;
}
.hero__media{
  position:absolute; inset:0; z-index:0;
}
.hero__media .photo-frame{ position:absolute; inset:0; }
.hero__scrim{
  position:absolute; inset:0; z-index:3;
  background:
    linear-gradient(180deg, rgba(10,20,40,.72) 0%, rgba(10,20,40,.88) 100%);
}
.hero__inner{
  position:relative; z-index:4;
  width:100%; max-width:var(--maxw);
  margin-inline:auto; padding-inline:24px;
}
.hero__eyebrow{
  margin:0 0 16px;
  font-size:11px; font-weight:700;
  letter-spacing:.26em; color:var(--gold);
}
.hero__title{
  margin:0 0 26px;
  font-size:clamp(34px,7.4vw,68px);
  font-weight:900; line-height:1.32;
  letter-spacing:.005em;
}
.hero__title em{ font-style:normal; color:var(--gold-lt); }
.hero__lead{
  margin:0 0 40px;
  color:var(--muted);
  font-size:clamp(15px,1.7vw,17px);
  line-height:2;
}
.hero__facts{
  margin:0 0 40px; padding:24px 0;
  border-block:1px solid var(--line);
  display:flex; flex-wrap:wrap; gap:22px 48px;
}
.hero__facts > div{ display:flex; flex-direction:column; gap:3px; }
.hero__facts dt{
  font-size:11px; font-weight:700;
  letter-spacing:.18em; color:var(--gold);
}
.hero__facts dd{
  margin:0; font-size:17px; font-weight:700;
  display:flex; align-items:baseline; gap:9px;
  flex-wrap:wrap;
  font-variant-numeric:tabular-nums;
}
/* 会場の欄だけは、地図リンクを名前の下に置きたいので横並びをやめる。
   横並びのままだと「埼玉草加店」がバッジに押し出されて名前が分断されて見える */
.hero__facts dd.hero__fact--venue{ display:block; }
.hero__facts .hero__venue{ display:inline; }
.hero__facts dd.hero__fact--venue .note{ margin-left:9px; vertical-align:2px; }
.hero__facts .hero__map{
  display:block; width:fit-content; margin-top:8px;
  font-size:11px; font-weight:700;
  letter-spacing:.04em; white-space:nowrap;
  color:var(--gold); text-decoration:none;
  border:1px solid rgba(201,162,75,.45);
  padding:2px 9px; border-radius:99px;
  transition:background-color .25s var(--ease), border-color .25s var(--ease), color .25s var(--ease);
}
.hero__facts .hero__map:hover,
.hero__facts .hero__map:focus-visible{
  background:rgba(201,162,75,.14);
  border-color:var(--gold);
  color:var(--gold-lt);
}
.hero__facts .note{
  font-size:11px; font-weight:500;
  color:var(--muted); letter-spacing:.04em;
  border:1px solid var(--line);
  padding:2px 8px; border-radius:99px;
}
.hero__actions{ display:flex; flex-wrap:wrap; gap:14px; }
.hero__micro{
  margin:22px 0 0;
  font-size:13px; color:var(--muted);
}

@media (min-width:900px){
  /* 斜めに切り取った写真を右側に置く */
  .hero__media{ left:auto; right:0; width:56%; }
  .hero__media .photo-frame{
    clip-path:polygon(22% 0, 100% 0, 100% 100%, 0 100%);
  }
  .hero__scrim{
    clip-path:polygon(22% 0, 100% 0, 100% 100%, 0 100%);
    background:linear-gradient(100deg,
      var(--deep) 0%, rgba(10,20,40,.92) 26%, rgba(10,20,40,.42) 100%);
  }
  .hero__inner{ max-width:var(--maxw); }
  .hero__title, .hero__lead, .hero__facts, .hero__actions, .hero__micro{ max-width:600px; }
}

/* ============================================================
   問いかけ
   ============================================================ */
.quote-grid{
  display:grid; gap:14px;
  margin:0 0 48px;
}
.quote-grid blockquote{
  margin:0; padding:20px 24px;
  background:var(--card);
  border-left:2px solid var(--gold);
  border-radius:0 var(--radius) var(--radius) 0;
  font-size:15.5px; font-weight:500;
  line-height:1.85;
}
@media (min-width:720px){
  .quote-grid{ grid-template-columns:1fr 1fr; gap:16px; }
}

/* ============================================================
   セッション
   ============================================================ */
.session-list{
  list-style:none; margin:0 0 48px; padding:0;
  display:grid; gap:1px;
  background:var(--line-soft);
  border-block:1px solid var(--line-soft);
}
.session{
  background:var(--deep);
  padding:34px 0;
  display:grid; gap:18px;
  transition:background-color .3s var(--ease);
}
.session:hover{ background:var(--card); }
.session__stage{ display:flex; align-items:flex-start; }
.session__stage span{
  display:inline-flex; align-items:center; justify-content:center;
  min-width:74px; padding:7px 16px;
  border:1px solid var(--gold);
  border-radius:99px;
  color:var(--gold-lt);
  font-size:13px; font-weight:700; letter-spacing:.14em;
}
.session__title{
  margin:0 0 12px;
  font-size:clamp(19px,2.5vw,25px);
  font-weight:700; line-height:1.55;
}
.session__desc{
  margin:0 0 20px;
  color:var(--muted); font-size:15px;
  max-width:60ch;
}
.session__speaker{
  margin:0;
  display:flex; flex-wrap:wrap; align-items:baseline; gap:6px 14px;
}
.session__name{
  font-size:16px; font-weight:700; color:var(--off);
  padding-left:14px; position:relative;
}
.session__name::before{
  content:""; position:absolute; left:0; top:50%;
  transform:translateY(-50%);
  width:8px; height:1px; background:var(--gold);
}
.session__org{ font-size:12.5px; color:var(--muted); }
/* 登壇者がまだ公表できないとき（Coming soon 表示） */
.session__name--tba{ color:var(--gold-lt); letter-spacing:.07em; }
@media (min-width:820px){
  .session{ grid-template-columns:160px 1fr; gap:30px; padding:40px 0; }
}

.highlight-card{
  background:linear-gradient(140deg, var(--card) 0%, var(--card-soft) 100%);
  border:1px solid var(--line);
  border-radius:var(--radius);
  padding:clamp(26px,4vw,42px);
}
.highlight-card__label{
  margin:0 0 10px;
  font-size:11px; font-weight:700; letter-spacing:.2em;
  color:var(--gold);
}
.highlight-card__title{
  margin:0 0 14px;
  font-size:clamp(18px,2.4vw,23px); font-weight:700;
}
.highlight-card p{ margin:0; color:var(--muted); font-size:15px; max-width:62ch; }

/* ============================================================
   タイムライン
   ============================================================ */
.timeline{
  list-style:none; margin:0; padding:0;
  position:relative;
}
.timeline::before{
  content:""; position:absolute;
  left:5px; top:14px; bottom:14px; width:1px;
  background:linear-gradient(180deg,
    var(--gold) 0%, rgba(201,162,75,.35) 40%, rgba(201,162,75,.12) 100%);
}
.timeline li{
  position:relative;
  padding:13px 0 13px 34px;
  display:flex; flex-wrap:wrap; align-items:baseline; gap:6px 20px;
  border-bottom:1px solid var(--line-soft);
}
.timeline li::before{
  content:""; position:absolute; left:0; top:22px;
  width:11px; height:11px; border-radius:50%;
  background:var(--navy); border:1.5px solid rgba(201,162,75,.45);
}
.timeline li.is-main::before{ background:var(--gold); border-color:var(--gold); }
.timeline__time{
  min-width:62px;
  color:var(--gold-lt); font-weight:700;
  font-variant-numeric:tabular-nums;
  font-size:14.5px;
}
.timeline__event{ font-size:15.5px; }
.timeline li.is-main .timeline__event{ font-weight:700; }
.timeline__event small{
  margin-left:10px;
  font-size:11.5px; font-weight:500; color:var(--muted);
  border:1px solid var(--line); border-radius:99px;
  padding:2px 9px;
}

/* ============================================================
   8分野
   ============================================================ */
.field-grid{
  list-style:none; margin:0; padding:0;
  display:grid; gap:12px;
  grid-template-columns:repeat(auto-fill, minmax(150px, 1fr));
}
.field{
  padding:20px 18px;
  border:1px solid var(--line-soft);
  border-radius:var(--radius);
  background:rgba(23,41,76,.42);
  display:flex; flex-direction:column; gap:9px;
  transition:border-color .3s var(--ease), background-color .3s var(--ease);
}
.field:hover{ border-color:var(--line); background:var(--card); }
.field__name{ font-size:15px; font-weight:700; }
.field__tag{
  align-self:flex-start;
  font-size:10.5px; font-weight:700; letter-spacing:.08em;
  color:var(--deep); background:var(--gold);
  padding:3px 9px; border-radius:99px;
}
.field.is-active{ border-color:rgba(201,162,75,.45); background:rgba(201,162,75,.07); }

/* ============================================================
   実行委員長メッセージ
   ============================================================ */
.message-section{ background:var(--deep); }
.message{ display:grid; gap:32px; align-items:center; }
.message__media .photo-frame{
  aspect-ratio:4/3;
  border-radius:var(--radius);
}
.message__quote{
  margin:0 0 24px;
  font-size:clamp(19px,2.7vw,27px);
  font-weight:700; line-height:1.75;
}
.message__quote em{ font-style:normal; color:var(--gold-lt); }
.message__text{ margin:0; color:var(--muted); font-size:15px; max-width:56ch; }
@media (min-width:880px){
  .message{ grid-template-columns:1fr 1.1fr; gap:56px; }
}

/* ============================================================
   実行委員会
   ============================================================ */
.member-grid{
  list-style:none; margin:0; padding:0;
  display:grid; gap:34px;
  grid-template-columns:repeat(auto-fit, minmax(240px, 1fr));
}
.member__role{
  margin:20px 0 6px;
  font-size:11px; font-weight:700; letter-spacing:.18em;
  color:var(--gold);
}
.member__name{ margin:0 0 8px; font-size:20px; font-weight:700; }
.member__org{ margin:0 0 14px; font-size:12.5px; color:var(--muted); line-height:1.8; }
.member__message{
  margin:0; font-size:14.5px;
  padding-top:14px; border-top:1px solid var(--line-soft);
}

/* ============================================================
   よくある質問
   ============================================================ */
.faq-list{ border-top:1px solid var(--line-soft); }
.faq{ border-bottom:1px solid var(--line-soft); }
.faq summary{
  padding:22px 40px 22px 0;
  font-size:16px; font-weight:700;
  cursor:pointer; list-style:none;
  position:relative;
  transition:color .25s var(--ease);
}
.faq summary::-webkit-details-marker{ display:none; }
.faq summary:hover{ color:var(--gold-lt); }
.faq summary::after{
  content:""; position:absolute; right:6px; top:50%;
  width:11px; height:11px;
  border-right:1.5px solid var(--gold);
  border-bottom:1.5px solid var(--gold);
  transform:translateY(-70%) rotate(45deg);
  transition:transform .3s var(--ease);
}
.faq[open] summary::after{ transform:translateY(-30%) rotate(-135deg); }
.faq p{
  margin:0; padding:0 0 26px;
  color:var(--muted); font-size:15px; max-width:64ch;
}
/* 回答文のなかのリンク（地図など） */
.faq p a{
  display:inline-block; margin-top:10px;
  color:var(--gold); text-decoration:underline;
  text-underline-offset:3px;
  transition:color .25s var(--ease);
}
.faq p a:hover,
.faq p a:focus-visible{ color:var(--gold-lt); }

/* ============================================================
   申込フォーム
   ============================================================ */
.apply-section{
  background:
    radial-gradient(90% 70% at 50% 0%, rgba(201,162,75,.09), transparent 62%),
    var(--navy);
  scroll-margin-top:80px;
}
.form{ display:grid; gap:26px; margin-top:12px; max-width:600px; }
.form__row{ display:flex; flex-direction:column; gap:9px; }
.form__row--fieldset{ border:0; margin:0; padding:0; }

.field-label{
  font-size:13.5px; font-weight:700;
  display:flex; align-items:center; gap:10px;
  padding:0;
}
.req{
  font-size:10.5px; font-weight:700; letter-spacing:.08em;
  color:var(--deep); background:var(--gold);
  padding:2px 8px; border-radius:99px;
}
.field-help{ margin:0; font-size:12.5px; color:var(--muted); line-height:1.75; }

input[type="text"],
input[type="email"],
input[type="tel"],
select,
textarea{
  width:100%;
  padding:14px 16px;
  background:var(--card);
  border:1px solid var(--line);
  border-radius:var(--radius);
  color:var(--off);
  font-family:inherit; font-size:15.5px; line-height:1.7;
  transition:border-color .25s var(--ease), background-color .25s var(--ease);
}
input::placeholder, textarea::placeholder{ color:rgba(169,182,204,.5); }
input:focus, select:focus, textarea:focus{
  border-color:var(--gold);
  background:var(--card-soft);
}
input[aria-invalid="true"]{ border-color:#e0745f; }
select{
  appearance:none;
  background-image:linear-gradient(45deg,transparent 50%,var(--gold) 50%),
                   linear-gradient(135deg,var(--gold) 50%,transparent 50%);
  background-position:calc(100% - 21px) 50%, calc(100% - 15px) 50%;
  background-size:6px 6px, 6px 6px;
  background-repeat:no-repeat;
  padding-right:44px;
}
select option{ background:var(--card); color:var(--off); }
textarea{ resize:vertical; min-height:112px; }

.choice{
  display:inline-flex; align-items:center; gap:9px;
  margin-right:22px; padding:7px 0;
  cursor:pointer; font-size:15px;
}
.choice input{ width:17px; height:17px; accent-color:var(--gold); }

.hp{
  position:absolute; left:-9999px;
  width:1px; height:1px; overflow:hidden;
}

/* 当日の収録についての同意欄。他の入力項目と区別がつくよう枠で囲む */
.consent{
  border:1px solid var(--line);
  border-radius:var(--radius);
  padding:20px 22px;
  background:rgba(243,241,236,.02);
}
.consent__text{
  margin:10px 0 4px;
  font-size:13px; line-height:1.9; color:var(--muted);
}
.consent .choice{ font-size:14px; font-weight:700; }

.form__privacy{
  margin:0; padding:16px 18px;
  background:rgba(23,41,76,.55);
  border:1px solid var(--line-soft);
  border-radius:var(--radius);
  font-size:12.5px; color:var(--muted); line-height:1.85;
}
.form__status{
  margin:0; min-height:1.9em;
  font-size:14px; font-weight:700;
  color:#ef8a74;
}
.form__status.is-info{ color:var(--muted); font-weight:500; }

.form-done{
  margin-top:20px; padding:clamp(30px,5vw,52px);
  background:var(--card);
  border:1px solid rgba(201,162,75,.4);
  border-radius:var(--radius);
  text-align:center;
}
.form-done__mark{
  margin:0 auto 20px;
  width:56px; height:56px; border-radius:50%;
  background:var(--gold); color:var(--deep);
  font-size:27px; font-weight:900;
  display:flex; align-items:center; justify-content:center;
}
.form-done h3{ margin:0 0 16px; font-size:21px; font-weight:700; }
.form-done p{ margin:0 0 14px; color:var(--muted); font-size:14.5px; }
.form-done__next{
  margin:22px 0 0 !important;
  padding-top:22px; border-top:1px solid var(--line-soft);
}

/* ============================================================
   協賛・協力
   ※ ロゴは各団体のブランドカラーなので、ページのネイビー調には寄せず、
     白いカードに載せて本来の色のまま見せている
   ============================================================ */
.sponsor-grid{
  list-style:none; margin:44px 0 0; padding:0;
  display:grid; gap:26px;
  grid-template-columns:1fr;
}
.sponsor__frame{
  background:#fff;
  border-radius:var(--radius);
  aspect-ratio:15 / 8;
  display:flex; align-items:center; justify-content:center;
  overflow:hidden;
}
.sponsor__frame img{
  width:100%; height:100%;
  object-fit:contain;
  display:block;
}
/* ロゴがまだ無い団体の枠 */
.sponsor__frame--empty{
  background:rgba(243,241,236,.03);
  border:1px dashed rgba(243,241,236,.26);
}
.sponsor__frame--empty span{
  font-size:12px; letter-spacing:.14em; color:var(--muted);
}
/* 「会場提供」「協賛」などの肩書き。2026-09-17 に伊藤さんの指示でHTMLからは外したが、
   また付けたくなったときのために書式だけ残してある */
.sponsor__role{
  margin:16px 0 0;
  font-size:11px; letter-spacing:.16em; color:var(--gold);
}
.sponsor__name{
  margin:6px 0 0;
  font-size:14px; line-height:1.6; color:var(--off);
}
/* 肩書きを置かない場合は、ロゴのすぐ下に団体名がくるので余白を広めに取る */
.sponsor__frame + .sponsor__name{ margin-top:16px; }
.sponsor-note{
  margin:38px 0 0;
  font-size:12.5px; line-height:1.9; color:var(--muted);
}
@media (min-width:700px){
  .sponsor-grid{ grid-template-columns:repeat(2, minmax(0, 1fr)); gap:32px; }
}
@media (min-width:1000px){
  /* 3枠以上になっても、1枠が大きくなりすぎないようにする */
  .sponsor-grid{ grid-template-columns:repeat(auto-fit, minmax(280px, 380px)); }
}

/* ============================================================
   フッター
   ============================================================ */
.site-footer{
  background:var(--deep);
  border-top:1px solid var(--line-soft);
  padding-block:56px 34px;
}
.site-footer__top{
  display:flex; flex-wrap:wrap; gap:34px;
  justify-content:space-between;
  padding-bottom:30px; border-bottom:1px solid var(--line-soft);
}
.site-footer__brand{
  margin:0 0 4px;
  color:var(--gold); font-size:23px; font-weight:900; letter-spacing:.2em;
}
.site-footer__name{ margin:0; font-size:12.5px; color:var(--muted); }
.site-footer__nav{ display:flex; flex-wrap:wrap; gap:12px 26px; align-items:flex-start; }
.site-footer__nav a{
  color:var(--off); text-decoration:none; font-size:13.5px;
}
.site-footer__nav a:hover{ color:var(--gold-lt); }
.site-footer__bottom{
  padding-top:26px;
  display:flex; flex-wrap:wrap; gap:10px 30px;
  justify-content:space-between;
  font-size:12.5px; color:var(--muted);
}
.site-footer__bottom p{ margin:0; }

/* ============================================================
   スクロール時のフェードイン
   ============================================================ */
.reveal{
  opacity:0; transform:translateY(20px);
  transition:opacity .8s var(--ease), transform .8s var(--ease);
}
.reveal.is-visible{ opacity:1; transform:none; }
@media (prefers-reduced-motion: reduce){
  .reveal{ opacity:1; transform:none; }
}
