/* ============================================================
   review.css — レビュー詳細ページ専用スタイル
   ============================================================ */

/* ── 記事ページタイトルバー ────────────────────────────── */
.rv-page-head {
  background: #191c22;
  border-bottom: 1px solid #252930;
  padding: 24px 0 28px;
}
.rv-page-head-inner {
  max-width: 1200px;
  margin: 0 auto;
  padding: 0 28px;
}

/* カテゴリバッジ行 */
.rv-page-head-cats {
  display: flex;
  align-items: center;
  gap: 6px;
  margin-bottom: 10px;
  flex-wrap: wrap;
}
.rv-ph-badge {
  display: inline-block;
  font-size: var(--fs-sm);
  font-weight: 700;
  padding: 2px 10px;
  border-radius: 2px;
  text-decoration: none;
  transition: opacity var(--trans);
}
.rv-ph-badge:hover { opacity: 0.8; }
.rv-ph-badge--parent {
  background: var(--accent);
  color: #fff;
}
.rv-ph-badge--child {
  background: rgba(255,255,255,0.12);
  color: #c8cdd8;
  border: 1px solid rgba(255,255,255,0.18);
}
.rv-ph-sep {
  color: #555c6a;
  font-size: var(--fs-sm);
}

/* タイトル行（編集ボタン + タイトル） */
.rv-page-head-title-row {
  display: flex;
  align-items: center;
  gap: 12px;
  margin-bottom: 10px;
}

/* 編集ボタン（黄色） */
.rv-ph-edit-btn {
  flex-shrink: 0;
  display: inline-flex;
  align-items: center;
  padding: 4px 12px;
  background: #f0c000;
  color: #1a1c24;
  font-size: 0.78rem;
  font-weight: 800;
  border-radius: 3px;
  text-decoration: none;
  letter-spacing: 0.3px;
  transition: background var(--trans), opacity var(--trans);
  white-space: nowrap;
}
.rv-ph-edit-btn:hover {
  background: #ffd234;
}

/* 記事タイトル */
.rv-page-head-title {
  font-size: clamp(1.2rem, 2.4vw, 1.7rem);
  font-weight: 900;
  color: #e4e6ed;
  letter-spacing: -0.4px;
  line-height: 1.25;
  margin-bottom: 0;
}

/* 価格テキスト */
.rv-ph-price {
  font-size: var(--fs-sm);
  color: #9aa0ae;
  font-weight: 600;
}
.rv-ph-price-sep {
  color: #454c58;
  font-size: var(--fs-sm);
  margin: 0 2px;
}

/* メーカー・商品名 */
.rv-page-head-product {
  display: flex;
  align-items: center;
  gap: 5px;
  flex-wrap: wrap;
}
.rv-ph-product-item {
  font-size: var(--fs-sm);
  color: #7e8698;
  font-weight: 600;
}
.rv-ph-product-sep {
  color: #454c58;
  font-size: var(--fs-sm);
}

/* ===========================
   PV / UV カウンタ（サイドバー「アクセス数」ブロック内）
   Magazine 系: 直角・薄ボーダー・タグ + ラベル + 数字
   サイドバー幅いっぱいに広げ、.r2-reco 等の他ブロックと統一感を出す
   =========================== */
.rv-views {
  display: flex;
  flex-direction: column;
  gap: 6px;
  width: 100%;
  box-sizing: border-box;
  padding: 10px 12px;
  background: var(--bg2);
  border: 1.5px solid var(--text);
}
.rv-views-row {
  display: grid;
  grid-template-columns: 36px 1fr 1fr 1fr;
  align-items: center;
  gap: 8px;
}
.rv-views-tag {
  text-align: center;
  font-size: var(--fs-xs);
  font-weight: 900;
  letter-spacing: .14em;
  color: var(--accent);
  border: 1.5px solid var(--accent);
  padding: 2px 0;
}
.rv-views-tag--uv {
  color: var(--text);
  border-color: var(--text);
}
.rv-views-cell {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 1px;
  min-width: 0;
}
.rv-views-lbl {
  font-size: var(--fs-xs);
  color: var(--text3);
  font-weight: 700;
  letter-spacing: .04em;
}
.rv-views-num {
  font-size: var(--fs-sm);
  font-weight: 900;
  color: var(--text);
  font-variant-numeric: tabular-nums;
  letter-spacing: .02em;
}

@media (max-width: 640px) {
  .rv-page-head { padding: 18px 0 22px; }
  .rv-page-head-inner { padding: 0 16px; }
  .rv-page-head-title { font-size: 1.1rem; }
  .rv-views { gap: 4px; }
  .rv-views-row { gap: 6px; }
  .rv-views-num { font-size: var(--fs-xs); }
}

/* ── 投稿者本人向け編集ボタン ──────────────────────────── */
.rv-owner-actions {
  display: flex;
  gap: 10px;
  margin: 12px 0 20px;
}

.rv-btn-edit {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 7px 18px;
  background: var(--bg4);
  border: 1.5px solid var(--border2);
  border-radius: var(--r-sm);
  color: var(--text2);
  font-size: var(--fs-sm);
  font-weight: 700;
  transition: background var(--trans), border-color var(--trans), color var(--trans);
}

.rv-btn-edit:hover {
  background: var(--bg3);
  border-color: var(--accent);
  color: var(--text);
}

/* 更新日タグ */
.rv-updated-tag {
  color: var(--text3);
  font-size: 0.78rem;
  margin-left: 4px;
}

.rv-wrap {
  max-width: none;
  margin: 0;
  padding: 0;
  position: relative;
  display: flex;
  flex-direction: column;
  gap: 15px;
}

