/*
Theme Name: ICON RANKING
Theme URI: https://iconfes.online/
Author: ICON RANKING
Description: ICON RANKINGローカル静的サイトのWordPress移植版。
Version: 2026.07.17.20260717-iconnews-header-copy08
Text Domain: iconfes-ranking
*/

:root {
  --color-white: #FFFFFF;
  --color-bg-soft: #FFFFFF;
  --color-bg-highlight: #F7F7F7;
  --color-text: #333333;
  --color-heading: #222222;
  --color-meta: #444444;
  --color-ui-active: #333333;
  --color-rank-muted: #333333;
  --color-gold: #222222;
  --color-gold-dark: #222222;
  --color-gold-light: #E5E5E5;
  --color-border: #E5E5E5;
  --color-support: #ED4F83;
  --color-rank-gold: #B8860B;
  --color-rank-silver: #4A4A4A;
  --color-rank-bronze: #9A5A2A;
  --font-family-system:
    -apple-system,
    BlinkMacSystemFont,
    "Hiragino Sans",
    "Hiragino Kaku Gothic ProN",
    "Yu Gothic",
    Meiryo,
    sans-serif;
  --font-size-root: 16px;
  --font-size-h1: 1.25rem;
  --font-size-page-compact: 1.125rem;
  --font-size-h2: 1rem;
  --font-size-body: 0.875rem;
  --font-size-meta: 0.75rem;
  --font-size-brand: clamp(1.25rem, 2vw, 1.6rem);
  --font-size-nav: 0.9rem;
  --font-size-rank: 0.7rem;
  --font-size-avatar: 1.35rem;
  --font-size-name: 1rem;
  --font-size-summary: 0.86rem;
  --font-size-sns: 1.1rem;
  --font-size-value: 0.9rem;
  --font-size-link: 0.88rem;
  --font-size-widget-link: 0.8rem;
  --font-size-official-link: 0.9rem;
  --font-size-support-count: 0.9rem;
  --font-size-widget-icon: 1.45rem;
  --font-size-widget-title: 0.9rem;
  --font-size-widget-summary: 0.76rem;
  --font-size-filter-label: 0.82rem;
  --font-size-category: 0.78rem;
  --font-size-detail-body: 1rem;
  --font-size-detail-section: 1.15rem;
  --font-size-header-icon: 0.85rem;
  --font-size-post-label: 0.76rem;
  --font-size-post-value: 0.88rem;
  --font-size-post-title: 0.95rem;
  --font-size-post-thumb: 0.82rem;
  --font-size-news-icon: 2rem;
  --font-size-news-title: 0.92rem;
  --font-size-news-date: 0.75rem;
  --font-size-mobile-rank: 0.65rem;
  --font-size-mobile-name: 0.9rem;
  --font-size-mobile-summary: 0.76rem;
  --font-size-mobile-sns: 0.95rem;
  --font-size-mobile-value: 0.68rem;
  --font-size-mobile-news-meta: 0.7rem;
  --font-size-image-genre-chip: 0.5625rem;
  --font-weight-normal: 400;
  --font-weight-heading: 600;
  --font-weight-nav: 700;
  --space-0: 0;
  --space-1: 4px;
  --space-2: 8px;
  --space-3: 12px;
  --space-4: 16px;
  --space-5: 20px;
  --space-6: 24px;
  --space-7: 28px;
  --space-8: 32px;
  --space-9: 36px;
  --space-10: 40px;
  --space-11: 44px;
  --space-12: 48px;
  --space-13: 52px;
  --space-14: 56px;
  --space-16: 64px;
  --space-18: 72px;
  --space-tag-y: 2px;
  --space-tag-x: 8px;
  --size-rank: 24px;
  --size-rank-height: 24px;
  --size-avatar-lg: 104px;
  --size-avatar-md: 80px;
  --size-avatar-sm: 68px;
  --size-avatar-mobile-card: 88px;
  --size-avatar-detail: 84px;
  --size-avatar-header: 128px;
  --size-filter-label: 52px;
  --size-account-icon: 32px;
  --size-post-thumbnail: 208px;
  --size-support-circle: 20px;
  --size-news-card-image: clamp(160px, 12vw, 220px);
  --line-height-root: 1.7;
  --line-height-tight: 1.3;
  --line-height-section: 1.4;
  --line-height-avatar: 1.25;
  --line-height-name: 1.45;
  --line-height-summary: 1.55;
  --line-height-sns: 1.35;
  --line-height-value: 1.4;
  --line-height-widget-summary: 1.5;
  --line-height-account: 1.5;
  --line-height-detail-body: 1.95;
  --line-height-header-summary: 1.8;
  --line-height-post-title: 1.45;
  --line-height-news-title: 1.5;
  --line-height-mobile-summary: 1.45;
  --line-height-mobile-news-title: 1.4;
  --type-page: var(--font-size-h1);
  --type-section: var(--font-size-h2);
  --type-body: var(--font-size-body);
  --type-meta: var(--font-size-meta);
}

/* SNS公式ロゴ（本文中の記号ではなくSVGを表示） */
.person-row__sns[aria-label],
.account-row__sns[aria-label] {
  color: transparent;
  font-size: 0;
}

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

html {
  overflow-x: hidden;
  background: var(--color-white);
  color: var(--color-text);
  font-family: var(--font-family-system);
  font-size: var(--font-size-root);
  line-height: var(--line-height-root);
  text-size-adjust: 100%;
  -webkit-font-smoothing: antialiased;
}

body {
  font-size: var(--font-size-body);
  font-weight: var(--font-weight-normal);
}

h1 {
  font-size: var(--font-size-h1);
  font-weight: var(--font-weight-heading);
}

h2,
h3 {
  font-size: var(--font-size-h2);
  font-weight: var(--font-weight-heading);
}

time {
  font-size: var(--font-size-meta);
}

body {
  min-width: 0;
  margin: 0;
  overflow-x: hidden;
  background: var(--color-white);
  color: var(--color-text);
}

img {
  display: block;
  max-width: 100%;
  height: auto;
}

button,
input,
select {
  max-width: 100%;
  font: inherit;
}

button,
select {
  cursor: pointer;
}

button {
  appearance: none;
}

a {
  color: var(--color-heading);
  text-decoration: none;
  text-decoration-thickness: 1px;
  text-underline-offset: 0.18em;
}

.news-detail__body a {
  text-decoration: underline;
}

a:hover,
a:focus-visible {
  text-decoration: none;
}

.news-detail__body a:hover,
.news-detail__body a:focus-visible {
  text-decoration: underline;
}

button:focus-visible,
a:focus-visible,
input:focus-visible,
select:focus-visible {
  outline: 2px solid var(--color-gold-dark);
  outline-offset: 2px;
}

h1,
h2,
h3,
p,
dl,
dd,
ul,
ol {
  margin-top: 0;
}

ul,
ol {
  padding-left: 0;
  list-style: none;
}

/* 共通ヘッダー */

.site-header {
  border-bottom: 0;
  background: var(--color-white);
  box-shadow: none;
}

.site-header__inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-5);
  width: min(1180px, calc(100% - 40px));
  margin: 0 auto;
  padding: var(--space-3) 0 var(--space-2);
}

.site-header__logo {
  flex: 0 0 auto;
  text-decoration: none;
}

.site-header__brand {
  display: flex;
  flex: 0 1 auto;
  align-items: center;
  gap: var(--space-3);
  min-width: 0;
}

.site-header__site-name {
  display: block;
  width: min(176px, 42vw);
  height: auto;
  aspect-ratio: 1582 / 256;
  overflow: hidden;
  background: url("assets/iconnews-logo04.png") center / contain no-repeat;
  color: transparent;
  font-size: 0;
}

.site-header__tagline {
  margin: 0;
  color: var(--color-meta);
  font-size: 12px;
  font-weight: var(--font-weight-normal);
  line-height: 1.4;
  white-space: nowrap;
  transform: translateY(4px);
}

.site-header__tagline--mobile {
  display: none;
}

.site-header__site-name::after {
  display: none;
}

.global-nav {
  display: flex;
  align-items: center;
  gap: var(--space-5);
  margin-right: var(--space-5);
  min-width: 0;
}

.global-search {
  order: 2;
  flex: 0 0 auto;
}

.global-search__label {
  position: absolute;
  width: 1px;
  height: 1px;
  overflow: hidden;
  clip: rect(0 0 0 0);
  white-space: nowrap;
}

.global-search__controls {
  display: flex;
  align-items: center;
  gap: var(--space-1);
}

.global-search__input {
  width: 180px;
  min-height: 32px;
  padding: 5px 8px;
  border: 1px solid var(--color-border);
  border-radius: 4px;
  color: var(--color-heading);
  font: inherit;
  font-size: 12px;
}

.global-search__button {
  min-height: 32px;
  padding: 5px 9px;
  border: 1px solid var(--color-heading);
  border-radius: 4px;
  background: var(--color-heading);
  color: var(--color-white);
  font: inherit;
  font-size: 12px;
  cursor: pointer;
}

.global-nav__list {
  order: 1;
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-start;
  gap: var(--space-1) var(--space-5);
  margin: 0;
}

.search-panel__body {
  padding: 0;
}

.search-page__form {
  margin: 0;
}

.search-panel .global-search__controls {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: var(--space-2);
}

.search-panel .global-search__input {
  width: 100%;
}

.global-search--page .global-search__input {
  width: min(560px, calc(100vw - 110px));
  min-height: 48px;
  padding: 10px 14px;
  font-size: 16px;
}

.global-search--page .global-search__button {
  min-height: 48px;
  padding: 10px 18px;
  font-size: 15px;
}

.search-page__summary {
  margin: var(--space-7) 0 var(--space-5);
  color: var(--color-meta);
}

.search-results-section {
  margin-top: var(--space-7);
}

.search-results-list {
  display: grid;
  gap: 0;
  margin: 0;
}

.search-result {
  border-bottom: 1px solid var(--color-border);
}

.search-result__link {
  display: flex;
  align-items: center;
  gap: var(--space-3);
  min-height: 70px;
  padding: var(--space-2) 0;
  color: inherit;
  text-decoration: none;
}

.search-result__link:hover .search-result__title,
.search-result__link:focus-visible .search-result__title {
  color: var(--color-support);
}

.search-result__body {
  display: grid;
  gap: 4px;
  min-width: 0;
}

.search-result__title {
  color: var(--color-heading);
  font-size: 16px;
  font-weight: var(--font-weight-heading);
}

