/* ============================================================
 * sponsor-wall.css
 * スポンサー一覧をランク別の「枠 (スロット)」で構成する。
 * 1枚画像 (img_sponsors.webp) の代替。ロゴは1社1スロットの <img> で埋める。
 *
 * 構造:
 *   .sponsor-wall
 *     .sponsor-tier
 *       .sponsor-tier__head   … ランク名のピル (紫グラデ)
 *       .sponsor-tier__panel  … 白パネル
 *         .sponsor-grid (--diamond / --platinum / --gold / --silver)
 *           .sponsor-slot            … ロゴ入り枠
 *           .sponsor-slot--empty     … 未確定の募集中枠
 * ============================================================ */

.sponsor-wall {
  display: flex;
  flex-direction: column;
  gap: 56px;
  margin-top: 24px;
}

.sponsor-tier {
  text-align: center;
}

/* ランク名のバッジ (白パネル上端に重ねる) */
.sponsor-tier__head {
  display: inline-block;
  position: relative;
  z-index: 2;
  margin: 0 auto -26px;
  padding: 13px 48px;
  font-size: 19px;
  font-weight: 800;
  letter-spacing: 0.08em;
  color: #fff;
  background: linear-gradient(135deg, #271858 0%, #4f33a6 52%, #7d5dd0 100%);
  border-radius: 6px;
  box-shadow: 0 2px 8px rgba(39, 24, 88, 0.22);
}

/* ============================================================
 * ランク別カラー (KV キューブの色幅で階級を区別)
 * ダイヤ=シアン / プラチナ=紫 / ゴールド=金 / シルバー=銀 / ロゴ=ピンク
 * いずれも白文字が乗る濃さでグラデを設定。
 * ============================================================ */
.sponsor-tier--diamond .sponsor-tier__head {
  background: linear-gradient(135deg, #d6388f 0%, #ff61c7 100%);
  box-shadow: 0 2px 8px rgba(214, 56, 143, 0.22);
}
.sponsor-tier--platinum .sponsor-tier__head {
  background: linear-gradient(135deg, #0098c8 0%, #2ec5e0 55%, #2ee0ff 100%);
  box-shadow: 0 2px 8px rgba(0, 152, 200, 0.22);
}
.sponsor-tier--gold .sponsor-tier__head {
  background: linear-gradient(135deg, #e8920c 0%, #ffab2e 100%);
  box-shadow: 0 2px 8px rgba(232, 146, 12, 0.22);
}
.sponsor-tier--silver .sponsor-tier__head {
  background: linear-gradient(135deg, #6b7a90 0%, #9aa8c0 100%);
  box-shadow: 0 2px 8px rgba(107, 122, 144, 0.22);
}
.sponsor-tier--logo .sponsor-tier__head {
  background: linear-gradient(135deg, #5b3fd9 0%, #7b61ff 100%);
  box-shadow: 0 2px 8px rgba(91, 63, 217, 0.22);
}
.sponsor-tier--attraction .sponsor-tier__head {
  background: linear-gradient(135deg, #167a48 0%, #28b872 100%);
  box-shadow: 0 2px 8px rgba(22, 122, 72, 0.22);
}
.sponsor-tier--media .sponsor-tier__head {
  background: linear-gradient(135deg, #b52d2d 0%, #e05252 100%);
  box-shadow: 0 2px 8px rgba(181, 45, 45, 0.22);
}
.sponsor-tier--event_partner .sponsor-tier__head {
  background: linear-gradient(135deg, #1d3d5c 0%, #3a6d9a 100%);
  box-shadow: 0 2px 8px rgba(29, 61, 92, 0.22);
}

/* ============================================================
 * 白ロゴパネルにランクカラーの陰影を付け、白系背景から際立たせる
 * ============================================================ */
.sponsor-tier--diamond .sponsor-tier__panel {
  filter: drop-shadow(0 14px 32px rgba(214, 56, 143, 0.50)) !important;
}
.sponsor-tier--platinum .sponsor-tier__panel {
  filter: drop-shadow(0 12px 26px rgba(0, 152, 200, 0.48)) !important;
}
.sponsor-tier--gold .sponsor-tier__panel {
  filter: drop-shadow(0 12px 26px rgba(232, 146, 12, 0.45)) !important;
}
.sponsor-tier--silver .sponsor-tier__panel {
  filter: drop-shadow(0 12px 26px rgba(107, 122, 144, 0.50)) !important;
}
.sponsor-tier--logo .sponsor-tier__panel {
  filter: drop-shadow(0 12px 26px rgba(123, 97, 255, 0.45)) !important;
}
.sponsor-tier--attraction .sponsor-tier__panel {
  filter: drop-shadow(0 12px 26px rgba(22, 122, 72, 0.40)) !important;
}
.sponsor-tier--media .sponsor-tier__panel {
  filter: drop-shadow(0 12px 26px rgba(181, 45, 45, 0.40)) !important;
}
.sponsor-tier--event_partner .sponsor-tier__panel {
  filter: drop-shadow(0 12px 26px rgba(29, 61, 92, 0.40)) !important;
}

/* ランク見出しの左に宝石アイコン (白の線画・カット面入り、ピルの色で差別化) */
.sponsor-tier__head::before {
  content: "";
  display: inline-block;
  width: 1.2em;
  height: 1.2em;
  margin-right: 0.5em;
  vertical-align: -0.22em;
  background: url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='%23ffffff'%20stroke-width='1.4'%20stroke-linejoin='round'%20stroke-linecap='round'%3E%3Cpath%20d='M3%209L7%203H17L21%209L12%2021Z%20M3%209H21%20M7%203L9.5%209L12%2021%20M17%203L14.5%209L12%2021'/%3E%3C/svg%3E") center / contain no-repeat;
}

/* 白パネル: 四隅を斜めにカットした元イメージ風の形状 */
.sponsor-tier__panel {
  --chamfer: 26px;
  background: #fff;
  padding: 56px 44px 44px;
  clip-path: polygon(
    var(--chamfer) 0, calc(100% - var(--chamfer)) 0,
    100% var(--chamfer), 100% calc(100% - var(--chamfer)),
    calc(100% - var(--chamfer)) 100%, var(--chamfer) 100%,
    0 calc(100% - var(--chamfer)), 0 var(--chamfer)
  );
  filter: drop-shadow(0 12px 26px rgba(40, 30, 90, 0.22));
}

/* ダイヤモンドは最高単価ランク: パネルを大きく、角カットと影も強めに */
.sponsor-tier--diamond .sponsor-tier__panel {
  --chamfer: 34px;
  padding: 78px 32px 60px;
  filter: drop-shadow(0 18px 38px rgba(40, 30, 90, 0.32));
}

/* ロゴグリッド */
.sponsor-grid {
  display: grid;
  gap: 36px 42px;
  align-items: center;
  justify-items: center;
  max-width: 100%;
  margin: 0 auto;
}

.sponsor-grid--diamond  { display: flex; flex-wrap: wrap; justify-content: center; gap: 36px 50px; max-width: 100%; }
.sponsor-grid--platinum { display: flex; flex-wrap: wrap; justify-content: center; gap: 26px 42px; }
.sponsor-grid--platinum .sponsor-slot { flex: 0 0 calc((100% - 64px) / 3); min-width: 0; padding: 4px 8px; }
.sponsor-grid--gold,
.sponsor-grid--silver,
.sponsor-grid--attraction    { grid-template-columns: repeat(5, minmax(0, 1fr)); }
/* logo ランクは silver の下位。スロット幅を silver と同一 (パネル幅/5・同 gap) にして
   狭幅でも silver と同率で縮ませ、上位ランクより大きく見せない (木全 2026-07-09)。
   flex-basis は item 数に依らず (100%-4gap)/5 = silver 1枠幅。2社でも justify-center で中央寄せ。 */
.sponsor-grid--logo          { display: flex; flex-wrap: wrap; justify-content: center; gap: 36px 42px; }
.sponsor-grid--logo .sponsor-slot { flex: 0 0 calc((100% - 168px) / 5); width: auto; min-width: 0; }
.sponsor-grid--event_partner { display: flex; flex-wrap: wrap; justify-content: center; gap: 32px 36px; }

/* スロット (枠) */
.sponsor-slot {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  box-sizing: border-box;
  padding: 12px;
  border-radius: 6px;
  background: rgba(0, 20, 76, 0.025);
}

.sponsor-slot img {
  width: 100%;
  height: auto;
  max-height: 64px;
  object-fit: contain;
}

/* ランク別のロゴサイズ (ダイヤは大きく、下位は小さく。序列は下記ランク別 A で維持) */
.sponsor-grid--diamond  .sponsor-slot { flex: 0 1 330px; max-width: 100%; min-height: 92px; padding: 4px; }
/* 全ランクのロゴ optical size 正規化 (木全指示 2026-07-02)
   ロゴ画像はファイル内の透明余白量がまちまちで、img 枠の高さを揃えても見た目は揃わない。
   そこで canvas で余白を除いた実絵柄(ink)領域を実測し、「ink 等面積 + クランプ」で
   ロゴごとの枠高さ --lgh を算出して指定する (Codex GPT-5.5 クロス検証済・合意パラメータ:
   基準ink面積・クランプはランク別 (スロット幅比で序列を維持):
     gold/silver/logo/attraction/event_partner: A=3600px² / ink高さ18〜42 / ink幅≤132 / box幅≤165
     platinum (スロット247px): A=8100px² / ink高さ27〜63 / ink幅≤210 / box幅≤247
     diamond  (スロット330px): A=14400px² / ink高さ36〜84 / ink幅≤290 / box幅≤330。
   式: A_eff = A / (cov/0.382)^0.3 (cov=ink bbox 内の塗り率。太字・ベタは重く見えるため密度補正),
   H_ink = min(clamp(sqrt(A_eff/inkAr),18,42), 132/inkAr, 165*inkH/ar), --lgh = H_ink/inkH。
   さらに Fable+Codex 双方の目視レビュー(v1→v3)で合意した個別補正を適用:
   ibm×0.92 / amd×0.93 / a10×0.92 / cxj×0.90 / hp×0.93 / accops・edgemartrix・comnet×1.08 /
   dell×1.07 / vaio×1.07、diamond/platinum 追加後の v5 で hpe×0.94 / aws×1.07 /
   microsoft×1.06 (最終判定 Codex 4.5/5 合格・2026-07-02)。
   加えて「箱型ロックアップ」(文字が塗り箱/円の中にあるロゴ) は外側計測だと箱内文字が
   むき出し文字ロゴより大幅に小さくなるため、デザイナー判断で×1.08 ブースト:
   veeam / acronis / ascentech / csc / cxj / isr / hp / menlo / lenovo (質量均一と文字存在感の折衷・木全 2026-07-02)。
   trendmicro はプラチナとアトラクションでファイル共用のため、プラチナ側はランク限定の
   上書き (.sponsor-grid--platinum スコープ) で --lgh を差し替える。
   変数の意味: inkH/inkW = ファイル寸法に対する絵柄の高さ/幅「比率」(0〜1・canvasのalpha>20かつ
   非白ピクセルのbboxで実測) / ar = ファイルの縦横比 / inkAr = 絵柄自体の縦横比 = ar*inkW/inkH。
   ロゴを追加したら: ブラウザ console で画像を canvas に描いて ink bbox を実測 → 上式で --lgh を
   算出して1行足す (無指定はフォールバック 48 = 枠高さのみ・クランプ保証は無いので必ず追記する)。
   セレクタは query 耐性のため src*= を使う (src$= は ?v= 等が付くと静かに全滅する・Codex P1)。
   ※ 追記漏れは CI が検知する (tools/check-sponsor-lgh.mjs・#166): sponsor.html の全 vendor ロゴが
   出現ランクで --lgh を持つこと + インライン <style> の img サイズ上書き (後勝ち事故) がないことを検査。 */
.sponsor-grid--diamond       .sponsor-slot img,
.sponsor-grid--platinum      .sponsor-slot img,
.sponsor-grid--gold          .sponsor-slot img,
.sponsor-grid--silver        .sponsor-slot img,
.sponsor-grid--logo          .sponsor-slot img,
.sponsor-grid--attraction    .sponsor-slot img,
.sponsor-grid--event_partner .sponsor-slot img {
  height: calc(var(--lgh, 48) * 1px);
  width: auto;
  /* スロット幅を超える横長ロゴは枠内に収める (狭幅でロゴ同士が重なる事故を防ぐ・
     object-fit:contain が縦横比を保って縮小。広い画面ではロゴがスロット内に収まるため不活性)。 */
  max-width: 100%;
  max-height: none;
}

/* 中間幅 (768〜デスクトップ) の optical 保存 (Codex GPT-5.5 相談 2026-07-03):
   スロット幅は画面幅に追従して縮むがロゴ高さは固定 px のため、上記 max-width:100% クランプ
   単独だと描画幅がスロット幅で頭打ちになり「描画高さ ∝ 1/縦横比」となって、正方形寄りロゴ
   (aws/menlo) だけ巨大化し optical 等面積が崩れる (実測: vp815 で aws 78px vs microsoft 37px)。
   対策: スロットを inline-size コンテナ化し、scale = min(1, 100cqw / 設計時スロット内容幅) で
   ロゴ高さを同率縮小する (ティア内の相対サイズ = v5 合意の optical 比率を全幅で保存)。
   ・分母 = 1280px 実測のスロット content-box 幅: diamond 322 / platinum 231 / gold系 165。
     ※ sponsor-wall.css の flex-basis 名目値から再構成しない (accent-2026.css の上書きで
       実効スロット幅が名目式と異なるため。コンテナ化なら実幅に自動追従する)
   ・min(1px, …) により設計幅以上では 1:1 = デスクトップの見た目は不変
   ・logo ティアも silver と同一スロット幅にしたため対象化 (silver と同率で縮ませ序列維持・木全 2026-07-09)
   ・event_partner ティアはロゴが小さく溢れないため対象外 (従来の固定 px のまま)
   ・≤767px は既存 @media (後段・同詳細度後勝ち) が ×0.7 固定を維持する
   ・非対応ブラウザは @supports で除外 → 従来の固定 px + max-width クランプに fallback */
@supports (container-type: inline-size) {
  .sponsor-grid--diamond    .sponsor-slot,
  .sponsor-grid--platinum   .sponsor-slot,
  .sponsor-grid--gold       .sponsor-slot,
  .sponsor-grid--silver     .sponsor-slot,
  .sponsor-grid--logo       .sponsor-slot,
  .sponsor-grid--attraction .sponsor-slot {
    container-type: inline-size;
  }
  .sponsor-grid--diamond    .sponsor-slot img { height: calc(var(--lgh, 48) * min(1px, 100cqw / 322)); }
  .sponsor-grid--platinum   .sponsor-slot img { height: calc(var(--lgh, 48) * min(1px, 100cqw / 231)); }
  .sponsor-grid--gold       .sponsor-slot img,
  .sponsor-grid--silver     .sponsor-slot img,
  .sponsor-grid--logo       .sponsor-slot img,
  .sponsor-grid--attraction .sponsor-slot img { height: calc(var(--lgh, 48) * min(1px, 100cqw / 165)); }
}

/* 各ロゴの正規化枠高さ (px)。上記式による算出値 */
/* diamond (A=14400) */
.sponsor-slot img[src*="square_logo_hpe.png"] { --lgh: 89; }
.sponsor-slot img[src*="square_logo_netapp.png"] { --lgh: 80; }
.sponsor-slot img[src*="square_logo_lenovo.png"] { --lgh: 66; } /* 箱型×1.08込 */
/* platinum (A=8100) */
.sponsor-slot img[src*="square_logo_aws.png"] { --lgh: 85; }
.sponsor-slot img[src*="square_logo_hclsoftware.png"] { --lgh: 78; }
.sponsor-slot img[src*="square_logo_menlo.png"] { --lgh: 83; } /* 箱型×1.08込 */
.sponsor-slot img[src*="square_logo_microsoft.png"] { --lgh: 66; }
.sponsor-slot img[src*="square_logo_zscaler.png"] { --lgh: 72; }
.sponsor-slot img[src*="wide_logo_purestorage.png"] { --lgh: 80; }
.sponsor-slot img[src*="square_logo_omnissa.svg"] { --lgh: 75; } /* 横長ワードマーク(everpure同様)。スロット内容幅231で幅キャップ(231/AR3.06) */
/* trendmicro はアトラクションと共用ファイルのためプラチナ側のみランク限定で上書き */
.sponsor-grid--platinum .sponsor-slot img[src*="square_logo_trendmicro.png"] { --lgh: 75; }
/* event_partner */
.sponsor-slot img[src*="square_logo_chanema.png"] { --lgh: 48; }
/* カテゴリビュー(#sponsor-category-wall)はランク序列を持ち込まず全ロゴ gold スケール
   (A=3600) で optical 統一 (木全ルール「DAY02出展カテゴリ別は全ロゴ同じ大きさ」)。
   diamond/platinum のロゴ10社のみ gold スケール再計算値でカテゴリ限定上書き。
   trendmicro は generic 値(50)が gold スケールのため上書き不要 */
#sponsor-category-wall .sponsor-slot img[src*="square_logo_hpe.png"] { --lgh: 47; }
#sponsor-category-wall .sponsor-slot img[src*="square_logo_netapp.png"] { --lgh: 39; }
#sponsor-category-wall .sponsor-slot img[src*="square_logo_lenovo.png"] { --lgh: 33; } /* 箱型×1.08込 */
#sponsor-category-wall .sponsor-slot img[src*="square_logo_aws.png"] { --lgh: 53; }
#sponsor-category-wall .sponsor-slot img[src*="square_logo_hclsoftware.png"] { --lgh: 49; }
#sponsor-category-wall .sponsor-slot img[src*="square_logo_menlo.png"] { --lgh: 55; } /* 箱型×1.08込 */
#sponsor-category-wall .sponsor-slot img[src*="square_logo_microsoft.png"] { --lgh: 42; }
#sponsor-category-wall .sponsor-slot img[src*="square_logo_zscaler.png"] { --lgh: 48; }
#sponsor-category-wall .sponsor-slot img[src*="wide_logo_purestorage.png"] { --lgh: 50; }
#sponsor-category-wall .sponsor-slot img[src*="square_logo_omnissa.svg"] { --lgh: 54; }
/* Canon はサブテキスト込み ink 計測で主マークが小さく出るため、余白の多いカード文脈のみ+11%
   (Fable×Codex カテゴリレビュー合意。ランク壁側は承認済みのため据え置き) */
#sponsor-category-wall .sponsor-slot img[src*="square_logo_canonits.png"] { --lgh: 50; }
.sponsor-slot img[src*="square_logo_eventhub.svg"] { --lgh: 28; }
.sponsor-slot img[src*="square_logo_swish.svg"] { --lgh: 21; }
.sponsor-slot img[src*="square_logo_a10networks.png"] { --lgh: 42; }
.sponsor-slot img[src*="square_logo_accops.png"] { --lgh: 52; }
.sponsor-slot img[src*="square_logo_acronis.png"] { --lgh: 50; }
.sponsor-slot img[src*="square_logo_amd.png"] { --lgh: 43; }
.sponsor-slot img[src*="square_logo_amiya.png"] { --lgh: 40; } /* 式値45→40。太字ベタ塗り(cov0.53)で面積正規化でも重く見えるため意図的に縮小 (木全指示 2026-07-10) */
.sponsor-slot img[src*="square_logo_arcserve.png"] { --lgh: 46; }
.sponsor-slot img[src*="square_logo_ascentech.png"] { --lgh: 55; }
.sponsor-slot img[src*="square_logo_avepoint.png"] { --lgh: 43; }
.sponsor-slot img[src*="square_logo_canonits.png"] { --lgh: 45; }
.sponsor-slot img[src*="square_logo_cloudflare.png"] { --lgh: 53; }
.sponsor-slot img[src*="square_logo_cohesity.svg"] { --lgh: 24; } /* 横長ワードマーク(縦横比6.5:1)・幅を周囲ゴールドロゴ(~90px)に揃えた値。歪まない実質上限(26以上でスロット幅頭打ち→縦伸び) */
.sponsor-slot img[src*="square_logo_comnet.png"] { --lgh: 54; }
/* cache-bust 2026-07-10: 前回デプロイの伝播中に旧CSSが content-hash URL へ immutable で焼き付いた
   エッジ汚染を、内容ハッシュを更新して新URLへ切り替えることで解消する (機能変更なし) */
.sponsor-slot img[src*="square_logo_crowdstrike.png"] { --lgh: 50; } /* 45→50。横長ワードマークで中央値より小さく見えたため幅基準で拡大(幅~88px・歪みなし。木全指摘 2026-07-10) */
.sponsor-slot img[src*="square_logo_csc.svg"] { --lgh: 45; }
.sponsor-slot img[src*="square_logo_ctc.png"] { --lgh: 51; }
.sponsor-slot img[src*="square_logo_ctcsp.png"] { --lgh: 50; }
.sponsor-slot img[src*="square_logo_cxj.png"] { --lgh: 51; }
.sponsor-slot img[src*="square_logo_datadog.png"] { --lgh: 51; }
.sponsor-slot img[src*="square_logo_dell.png"] { --lgh: 48; }
.sponsor-slot img[src*="square_logo_digicert.png"] { --lgh: 51; }
.sponsor-slot img[src*="square_logo_digitalarts.png"] { --lgh: 51; }
.sponsor-slot img[src*="square_logo_dos.png"] { --lgh: 52; } /* 46→52。極端な横長一行(inkAr~11.9)で tier 最小だったため幅基準で拡大(幅~93px・上限97px手前=実質上限)。根本改善は素材トリム/別版が必要(木全指摘 2026-07-10) */
.sponsor-slot img[src*="square_logo_edgemartrix.png"] { --lgh: 50; }
.sponsor-slot img[src*="square_logo_elecom.png"] { --lgh: 46; }
.sponsor-slot img[src*="square_logo_fortinet.png"] { --lgh: 46; }
.sponsor-slot img[src*="square_logo_gdep.png"] { --lgh: 54; }
.sponsor-slot img[src*="square_logo_gitlab.svg"] { --lgh: 63; }
.sponsor-slot img[src*="square_logo_hp.png"] { --lgh: 45; }
.sponsor-slot img[src*="square_logo_ibm.svg"] { --lgh: 34; }
.sponsor-slot img[src*="square_logo_intercom.png"] { --lgh: 46; }
.sponsor-slot img[src*="square_logo_isr.png"] { --lgh: 58; }
.sponsor-slot img[src*="square_logo_kaspersky.png"] { --lgh: 46; }
.sponsor-slot img[src*="square_logo_knowbe4.png"] { --lgh: 45; }
.sponsor-slot img[src*="square_logo_lrm.png"] { --lgh: 48; }
.sponsor-slot img[src*="square_logo_motex.svg"] { --lgh: 31; } /* 式値35→31。太字で重く見えるため意図的に縮小 (木全指示 2026-07-10) */
.sponsor-slot img[src*="square_logo_nextset.svg"] { --lgh: 36; }
.sponsor-slot img[src*="square_logo_nutanix.png"] { --lgh: 46; }
.sponsor-slot img[src*="square_logo_okta.png"] { --lgh: 41; } /* 式値50→41。太字で重く見えるため意図的に縮小 (木全指示 2026-07-10) */
.sponsor-slot img[src*="square_logo_onebe.png"] { --lgh: 50; }
.sponsor-slot img[src*="square_logo_opswat.png"] { --lgh: 42; }
.sponsor-slot img[src*="square_logo_progress.png"] { --lgh: 50; }
.sponsor-slot img[src*="square_logo_qualitysoft.png"] { --lgh: 48; }
.sponsor-slot img[src*="square_logo_rsupport.png"] { --lgh: 40; }
.sponsor-slot img[src*="square_logo_rubrik.png"] { --lgh: 53; }
.sponsor-slot img[src*="square_logo_runexy.png"] { --lgh: 53; }
.sponsor-slot img[src*="square_logo_saisontech.png"] { --lgh: 47; }
.sponsor-slot img[src*="square_logo_schneider.png"] { --lgh: 52; }
.sponsor-slot img[src*="square_logo_sios.png"] { --lgh: 48; }
.sponsor-slot img[src*="square_logo_subgate.png"] { --lgh: 59; }
.sponsor-slot img[src*="square_logo_tenable.png"] { --lgh: 48; }
.sponsor-slot img[src*="square_logo_trendmicro.png"] { --lgh: 50; }
.sponsor-slot img[src*="square_logo_updater.png"] { --lgh: 46; }
.sponsor-slot img[src*="square_logo_upss.png"] { --lgh: 54; }
.sponsor-slot img[src*="square_logo_vaio.png"] { --lgh: 67; }
.sponsor-slot img[src*="square_logo_vast.png"] { --lgh: 52; }
.sponsor-slot img[src*="square_logo_veeam.png"] { --lgh: 44; }
.sponsor-slot img[src*="square_logo_wasabi.png"] { --lgh: 48; }
.sponsor-slot img[src*="square_logo_welfeed.jpg"] { --lgh: 75; } /* 暫定値・要 canvas 実測調整 (#166・2026-07-07 Welfeed 追加) */
.sponsor-grid--event_partner .sponsor-slot     { flex: 0 1 calc((100% - 128px) / 5); }
/* event_partner も optical 正規化の対象 (chanema が突出していた指摘を受け 2026-07-02 追加。
   旧 chanema width:80% ハックは撤去) */

/* (旧: microsoft/aws/menlo/motex/ibm/cxj/nextset/dell の個別 width% 調整は
   ink 正規化 (--lgh) に統合済みのため削除) */

.sponsor-slot a {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
}

/* 募集中 (未確定) の空き枠 */
.sponsor-slot--empty {
  min-height: 72px;
  border: 1.5px dashed #c9c0e8;
  border-radius: 12px;
  color: #7a68b4; /* 旧#b3a9d4は白比2.20:1→4.70:1 (UI/UX監査 2026-07-02 P3) */
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.08em;
}

/* 未確定枠だけの注記 (silver / logo など枠数未定のランク) */
.sponsor-tier__note {
  margin: 0;
  color: #6b6385;
  font-size: 14px;
  font-weight: 600;
}

/* ---- レスポンシブ ---- */
@media (max-width: 767px) {
  .sponsor-wall { gap: 40px; }
  .sponsor-tier__head { font-size: 15px; padding: 10px 26px; margin-bottom: -20px; }
  .sponsor-tier__panel { --chamfer: 16px; padding: 40px 18px 28px; }
  .sponsor-tier--diamond .sponsor-tier__panel { --chamfer: 18px; padding: 48px 18px 32px; }
  .sponsor-grid { gap: 20px; }
  .sponsor-grid--diamond  { display: grid; grid-template-columns: 1fr; gap: 18px; max-width: 230px; }
  .sponsor-grid--platinum { display: grid; grid-template-columns: 1fr; gap: 20px; max-width: 230px; }
  .sponsor-grid--gold     { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 24px 22px; }
  .sponsor-grid--silver,
  .sponsor-grid--logo,
  .sponsor-grid--attraction    { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 24px 22px; }
  .sponsor-grid--event_partner { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 24px 22px; }
  .sponsor-grid--diamond  .sponsor-slot { flex: none; min-height: 76px; padding: 8px 12px; }
  .sponsor-grid--platinum .sponsor-slot { flex: none; width: 100%; padding: 8px 16px; }
  .sponsor-grid--logo .sponsor-slot { flex: none; width: 100%; }
  .sponsor-grid--event_partner .sponsor-slot { flex: none; width: 100%; }
  .sponsor-grid--diamond       .sponsor-slot img,
  .sponsor-grid--platinum      .sponsor-slot img,
  .sponsor-grid--gold          .sponsor-slot img,
  .sponsor-grid--silver        .sponsor-slot img,
  .sponsor-grid--logo          .sponsor-slot img,
  .sponsor-grid--attraction    .sponsor-slot img,
  .sponsor-grid--event_partner .sponsor-slot img { height: calc(var(--lgh, 48) * 0.7px); }
  .sponsor-grid--gold .sponsor-slot:last-child:nth-child(odd),
  .sponsor-grid--silver .sponsor-slot:last-child:nth-child(odd),
  .sponsor-grid--attraction .sponsor-slot:last-child:nth-child(odd),
  .sponsor-grid--event_partner .sponsor-slot:last-child:nth-child(odd) {
    grid-column: 1 / -1;
    justify-self: center;
    width: calc((100% - 22px) / 2);
  }
  .sponsor-slot img { max-height: 48px; }
}