/* ── 2セクション分割レイアウト ────────────────────────── */
/* list-mainのboxをリセット */
.rv-main {
  background: none;
  border: none;
  box-shadow: none;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 30px;
  /* セクション間のダークグレー隙間 */
}

/* 各sectionがライトグレーのbox */
.rv-section {
  background: var(--bg2);
  border: 1px solid var(--border);
  border-radius: 0;
  box-shadow: var(--shadow);
  padding: 35px 40px;
  position: relative;
}

/* ── 右上固定の編集ボタン ──────────────────────────────── */
.rv-btn-edit-float {
  margin-left: auto;
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 5px 14px;
  background: #f5c518;
  color: #111;
  font-size: var(--fs-sm);
  font-weight: 800;
  border-radius: var(--r-xs);
  text-decoration: none;
  transition: background var(--trans), transform var(--trans);
  white-space: nowrap;
  flex-shrink: 0;
}

.rv-btn-edit-float:hover {
  background: #e6b800;
  transform: translateY(-1px);
}

/* ── パンくずリスト ───────────────────────────────────── */
.rv-breadcrumb {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 2px;
  font-size: var(--fs-sm);
  margin-bottom: 24px;
}

.rv-breadcrumb a {
  color: var(--text2);
  text-decoration: none;
  transition: color var(--trans);
}

.rv-breadcrumb a:hover {
  color: var(--accent);
}

.rv-breadcrumb-sep {
  color: var(--text3);
  padding: 0 4px;
}

/* ── ヘッダー ─────────────────────────────────────────── */
.rv-header {
  margin-bottom: 20px;
}

.rv-cats {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
  align-items: center;
  margin-bottom: 12px;
}

.rv-badge {
  padding: 3px 10px;
  border-radius: var(--r-xs);
  font-size: var(--fs-sm);
  font-weight: 700;
}

.rv-badge-parent {
  background: var(--accent);
  color: #fff;
}

.rv-badge-child {
  background: var(--bg3);
  border: 1px solid var(--border2);
  color: var(--text2);
}

a.rv-badge {
  text-decoration: none;
  transition: opacity var(--trans);
}

a.rv-badge:hover {
  opacity: 0.8;
}

.rv-title {
  font-size: var(--fs-2xl);
  font-weight: 900;
  line-height: 1.25;
  letter-spacing: -0.8px;
  margin-bottom: 8px;
}

.rv-title-stars {
  display: flex;
  align-items: center;
  gap: 6px;
  margin-bottom: 12px;
}

.rv-title-stars .on {
  color: var(--star);
  font-size: 1.1rem;
}

.rv-title-stars .off {
  color: var(--text3);
  font-size: 1.1rem;
}

.rv-title-score {
  font-size: var(--fs-sm);
  font-weight: 700;
  color: var(--text3);
  margin-left: 2px;
}

/* 製品名・価格・購入リンク行 */
.rv-product {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  margin-top: 4px;
}

.rv-product-left {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
}

.rv-product-stars {
  display: flex;
  align-items: center;
  gap: 3px;
  flex-shrink: 0;
}

/* 星（rv-product内直接配置） */
.rv-product .on,
.rv-product .off {
  font-size: var(--fs-sm);
  line-height: 1;
}

.rv-product .on {
  color: var(--star);
}

.rv-product .off {
  color: var(--text3);
}

.rv-product-name {
  font-size: var(--fs-sm);
  color: var(--text2);
  font-weight: 600;
  line-height: 1;
}

.rv-price {
  background: var(--bg3);
  border: 1px solid var(--border);
  border-radius: var(--r-xs);
  padding: 4px 10px;
  font-size: var(--fs-sm);
  color: var(--text2);
  line-height: 1;
  white-space: nowrap;
}

.rv-buy-link {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  font-size: var(--fs-sm);
  font-weight: 700;
  line-height: 1;
  color: #fff;
  background: var(--accent);
  padding: 4px 10px;
  border-radius: var(--r-xs);
  text-decoration: none;
  transition: background var(--trans);
  white-space: nowrap;
}

.rv-buy-link:hover {
  background: var(--accent-dark);
}

/* ── 投稿者バー（rv-sectionの上部に全幅表示） ────────── */
.rv-author-bar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  background: #e8ecf4;
  border-bottom: 1px solid #cdd3e0;
  border-radius: 0;
  padding: 14px 40px;
  margin: -35px -40px 28px -40px;
}

a.rv-author-left {
  color: inherit;
  text-decoration: none;
  transition: opacity var(--trans);
}

a.rv-author-left:hover {
  opacity: 0.8;
}

.rv-author-left {
  display: flex;
  align-items: center;
  gap: 12px;
}

/* 右側: SNSボタン群 + ハートボタン + PR表記 */
.rv-author-right {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-shrink: 0;
  flex-wrap: wrap;
  justify-content: flex-end;
  max-width: 320px;
}

/* PR表記（右下に小さく） */
.rv-ab-pr-note {
  width: 100%;
  text-align: right;
  font-size: 0.68rem;
  color: var(--text2);
  opacity: 0.6;
  line-height: 1;
  margin-top: -4px;
}

/* SNSボタン共通 */
.rv-ab-sns-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 36px;
  height: 36px;
  border-radius: var(--r-xs);
  border: 1.5px solid var(--border2);
  background: var(--bg2);
  color: var(--text2);
  text-decoration: none;
  transition: background var(--trans), color var(--trans), border-color var(--trans);
  flex-shrink: 0;
}
.rv-ab-sns-btn:hover { opacity: 0.85; }