.search-result__meta {
  color: var(--color-meta);
  font-size: 12px;
}

.global-nav__link {
  display: block;
  padding: var(--space-1) 0;
  color: var(--color-heading);
  font-size: var(--type-meta);
  font-weight: var(--font-weight-heading);
  text-decoration: none;
}

.global-nav__link--calendar {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
}

.global-nav__link--calendar::before {
  width: 12px;
  height: 11px;
  border: 1px solid var(--color-support);
  background: linear-gradient(var(--color-support) 0 3px, transparent 3px);
  content: "";
}

.global-nav__item--mobile-only {
  display: none;
}

.global-nav__link:hover,
.global-nav__link:focus-visible {
  color: var(--color-support);
}

.header-genre-nav {
  border-bottom: 0;
  background: var(--color-white);
}

.header-genre-nav__inner {
  width: min(1180px, calc(100% - 40px));
  margin: 0 auto;
}

.header-genre-nav__list {
  display: grid;
  grid-template-columns: repeat(6, minmax(0, 1fr));
  gap: 0;
  margin: 0;
  padding: 0;
  border-bottom: 1px solid var(--color-border);
}

.header-genre-nav__item:nth-child(-n + 6) {
  border-bottom: 1px solid var(--color-border);
}

.header-genre-nav__link {
  position: relative;
  display: flex;
  min-height: var(--space-11);
  align-items: center;
  justify-content: center;
  padding: 0 var(--space-4);
  color: var(--color-heading);
  font-size: 12px;
  font-weight: var(--font-weight-nav);
  text-align: center;
  text-decoration: none;
  white-space: nowrap;
}

.header-genre-nav__link--calendar {
  gap: var(--space-2);
}

.header-genre-nav__link--calendar::before {
  width: 12px;
  height: 11px;
  border: 1px solid var(--color-support);
  background: linear-gradient(var(--color-support) 0 3px, transparent 3px);
  content: "";
}

.header-genre-nav__link:hover,
.header-genre-nav__link:focus-visible {
  color: var(--color-support);
}

.header-genre-nav__link.is-active {
  color: var(--color-support);
}

.header-genre-nav__link.is-active::after {
  position: absolute;
  right: var(--space-6);
  bottom: -1px;
  left: var(--space-6);
  height: 2px;
  background: var(--color-support);
  content: "";
}

.mobile-menu-toggle,
.mobile-menu-backdrop {
  display: none;
}

/* ページ外枠 */

.top-page {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 300px;
  align-items: start;
  gap: var(--space-7);
  width: min(1180px, calc(100% - 40px));
  margin: 0 auto;
  padding: var(--space-9) 0 var(--space-16);
  row-gap: var(--space-7);
}

.top-page__content {
  display: grid;
  min-width: 0;
  align-content: start;
  gap: var(--space-7);
}

.top-page > .page-sidebar {
  grid-column: 2;
  grid-row: 1;
}

.top-page.has-no-sidebar {
  grid-template-columns: minmax(0, 1fr);
  grid-template-areas:
    "press";
}



.top-page > .genre-widget {
  grid-area: genre;
}

.top-page > .pickup-widget {
  grid-area: pickup;
}

.top-page > .event-calendar { grid-area: calendar; }

.event-calendar-page__lead {
  margin: calc(var(--space-6) * -1) 0 var(--space-5);
  color: var(--color-meta);
}

.event-calendar__section-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-4);
  margin-bottom: var(--space-3);
}

.event-calendar__section-header .top-section-heading__title { margin: 0; }
.event-calendar__all-link { color: var(--color-heading); font-size: var(--type-meta); font-weight: var(--font-weight-heading); text-decoration: none; }
.event-calendar__all-link:hover,
.event-calendar__all-link:focus-visible { color: var(--color-support); }

.event-calendar__block { overflow: hidden; border: 1px solid var(--color-border); background: var(--color-white); }
.event-calendar__header { display: grid; grid-template-columns: 88px minmax(0, 1fr) 88px; align-items: center; gap: var(--space-2); padding: var(--space-2) var(--space-3); border-bottom: 1px solid var(--color-border); background: var(--color-bg-highlight); }
.event-calendar__month,
.event-calendar__results-header h2,
.event-calendar__results-header span { margin: 0; }
.event-calendar__month { color: var(--color-heading); text-align: center; }
.event-calendar__nav { min-height: 28px; padding: 0 var(--space-2); color: var(--color-heading); font-size: var(--type-meta); font-weight: var(--font-weight-heading); text-decoration: none; }
.event-calendar__nav:hover,
.event-calendar__nav:focus-visible { color: var(--color-support); }
.event-calendar__weekdays,
.event-calendar__grid { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); }
.event-calendar__weekdays span { padding: var(--space-1); border-bottom: 1px solid var(--color-border); color: var(--color-meta); font-size: var(--type-meta); font-weight: var(--font-weight-heading); text-align: center; }
.event-calendar__weekdays span:first-child,
.event-calendar__day:nth-child(7n + 1) { color: #B42318; }
.event-calendar__weekdays span:last-child,
.event-calendar__day:nth-child(7n) { color: #1D4ED8; }
.event-calendar__day { display: grid; min-height: 72px; padding: var(--space-1); align-content: start; border-right: 1px solid var(--color-border); border-bottom: 1px solid var(--color-border); background: var(--color-white); color: var(--color-heading); text-align: left; text-decoration: none; }
.event-calendar__day:nth-child(7n) { border-right: 0; }
.event-calendar__day:nth-last-child(-n + 7) { border-bottom: 0; }
.event-calendar__day:not(.is-blank):hover,
.event-calendar__day:focus-visible { background: rgba(237, 79, 131, 0.16); }
.event-calendar__day.is-blank { background: var(--color-bg-highlight); }
.event-calendar__day-number { display: inline-flex; width: 24px; height: 24px; align-items: center; justify-content: center; font-size: var(--type-meta); font-weight: var(--font-weight-heading); }
.event-calendar__day.is-selected { background: rgba(237, 79, 131, 0.16); }
.event-calendar__day.is-today .event-calendar__day-number { border-radius: 50%; background: var(--color-support); color: var(--color-white); }
.event-calendar__chips { display: grid; gap: var(--space-1); width: 100%; margin-top: var(--space-1); }
.event-calendar__chip { display: block; overflow: hidden; padding: 0 var(--space-1); background: var(--event-calendar-chip-color, var(--color-heading)); color: var(--color-white); font-size: var(--type-meta); font-weight: var(--font-weight-heading); line-height: 16px; text-align: center; text-overflow: ellipsis; white-space: nowrap; }
.event-calendar__more { color: var(--color-meta); font-size: var(--type-meta); text-align: center; }
.event-calendar__results { margin-top: var(--space-5); }
.event-calendar__results-header { display: flex; align-items: end; justify-content: space-between; gap: var(--space-4); margin-bottom: var(--space-3); }
.event-calendar__results-header span { color: var(--color-meta); font-size: var(--type-meta); }
.event-calendar__tile-list { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--space-4); margin: 0; padding: 0; }
.event-calendar__tile { min-width: 0; list-style: none; }
.event-calendar__tile-link { display: flex; min-width: 0; flex-direction: column; color: inherit; text-decoration: none; }
.event-calendar__tile-link:hover .event-calendar__tile-title,
.event-calendar__tile-link:focus-visible .event-calendar__tile-title { color: var(--color-support); }
.event-calendar__tile-image { position: relative; display: grid; width: 100%; height: var(--size-news-card-image); place-items: center; overflow: hidden; background: var(--color-bg-soft); }
.event-calendar__tile-image img { display: block; width: 100%; height: 100%; object-fit: cover; }
.event-calendar__tile-category { position: absolute; top: 6px; right: 6px; padding: var(--space-tag-y) var(--space-tag-x); background: var(--genre-chip-color, var(--color-heading)); color: var(--color-white); font-size: var(--font-size-image-genre-chip); font-weight: var(--font-weight-heading); }
.event-calendar__tile-content { display: flex; min-width: 0; flex: 1; flex-direction: column; gap: var(--space-2); padding: var(--space-3); }
.event-calendar__tile-title { color: var(--color-heading); font-size: var(--font-size-news-title); font-weight: var(--font-weight-heading); line-height: var(--line-height-news-title); overflow-wrap: anywhere; }
.event-calendar__tile-date { margin-top: auto; color: var(--color-meta); font-size: var(--font-size-news-date); }

.ranking-page,
.news-page,
.news-detail-page,
.person-detail,
.category-page {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 300px;
  align-items: start;
  gap: var(--space-7);
  width: min(1180px, calc(100% - 40px));
  margin: 0 auto;
  padding: var(--space-11) 0 var(--space-18);
}

.ranking-page.has-no-sidebar,
.news-page.has-no-sidebar,
.news-detail-page.has-no-sidebar,
.person-detail.has-no-sidebar,
.category-page.has-no-sidebar {
  grid-template-columns: minmax(0, 1fr);
}

.page-layout__main,
.page-sidebar {
  min-width: 0;
}

.breadcrumb {
  margin-bottom: var(--space-3);
}

.breadcrumb__list {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--space-1);
  margin: 0;
  padding: 0;
  color: var(--color-meta);
  font-size: var(--type-meta);
  list-style: none;
}

.breadcrumb__list li + li::before {
  margin-right: var(--space-1);
  color: var(--color-meta);
  content: "›";
}

.breadcrumb__link {
  color: var(--color-meta);
}

.breadcrumb__current {
  color: var(--color-heading);
}

.category-page__block + .category-page__block {
  margin-top: var(--space-8);
}

.search-page__calendar,
.genre-directory-calendar {
  margin-top: var(--space-18);
}

.page-sidebar {
  display: grid;
  align-content: start;
  gap: var(--space-6);
}

.affiliate-widget {
  position: relative;
  min-width: 0;
  text-align: center;
}

.affiliate-widget__label {
  margin: 0 0 var(--space-1);
  color: var(--color-meta);
  font-size: 12px;
  line-height: 1.5;
  text-align: left;
}

.affiliate-widget__link,
.affiliate-widget__image {
  display: block;
}

.affiliate-widget__link {
  width: min(300px, 100%);
  margin: 0 auto;
}

.affiliate-widget__image {
  width: 100%;
  height: auto;
}

.affiliate-widget__tracking {
  position: absolute;
  width: 1px;
  height: 1px;
  overflow: hidden;
}

