/* ベース設定・カラーパレット */
:root {
  --text-color: #333;
  --bg-color: #fcfcfc;
  --accent-color: #111;
  --gold: #d4af37;
  --silver: #c0c0c0;
  --bronze: #cd7f32;
}

html {
  scroll-behavior: smooth; 
  scroll-padding-top: 20px;
}

body {
  font-family: "Helvetica Neue", Arial, "Hiragino Kaku Gothic ProN", "Hiragino Sans", Meiryo, sans-serif;
  color: var(--text-color);
  background-color: var(--bg-color);
  line-height: 1.6;
  margin: 0;
  padding: 0;
}

img {
  max-width: 100%;
  height: auto;
  vertical-align: bottom;
}

/* ヒーローセクション */
.hero {
  text-align: center;
  margin-bottom: 40px;
  padding: 20px 20px 0; 
}

.hero-title {
  margin: 0;
}

/* バナー画像のスタイリング */
.hero-banner {
  width: 100%;        
  max-width: 1000px;   
  height: auto;       
  display: block;
  margin: 0 auto;     
  box-shadow: 0 4px 15px rgba(0,0,0,0.05); 
}

/* ランキング全体コンテナ */
.ranking-container {
  max-width: 800px; /* PC閲覧時の最大幅 */
  margin: 0 auto;
  padding: 0 20px 60px;
}

/* カテゴリーセクション */
.category-section {
  margin-bottom: 80px;
}

.category-title {
  text-align: center;
  font-size: 2rem;
  font-family: "Libre Baskerville", serif;
  font-optical-sizing: auto;
  font-weight: weight;
  font-style: normal;
  border-bottom: 2px solid var(--accent-color);
  padding-bottom: 10px;
  margin-bottom: 40px;
}

.category-title span {
  display: block;
  font-family: "Helvetica Neue", Arial, sans-serif;
  font-size: 0.9rem;
  font-weight: normal;
  color: #666;
  margin-top: 5px;
}

/* ランキングアイテム */
.ranking-item {
  position: relative;
  background: #fff;
  padding: 30px 20px;
  margin-bottom: 40px;
  border-radius: 8px;
  box-shadow: 0 4px 15px rgba(0,0,0,0.05);
  display: flex;
  flex-direction: column;
  gap: 20px;
}

/* バッジ設定 */
.rank-badge {
  position: absolute;
  top: -15px;
  left: -10px;
  width: 50px;
  height: 50px;
  color: #fff;
  font-size: 1.5rem;
  font-weight: bold;
  font-family: "Times New Roman", Times, serif;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  box-shadow: 0 2px 5px rgba(0,0,0,0.2);
  z-index: 10;
}

.rank-1 { background-color: var(--gold); }
.rank-2 { background-color: var(--silver); }
.rank-3 { background-color: var(--bronze); }

/* 商品詳細テキスト */
.brand-name {
  font-size: 0.8rem;
  color: #888;
  margin-bottom: 4px;
}

.item-title {
  font-size: 1.25rem;
  margin: 0 0 10px;
  font-weight: bold;
}

/* セール価格の表示設定 */
.item-price-wrap {
  margin: 0 0 20px;
  display: flex;
  align-items: baseline; 
  flex-wrap: wrap;       
  gap: 8px;              
}

/* 定価 */
.original-price {
  font-size: 0.95rem;
  color: #888;
  text-decoration: line-through; 
}

/* 矢印 */
.price-arrow {
  color: #888;
  font-size: 0.9rem;
}

/* セール価格 */
.sale-price {
  font-size: 1.3rem;
  color: #d90000; 
  font-weight: bold;
}

.sale-price span {
  font-size: 0.8rem;
  font-weight: normal;
  color: #444; 
  margin-left: 2px;
}

/* 商品説明 */
.staff-voice {
  background-color: #f9f9f9;
  padding: 15px;
  border-left: 4px solid var(--accent-color);
  margin-bottom: 25px;
  font-size: 0.8rem;
}

.staff-voice strong {
  display: block;
  font-family: "Times New Roman", Times, serif;
  margin-bottom: 5px;
}

/* 各商品のボタン */
.btn-primary {
  display: inline-block;     
  min-width: 140px;          
  padding: 12px 24px;       
  background-color: var(--accent-color);
  color: #fff;
  text-align: center;
  text-decoration: none;
  font-weight: bold;
  font-family: "Helvetica Neue", Arial, sans-serif; 
  letter-spacing: 0.15em;   
  transition: all 0.3s ease;
  border: 1px solid var(--accent-color); 
  border-radius: 30px;
}

/* ホバー時の動き */
.btn-primary:hover {
  background-color: #fff;
  color: var(--accent-color);
}

/* --- PC向けのレイアウト調整（画面幅600px以上） --- */
@media screen and (min-width: 600px) {
  .ranking-item {
    flex-direction: row; /* 横並びに変更 */
    align-items: center;
    padding: 40px;
  }
  
  .item-image {
    flex: 1;
  }
  
  .item-details {
    flex: 1.2;
  }

  .rank-badge {
    top: -20px;
    left: -20px;
    width: 60px;
    height: 60px;
    font-size: 1.8rem;
  }
}

/* リード文のスタイル */
.hero-intro {
  max-width: 600px;      
  margin: 25px auto 0;   
  font-size: 0.95rem;    
  line-height: 1.8;      
  color: #444;           
  text-align: center;    
}

/* スマホとPCで改行位置を最適化する */
/* 画面幅600px以上（PC）のときは、スマホ用の改行(<br class="sp-only">)を無効にする */
@media screen and (min-width: 600px) {
  .sp-only {
    display: none;
  }
}

/* スクロールを促す縦線と余白 */
.scroll-line {
  width: 1px;               
  height: 100px;             
  background-color: #333;   
  margin: 60px auto 40px;   
}

/* PC閲覧時の調整（画面が広いときは線と余白を少し長くする） */
@media screen and (min-width: 600px) {
  .scroll-line {
    height: 180px;
    margin: 80px auto 60px;
  }
}

/* VIEW ALL */
.view-all-wrapper {
  text-align: center;
  margin: 60px 0 80px;      
  padding-top: 60px;        
  border-top: 1px solid #e0e0e0; 
}

/* ボタンデザイン */
.btn-view-all {
  display: inline-block;
  min-width: 280px;         
  padding: 18px 30px;
  background-color: var(--accent-color); 
  color: #fff;
  text-decoration: none;
  font-weight: bold;
  letter-spacing: 0.1em;    
  border: 1px solid var(--accent-color); 
  transition: all 0.3s ease; 
}

/* ボタンにマウスを乗せた時の動き */
.btn-view-all:hover {
  background-color: #fff;
  color: var(--accent-color);
}

/* PC閲覧時の調整 */
@media screen and (min-width: 600px) {
  .btn-view-all {
    min-width: 320px; 
  }
}