/* ===== ニュースページ固有スタイル ===== */

.hero-news {
  background-image: url('https://images.unsplash.com/photo-1554224155-6726b3ff858f?w=1200&q=70');
}

/*
 * kasou-common.css の .fade-in は opacity:0。.visible は main.js の IntersectionObserver 依存。
 * news.html では common.js が可視化するが、ハブでは未到達・判定ずれでバナー等が透明のままになることがある。
 * 元モックどおり「お知らせバナー」は常に見えるべきなので、税務NEWSハブ内の fade-in は可視に固定する。
 */
main.p-page--news .fade-in {
  opacity: 1;
  transform: none;
}

    /* 年度フィルターナビ */
    .year-filter {
      display: flex;
      align-items: center;
      gap: 10px;
      flex-wrap: wrap;
    }
    .year-filter-label {
      font-family: var(--font-en);
      font-size: 11px;
      letter-spacing: 0.2em;
      text-transform: uppercase;
      color: var(--color-text-muted);
    }
    .year-btn {
      padding: 6px 20px;
      border: 1.5px solid var(--color-border);
      border-radius: 100px;
      background: white;
      font-size: 13px;
      font-weight: 600;
      color: var(--color-text-light);
      cursor: pointer;
      transition: var(--transition);
      font-family: var(--font-sans);
    }
    .year-btn:hover { border-color: var(--color-primary); color: var(--color-primary); }
    .year-btn.active {
      background: var(--color-primary);
      border-color: var(--color-primary);
      color: white;
    }

    /* フィルター＋検索バー */
    .news-controls {
      display: flex;
      align-items: center;
      justify-content: space-between;
      padding: 20px 64px;
      background: white;
      border-bottom: 1px solid var(--color-border);
      gap: 16px;
      flex-wrap: wrap;
      position: sticky;
      top: 0;
      z-index: 50;
    }

    /* ニュースカードリスト */
    .news-list {
      max-width: 920px;
      margin: 0 auto;
    }

    /* 月見出し */
    .month-heading {
      display: flex;
      align-items: center;
      gap: 20px;
      margin-bottom: 28px;
      margin-top: 48px;
    }
    .month-heading:first-child { margin-top: 0; }
    .month-number {
      font-family: var(--font-en);
      font-size: 56px;
      font-weight: 300;
      color: var(--color-primary);
      line-height: 1;
      letter-spacing: -0.02em;
      opacity: 0.15;
    }
    .month-info .month-jp {
      font-family: var(--font-serif);
      font-size: 22px;
      font-weight: 600;
      color: var(--color-primary);
      display: block;
    }
    .month-info .month-year {
      font-family: var(--font-en);
      font-size: 12px;
      letter-spacing: 0.2em;
      color: var(--color-text-muted);
      text-transform: uppercase;
    }
    .month-line { flex: 1; height: 1px; background: var(--color-border); }

    /* 記事カード */
    .article-card {
      background: white;
      border-radius: var(--radius-md);
      border: 1px solid var(--color-border);
      overflow: hidden;
      margin-bottom: 16px;
      transition: var(--transition);
    }
    .article-card:hover {
      box-shadow: var(--shadow-md);
      transform: translateY(-2px);
    }
    .article-card-inner {
      display: grid;
      grid-template-columns: 200px 1fr;
    }
    a.article-card-inner {
      text-decoration: none;
      color: inherit;
    }
    .article-img {
      aspect-ratio: 4/3;
      object-fit: cover;
      width: 100%;
      height: 100%;
      background: var(--color-bg-light);
    }
    .article-img-placeholder {
      width: 100%;
      height: 100%;
      background: linear-gradient(135deg, var(--color-primary) 0%, var(--color-primary-light) 100%);
      display: flex;
      align-items: center;
      justify-content: center;
      font-size: 40px;
      min-height: 150px;
    }
    .article-body {
      padding: 24px 28px;
      display: flex;
      flex-direction: column;
      justify-content: center;
    }
    .article-meta {
      display: flex;
      align-items: center;
      gap: 8px;
      margin-bottom: 10px;
    }
    .article-category {
      display: inline-flex;
      align-items: center;
      padding: 3px 10px;
      border-radius: 100px;
      font-size: 10px;
      font-weight: 700;
      letter-spacing: 0.06em;
    }
    .cat-tax { background: rgba(26,42,74,0.08); color: var(--color-primary); }
    .cat-mgmt { background: rgba(184,150,62,0.12); color: #8a6f2a; }
    .cat-hr { background: rgba(26,122,106,0.1); color: var(--color-teal); }
    .cat-system { background: rgba(196,26,26,0.08); color: var(--color-accent); }
    .cat-col { background: rgba(100,100,100,0.08); color: #555; }

    .article-date {
      font-family: var(--font-en);
      font-size: 11px;
      letter-spacing: 0.1em;
      color: var(--color-text-muted);
    }
    .article-title {
      font-family: var(--font-serif);
      font-size: 17px;
      font-weight: 700;
      color: var(--color-primary);
      margin-bottom: 10px;
      line-height: 1.5;
      letter-spacing: 0.02em;
    }
    .article-excerpt {
      font-size: 13px;
      line-height: 1.8;
      color: var(--color-text-light);
    }
    .article-read-more {
      margin-top: 12px;
      display: inline-flex;
      align-items: center;
      gap: 6px;
      font-family: var(--font-en);
      font-size: 11px;
      letter-spacing: 0.15em;
      text-transform: uppercase;
      color: var(--color-primary);
      font-weight: 600;
    }
    .article-read-more::after {
      content: '→';
      transition: transform 0.2s;
    }
    .article-card:hover .article-read-more::after { transform: translateX(4px); }

    /* 記事詳細モーダル */
    .article-modal-overlay {
      position: fixed;
      inset: 0;
      background: rgba(0,0,0,0.55);
      z-index: 500;
      display: flex;
      align-items: center;
      justify-content: center;
      padding: 24px;
      opacity: 0;
      pointer-events: none;
      transition: opacity 0.3s;
    }
    .article-modal-overlay.open {
      opacity: 1;
      pointer-events: all;
    }
    .article-modal {
      background: white;
      border-radius: var(--radius-md);
      max-width: 760px;
      width: 100%;
      max-height: 85vh;
      overflow-y: auto;
      transform: translateY(20px);
      transition: transform 0.3s;
    }
    .article-modal-overlay.open .article-modal { transform: translateY(0); }
    .modal-header {
      padding: 28px 32px 20px;
      border-bottom: 1px solid var(--color-border);
    }
    .modal-close {
      float: right;
      background: var(--color-bg-light);
      border: none;
      width: 32px;
      height: 32px;
      border-radius: 50%;
      font-size: 18px;
      cursor: pointer;
      display: flex;
      align-items: center;
      justify-content: center;
      transition: var(--transition);
    }
    .modal-close:hover { background: var(--color-border); }
    .modal-body {
      padding: 28px 32px;
    }
    .modal-body h3 {
      font-family: var(--font-serif);
      font-size: 19px;
      font-weight: 700;
      color: var(--color-primary);
      margin: 28px 0 12px;
      line-height: 1.4;
    }
    .modal-body h3:first-child { margin-top: 0; }
    .modal-body p {
      font-size: 14px;
      line-height: 1.9;
      color: var(--color-text-light);
      margin-bottom: 16px;
    }
    .modal-body h2 {
      font-family: var(--font-serif);
      font-size: 22px;
      font-weight: 700;
      color: var(--color-primary);
      margin: 30px 0 14px;
      line-height: 1.45;
    }
    .modal-body h2:first-child { margin-top: 0; }
    .modal-body figure,
    .modal-body .wp-block-image {
      margin: 18px 0;
    }
    .modal-body img {
      max-width: 100%;
      height: auto;
      border-radius: var(--radius-sm);
    }
    .modal-body blockquote {
      margin: 18px 0;
      padding: 10px 16px;
      border-left: 3px solid var(--color-gold);
      background: var(--color-bg-light);
      color: var(--color-text);
    }
    .article-modal-source {
      display: none;
    }
    .modal-body .highlight-box {
      background: var(--color-bg-light);
      border-left: 3px solid var(--color-gold);
      padding: 16px 20px;
      border-radius: 0 var(--radius-sm) var(--radius-sm) 0;
      margin: 16px 0;
    }
    .modal-body .highlight-box p { margin: 0; color: var(--color-text); }
    .modal-body ul {
      list-style: none;
      padding: 0;
      margin: 12px 0;
    }
    .modal-body ul li {
      padding: 6px 0 6px 20px;
      position: relative;
      font-size: 14px;
      color: var(--color-text-light);
      border-bottom: 1px solid var(--color-border-light);
    }
    .modal-body ul li::before {
      content: '▶';
      position: absolute;
      left: 0;
      color: var(--color-gold);
      font-size: 9px;
      top: 9px;
    }

    /* お知らせバナー */
    .notice-banner {
      background: linear-gradient(135deg, var(--color-teal), #1a5a6a);
      color: white;
      padding: 20px 28px;
      border-radius: var(--radius-md);
      margin-bottom: 32px;
      display: flex;
      align-items: center;
      gap: 16px;
    }
    .notice-banner-icon { font-size: 28px; flex-shrink: 0; }
    .notice-banner-text { flex: 1; }
    .notice-banner-text strong {
      display: block;
      font-family: var(--font-serif);
      font-size: 16px;
      margin-bottom: 4px;
    }
    .notice-banner-text p { font-size: 13px; opacity: 0.85; margin: 0; }

    /* タブナビ（年フィルター） */
    .tab-nav {
      display: flex;
      gap: 0;
      border-bottom: 2px solid var(--color-border);
      margin-bottom: 40px;
    }
    .tab-nav-btn {
      padding: 12px 24px;
      font-size: 14px;
      font-weight: 600;
      color: var(--color-text-muted);
      background: none;
      border: none;
      cursor: pointer;
      transition: var(--transition);
      font-family: var(--font-sans);
      position: relative;
    }
    .tab-nav-btn::after {
      content: '';
      position: absolute;
      bottom: -2px;
      left: 0;
      width: 100%;
      height: 2px;
      background: var(--color-primary);
      transform: scaleX(0);
      transition: transform 0.3s;
    }
    .tab-nav-btn.active { color: var(--color-primary); }
    .tab-nav-btn.active::after { transform: scaleX(1); }
    .tab-nav-btn:hover { color: var(--color-primary); }

    .year-articles { display: none; }
    .year-articles.active { display: block; }

    @media (max-width: 768px) {
      .news-controls { padding: 16px 24px; }
      .article-card-inner { grid-template-columns: 1fr; }
      .article-img-placeholder { min-height: 180px; }
    }

    @media (max-width: 640px) {
      .news-controls { padding: 12px 16px; }
      .tab-nav { flex-wrap: wrap; }
    }