.affiliate-bottom-banner {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 300px;
  gap: var(--space-7);
  width: min(1180px, calc(100% - 40px));
  margin: 0 auto;
  padding: 0 0 var(--space-10);
}

.affiliate-widget--bottom {
  grid-column: 1;
  width: min(728px, 100%);
  margin: 0 auto;
}

.affiliate-widget--bottom .affiliate-widget__link {
  width: 100%;
}

.ranking-page__title,
.news-page__title,
.news-detail__title,
.person-header__name {
  color: var(--color-heading);
  line-height: var(--line-height-tight);
  overflow-wrap: anywhere;
}

.ranking-page__title {
  display: block;
  margin: 0;
  font-size: var(--font-size-page-compact);
  font-weight: var(--font-weight-heading);
}

.ranking-page__header {
  display: grid;
  gap: var(--space-2);
  margin-bottom: var(--space-6);
}

.ranking-page__description {
  margin: 0;
  color: var(--color-text);
  font-size: var(--font-size-body);
  line-height: var(--line-height-body);
}

.news-page__title {
  margin-bottom: var(--space-6);
}

.news-page__title {
  font-size: var(--type-section);
}

/* 共通ブロック */

.ranking-block,
.news-widget,
.genre-widget,
.pickup-widget,
.popular-press-widget,
.ranking-filter,
.news-section {
  min-width: 0;
}

.ranking-block__header,
.news-widget__header,
.genre-widget__header,
.pickup-widget__header,
.popular-press-widget__header {
  padding: var(--space-4) var(--space-5);
  background: var(--color-bg-soft);
}

/* 右カラムの見出しは、ランキング本文の開始位置と揃える。 */
.page-sidebar .genre-widget__header,
.page-sidebar .pickup-widget__header,
.page-sidebar .popular-press-widget__header {
  padding-top: 0;
}

.news-widget__header,
.genre-widget__header,
.pickup-widget__header,
.popular-press-widget__header {
  padding-bottom: var(--space-2);
}

/* トップはサイドバーではなく、右カラムへ直接配置されている。 */
.top-page > .genre-widget .genre-widget__header,
.top-page > .pickup-widget .pickup-widget__header {
  padding-top: 0;
}

/* ランキングは本文の絞り込み位置と揃うよう、右ウィジェットを下げる。 */
.ranking-page > .page-sidebar {
  margin-top: var(--space-7);
}

.ranking-page > .page-sidebar .genre-widget__header,
.ranking-page > .page-sidebar .pickup-widget__header,
.ranking-page > .page-sidebar .popular-press-widget__header {
  padding-top: 0;
}

.ranking-block__title,
.news-widget__title,
.genre-widget__title,
.pickup-widget__title,
.popular-press-widget__title,
.news-detail__section-title {
  position: relative;
  margin: 0;
  padding-left: var(--space-3);
  color: var(--color-heading);
  font-size: var(--type-section);
  font-weight: var(--font-weight-heading);
  line-height: var(--line-height-section);
}

.ranking-block__title::before,
.news-widget__title::before,
.genre-widget__title::before,
.pickup-widget__title::before,
.popular-press-widget__title::before,
.news-detail__section-title::before {
  position: absolute;
  top: 0.18em;
  bottom: 0.18em;
  left: 0;
  width: 4px;
  background: var(--color-gold);
  content: "";
}

.top-section-heading,
.content-section-heading {
  margin-bottom: var(--space-4);
  padding: 0 0 var(--space-2);
  border-bottom: 1px solid var(--color-border);
  background: transparent;
}

.top-section-heading__title,
.content-section-heading__title,
.press-release-page .news-page__title,
.event-calendar-page .news-page__title {
  font-size: var(--font-size-page-compact);
  font-weight: var(--font-weight-heading);
  line-height: var(--line-height-tight);
}

.top-section-heading__title,
.content-section-heading__title {
  margin: 0;
  padding-left: 0;
  color: var(--color-heading);
}

.top-section-heading__title::before,
.content-section-heading__title::before {
  content: none;
}

/* ページ本文の開始位置は、トップ・ランキング・記事一覧で共通化する。 */
.top-page,
.ranking-page,
.news-page,
.news-detail-page,
.person-detail,
.category-page {
  padding-top: var(--space-11);
}

/* 人物横リスト */

.ranking-block__list {
  display: grid;
  gap: var(--space-2);
  margin: 0;
}

.person-row {
  display: grid;
  grid-template-columns: 104px minmax(0, 1fr);
  grid-template-rows: auto auto auto;
  align-items: start;
  position: relative;
  gap: var(--space-2);
  min-width: 0;
  padding: var(--space-4) var(--space-5);
  border: 1px solid var(--color-border);
  background: var(--color-white);
  transition: background-color 160ms ease, transform 160ms ease;
}

.person-row--clickable {
  cursor: pointer;
}

.person-row:hover,
.person-row:focus-within {
  background: var(--color-bg-highlight);
  transform: translateX(2px);
}

/* ランキング行共通の順位表示。 */
.ranking-block .person-row::after {
  position: absolute;
  top: var(--space-3);
  right: var(--space-4);
  left: auto;
  z-index: 0;
  color: var(--color-border);
  content: attr(data-rank);
  font-size: clamp(48px, 6vw, 84px);
  font-weight: 800;
  line-height: 1;
  pointer-events: none;
}

.ranking-block .person-row > * {
  position: relative;
  z-index: 1;
}

.ranking-block .person-row__name {
  position: relative;
  z-index: 1;
}

/* 小さい順位バッジは使わず、右上の透かし順位だけを使う。 */
.ranking-block .person-row__rank {
  display: none;
}

.person-row__rank,
.person-row__avatar,
.person-row__sns,
.person-row__value {
  min-width: 0;
  overflow-wrap: anywhere;
}

.person-row__sns,
.account-row__sns {
  display: inline-grid;
  width: 24px;
  height: 24px;
  place-items: center;
  overflow: hidden;
  background-position: center;
  background-repeat: no-repeat;
  background-size: contain;
  color: transparent;
  font-size: 0;
}

.person-row__sns-list {
  display: inline-flex;
  gap: var(--space-1);
  align-items: center;
  flex-wrap: nowrap;
}

[aria-label="YouTube"] { background-image: url("assets/social/youtube.svg"); }
[aria-label="TikTok"] { background-image: url("assets/social/tiktok.svg"); }
[aria-label="Instagram"] { background-image: url("assets/social/instagram.svg"); }
[aria-label="X"] { background-image: url("assets/social/x.svg"); }
[aria-label="Threads"] { background-image: url("assets/social/threads.svg"); }
[aria-label="Substack"] { background-image: url("assets/social/substack.svg"); }

.person-row__rank {
  display: none;
}

.person-row:nth-child(1) .person-row__rank {
  background: var(--color-rank-gold);
  color: var(--color-white);
}

.person-row:nth-child(2) .person-row__rank {
  background: var(--color-rank-silver);
  color: var(--color-white);
}

.person-row:nth-child(3) .person-row__rank {
  background: var(--color-rank-bronze);
  color: var(--color-white);
}

.person-row__avatar {
  display: grid;
  grid-column: 1;
  grid-row: 1;
  place-items: center;
  width: var(--size-avatar-lg);
  aspect-ratio: 1;
  overflow: hidden;
  border: 0;
  border-radius: 0;
  background: var(--color-white);
  color: var(--color-heading);
  font-size: var(--font-size-avatar);
  line-height: var(--line-height-avatar);
  text-align: center;
}

.person-row__avatar img,
.person-header__icon img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.person-image-placeholder {
  display: grid;
  width: 100%;
  height: 100%;
  place-items: center;
  background: var(--color-bg-highlight);
  color: var(--color-meta);
  font-size: var(--font-size-meta);
  text-align: center;
}

.person-image-placeholder--platform {
  padding: var(--space-5);
}

.person-image-placeholder--platform img {
  width: 52%;
  height: 52%;
  object-fit: contain;
}

.person-row--related {
  grid-template-columns:
    104px
    minmax(0, 1fr)
    28px
    7ch;
}

.person-row__content {
  min-width: 0;
}

.person-row__name {
  display: inline-block;
  max-width: 100%;
  color: var(--color-heading);
  font-size: var(--font-size-name);
  font-weight: var(--font-weight-heading);
  line-height: var(--line-height-name);
  overflow-wrap: anywhere;
}

.person-row__summary {
  display: -webkit-box;
  margin: var(--space-1) 0 0;
  overflow: hidden;
  color: var(--color-text);
  font-size: var(--font-size-summary);
  line-height: var(--line-height-summary);
  overflow-wrap: anywhere;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
}

.person-row__sns {
  justify-self: end;
  color: var(--color-heading);
  font-size: var(--font-size-sns);
  font-weight: var(--font-weight-heading);
  line-height: var(--line-height-sns);
  text-align: center;
}

.person-row__value {
  justify-self: end;
  color: var(--color-heading);
  font-size: var(--font-size-value);
  font-weight: var(--font-weight-heading);
  line-height: var(--line-height-value);
  text-align: right;
  white-space: nowrap;
}

.person-row--value-under-name {
  grid-template-columns:
    104px
    minmax(0, 1fr);
}

.person-row__meta {
  display: flex;
  gap: var(--space-2);
  align-items: baseline;
  margin-top: var(--space-1);
}

.person-row__meta--side {
  grid-column: 2;
  grid-row: 2;
  align-items: center;
  justify-self: start;
  margin-top: var(--space-1);
}

.person-row__meta--side .person-row__value {
  margin: 0;
}

.person-row__meta--overall {
  display: inline-flex;
  gap: var(--space-3);
  align-items: center;
  justify-content: flex-end;
}

.person-row__meta--overall .person-row__value {
  order: 1;
}

.person-row__meta--overall .person-row__sns-list {
  order: 2;
}

.person-row--value-under-name .person-row__sns,
.person-row--value-under-name .person-row__value {
  justify-self: initial;
  text-align: left;
}

.person-row__content {
  display: contents;
}

.person-row__avatar {
  grid-row: 1 / -1;
  align-self: center;
}

.person-row__name {
  grid-column: 2;
  grid-row: 1;
}

.person-row__meta--side {
  grid-column: 2;
  grid-row: 2;
  align-self: center;
  justify-self: start;
  margin-top: var(--space-1);
}

.person-row__summary {
  grid-column: 2;
  grid-row: 3;
  margin-top: var(--space-1);
}

.ranking-block--support .person-row__value {
  color: var(--color-heading);
}

