/* =========================================================================
   oritoku.css — /oritoku/ オリ得（オリパのお得速報）
   値は var(--ds-*) のみ（生hex/生px禁止）。白地・黒文字を基調に、判定バッジだけ単色パステル。
   ========================================================================= */

.ot {
  max-width: var(--ds-container-page);
  margin: 0 auto;
  padding: var(--ds-space-stack-md) 0 var(--ds-space-stack-xl);
  color: var(--ds-color-text);
}

/* ---------- ワードマーク ---------- */
.ot-wordmark {
  display: inline-block;
  font-weight: var(--ds-text-display-weight);
  letter-spacing: 0.02em;
  color: var(--ds-color-text);
  text-decoration: none;
}
.ot-wordmark--sm { font-size: var(--ds-text-body-size); }

/* ---------- ヒーロー ---------- */
.ot-hero {
  margin-bottom: var(--ds-space-stack-lg);
  padding-bottom: var(--ds-space-stack-md);
  position: relative;
}
.ot-hero::after {
  /* ヒーローの細い装飾線（DESIGN.md で許可されたホロの使い所。ページ内でここ1回だけ） */
  content: "";
  position: absolute;
  left: 0; right: 0; bottom: 0;
  height: 3px;
  background: var(--ds-color-accent-gradient);
  border-radius: var(--ds-radius-chip);
}
.ot-hero__kicker {
  margin: 0 0 var(--ds-space-stack-xs);
  font-size: var(--ds-text-caption-size);
  color: var(--ds-color-text-subtle);
  letter-spacing: 0.08em;
}
.ot-hero__title {
  margin: 0 0 var(--ds-space-stack-md);
  line-height: var(--ds-text-h1-lh);
}
.ot-hero__title .ot-wordmark {
  display: block;
  font-size: var(--ds-text-display-size);
  line-height: var(--ds-text-display-lh);
}
.ot-hero__sub {
  display: block;
  margin-top: var(--ds-space-stack-xs);
  font-size: var(--ds-text-h3-size);
  font-weight: var(--ds-text-h3-weight);
  line-height: var(--ds-text-h3-lh);
}
.ot-hero__lead {
  margin: 0 0 var(--ds-space-stack-md);
  font-size: var(--ds-text-body-size);
  line-height: var(--ds-text-body-lh);
  color: var(--ds-color-text-muted);
}
.ot-hero__meta,
.ot-article__meta {
  display: flex;
  flex-wrap: wrap;
  gap: var(--ds-space-inline-xs) var(--ds-space-inline-md);
  margin: 0;
  font-size: var(--ds-text-caption-size);
  color: var(--ds-color-text-subtle);
  align-items: center;
}

/* ---------- 絞り込みチップ ---------- */
.ot-filter { margin: 0 0 var(--ds-space-stack-lg); }
.ot-filter__label {
  margin: 0 0 var(--ds-space-stack-xs);
  font-size: var(--ds-text-micro-size);
  color: var(--ds-color-text-subtle);
}
.ot-filter__chips {
  display: flex;
  flex-wrap: wrap;
  gap: var(--ds-space-inline-xs);
}
.ot-chip {
  appearance: none;
  cursor: pointer;
  min-height: var(--ds-touch-target-min, 36px);
  padding: var(--ds-space-inline-xs) var(--ds-space-inline-md);
  font-size: var(--ds-text-body-sm-size);
  font-weight: var(--ds-text-body-sm-weight);
  color: var(--ds-color-text);
  background: var(--ds-color-bg);
  border: var(--ds-border-width) solid var(--ds-color-border-strong);
  border-radius: var(--ds-radius-chip);
  transition: background .12s ease, color .12s ease, transform .08s ease;
}
.ot-chip:active { transform: scale(.97); }
.ot-chip.is-active {
  color: var(--ds-color-text-inverse);
  background: var(--ds-color-bg-inverse);
  border-color: var(--ds-color-bg-inverse);
}
.ot-filter__count {
  margin: var(--ds-space-stack-xs) 0 0;
  min-height: 1.4em;
  font-size: var(--ds-text-caption-size);
  color: var(--ds-color-text-subtle);
}

/* ---------- セクション ---------- */
.ot-section { margin-bottom: var(--ds-space-stack-xl); }
.ot-section__title {
  margin: 0 0 var(--ds-space-stack-md);
  padding-bottom: var(--ds-space-stack-xs);
  font-size: var(--ds-text-h2-size);
  line-height: var(--ds-text-h2-lh);
  font-weight: var(--ds-text-h2-weight);
  border-bottom: var(--ds-border-width-divider) solid var(--ds-color-border);
}
.ot-section__lead {
  margin: 0 0 var(--ds-space-stack-md);
  font-size: var(--ds-text-body-sm-size);
  color: var(--ds-color-text-muted);
}
.ot-note {
  margin: var(--ds-space-stack-md) 0 0;
  font-size: var(--ds-text-caption-size);
  line-height: var(--ds-text-caption-lh);
  color: var(--ds-color-text-subtle);
}
.ot-note a,
.ot-sources a,
.ot-back a { color: var(--ds-color-text-link); text-decoration: underline; }
.ot-empty {
  margin: 0;
  padding: var(--ds-space-stack-md);
  background: var(--ds-color-bg-subtle);
  border-radius: var(--ds-radius-card);
  font-size: var(--ds-text-body-sm-size);
  color: var(--ds-color-text-muted);
}

