/* ==========================================
   BASE & RESET STYLES
========================================== */
html {
    scroll-behavior: smooth;
  }
  
  * {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
  }
  
  body {
    font-family: "Helvetica Neue", Arial, "Hiragino Sans", sans-serif;
    background:
      radial-gradient(circle at top left, rgba(255, 214, 230, 0.5), transparent 40%),
      radial-gradient(circle at bottom right, rgba(196, 224, 255, 0.5), transparent 40%),
      #fffdfd;
    background-attachment: fixed; 
    color: #111;
    overflow-x: hidden;
    font-size: 15px; /* ★階層4：本文・基本サイズ */
    line-height: 1.8;
  }
  
  section {
    padding: 120px 7%;
  }
  
  img {
    width: 100%;
    display: block;
  }
  
  /* ==========================================
     FIXED NAVIGATION HEADER
  ========================================== */
  .site-header {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 240px; 
    padding: 0 7%;
    padding-top: 60px; 
    display: flex;
    justify-content: space-between;
    align-items: flex-start; 
    z-index: 100;
    background: transparent; 
    border-bottom: none;     
    pointer-events: none; 
    transition: 
      height 0.5s cubic-bezier(0.25, 1, 0.5, 1),
      padding-top 0.5s cubic-bezier(0.25, 1, 0.5, 1);
  }
  
  .site-header:has(.header-logo.show) {
    height: 90px;      
    padding-top: 24px; 
  }
  
  .header-logo {
    opacity: 0;
    visibility: hidden;
    transform: translateY(-10px);
    transition: opacity 0.4s ease, visibility 0.4s ease, transform 0.4s ease;
    pointer-events: auto; 
  }
  
  .header-logo.show {
    opacity: 1;
    visibility: visible;
    transform: translateY(0);
  }
  
  .header-logo a {
    font-size: 20px; /* メインロゴ（変更なし） */
    font-weight: 400;
    letter-spacing: 0.12em;
    text-decoration: none;
    display: inline-block;
    color: #555 !important;
    transition: all 0.4s ease;
  }
  
  .header-logo a:hover {
    background: linear-gradient(to right, #ff9fc5, #9abfff);
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
    color: transparent !important;
  }
  
  .header-nav {
    pointer-events: auto; 
  }
  
  .header-nav ul {
    display: flex;
    gap: 32px;
    list-style: none;
    align-items: center;
  }
  
  .header-nav a {
    font-size: 15px; /* ★階層4：基本サイズに統一 */
    letter-spacing: 0.08em;
    color: #555;
    text-decoration: none;
    transition: color 0.3s ease;
  }
  
  .header-nav a:hover {
    color: #ff9fc5;
  }
  
  /* ==========================================
     TOP GIANT TITLE AREA
  ========================================== */
  .top-title-area {
    height: 240px; 
    padding: 0 7%; 
    margin-bottom: 20px; 
    display: flex;
    align-items: center; 
  }
  
  .giant-main-title {
    font-size: clamp(40px, 6vw, 72px); /* ★階層1：特大メインタイトル（変更なし） */
    font-weight: 300;
    line-height: 1; 
    letter-spacing: 0.02em;
    background: linear-gradient(to right, #ff6f6f, #5c66f2);
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
  }
  
  /* ==========================================
     GALLERY SECTION
  ========================================== */
  .main-top-gallery {
    padding-top: 40px; 
    padding-bottom: 80px; 
  }
  
  .gallery-section {
    overflow: hidden; 
    width: 100%;
    user-select: none;
    scroll-margin-top: 40px; 
  }
  
  .gallery-track {
    display: flex;
    gap: 24px;
    width: max-content;
    will-change: transform;
    cursor: grab;
  }
  
  .gallery-track.is-dragging {
    cursor: grabbing;
  }
  
  .gallery-item {
    width: 360px;
    height: 260px; 
    flex-shrink: 0;
    border-radius: 24px; /* ★ PCの筐体・画面に合わせた角丸に統一 */
    overflow: hidden;
    position: relative;
    box-shadow: 0 10px 30px rgba(255,182,193,0.15);
    background: transparent; 
    transition: opacity 0.3s ease, transform 0.3s ease;
  }
  
  .gallery-item a {
    display: block;
    width: 100%;
    height: 100%;
  }
  
  .gallery-item img {
    width: 100%;
    height: 260px; 
    object-fit: cover; 
    object-position: center top; 
    transition: 0.7s ease;
    pointer-events: none;
    -webkit-user-drag: none;
    user-select: none;
  }
  
  .gallery-overlay {
    position: absolute;
    inset: 0;
    background: linear-gradient(to top, rgba(255,182,193,0.45), rgba(255,255,255,0.05));
    display: flex;
    align-items: flex-end;
    padding: 30px;
    opacity: 0;
    transition: 0.5s;
    backdrop-filter: blur(3px);
  }
  
  .gallery-overlay p {
    color: white;
    font-size: 28px;
    font-weight: 300;
    transform: translateY(20px);
    transition: 0.5s;
  }
  
  .gallery-item:hover img {
    transform: scale(1.08);
    filter: brightness(0.75);
  }
  
  .gallery-item:hover .gallery-overlay { opacity: 1; }
  .gallery-item:hover .gallery-overlay p { transform: translateY(0); }
  
  /* FILTER NAVIGATION */
  .filter-container {
    display: flex;
    justify-content: center;
    gap: 16px;
    margin-bottom: 40px;
    padding: 0 7%;
  }
  
  .filter-btn {
    background: rgba(255, 255, 255, 0.6);
    border: 1px solid rgba(0, 0, 0, 0.08);
    padding: 10px 24px;
    font-size: 15px; /* ★階層4：基本サイズに統一 */
    letter-spacing: 0.05em;
    border-radius: 30px; /* カプセル型デザインのためキープ */
    cursor: pointer;
    transition: all 0.3s ease;
    backdrop-filter: blur(10px);
    color: #555;
  }
  
  .filter-btn:hover {
    background: rgba(255, 255, 255, 1);
    border-color: #ff9fc5;
    color: #111;
  }
  
  .filter-btn.active {
    background: rgba(0, 0, 0, 0.05); 
    color: #111; 
    border-color: rgba(0, 0, 0, 0.15); 
    box-shadow: none; 
  }
  
  /* ==========================================
     CONCEPT SECTION
  ========================================== */
  .concept-section {
    scroll-margin-top: 100px;
    padding: 40px 7% 100px 7%; 
  }
  
  .concept-text {
    max-width: 700px;
    line-height: 1.9;
    color: #555;
    font-size: 15px; /* ★階層4：基本サイズに統一 */
  }
  
  /* ==========================================
     CATEGORIES SECTION
  ========================================== */
  .archive {
    scroll-margin-top: 100px; 
  }
  
  .section-title { 
    margin-bottom: 60px; 
  }
  
  .section-title h2 { 
    font-size: 32px; /* ★階層2：大見出しに統一 */
    font-weight: 300; 
  }
  
  .card-grid { 
    display: grid; 
    grid-template-columns: repeat(3, 1fr); 
    gap: 30px; 
  }
  
  .pc-card {
    background: rgba(255, 255, 255, 0.5); 
    border: 1px solid rgba(0, 0, 0, 0.05); 
    border-radius: 24px; /* ★ PCの筐体・画面に合わせた角丸に統一 */
    overflow: hidden;
    transition: 0.4s;
    backdrop-filter: blur(20px);
    box-shadow: 0 10px 30px rgba(180, 180, 255, 0.05);
    display: flex;
    flex-direction: column;
    cursor: pointer;
  }
  
  .pc-card:hover {
    transform: translateY(-4px);
    border-color: #ff9fc5; 
  }
  
  .pc-image {
    display: none; 
  }
  
  .card-content { 
    padding: 45px 35px; 
    flex-grow: 1;      
  }
  
  .card-content h3 { 
    font-size: 20px; /* ★階層3：中見出しに統一 */
    font-weight: 400; 
    margin-bottom: 6px; 
  }
  
  .type { 
    color: #888; 
    font-size: 12px; /* ★補足サイズ：12pxに統一 */
    margin-bottom: 24px; 
  }
  
  .description { 
    font-size: 15px; /* ★階層4：基本サイズに統一 */
    line-height: 1.8; 
    color: #555; 
  }
  
  /* ==========================================
     MODAL
  ========================================== */
  .modal {
    position: fixed;
    inset: 0;
    background: rgba(0,0,0,0.4);
    display: none;
    justify-content: center;
    align-items: center;
    z-index: 999;
    backdrop-filter: blur(8px);
  }
  
  .modal.active { display: flex; }
  
  .modal-content {
    background: rgba(255, 255, 255, 0.95);
    width: min(900px, 90vw);
    max-height: 85vh;
    overflow-y: auto;
    padding: 50px;
    position: relative;
    border-radius: 24px; /* ★ PCの筐体・画面に合わせた角丸に統一 */
    box-shadow: 0 20px 50px rgba(0,0,0,0.1);
  }
  
  #close {
    position: absolute;
    top: 25px;
    right: 25px;
    border: none;
    background: none;
    font-size: 2.5rem;
    cursor: pointer;
    color: #999;
    font-weight: 200;
    transition: 0.3s;
  }
  #close:hover { color: #111; }
  
  .museum-header {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 40px;
    margin-bottom: 40px;
  }
  
  .museum-image img {
    width: 100%;
    border-radius: 16px; /* ★ 外枠（24px）の内側に入るため、少し小さめの16pxに調整 */
    box-shadow: 0 10px 25px rgba(0,0,0,0.05);
  }
  
  .museum-number { 
    color: #ff9fc5; 
    letter-spacing: 0.15em; 
    font-size: 12px; /* ★補足サイズに統一 */
    margin-bottom: 5px; 
  }
  
  #pcSubtitle { 
    font-size: 32px; /* ★階層2：大見出しに統一 */
    font-weight: 300; 
    margin-bottom: 15px; 
  }
  
  .basic-info { 
    color: #666; 
    font-size: 15px; /* ★階層4：基本サイズに統一 */
  }
  
  .museum-section {
    margin-top: 40px;
    padding-top: 30px;
    border-top: 1px solid rgba(0,0,0,0.05);
  }
  
  .museum-section h3 { 
    font-size: 20px; /* ★階層3：中見出しに統一 */
    font-weight: 400; 
    margin-bottom: 20px; 
    color: #333; 
  }
  
  .analysis-grid {
    display: grid;
    grid-template-columns: repeat(5, 1fr);
    gap: 12px;
  }
  
  .analysis-grid div { 
    background: rgba(0,0,0,0.02); 
    padding: 12px; 
    border-radius: 12px; /* ★ 内側のパーツに合わせた少し小さめの角丸 */
  }
  
  .analysis-grid small { 
    color: #888; 
    display: block; 
    margin-bottom: 5px; 
    font-size: 12px; /* ★補足サイズに統一 */
  }
  
  .analysis-grid p { 
    font-size: 15px; /* ★階層4：基本サイズに統一 */
    line-height: 1.4; 
    word-break: break-all; 
  }
  
  .tag-area { display: flex; flex-wrap: wrap; gap: 8px; }
  
  .tag { 
    border: 1px solid #ddd; 
    padding: 6px 14px; 
    font-size: 15px; /* ★階層4：基本サイズに統一 */
    border-radius: 20px; 
    background: #fff; 
  }
  
  .color-palette { display: flex; gap: 12px; }
  .color-chip { width: 35px; height: 35px; border-radius: 50%; border: 1px solid rgba(0,0,0,0.1); }
  
  blockquote { border-left: 2px solid #ff9fc5; padding-left: 20px; color: #555; font-style: italic; }
  
  /* ==========================================
     DATA SECTION
  ========================================== */
  .data-section {
    background: transparent; 
    border-top: none; 
    scroll-margin-top: 100px; 
  }
  
  .data-container {
    display: flex;
    flex-direction: column;
    gap: 80px; 
    max-width: 1000px;
    margin: 0 auto;
  }
  
  .data-row {
    display: flex;
    align-items: center;
    gap: 60px; 
  }
  
  .chart-box {
    flex-shrink: 0;
    display: flex;
    justify-content: center;
    align-items: center;
    width: 200px;
    height: 200px;
    position: relative; 
  }
  
  .data-info {
    flex-grow: 1;
  }
  
  .data-info h3 {
    font-size: 20px; /* ★階層3：中見出しに統一 */
    font-weight: 400;
    margin-bottom: 15px;
    color: #222;
  }
  
  .data-description {
    font-size: 15px; /* ★階層4：基本サイズに統一 */
    color: #666;
    line-height: 1.8;
  }
  
  /* ==========================================
     ABOUT SECTION
  ========================================== */
  .about-section {
    background: transparent; 
    border-top: none; 
    scroll-margin-top: 100px; 
  }
  
  .about-container {
    display: flex;
    gap: 60px; 
    max-width: 1000px;
    margin: 40px auto 0 auto;
  }
  
  .about-left {
    flex: 1;
    min-width: 200px;
  }
  
  .about-left h3 {
    font-size: 20px; /* ★階層3：中見出しに統一 */
    font-weight: 400;
    color: #222;
    position: relative;
  }
  
  .about-right {
    flex: 2;
    display: flex;
    flex-direction: column;
    gap: 24px; 
  }
  
  .about-right p {
    font-size: 15px; /* ★階層4：基本サイズに統一 */
    color: #555;
    line-height: 1.9;
  }
  
  /* index.html内にある特設のAbout注記ボックスの角丸調整用 */
  .about-right [style*="border-radius"] {
    border-radius: 16px !important; 
  }
  
  /* ==========================================
     FOOTER & RESPONSIVE
  ========================================== */
  footer {
    border-top: none; 
    padding: 30px 7%;
    display: flex;
    justify-content: space-between;
    font-size: 14px;
    color: #777;
    background: transparent; 
    backdrop-filter: none;
  }
  
  @media (max-width: 900px) {
    .card-grid, .museum-header { grid-template-columns: 1fr; gap: 30px; }
    .analysis-grid { grid-template-columns: repeat(2, 1fr); }
    .section-title h2 { font-size: 32px; }
    footer { flex-direction: column; gap: 10px; }
    .modal-content { padding: 30px; }
    .filter-container { flex-wrap: wrap; }
  }
  
  @media (max-width: 768px) {
    .site-header {
      height: 120px; 
      padding-top: 20px;
    }
    .header-nav ul {
      gap: 16px;
    }
    .header-nav a {
      font-size: 13px; /* スマホ用に少しだけコンパクトに */
    }
    
    /* ★スマホ版トップタイトルエリアの調整 */
    .top-title-area {
      height: auto;
      min-height: 120px;
      margin-bottom: 20px;
      padding: 0 7%;
      justify-content: center; /* タイトルを中央寄せに */
    }
    
    /* ★一文字ずつのタイトルがスマホで折り返しても綺麗に見えるよう調整 */
    .giant-main-title {
      font-size: 38px; /* スマホ画面に収まるサイズ */
      line-height: 1.3;
      text-align: center;
      letter-spacing: 0.05em;
      display: flex;
      flex-wrap: wrap; /* 画面幅が狭い時に自動で折り返す */
      justify-content: center;
    }
    
    /* スマホでの視認性を考慮し、スペース（空白文字）の幅を調整 */
    .giant-main-title .char-space {
      display: inline-block;
      width: 8px;
    }
  
    .main-top-gallery {
      padding-top: 20px;
      padding-bottom: 40px;
    }
    
    /* フィルターボタンもスマホで押しやすいようマージンを調整 */
    .filter-container {
      gap: 10px;
      margin-bottom: 30px;
    }
    .filter-btn {
      padding: 8px 18px;
      font-size: 13px;
    }
  
    .concept-section {
      padding: 60px 7%;
    }
    
    /* ★詳細モーダルのスマホ最適化 */
    .modal-content {
      padding: 30px 20px;
    }
    .museum-header {
      grid-template-columns: 1fr; /* 画像と情報を縦並びに */
      gap: 20px;
      margin-bottom: 25px;
    }
    #pcSubtitle {
      font-size: 24px; /* スマホ用の大見出しサイズ */
    }
    .museum-section h3 {
      font-size: 18px; /* スマホ用の中見出しサイズ */
      margin-bottom: 15px;
    }
    .analysis-grid {
      grid-template-columns: repeat(2, 1fr); /* 5列から2列に変更して見やすく */
      gap: 10px;
    }
  
    /* ★データ・アバウトセクションの縦並び調整 */
    .data-row {
      flex-direction: column;
      align-items: center;
      text-align: center;
      gap: 24px;
    }
    .data-info h3, .about-left h3 {
      font-size: 18px;
    }
    .chart-box {
      width: 100%;
      max-width: 180px; /* グラフが大きくなりすぎないよう制限 */
      height: 180px;
    }
    .about-container {
      flex-direction: column;
      gap: 20px;
    }
    .about-left {
      min-width: 100%;
      text-align: center;
    }
    .about-right {
      gap: 16px;
    }
  }
  
  /* ==========================================
     DECORATION BACKGROUND ELEMENTS
  ========================================== */
  body,
  .data-section, 
  .about-section {
    position: relative;
  }
  
  body::before,
  body::after,
  .concept-section::before,
  .concept-section::after,
  .data-section::before,  
  .about-section::before { 
    position: absolute;
    z-index: -1; 
    pointer-events: none; 
    color: rgba(0, 0, 0, 0.18); 
    font-family: Arial, sans-serif;
    user-select: none;
  }
  
  body::before {
    content: "✦";
    font-size: 46px; 
    top: 140px;
    left: 85%;
    transform: rotate(15deg);
  }
  
  body::after {
    content: "✧";
    font-size: 64px; 
    top: 650px;
    left: 8%;
    transform: rotate(-10deg);
    color: rgba(255, 130, 180, 0.3); 
  }
  
  .concept-section::before {
    content: "•  •  •  •  •  •  •\A•  •  •  •  •  •  •\A•  •  •  •  •  •  •";
    white-space: pre;
    font-size: 26px;
    letter-spacing: 0.3em;
    line-height: 1.5; 
    top: 20%;
    left: 80%;
    color: rgba(0, 0, 0, 0.15); 
  }
  
  .concept-section::after {
    content: "✦";
    font-size: 32px;
    bottom: -20px;
    left: 15%;
    transform: rotate(45deg);
  }
  
  .data-section::before {
    content: "●";
    font-size: 20px;
    top: 30%; 
    left: 88%;
    color: rgba(120, 170, 255, 0.4); 
  }
  
  .about-section::before {
    content: "✦";
    font-size: 36px;
    top: 30%;
    left: 5%;
    transform: rotate(35deg);
  }