.ranking-block__more,
.news-widget__more,
.genre-widget__more,
.pickup-widget__more {
  display: block;
  padding: var(--space-3) var(--space-5);
  color: var(--color-heading);
  font-size: var(--font-size-link);
  font-weight: var(--font-weight-heading);
  text-align: right;
}

/* トップのランキング末尾リンクは、右下の小型CTAに統一する。 */
.top-page .ranking-block__more {
  display: flex;
  width: max-content;
  margin: var(--space-2) 0 0 auto;
  padding: var(--space-2) var(--space-3);
  border: 1px solid var(--color-border);
  background: var(--color-white);
  font-size: var(--type-meta);
  line-height: 1.2;
  text-decoration: none;
}

.top-page .ranking-block__more:hover,
.top-page .ranking-block__more:focus-visible {
  border-color: var(--color-heading);
  background: var(--color-bg-highlight);
}

.top-page .news-widget__more {
  display: flex;
  width: max-content;
  margin: var(--space-2) 0 0 auto;
  padding: var(--space-2) var(--space-3);
  border: 1px solid var(--color-border);
  background: var(--color-white);
  font-size: var(--type-meta);
  line-height: 1.2;
  text-decoration: none;
}

.top-page .news-widget__more:hover,
.top-page .news-widget__more:focus-visible {
  border-color: var(--color-heading);
  background: var(--color-bg-highlight);
}

.genre-widget__more,
.pickup-widget__more {
  display: flex;
  width: max-content;
  margin: var(--space-2) 0 0 auto;
  padding: var(--space-2) var(--space-3);
  border: 1px solid var(--color-border);
  background: var(--color-white);
  font-size: var(--type-meta);
  line-height: 1.2;
  text-decoration: none;
}

.genre-widget__more:hover,
.genre-widget__more:focus-visible,
.pickup-widget__more:hover,
.pickup-widget__more:focus-visible {
  border-color: var(--color-heading);
  background: var(--color-bg-highlight);
}

.top-page .ranking-block__title {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  padding-left: 0;
}

.top-page .ranking-block__title::before {
  display: none;
}

.ranking-block__title-icons {
  display: inline-flex;
  align-items: center;
  gap: 3px;
  flex: 0 0 auto;
}

.ranking-block__title-icons img {
  display: block;
  width: 20px;
  height: 20px;
  object-fit: contain;
}

.top-page .ranking-block--overall .ranking-block__title-icons img {
  width: 17px;
  height: 17px;
}

.ranking-more {
  display: block;
  width: calc(100% - var(--space-8));
  margin: var(--space-5) auto;
  padding: var(--space-3) var(--space-4);
  border: 1px solid var(--color-border);
  background: var(--color-white);
  color: var(--color-heading);
  font-size: var(--font-size-link);
  font-weight: var(--font-weight-heading);
}

.ranking-pagination {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-2);
  padding-top: 4px;
  padding-right: 0;
  padding-bottom: 4px;
  padding-left: 0;
  margin: 0;
}

.ranking-pagination__button {
  display: grid;
  width: 36px;
  height: 36px;
  min-width: 36px;
  min-height: 36px;
  padding: var(--space-1) var(--space-2);
  border: 1px solid var(--color-border);
  background: var(--color-white);
  color: var(--color-heading);
  font-size: var(--type-meta);
  font-weight: var(--font-weight-heading);
  cursor: pointer;
  place-items: center;
  line-height: 1;
}

.ranking-pagination__button:hover,
.ranking-pagination__button:focus-visible,
.ranking-pagination__button.is-active {
  border-color: var(--color-heading);
  background: var(--color-heading);
  color: var(--color-white);
}

.list-pagination {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: var(--space-2);
  margin: var(--space-6) 0 0;
}

.list-pagination__link {
  display: grid;
  width: 36px;
  height: 36px;
  min-width: 36px;
  min-height: 36px;
  border: 1px solid var(--color-border);
  background: var(--color-white);
  color: var(--color-heading);
  font-size: var(--type-meta);
  font-weight: var(--font-weight-heading);
  place-items: center;
  line-height: 1;
  text-decoration: none;
}

.list-pagination__link:hover,
.list-pagination__link:focus-visible,
.list-pagination__link.is-active {
  border-color: var(--color-heading);
  background: var(--color-heading);
  color: var(--color-white);
}

.ranking-more:hover,
.ranking-more:focus-visible {
  border-color: var(--color-heading);
  background: var(--color-bg-highlight);
}

/* 右カラムのリンクカード */

.genre-widget__list,
.pickup-widget__content {
  margin: 0;
  padding: 0;
}

.widget-card,
.news-list__link {
  display: grid;
  grid-template-columns: 104px minmax(0, 1fr);
  gap: var(--space-3);
  align-items: center;
  padding: var(--space-4) var(--space-5);
  border-bottom: 1px solid var(--color-border);
  color: inherit;
  text-decoration: none;
  transition: background-color 160ms ease, transform 160ms ease;
}

.news-widget .news-list__link,
.news-page .news-list__link {
  border-bottom: 0;
}

.widget-card:hover,
.widget-card:focus-visible,
.news-list__link:hover,
.news-list__link:focus-visible {
  background: var(--color-bg-highlight);
  transform: translateX(2px);
}

.widget-card__image {
  display: grid;
  place-items: center;
  width: 104px;
  aspect-ratio: 1;
  border: 0;
  background: var(--color-bg-soft);
  font-size: var(--font-size-widget-icon);
}

.pickup-widget .widget-card__image {
  aspect-ratio: 1;
  overflow: hidden;
}

.widget-card__image img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.feature-thumb__icon {
  display: grid;
  width: 100%;
  height: 100%;
  place-items: center;
  background: var(--color-bg-highlight);
  font-size: 1.8rem;
}

.featured-person-card .widget-card__summary {
  color: var(--color-heading);
  font-weight: var(--font-weight-heading);
}

.widget-card__body {
  display: grid;
  min-width: 0;
  gap: var(--space-1);
}

.widget-card__title {
  color: var(--color-heading);
  font-size: var(--font-size-widget-title);
  font-weight: var(--font-weight-heading);
  line-height: var(--line-height-section);
}

.widget-card__summary {
  color: var(--color-text);
  font-size: var(--font-size-widget-summary);
  line-height: var(--line-height-widget-summary);
  overflow-wrap: anywhere;
}

.genre-widget__list {
  margin: 0;
}

.genre-widget__item {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-3);
  padding: var(--space-4) var(--space-5);
  border-bottom: 1px solid var(--color-border);
}

.genre-widget__item > .genre-card,
.pickup-widget__content > .widget-card {
  width: 100%;
  box-sizing: border-box;
}

.genre-card {
  position: relative;
  grid-template-columns: 52px minmax(0, 1fr);
  gap: var(--space-3);
  min-height: 72px;
  padding: var(--space-3) var(--space-4);
}

.genre-card .widget-card__image {
  width: 52px;
  height: 52px;
  min-height: 52px;
  aspect-ratio: 1 / 1;
  flex: 0 0 52px;
  overflow: hidden;
  border: 0;
  background: var(--color-bg-highlight);
  font-size: 1.35rem;
}

.genre-card .widget-card__image img,
.genre-directory .widget-card__image img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.genre-widget__list .data-empty-row {
  padding: var(--space-5);
}

.genre-widget__name {
  color: var(--color-heading);
  font-weight: var(--font-weight-heading);
}

.genre-widget__ranking-link {
  flex: 0 0 auto;
  font-size: var(--font-size-widget-link);
}

.pickup-widget__content {
  padding: 0;
}

.popular-press-widget__list {
  display: grid;
  margin: 0;
  padding: 0;
  list-style: none;
}

.popular-press-card {
  display: grid;
  grid-template-columns: 96px minmax(0, 1fr);
  align-items: center;
  gap: var(--space-3);
  min-height: 72px;
  padding: var(--space-3) var(--space-4);
  border-bottom: 1px solid var(--color-border);
  color: inherit;
  text-decoration: none;
  transition: background-color 160ms ease, transform 160ms ease;
}

.popular-press-card:hover,
.popular-press-card:focus-visible {
  background: var(--color-bg-highlight);
  transform: translateX(2px);
}

.popular-press-card__image {
  display: block;
  width: 96px;
  aspect-ratio: 16 / 9;
  overflow: hidden;
  background: var(--color-bg-highlight);
}

.popular-press-card__image img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.popular-press-card__body {
  display: grid;
  min-width: 0;
  gap: var(--space-1);
}

.popular-press-card__title {
  display: -webkit-box;
  overflow: hidden;
  color: var(--color-heading);
  font-size: var(--font-size-widget-title);
  font-weight: var(--font-weight-heading);
  line-height: var(--line-height-section);
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
}

.popular-press-card__meta {
  overflow: hidden;
  color: var(--color-meta);
  font-size: var(--font-size-widget-summary);
  line-height: var(--line-height-widget-summary);
  text-overflow: ellipsis;
  white-space: nowrap;
}

.pickup-widget__target,
.pickup-widget__count {
  margin-bottom: 0;
  overflow-wrap: anywhere;
}

.pickup-widget__target + .pickup-widget__count {
  margin-top: var(--space-2);
}

/* フッター */

.site-footer {
  border-top: 1px solid var(--color-border);
  background: var(--color-bg-soft);
}

.site-footer__logo {
  display: block;
  width: 176px;
  height: auto;
  aspect-ratio: 1582 / 256;
  margin: 0;
}

.site-footer__logo img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: contain;
}

.site-footer__inner {
  display: grid;
  grid-template-columns: minmax(220px, 0.8fr) minmax(0, 2fr);
  gap: var(--space-8);
  width: min(1180px, calc(100% - 48px));
  margin: 0 auto;
  padding: var(--space-8) 0;
}

.site-footer__brand {
  min-width: 0;
}

.site-footer__brand p {
  max-width: 280px;
  margin: var(--space-4) 0 0;
  color: var(--color-meta);
  font-size: var(--type-meta);
  line-height: var(--line-height-widget-summary);
}

.site-footer__nav {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: var(--space-7);
  padding: 0;
}

.site-footer__list {
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
  margin: 0;
}

.site-footer__link {
  color: var(--color-heading);
  font-size: var(--type-body);
  line-height: var(--line-height-root);
  text-decoration: none;
}

.site-footer__link:hover,
.site-footer__link:focus-visible {
  text-decoration: underline;
  text-underline-offset: 3px;
}