/* X (Twitter) */
.rv-ab-sns-btn.rv-ab-sns-x  { color: #000; border-color: #bbb; }
.rv-ab-sns-btn.rv-ab-sns-x:hover  { background: #000; color: #fff; border-color: #000; opacity: 1; }

/* YouTube */
.rv-ab-sns-btn.rv-ab-sns-yt { color: #ff0000; border-color: #ffb3b3; }
.rv-ab-sns-btn.rv-ab-sns-yt:hover { background: #ff0000; color: #fff; border-color: #ff0000; opacity: 1; }

/* Instagram */
.rv-ab-sns-btn.rv-ab-sns-ig { color: #e1306c; border-color: #f0a0bc; }
.rv-ab-sns-btn.rv-ab-sns-ig:hover { background: #e1306c; color: #fff; border-color: #e1306c; opacity: 1; }

.rv-ava {
  width: 44px;
  height: 44px;
  border-radius: 50%;
  object-fit: cover;
  border: 2px solid var(--border2);
  flex-shrink: 0;
}

.rv-ava-default {
  width: 44px;
  height: 44px;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  background: var(--bg3);
  font-size: 1.2rem;
  border: 2px solid var(--border2);
  flex-shrink: 0;
}

.rv-author-name {
  font-size: var(--fs-base);
  font-weight: 700;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.rv-author-meta {
  font-size: var(--fs-sm);
  color: var(--text2);
  margin-top: 2px;
  white-space: nowrap;
}

/* ── 著者バー モバイル対応 ─────────────────────────────── */
@media (max-width: 640px) {
  .rv-section {
    padding: 20px 20px 24px;
  }
  .rv-author-bar {
    flex-wrap: wrap;
    align-items: flex-start;
    padding: 12px 20px;
    margin: -20px -20px 20px -20px;
    gap: 8px;
  }
  .rv-author-left {
    flex: 1 1 auto;
    min-width: 0;
  }
  .rv-author-right {
    flex: 0 0 100%;
    justify-content: center;
    max-width: 100%;
  }
  .rv-ab-pr-note {
    text-align: center;
  }
}

.rv-like-btn {
  display: flex;
  align-items: center;
  gap: 6px;
  height: 36px;
  padding: 0 16px;
  box-sizing: border-box;
  border-radius: var(--r-xs);
  background: var(--bg3);
  border: 1.5px solid var(--border2);
  color: var(--text2);
  font-family: inherit;
  font-size: var(--fs-base);
  font-weight: 700;
  cursor: pointer;
  transition: all var(--trans);
  flex-shrink: 0;
}

.rv-like-btn:hover {
  border-color: var(--accent);
  color: var(--accent);
}

.rv-like-btn.liked {
  background: var(--accent);
  border-color: var(--accent);
  color: #fff;
}

/* ── 写真ブロック ─────────────────────────────────────── */
.rv-photos {
  display: flex;
  flex-direction: column;
  gap: 6px;
  margin-bottom: 28px;
}

.rv-photo-headline {
  font-size: var(--fs-lg);
  font-weight: 800;
  color: var(--text);
  margin: 16px 0 5px;
  padding: 10px 16px;
  border-left: 4px solid var(--accent);
  background: rgba(220, 38, 38, 0.08);
  border-radius: 0 var(--r-xs) var(--r-xs) 0;
  letter-spacing: 0.02em;
}

/* ── Markdownレンダリングエリア（.md-content）共通スタイル ── */
.md-content {
  line-height: 1.75;
  color: var(--text2);
}

/* md-content の見出し（h1〜h4）は画像上の見出し (.r2-photo-headline) と統一：
   赤の細い縦線 + 軽い padding-left、背景なしのフラット Magazine スタイル。 */
.md-content h1,
.md-content h2,
.md-content h3,
.md-content h4 {
  font-weight: 900;
  color: var(--text);
  border-left: 3px solid var(--accent);
  padding: 0 0 0 8px;
  background: none;
  border-radius: 0;
  letter-spacing: 0.02em;
  line-height: 1.3;
}

.md-content h1 { font-size: var(--fs-xl);  margin: 10px 0 6px; }
.md-content h2 { font-size: var(--fs-lg);  margin: 14px 0 6px; }
.md-content h3 { font-size: var(--fs-base);font-weight: 800; margin: 12px 0 4px; }
.md-content h4 { font-size: var(--fs-base);font-weight: 700; margin: 10px 0 4px; }

.md-content p {
  margin: 0 0 0.6em;
}

.md-content ul,
.md-content ol {
  margin: 0 0 0.6em 2.2em;
  padding: 0;
}

.md-content li {
  margin: 2px 0;
}

.md-content a {
  color: var(--accent);
  text-decoration: underline;
}

.md-content a:hover {
  opacity: 0.8;
}

.md-content strong,
.md-content b {
  color: var(--accent);
  font-weight: 700;
}

.rv-photo-frame {
  margin: 0;
  overflow: hidden;
  border: 1px solid var(--border2);
  border-radius: var(--r-sm);
  background: var(--bg3);
  position: relative;
}

/* YouTube埋め込みフレーム */
.rv-yt-frame {
  position: relative;
  width: 100%;
  aspect-ratio: 16 / 9;
  border-radius: var(--r-sm);
  overflow: hidden;
  background: #000;
}
.rv-yt-frame iframe {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  border: none;
}
/* 1枚目のYouTube: 星評価を右下に重ねる */
.rv-yt-frame--first .rv-photo-stars {
  bottom: 10px;
  right: 12px;
}

/* 1枚目画像右下に重ねる星 */
.rv-photo-stars {
  position: absolute;
  bottom: 10px;
  right: 12px;
  display: flex;
  align-items: center;
  gap: 2px;
  background: rgba(0, 0, 0, 0.55);
  backdrop-filter: blur(4px);
  border-radius: var(--r-xs);
  padding: 5px 10px;
}

.rv-photo-stars .on {
  color: var(--star);
  font-size: 1.05rem;
  line-height: 1;
}

.rv-photo-stars .off {
  color: rgba(255, 255, 255, 0.3);
  font-size: 1.05rem;
  line-height: 1;
}

/* 16:10超の横長画像 — JSがクラス付与 */
.rv-photo-frame.is-wide {
  aspect-ratio: 16 / 10;
}

.rv-photo-img {
  width: 100%;
  height: auto;
  display: block;
  object-fit: contain;
  margin: 0;
}

.rv-photo-frame.is-wide .rv-photo-img {
  width: 100%;
  height: 100%;
  object-fit: contain;
}

.rv-photo-sep {
  display: none;
}

.rv-photo-caption {
  display: flex;
  flex-direction: column;
  gap: 1em;
  padding: 12px 0 24px;
}

.rv-photo-caption p {
  font-size: var(--fs-base);
  color: var(--text2);
  line-height: 1.65;
  margin: 0;
}

/* ── スコアカード ─────────────────────────────────────── */
/* スコアカード（rv-sectionの中に入るためbox設定は不要） */
.rv-score-card {
  padding: 0;
  margin-bottom: 0;
}

/* 総合評価：中央 */
.rv-score-main {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 6px;
  margin-bottom: 4px;
}

.rv-score-num {
  font-size: 3.5rem;
  font-weight: 900;
  line-height: 1;
  color: var(--accent);
  letter-spacing: -2px;
}

.rv-score-stars {
  display: flex;
  gap: 4px;
  font-size: 1.5rem;
}

.rv-score-stars .on {
  color: var(--star);
}

.rv-score-stars .off {
  color: var(--text3);
}

.rv-score-label {
  font-size: var(--fs-sm);
  color: var(--text3);
  font-weight: 700;
  letter-spacing: 0.5px;
}

/* サブ評価 */
.rv-score-sub {
  display: flex;
  flex-direction: column;
  gap: 8px;
  margin-top: 20px;
  padding-top: 20px;
  border-top: 1px solid var(--border);
}

.rv-score-sub-item {
  display: grid;
  grid-template-columns: 90px 1fr auto;
  align-items: center;
  gap: 10px;
}

.rv-score-sub-label {
  font-size: var(--fs-sm);
  color: var(--text3);
  font-weight: 700;
}

.rv-score-sub-bar {
  height: 6px;
  border-radius: 99px;
  background: var(--border2);
  overflow: hidden;
}

.rv-score-sub-bar-fill {
  height: 100%;
  border-radius: 99px;
  background: var(--star);
  transition: width 0.4s ease;
}

.rv-score-sub-num {
  font-size: var(--fs-sm);
  color: var(--text2);
  font-weight: 700;
  min-width: 20px;
  text-align: right;
}

/* ── 良かった点・気になった点 ─────────────────────────── */
.rv-verdict-card {
  margin: 0;
}

.rv-verdict {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 16px;
}

.rv-verdict-box {
  border-radius: var(--r-sm);
  padding: 18px 20px;
  border: 1px solid var(--border);
  background: var(--bg3);
}

.rv-good {
  border-color: rgba(74, 222, 128, 0.25);
}

.rv-bad {
  border-color: rgba(251, 146, 60, 0.25);
}

.rv-verdict-heading {
  font-size: var(--fs-sm);
  font-weight: 900;
  letter-spacing: 0.3px;
  margin-bottom: 12px;
}

.rv-good .rv-verdict-heading {
  color: #4ade80;
}

.rv-bad .rv-verdict-heading {
  color: #fb923c;
}

.rv-verdict-list {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.rv-verdict-list li {
  font-size: var(--fs-base);
  color: var(--text2);
  line-height: 1.5;
  padding-left: 14px;
  position: relative;
}

.rv-verdict-list li::before {
  content: '–';
  position: absolute;
  left: 0;
  color: var(--text3);
}

.rv-verdict-none {
  font-size: var(--fs-sm);
  color: var(--text3);
  margin: 0;
  font-style: italic;
}

/* ── まとめコメント ──────────────────────────────────── */
.rv-summary {
  display: flex;
  align-items: flex-start;
  gap: 14px;
  margin-top: 20px;
  padding-top: 20px;
  border-top: 1px solid var(--border);
}

/* 独立表示（rv-section内に入るためbox不要） */
.rv-summary-standalone {
  margin-top: 0;
  margin-bottom: 0;
  border-top: none;
  padding: 0;
}

.rv-summary-icon {
  font-size: 1.8rem;
  flex-shrink: 0;
  margin-top: 1px;
}

.rv-summary-label {
  font-size: var(--fs-lg);
  font-weight: 800;
  color: var(--text);
  margin: 0 0 12px;
  padding: 10px 16px;
  border-left: 4px solid var(--accent);
  background: rgba(220, 38, 38, 0.08);
  border-radius: 0 var(--r-xs) var(--r-xs) 0;
  letter-spacing: 0.02em;
}

.rv-summary-text {
  font-size: var(--fs-base);
  color: var(--text2);
  line-height: 1.75;
  margin: 0;
}

.rv-summary-standalone .rv-summary-text {
  padding: 0;
}


/* ── 区切り線 ────────────────────────────────────────── */
.rv-divider {
  border: none;
  border-top: 1px solid var(--border);
  margin: 32px 0;
}

/* ── 製品情報（rv-pi） ────────────────────────────────── */
.rv-pi {
  border-left: 4px solid var(--accent);
  background: var(--bg2);
  border-top: 1px solid var(--border);
  border-right: 1px solid var(--border);
  border-bottom: 1px solid var(--border);
  padding: 20px 24px;
}

.rv-pi-label {
  font-size: 0.72rem;
  font-weight: 900;
  letter-spacing: 0.9px;
  text-transform: uppercase;
  color: var(--accent);
  margin-bottom: 14px;
}

.rv-pi-grid {
  display: flex;
  flex-direction: column;
  gap: 10px;
}

.rv-pi-item {
  display: flex;
  align-items: baseline;
  gap: 12px;
}

.rv-pi-key {
  flex-shrink: 0;
  width: 70px;
  font-size: var(--fs-sm);
  font-weight: 700;
  color: var(--text3);
}

.rv-pi-val {
  font-size: var(--fs-base);
  font-weight: 600;
  color: var(--text);
}

.rv-pi-price {
  font-size: 1.15rem;
  font-weight: 900;
  color: var(--accent);
  letter-spacing: -0.5px;
}

.rv-pi-item-link {
  align-items: center;
}

.rv-pi-buy {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 5px 14px;
  border-radius: var(--r-xs);
  background: var(--accent);
  color: #fff;
  font-size: var(--fs-sm);
  font-weight: 700;
  text-decoration: none;
  transition: background var(--trans), transform var(--trans);
}

.rv-pi-buy:hover {
  background: var(--accent-dark);
  transform: translateY(-1px);
}

.rv-pi-buy svg {
  transition: transform var(--trans);
}

.rv-pi-buy:hover svg {
  transform: translateX(2px);
}

@media (max-width: 640px) {
  .rv-pi {
    padding: 16px 18px;
  }
  .rv-pi-key {
    width: 60px;
  }
}

/* ── 関連レビュー ────────────────────────────────────── */
.rv-related-title {
  font-size: var(--fs-lg2);
  font-weight: 900;
  letter-spacing: 0.8px;
  color: var(--text2);
  margin-bottom: 16px;
}

.rv-related-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 14px;
}

/* 関連レビューカード */
.rc3 {
  display: flex;
  flex-direction: column;
  background: var(--bg2);
  border: 1px solid var(--border);
  border-radius: var(--r-sm);
  overflow: hidden;
  text-decoration: none;
  color: inherit;
  transition: transform var(--trans), box-shadow var(--trans), border-color var(--trans);
}

.rc3:hover {
  transform: translateY(-3px);
  box-shadow: var(--shadow);
  border-color: var(--border2);
}

.rc3-img {
  position: relative;
  aspect-ratio: 16/10;
  overflow: hidden;
  background: var(--bg3);
}

.rc3-img img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transition: transform 0.35s ease;
}

.rc3:hover .rc3-img img {
  transform: scale(1.04);
}

.rc3-no-photo {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  height: 100%;
  font-size: 2rem;
  color: var(--text3);
}

.rc3-cat {
  position: absolute;
  top: 8px;
  left: 8px;
  background: rgba(0, 0, 0, 0.65);
  color: #fff;
  font-size: 0.68rem;
  font-weight: 700;
  padding: 2px 7px;
  border-radius: var(--r-xs);
}

.rc3-score-wrap {
  position: absolute;
  bottom: 8px;
  right: 8px;
  background: rgba(0, 0, 0, 0.65);
  color: var(--star);
  font-size: var(--fs-base);
  font-weight: 700;
  padding: 2px 8px;
  border-radius: var(--r-xs);
  letter-spacing: 1px;
}

.rc3-body {
  padding: 12px 14px;
  display: flex;
  flex-direction: column;
  gap: 4px;
  flex: 1;
}

.rc3-stars {
  display: flex;
  gap: 2px;
  font-size: 0.75rem;
}

.rc3-stars .s {
  color: var(--star);
}

.rc3-stars .e {
  color: var(--text3);
}

.rc3-meta {
  font-size: var(--fs-sm);
  color: var(--text3);
}

.rc3-title {
  font-size: var(--fs-sm);
  font-weight: 700;
  color: var(--text);
  line-height: 1.4;
  flex: 1;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

.rc3-foot {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-top: 8px;
  padding-top: 8px;
  border-top: 1px solid var(--border);
}

.rc3-author {
  font-size: var(--fs-sm);
  color: var(--text2);
}

.rc3-likes {
  display: flex;
  align-items: center;
  gap: 4px;
  font-size: var(--fs-sm);
  color: var(--text2);
}

.rc3-likes .heart {
  color: var(--accent);
}

/* ── SNSシェアボタン ──────────────────────────────────── */
.rv-sns {
  display: flex;
  align-items: stretch;
  gap: 8px;
  flex-wrap: wrap;
}

.rv-sns-top {
  margin-bottom: 20px;
}

.rv-sns-bottom {
  margin-bottom: 0;
  padding: 20px;
  background: var(--bg2);
  border: 1px solid var(--border);
  border-radius: var(--r-sm);
}

.rv-sns-label {
  font-size: var(--fs-sm);
  font-weight: 700;
  color: var(--text3);
  letter-spacing: 0.5px;
  margin-right: 4px;
  white-space: nowrap;
}

.rv-sns-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  flex: 1;
  padding: 7px 14px;
  border-radius: var(--r-xs);
  font-size: var(--fs-sm);
  font-weight: 700;
  text-decoration: none;
  color: #fff;
  transition: opacity var(--trans), transform var(--trans);
  white-space: nowrap;
}

.rv-sns-btn:hover {
  opacity: 0.85;
  transform: translateY(-1px);
}

.rv-sns-x {
  background: #000;
}

.rv-sns-fb {
  background: #1877F2;
}

.rv-sns-line {
  background: #06C755;
}

.rv-sns-hb {
  background: #00A4DE;
}

.rv-sns-hb-icon {
  font-size: 0.8rem;
  font-weight: 900;
  font-style: italic;
  line-height: 1;
}

/* ── レスポンシブ ────────────────────────────────────── */
@media (max-width: 640px) {
  .rv-wrap {
    padding: 0;
  }

  .rv-verdict {
    grid-template-columns: 1fr;
  }

  .rv-related-grid {
    grid-template-columns: 1fr;
  }

  .rv-score-num {
    font-size: 2.8rem;
  }

  .rv-score-sub-item {
    grid-template-columns: 80px 1fr auto;
  }

  .rv-sns-btn span:not(.rv-sns-hb-icon) {
    display: none;
  }

  /* スマホはアイコンのみ */
  .rv-sns-btn {
    padding: 8px 12px;
  }
}

/* ── 幅制限ラッパー — list-body と同じ max-width/padding に揃える */
.rv-draft-banner-wrap {
  max-width: 1200px;
  margin: 0 auto;
  padding: 16px 28px 0;
  box-sizing: border-box;
}

.rv-draft-banner {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 12px;
  padding: 12px 18px;
  background: rgba(217, 119, 6, 0.12);
  border: 1.5px solid rgba(217, 119, 6, 0.4);
  border-radius: var(--r-sm);
  box-shadow: 0 0 0 4px rgba(217, 119, 6, 0.06);
}

.rv-draft-badge {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 4px 12px;
  border-radius: 999px;
  background: #d97706;
  color: #fff;
  font-size: var(--fs-sm);
  font-weight: 800;
  white-space: nowrap;
  flex-shrink: 0;
  animation: draft-pulse 2.4s ease-in-out infinite;
}

@keyframes draft-pulse {

  0%,
  100% {
    box-shadow: 0 0 0 0 rgba(217, 119, 6, 0.5);
  }

  50% {
    box-shadow: 0 0 0 6px rgba(217, 119, 6, 0);
  }
}

.rv-draft-msg {
  flex: 1;
  font-size: var(--fs-sm);
  color: #92400e;
  font-weight: 600;
  min-width: 120px;
}

.rv-draft-edit-btn {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 8px 18px;
  border-radius: var(--r-xs);
  background: #d97706;
  color: #fff;
  font-size: var(--fs-sm);
  font-weight: 800;
  text-decoration: none;
  transition: background var(--trans), transform var(--trans);
  white-space: nowrap;
  flex-shrink: 0;
}

.rv-draft-edit-btn:hover {
  background: #b45309;
  transform: translateY(-1px);
}

@media (max-width: 600px) {
  .rv-draft-banner {
    gap: 8px;
  }

  .rv-draft-edit-btn {
    width: 100%;
    justify-content: center;
  }
}

/* ── 公開中オーナーバナー（青系）────────────────────────────── */
.rv-banner-published {
  background: rgba(37, 99, 235, 0.07);
  border-color: rgba(37, 99, 235, 0.25);
  box-shadow: 0 0 0 4px rgba(37, 99, 235, 0.05);
}

.rv-badge-published {
  background: #2563eb;
}

.rv-msg-published {
  color: #1e40af;
}

.rv-edit-btn-published {
  background: #2563eb;
}
.rv-edit-btn-published:hover {
  background: #1d4ed8;
  transform: translateY(-1px);
}

/* ── コメントセクション ─────────────────────────────────────── */
.rv-comments {
  margin-top: 8px;
}

.rv-comments-heading-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 20px;
  flex-wrap: wrap;
}

.rv-comments-heading {
  font-size: var(--fs-lg2);
  font-weight: 900;
  display: flex;
  align-items: center;
  gap: 10px;
  margin-bottom: 0;
}

.rv-comments-count {
  font-size: var(--fs-sm);
  font-weight: 700;
  background: var(--bg4);
  color: var(--text3);
  padding: 2px 10px;
  border-radius: 99px;
}

/* エラー */
.rv-comment-error {
  padding: 12px 16px;
  border-radius: var(--r-sm);
  background: rgba(200, 51, 51, 0.12);
  border: 1px solid rgba(200, 51, 51, 0.35);
  color: #fca5a5;
  font-size: var(--fs-sm);
  margin-bottom: 16px;
}

/* 空メッセージ */
.rv-comment-empty {
  color: var(--text3);
  font-size: var(--fs-base);
  padding: 24px 0;
  text-align: center;
}

/* 一覧 */
.rv-comment-list {
  display: flex;
  flex-direction: column;
  gap: 0;
}

.rv-comment-item {
  display: flex;
  gap: 12px;
  padding: 16px 0;
  border-bottom: 1px solid var(--border);
}

.rv-comment-item:last-child {
  border-bottom: none;
}

/* アバター */
.rv-comment-ava {
  flex-shrink: 0;
  display: block;
  transition: opacity var(--trans);
}

.rv-comment-ava:hover {
  opacity: 0.8;
}

.rv-comment-ava-img {
  width: 36px;
  height: 36px;
  border-radius: 50%;
  object-fit: cover;
  display: flex;
  align-items: center;
  justify-content: center;
}

.rv-comment-ava-default {
  background: var(--bg4);
  font-size: 18px;
  width: 36px;
  height: 36px;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
}

/* コメント本文 */
.rv-comment-body {
  flex: 1;
  min-width: 0;
}

.rv-comment-meta {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 8px;
  margin-bottom: 6px;
}

.rv-comment-name {
  font-size: var(--fs-base);
  font-weight: 700;
  color: var(--text);
  transition: color var(--trans);
}

.rv-comment-name:hover {
  color: var(--accent);
}

.rv-comment-time {
  font-size: var(--fs-sm);
  color: var(--text3);
}

/* コメント削除ボタン（自分のコメントのみ表示） */
.rv-comment-del-btn {
  margin-left: auto;
  padding: 2px 10px;
  border-radius: var(--r-xs);
  border: 1.5px solid rgba(220, 38, 38, 0.30);
  background: rgba(220, 38, 38, 0.06);
  color: #dc2626;
  font-size: 0.72rem;
  font-weight: 700;
  font-family: inherit;
  cursor: pointer;
  transition: background var(--trans), border-color var(--trans);
}
.rv-comment-del-btn:hover {
  background: rgba(220, 38, 38, 0.14);
  border-color: #dc2626;
}

.rv-comment-text {
  font-size: var(--fs-base);
  color: var(--text2);
  line-height: 1.7;
}

/* フォーム */
.rv-comment-form {
  margin-top: 24px;
  border: 1px solid var(--border2);
  border-radius: var(--r-md);
  background: var(--bg3);
  overflow: hidden;
}

.rv-comment-textarea {
  display: block;
  width: 100%;
  min-height: 100px;
  max-height: 400px;
  padding: 14px 16px;
  background: transparent;
  border: none;
  outline: none;
  color: var(--text);
  font-family: inherit;
  font-size: var(--fs-base);
  line-height: 1.7;
  resize: vertical;
}

.rv-comment-textarea::placeholder {
  color: var(--text4);
}

.rv-comment-form-foot {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 12px;
  padding: 8px 12px;
  border-top: 1px solid var(--border);
  background: var(--bg4);
}

.rv-comment-len {
  font-size: var(--fs-sm);
  color: var(--text3);
  font-variant-numeric: tabular-nums;
}

.rv-comment-submit {
  padding: 7px 22px;
  border-radius: var(--r-sm);
  background: var(--accent);
  color: #fff;
  font-size: var(--fs-sm);
  font-weight: 800;
  border: none;
  cursor: pointer;
  transition: background var(--trans), transform var(--trans), opacity var(--trans);
}

.rv-comment-submit:hover:not(:disabled) {
  background: #a72828;
  transform: translateY(-1px);
}

.rv-comment-submit:disabled {
  opacity: 0.4;
  cursor: not-allowed;
}

/* 未ログイン */
.rv-comment-login {
  margin-top: 20px;
  padding: 16px;
  border-radius: var(--r-md);
  border: 1px dashed var(--border2);
  text-align: center;
  font-size: var(--fs-base);
  color: var(--text3);
}

.rv-comment-login-link {
  color: var(--accent);
  font-weight: 700;
  transition: opacity var(--trans);
}

.rv-comment-login-link:hover {
  opacity: 0.8;
}

.rv-comment-login {
  margin-top: 20px;
  padding: 16px;
  border-radius: var(--r-md);
  border: 1px dashed var(--border2);
  text-align: center;
  font-size: var(--fs-base);
  color: var(--text3);
}

.rv-comment-login-link {
  color: var(--accent);
  font-weight: 700;
  transition: opacity var(--trans);
}

.rv-comment-login-link:hover {
  opacity: 0.8;
}

/* ── コメント並べ替えトグル ─────────────────────────────── */
.rv-comment-order {
  display: flex;
  align-items: center;
  gap: 4px;
  flex-shrink: 0;
}

.rv-comment-order-btn {
  display: inline-flex;
  align-items: center;
  padding: 4px 12px;
  border-radius: 999px;
  border: 1.5px solid var(--border2);
  background: transparent;
  color: var(--text3);
  font-size: 0.75rem;
  font-weight: 700;
  transition: all var(--trans);
  white-space: nowrap;
}

.rv-comment-order-btn:hover {
  border-color: var(--accent);
  color: var(--accent);
  background: var(--accent-light);
}

.rv-comment-order-btn.on {
  border-color: var(--accent);
  background: var(--accent);
  color: #fff;
  cursor: default;
  pointer-events: none;
}

/* ── コメント「もっと見る」ボタン ────────────────────────── */
.rv-comment-more-wrap {
  text-align: center;
  padding: 20px 0 8px;
}

.rv-comment-more-btn {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 8px 24px;
  border-radius: 999px;
  border: 1.5px solid var(--border2);
  background: transparent;
  color: var(--text2);
  font-size: var(--fs-sm);
  font-weight: 700;
  font-family: inherit;
  cursor: pointer;
  transition: background var(--trans), border-color var(--trans), transform var(--trans);
}

.rv-comment-more-btn:hover {
  background: var(--bg3);
  border-color: var(--accent);
  color: var(--accent);
  transform: translateY(-1px);
}

.rv-comment-more-btn:active {
  transform: translateY(0);
}

.rv-comment-more-btn:disabled {
  opacity: 0.5;
  cursor: not-allowed;
  transform: none;
}

/* ═══════════════════════════════════════════════════════════════
   購入リンクカードセクション（rv-pl-*）
   ═══════════════════════════════════════════════════════════════ */

/* ラッパー：rv-section と同じbox */
.rv-pl-wrap {
  background: var(--bg2);
  border: 1px solid var(--border);
  box-shadow: var(--shadow);
  padding: 28px 32px 20px;
}

/* ── 商品基本情報 独立BOX ── */
.rv-pi-box {
  background: var(--bg2);
  border: 1px solid var(--border);
  box-shadow: var(--shadow);
  padding: 20px 32px 20px;
  margin-top: 0;
}

.rv-pi-box-label {
  font-size: var(--fs-base);
  font-weight: 900;
  letter-spacing: 0.3px;
  color: var(--text);
  margin-bottom: 14px;
}

/* 基本製品情報（コンパクト版） */
.rv-pi-compact {
  margin-bottom: 0;
  padding-bottom: 0;
  border-bottom: none;
}
.rv-pi-compact .rv-pi-grid {
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.rv-pi-compact .rv-pi-item {
  display: flex;
  align-items: center;
  gap: 8px;
  min-width: 0;
}
.rv-pi-compact .rv-pi-key {
  font-size: 0.75rem;
  font-weight: 700;
  color: var(--text3);
  text-transform: uppercase;
  letter-spacing: 0.4px;
  white-space: nowrap;
}
.rv-pi-compact .rv-pi-val {
  font-size: var(--fs-sm);
  color: var(--text2);
  font-weight: 600;
}
.rv-pi-price {
  color: var(--accent);
  font-weight: 800;
}
.rv-pi-compact .rv-pi-link {
  font-size: var(--fs-sm);
  color: var(--accent);
  font-weight: 600;
  text-decoration: underline;
  transition: opacity var(--trans);
}
.rv-pi-compact .rv-pi-link:hover {
  opacity: 0.75;
}

/* セクションラベル */
.rv-pl-label {
  font-size: var(--fs-base);
  font-weight: 900;
  letter-spacing: 0.3px;
  color: var(--text);
  margin-bottom: 14px;
}

/* カードグリッド */
.rv-pl-cards {
  display: flex;
  flex-direction: column;
  gap: 10px;
  margin-bottom: 16px;
}

/* 個別カード（横並び） */
.rv-pl-card {
  display: flex;
  flex-direction: row;
  align-items: stretch;
  background: var(--bg3);
  border: 1px solid var(--border2);
  border-radius: var(--r-sm);
  overflow: hidden;
  text-decoration: none;
  color: inherit;
  transition: border-color var(--trans), box-shadow var(--trans);
}
.rv-pl-card:hover {
  border-color: var(--accent);
  box-shadow: 0 4px 16px rgba(0,0,0,0.2);
}

/* 商品画像エリア */
.rv-pl-img-wrap {
  width: 120px;
  min-width: 120px;
  aspect-ratio: 1 / 1;
  background: var(--bg4);
  overflow: hidden;
  flex-shrink: 0;
}
.rv-pl-img {
  width: 100%;
  height: 100%;
  object-fit: contain;
  display: block;
}
.rv-pl-img-none {
  width: 100%;
  height: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 0.72rem;
  color: var(--text3);
}

/* 商品情報エリア */
.rv-pl-body {
  padding: 12px 16px;
  display: flex;
  flex-direction: column;
  gap: 5px;
  flex: 1;
  min-width: 0;
}

/* ショップラベル */
.rv-pl-src {
  display: inline-block;
  font-size: 0.68rem;
  font-weight: 800;
  padding: 2px 7px;
  border-radius: 3px;
  letter-spacing: 0.3px;
  width: fit-content;
}
.rv-pl-src--amazon  { background: #f90; color: #111; }
.rv-pl-src--rakuten { background: #bf0000; color: #fff; }
.rv-pl-src--yahoo   { background: #ff0033; color: #fff; }
.rv-pl-src--other   {
  background: var(--bg4);
  color: var(--text2);
  border: 1px solid var(--border2);
}

/* 商品名 */
.rv-pl-name {
  font-size: 0.82rem;
  font-weight: 700;
  color: var(--text);
  line-height: 1.45;
  display: -webkit-box;
  -webkit-line-clamp: 3;
  -webkit-box-orient: vertical;
  overflow: hidden;
  flex: 1;
}

/* 価格 */
.rv-pl-price {
  font-size: 1rem;
  font-weight: 900;
  color: var(--accent);
  letter-spacing: -0.5px;
}

/* レビュー評価 */
.rv-pl-rating {
  display: flex;
  align-items: center;
  gap: 5px;
}
.rv-pl-stars {
  font-size: 0.75rem;
  color: var(--star);
  letter-spacing: -1px;
}
.rv-pl-rcount {
  font-size: 0.72rem;
  color: var(--text3);
}

/* CTAボタン風テキスト */
.rv-pl-btn {
  margin-top: auto;
  font-size: 0.78rem;
  font-weight: 700;
  color: var(--accent);
  padding-top: 6px;
  border-top: 1px solid var(--border);
}

/* フッター */
.rv-pl-footer {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 16px;
  flex-wrap: wrap;
  padding-top: 12px;
  border-top: 1px solid var(--border);
}
.rv-pl-pr-note {
  font-size: 0.7rem;
  color: var(--text3);
  margin-left: auto;
}
.rv-pl-yahoo-credit {
  font-size: 0.68rem;
  color: var(--text3);
  text-decoration: none;
  transition: color var(--trans);
}
.rv-pl-yahoo-credit:hover {
  color: var(--accent);
}

/* モバイル */
@media (max-width: 640px) {
  .rv-pl-wrap {
    padding: 20px 16px 16px;
  }
  .rv-pl-img-wrap {
    width: 90px;
    min-width: 90px;
  }
}