/* ============================================================
   ブログ機能 専用スタイル（style.css のデザイントークンを流用）
   ============================================================ */

/* ── 検索バー ────────────────────────────────────────────── */
.blog-search-bar { max-width:560px;margin:0 auto 0; }
.blog-search-input { text-align:left; }
.blog-result-count { margin-top:1.5rem;margin-bottom:1rem;font-size:.8125rem;color:var(--text-faint); }

/* ── 記事カード グリッド（一覧・トップページ共通） ───────── */
.blog-grid { display:grid;grid-template-columns:repeat(3,1fr);gap:1.5rem; }
.blog-empty { text-align:center;color:var(--text-muted);font-size:.9rem;padding:3rem 0; }

.blog-card {
  display:flex;flex-direction:column;
  background:#fff;border:1px solid var(--border);border-radius:var(--r-lg);
  overflow:hidden;box-shadow:var(--shadow-sm);
  transition:box-shadow var(--trans),transform var(--trans);
}
.blog-card:hover { box-shadow:var(--shadow-lg);transform:translateY(-6px); }

.blog-card-eyecatch,
.blog-post-eyecatch {
  aspect-ratio:16/10;position:relative;overflow:hidden;
  display:flex;align-items:center;justify-content:center;
  background:linear-gradient(135deg,var(--sky),var(--teal));
}
.blog-card-eyecatch img,
.blog-post-eyecatch img { width:100%;height:100%;object-fit:cover; }
.blog-post-eyecatch { aspect-ratio:21/9;border-radius:var(--r-lg);margin-bottom:1.75rem; }
.blog-post-eyecatch .weather-scene-emoji { font-size:4rem; }

.blog-card-body { padding:1.375rem;display:flex;flex-direction:column;gap:.625rem;flex:1; }
.blog-card-meta { display:flex;align-items:center;justify-content:space-between;font-size:.75rem;color:var(--text-faint);font-variant-numeric:tabular-nums; }
.blog-card-weather { display:inline-flex;align-items:center;gap:.25rem;font-weight:700;color:var(--text-muted); }
.blog-card-title { font-size:.9375rem;font-weight:700;color:var(--text-dark);line-height:1.5; }
.blog-card-excerpt { font-size:.8125rem;color:var(--text-muted);line-height:1.8;flex:1; }
.blog-card-tags { display:flex;flex-wrap:wrap;gap:.375rem;margin-top:.25rem; }
.blog-card-tag { font-size:.6875rem; }

/* ── 記事ページ本体 ──────────────────────────────────────── */
.blog-post-meta { display:flex;flex-wrap:wrap;align-items:center;gap:1rem;margin-bottom:1rem; }
.blog-post-meta time { font-size:.8125rem;color:var(--text-faint);font-family:monospace;font-variant-numeric:tabular-nums;font-weight:600; }
.blog-weather-badge {
  display:inline-flex;align-items:center;gap:.5rem;
  font-size:.8125rem;font-weight:600;color:var(--text-body);
  background:var(--bg-light);padding:.375rem 1rem;border-radius:var(--r-full);
}
.blog-weather-icon { font-size:1rem; }
.blog-post-tags { display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:1.75rem; }
.blog-post-body { font-size:.9375rem;color:var(--text-body);line-height:2.1; }
.blog-post-body p + p { margin-top:1.25rem; }
.blog-post-footer { margin-top:2.5rem;padding-top:2rem;border-top:1px solid var(--border); }

/* ── トップページ「本日のブログ」導線 ────────────────────── */
.todays-blog-card {
  display:grid;grid-template-columns:280px 1fr;gap:2rem;align-items:stretch;
  background:#fff;border:1px solid var(--border);border-radius:var(--r-xl);
  overflow:hidden;box-shadow:var(--shadow-md);
  transition:box-shadow var(--trans),transform var(--trans);
}
.todays-blog-card:hover { box-shadow:var(--shadow-lg);transform:translateY(-4px); }
.todays-blog-eyecatch {
  position:relative;min-height:180px;
  background:linear-gradient(135deg,var(--sky),var(--teal));
  display:flex;align-items:center;justify-content:center;overflow:hidden;
}
.todays-blog-eyecatch img { width:100%;height:100%;object-fit:cover; }
.todays-blog-eyecatch .weather-scene-emoji { font-size:3.25rem; }
.todays-blog-body { padding:2rem 2rem 2rem 0;display:flex;flex-direction:column;gap:.75rem;justify-content:center; }
.todays-blog-meta { display:flex;align-items:center;gap:1rem;font-size:.8125rem;color:var(--text-faint); }
.todays-blog-title { font-size:1.25rem;font-weight:900;color:var(--text-dark);line-height:1.4; }
.todays-blog-excerpt { font-size:.875rem;color:var(--text-muted);line-height:1.9; }
.todays-blog-link { display:inline-flex;align-items:center;gap:.375rem;font-size:.8125rem;font-weight:700;color:var(--sky);margin-top:.25rem; }