/* ---------- カード一覧 ---------- */
.ot-list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--ds-space-stack-sm);
}
@media (min-width: 768px) {
  .ot-list { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--ds-space-stack-md); }
}
.ot-card { margin: 0; }
.ot-card.is-hidden { display: none; }
.ot-card__link {
  display: flex;
  flex-direction: column;
  gap: var(--ds-space-stack-xs);
  height: 100%;
  padding: var(--ds-space-stack-md);
  color: inherit;
  text-decoration: none;
  background: var(--ds-color-bg);
  border: var(--ds-border-width) solid var(--ds-color-border);
  border-radius: var(--ds-radius-card);
  transition: border-color .12s ease, box-shadow .12s ease;
}
.ot-card__link:hover,
.ot-card__link:focus-visible {
  border-color: var(--ds-color-border-strong);
  box-shadow: var(--ds-shadow-card);
}
.ot-card__head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--ds-space-inline-sm);
}
.ot-card__title {
  margin: 0;
  font-size: var(--ds-text-h3-size);
  line-height: var(--ds-text-h3-lh);
  font-weight: var(--ds-text-h3-weight);
}
.ot-card__reason {
  margin: 0;
  font-size: var(--ds-text-body-sm-size);
  line-height: var(--ds-text-body-sm-lh);
  color: var(--ds-color-text-muted);
}
.ot-card__meta {
  display: flex;
  flex-wrap: wrap;
  gap: var(--ds-space-inline-xs) var(--ds-space-inline-sm);
  margin: auto 0 0;
  padding-top: var(--ds-space-stack-xs);
  font-size: var(--ds-text-micro-size);
  color: var(--ds-color-text-subtle);
  align-items: center;
}

/* ---------- サイト表示 ---------- */
.ot-site {
  display: inline-flex;
  align-items: center;
  gap: var(--ds-space-inline-xs);
  min-width: 0;
  font-size: var(--ds-text-body-sm-size);
  font-weight: var(--ds-text-body-weight);
  color: var(--ds-color-text);
}
.ot-site__icon {
  flex: 0 0 auto;
  width: 20px;
  height: 20px;
  border-radius: var(--ds-radius-chip);
  object-fit: cover;
}
.ot-site__icon--text {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: var(--ds-text-micro-size);
  font-weight: var(--ds-text-h3-weight);
  color: var(--ds-color-text-inverse);
  background: var(--ds-color-bg-inverse);
}
.ot-site__name { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }

/* ---------- 判定バッジ（単色パステル。1ページに3色まで＋グレー） ---------- */
.ot-badge {
  flex: 0 0 auto;
  display: inline-block;
  padding: 2px var(--ds-space-inline-sm);
  font-size: var(--ds-text-caption-size);
  font-weight: var(--ds-text-h3-weight);
  line-height: var(--ds-text-caption-lh);
  color: var(--ds-color-badge-text);
  border-radius: var(--ds-radius-chip);
  background: var(--ds-color-bg-subtle);
}
.ot-badge--mint  { background: var(--ds-color-badge-bg-mint); }
.ot-badge--peach { background: var(--ds-color-badge-bg-peach); }
.ot-badge--cream { background: var(--ds-color-badge-bg-cream); }
.ot-badge--gray  { background: var(--ds-color-bg-subtle); }

/* ---------- 開催状態・確認状況 ---------- */
.ot-status { font-weight: var(--ds-text-h3-weight); }
.ot-status--ongoing  { color: var(--ds-color-state-positive-text); }
.ot-status--upcoming { color: var(--ds-color-state-info-text); }
.ot-status--ended    { color: var(--ds-color-text-subtle); }
.ot-confirmed::before {
  content: "";
  display: inline-block;
  width: 8px;
  height: 8px;
  margin-right: 4px;
  border-radius: var(--ds-radius-chip);
  background: var(--ds-color-text-subtle);
  vertical-align: middle;
}
.ot-confirmed--official::before { background: var(--ds-color-positive); }
.ot-confirmed--official_screenshot::before { background: var(--ds-color-state-info-text); }
.ot-confirmed--user_report::before { background: var(--ds-color-warning); }

