@charset "UTF-8";
/* 共通スタイル（カテゴリー一覧・ジャーナルなど新規ページ用）。配色は hero.css と揃える。 */

:root {
  --navy: #2B4B65;
  --navy-mid: #213f56;
  --navy-deep: #183244;
  --footer-bg: #223546;
  --aqua: #86d3dc;
  --aqua-strong: #2f9aa8;
  --aqua-teal: #3a7f8a;
  --aqua-soft: rgba(134, 211, 220, .18);
  --gold: #f0b54a;
  --ink: #1d3446;
  --ink-soft: #5b7383;
  --line: #e3ebef;
  --paper: #fbfdfd;
  --mist: #eef3f5;
  --radius: 10px;
  --font: 'Helvetica', 'Arial', 'Hiragino Kaku Gothic ProN', 'ヒラギノ角ゴ ProN W3', 'メイリオ', Meiryo, sans-serif;
}

*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; }

body.site {
  margin: 0;
  font-family: var(--font);
  line-height: 1.8;
  color: var(--ink);
  background: var(--paper);
  -webkit-text-size-adjust: 100%;
}
body.site img { max-width: 100%; height: auto; }
body.site a { color: var(--aqua-teal); }

/* ---------- ナビ ---------- */
.site-nav {
  position: sticky;
  top: 0;
  z-index: 50;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  padding: .5rem max(16px, calc((100% - 1080px) / 2));
  background: #2B4B65;
  box-shadow: 0 2px 10px rgba(24, 50, 68, .25);
}
.site-brand { display: flex; align-items: center; gap: .75rem; min-width: 0; }
body.site .site-brand img { display: block; height: 36px; width: auto; max-width: none; }
.site-nav-links { display: flex; gap: .25rem; flex-shrink: 0; }
body.site .site-nav-links a {
  padding: .4rem .8rem;
  border-radius: 999px;
  color: #fff;
  font-size: .875rem;
  text-decoration: none;
  transition: background .2s ease, color .2s ease;
}
body.site .site-nav-links a:hover, body.site .site-nav-links a:focus-visible { background: var(--aqua-soft); color: var(--aqua); }