.site-footer__bottom {
  width: min(1180px, calc(100% - 48px));
  margin: 0 auto;
  padding: var(--space-4) 0 var(--space-6);
  border-top: 1px solid var(--color-border);
}

.site-footer__copyright {
  margin: 0;
  color: var(--color-meta);
  font-size: var(--type-meta);
  text-align: center;
}

@media (max-width: 720px) {
  .site-footer__inner {
    grid-template-columns: 1fr;
    gap: var(--space-8);
    width: calc(100% - 48px);
    padding: var(--space-8) 0;
  }

  .site-footer__brand {
    text-align: center;
  }

  .site-footer__logo {
    margin: 0 auto;
  }

  .site-footer__brand p {
    margin: var(--space-4) auto 0;
  }

  .site-footer__nav {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: var(--space-7) var(--space-6);
  }

  .site-footer__group--info {
    grid-column: 1 / -1;
  }

  .site-footer__group--info .site-footer__list {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: var(--space-3) var(--space-6);
  }

  .site-footer__bottom {
    width: calc(100% - 48px);
  }
}

/* ランキング絞り込み */

.ranking-filter {
  padding: var(--space-2) var(--space-3) var(--space-2);
  background: var(--color-white);
}

.ranking-page .ranking-filter__group {
  grid-template-columns: minmax(0, 1fr);
  padding: var(--space-1) 0;
}

.ranking-page .ranking-filter__label {
  display: none;
}

.ranking-page .ranking-filter {
  margin: 0;
  padding-bottom: 0;
}

.ranking-page .ranking-filter + .ranking-block {
  margin-top: 0;
}

.ranking-filter__group {
  display: grid;
  grid-template-columns: var(--size-filter-label) minmax(0, 1fr);
  gap: var(--space-2);
  padding: var(--space-2) 0;
}

.ranking-filter__label {
  margin: var(--space-1) 0 0;
  color: var(--color-heading);
  font-size: var(--type-meta);
  font-weight: var(--font-weight-heading);
}

.ranking-filter__options {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-1);
  min-width: 0;
}

.ranking-filter__option {
  min-height: var(--space-7);
  padding: var(--space-1) var(--space-2);
  border: 1px solid var(--color-border);
  border-radius: 4px;
  background: var(--color-white);
  color: var(--color-heading);
  font-size: var(--type-meta);
  font-weight: var(--font-weight-heading);
}

.ranking-filter__option:hover,
.ranking-filter__option:focus-visible {
  border-color: var(--color-gold-light);
}

/* 未提供データのフィルター。JSの判定ロジックは残し、UIだけ一時停止する。 */
.ranking-filter__option--future,
.ranking-filter__group--period {
  display: none;
}

.ranking-filter__option.is-active {
  border-color: var(--color-ui-active);
  background: var(--color-ui-active);
  color: var(--color-white);
}

.page-layout__main > .ranking-block {
  margin-top: var(--space-8);
}

/* 記事詳細 */

.news-detail {
  min-width: 0;
}

.news-detail__tags {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-2);
  margin-bottom: var(--space-3);
}

.news-detail__type,
.news-detail__category {
  display: inline-block;
  padding: var(--space-1) var(--space-2);
  border-radius: 0;
  font-size: var(--font-size-mobile-rank);
  font-weight: var(--font-weight-normal);
}

.news-detail__type {
  background: var(--color-heading);
  color: var(--color-white);
}

.news-detail__category {
  background: var(--color-bg-highlight);
  color: var(--color-gold-dark);
  text-decoration: none;
}

.news-detail__category.genre-chip {
  background: var(--genre-chip-color, var(--color-heading));
  color: var(--color-white);
}

.news-list__category.genre-chip {
  padding: 1px var(--space-1);
  background: var(--genre-chip-color, var(--color-heading));
  border-radius: 3px;
  color: var(--color-white);
  font-size: var(--font-size-mobile-rank);
  font-weight: var(--font-weight-normal);
}

.news-detail__title {
  margin-bottom: var(--space-3);
  font-size: var(--type-page);
}

.news-detail__back {
  display: inline-block;
  margin-bottom: var(--space-5);
  color: var(--color-heading);
  font-size: var(--type-meta);
  font-weight: var(--font-weight-heading);
  text-decoration: none;
}

.news-detail__back:hover,
.news-detail__back:focus-visible {
  color: var(--color-support);
}

.news-detail__back--footer {
  margin: var(--space-8) 0 0;
}

.news-detail__summary {
  margin: 0 0 var(--space-3);
  color: var(--color-text);
}

.article-hero {
  display: flex;
  flex-direction: column;
  gap: var(--space-1);
  margin-bottom: var(--space-7);
}

.article-meta-actions {
  display: flex;
  width: min(100%, 640px);
  min-height: 44px;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-4);
  margin: 0 auto;
  padding: 0;
}

.article-meta {
  margin: 0;
  color: var(--color-meta);
  font-size: var(--type-meta);
}

.article-action-group {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--space-2);
  margin-left: auto;
}

.article-action-button {
  display: inline-flex;
  min-height: 44px;
  align-items: center;
  gap: var(--space-2);
  padding: 0;
  border: 0;
  background: transparent;
  color: var(--color-heading);
  font-size: var(--type-meta);
  font-weight: var(--font-weight-heading);
  text-decoration: none;
}

.article-action-button:hover,
.article-action-button:focus-visible {
  color: var(--color-support);
}

.article-action-button:focus-visible {
  outline: 2px solid var(--color-heading);
  outline-offset: 2px;
}

.article-action-button--x {
  position: relative;
  width: 44px;
  margin-right: var(--space-2);
  justify-content: center;
  background: transparent;
}

.article-action-button--x:hover,
.article-action-button--x:focus-visible {
  background: transparent;
  color: var(--color-support);
}

.article-action-button--x img {
  display: block;
  width: var(--size-support-circle);
  height: var(--size-support-circle);
}

.article-action-button--x::after {
  position: absolute;
  bottom: calc(50% + (var(--size-support-circle) / 2) + var(--space-2));
  left: 50%;
  display: none;
  padding: var(--space-2) var(--space-3);
  transform: translateX(-50%);
  border-radius: 4px;
  background: var(--color-heading);
  color: var(--color-white);
  content: attr(data-tooltip);
  font-size: var(--type-meta);
  font-weight: var(--font-weight-heading);
  white-space: nowrap;
}

.article-action-button--x:focus-visible::after {
  display: block;
}

@media (hover: hover) and (pointer: fine) {
  .article-action-button--x:has(img:hover)::after {
    display: block;
  }
}

.news-detail__body {
  font-size: var(--font-size-detail-body);
  line-height: var(--line-height-detail-body);
  overflow-wrap: anywhere;
}

.news-detail__body h2,
.news-detail__body h3 {
  margin: var(--space-8) 0 var(--space-4);
  line-height: var(--line-height-heading);
}

.news-detail__body h2 {
  font-size: var(--type-section);
}

.news-detail__body h3 {
  font-size: var(--type-subsection);
}

.news-detail__body ul {
  margin: 0 0 var(--space-6);
  padding-left: 1.4em;
}

.news-detail__body li + li {
  margin-top: var(--space-2);
}

.news-detail__body figure {
  width: min(100%, 480px);
  margin: var(--space-7) 0;
}

.news-detail__body figure.press-release-image--wide {
  width: 100%;
}

.news-detail__body figure img {
  display: block;
  width: 100%;
  height: auto;
  max-height: 640px;
  object-fit: contain;
}

.news-detail__body .press-release-embed {
  width: 100%;
  margin: var(--space-7) 0;
  aspect-ratio: 16 / 9;
  background: var(--color-bg-soft);
}

.news-detail__body .press-release-embed iframe {
  display: block;
  width: 100%;
  height: 100%;
  border: 0;
}

.news-detail__body > :last-child {
  margin-bottom: 0;
}

.news-detail__image {
  width: min(100%, 640px);
  height: auto;
  min-height: 0;
  margin: 0;
  margin-inline: auto;
  border: 1px solid var(--color-border);
  background: var(--color-bg-soft);
}

.news-detail__image img {
  display: block;
  width: 100%;
  height: auto;
  max-height: 640px;
  object-fit: contain;
  object-position: center center;
}

.news-detail__related-person,
.news-detail__related-person {
  margin-top: var(--space-10);
  padding-top: var(--space-6);
  border-top: 1px solid var(--color-border);
}

.news-detail__related-news {
  margin-top: var(--space-10);
  padding-top: var(--space-6);
  border-top: 1px solid var(--color-border);
}

.news-detail__related-news .news-list {
  margin-top: var(--space-5);
}

.news-detail__section-title {
  margin-bottom: var(--space-5);
  font-size: var(--font-size-detail-section);
}

.news-detail__related-person-list {
  margin: 0;
}

.news-detail__related-person-item {
  padding: var(--space-3) 0;
  border-bottom: 1px solid var(--color-border);
}

.news-detail__support {
  margin-top: var(--space-9);
}

.news-detail__support-button,
.person-header__support-button {
  min-height: 44px;
  padding: var(--space-2) var(--space-5);
  border: 1px solid var(--color-support);
  border-radius: 4px;
  background: var(--color-support);
  color: var(--color-white);
  font-weight: var(--font-weight-heading);
}

.news-detail__support-count {
  margin: var(--space-3) 0 0;
  font-size: var(--font-size-support-count);
}

.news-detail__support-count-label {
  margin-right: var(--space-2);
  color: var(--color-heading);
  font-weight: var(--font-weight-heading);
}

.news-detail__support-count-value {
  color: var(--color-heading);
  font-weight: var(--font-weight-heading);
}

/* 人物ヘッダー */

.person-header {
  display: grid;
  grid-template-columns: var(--size-avatar-header) minmax(0, 1fr);
  gap: var(--space-5);
  align-items: start;
  padding: var(--space-5);
  border: 1px solid var(--color-border);
  background: var(--color-white);
}

.person-header__icon {
  display: grid;
  place-items: center;
  aspect-ratio: 1;
  overflow: hidden;
  border: 1px solid var(--color-gold-light);
  border-radius: 0;
  background: var(--color-bg-highlight);
  color: var(--color-heading);
  font-size: var(--font-size-header-icon);
  text-align: center;
}

.person-header__media {
  min-width: 0;
}

.person-header__content {
  min-width: 0;
}

.person-header__name {
  margin-bottom: var(--space-3);
  font-size: var(--type-page);
}

