@charset "UTF-8";
/*
Theme Name: 推し活遠征びより
Template: biyori-base
Author: ゆうすけ
Description: 推し活遠征びより専用の子テーマ。世界観は「チケットの半券と、遠征のしおり」。
             2026-10-24 改訂（D-11）：starto.jp を参考にした白ベース。純黒の線・二重線・点線、Lexend の英字見出し、ピル形のボタンとタグ。スマホを先に設計。
Version: 0.4.0
Requires at least: 6.5
Requires PHP: 8.0
License: GPL-2.0-or-later
Text Domain: ensei-biyori
*/

/* デザインの正は docs/02_tone_and_manner.md と design/rough-v3.html。ここを変えたら両方をそろえる（brand-designer）。
   色・書体・文字の段を足さない。参考サイトのロゴ・社名の見せ方・タグ配色は流用しない（公式サイトとの誤認を避ける） */

/* === 0. トークン（docs/02 §3〜§5） ======================================= */
:root {
  --bg: #FFFFFF; --ink: #000000; --ink-2: #757575; --faint: #E6E6E6; --soft: #F3F3F3;
  --venue: #B0284F;   /* ロゴの「推し活」と会場チケットだけ */
  --alert: #E30000;   /* 日帰り不可・要再確認だけ */
  --tag-route: #CFE4FF; --tag-stay: #FFD9E4; --tag-return: #FFF0A6; --tag-locker: #E9E9E9;
  /* ペンライトの6色（2026-10-25 運営者指示「ライブの賑やかな雰囲気」。docs/02 §9）。光の粒と帯だけに使い、文字色にしない */
  --pl-1: #FF4FA0; --pl-2: #FF9F1C; --pl-3: #FFD23F; --pl-4: #3DDC84; --pl-5: #3FA7FF; --pl-6: #9B5DE5;
  --pl-band: linear-gradient(90deg, var(--pl-1), var(--pl-2), var(--pl-3), var(--pl-4), var(--pl-5), var(--pl-6), var(--pl-1));

  --f-en: "Lexend", "Noto Sans JP", system-ui, sans-serif;
  --f-ja: "Noto Sans JP", "Lexend", "Hiragino Sans", "Hiragino Kaku Gothic ProN", "Yu Gothic", system-ui, sans-serif;

  /* 文字の段（スマホ値。760px 以上で英字見出し・1・2 が上がる） */
  --t-en: 2rem; --t-1: 1.375rem; --t-2: 1.125rem; --t-b: 1rem; --t-s: .875rem; --t-xs: .75rem; --t-tag: .6875rem;

  --hd: 56px;    /* 固定ヘッダーの高さ。4問ジャンプはこの下に固定 */
  --jp-h: 48px;  /* 4問ジャンプの高さ（上の余白8px＋タブ40px） */

  /* 親テーマ（biyori-base）のトークンへの割り当て */
  --paper: var(--bg); --card: var(--bg); --rule: var(--ink); --accent: var(--ink); --accent-wash: var(--bg);
  --stamp: var(--ink-2); --due: var(--alert); --due-wash: var(--bg); --on-accent: var(--bg);
  --f-head: var(--f-ja); --f-body: var(--f-ja); --f-num: var(--f-en);
  --radius: 0;
}
@media (min-width: 760px) { :root { --t-en: 2.25rem; --t-1: 1.5rem; --t-2: 1.25rem; } }
@media (prefers-color-scheme: dark) {
  :root { --bg: #0E0E0E; --ink: #F2F2F2; --ink-2: #9E9E9E; --faint: #2A2A2A; --soft: #1A1A1A; --venue: #FF7FA0; --alert: #FF6B6B;
    --tag-route: #1F3550; --tag-stay: #4A2230; --tag-return: #4A4214; --tag-locker: #2E2E2E; }
}

/* === 1. 土台 ============================================================= */
body { font-size: var(--t-b); line-height: 1.75; }
a { color: inherit; text-underline-offset: .2em; }
.en { font-family: var(--f-en); font-weight: 700; letter-spacing: -.01em; }
.num { font-family: var(--f-en); font-variant-numeric: tabular-nums; }
.s { font-size: var(--t-s); }
.xs, .u-small { font-size: var(--t-xs); color: var(--ink-2); }
.u-quiet, .is-quiet { color: var(--ink-2); }
h1, h2, h3 { word-break: auto-phrase; }

/* ピル形のタグ（黒枠＋パステル。docs/02 §6） */
.tag { display: inline-flex; align-items: center; height: 20px; padding: 0 9px; border: 1px solid var(--ink); border-radius: 999px;
  background: var(--bg); color: var(--ink); font-family: var(--f-en); font-size: var(--t-tag); font-weight: 500; letter-spacing: .04em; white-space: nowrap; line-height: 1; }
.tag--route { background: var(--tag-route); } .tag--stay { background: var(--tag-stay); }
.tag--return { background: var(--tag-return); } .tag--locker { background: var(--tag-locker); }

/* 黒塗りのピルボタン */
.pill { display: inline-flex; align-items: center; justify-content: center; gap: .4rem; min-height: 40px; padding: 0 1.1rem; border-radius: 999px;
  background: var(--ink); color: var(--bg); text-decoration: none; font-family: var(--f-en); font-size: var(--t-xs); font-weight: 500; letter-spacing: .08em; white-space: nowrap; border: 1px solid var(--ink); }
.pill:hover { background: var(--bg); color: var(--ink); }
.pill.is-off, .pill.is-off:hover { background: var(--soft); color: var(--ink-2); border-color: var(--soft); }

/* === 2. ヘッダー（スマホで上に固定）・ナビ ================================ */
.site-header { position: sticky; top: env(safe-area-inset-top, 0px); z-index: 20; background: var(--bg); border-bottom: 1px solid var(--ink); }
.site-header__inner { height: var(--hd); padding-block: 0; flex-wrap: nowrap; }
.site-logo { text-decoration: none; color: var(--ink); margin-right: auto; }
.logo { display: inline-flex; align-items: baseline; gap: .4rem; }
.logo small { font-size: var(--t-xs); font-weight: 700; color: var(--venue); }
.logo b { font-size: var(--t-2); font-weight: 700; letter-spacing: .02em; }
.hd-search { display: grid; place-items: center; width: 44px; height: 44px; }
.loupe { display: block; width: 16px; height: 16px; border: 2px solid var(--ink); border-radius: 50%; position: relative; }
.loupe::after { content: ""; position: absolute; width: 7px; height: 2px; background: var(--ink); right: -6px; bottom: -3px; transform: rotate(45deg); }
.site-nav { position: static; background: var(--bg); border-bottom: 1px solid var(--ink); }
.site-nav__inner { gap: 1.25rem; }
.site-nav a { font-size: var(--t-s); font-weight: 500; color: var(--ink); border-bottom-width: 2px; }
.site-nav a:hover { color: var(--ink); text-decoration: underline; }
.site-nav a[aria-current="page"] { border-bottom-color: var(--ink); color: var(--ink); font-weight: 700; }

/* === 3. ページの骨組み ==================================================== */
.page-main { padding-block: 1rem 3.5rem; }
.breadcrumb { font-size: var(--t-xs); margin-bottom: .5rem; }
.breadcrumb li + li::before { content: "／"; }
.page-title { font-size: var(--t-1); }
.page-lede { font-size: var(--t-s); color: var(--ink-2); }
.article-title { font-size: var(--t-2); line-height: 1.5; margin-bottom: .6rem; text-wrap: balance; }
.article-meta { border-bottom: 0; padding-bottom: 0; margin-bottom: 1rem; gap: .6rem; font-size: var(--t-xs); }
.article-meta .mk { color: var(--ink-2); text-decoration: none; }
.pr-label { height: 20px; display: inline-flex; align-items: center; padding: 0 9px; border: 1px solid var(--ink-2); border-radius: 999px;
  color: var(--ink-2); font-family: var(--f-en); font-size: var(--t-tag); line-height: 1; }
.chk { color: var(--ink-2); }
.chk .num { color: var(--ink); }
.chk.is-overdue, .chk.is-overdue .num { color: var(--alert); }

/* 本文 */
.prose h2 { font-size: var(--t-2); border-bottom: 0; border-top: 1px solid var(--ink); padding-top: .75rem; padding-bottom: 0; }
.prose h3 { font-size: var(--t-b); }
.prose blockquote { border-left: 2px solid var(--ink); color: var(--ink); }
.prose table, .data-table { background: var(--bg); font-size: var(--t-s); }
.table-scroll, .prose .wp-block-table { border: 0; border-top: 4px double var(--ink); border-bottom: 4px double var(--ink); }
.prose th, .prose td, .data-table th, .data-table td { border-bottom: 1px dashed var(--ink); }
.prose th, .data-table th { background: var(--bg); font-size: var(--t-xs); }

/* 出典・著者：上に黒の線 */
.sources, .author-box { background: var(--bg); border: 0; border-top: 1px solid var(--ink); padding: .75rem 0 0; margin-top: 2.5rem; font-size: var(--t-s); }
.sources h2, .author-box h2 { font-size: var(--t-s); }

/* 記事の一覧（親テーマのカード） */
.post-cards { gap: 1.5rem 1rem; }
.post-card a { border: 0; background: var(--bg); }
.post-card a:hover .post-card__ttl { text-decoration: underline; }
.post-card__img { border: 1px solid var(--ink); }
.post-card__body { padding: .6rem 0 0; }
.post-card__cat { color: var(--ink-2); font-size: var(--t-xs); }
.post-card__ttl { font-size: var(--t-s); font-weight: 700; }
.post-card__meta { font-size: var(--t-xs); font-family: var(--f-en); }
.related h2 { font-size: var(--t-s); border-top: 1px solid var(--ink); padding-top: .75rem; }
.section-title { font-size: var(--t-2); }
.section-title .en { font-size: var(--t-s); }
.pagination .page-numbers { border-radius: 999px; border-color: var(--ink); font-family: var(--f-en); }
.pagination .current { background: var(--ink); color: var(--bg); }

/* フッター */
.site-footer { background: var(--bg); border-top: 4px double var(--ink); font-size: var(--t-xs); }
.site-footer__cols h2 { font-size: var(--t-xs); }
.site-footer__cols a { min-height: 32px; display: flex; align-items: center; color: var(--ink); }

/* === 4. 会場チケット（docs/02 §7-1） ====================================== */
.ticket { display: grid; grid-template-columns: minmax(0, 1fr) 7.5rem; border: 1.5px solid var(--venue); margin-bottom: 1rem; }
.ticket__m { padding: 1rem .9rem .9rem; display: grid; align-content: start; gap: .25rem; min-width: 0; }
.ticket__en { font-size: var(--t-1); line-height: 1.05; color: var(--venue); }
.ticket__jp { font-size: var(--t-1); font-weight: 700; line-height: 1.3; }
.ticket__f { display: flex; flex-wrap: wrap; gap: .4rem; align-items: center; font-size: var(--t-xs); color: var(--ink-2); line-height: 1.6; margin-top: .2rem; }
.ticket__st { position: relative; border-left: 1.5px dashed var(--venue); padding: 1rem .75rem; display: grid; align-content: space-between; gap: .5rem; }
.ticket__st::before, .ticket__st::after { content: ""; position: absolute; left: -9px; width: 16px; height: 16px; border-radius: 50%;
  background: var(--bg); border: 1.5px solid var(--venue); }
.ticket__st::before { top: -9px; clip-path: inset(50% 0 0 0); }
.ticket__st::after { bottom: -9px; clip-path: inset(0 0 50% 0); }
.ticket__st span { font-size: var(--t-xs); color: var(--ink-2); line-height: 1.5; }
.ticket__st b { display: block; font-size: var(--t-s); color: var(--ink); }
@media (min-width: 760px) { .ticket { grid-template-columns: minmax(0, 1fr) 10rem; } .ticket__m { padding: 1.25rem; } }

/* === 5. 4問ジャンプ（黒塗りのタブ、選択中だけ白抜き。docs/02 §7-3） ======= */
.jump { position: sticky; top: calc(env(safe-area-inset-top, 0px) + var(--hd)); z-index: 10; background: var(--bg);
  display: grid; grid-template-columns: repeat(4, 1fr); gap: 4px; padding-top: 8px; border-bottom: 1px solid var(--ink); margin-bottom: 1.25rem; }
.jump a { display: flex; justify-content: center; align-items: center; min-height: 40px; font-size: var(--t-s); font-weight: 700;
  text-decoration: none; background: var(--ink); color: var(--bg); border: 1px solid var(--ink); border-bottom: 0; }
.jump a.is-on { background: var(--bg); color: var(--ink); margin-bottom: -1px; padding-bottom: 1px; }

/* === 6. セクション見出し（和文の小ラベル＋Lexend の英字。docs/02 §5） ====== */
.vsec { margin-top: 2.75rem; }
.venue__lead { margin-top: 0; }
.sh, .sh2 { scroll-margin-top: calc(var(--hd) + var(--jp-h) + 12px); }
.sh { display: grid; margin-bottom: .9rem; }
.sh h2 { font-size: .8125rem; font-weight: 700; line-height: 1.4; }
.sh .en { font-size: var(--t-en); line-height: 1.05; }
.sh2 { font-size: var(--t-2); margin-bottom: .75rem; }
.vsec__note { margin-top: .75rem; color: var(--ink-2); }
.more { margin-top: 1.25rem; display: flex; justify-content: center; }
.more .pill { min-width: 12rem; min-height: 44px; }

/* === 7. 一覧の固定形（二重線ではさみ、項目の間は点線。docs/02 §7-6） ====== */
.list { list-style: none; padding: 0; margin: 0; border-top: 4px double var(--ink); border-bottom: 4px double var(--ink); }
.list li { border-bottom: 1px dashed var(--ink); }
.list li:last-child { border-bottom: 0; }
.list li > a, .list li > div { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: .25rem .75rem; align-items: center; padding: .85rem 0;
  color: var(--ink); text-decoration: none; }
.list a:hover b { text-decoration: underline; }
.list__mt { grid-column: 1; display: flex; flex-wrap: wrap; gap: .5rem; align-items: center; font-size: var(--t-xs); color: var(--ink-2); font-family: var(--f-en); }
.list b { grid-column: 1; font-size: var(--t-b); line-height: 1.5; }
.list__sub { grid-column: 1; font-size: var(--t-xs); color: var(--ink-2); line-height: 1.6; }
.list__arr { grid-column: 2; grid-row: 1 / span 3; font-size: 1.125rem; }

/* === 8. 帰り道レール（黒1色。docs/02 §7-4） =============================== */
.rail { list-style: none; padding: 0; margin: 0; }
.rail li { display: grid; grid-template-columns: 3.4rem 14px minmax(0, 1fr); gap: .65rem; padding-bottom: 1rem; position: relative; }
.rail li:not(:last-child)::before { content: ""; position: absolute; left: calc(3.4rem + .65rem + 6.5px); top: .8rem; bottom: -.25rem; width: 1px; background: var(--ink); }
.rail__t { font-size: var(--t-s); font-weight: 500; text-align: right; line-height: 1.7; }
.rail i { width: 10px; height: 10px; border-radius: 50%; background: var(--ink); margin: .45rem auto 0; position: relative; z-index: 1; }
.rail__w { font-size: var(--t-s); line-height: 1.6; min-width: 0; }
.rail__w small { display: block; font-size: var(--t-xs); color: var(--ink-2); }
.rail li.is-ng .rail__t { color: var(--alert); text-decoration: line-through; }
.rail li.is-ng i { background: var(--bg); border: 1.5px solid var(--alert); }
.rail li.is-ng .rail__w b { color: var(--alert); }
.rail li.is-tbd .rail__t { color: var(--ink-2); }
.rail li.is-tbd i { background: var(--bg); border: 1px solid var(--ink); }
.rail__note.is-overdue b { color: var(--alert); }

/* === 9. ホテル3圏（docs/02 §7-5） ========================================= */
.zones { border-top: 4px double var(--ink); border-bottom: 4px double var(--ink); }
.zone { padding: .9rem 0; border-bottom: 1px dashed var(--ink); }
.zone:last-child { border-bottom: 0; }
.zone__hd { display: flex; align-items: center; gap: .5rem; }
.zone__hd span:not(.tag), .zone__lead { font-size: var(--t-xs); color: var(--ink-2); }
.zone__lead { margin-top: .35rem; }
.hotel { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: .1rem .75rem; margin-top: .6rem; align-items: center; }
.hotel b { font-size: var(--t-b); }
.hotel b.is-quiet { font-size: var(--t-s); font-weight: 500; }
.hotel > span:not(.pill) { grid-column: 1; font-size: var(--t-xs); color: var(--ink-2); }
.hotel .pill { grid-column: 2; grid-row: 1 / span 2; }

/* === 10. 基本情報・体験メモ・会場ルール ==================================== */
.kv { display: grid; grid-template-columns: 6rem minmax(0, 1fr); margin: 0; border-top: 4px double var(--ink); border-bottom: 4px double var(--ink); font-size: var(--t-s); }
.kv dt, .kv dd { margin: 0; padding: .6rem 0; border-bottom: 1px dashed var(--ink); }
.kv dt:last-of-type, .kv dd:last-of-type { border-bottom: 0; }
.kv dt { color: var(--ink-2); font-size: var(--t-xs); }
.kv dd { min-width: 0; overflow-wrap: anywhere; }
.kv dd .xs { display: block; }
.memo { border: 1px solid var(--ink); padding: .75rem .9rem; font-size: var(--t-s); }
.memo .xs { display: block; margin-bottom: .25rem; }
.memo.is-empty p { color: var(--ink-2); }
.rule-note { margin-top: 2.5rem; padding-top: .75rem; border-top: 1px solid var(--ink); font-size: var(--t-xs); color: var(--ink-2); }
.rule-note b { color: var(--ink); margin-right: .4rem; }
.rule-note a { margin-left: .4rem; color: var(--ink); }

/* === 11. 地域ボタン（ピル形を2列。PCは3列） =============================== */
.areas { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .5rem; }
.areas a { display: flex; justify-content: space-between; align-items: center; min-height: 48px; padding: 0 1rem; border: 1px solid var(--ink); border-radius: 999px;
  text-decoration: none; color: var(--ink); font-size: var(--t-s); font-weight: 700; }
.areas a:hover { background: var(--ink); color: var(--bg); }
.areas a span { font-weight: 500; font-size: var(--t-xs); color: var(--ink-2); }
.areas a:hover span { color: inherit; }
@media (min-width: 760px) { .areas { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
.page-main .areas { margin-bottom: .5rem; }
.area-block { scroll-margin-top: calc(var(--hd) + 12px); }

/* === 12. トップ ============================================================ */
.home-hero { padding-block: 1.25rem .5rem; max-width: 42rem; }
.home-hero__lbl { display: block; font-size: .8125rem; font-weight: 700; }
.home-hero .en { display: block; font-size: calc(var(--t-en) * 1.2); line-height: 1.02; margin-top: .1rem; }
.home-hero h1 { font-size: var(--t-1); line-height: 1.45; margin-top: .75rem; text-wrap: balance; }
.home-hero p { font-size: var(--t-s); color: var(--ink-2); margin-top: .4rem; }
.home-search { display: flex; align-items: center; margin-top: 1rem; border: 1px solid var(--ink); border-radius: 999px; padding: 0 .35rem 0 1rem; }
.home-search input[type="search"] { flex: 1; min-width: 0; border: 0; background: transparent; color: var(--ink); font: inherit; font-size: var(--t-s); padding: .75rem 0; border-radius: 0; }
.home-search input::placeholder { color: var(--ink-2); }
.home-search button { border: 0; background: var(--ink); color: var(--bg); border-radius: 999px; min-height: 36px; padding: 0 1rem;
  font-family: var(--f-en); font-size: var(--t-xs); font-weight: 500; letter-spacing: .06em; cursor: pointer; }
@media (min-width: 1000px) {
  .home .vsec { display: grid; grid-template-columns: 15rem minmax(0, 1fr); column-gap: 2.5rem; align-items: start; }
  .home .vsec > .sh, .home .vsec > .sh2 { grid-row: 1 / span 3; }
}

/* === 13. 記事カードの組版サムネ（チケット型アイキャッチ docs/02 §8） ======= */
.ec { display: grid; grid-template-columns: 7fr 3fr; aspect-ratio: 1200 / 630; max-width: 100%; overflow: hidden; container-type: inline-size;
  background: var(--bg); border: .5cqw solid var(--venue); }
.ec__m { padding: 6cqw 5cqw 4.5cqw; display: grid; align-content: start; gap: 1.2cqw; min-width: 0; border-right: .4cqw dashed var(--venue); }
.ec__en { font-family: var(--f-en); font-weight: 700; font-size: 7cqw; line-height: 1; color: var(--venue); }
.ec__jp { font-size: 6.2cqw; font-weight: 700; line-height: 1.25; color: var(--ink);
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.ec__jp.is-text { font-size: 5cqw; }
.ec__brand { margin-top: auto; align-self: end; font-size: 2.6cqw; font-weight: 700; color: var(--ink); }
.ec__brand i { font-style: normal; color: var(--venue); margin-right: .8cqw; font-size: 2cqw; }
.ec__s { padding: 6cqw 3cqw 4.5cqw; display: grid; align-content: space-between; }
.ec__s small { display: block; font-size: 2.2cqw; color: var(--ink-2); }
.ec__s b { display: block; font-size: 3.2cqw; color: var(--ink); line-height: 1.3; }
.ec__s b.num { font-size: 5cqw; font-weight: 500; }
.ec__s b.en { font-size: 5cqw; color: var(--venue); }

/* === 14. ログイン中は WordPress の管理バー（32px／スマホ46px）の下に固定する == */
.admin-bar .site-header { top: 32px; }
.admin-bar .jump { top: calc(32px + var(--hd)); }
@media (max-width: 782px) { .admin-bar .site-header { top: 46px; } .admin-bar .jump { top: calc(46px + var(--hd)); } }
@media (max-width: 600px) { .admin-bar .site-header { top: 0; } .admin-bar .jump { top: var(--hd); } }


/* === 9. 写真・地図・光（2026-10-25 運営者指示。docs/02 §9・docs/15・docs/16） ============= */
/* ヘッダーの下線をペンライトの帯に */
.site-header { border-bottom: 0; }
.site-header::after { content: ""; position: absolute; left: 0; right: 0; bottom: -3px; height: 3px; background: var(--pl-band); background-size: 200% 100%; }
@media (prefers-reduced-motion: no-preference) { .site-header::after { animation: pl-flow 12s linear infinite; } }
@keyframes pl-flow { to { background-position: 200% 0; } }

/* 光の粒（客席のペンライトを点で見せる。人物・公演の画像は使わない） */
.lights { position: relative; display: flex; gap: 6px; align-items: center; height: 14px; margin: .25rem 0 .75rem; }
.lights i { width: 8px; height: 8px; border-radius: 50%; background: var(--c); box-shadow: 0 0 8px 2px color-mix(in srgb, var(--c) 55%, transparent); }
.lights i:nth-child(6n+1) { --c: var(--pl-1); } .lights i:nth-child(6n+2) { --c: var(--pl-2); } .lights i:nth-child(6n+3) { --c: var(--pl-3); }
.lights i:nth-child(6n+4) { --c: var(--pl-4); } .lights i:nth-child(6n+5) { --c: var(--pl-5); } .lights i:nth-child(6n) { --c: var(--pl-6); }
@media (prefers-reduced-motion: no-preference) {
  .lights i { animation: pl-twinkle 2.4s ease-in-out infinite; }
  .lights i:nth-child(odd) { animation-delay: -1.2s; } .lights i:nth-child(3n) { animation-delay: -.6s; }
}
@keyframes pl-twinkle { 50% { opacity: .35; transform: translateY(2px) scale(.85); } }

/* トップの見出し：後ろにぼかした光、上に粒の列 */
.home-hero { position: relative; isolation: isolate; }
.home-hero::before { content: ""; position: absolute; inset: -1rem -16px auto; height: 15rem; z-index: -1; pointer-events: none;
  background:
    radial-gradient(9rem 6rem at 12% 30%, color-mix(in srgb, var(--pl-1) 28%, transparent), transparent 70%),
    radial-gradient(10rem 7rem at 48% 12%, color-mix(in srgb, var(--pl-3) 30%, transparent), transparent 70%),
    radial-gradient(9rem 7rem at 85% 35%, color-mix(in srgb, var(--pl-5) 26%, transparent), transparent 70%),
    radial-gradient(8rem 6rem at 70% 80%, color-mix(in srgb, var(--pl-6) 22%, transparent), transparent 70%); }
.lights--hero { margin: 0 0 .75rem; }
.lights--hero i { width: 10px; height: 10px; }

/* 会場チケット：上辺に光の帯 */
.ticket { position: relative; }
.ticket::before { content: ""; position: absolute; left: 0; right: 0; top: 0; height: 4px; background: var(--pl-band); }

/* 写真（本文の先頭。クレジットを必ず出す） */
.es-photo { margin: 0 0 1.25rem; }
.es-photo img { display: block; width: 100%; height: auto; aspect-ratio: 16 / 9; object-fit: cover; border: 1px solid var(--ink); }
.es-photo figcaption { margin-top: .4rem; font-size: var(--t-xs); color: var(--ink-2); line-height: 1.6; }
.es-photo figcaption a { color: inherit; }

/* 一覧のサムネイル（写真のある会場・記事だけ） */
.list--img li > a, .list--img li > div { grid-template-columns: 5.5rem minmax(0, 1fr) auto; }
.list--img .list__mt, .list--img b, .list--img .list__sub { grid-column: 2; }
.list--img .list__arr { grid-column: 3; }
.list__img { grid-column: 1; grid-row: 1 / span 3; width: 5.5rem; aspect-ratio: 4 / 3; object-fit: cover; border: 1px solid var(--ink); align-self: center; }
@media (min-width: 760px) { .list--img li > a, .list--img li > div { grid-template-columns: 8rem minmax(0, 1fr) auto; } .list__img { width: 8rem; } }

/* 地図（OpenStreetMap。出典を必ず出す） */
.es-map { margin: 1rem 0 0; }
.es-map iframe { display: block; width: 100%; aspect-ratio: 4 / 3; border: 1px solid var(--ink); }
@media (min-width: 760px) { .es-map iframe { aspect-ratio: 16 / 9; } }
.es-map figcaption { display: flex; flex-wrap: wrap; gap: .5rem 1rem; justify-content: space-between; align-items: center; margin-top: .5rem; font-size: var(--t-xs); color: var(--ink-2); }
.es-map figcaption a { color: inherit; }

/* SNS の埋め込み（公式アカウントだけ。docs/16） */
.es-sns { margin: 1.5rem auto; max-width: 550px; }
.es-sns figcaption { margin-top: .4rem; font-size: var(--t-xs); color: var(--ink-2); }
.es-sns__card { display: block; padding: 1rem; border: 1px solid var(--ink); border-radius: 12px; text-decoration: none; font-weight: 700; }