/* ---------- フッター ---------- */
.site-footer {
  margin-top: 4rem;
  padding: 2.5rem 16px 2rem;
  background: #223546;
  color: #c3d2da;
  text-align: center;
  font-size: .875rem;
}
.site-footer ul { display: flex; flex-wrap: wrap; justify-content: center; gap: .5rem 1.75rem; margin: 0 0 1.25rem; padding: 0; list-style: none; }
body.site .site-footer a { color: #fff; text-decoration: none; border-bottom: 1px solid transparent; transition: border-color .2s ease, color .2s ease; }
body.site .site-footer a:hover { color: var(--aqua); border-bottom-color: var(--aqua); }
.site-copy { margin: 0; color: #8aa1af; font-size: .75rem; }

/* ---------- スクロール表示 ---------- */
.js-reveal [data-reveal]:not(.is-in){opacity:0;transform:translateY(18px)}
.js-reveal [data-reveal]{transition:opacity .6s ease,transform .6s ease;transition-delay:calc(var(--reveal-i,0) * 60ms)}

/* ---------- カテゴリー一覧 ---------- */
.cat-hero {
  position: relative;
  overflow: hidden;
  isolation: isolate;
  padding: 3.5rem max(16px, calc((100% - 1080px) / 2)) 3rem;
  color: #fff;
  background:
    radial-gradient(ellipse 60% 70% at 82% 30%, rgba(134, 211, 220, .20), transparent 70%),
    radial-gradient(ellipse 50% 60% at 0% 100%, rgba(134, 211, 220, .12), transparent 70%),
    linear-gradient(160deg, #2B4B65 0%, #213f56 50%, #183244 100%);
}
.cat-hero::before, .cat-hero::after {
  content: "";
  position: absolute;
  z-index: -1;
  border-radius: 50%;
  pointer-events: none;
  background:
    radial-gradient(circle at 32% 28%, rgba(255, 255, 255, .5) 0 8%, rgba(255, 255, 255, 0) 22%),
    radial-gradient(circle at 50% 50%, rgba(255, 255, 255, 0) 55%, rgba(190, 236, 242, .18) 80%, rgba(255, 255, 255, .3) 100%);
  box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .14);
  will-change: transform;
}
.cat-hero::before { width: 120px; height: 120px; right: 12%; top: 18%; animation: cat-float 9s ease-in-out infinite; }
.cat-hero::after { width: 56px; height: 56px; right: 26%; bottom: 14%; animation: cat-float 12s ease-in-out -4s infinite; }
@keyframes cat-float {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(-18px); }
}

.cat-eyebrow { margin: 0 0 .5rem; font-size: .75rem; font-weight: 700; letter-spacing: .2em; color: var(--aqua); }
.cat-title { margin: 0 0 .5rem; font-size: clamp(1.75rem, 5vw, 2.5rem); line-height: 1.3; letter-spacing: .02em; }
.cat-desc { margin: 0 0 1.5rem; color: #c3d2da; }
.cat-count {
  display: inline-block;
  margin-left: .75rem;
  padding: .05rem .7rem;
  border-radius: 999px;
  background: var(--aqua-soft);
  color: var(--aqua);
  font-size: .8125rem;
  font-weight: 700;
  vertical-align: 1px;
}

.cat-jumps { display: flex; flex-wrap: wrap; gap: .5rem; }
.cat-jump {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 2.5rem;
  height: 2.5rem;
  padding: 0 .75rem;
  border-radius: 999px;
  border: 1px solid rgba(134, 211, 220, .45);
  color: #fff;
  font-size: .9375rem;
  text-decoration: none;
  transition: background .2s ease, color .2s ease, transform .2s ease;
}
body.site a.cat-jump { color: #fff; }
.cat-jump:hover, .cat-jump:focus-visible { background: var(--aqua); border-color: var(--aqua); color: var(--navy-deep); transform: translateY(-2px); }
body.site a.cat-jump:hover, body.site a.cat-jump:focus-visible { color: var(--navy-deep); }

.cat-body { max-width: 1080px; margin: 0 auto; padding: 2rem 16px 0; }
.cat-group { margin-bottom: 2.25rem; scroll-margin-top: 72px; }
.cat-group-title {
  display: flex;
  align-items: center;
  gap: .75rem;
  margin: 0 0 1rem;
  font-size: 1.375rem;
  color: var(--navy);
}
.cat-group-title::after { content: ""; flex: 1; height: 1px; background: linear-gradient(90deg, var(--line), transparent); }

.cat-list {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
  gap: .5rem .75rem;
  margin: 0;
  padding: 0;
  list-style: none;
}
.cat-list li { min-width: 0; }
.cat-list a {
  display: block;
  padding: .55rem .9rem;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  background: #fff;
  color: var(--ink);
  font-size: .9375rem;
  line-height: 1.5;
  overflow-wrap: anywhere;
  text-decoration: none;
  transition: color .2s ease, border-color .2s ease, box-shadow .2s ease, transform .2s ease;
}
body.site .cat-list a { color: var(--ink); }
.cat-list a:hover, .cat-list a:focus-visible {
  color: var(--aqua-strong);
  border-color: var(--aqua);
  box-shadow: 0 4px 14px rgba(43, 75, 101, .10);
  text-decoration: underline;
  text-underline-offset: 3px;
  transform: translateY(-1px);
}
body.site .cat-list a:hover, body.site .cat-list a:focus-visible { color: var(--aqua-strong); }

@media (max-width: 480px) {
  body.site .site-brand img.site-brand-title { display: none; }
  body.site .site-nav-links a { padding: .4rem .6rem; }
  .cat-hero { padding-top: 2.5rem; padding-bottom: 2rem; }
  .cat-list { grid-template-columns: 1fr; }
}

/* ---------- 動きを減らす設定（後ろに置いて上のルールに勝たせる） ---------- */
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  .js-reveal [data-reveal] { opacity: 1 !important; transform: none !important; transition: none; }
  .cat-hero::before, .cat-hero::after { animation: none; }
  .cat-jump, .cat-list a, body.site .site-nav-links a, body.site .site-footer a { transition: none; }
  .cat-jump:hover, .cat-jump:focus-visible, .cat-list a:hover, .cat-list a:focus-visible { transform: none; }
}