/* ============================================================
   天気アイキャッチ「Weather Scene」(AI画像を使わない無料の演出)
   ============================================================ */
.weather-scene { position:absolute;inset:0;overflow:hidden;display:flex;align-items:center;justify-content:center; }
.weather-scene::before {
  content:'';position:absolute;inset:-10%;
  background-size:200% 200%;animation:gradient-shift 10s ease infinite;
}
.weather-scene--sunny::before   { background-image:linear-gradient(135deg,#FDE68A,#FB923C,#F97316); }
.weather-scene--cloudy::before  { background-image:linear-gradient(135deg,#BAE6FD,#38BDF8,#0EA5E9); }
.weather-scene--rainy::before   { background-image:linear-gradient(135deg,#64748B,#334155,#1E293B); }
.weather-scene--snowy::before   { background-image:linear-gradient(135deg,#F0F9FF,#BAE6FD,#7DD3FC); }
.weather-scene--stormy::before  { background-image:linear-gradient(135deg,#4C1D95,#312E81,#0F172A); }
.weather-scene--foggy::before   { background-image:linear-gradient(135deg,#E2E8F0,#94A3B8,#64748B); }

.weather-scene-emoji {
  position:relative;z-index:3;font-size:2.75rem;
  filter:drop-shadow(0 6px 16px rgba(0,0,0,.25));
  animation:float-y 5s ease-in-out infinite;
}

/* 雲(曇り・雨・雷・霧で使用) */
.weather-cloud {
  position:absolute;z-index:1;border-radius:50%;
  background:rgba(255,255,255,.85);filter:blur(1px);
  box-shadow:24px 4px 0 -4px rgba(255,255,255,.7),-22px 6px 0 -6px rgba(255,255,255,.6);
}
.weather-cloud-a { width:34%;height:22%;top:18%;left:8%;animation:weather-drift 14s ease-in-out infinite; }
.weather-cloud-b { width:26%;height:16%;top:52%;left:52%;opacity:.75;animation:weather-drift 18s ease-in-out infinite reverse; }
@keyframes weather-drift { 0%,100% { transform:translateX(0); } 50% { transform:translateX(12%); } }

/* 太陽(晴れ) */
.weather-sun {
  position:absolute;z-index:1;top:16%;right:14%;width:34%;height:34%;border-radius:50%;
  background:radial-gradient(circle,#FFF7ED 0%,#FDE68A 55%,transparent 80%);
  box-shadow:0 0 40px 12px rgba(253,230,138,.55);
  animation:pulse-ring 3.5s ease-in-out infinite;
}

/* 雨(降水) */
.weather-rain {
  position:absolute;z-index:2;inset:0;
  background-image:repeating-linear-gradient(115deg,rgba(224,242,254,.75) 0 2px,transparent 2px 18px);
  background-size:120% 220%;
  animation:weather-rain-fall .6s linear infinite;
}
@keyframes weather-rain-fall { 0% { background-position:0 -20%; } 100% { background-position:0 100%; } }

/* 雪 */
.weather-snow {
  position:absolute;z-index:2;inset:0;
  background-image:
    radial-gradient(circle,rgba(255,255,255,.95) 0 2px,transparent 3px) 10% 20%/14% 22% repeat,
    radial-gradient(circle,rgba(255,255,255,.85) 0 2px,transparent 3px) 60% 10%/18% 26% repeat,
    radial-gradient(circle,rgba(255,255,255,.9) 0 1.5px,transparent 3px) 35% 50%/12% 20% repeat;
  animation:weather-snow-fall 6s linear infinite;
}
@keyframes weather-snow-fall { 0% { background-position:10% 0,60% 0,35% 0; } 100% { background-position:10% 100%,60% 130%,35% 160%; } }

/* 雷(フラッシュ) */
.weather-lightning {
  position:absolute;z-index:2;inset:0;background:#fff;opacity:0;
  animation:weather-flash 4.5s ease-in-out infinite;
}
@keyframes weather-flash {
  0%,88%,94% { opacity:0; }
  90% { opacity:.55; }
  92% { opacity:.1; }
}

/* 霧 */
.weather-fog {
  position:absolute;z-index:2;left:-20%;right:-20%;height:34%;top:38%;
  background:linear-gradient(90deg,transparent,rgba(255,255,255,.55),transparent);
  animation:weather-drift 9s ease-in-out infinite;
}

/* ============================================================
   RESPONSIVE
   ============================================================ */
@media (max-width:1024px) {
  .blog-grid { grid-template-columns:1fr 1fr; }
  .todays-blog-card { grid-template-columns:1fr; }
  .todays-blog-body { padding:1.75rem; }
}
@media (max-width:640px) {
  .blog-grid { grid-template-columns:1fr; }
  .blog-post-eyecatch { aspect-ratio:16/10; }
  .blog-post-meta { gap:.625rem; }
}