/* ---------- 終了したイベント ---------- */
.ot-ended__summary {
  cursor: pointer;
  padding: var(--ds-space-stack-sm) 0;
  font-size: var(--ds-text-h3-size);
  font-weight: var(--ds-text-h3-weight);
  color: var(--ds-color-text-muted);
}
.ot-ended[open] .ot-ended__summary { margin-bottom: var(--ds-space-stack-md); }

/* ---------- 載せる基準 ---------- */
.ot-policy__list {
  list-style: disc;
  margin: 0;
  padding-left: 1.2em;
  font-size: var(--ds-text-body-sm-size);
  line-height: var(--ds-text-body-sm-lh);
  color: var(--ds-color-text-muted);
}
.ot-policy__list li { margin-bottom: var(--ds-space-stack-xs); }
.ot-policy__list strong { color: var(--ds-color-text); }

/* ---------- 個別ページ ---------- */
.ot-article { max-width: var(--ds-container-article); }
.ot-article__head { margin-bottom: var(--ds-space-stack-lg); }
.ot-article__kicker {
  display: flex;
  align-items: center;
  gap: var(--ds-space-inline-xs);
  margin: 0 0 var(--ds-space-stack-sm);
  font-size: var(--ds-text-caption-size);
  color: var(--ds-color-text-subtle);
}
.ot-article__kicker-sep { color: var(--ds-color-border-strong); }
.ot-article__title {
  margin: 0 0 var(--ds-space-stack-md);
  font-size: var(--ds-text-h1-size);
  line-height: var(--ds-text-h1-lh);
  font-weight: var(--ds-text-h1-weight);
}
.ot-article__p {
  margin: 0 0 var(--ds-space-stack-md);
  font-size: var(--ds-text-body-size);
  line-height: 1.8;
}

.ot-verdict {
  margin: 0 0 var(--ds-space-stack-xl);
  padding: var(--ds-space-stack-md);
  border-radius: var(--ds-radius-card);
  background: var(--ds-color-bg-subtle);
}
.ot-verdict--mint  { background: var(--ds-color-badge-bg-mint); }
.ot-verdict--peach { background: var(--ds-color-badge-bg-peach); }
.ot-verdict--cream { background: var(--ds-color-badge-bg-cream); }
.ot-verdict__label {
  margin: 0 0 var(--ds-space-stack-xs);
  font-size: var(--ds-text-micro-size);
  letter-spacing: 0.08em;
  color: var(--ds-color-text-muted);
}
.ot-verdict__value {
  margin: 0 0 var(--ds-space-stack-xs);
  font-size: var(--ds-text-h1-size);
  line-height: var(--ds-text-h1-lh);
  font-weight: var(--ds-text-h1-weight);
  color: var(--ds-color-badge-text);
}
.ot-verdict__reason {
  margin: 0 0 var(--ds-space-stack-sm);
  font-size: var(--ds-text-body-size);
  line-height: var(--ds-text-body-lh);
}
.ot-verdict__confirmed {
  margin: 0;
  font-size: var(--ds-text-caption-size);
  color: var(--ds-color-text-muted);
}

.ot-facts { margin: 0; }
.ot-facts__row {
  display: grid;
  grid-template-columns: 1fr;
  gap: 2px var(--ds-space-inline-md);
  padding: var(--ds-space-stack-sm) 0;
  border-bottom: var(--ds-border-width) solid var(--ds-color-border);
}
@media (min-width: 640px) {
  .ot-facts__row { grid-template-columns: 9em minmax(0, 1fr); }
}
.ot-facts__label {
  font-size: var(--ds-text-body-sm-size);
  font-weight: var(--ds-text-h3-weight);
  color: var(--ds-color-text-muted);
}
.ot-facts__value {
  margin: 0;
  font-size: var(--ds-text-body-sm-size);
  line-height: var(--ds-text-body-sm-lh);
}

.ot-actions__list {
  list-style: decimal;
  margin: 0;
  padding-left: 1.4em;
  font-size: var(--ds-text-body-size);
  line-height: var(--ds-text-body-lh);
}
.ot-actions__list li { margin-bottom: var(--ds-space-stack-sm); }
.ot-actions__list li::marker { font-weight: var(--ds-text-h3-weight); }

.ot-caveats,
.ot-sources {
  list-style: disc;
  margin: 0;
  padding-left: 1.2em;
  font-size: var(--ds-text-body-sm-size);
  line-height: var(--ds-text-body-sm-lh);
  color: var(--ds-color-text-muted);
}
.ot-caveats li,
.ot-sources li { margin-bottom: var(--ds-space-stack-xs); }
.ot-sources__date { color: var(--ds-color-text-subtle); }

.ot-back {
  margin: var(--ds-space-stack-lg) 0 0;
  font-size: var(--ds-text-body-sm-size);
}