.person-header__summary {
  margin-bottom: var(--space-5);
  font-size: var(--type-body);
  line-height: var(--line-height-header-summary);
  overflow-wrap: anywhere;
}

.person-header__total {
  margin: 0 0 var(--space-3);
  color: var(--color-meta);
}

.person-header__total strong {
  margin-left: var(--space-1);
  color: var(--color-heading);
  font-weight: var(--font-weight-heading);
}

.person-header__meta {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-1) var(--space-3);
  margin-bottom: var(--space-3);
}

.person-header__meta-item {
  min-width: 0;
  display: flex;
  gap: var(--space-1);
  align-items: baseline;
}

.person-header__meta-label,
.person-header__meta-value {
  margin: 0;
  overflow-wrap: anywhere;
}

.person-header__meta-label {
  color: var(--color-meta);
  font-size: var(--type-meta);
  font-weight: var(--font-weight-heading);
}

.person-header__meta-value {
  margin: 0;
  color: var(--color-heading);
  font-size: var(--type-meta);
}

.person-header__meta-value .news-list__category + .news-list__category {
  margin-left: var(--space-1);
}

.person-header__official-link {
  display: inline-block;
  margin: 0 var(--space-2) var(--space-2) 0;
  overflow-wrap: anywhere;
  font-size: var(--font-size-official-link);
}

.person-header__support {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: var(--space-2);
  margin-top: var(--space-2);
}

.person-header__support-count {
  color: var(--color-meta);
  font-size: var(--type-meta);
  font-weight: var(--font-weight-heading);
}

/* 人物詳細共通セクション */

.person-section {
  margin-top: var(--space-6);
  padding: 0;
}

.person-section + .person-section {
  margin-top: var(--space-8);
}

/* 人物詳細一覧 */

.account-list,
.post-list,
.classification-block__list,
.related-person-list {
  margin: 0;
}

.account-list {
  display: grid;
  gap: 0;
  margin: 0 var(--space-5);
}

.related-person-list__item {
  border: 1px solid var(--color-border);
}

.account-list__item {
  border-bottom: 1px solid var(--color-border);
}

.account-list__item:last-child {
  border-bottom: 0;
}

.account-row {
  display: grid;
  grid-template-columns: var(--size-account-icon) minmax(0, 1fr);
  gap: var(--space-2);
  align-items: center;
  padding: var(--space-2) 0;
  color: inherit;
  text-decoration: none;
}

.account-row__sns {
  color: var(--color-heading);
  font-size: var(--font-size-sns);
  font-weight: var(--font-weight-heading);
}

.account-row__stats {
  min-width: 0;
  color: var(--color-meta);
  font-size: var(--type-body);
  line-height: var(--line-height-account);
  overflow-wrap: anywhere;
}

strong {
  color: var(--color-heading);
  font-weight: var(--font-weight-heading);
}

.post-list,
.classification-block__list,
.related-person-list {
  margin: var(--space-4) var(--space-5) var(--space-5);
}

.post-list__detail {
  min-width: 0;
  display: flex;
  gap: var(--space-1);
  align-items: baseline;
  padding: 0;
}

.account-list__label,
.account-list__value,
.post-list__label,
.post-list__value {
  margin: 0;
  overflow-wrap: anywhere;
}

.account-list__label,
.post-list__label {
  color: var(--color-heading);
  font-size: var(--font-size-post-label);
  font-weight: var(--font-weight-heading);
}

.account-list__value,
.post-list__value {
  margin-top: var(--space-1);
  font-size: var(--font-size-post-value);
}

.post-list__title {
  margin-bottom: var(--space-3);
  color: var(--color-heading);
  font-size: var(--font-size-post-title);
  font-weight: var(--font-weight-heading);
  line-height: var(--line-height-post-title);
  overflow-wrap: anywhere;
}

/* 投稿一覧 */

.post-list__item {
  display: grid;
  grid-template-columns: var(--size-post-thumbnail) minmax(0, 1fr);
  gap: var(--space-5);
  padding: 0;
}

.post-list__thumbnail {
  display: grid;
  place-items: center;
  min-height: var(--size-post-thumbnail);
  overflow: hidden;
  background: var(--color-bg-soft);
  color: var(--color-heading);
  font-size: var(--font-size-post-thumb);
  text-align: center;
}

.post-list__content {
  min-width: 0;
}

.post-list__details {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-2) var(--space-4);
  margin: 0 0 var(--space-3);
}

.post-list__link {
  display: inline-block;
  overflow-wrap: anywhere;
}

.news-list-block .news-list__item,
.comment-block__content,
.related-person-list__item {
  padding: var(--space-4);
  overflow-wrap: anywhere;
}

.classification-block__list {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-2);
}

/* タブレット */

@media (max-width: 920px) {
  .affiliate-bottom-banner {
    grid-template-columns: minmax(0, 1fr);
  }

  .top-page {
    display: block;
    width: min(760px, calc(100% - 32px));
    padding-top: var(--space-7);
  }

  .top-page__content { margin-bottom: var(--space-7); }

  .event-calendar__day {
    min-height: 56px;
    padding: 2px;
  }

  .event-calendar__header {
    grid-template-columns: 76px minmax(0, 1fr) 76px;
    padding: var(--space-1) var(--space-2);
  }

  .event-calendar__nav,
  .event-calendar__weekdays span,
  .event-calendar__chip,
  .event-calendar__more { font-size: 10px; }

  .event-calendar__chip { line-height: 12px; }

  .event-calendar__tile-list { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-3); }
  .event-calendar__tile-image { height: auto; aspect-ratio: 1; }

  .site-header__inner {
    position: relative;
  }

  .mobile-menu-toggle {
    position: relative;
    z-index: 120;
    display: grid;
    width: 40px;
    height: 40px;
    gap: 5px;
    place-content: center;
    padding: 8px;
    border: 0;
    background: var(--color-white);
  }

  .mobile-menu-toggle span {
    display: block;
    width: 20px;
    height: 2px;
    background: var(--color-heading);
    transition: transform 160ms ease, opacity 160ms ease;
  }

  .global-nav {
    display: none;
    margin-right: 0;
  }

  .mobile-menu-backdrop {
    position: fixed;
    z-index: 80;
    inset: 0;
    border: 0;
    background: rgba(0, 0, 0, 0.22);
  }

  body.mobile-menu-open {
    overflow: hidden;
  }

  body.mobile-menu-open .global-nav {
    position: fixed;
    z-index: 100;
    top: 0;
    right: 0;
    display: block;
    width: min(280px, calc(100vw - 24px));
    height: 100dvh;
    padding: 88px 16px 24px;
    background: var(--color-white);
    box-shadow: -8px 0 24px rgba(0, 0, 0, 0.12);
  }

  body.mobile-menu-open .global-search {
    display: block;
    margin-bottom: var(--space-5);
  }

  body.mobile-menu-open .global-search__controls {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
  }

  body.mobile-menu-open .global-search__input {
    width: 100%;
    min-height: 40px;
    font-size: var(--type-meta);
  }

  body.mobile-menu-open .global-search__button {
    min-height: 40px;
  }

  body.mobile-menu-open .global-nav__list {
    display: grid;
    gap: 0;
    text-align: left;
  }

  body.mobile-menu-open .global-nav__link {
    padding: var(--space-3) 0;
    border-bottom: 1px solid var(--color-border);
    font-size: var(--type-meta);
  }

  body.mobile-menu-open .global-nav__item--mobile-only {
    display: list-item;
  }

  body.mobile-menu-open .mobile-menu-backdrop {
    display: block;
  }

  body.mobile-menu-open .mobile-menu-toggle span:nth-child(1) {
    transform: translateY(7px) rotate(45deg);
  }

  body.mobile-menu-open .mobile-menu-toggle span:nth-child(2) {
    opacity: 0;
  }

  body.mobile-menu-open .mobile-menu-toggle span:nth-child(3) {
    transform: translateY(-7px) rotate(-45deg);
  }

  .ranking-page,
  .news-page,
  .news-detail-page,
  .person-detail,
  .category-page {
    display: block;
  }

  .page-sidebar {
    margin-top: var(--space-10);
    padding-top: var(--space-6);
    border-top: 1px solid var(--color-border);
  }

  .top-page__content > * + * {
    margin-top: var(--space-10);
  }

  .news-widget,
  .genre-widget,
  .pickup-widget,
  .ranking-block--overall,
  .ranking-block--youtube,
  .ranking-block--tiktok,
  .ranking-block--instagram,
  .ranking-block--x,
  .ranking-block--threads,
  .ranking-block--trending,
  .ranking-block--support {
    grid-area: auto;
  }

  .account-list__details,
  .post-list__details {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

/* スマートフォン */

@media (max-width: 720px) {
  .site-header__inner {
    align-items: center;
    width: calc(100% - 32px);
    flex-direction: row;
    justify-content: space-between;
    gap: var(--space-1);
    padding: var(--space-2) 0;
  }

  .site-header__brand {
    gap: var(--space-2);
  }

  .site-header__site-name {
    width: min(144px, 40vw);
  }

  .site-header__tagline {
    flex: 1 1 0;
    min-width: 0;
    font-size: 10px;
    line-height: 1.4;
    white-space: normal;
    transform: none;
  }

  .site-header__tagline--desktop {
    display: none;
  }

  .site-header__tagline--mobile {
    display: inline;
  }

  .global-nav__list {
    justify-content: flex-start;
    gap: var(--space-1) var(--space-4);
  }

  .header-genre-nav__inner {
    width: 100%;
    overflow: hidden;
  }

  .header-genre-nav__list {
    display: flex;
    overflow-x: auto;
    overflow-y: hidden;
    overscroll-behavior-inline: contain;
    scroll-snap-type: inline proximity;
    scrollbar-width: none;
    touch-action: pan-x;
    -webkit-overflow-scrolling: touch;
  }

  .header-genre-nav__list::-webkit-scrollbar {
    display: none;
  }

  .header-genre-nav__item,
  .header-genre-nav__item:nth-child(-n + 6) {
    flex: 0 0 auto;
    border-bottom: 0;
    scroll-snap-align: start;
  }

  .header-genre-nav__link {
    padding: 0 var(--space-3);
  }

  .header-genre-nav__link.is-active::after {
    right: var(--space-2);
    left: var(--space-2);
  }

  .ranking-page,
  .news-page,
  .news-detail-page,
  .person-detail,
  .category-page {
    width: calc(100% - 32px);
    padding: var(--space-7) 0 var(--space-12);
  }

  .person-row {
    grid-template-columns:
      88px
      minmax(0, 1fr)
      22px
      7ch;
    gap: var(--space-4);
    padding: var(--space-2) var(--space-3);
  }

  .person-row--value-under-name {
    grid-template-columns:
      88px
      minmax(0, 1fr);
  }

  .person-row:not(.person-row--value-under-name) {
    grid-template-columns:
      88px
      minmax(0, 1fr);
    grid-template-rows: auto auto auto;
  }

  .person-row:not(.person-row--value-under-name) .person-row__summary {
    margin-top: var(--space-1);
  }

  .person-row:not(.person-row--value-under-name) > .person-row__rank {
    top: calc(50% - 39px);
  }

  .person-row:not(.person-row--value-under-name) > .person-row__sns,
  .person-row:not(.person-row--value-under-name) > .person-row__value {
    margin-top: var(--space-1);
  }

  .person-row:not(.person-row--value-under-name) > .person-row__value {
    margin-left: var(--space-6);
  }

  .person-row__rank {
    top: calc(50% - 39px);
    left: 12px;
    width: 20px;
    height: 22px;
    font-size: var(--font-size-mobile-rank);
  }

  .person-row__avatar {
    width: 88px;
  }

  .widget-card {
    grid-template-columns: 88px minmax(0, 1fr);
    gap: var(--space-4);
    padding: var(--space-2) var(--space-3);
  }

  .widget-card__image {
    width: 88px;
  }

  .genre-card .widget-card__image {
    width: 64px;
    height: 64px;
    min-height: 64px;
    flex-basis: 64px;
  }

  .genre-widget .genre-card {
    grid-template-columns: 64px minmax(0, 1fr);
    gap: var(--space-3);
  }

  .person-row__name {
    font-size: var(--font-size-mobile-name);
  }

  .person-row__summary {
    margin-top: var(--space-1);
    font-size: var(--font-size-mobile-summary);
    line-height: var(--line-height-mobile-summary);
  }

  .person-row__sns {
    font-size: var(--font-size-mobile-sns);
  }

  .person-row__value {
    font-size: var(--font-size-mobile-value);
    line-height: var(--line-height-tight);
  }

  .news-page .news-list__date,
  .news-page .news-list__support-count {
    white-space: normal;
  }

  .person-header {
    grid-template-columns: 112px minmax(0, 1fr);
    gap: var(--space-5);
    padding: var(--space-5);
  }

  .post-list__item {
    grid-template-columns: 1fr;
  }
}

/* ランキングページは上部見出しを非表示にしているため、上余白も詰める。 */
.ranking-page {
  padding-top: var(--space-4);
}

*[hidden] {
  display: none;
}

.data-empty {
  margin: 0;
  padding: var(--space-6) 0;
  color: var(--color-meta);
}

.page-kicker {
  display: none;
}

.page-lead,
body:has(.genre-directory) .news-detail__section-title {
  display: none;
}

.data-empty-row {
  padding: var(--space-5);
  color: var(--color-meta);
  font-size: var(--type-body);
}

.contact-form {
  display: grid;
  gap: var(--space-5);
  max-width: 720px;
  margin: var(--space-6) 0;
  padding: var(--space-6);
  border: 1px solid var(--color-border);
  background: var(--color-bg-highlight);
}

.contact-form p {
  display: grid;
  gap: var(--space-2);
  margin: 0;
}

.contact-form label {
  color: var(--color-heading);
  font-weight: var(--font-weight-heading);
}

.contact-form input,
.contact-form textarea {
  width: 100%;
  padding: var(--space-3) var(--space-4);
  border: 1px solid var(--color-border);
  border-radius: 0;
  background: var(--color-white);
  color: var(--color-text);
  font: inherit;
  transition: border-color 160ms ease, box-shadow 160ms ease;
}

.contact-form input {
  min-height: 48px;
}

.contact-form textarea {
  min-height: 200px;
  resize: vertical;
}

.contact-form input:focus,
.contact-form textarea:focus {
  border-color: var(--color-heading);
  box-shadow: 0 0 0 2px rgba(34, 34, 34, 0.08);
  outline: 0;
}

.contact-form button {
  justify-self: start;
  min-width: 160px;
  min-height: 48px;
  padding: var(--space-3) var(--space-6);
  border: 1px solid var(--color-heading);
  border-radius: 0;
  background: var(--color-heading);
  color: var(--color-white);
  font-weight: var(--font-weight-heading);
  cursor: pointer;
}

.genre-directory {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--space-4);
  margin: 0;
}

.genre-directory a {
  display: grid;
  gap: var(--space-6);
  min-height: 96px;
  padding: var(--space-4) var(--space-7) var(--space-4) var(--space-6);
  border: 1px solid var(--color-border);
}

.genre-directory .widget-card {
  grid-template-columns: 104px minmax(0, 1fr);
  min-height: 132px;
  padding: var(--space-4);
}

.genre-directory .widget-card__image {
  width: 104px;
  height: 104px;
  min-height: 104px;
  aspect-ratio: 1;
  overflow: hidden;
}

.genre-directory span {
  color: var(--color-meta);
  font-size: var(--type-meta);
}

/* ジャンルサムネイルは元画像の縦横比に左右されず正方形で表示 */
.genre-directory .widget-card__image {
  width: 104px;
  height: 104px;
  min-height: 104px;
  aspect-ratio: 1 / 1;
}

.genre-widget .genre-card .widget-card__image img,
.genre-widget .genre-card .widget-card__image img[loading="lazy"] {
  display: block;
  width: 100%;
  height: 100%;
  max-width: none;
  object-fit: cover;
  object-position: center center;
}

.genre-directory .widget-card__image img,
.genre-card .widget-card__image img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

@media (max-width: 720px) {
  .genre-directory {
    grid-template-columns: 1fr;
  }

  .genre-directory .widget-card {
    width: 100%;
    box-sizing: border-box;
    grid-template-columns: 104px minmax(0, 1fr);
    column-gap: var(--space-6);
    padding: var(--space-4) var(--space-7) var(--space-4) var(--space-6);
  }

  .genre-directory .widget-card__body {
    min-width: 0;
    padding-right: var(--space-2);
    overflow: hidden;
  }

  .genre-directory .widget-card__title,
  .genre-directory .widget-card__summary {
    overflow-wrap: anywhere;
  }
}

html {
  font-synthesis: none;
}

@media (max-width: 520px) {
  html {
    font-size: var(--font-size-root);
  }

  .top-page,
  .site-header__inner,
  .ranking-page,
  .news-page,
  .news-detail-page,
  .person-detail {
    width: calc(100% - 24px);
  }

  .ranking-block__header,
  .news-widget__header,
  .genre-widget__header,
  .pickup-widget__header {
    padding: var(--space-3);
  }

  .page-sidebar .genre-widget__header,
  .page-sidebar .pickup-widget__header {
    padding-top: 0;
  }

  .news-widget__header,
  .genre-widget__header,
  .pickup-widget__header {
    padding-bottom: var(--space-1);
  }

  .top-page > .genre-widget .genre-widget__header,
  .top-page > .pickup-widget .pickup-widget__header {
    padding-top: 0;
  }

  .ranking-page > .page-sidebar .genre-widget__header,
  .ranking-page > .page-sidebar .pickup-widget__header {
    padding-top: 0;
  }

  .ranking-page > .page-sidebar {
    margin-top: var(--space-10);
  }

  .person-row {
    grid-template-columns:
      var(--size-avatar-mobile-card)
      minmax(0, 1fr)
      20px
      7ch;
    gap: var(--space-4);
    padding: var(--space-2) var(--space-3);
  }

  .person-row--value-under-name {
    grid-template-columns:
      var(--size-avatar-mobile-card)
      minmax(0, 1fr);
  }

  .person-row:not(.person-row--value-under-name) {
    grid-template-columns:
      var(--size-avatar-mobile-card)
      minmax(0, 1fr);
    grid-template-rows: auto auto auto;
  }

  .person-row:not(.person-row--value-under-name) .person-row__summary {
    margin-top: var(--space-1);
  }

  .person-row:not(.person-row--value-under-name) > .person-row__rank {
    top: calc(50% - 34px);
  }

  .person-row:not(.person-row--value-under-name) > .person-row__sns,
  .person-row:not(.person-row--value-under-name) > .person-row__value {
    margin-top: var(--space-1);
  }

  .person-row:not(.person-row--value-under-name) > .person-row__value {
    margin-left: var(--space-6);
  }

  .person-row__rank {
    top: calc(50% - 34px);
    left: 8px;
    width: 20px;
    height: 22px;
  }

  .person-row__avatar {
    width: var(--size-avatar-mobile-card);
  }

  .widget-card {
    grid-template-columns: var(--size-avatar-mobile-card) minmax(0, 1fr);
    gap: var(--space-4);
    padding: var(--space-2) var(--space-3);
  }

  .widget-card__image {
    width: var(--size-avatar-mobile-card);
  }

  .genre-card .widget-card__image {
    width: 64px;
    height: 64px;
    min-height: 64px;
    flex-basis: 64px;
  }

  .genre-widget .genre-card {
    grid-template-columns: 64px minmax(0, 1fr);
    gap: var(--space-3);
  }

  .account-row {
    grid-template-columns: 28px minmax(0, 1fr);
    gap: var(--space-2);
    padding: var(--space-2) 0;
  }

  .person-row__summary {
    -webkit-line-clamp: 2;
  }

  .ranking-block__more,
  .news-widget__more,
  .genre-widget__more,
  .pickup-widget__more {
    padding: var(--space-3) var(--space-4);
  }

  .news-widget .news-list__link {
    grid-template-columns: 78px minmax(0, 1fr);
    gap: var(--space-2);
    padding: var(--space-3);
  }

  .genre-widget__item {
    align-items: flex-start;
    flex-direction: column;
  }

  .account-list__details,
  .post-list__details {
    grid-template-columns: 1fr;
  }

  .news-page .news-list__item {
    grid-template-columns: minmax(0, 1fr);
    grid-template-areas:
      "image"
      "category"
      "title"
      "summary"
      "date"
      "related"
      "support";
  }

  .news-page .news-list__date,
  .news-page .news-list__support-count {
    text-align: left;
  }

  .news-detail__image {
    height: auto;
    min-height: 0;
  }

  .person-header {
    grid-template-columns: var(--size-avatar-detail) minmax(0, 1fr);
    gap: var(--space-3);
    padding: var(--space-3);
  }

  .person-header__icon {
    width: var(--size-avatar-detail);
  }

  .person-section {
    padding: 0;
  }

}

/* トップ・一覧共通の記事カード */

.news-widget .news-list,
.news-page .news-list,
.news-list--related {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: var(--space-4);
  margin: 0;
}

/* JSON反映前もサーバー側のHTMLを表示し、ページ遷移時の白紙化を防ぐ。 */

.news-widget .news-list__item,
.news-page .news-list__item,
.news-list--related .news-list__item {
  display: block;
  grid-template-columns: none;
  grid-template-areas: none;
  gap: 0;
  min-width: 0;
  padding: 0;
}

.news-widget .news-list__link,
.news-page .news-list__link,
.news-list--related .news-list__link {
  display: flex;
  min-width: 0;
  flex-direction: column;
  gap: 0;
  padding: 0;
  color: inherit;
  text-decoration: none;
}

.news-widget .news-list__image,
.news-page .news-list__image,
.news-list--related .news-list__image {
  position: relative;
  display: grid;
  place-items: center;
  width: 100%;
  height: var(--size-news-card-image);
  min-height: 0;
  grid-area: auto;
  aspect-ratio: auto;
  overflow: hidden;
  background: var(--color-bg-soft);
  color: var(--color-heading);
  font-size: var(--font-size-news-icon);
}

.news-widget .news-list__image img,
.news-page .news-list__image img,
.news-list--related .news-list__image img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center center;
}

.news-widget .news-list__content,
.news-page .news-list__content,
.news-list--related .news-list__content {
  display: flex;
  min-width: 0;
  flex-direction: column;
  gap: var(--space-2);
  padding: var(--space-3);
}

.news-list__category {
  align-self: flex-start;
  margin: 0;
  padding: var(--space-tag-y) var(--space-tag-x);
  background: var(--color-bg-highlight);
  color: var(--color-gold-dark);
  font-size: var(--type-meta);
  font-weight: var(--font-weight-heading);
}

.news-list__image > .news-list__category {
  position: absolute;
  top: var(--space-3);
  right: var(--space-3);
  z-index: 2;
  margin: 0;
  background: rgba(255, 255, 255, 0.92);
  box-shadow: 0 1px 4px rgba(0, 0, 0, 0.08);
}

.news-list__image > .news-list__category.genre-chip {
  top: 6px;
  right: 6px;
  background: var(--genre-chip-color, var(--color-heading));
  box-shadow: 0 1px 4px rgba(0, 0, 0, 0.2);
  color: var(--color-white);
  font-size: var(--font-size-image-genre-chip);
}

.contact-form .wpcf7-form {
  display: grid;
  gap: var(--space-5);
  margin: 0;
}

.contact-form .wpcf7-form p {
  display: grid;
  gap: var(--space-2);
  margin: 0;
}

.contact-form .wpcf7-form label {
  color: var(--color-heading);
  font-weight: var(--font-weight-heading);
}

.contact-form .wpcf7-form input,
.contact-form .wpcf7-form textarea {
  margin-top: var(--space-2);
}

.contact-form .wpcf7-form input[type="submit"] {
  width: auto;
  min-width: 160px;
  min-height: 48px;
  padding: var(--space-3) var(--space-6);
  border-color: var(--color-heading);
  background: var(--color-heading);
  color: var(--color-white);
  font-weight: var(--font-weight-heading);
  cursor: pointer;
}

.contact-form .wpcf7-not-valid-tip {
  margin-top: var(--space-2);
  color: #b42318;
  font-size: var(--type-meta);
}

.contact-form .wpcf7-response-output {
  margin: 0;
  padding: var(--space-3) var(--space-4);
  border: 1px solid var(--color-border);
  background: var(--color-white);
}

.news-widget .news-list__title,
.news-page .news-list__title,
.news-list--related .news-list__title {
  display: block;
  grid-area: auto;
  margin: 0;
  color: var(--color-heading);
  font-size: var(--font-size-news-title);
  font-weight: var(--font-weight-heading);
  line-height: var(--line-height-news-title);
  overflow-wrap: anywhere;
}

.news-widget .news-list__date,
.news-page .news-list__date,
.news-list--related .news-list__date {
  grid-area: auto;
  margin-top: auto;
  color: var(--color-meta);
  font-size: var(--font-size-news-date);
  text-align: left;
  white-space: normal;
}

/* 応援ボタン：対象種別とIDを持つ共通モジュール。現在はプレスリリースカードで使用。 */
.news-list__item--support {
  position: relative;
}

.support-button--circle {
  position: absolute;
  top: calc(var(--size-news-card-image) - var(--size-support-circle) - var(--space-3));
  right: var(--space-3);
  display: inline-grid;
  width: var(--size-support-circle);
  height: var(--size-support-circle);
  padding: 0;
  place-items: center;
  border: 1px solid var(--color-support);
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.76);
  color: var(--color-support);
  cursor: pointer;
  transition: background 160ms ease, color 160ms ease, transform 160ms ease;
}

.support-button--circle:hover,
.support-button--circle:focus-visible {
  background: var(--color-support);
  color: var(--color-white);
}

.support-button--circle:focus-visible {
  outline: 2px solid var(--color-heading);
  outline-offset: 2px;
}

.support-button--circle:active {
  transform: scale(0.92);
}

.support-button--inline {
  position: relative;
  top: auto;
  right: auto;
  left: auto;
}

.support-button__icon {
  font-size: 12px;
  line-height: 1;
}

.support-button__burst {
  position: absolute;
  top: -20px;
  right: calc(var(--space-2) * -1);
  display: none;
  color: var(--color-support);
  font-size: var(--type-section);
  font-weight: var(--font-weight-heading);
}

.support-button__burst::after {
  content: "+1";
}

.support-button.is-supported .support-button__burst {
  display: block;
  animation: support-plus-one 420ms ease forwards;
}

.article-support__count {
  color: var(--color-meta);
  font-size: var(--type-meta);
  font-weight: var(--font-weight-heading);
}

@keyframes support-plus-one {
  from { opacity: 0; transform: translateY(4px); }
  35% { opacity: 1; transform: translateY(-4px); }
  to { opacity: 0; transform: translateY(-12px); }
}

@media (max-width: 720px) {
  .article-meta-actions {
    align-items: center;
    flex-wrap: wrap;
    gap: var(--space-3);
  }
  .contact-form {
    padding: var(--space-4);
  }

  .news-widget .news-list,
  .news-page .news-list,
  .news-list--related {
    grid-template-columns: 1fr;
  }

  .news-widget .news-list__link,
  .news-page .news-list__link,
  .news-list--related .news-list__link {
    display: grid;
    grid-template-columns: 140px minmax(0, 1fr);
    gap: var(--space-2);
    align-items: start;
  }

  .news-widget .news-list__image,
  .news-page .news-list__image,
  .news-list--related .news-list__image {
    width: 140px;
    height: 140px;
    aspect-ratio: auto;
    flex: 0 0 140px;
  }

  .news-list__item--support {
    --size-news-card-image: 140px;
  }

  .news-list__item--support .support-button--circle {
    right: auto;
    left: calc(var(--size-news-card-image) - var(--size-support-circle) - var(--space-3));
  }


  .news-widget .news-list__content,
  .news-page .news-list__content,
  .news-list--related .news-list__content {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    gap: var(--space-1) var(--space-2);
    padding: var(--space-2) var(--space-3);
  }

  .news-widget .news-list__category,
  .news-page .news-list__category,
  .news-list--related .news-list__category {
    grid-column: 1;
    margin: 0;
    padding: var(--space-tag-y) var(--space-tag-x);
    background: var(--color-white);
    color: var(--color-heading);
    font-size: var(--font-size-mobile-news-meta);
  }

  .news-widget .news-list__image > .news-list__category,
  .news-page .news-list__image > .news-list__category,
  .news-list--related .news-list__image > .news-list__category {
    display: none;
  }

  .news-widget .news-list__image > .news-list__category.genre-chip,
  .news-page .news-list__image > .news-list__category.genre-chip,
  .news-list--related .news-list__image > .news-list__category.genre-chip {
    display: block;
    padding: 1px var(--space-1);
    background: var(--genre-chip-color, var(--color-heading));
    color: var(--color-white);
    font-size: var(--font-size-image-genre-chip);
  }

  .news-widget .news-list__date,
  .news-page .news-list__date,
  .news-list--related .news-list__date {
    grid-column: 2;
    margin: 0;
    font-size: var(--font-size-mobile-news-meta);
  }

  .news-widget .news-list__title,
  .news-page .news-list__title,
  .news-list--related .news-list__title {
    grid-column: 1 / -1;
    line-height: var(--line-height-mobile-news-title);
  }
}

/* トップの注目記事だけは先頭を主役にし、残りを2列カードで並べる。 */
.top-page .featured-press-release-widget__list {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

.featured-press-release-widget__list .news-list__item--featured-lead {
  grid-column: 1 / -1;
}

.featured-press-release-widget__list .news-list__image {
  width: 100%;
  height: auto;
  aspect-ratio: 16 / 9;
}

.featured-press-release-widget__list .news-list__item--featured-lead .news-list__content {
  padding: var(--space-3) 0 0;
}

.featured-press-release-widget__list .news-list__item--featured-lead .news-list__title {
  font-size: var(--font-size-h1);
  line-height: var(--line-height-heading);
}

.featured-press-release-widget__list .news-list__image img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center center;
}

.featured-press-release-widget__list .news-list__item--support .support-button--circle {
  top: auto;
  right: var(--space-3);
  bottom: var(--space-3);
  left: auto;
}

.featured-press-release-widget__list .news-list__item--featured-card .news-list__content {
  padding: var(--space-2) 0 0;
}

@media (max-width: 720px) {
  .top-page .featured-press-release-widget__list {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: var(--space-3);
  }

  .top-page .featured-press-release-widget__list .news-list__image {
    width: 100%;
    height: auto;
    min-height: 0;
    flex: 0 0 auto;
    aspect-ratio: 16 / 9;
  }

  .featured-press-release-widget__list .news-list__link,
  .featured-press-release-widget__list .news-list__content {
    display: flex;
    grid-template-columns: none;
    flex-direction: column;
  }

  .featured-press-release-widget__list .news-list__item--support .support-button--circle {
    top: auto;
    right: var(--space-2);
    bottom: var(--space-2);
    left: auto;
  }
}
