/* Variables */

:root {
    --color-navy: #263743;
    --color-orange: #f0906d;
    --color-white: #fff;
    --color-light-gray: #f2f2f2;
    --color-light-blue: #f8fcfe;
    --color-dark-rgba: rgba(45, 51, 71, 0.9);
    --color-navy-transparent: rgba(38, 55, 67, 0.2);
    --color-coral-bg: #e78c6c;
    --color-dark-pink: #dc4750;
    --service-coral-bg: #e78c6c;
    --service-dark-pink: #dc4750;
    --service-white: #ffffff;
    --company-coral-bg: #e57a61;
    --company-dark-pink: #dc4750;
    --company-white: #ffffff;
    --font-primary: "Archetype", sans-serif;
    --font-secondary: "Antro Vectra", sans-serif;
    --font-japanese: "Noto Sans JP", "Yu Gothic", "YuGothic", sans-serif;
    --font-archetype: "Archetype", sans-serif;
    --font-jost: "Jost", sans-serif;
    --font-antro-vectra: "Antro Vectra", sans-serif;
    /* Layout */
    --container-width: clamp(20rem, 90vw, 75rem);
    /* 320px - 1200px */
    --common-width: 1280px;
    --border-radius-large: clamp(2rem, 4vw, 3.75rem);
    /* 32px - 60px */
    --border-radius-medium: clamp(1rem, 2vw, 1.5rem);
    /* 16px - 24px */
    --border-radius-small: 0.5rem;
    /* 8px */
    /* Spacing */
    --section-padding: clamp(3rem, 5vw, 5rem) 0;
    /* 48px - 80px */
    --section-padding-large: clamp(6rem, 10vw, 11.25rem) 0;
    /* 96px - 180px */
    /* Transitions */
    --transition-default: 0.3s ease;
    
    /* Landing Page Variables (for hashhack.css and touryumon.css) */
    --lp-navy: #253742;
    --lp-blue-bg: #f0f6fb;
    --lp-text: #333333;
    --lp-gray: #666666;
    --lp-accent: #00bfff;
    --lp-red: #dc4750;
    --lp-badge-pink: #d14276;
    
    /* Soft Shadow */
    --shadow-soft: 0 10px 40px -10px rgba(0, 51, 102, 0.15);
    --shadow-hover: 0 20px 50px -10px rgba(0, 51, 102, 0.25);
    
    /* Radius Adjusted (Reduced by 30%) */
    --radius-card: 16px;
    --radius-btn: 35px;
    --radius-section: 28px;
    --radius-img: 14px;
    
    /* Landing Page Fonts */
    --font-jp: "Noto Sans JP", "Yu Gothic", "YuGothic", "Hiragino Kaku Gothic ProN", "Meiryo", sans-serif;
    --font-en: "Archetype", "Futura", "Jost", sans-serif;
  }
  
  /* Font Faces */
  
  @font-face {
    font-family: "Archetype";
    src: url("../fonts/archetyperegular.ttf") format("truetype");
    font-weight: 400;
    font-style: normal;
    font-display: swap;
  }
  
  @font-face {
    font-family: "Archetype";
    src: url("../fonts/ArchitypeRenner-Medium.woff2") format("woff2"),
      url("../fonts/ArchitypeRenner-Medium.woff") format("woff"),
      url("../fonts/ArchitypeRenner-Medium.otf") format("opentype");
    font-weight: 500;
    font-style: normal;
    font-display: swap;
  }
  
  @font-face {
    font-family: "Antro Vectra";
    src: url("../fonts/Antro_Vectra.woff2") format("woff2"),
      url("../fonts/Antro_Vectra.woff") format("woff"),
      url("../fonts/Antro_Vectra.otf") format("opentype");
    font-weight: normal;
    font-style: normal;
    font-display: swap;
  }
  
  @font-face {
    font-family: "Architype Renner Demi";
    src: url("../fonts/ArchitypeRenner-Demi.woff2") format("woff2"),
      url("../fonts/ArchitypeRenner-Demi.woff") format("woff"),
      url("../fonts/ArchitypeRenner-Demi.otf") format("opentype");
    font-display: swap;
  }
  
  @font-face {
    font-family: "Jost Bold";
    src: url("../fonts/Jost-Bold.woff2") format("woff2"),
      url("../fonts/Jost-Bold.woff") format("woff"),
      url("../fonts/Jost-Bold.ttf") format("opentype");
    font-display: swap;
  }
  
  /* Reset & Base Styles */
  
  * {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
  }
  
  html {
    overflow-x: hidden;
    width: 100%;
  }

  body {
    font-family: var(--font-japanese);
    background-color: var(--color-light-gray) !important;
    line-height: 1.6;
    letter-spacing: 0.1rem;
    font-size: 14px; /* Changed from 1rem to match Leapy style */
    overflow-x: hidden;
    width: 100%;
  }
  
  /* Typography Utilities */
  
  .t-white {
    color: var(--color-white) !important;
  }
  
  .t-navy {
    color: var(--color-navy) !important;
  }
  
  .t-orange {
    color: var(--color-orange) !important;
  }
  
  /* Common Elements */
  
  a {
    color: var(--color-navy);
    text-decoration: none;
    transition: opacity var(--transition-default);
  }
  
  a:hover {
    opacity: 0.8;
  }
  
  /* Layout Components */
  
  .container {
    max-width: 1200px;
    width: 100%;
    height: 50vh;
    display: flex;
    justify-content: center;
    align-items: center;
    margin: 0 auto;
  }
  
  
  @keyframes slideIn {
    0% {
      transform: translateX(-180px);
      opacity: 0;
    }
    100% {
      transform: translateX(0);
    }
    40%,
    100% {
      opacity: 1;
    }
  }
  
  /* Landing Page Animations (for hashhack.css and touryumon.css) */
  @keyframes moveOrb1 {
    0% { transform: translate(0, 0) scale(1); opacity: 0.8; }
    100% { transform: translate(150px, 100px) scale(1.15); opacity: 0.5; }
  }
  @keyframes moveOrb2 {
    0% { transform: translate(0, 0) scale(1); opacity: 0.7; }
    100% { transform: translate(-120px, -150px) scale(1.25); opacity: 0.9; }
  }
  @keyframes moveOrb3 {
    0% { transform: translate(0, 0) scale(1); opacity: 0.6; }
    100% { transform: translate(100px, -180px) scale(0.85); opacity: 0.4; }
  }
  
  .section {
    position: relative;
  }
  
  .header-content {
    display: flex;
    align-items: center;
    justify-content: space-between;
    height: 100%;
    width: 985px;
  }
  
  .service-info {
    flex: 1;
    max-width: 500px;
  }
  
  .service-header {
    display: flex;
    align-items: baseline;
    gap: 1rem;
    margin-bottom: 3rem;
  }
  
.service-title {
    font-family: var(--font-archetype);
    font-size: 4rem; /* Adjusted size */
    font-weight: 500; /* Adjusted weight */
    color: var(--service-white);
    line-height: 1.1;
    letter-spacing: 0.1em; /* Adjusted letter-spacing */
    margin-bottom: 0.1em; /* Adjusted margin */
}
  
  
  .button-group {
    font-family: var(--font-japanese);
    display: flex;
    gap: 1.5rem;
    flex-wrap: wrap;
  }
  
  .btn {
    padding: 0.875rem 2rem;
    border: none;
    border-radius: 8px;
    font-size: 0.7rem;
    font-weight: 500;
    cursor: pointer;
    transition: all 0.3s ease;
    text-decoration: none;
    display: inline-block;
    font-family: inherit;
  }
  
  .btn-primary {
    background-color: var(--service-dark-pink);
    color: var(--service-white);
  }
  
  .btn-primary:hover {
    background-color: #c23e46;
    transform: translateY(-2px);
  }
  
  .btn-secondary {
    background-color: var(--service-white);
    color: #333;
  }
  
  .btn-secondary:hover {
    background-color: #f5f5f5;
    transform: translateY(-2px);
  }
  
  .btn-primary,
  .btn-secondary {
    width: 180px;
  }
  
  /**
  * PC用 
  **/
  
  @media (min-width: 769px) {
    .pc {
      display: block;
    }
    .sp {
      display: none !important;
    }
    body {
      font-family: var(--font-primary);
      line-height: 1.6;
      letter-spacing: 0.1rem;
      font-size: 14px; /* Changed from 1rem to match Leapy style */
    }

    /* ========================================
       Common Components (汎用コンポーネント)
       ======================================== */
    
    /* セクションタイトル共通 */
    .section-title-area {
        text-align: center;
        margin-bottom: 32px;
    }

    .section-title-area .en-title {
        font-family: var(--font-archetype);
        font-size: 40px;
        line-height: 1;
        margin-bottom: 8px;
    }

    .section-title-area .jp-title {
        font-size: 13px;
        color: #666;
    }

    /* ボタン共通 */
    .common-btn {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        height: 52px;
        padding: 0 32px;
        border-radius: 26px;
        font-size: 14px;
        font-weight: 600;
        text-decoration: none;
        transition: all 0.3s ease;
    }

    /* カード共通 */
    .common-card {
        border-radius: 12px;
        overflow: hidden;
        box-shadow: 0 4px 12px rgba(0,0,0,0.06);
        background: #fff;
    }

    .common-card img {
        width: 100%;
        height: auto;
    }

    .common-card-body {
        padding: 16px;
    }
    svg {
      height: 20vh;
      width: 100%;
      position: relative;
    }
    .content-container {
      max-width: var(--container-width);
      margin: 0 auto;
      padding: 0 clamp(1rem, 3vw, 1.25rem);
      width: 100%;
    }
    .home-page .content-container {
      padding: 0 clamp(9rem, 3vw, 0rem);
    }
    .sp-only-home {
      display: none;
    }
    
    .service-page .service-subtitle {
      font-size: 0.7rem;
      font-family: var(--font-japanese);
      letter-spacing: 0;
      font-weight: 400;
      opacity: 1 !important;
    }
    /* Header Content 幅統一 */
    .service-page .header-content {
      gap: 0;
    }
    .header-content .service-info,
    .header-content .lottie-container {
      width: 492px;
    }
    .header-content .service-info {
      max-width: none;
      flex: none;
      padding-left: 5%;
    }


    /* Wave Section */
  
  
}
  /**
  * SP用 
  **/
  
  @media (max-width: 768px) {
    /* --- Global Settings --- */
    /* Sticky有効化のための重要設定：hiddenではなくclipを使用 */
    html, body {
        overflow-x: clip;
        overflow-y: visible;
        width: 100%;
        height: auto;
    }

    body {
        font-family: var(--font-primary);
        line-height: 1.6;
        letter-spacing: 0.05rem;
        font-size: 14px; /* 基本文字サイズ調整 */
    }

    .pc {
      display: none !important;
    }
    
    /* ========================================
       トップページ ヒーローセクション (モバイル)
       ======================================== */
    /* .home-page .hero-section { ... } removed */
    
    /* ========================================
       カウントセクション (モバイル)
       ======================================== */
    
    /* ========================================
       共通コンテナ (モバイル)
       ======================================== */
    .container {
      height: auto;
      max-width: 100%;
      width: 100%;
      padding: 0 20px;
      box-sizing: border-box;
    }

    .solar-container, 
    .service-container {
        width: 100%;
        max-width: 100%;
        padding: 0 20px;
        box-sizing: border-box;
    }
    
    
    .sp-hidden {
      display: none;
    }
    
    /* ========================================
       その他のページ用
       ======================================== */
    .header-content {
      gap: 0;
      position: relative;
      width: 100%;
    }
    .service-info {
      position: relative;
      z-index: 2;
    }
    .service-header {
      display: flex;
      gap: 0rem;
      margin-bottom: 3rem;
      flex-direction: column;
    }
    .service-title {
      font-size: 3rem;
      letter-spacing: 0.2rem;
    }
    .button-group {
      display: flex;
      gap: 1rem;
      flex-wrap: nowrap;
      flex-direction: row;
      justify-content: space-evenly;
    }
    .btn {
      font-size: 0.7rem;
    }
    .highlight-char {
      display: inline-block;
      transition: color 0.4s ease;
    }
    .anim-box.slidein.is-animated {
      animation: slideIn 1s cubic-bezier(0.25, 1, 0.5, 1) forwards;
    }

    /**
  * About Company Section 
  **/

    /* カラーテーマ再定義 (スライド用) */
    .btn-white {
      --btn-border: var(--color-white);
      --btn-text: var(--color-white);
      --btn-bg-hover: var(--color-white);
      --btn-hover-text: var(--color-orange); /* オレンジ背景なので文字はオレンジに */
    }
    .btn-navy {
      --btn-border: var(--color-navy);
      --btn-text: var(--color-navy);
      --btn-bg-hover: var(--color-navy);
      --btn-hover-text: var(--color-white);
    }
    .btn-orange-white {
      /* 背景紺色(#253742)、ボタン枠オレンジ、文字白 */
      --btn-border: var(--color-orange);
      --btn-text: var(--color-white); 
      --btn-bg-hover: var(--color-orange); 
      --btn-hover-text: var(--color-navy); 
    }
    /**
  * Works Section 
  **/
    /* Works & Blog common styles are now in common-slider.css */

    /* Footer */
  } /* Close @media (max-width: 768px) started at line 1131 */

  .custom-contact-section {
    background: #ffffff;
    padding: 5rem 0 7rem 0;
  }
  
  .service-page .custom-contact-section {
    background: #e57a61;
  }
  
  .custom-contact-inner {
    border-radius: 1.5rem;
    background: var(--color-navy);
    position: relative;
    overflow: hidden;
    padding: 3rem 1.5rem 6rem 1.5rem;
    box-shadow: 0 4px 24px rgba(0, 0, 0, 0.08);
    height: auto;
    min-height: 0;
    width: 800px;
    margin: 0 auto;
    max-width: 1280px;
  }
  
  .custom-contact-content {
    position: relative;
    z-index: 2;
    text-align: center;
  }
  
  .custom-contact-title {
    color: #fff;
    font-family: var(--font-japanese);
    font-size: 1.6rem;
    font-weight: 500;
    margin-bottom: 0.7rem;
    letter-spacing: 0.08em;
  }
  
  .custom-contact-desc {
    color: #fff;
    font-size: 0.8rem;
    font-family: var(--font-japanese);
    margin-bottom: 3rem;
  }
  
  .custom-contact-btn {
    display: inline-block;
    background: var(--lp-red, #dc4750);
    color: #fff;
    border-radius: 2rem;
    padding: 0.9rem 2.5rem;
    font-family: var(--font-japanese);
    font-weight: bold;
    text-decoration: none;
    font-size: 1rem;
    margin-bottom: 2rem;
    transition: background 0.2s, color 0.2s;
  }
  
  .custom-contact-btn:hover {
    background: #c23e46;
    color: #fff;
  }
  
  .custom-contact-bg-text {
    position: absolute;
    left: 29px;
    bottom: -37px;
    font-family: var(--font-archetype);
    font-size: 8.9rem;
    color: #fff;
    font-weight: 500;
    letter-spacing: 0.03em;
    pointer-events: none;
    z-index: 1;
    line-height: 1;
    white-space: nowrap;
    transform: translateX(-38.4px);
  }
  
  /**
  * SP
  **/
  
  @media (max-width: 768px) {
    .custom-contact-section {
      padding: 56px 20px;
      background: #ffffff;
    }

    .custom-contact-inner {
      width: 100%;
      max-width: 100%;
      padding: 48px 24px 80px 24px;
      margin: 0 auto;
      border-radius: 20px;
      aspect-ratio: unset;
      background: #2F3F4C;
      box-shadow: 0 4px 24px rgba(0, 0, 0, 0.15);
    }

    .contact-title-area {
      color: #fff;
      padding: 0;
      margin-bottom: 32px;
      text-align: center;
    }

    .contact-title-area > .title {
      font-family: var(--font-japanese);
      font-size: 1.1rem;
      font-weight: 700;
      margin-bottom: 8px;
      color: #fff;
      line-height: 1.4;
    }

    .contact-title-area > .sub-title {
      font-family: var(--font-archetype);
      font-size: 0.85rem;
      letter-spacing: 0.15em;
      color: #fff;
      opacity: 0.9;
      line-height: 1;
      text-transform: uppercase;
    }

    .custom-contact-message {
      text-align: center;
    }

    .custom-contact-title {
      font-size: 1.35rem;
      font-weight: 500;
      margin-bottom: 16px;
      line-height: 1.5;
      color: #fff;
    }

    .custom-contact-desc {
      font-size: 0.95rem;
      margin-bottom: 32px;
      line-height: 1.7;
      color: #fff;
      font-weight: 400;
    }

    .custom-contact-section .custom-contact-inner .custom-contact-content .custom-contact-message .custom-contact-btn {
      padding: 14px 40px;
      font-size: 1rem;
      border-radius: 50px;
      margin-bottom: 0;
      background: var(--lp-red, #dc4750);
      color: #ffffff;
      font-weight: 700;
      border: none;
      box-shadow: 0 2px 8px rgba(220, 71, 80, 0.3);
      display: inline-block;
      position: relative;
      overflow: visible;
    }

    .custom-contact-section .custom-contact-inner .custom-contact-content .custom-contact-message .custom-contact-btn::before {
      display: none;
    }

    .custom-contact-section .custom-contact-inner .custom-contact-content .custom-contact-message .custom-contact-btn:hover {
      background: #c23e46;
      color: #ffffff;
      border: none;
    }

    .custom-contact-section .custom-contact-inner .custom-contact-content .custom-contact-message .custom-contact-btn:hover::before {
      display: none;
    }

    .custom-contact-section .custom-contact-inner .custom-contact-content .custom-contact-message .custom-contact-btn i {
      margin-left: 10px;
      color: #ffffff;
    }

    .custom-contact-bg-text {
      bottom: -30px;
      left: 24px;
      font-size: 5.5rem;
      opacity: 0.2;
      color: #ffffff;
      font-weight: 500;
      letter-spacing: 0.03em;
      white-space: nowrap;
      animation: slideText 20s linear infinite;
    }

    @keyframes slideText {
      0% {
        transform: translateX(0);
      }
      100% {
        transform: translateX(-50%);
      }
    }

    .highlight-char {
      display: inline-block;
      transition: color 0.4s ease;
    }
    .anim-box.slidein.is-animated {
      animation: slideIn 1s cubic-bezier(0.25, 1, 0.5, 1) forwards;
    }
  }
  
/* トップページ専用の隙間設定 - PC用 */
@media (min-width: 769px) {
}
  

/* =========================================
   About Section - Cinematic Depth Typo
   ========================================= */

/* Responsive */
@media (max-width: 768px) {

  /* ========================================
     Common Components (汎用コンポーネント)
     ======================================== */
  
  /* セクションタイトル共通 */
  .section-title-area {
      text-align: center;
      margin-bottom: 32px;
  }

  .section-title-area .en-title {
      font-family: var(--font-archetype);
      font-size: 40px;
      line-height: 1;
      margin-bottom: 8px;
  }

  .section-title-area .jp-title {
      font-size: 13px;
      color: #666;
  }

  /* ボタン共通 */
  .common-btn {
      display: inline-flex;
      align-items: center;
      justify-content: center;
      height: 52px;
      padding: 0 32px;
      border-radius: 26px;
      font-size: 14px;
      font-weight: 600;
      text-decoration: none;
      transition: all 0.3s ease;
  }

  /* カード共通 */
  .common-card {
      border-radius: 12px;
      overflow: hidden;
      box-shadow: 0 4px 12px rgba(0,0,0,0.06);
      background: #fff;
  }

  .common-card img {
      width: 100%;
      height: auto;
  }

  .common-card-body {
      padding: 16px;
  }
}
/* ==========================================================================
   Header Component Styles
   ========================================================================== */

/* --------------------------------------------------
   Base Header (Transparent Background / White Text)
   -------------------------------------------------- */
.hh-header {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    z-index: 100000;
    padding: 20px 40px;
    transition: background-color 0.8s ease, padding 0.8s ease, box-shadow 0.8s ease, color 0.8s ease, backdrop-filter 0.8s ease;
    background-color: transparent;
    color: #ffffff; /* Default: White Text */
    box-sizing: border-box;
}

.hh-header-inner {
    display: flex;
    align-items: center;
    justify-content: space-between;
    max-width: 1400px;
    margin: 0 auto;
    gap: 20px;
}

/* PC版: ナビゲーションとボタンエリアの配置調整 */
@media (min-width: 1025px) {
    .hh-header-inner {
        justify-content: space-between;
    }
    
    .hh-header-nav {
        flex: 1;
        display: flex;
        justify-content: center;
    }
}

/* --------------------------------------------------
   Scrolled State (White Background / Navy Text)
   -------------------------------------------------- */
.hh-header.is-scrolled {
    background-color: rgba(255, 255, 255, 0.95);
    backdrop-filter: blur(10px);
    padding: 15px 40px;
    box-shadow: 0 5px 20px rgba(0, 0, 0, 0.05);
    color: var(--lp-navy, #253742);
}

/* --------------------------------------------------
   Variation: Header on White Page (Navy Text)
   -------------------------------------------------- */
.hh-header.header-white-bg:not(.is-scrolled) {
    color: var(--lp-navy, #253742);
}

/* --------------------------------------------------
   Logo
   -------------------------------------------------- */
.hh-header-logo img {
    display: block;
    height: 43px;
    width: auto;
    transition: all 0.3s ease;
}

/* --------------------------------------------------
   Navigation
   -------------------------------------------------- */
.hh-header-nav ul {
    display: flex;
    list-style: none;
    margin: 0;
    padding: 0;
    gap: 30px;
}

.hh-header-nav a {
    text-decoration: none;
    font-size: 15px;
    font-weight: 500;
    letter-spacing: 0.05em;
    transition: color 0.3s ease;
    position: relative;
    color: inherit; /* Inherit from .hh-header color */
}

/* Hover Underline */
.hh-header-nav a::after {
    content: "";
    position: absolute;
    bottom: -5px;
    left: 50%;
    transform: translateX(-50%);
    width: 0;
    height: 2px;
    background-color: var(--lp-accent, #00bfff);
    transition: width 0.3s cubic-bezier(0.25, 1, 0.5, 1);
}

.hh-header-nav a:hover::after {
    width: 100%;
}

.hh-header-nav a:hover {
    color: var(--lp-accent, #00bfff) !important;
}

/* Variation: Navigation Color on White Page */
.hh-header.header-white-bg:not(.is-scrolled) .hh-header-nav ul li a::after {
    background-color: var(--lp-navy, #253742);
}

/* --------------------------------------------------
   Header Actions (Buttons)
   -------------------------------------------------- */
.hh-header-actions {
    display: flex;
    align-items: center;
    gap: 15px;
}

/* PC版: ボタンを左寄せ、ハンバーガーメニューを右寄せ */
@media (min-width: 1025px) {
    .hh-header-actions {
        display: flex;
        align-items: center;
        gap: 15px;
        flex-shrink: 0;
    }
    
    /* ボタン2つをワンセットとして左に配置 */
    .hh-header-actions .hh-header-btn {
        flex-shrink: 0;
    }
    
    /* ハンバーガーメニューを右端に配置 */
    .hh-header-actions .hh-menu-trigger {
        margin-left: 20px;
        flex-shrink: 0;
    }
}

.hh-header-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    padding: 10px 24px;
    border-radius: 50px;
    font-size: 14px;
    font-weight: 700;
    text-decoration: none;
    transition: all 0.4s cubic-bezier(0.25, 1, 0.5, 1);
    position: relative;
    overflow: hidden;
    z-index: 1;
}

/* --------------------------------------------------
   Button: Document Request (Left)
   -------------------------------------------------- */
.btn-doc {
    background: transparent;
    border: 1.5px solid #ffffff;
    color: #ffffff;
}

.btn-doc::before {
    content: "";
    position: absolute;
    top: 0;
    left: 0;
    width: 0;
    height: 100%;
    background: #ffffff;
    transition: width 0.3s cubic-bezier(0.25, 1, 0.5, 1);
    z-index: -1;
}

.btn-doc:hover {
    color: var(--lp-navy, #253742) !important;
    border-color: #ffffff;
    box-shadow: 0 10px 25px rgba(255, 255, 255, 0.2);
}

.btn-doc:hover::before {
    width: 100%;
}

/* Scrolled State */
.hh-header.is-scrolled .btn-doc {
    border-color: var(--lp-navy, #253742);
    color: var(--lp-navy, #253742);
}

.hh-header.is-scrolled .btn-doc::before {
    background: var(--lp-navy, #253742);
}

.hh-header.is-scrolled .btn-doc:hover {
    color: #ffffff !important;
}

/* Variation: White Page State */
.hh-header.header-white-bg:not(.is-scrolled) .btn-doc {
    color: var(--lp-navy, #253742);
    border-color: var(--lp-navy, #253742);
}

.hh-header.header-white-bg:not(.is-scrolled) .btn-doc::before {
    background: var(--lp-navy, #253742);
}

.hh-header.header-white-bg:not(.is-scrolled) .btn-doc:hover {
    color: #ffffff !important;
}

/* --------------------------------------------------
   Button: Contact (Right)
   -------------------------------------------------- */
.btn-contact {
    background: var(--lp-red, #dc4750);
    border: 1.5px solid var(--lp-red, #dc4750);
    color: #ffffff !important;
}

.btn-contact::after {
    content: "";
    position: absolute;
    top: 0;
    left: -100%;
    width: 100%;
    height: 100%;
    background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.4), transparent);
    transition: none;
    z-index: 1;
    pointer-events: none;
    transform: skewX(-20deg);
}

.btn-contact:hover {
    transform: translateY(-3px);
    box-shadow: 0 15px 30px rgba(220, 71, 80, 0.4);
    background: #c23e46;
    color: #ffffff !important;
}

.btn-contact:hover::after {
    left: 100%;
    transition: left 0.6s ease;
}

/* --------------------------------------------------
   Hamburger Menu Trigger
   -------------------------------------------------- */
.hh-menu-trigger {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 50px;
    height: 50px;
    border-radius: 50%;
    background: transparent;
    border: 1.5px solid #ffffff;
    cursor: pointer;
    position: relative;
    z-index: 10001;
    margin-left: 15px;
    transition: all 0.4s cubic-bezier(0.25, 1, 0.5, 1);
    flex-shrink: 0;
}

.hh-menu-trigger span {
    display: block;
    width: 22px;
    height: 2px;
    background-color: #ffffff;
    position: absolute;
    left: 50%;
    transform: translateX(-50%);
    transition: all 0.3s ease;
}

.hh-menu-trigger span:nth-child(1) { top: 18px; }
.hh-menu-trigger span:nth-child(2) { top: 24px; }
.hh-menu-trigger span:nth-child(3) { top: 30px; }

/* Hamburger Hover */
.hh-menu-trigger::before {
    content: "";
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    width: 0;
    height: 0;
    border-radius: 50%;
    background: #ffffff;
    transition: width 0.4s ease, height 0.4s ease;
    z-index: -1;
}

.hh-menu-trigger:hover::before {
    width: 120%;
    height: 120%;
}

.hh-menu-trigger:hover span {
    background-color: var(--lp-navy, #253742);
}

/* Hamburger Active State */
.hh-menu-trigger.is-active {
    background-color: transparent;
    border-color: #253742;
}

.hh-menu-trigger.is-active span {
    background-color: #253742;
}

.hh-menu-trigger.is-active span:nth-child(1) {
    top: 50%;
    transform: translate(-50%, -50%) rotate(45deg);
}

.hh-menu-trigger.is-active span:nth-child(2) {
    opacity: 0;
}

.hh-menu-trigger.is-active span:nth-child(3) {
    top: 50%;
    transform: translate(-50%, -50%) rotate(-45deg);
}

.hh-menu-trigger.is-active::before {
    display: none;
}

/* Scrolled State for Hamburger */
.hh-header.is-scrolled .hh-menu-trigger {
    border-color: var(--lp-navy, #253742);
}

.hh-header.is-scrolled .hh-menu-trigger span {
    background-color: var(--lp-navy, #253742);
}

.hh-header.is-scrolled .hh-menu-trigger:hover span {
    background-color: #ffffff;
}

.hh-header.is-scrolled .hh-menu-trigger::before {
    background: var(--lp-navy, #253742);
}

/* Variation: White Page State for Hamburger */
.hh-header.header-white-bg:not(.is-scrolled) .hh-menu-trigger {
    border-color: var(--lp-navy, #253742);
}

.hh-header.header-white-bg:not(.is-scrolled) .hh-menu-trigger span {
    background-color: var(--lp-navy, #253742);
}

.hh-header.header-white-bg:not(.is-scrolled) .hh-menu-trigger:hover span {
    background-color: #ffffff;
}

.hh-header.header-white-bg:not(.is-scrolled) .hh-menu-trigger::before {
    background: var(--lp-navy, #253742);
}

/* --------------------------------------------------
   Mobile Menu Overlay
   -------------------------------------------------- */
.hh-mobile-menu {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100vh;
    z-index: 10000;
    pointer-events: none;
    opacity: 0;
    transition: opacity 0.4s ease;
}

.hh-mobile-menu.is-active {
    pointer-events: auto;
    opacity: 1;
}

.hh-mobile-bg {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: rgba(255, 255, 255, 0.95);
    backdrop-filter: blur(10px);
}

.hh-mobile-content {
    position: relative;
    width: 100%;
    height: 100%;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    padding: 40px;
}

.hh-mobile-nav ul {
    list-style: none;
    padding: 0;
    margin: 0 0 40px 0;
    text-align: center;
}

.hh-mobile-nav li {
    margin-bottom: 20px;
}

.hh-mobile-nav a {
    text-decoration: none;
    color: #253742;
    font-size: 18px;
    font-weight: 700;
    display: flex;
    flex-direction: column;
    align-items: center;
}

.hh-mobile-nav .en {
    font-size: 14px;
    color: var(--lp-red, #dc4750); /* 赤色に変更 */
    margin-bottom: 5px;
    font-family: var(--font-archetype, "Archetype", sans-serif);
    font-weight: 500; /* ミディアム */
}

.hh-mobile-nav .jp {
    font-size: 18px;
}

.hh-mobile-btns {
    width: 100%;
    max-width: 300px;
    display: flex;
    flex-direction: column;
    gap: 15px;
}

.hh-btn.full-width {
    width: 100%;
    text-align: center;
    padding: 14px 40px; /* custom-contact-btnと同じサイズに変更 */
    border-radius: 50px;
    text-decoration: none;
    font-weight: 700;
    font-size: 1rem; /* 16px */
}

.hh-btn.secondary {
    border: 1px solid #253742;
    color: #253742;
}

.hh-btn.primary {
    background: #dc4750;
    color: #fff;
}

/* --------------------------------------------------
   Responsive
   -------------------------------------------------- */
@media screen and (max-width: 1024px) {
    .hh-header-nav { display: none; }
    .hh-header-btn { display: none; }
    .hh-menu-trigger { display: flex; }
    .hh-header { padding: 15px 20px; }
}

/* --------------------------------------------------
   SP Styles (Max-width: 768px)
   -------------------------------------------------- */
@media (max-width: 768px) {
    /* ヘッダーの高さを正確に再定義 */
    /* レスポンシブ版のヘッダー構造：
     * - padding: 4vw 6vw（上下が4vw、左右が6vw）
     * - ロゴ高さ: 35px
     * - .hh-header-innerはflexboxでalign-items: center
     * 実際のヘッダーの高さ = 上padding(4vw) + ロゴ高さ(35px) + 下padding(4vw) = 8vw + 35px
     */
    :root {
        --header-height: calc(8vw + 35px);
    }

    /* Header Logo */
    .hh-header-logo img,
    #hh-logo-img {
        height: 35px;
        width: auto;
    }

    /* Header Padding */
    .hh-header {
        padding: 4vw 6vw;
        /* ヘッダーの高さを明示的に定義（box-sizing: border-boxのため、paddingを含む） */
        height: var(--header-height);
        box-sizing: border-box;
    }

    /* Hamburger Menu Icon */
    .hh-menu-trigger {
        display: flex;
        align-items: center;
        justify-content: center;
        flex-direction: column;
        width: 10vw;
        height: 10vw;
        background-color: transparent;
        border: 1.5px solid var(--lp-navy, #253742);
    }

    /* レスポンシブ版で通常状態の背景色を強制的に透明に */
    .hh-header .hh-menu-trigger,
    .hh-header.is-scrolled .hh-menu-trigger,
    .hh-header.header-white-bg .hh-menu-trigger {
        background-color: transparent;
    }

    /* レスポンシブ版でホバー時の::before疑似要素を無効化 */
    .hh-header .hh-menu-trigger::before,
    .hh-header.is-scrolled .hh-menu-trigger::before,
    .hh-header.header-white-bg .hh-menu-trigger::before {
        display: none;
    }

    /* レスポンシブ版でホバー時の背景色変更を無効化 */
    .hh-header .hh-menu-trigger:hover,
    .hh-header.is-scrolled .hh-menu-trigger:hover,
    .hh-header.header-white-bg .hh-menu-trigger:hover {
        background-color: transparent;
    }

    .hh-menu-trigger span {
        position: relative;
        top: auto;
        left: auto;
        transform: none;
        margin: 1.5px 0;
        width: 4vw;
        height: 0.5vw;
        background-color: #ffffff;
    }

    /* レスポンシブ版で通常状態（白背景でない状態）のハンバーガーメニューを白色に */
    .hh-header:not(.is-scrolled):not(.header-white-bg) .hh-menu-trigger span {
        background-color: #ffffff;
    }

    .hh-header:not(.is-scrolled):not(.header-white-bg) .hh-menu-trigger {
        border-color: #ffffff;
    }

    /* レスポンシブ版で通常状態の3本線を明示的に設定 */
    .hh-header:not(.is-scrolled):not(.header-white-bg) .hh-menu-trigger:not(.is-active) span {
        position: relative;
        top: auto;
        left: auto;
        transform: none;
        margin: 1.5px 0;
        width: 4vw;
        height: 0.5vw;
        background-color: #ffffff;
        opacity: 1;
    }

    .hh-header.is-scrolled .hh-menu-trigger:not(.is-active) span,
    .hh-header.header-white-bg .hh-menu-trigger:not(.is-active) span {
        position: relative;
        top: auto;
        left: auto;
        transform: none;
        margin: 1.5px 0;
        width: 4vw;
        height: 0.5vw;
        background-color: var(--lp-navy, #253742);
        opacity: 1;
    }

    .hh-header:not(.is-scrolled):not(.header-white-bg) .hh-menu-trigger:not(.is-active) span:nth-child(1),
    .hh-header:not(.is-scrolled):not(.header-white-bg) .hh-menu-trigger:not(.is-active) span:nth-child(2),
    .hh-header:not(.is-scrolled):not(.header-white-bg) .hh-menu-trigger:not(.is-active) span:nth-child(3) {
        top: auto;
        transform: none;
    }

    .hh-header.is-scrolled .hh-menu-trigger:not(.is-active) span:nth-child(1),
    .hh-header.is-scrolled .hh-menu-trigger:not(.is-active) span:nth-child(2),
    .hh-header.is-scrolled .hh-menu-trigger:not(.is-active) span:nth-child(3),
    .hh-header.header-white-bg .hh-menu-trigger:not(.is-active) span:nth-child(1),
    .hh-header.header-white-bg .hh-menu-trigger:not(.is-active) span:nth-child(2),
    .hh-header.header-white-bg .hh-menu-trigger:not(.is-active) span:nth-child(3) {
        top: auto;
        transform: none;
    }

    /* ホバー時も通常状態の色を維持 */
    .hh-header:not(.is-scrolled):not(.header-white-bg) .hh-menu-trigger:not(.is-active):hover span {
        background-color: #ffffff;
    }

    .hh-header.is-scrolled .hh-menu-trigger:not(.is-active):hover span,
    .hh-header.header-white-bg .hh-menu-trigger:not(.is-active):hover span {
        background-color: var(--lp-navy, #253742);
    }

    /* Hamburger Active State - バッテン（×）を円の中心に配置 */
    .hh-header .hh-menu-trigger.is-active,
    .hh-header.is-scrolled .hh-menu-trigger.is-active,
    .hh-header.header-white-bg .hh-menu-trigger.is-active,
    .hh-header:not(.is-scrolled):not(.header-white-bg) .hh-menu-trigger.is-active {
        background-color: transparent;
        border-color: var(--lp-navy, #253742);
    }

    .hh-header .hh-menu-trigger.is-active span,
    .hh-header.is-scrolled .hh-menu-trigger.is-active span,
    .hh-header.header-white-bg .hh-menu-trigger.is-active span,
    .hh-header.is-scrolled .hh-menu-trigger.is-active:hover span {
        position: absolute;
        margin: 0;
        background-color: var(--lp-navy, #253742);
    }

    .hh-header .hh-menu-trigger.is-active span:nth-child(1),
    .hh-header.is-scrolled .hh-menu-trigger.is-active span:nth-child(1),
    .hh-header.header-white-bg .hh-menu-trigger.is-active span:nth-child(1),
    .hh-header.is-scrolled .hh-menu-trigger.is-active:hover span:nth-child(1) {
        top: 50%;
        left: 50%;
        width: 4vw;
        height: 0.6vw;
        min-height: 2px;
        transform: translate(-50%, -50%) rotate(45deg);
        background-color: var(--lp-navy, #253742);
    }

    .hh-header .hh-menu-trigger.is-active span:nth-child(2),
    .hh-header.is-scrolled .hh-menu-trigger.is-active span:nth-child(2),
    .hh-header.header-white-bg .hh-menu-trigger.is-active span:nth-child(2) {
        opacity: 0;
    }

    .hh-header .hh-menu-trigger.is-active span:nth-child(3),
    .hh-header.is-scrolled .hh-menu-trigger.is-active span:nth-child(3),
    .hh-header.header-white-bg .hh-menu-trigger.is-active span:nth-child(3),
    .hh-header.is-scrolled .hh-menu-trigger.is-active:hover span:nth-child(3) {
        top: 50%;
        left: 50%;
        width: 4vw;
        height: 0.6vw;
        min-height: 2px;
        transform: translate(-50%, -50%) rotate(-45deg);
        background-color: var(--lp-navy, #253742);
    }

    /* レスポンシブ版でホバースタイルを上書き */
    .hh-header.is-scrolled .hh-menu-trigger.is-active:hover span {
        background-color: var(--lp-navy, #253742);
    }

    .hh-header.header-white-bg .hh-menu-trigger.is-active:hover span {
        background-color: var(--lp-navy, #253742);
    }

    /* Mobile Menu */
    .hh-mobile-menu {
        z-index: 10000;
    }

    .hh-mobile-bg {
        background: rgba(255, 255, 255, 0.95);
        backdrop-filter: blur(10px);
    }

    .hh-mobile-nav a {
        font-size: 3.7vw;
    }

    .hh-mobile-btns {
        gap: 3vw;
    }

    .hh-btn.full-width {
        font-size: 1rem; /* 16px - custom-contact-btnと同じサイズ */
        height: auto; /* 高さを自動に */
        width: 100%; /* 幅を100%に */
        padding: 14px 40px; /* custom-contact-btnと同じサイズ */
        min-height: 2.75rem; /* 最小高さを維持 */
    }
}
/* =========================================
   Footer Component Styles
   ========================================= */

/* --- ANIMATIONS (PC & SP共通) --- */
@keyframes elasticReveal {
    0% { transform: translateY(40px); opacity: 0; }
    60% { transform: translateY(-5px); opacity: 1; }
    100% { transform: translateY(0); opacity: 1; }
}

@keyframes flowArrow {
    0% { transform: translateX(0); opacity: 0.8; }
    50% { transform: translateX(8px); opacity: 1; }
    100% { transform: translateX(0); opacity: 0.8; }
}

@keyframes softGlow {
    0% { text-shadow: 0 0 5px rgba(255,255,255,0); }
    50% { text-shadow: 0 0 20px rgba(255,255,255,0.5); }
    100% { text-shadow: 0 0 5px rgba(255,255,255,0); }
}

/* PC Styles (Min-width: 769px) */
@media (min-width: 769px) {
    .custom-footer {
        background-color: var(--color-navy, #263743);
        color: var(--color-white, #ffffff);
        padding: 10.5vw 7vw 0 7vw;
        font-family: var(--font-japanese, "Noto Sans JP", sans-serif);
    }

    .custom-footer-top {
        display: flex;
        justify-content: space-between;
        align-items: flex-start;
        flex-wrap: wrap;
        margin-bottom: 20px;
    }

    /* Left Column */
    .custom-footer-left {
        display: flex;
        flex-direction: column;
        align-items: flex-start;
        margin-bottom: 15vw;
    }

    .custom-contact-us {
        display: flex;
        align-items: center;
        line-height: 1;
    }

    .custom-contact-text {
        position: relative;
        font-size: 6.2vw;
        font-family: var(--font-archetype, "Archetype", sans-serif);
        letter-spacing: 0.8rem;
        line-height: 1;
        font-weight: 500;
        color: var(--color-white, #ffffff);
        animation: elasticReveal 1.4s cubic-bezier(0.34, 1.56, 0.64, 1) forwards,
                   softGlow 3s ease-in-out infinite alternate;
    }

    .custom-contact-text::after {
        content: "";
        display: block;
        width: 100%;
        height: 1px;
        background-color: var(--color-white, #ffffff);
        position: absolute;
        bottom: 0;
        left: 0;
    }

    .custom-arrow-image {
        margin-left: 12px;
        width: 7vw;
        height: auto;
        animation: flowArrow 1.5s ease-in-out infinite;
    }

    .custom-footer-message {
        text-align: left;
        font-size: 0.94vw;
        color: var(--color-white, #ffffff);
        line-height: 20px;
        margin-top: 16px;
    }

    .custom-footer-message p {
        font-weight: 300; /* 一段階下げる（400 → 300） */
        animation: elasticReveal 1.6s cubic-bezier(0.34, 1.56, 0.64, 1) 0.2s forwards;
        opacity: 0;
    }

    /* Right Column */
    .custom-footer-right {
        display: flex;
        flex-direction: column;
    }

    .custom-follow-us {
        margin-bottom: 20px;
    }

    .custom-follow-us span {
        font-size: 1.8vw;
        font-family: var(--font-archetype, "Archetype", sans-serif);
        margin-bottom: 8px;
        display: block;
        font-weight: 500;
        letter-spacing: 0.05em;
        color: var(--color-white, #ffffff);
    }

    .custom-sns-icons {
        list-style: none;
        display: flex;
        padding: 0;
        margin: 0;
    }

    .custom-sns-icons li {
        margin-right: 1.9vw;
    }

    .custom-sns-icons li a {
        color: var(--color-white, #ffffff);
        font-size: 1.8vw;
        text-decoration: none;
    }

    .custom-sns-icons li a:hover {
        color: var(--color-white, #ffffff);
    }

    /* Office Section */
    .custom-office span {
        font-size: 1.8vw;
        font-family: var(--font-archetype, "Archetype", sans-serif);
        margin-bottom: 8px;
        display: block;
        font-weight: 500;
        letter-spacing: 0.05em;
        color: var(--color-white, #ffffff);
    }

    .custom-office p {
        font-size: 0.94vw;
        line-height: 20px;
        margin: 0;
        color: var(--color-white, #ffffff);
    }

    /* Office List (Refined from HashHack/Touryumon) */
    .hh-office-list {
        margin-top: 15px;
    }

    .hh-office-item {
        margin-bottom: 20px;
    }

    .hh-office-item:last-child {
        margin-bottom: 0;
    }

    .hh-office-name {
        font-family: var(--font-archetype, "Archetype", sans-serif);
        font-weight: 500;
        font-size: 14px;
        margin-bottom: 5px;
        color: var(--color-white, #ffffff);
        display: flex;
        align-items: center;
        gap: 8px;
        letter-spacing: 0.05em;
    }

    .hh-office-name i {
        color: var(--color-white, #ffffff);
    }

    .hh-office-address {
        font-family: var(--font-japanese, "Noto Sans JP", sans-serif);
        font-weight: 400; /* 一段階下げる（700 → 400） */
        font-size: 13px;
        margin: 0;
        padding-left: 22px;
        line-height: 1.6;
        color: var(--color-white, #ffffff);
    }

    .custom-office .hh-office-address {
        font-weight: 400; /* 一段階下げる（700 → 400） */
    }

    /* Bottom Area */
    .custom-footer-bottom {
        display: flex;
        justify-content: space-between;
        align-items: center;
        border-top: 1px solid var(--color-white, #ffffff);
        padding-top: 16px;
        margin-top: 20px;
        height: 8.2vw;
    }

    .custom-footer-bottom .custom-footer-logo img {
        height: 1.7vw;
    }

    .custom-footer-links {
        text-align: right;
        font-size: 1.04vw;
    }

    .custom-footer-links .custom-privacy-policy {
        text-decoration: none;
        color: var(--color-white, #ffffff);
        margin-right: 16px;
        font-family: var(--font-archetype, "Archetype", sans-serif);
        font-weight: 500;
        letter-spacing: 0.05em;
    }

    .custom-footer-links span {
        margin-left: 12.6vw;
        font-family: var(--font-archetype, "Archetype", sans-serif);
        font-weight: 500;
        letter-spacing: 0.05em;
        color: var(--color-white, #ffffff);
    }

    .custom-sp-only {
        display: none;
    }

    .custom-pc-only {
        display: block;
    }
}

/* --------------------------------------------------
   SP Responsive Styles
   -------------------------------------------------- */
@media (max-width: 768px) {
    /* ANIMATIONSは共通定義に移動済み */

    .custom-footer {
        background-color: var(--color-navy, #263743);
        color: var(--color-white, #ffffff);
        padding: 10.5vw 7vw 40px 7vw;
        font-family: var(--font-japanese, "Noto Sans JP", sans-serif);
    }

    .custom-footer-top {
        margin-bottom: 4vw;
    }

    .custom-footer-left {
        margin-bottom: 15vw;
    }

    /* 1. CONTACT US - Animated & Huge (Ultra Compact) */
    .custom-contact-link {
        display: block;
        text-decoration: none;
        color: inherit;
        position: relative;
        width: 100%;
    }

    .custom-contact-text {
        font-family: var(--font-archetype, "Archetype", sans-serif);
        font-size: 13vw;
        line-height: 0.8;
        letter-spacing: 0.02em;
        font-weight: 500; /* Archetype Renner Medium */
        display: block;
        width: 100%;
        border-bottom: 1px solid rgba(255,255,255,0.4);
        padding-bottom: 5px;
        margin-bottom: 5px;
        position: relative;
        color: #fff;
        animation: elasticReveal 1.4s cubic-bezier(0.34, 1.56, 0.64, 1) forwards,
                   softGlow 3s ease-in-out infinite alternate;
    }
    
    .custom-contact-text::after {
        display: none;
    }
    
    /* 矢印調整 */
    .custom-contact-us {
        display: block;
        position: relative;
        margin-bottom: 8px;
        border-bottom: none;
    }
    
    .custom-arrow-image {
        position: absolute;
        right: 0;
        top: 2vw;
        width: 10vw;
        margin: 0;
        animation: flowArrow 1.5s ease-in-out infinite;
    }

    /* 2. Message - Ultra Compact */
    .custom-footer-message p {
        font-size: 13px;
        font-weight: 300;
        line-height: 1.5;
        opacity: 0;
        margin-top: 0;
        margin-bottom: 24px;
        animation: elasticReveal 1.6s cubic-bezier(0.34, 1.56, 0.64, 1) 0.2s forwards;
    }

    /* 3. FOLLOW US / OFFICE - Ultra Compact */
    .custom-follow-us span,
    .custom-office span {
        font-family: var(--font-archetype, "Archetype", sans-serif);
        font-size: 26px;
        margin-bottom: 5px;
        font-weight: 500; /* Archetype Renner Medium */
        display: block;
    }

    .custom-sns-icons {
        list-style: none;
        display: flex;
        padding: 0;
        margin: 0;
        margin-top: 0;
        gap: 15px;
    }

    .custom-sns-icons li {
        margin-right: 0;
    }

    .custom-sns-icons li a {
        color: var(--color-white, #ffffff);
        font-size: 24px;
        text-decoration: none;
    }

    .custom-follow-us {
        margin-bottom: 24px;
    }

    .custom-office {
        margin-bottom: 0;
    }
    
    .hh-office-item {
        margin-bottom: 15px;
    }

    /* Office Address - Small & Balanced */
    .hh-office-name {
        font-family: var(--font-archetype, "Archetype", sans-serif);
        font-size: 14px;
        font-weight: 500; /* Archetype Renner Medium */
        margin-bottom: 2px;
    }
    
    .hh-office-address {
        font-size: 11px;
        font-weight: 200; /* 一段階下げる（300 → 200） */
        line-height: 1.6;
        opacity: 0.8;
    }

    /* 4. Footer Bottom - Ultra Compact */
    .custom-footer-bottom.custom-sp-only {
        display: flex;
        flex-direction: column;
        padding-top: 0;
        padding-bottom: 20px;
        border-top: none;
        margin-top: 24px;
        visibility: visible;
        opacity: 1;
        width: 100%;
        box-sizing: border-box;
    }

    .custom-footer-links {
        width: 100%;
        text-align: right;
        border-top: 1px solid rgba(255,255,255,0.4);
        padding-top: 10px;
        margin-bottom: 24px;
    }

    .custom-privacy-policy {
        font-family: var(--font-archetype, "Archetype", sans-serif);
        font-size: 14px;
        font-weight: 500; /* Archetype Renner Medium */
    }

    /* Logo & Copyright */
    .custom-footer-logo {
        margin-bottom: 15px;
        text-align: center;
    }
    
    .custom-footer-logo img {
        height: 25px;
    }

    .custom-sp-privacy {
        font-size: 11px;
        font-family: "Helvetica Neue", Arial, sans-serif;
        font-weight: 400;
        opacity: 0.6;
        text-align: center;
        letter-spacing: 0.05em;
    }

    .custom-pc-only {
        display: none;
    }
    
    .custom-sp-only {
        display: block;
    }
}
/* ==========================================================================
   Hero Section Styles (PC & Mobile)
   ========================================================================== */

/* --------------------------------------------------
   Common Styles & Keyframes
   -------------------------------------------------- */
@keyframes neon-pulse {
    from {
        filter: drop-shadow(0 0 0.5px rgba(229, 122, 97, 1)) drop-shadow(0 0 1.2px rgba(229, 122, 97, 0.8));
    }
    to {
        filter: drop-shadow(0 0 0.8px rgba(229, 122, 97, 1)) drop-shadow(0 0 2px rgba(229, 122, 97, 1)) drop-shadow(0 0 3px rgba(229, 122, 97, 0.8));
    }
}

/* --------------------------------------------------
   PC Styles (Min-width: 769px)
   -------------------------------------------------- */
@media (min-width: 769px) {
    /* Top Page Hero */
    .hero-section {
        background-color: var(--color-navy);
        min-height: clamp(36rem, 84vh, 51rem);
        padding-top: 3rem;
        display: flex;
        justify-content: center;
        align-items: center;
        position: relative;
    }

    .hero-section .content-container {
        display: flex;
        justify-content: center;
        position: relative;
    }

    .home-page .hero-section .content-container {
        display: unset;
        position: relative;
        padding: 0 clamp(9rem, 3vw, 0rem);
    }

    .home-page .hero-section .content-container dotlottie-player {
        position: absolute;
        width: 600px;
    }

    .home-hero-title-area {
        color: var(--color-white);
        display: flex;
        flex-direction: column;
        align-content: flex-start;
        justify-content: center;
    }

    .home-hero-title-area h1 {
        font-family: var(--font-jost);
        font-size: clamp(2.5rem, 5.5vw, 4rem);
        letter-spacing: 0.05rem;
        line-height: 1.2;
        margin-bottom: 1rem;
        white-space: nowrap;
    }

    .home-hero-title-area h2 {
        font-family: var(--font-japanese);
        font-size: 1.3rem;
    }

    .lottie-container {
        width: 600px;
        height: 350px;
        padding-top: 0;
        overflow: hidden;
        display: flex;
        align-items: center;
        justify-content: center;
        position: absolute;
        top: 40px;
        right: 10px;
    }

    .lottie-container dotlottie-player {
        position: absolute;
        width: 300px;
        height: 300px;
        transform: scale(5);
        transform-origin: center center;
        filter: drop-shadow(0 0 0.5px rgba(229, 122, 97, 1)) drop-shadow(0 0 1.2px rgba(229, 122, 97, 0.8));
        animation: neon-pulse 2s infinite alternate;
    }

    .header-content {
        display: flex;
        align-items: center;
        justify-content: space-between;
        height: 100%;
        width: 985px;
        transform: translateY(-5vh);
    }

    /* Sub Page Hero (Common) */
    .subpage .hero-section {
        padding: 3rem 0 2rem 0;
        display: flex;
        justify-content: center;
        align-items: center;
        position: relative;
        min-height: auto; /* Reset min-height for subpages if needed */
    }

    .subpage .header-content {
        gap: 0;
        transform: none; /* Reset transform */
    }

    .subpage .header-content .service-info,
    .subpage .header-content .lottie-container {
        width: 492px;
    }

    .subpage .header-content .lottie-container {
        position: relative;
        top: auto;
        right: auto;
        padding-top: 10rem; /* Adjusted based on style.css legacy */
    }

    .subpage .header-content .service-info {
        max-width: none;
        flex: none;
        padding-left: 5%;
    }

    .subpage .header-content .service-info .service-header {
        display: flex;
        align-items: baseline;
        gap: 0.5rem;
        margin-bottom: 1.5rem;
    }

    .subpage .header-content .service-info .service-title {
        display: inline;
        margin-bottom: 0;
    }

    .subpage .header-content .service-info .service-subtitle {
        display: inline;
        font-size: 0.7rem;
        font-family: var(--font-japanese);
        letter-spacing: 0;
        font-weight: 400;
        opacity: 1;
    }
}

/* --------------------------------------------------
   SP Styles (Max-width: 768px)
   -------------------------------------------------- */
@media (max-width: 768px) {
    /* 
       Hero Section (ヒーローセクション)
       !important なし修正版
    */
    .home-page .hero-section {
        min-height: 95dvh;
        height: auto;
        padding: 0;
        display: block;
        background-color: var(--color-navy);
        position: relative;
        overflow: hidden;
    }

    .home-page .hero-section .container {
        display: block;
        height: 100%;
        width: 100%;
        padding: 0 20px;
        position: absolute;
        top: 0;
        left: 0;
        z-index: 2;
    }

    /* コンテンツエリアを画面中央に配置（少し左にずらす） */
    .home-page .header-content {
        position: absolute;
        top: 45%;
        left: 50%;
        transform: translate(-55%, -50%); /* -50% → -55%（少し左にずらす） */
        width: 100%;
        max-width: 360px;
        height: auto;
        display: block;
        z-index: 10;
    }

    /* テキストエリア */
    .home-page .left-info {
        width: 100%;
        display: block;
        position: relative;
        z-index: 5;
    }

    .home-page .content-container {
        padding: 0;
        display: block;
    }

    .home-page .home-hero-title-area {
        text-align: left;
        width: 100%;
        padding-left: 20px;
        color: var(--color-white);
    }

    /* フォント定義（スマホ用） */
    .home-page .home-hero-title-area h1 {
        font-family: "Jost", sans-serif;
        font-weight: 700;
        font-size: 36px;
        line-height: 1.2;
        letter-spacing: 0.02em;
        margin-bottom: 20px;
        color: #ffffff;
        text-align: left;
        white-space: normal;
        text-decoration: none;
        border: none;
    }

    .home-page .home-hero-title-area h1 span,
    .home-page .home-hero-title-area h1 a {
        text-decoration: none;
        border: none;
    }

    .home-page .home-hero-title-area h2 {
        font-size: 9.5px;
        color: #ffffff;
        font-weight: 500;
        letter-spacing: 0.05em;
        text-align: left;
        opacity: 0.9;
        position: relative;
        z-index: 10;
        margin-top: -10px;
        margin-left: 5px;
    }

    /* Lottie Animation (筆記体ロゴ) */
    .home-page .lottie-container {
        position: absolute;
        top: -50px; /* 下に戻す */
        right: -120px; /* -90px → -120px（右に30px移動） */
        transform: rotate(-5deg);
        width: 380px;
        height: 380px;
        margin: 0;
        padding: 0;
        z-index: 1;
        overflow: visible;
        display: block;
    }

    .home-page .lottie-container dotlottie-player {
        width: 100%;
        height: 100%;
        transform: scale(1.6) rotate(-5deg);
        position: relative; 
        top: auto;
        left: auto;
        filter: drop-shadow(0 0 0.5px rgba(229, 122, 97, 1)) drop-shadow(0 0 1.2px rgba(229, 122, 97, 0.8));
        animation: neon-pulse 2s infinite alternate;
    }

    /* Sub Page Hero (Common SP) */
    .subpage .header-content {
        text-align: center;
        /* Reset absolute positioning from home page if inherited */
        position: relative;
        top: auto;
        left: auto;
        transform: none;
        width: 100%;
        max-width: none;
    }

    .subpage .hero-section {
        position: relative;
        padding: 2rem 1rem;
        display: flex; /* or block depending on needs */
        flex-direction: column;
        align-items: center;
        justify-content: center;
        min-height: auto;
    }

    .subpage .header-content .service-info {
        padding-left: 0;
        width: 100%;
    }

    .subpage .header-content .service-info,
    .subpage .header-content .lottie-container {
        width: 100%;
    }

    .subpage .header-content .service-info .service-header {
        margin-bottom: 4rem;
        margin-left: 1rem;
        display: flex;
        flex-direction: column;
        align-items: flex-start;
    }

    .subpage .btn-primary,
    .subpage .btn-secondary {
        width: 160px;
    }

    /* lottie-container - 非home-pageページ用 (SP) */
    body:not(.home-page) .lottie-container {
        width: 200px;
        height: 220px;
        position: absolute;
        top: 45%;
        right: 0;
        transform: translateY(-45%);
        z-index: 1;
        padding-top: 0rem;
    }

    body:not(.home-page) .lottie-container dotlottie-player {
        width: 50%;
        height: 100%;
        transform: scale(3.5);
        top: -4%;
        left: 50%;
    }
}

/* ==========================================================================
   Count Section Styles (PC & Mobile)
   ========================================================================== */

/* --------------------------------------------------
   PC Styles (Min-width: 769px)
   Source: style.css (744-862行目)
   -------------------------------------------------- */
@media (min-width: 769px) {
    .count-section {
        background-color: #f8fcfe;
        padding: var(--section-padding);
        width: 100%;
    }

    .home-page .count-section {
        padding-top: clamp(3.75rem, 7.25vw, 7.25rem);
    }

    .about-wrapper {
        width: 80vw;
        margin: 0 auto;
        text-align: center;
        max-width: 1200px;
    }

    .statistics-container {
        display: grid;
        grid-template-columns: 1fr 1fr;
        gap: 2rem;
        justify-content: center;
        max-width: 100%;
    }

    .stat-box {
        background-color: var(--color-white);
        border-radius: 12px;
        padding: 25px 11px 25px 11px;
        text-align: center;
        box-shadow: 0 2px 3px rgba(0, 0, 0, 0.1);
        display: flex;
        flex-direction: column;
        align-items: center;
        justify-content: flex-start;
        gap: 15px;
        width: 100%;
    }

    .stat-label {
        width: fit-content;
        min-width: 120px;
        font-size: 15px;
        font-weight: 500;
        background-color: var(--color-navy);
        color: var(--color-white);
        padding: 0.1rem 1rem;
        line-height: 1.5;
        border-radius: 50px;
        border: 1px solid var(--color-navy);
        font-family: var(--font-japanese);
    }

    .stat-value {
        display: inline-flex;
        align-items: baseline;
        justify-content: center;
        gap: 5px;
    }

    .stat-number {
        line-height: 1;
        display: block;
        font-size: 6.2rem;
        color: var(--color-navy);
        width: fit-content;
        font-family: var(--font-archetype);
        font-weight: 500;
        margin-bottom: -4px;
    }

    .stat-unit {
        font-size: 2.4rem;
        color: var(--color-navy);
        line-height: 1;
        display: block;
        font-family: var(--font-japanese);
        font-weight: 500;
    }

    .stat-box:nth-child(3) .stat-unit {
        font-family: var(--font-jost);
        font-size: 3rem;
    }

    .stat-box:nth-child(4) .stat-unit {
        font-size: 2.4rem;
    }

    .update-date {
        font-size: 0.65rem;
        color: rgba(38, 55, 67, 0.6);
        margin-top: 4px;
        width: 100%;
        text-align: center;
        font-family: var(--font-japanese);
        letter-spacing: 0.05em;
    }

    /* Service Page Specific - Colors only, layout/size same as top page */
    .service-page .count-section {
        background-color: #e78c6c;
    }

    .service-page .stat-box {
        background-color: #ffffff;
    }

    .service-page .stat-label {
        background-color: var(--service-white, #ffffff);
        color: #253742;
        border-color: var(--service-white, #ffffff);
    }

    .service-page .stat-number {
        color: var(--service-white, #ffffff);
    }

    .service-page .stat-unit {
        color: var(--service-white, #ffffff);
    }

    .service-page .update-date {
        color: var(--service-white, #ffffff);
    }
}

/* --------------------------------------------------
   SP Styles (Max-width: 768px)
   -------------------------------------------------- */
@media (max-width: 768px) {
    .count-section {
        padding: 48px 0 56px;
        background-color: #f8fcfe;
    }

    .count-section .container {
        padding: 0 32px;
    }

    .about-wrapper {
        width: 100%;
        margin: 0 auto;
        padding: 0;
        max-width: 320px;
    }

    .statistics-container {
        display: flex;
        flex-direction: column;
        gap: 16px;
        width: 100%;
    }

    .stat-box {
        background-color: #ffffff;
        border-radius: 12px;
        padding: 9px 20px;
        display: flex;
        flex-direction: column;
        align-items: center;
        justify-content: center;
        box-shadow: 0 2px 12px rgba(0,0,0,0.04);
        min-height: auto;
        aspect-ratio: auto;
        width: 100%;
    }

    .stat-label {
        background-color: var(--color-navy);
        color: #ffffff;
        font-size: 11px;
        padding: 3px 11px;
        border-radius: 9999px;
        margin-bottom: 10px;
        display: inline-block;
        letter-spacing: 0.02em;
        font-weight: 500;
        font-family: var(--font-japanese);
    }

    .stat-value {
        display: flex;
        align-items: baseline;
        justify-content: center;
        flex-direction: row;
        gap: 3px;
    }

    .stat-number {
        font-family: var(--font-archetype, "Archetype", sans-serif);
        font-size: 3rem;
        color: var(--color-navy);
        line-height: 1;
        font-weight: 500; /* Archetype Renner Medium */
    }

    .stat-unit {
        font-family: var(--font-japanese);
        font-size: 1.2rem;
        color: var(--color-navy);
        font-weight: 500;
    }

    .update-date {
        margin-top: 16px;
        font-size: 11px;
        text-align: right;
        color: #888;
    }

    /* Service Page Specific SP - Colors only, layout/size same as top page */
    .service-page .count-section {
        background-color: #e78c6c;
    }

    .service-page .stat-box {
        background-color: #ffffff;
    }

    .service-page .stat-label {
        background-color: var(--service-white, #ffffff);
        color: #253742;
        border-color: var(--service-white, #ffffff);
    }

    .service-page .stat-number {
        color: var(--service-white, #ffffff);
    }

    .service-page .stat-unit {
        color: var(--service-white, #ffffff);
    }

    .service-page .update-date {
        color: var(--service-white, #ffffff);
    }
}
/* ==========================================================================
   Waves Section Styles (PC & Mobile)
   ========================================================================== */

/* --------------------------------------------------
   Common Styles & Keyframes
   -------------------------------------------------- */
@keyframes move-forever {
    0% {
        transform: translate3d(-90px, 0, 0);
    }
    100% {
        transform: translate3d(85px, 0, 0);
    }
}

/* --------------------------------------------------
   PC Styles (Min-width: 769px)
   Source: style.css (674-740行目)
   -------------------------------------------------- */
@media (min-width: 769px) {
    .waves {
        position: absolute; /* ヒーローセクション内に絶対配置 */
        bottom: 0;
        left: 0;
        width: 100%;
        height: 15vh;
        margin-bottom: -1px; /* 隙間対策 */
        /*Fix for safari gap*/
        min-height: 100px;
        max-height: 150px;
        background-color: transparent; /* 背景を透明にしてグラデーションを見せる */
        z-index: 2; /* Canvasより手前 */
    }

    .content {
        position: relative;
        height: 20vh;
        text-align: center;
        background-color: white;
    }

    .parallax > use {
        animation: move-forever 25s cubic-bezier(0.55, 0.5, 0.45, 0.5) infinite;
    }

    .parallax > use:nth-child(1) {
        animation-delay: -2s;
        animation-duration: 7s;
        fill: rgba(248, 252, 254, 0.7); /* #f8fcfeの半透明 */
    }

    .parallax > use:nth-child(2) {
        animation-delay: -3s;
        animation-duration: 10s;
        fill: #f8fcfe; /* #f8fcfe */
    }

    .parallax > use:nth-child(3) {
        animation-delay: -4s;
        animation-duration: 13s;
    }

    .parallax > use:nth-child(4) {
        animation-delay: -5s;
        animation-duration: 20s;
    }

    /* Service Page Specific Wave Styles */
    .service-page .waves {
        background-color: var(--color-coral-bg);
    }

    .service-page .waves .parallax > use:nth-child(1) {
        fill: rgba(229, 122, 97, 0.7);
    }

    .service-page .waves .parallax > use:nth-child(2) {
        fill: rgba(229, 122, 97, 1);
    }

    /* White Background Pages (Company, Member, Works) - PC */
    .company-page .waves .parallax > use:nth-child(1),
    .member-page .waves .parallax > use:nth-child(1),
    .works-page .waves .parallax > use:nth-child(1) {
        fill: rgb(240, 248, 252); /* 2枚目とほぼ同系統でわずかに濃い */
    }
}

/* --------------------------------------------------
   SP Styles (Max-width: 768px)
   -------------------------------------------------- */
@media (max-width: 768px) {
    /* 波のアニメーション */
    section.waves {
        height: 60px;
        min-height: 60px;
        max-height: 60px;
        width: 100%;
        position: absolute;
        bottom: 0;
        left: 0;
        z-index: 2;
        margin-bottom: -1px;
        background-color: transparent;
    }

    svg.waves {
        width: 100%;
        height: 100%;
    }

    /* ホームページの波のアニメーション */
    .home-page section.waves .parallax > use,
    section.waves .parallax > use {
        animation: move-forever 25s cubic-bezier(0.55, 0.5, 0.45, 0.5) infinite;
        will-change: transform;
        transform-origin: center center;
    }

    .home-page section.waves .parallax > use:nth-child(1),
    section.waves .parallax > use:nth-child(1) {
        animation-delay: -2s;
        animation-duration: 7s;
        fill: rgba(248, 252, 254, 0.7); /* #f8fcfeの半透明 */
    }

    .home-page section.waves .parallax > use:nth-child(2),
    section.waves .parallax > use:nth-child(2) {
        animation-delay: -3s;
        animation-duration: 10s;
        fill: #f8fcfe; /* #f8fcfeに変更 */
    }

    /* Service Page Specific Wave Styles (SP) */
    .service-page .waves {
        background-color: var(--color-coral-bg);
    }

    .service-page .waves .parallax > use:nth-child(1) {
        fill: rgba(229, 122, 97, 0.7);
    }

    .service-page .waves .parallax > use:nth-child(2) {
        fill: rgba(229, 122, 97, 1);
    }

    /* White Background Pages (Company, Member, Works) - SP */
    .company-page .waves .parallax > use:nth-child(1),
    .member-page .waves .parallax > use:nth-child(1),
    .works-page .waves .parallax > use:nth-child(1) {
        fill: rgb(240, 248, 252); /* 2枚目とほぼ同系統でわずかに濃い */
    }
}
/* ==========================================================================
   Gallery Section Styles (PC & Mobile)
   ========================================================================== */

/* --------------------------------------------------
   PC Styles (Min-width: 769px)
   Source: style.css (333-392行目)
   -------------------------------------------------- */
@media (min-width: 769px) {
    .gallery-section {
        width: 100%;
        padding: 5vw 0;
        background-color: #ffffff; /* Changed from var(--color-light-gray) to white */
        overflow-x: auto;
        position: relative;
        overflow: hidden;
    }

    .gallery-container {
        display: flex;
        justify-content: center;
        gap: 3vw;
        padding: 0 5vw;
        flex-wrap: nowrap;
    }

    /* ボックス（フレームとして機能） */
    .gallery-item {
        flex: 0 0 auto;
        width: 28vw;
        opacity: 0;
        transform: translateY(20px);
        transition: opacity 0.8s ease, transform 0.8s ease;
        aspect-ratio: 3 / 4; /* 縦長のカード形式 */
        border-radius: 12px;
        box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
        overflow: hidden; /* フレームとして機能 - はみ出し防止 */
        position: relative;
    }

    /* オレンジ色のボックス */
    .gallery-box-orange {
        background-color: #e78c6c;
    }

    /* 紺色のボックス */
    .gallery-box-navy {
        background-color: #263743;
    }

    /* グレー色のボックス */
    .gallery-box-gray {
        background-color: #888888;
    }

    /* ボックス内の英語テキスト（z-index: 2） */
    .gallery-text-english-inner {
        position: absolute;
        top: 5%; /* 上に移動 */
        left: 0;
        width: 300%; /* 3つのボックス分の幅 */
        text-align: left;
        z-index: 2; /* 背景の上、動画の下 */
        line-height: 1.2;
        display: block;
        padding: 0;
        box-sizing: border-box;
    }

    /* 各ボックスでのテキスト位置オフセット */
    /* 左ボックス（オレンジ）: 右にずらす */
    .gallery-box-orange .gallery-text-english-inner {
        left: 5vw;
    }

    /* 中央ボックス（紺）: 1ボックス分左にオフセット + 右にずらす */
    .gallery-box-navy .gallery-text-english-inner {
        left: calc(-100% - 3vw + 5vw);
    }

    /* 右ボックス（グレー）: 2ボックス分左にオフセット + 右にずらす */
    .gallery-box-gray .gallery-text-english-inner {
        left: calc(-200% - 6vw + 5vw);
    }

    /* マーキートラック（テキストを2回繰り返し） */
    .marquee-track {
        display: flex;
        width: fit-content;
        animation: marqueeSlide 20s linear infinite;
    }

    .gallery-text-english-inner p {
        display: flex;
        white-space: nowrap;
        font-size: calc(6.75vw * 1.65); /* 1.65倍に拡大 */
        font-family: var(--font-archetype, "Archetype", sans-serif);
        font-weight: 500;
        color: #ffffff;
        margin: 0;
        padding: 0 3vw;
        gap: 0.5vw;
    }

    .gallery-text-english-inner .text-word {
        display: inline-block;
    }

    /* 無限ループマーキーアニメーション */
    @keyframes marqueeSlide {
        0% {
            transform: translateX(0);
        }
        100% {
            transform: translateX(-50%);
        }
    }

    /* ボックス内の動画（z-index: 5、最前面） */
    .gallery-video {
        position: absolute;
        bottom: -5%;
        left: 50%;
        transform: translateX(-50%) scale(0.96);
        transform-origin: center bottom;
        width: 100%;
        height: 100%;
        object-fit: cover;
        object-position: center bottom;
        z-index: 5; /* 英語テキストより上 */
    }

    /* 各ボックスの動画位置調整 */
    .gallery-box-orange .gallery-video {
        bottom: -13%; /* 左：さらに下 */
    }

    .gallery-box-navy .gallery-video {
        bottom: -10%; /* 中央：もうちょっと下 */
    }

    .gallery-box-gray .gallery-video {
        bottom: -7%; /* 右 */
    }

    .gallery-item img {
        width: 100%;
        height: auto;
        border-radius: var(--border-radius-small);
        box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
    }

    /* 外部の英語テキスト（PC版では使用しない） */
    .gallery-text-english {
        display: none;
    }

    .gallery-text-english p {
        display: flex;
        white-space: nowrap;
        font-size: 6.75vw; /* 4.5vw × 1.5 = 6.75vw */
        font-family: var(--font-archetype, "Archetype", sans-serif);
        font-weight: 500;
        color: #ffffff;
        margin: 0;
        padding: 0;
        gap: 0.5vw;
    }

    .gallery-text-english .text-word {
        display: inline-block;
    }

    /* 各単語の配置を調整 */
    .gallery-text-english .word-dear {
        padding-left: 2vw;
    }

    .gallery-text-english .word-past {
        padding-left: 1vw;
    }

    .gallery-text-english .word-self {
        padding-left: 1vw;
    }

    .gallery-text-english .word-sns {
        padding-left: 2vw;
    }

    .gallery-text-english .word-is {
        padding-left: 1vw;
    }

    .gallery-text-english .word-your {
        padding-left: 0.5vw;
    }

    .gallery-text-english .word-stage {
        padding-left: 1vw;
    }

    /* 日本語テキスト（紺色の帯付き） */
    /* レイヤー4: 日本語テキスト（z-index: 15、最前面） */
    .gallery-text {
        position: absolute;
        bottom: 20%;
        left: 45%;
        transform: translateX(-50%);
        text-align: left;
        z-index: 15; /* 動画（z-index: 10）より上 */
        line-height: 1;
        display: block;
    }

    .gallery-text p {
        display: inline-block;
        white-space: nowrap;
        opacity: 0;
        transform: translateY(30px);
        transition: opacity 0.6s ease, transform 0.6s ease;
        font-size: 4.5vw;
        font-family: var(--font-japanese);
        background-color: var(--color-navy);
        color: #fff;
        padding: 0.5rem 1rem;
        margin: 0.5rem 0;
        border-radius: 8px;
    }

    .highlight-char {
        display: inline-block;
        transition: color 0.4s ease;
    }

    .anim-box.slidein.is-animated {
        animation: elegantReveal 1s cubic-bezier(0.2, 1, 0.3, 1) forwards;
    }

    .anim-box.slidein.line2.is-animated {
        animation-delay: 0.2s;
    }

    @keyframes elegantReveal {
        0% {
            opacity: 0;
            transform: translateY(30px);
            filter: blur(10px);
        }
        100% {
            opacity: 1;
            transform: translateY(0);
            filter: blur(0);
        }
    }
}

/* --------------------------------------------------
   SP Styles (Max-width: 768px)
   -------------------------------------------------- */
@media (max-width: 768px) {
    .gallery-section {
        padding: 10px 0 30px; /* 上の余白をさらに詰める */
        background-color: #ffffff;
        position: relative;
        overflow: hidden;
    }

    .gallery-section .container {
        padding: 0;
        width: 100%;
    }

    /* SP ギャラリーコンテナ（JS切り替え方式） */
    .gallery-container.sp-gallery {
        width: 92vw; /* 画面幅の92% */
        max-width: 420px;
        margin: 0 auto;
        position: relative;
        overflow: hidden; /* はみ出し防止 */
        aspect-ratio: 3 / 4.6; /* 中間サイズ（元5、短く4.2の中間） */
        border-radius: 12px; /* 角丸 */
    }

    /* SP版 背景図形（PC版と同じ形式） */
    .sp-gallery-box {
        position: absolute;
        top: 0;
        left: 0;
        width: 100%;
        height: 100%;
        border-radius: 12px; /* PC版と同じ角丸 */
        box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1); /* PC版と同じシャドウ */
        overflow: hidden;
        opacity: 0;
        transition: opacity 0.5s ease;
        z-index: 1;
    }

    .sp-gallery-box.active {
        opacity: 1;
    }

    /* 各色の図形 */
    .sp-box-orange {
        background-color: #e78c6c;
    }

    .sp-box-navy {
        background-color: #263743;
    }

    .sp-box-gray {
        background-color: #888888;
    }

    /* SP版 動画（3つ重ねてopacityで切り替え） - 旧方式 */
    .sp-gallery-video {
        position: absolute;
        bottom: -18%; /* もっと下に */
        left: 50%;
        transform: translateX(-50%) scale(0.96); /* 少し大きく */
        width: 120%; /* 横幅を広げて見切れ防止 */
        height: 100%;
        object-fit: cover;
        object-position: center bottom;
        z-index: 3;
        opacity: 0;
        transition: opacity 0.5s ease;
    }

    .sp-gallery-video.active {
        opacity: 1;
    }

    /* 2番目（紺）と3番目（グレー）の動画を少し大きく */
    .sp-gallery-video[data-index="1"],
    .sp-gallery-video[data-index="2"] {
        transform: translateX(-50%) scale(1.08);
    }

    /* SP版 単一動画（woman123.mp4用） */
    .sp-gallery-video-single {
        width: 100%;
        height: 100%;
        object-fit: cover;
        border-radius: 12px;
    }

    /* SP版 英語テキスト（1つだけ、常に流れ続ける） */
    .sp-gallery-text-english {
        position: absolute;
        top: 12%; /* 少し下げて文字が欠けないように */
        left: 0;
        width: 100%;
        z-index: 2;
        overflow: visible; /* 文字が欠けないように */
    }

    .sp-gallery-text-english .marquee-track {
        display: flex;
        width: fit-content;
        animation: spMarqueeSlide 20s linear infinite;
        margin: 0; /* 行間を詰める */
        line-height: 0.85; /* 行間を縮める */
    }

    .sp-gallery-text-english p {
        display: flex;
        white-space: nowrap;
        font-size: 126px; /* 84px × 1.5 = 126px（1.5倍） */
        font-family: var(--font-archetype, "Archetype", sans-serif);
        font-weight: 500;
        color: #ffffff;
        margin: 0;
        padding: 0 20px;
        gap: 8px;
        line-height: 0.85; /* 行間を縮める */
    }

    .sp-gallery-text-english .text-word {
        display: inline-block;
    }

    /* SP版 マーキーアニメーション */
    @keyframes spMarqueeSlide {
        0% {
            transform: translateX(0);
        }
        100% {
            transform: translateX(-50%);
        }
    }

    /* テキスト帯 (拝啓〜) */
    .gallery-text {
        position: absolute;
        bottom: 60px;
        left: 0;
        right: 0;
        width: 100%;
        display: flex;
        flex-direction: column;
        align-items: flex-start;
        padding-left: 15px;
        padding-right: 15px;
        gap: 5px;
        z-index: 10;
        text-align: left;
        pointer-events: none;
    }

    /* 各行: 左から右にスライドイン */
    .gallery-text p {
        background-color: #263743;
        color: #fff;
        font-family: var(--font-japanese);
        font-size: clamp(36px, 9vw, 54px); /* 1.5倍に拡大 */
        font-weight: 700;
        padding: 6px 12px;
        margin: 0;
        line-height: 1.2;
        display: inline-block;
        border-radius: 0;
        width: auto;
        white-space: nowrap;
        box-shadow: none;
        /* 初期状態: 非表示 + 左にオフセット */
        opacity: 0;
        transform: translateX(-100%);
    }

    /* ハイライト文字 */
    .gallery-text .highlight-char {
        display: inline-block;
        transition: color 0.4s ease;
    }

    /* is-animatedクラスで左から右にスライドイン */
    .gallery-text .anim-box.slidein.is-animated {
        animation: spSlideInFromLeft 0.8s cubic-bezier(0.25, 0.46, 0.45, 0.94) forwards;
    }

    .gallery-text .anim-box.slidein.line2.is-animated {
        animation-delay: 0.15s;
    }

    @keyframes spSlideInFromLeft {
        0% {
            opacity: 0;
            transform: translateX(-100%);
        }
        100% {
            opacity: 1;
            transform: translateX(0);
        }
    }

    .gallery-text .t-orange {
        color: #e78c6c;
    }
}

/* =========================================
   About Section - Cinematic Depth Typo
   ========================================= */

/* PC Styles (Min-width: 769px) */
@media (min-width: 769px) {
  .about-solar {
    position: relative;
    padding: 180px 0;
    background-color: #f8fbfe;
    color: #333;
    overflow: hidden;
    width: 100%;
    margin-bottom: 0;
    perspective: 1000px; /* Enable 3D space */
  }

/* --- Cinematic 3D Background --- */
.cinematic-bg-layer {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  z-index: 0;
  transform-style: preserve-3d;
  pointer-events: none;
  /* Slight vignette for cinematic feel */
  background: radial-gradient(circle at center, transparent 50%, rgba(37, 55, 66, 0.05) 100%);
}

.cine-track {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  white-space: nowrap;
  display: flex;
  align-items: center;
  gap: 100px; /* Spacing between words */
  width: 200%; /* Ensure coverage */
}

.cine-track span {
  font-family: var(--font-archetype, "Archetype", sans-serif);
  font-weight: 900;
  line-height: 1;
  display: block;
}

/* Layer 1: Background (Deep, Slow, Blurred) */
.layer-back {
  font-size: 15vw;
  color: rgba(37, 55, 66, 0.03); /* Extremely subtle navy */
  filter: blur(8px);
  transform: translate(-50%, -50%) translateZ(-200px) rotateX(10deg);
  animation: cineScroll 60s linear infinite;
}

/* =========================================
   About Section - Dual-Blob Fluid Visual
   ========================================= */

.solar-container {
  position: relative;
  z-index: 10;
  max-width: 1280px;
  width: 90%;
  margin: 0 auto;
  display: flex;
  align-items: center;
  justify-content: space-between;
  transform: translateZ(200px);
}

/* --- Visual Area --- */
.about-visual-blobs {
  position: relative;
  width: 50%;
  height: 600px;
}

/* Base Mask Style */
.blob-mask {
  position: absolute;
  overflow: hidden;
  box-shadow: 10px 15px 40px rgba(37, 55, 66, 0.15);
  transform: translateZ(0);
  will-change: border-radius, transform;
  background: #fff; /* Ensure bg if image loads slow */
}

/* --- High-Quality "Puyon-Puyon" Animation --- */
/* Morphing ONLY (Transform handled by JS for interaction) */
@keyframes puyonMorph {
  0% {
    border-radius: 60% 40% 30% 70% / 60% 30% 70% 40%;
  }
  33% {
    border-radius: 40% 60% 70% 30% / 40% 50% 60% 50%;
  }
  66% {
    border-radius: 70% 30% 20% 80% / 70% 20% 80% 30%;
  }
  100% {
    border-radius: 60% 40% 30% 70% / 60% 30% 70% 40%;
  }
}

/* Mask 1: Main (Large) */
.mask-1 {
  width: 420px;
  height: 420px;
  top: 50%;
  left: 12%; /* Adjusted from 5% to 12% to fix "too left" */
  margin-top: -210px; /* Center Vertical */
  z-index: 2;
  animation: puyonMorph 12s ease-in-out infinite;
}

/* Mask 2: Sub (Medium, Floating near) */
.mask-2 {
  width: 240px;
  height: 240px;
  bottom: 15%; /* Slight adjustment */
  right: 5%;
  z-index: 3; /* Overlaps Main slightly */
  animation: puyonMorph 9s ease-in-out infinite reverse; /* Different speed & direction */
  opacity: 0.95; /* Slight transparency for depth? No, stick to solid for clean look */
}

/* --- Internal Image Positioning --- */
/* Reset offsets for independent images */
.flux-group {
  position: absolute;
  width: 100%; 
  height: 100%; 
  top: 0; 
  left: 0;
}

/* Offsets removed - images fill their own blobs naturally */
.mask-1 .flux-group, .mask-2 .flux-group {
    top: 0; left: 0;
}

/* Flux Item Styles */
.flux-item {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  opacity: 0;
  z-index: 1;
  will-change: opacity, transform;
}

.flux-item img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  /* Add subtle movement inside the image too */
  animation: innerFloat 20s linear infinite; 
}

@keyframes innerFloat {
    0% { transform: scale(1.1) translate(0, 0); }
    50% { transform: scale(1.15) translate(-2%, -2%); }
    100% { transform: scale(1.1) translate(0, 0); }
}

/* Transitions */
.flux-item.is-active {
  z-index: 2;
  opacity: 1;
  animation: softMeltIn 1.5s ease-out forwards;
}

.flux-item.is-exiting {
  z-index: 3;
  animation: softMeltOut 1.5s ease-out forwards;
}

/* "Soft Melt" Transition Effect (Gentle & Fluid) */
@keyframes softMeltIn {
    0% { opacity: 0; filter: blur(8px); transform: scale(1.05); }
    100% { opacity: 1; filter: blur(0px); transform: scale(1); }
}

@keyframes softMeltOut {
    0% { opacity: 1; filter: blur(0px); transform: scale(1); }
    100% { opacity: 0; filter: blur(8px); transform: scale(0.95); }
}


/* --- Typography Update (Watermark Style - No Stroke) --- */
.layer-mid {
  font-size: 10vw;
  color: rgba(37, 55, 66, 0.04); /* Navy Fill */
  -webkit-text-stroke: 0; /* Remove stroke */
  transform: translate(-50%, -50%) translateZ(0);
  animation: cineScroll 40s linear infinite reverse;
}

/* Layer 3: Foreground (Close, Fast, Blurred) */
.layer-front {
  font-size: 20vw;
  color: rgba(229, 122, 97, 0.05); /* Subtle Orange */
  filter: blur(12px);
  transform: translate(-50%, -50%) translateZ(100px) rotateX(-5deg);
  animation: cineScroll 25s linear infinite;
  mix-blend-mode: multiply;
}

@keyframes cineScroll {
  0% { transform: translate(-20%, -50%) translateZ(var(--z-pos, 0)); }
  100% { transform: translate(-80%, -50%) translateZ(var(--z-pos, 0)); }
}

/* Specific Z-index fix for animation keyframes */
.layer-back { --z-pos: -200px; }
.layer-mid { --z-pos: 0; }
.layer-front { --z-pos: 100px; }

/* --- Content Area (Right) --- */
.solar-content-area {
  width: 45%;
  padding-left: 0; /* Reset padding to standard */
}

.solar-header {
  margin-bottom: 40px;
}

.solar-label {
  display: block;
  font-family: var(--font-archetype, "Archetype", sans-serif);
  font-size: 1rem;
  letter-spacing: 0.2em;
  color: #ff7e5f; /* Coral */
  margin-bottom: 10px;
  font-weight: 700;
}

.solar-title {
  font-family: var(--font-archetype, "Archetype", sans-serif);
  font-size: clamp(3rem, 5vw, 5rem);
  font-weight: 500;
  color: var(--color-navy, #253742);
  line-height: 1;
  margin: 0;
}

.solar-message {
  border-left: 2px solid #eef2f6; /* Subtle border */
  padding-left: 30px;
}

.solar-catch {
  font-family: var(--font-japanese, "Noto Sans JP", sans-serif);
  font-size: 1.6rem;
  font-weight: 700;
  color: var(--color-navy, #253742);
  margin-bottom: 30px;
  line-height: 1.6;
}

.marker-highlight {
  background: linear-gradient(transparent 60%, rgba(255, 222, 89, 0.6) 60%); /* Yellow Marker */
  padding: 0 4px;
}

.solar-text-body p {
  font-family: var(--font-japanese, "Noto Sans JP", sans-serif);
  font-size: 1rem;
  font-weight: 300;
  line-height: 2;
  color: #55606b; /* Soft Gray */
  margin-bottom: 25px;
}

/* --- Button --- */
.btn-solar {
  display: inline-flex;
  align-items: center;
  justify-content: space-between;
  padding: 12px 35px;
  background: #fff;
  color: var(--color-navy, #253742);
  text-decoration: none;
  border-radius: 50px;
  font-family: var(--font-archetype, "Archetype", sans-serif);
  font-size: 1.1rem;
  font-weight: 500;
  box-shadow: 0 5px 20px rgba(0,0,0,0.05);
  border: 1px solid rgba(0,0,0,0.05);
  transition: all 0.3s ease;
  margin-top: 20px;
  position: relative;
  overflow: hidden;
  z-index: 1;
}

/* Slide Fill Animation */
.btn-solar::before {
  content: "";
  position: absolute;
  top: 0; left: 0;
  width: 0; height: 100%;
  background: #e57a61; /* Orange fill */
  transition: width 0.4s cubic-bezier(0.25, 1, 0.5, 1);
  z-index: -1;
}

.btn-solar:hover::before {
  width: 100%;
}

.btn-solar:hover {
  box-shadow: 0 10px 30px rgba(229, 122, 97, 0.4);
  transform: translateY(-2px);
  color: #ffffff; /* Text becomes white */
  border-color: #e57a61;
}

.btn-solar .icon-circle-arrow {
  display: inline-block;
  width: 24px;
  height: 24px;
  background: #eef2f6;
  border-radius: 50%;
  margin-left: 15px;
  position: relative;
  transition: all 0.3s ease;
  z-index: 2;
}

.btn-solar .icon-circle-arrow::after {
  content: "";
  position: absolute;
  top: 50%;
  left: 50%;
  width: 6px;
  height: 6px;
  border-top: 2px solid var(--color-navy, #253742);
  border-right: 2px solid var(--color-navy, #253742);
  transform: translate(-60%, -50%) rotate(45deg);
  transition: border-color 0.3s ease;
}

.btn-solar:hover .icon-circle-arrow {
  background: #ffffff; /* Arrow bg becomes white */
  transform: translateX(5px);
}

.btn-solar:hover .icon-circle-arrow::after {
  border-color: #e57a61; /* Arrow color becomes orange */
}

/* --- Advanced Reveal Animation --- */
.reveal-up {
  opacity: 0;
  transform: translateY(40px);
  filter: blur(3px);
  transition: 
    opacity 1s cubic-bezier(0.16, 1, 0.3, 1),
    transform 1s cubic-bezier(0.16, 1, 0.3, 1),
    filter 0.8s ease-out;
}

.reveal-up.is-visible {
  opacity: 1;
  transform: translateY(0);
  filter: blur(0);
}

/* 各要素に独自のアニメーション効果 */
.solar-label.reveal-up {
  transform: translateY(20px) translateX(-10px);
}

.solar-label.reveal-up.is-visible {
  transform: translateY(0) translateX(0);
}

.solar-title.reveal-up {
  transform: translateY(50px) scale(0.97);
  transition: 
    opacity 1.2s cubic-bezier(0.16, 1, 0.3, 1),
    transform 1.2s cubic-bezier(0.16, 1, 0.3, 1),
    filter 1s ease-out;
}

.solar-title.reveal-up.is-visible {
  transform: translateY(0) scale(1);
}

.solar-catch.reveal-up {
  transform: translateY(35px);
}

.solar-catch.reveal-up.is-visible {
  transform: translateY(0);
}

.solar-btn-wrap.reveal-up {
  transform: translateY(30px) scale(0.95);
}

.solar-btn-wrap.reveal-up.is-visible {
  transform: translateY(0) scale(1);
}

  .delay-100 { transition-delay: 0.15s; }
  .delay-200 { transition-delay: 0.3s; }
  .delay-300 { transition-delay: 0.45s; }
  .delay-400 { transition-delay: 0.6s; }
}

/* Responsive */
@media (max-width: 768px) {
  .about-solar {
    padding: 56px 0; /* 80px × 0.7 = 56px */
    background-color: #f8fbfe;
    overflow: hidden;
    position: relative;
    min-height: auto;
  }

  .about-solar .container {
    padding: 0 20px;
    position: relative;
    z-index: 2;
  }

  .cinematic-bg-layer {
    display: none;
  }

  .solar-container {
    display: block;
    position: static;
  }

  /* アニメーション定義（視認性強化版） */
  @keyframes blob-morph {
    0% { border-radius: 60% 40% 30% 70% / 60% 30% 70% 40%; }
    25% { border-radius: 30% 70% 70% 30% / 30% 30% 70% 70%; }
    50% { border-radius: 50% 50% 30% 70% / 50% 50% 30% 60%; }
    75% { border-radius: 80% 20% 50% 50% / 40% 60% 40% 60%; }
    100% { border-radius: 60% 40% 30% 70% / 60% 30% 70% 40%; }
  }

  /* 画像エリア */
  .about-visual-blobs {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    margin: 0;
    pointer-events: none;
    z-index: 0;
    opacity: 0.8;
    display: block;
    overflow: hidden;
  }

  .blob-mask {
    position: absolute;
    overflow: hidden;
    box-shadow: none;
    will-change: border-radius, transform;
  }

  /* メイン画像: 右上（サイズは元のまま、配置位置のみ縮小） */
  .mask-1 {
    width: 320px;
    height: 320px;
    top: -29.4px; /* -60px × 0.49 = -29.4px */
    right: -39.2px; /* -80px × 0.49 = -39.2px */
    left: auto;
    z-index: 1;
    animation: blob-morph 6s ease-in-out infinite;
  }

  /* サブ画像: 左下（サイズは元のまま、配置位置のみ縮小） */
  .mask-2 {
    display: block;
    width: 240px;
    height: 240px;
    bottom: -9.8px; /* -20px × 0.49 = -9.8px */
    left: -19.6px; /* -40px × 0.49 = -19.6px */
    top: auto;
    right: auto;
    z-index: 1;
    border: none;
    opacity: 0.9;
    animation: blob-morph 8s ease-in-out infinite reverse;
  }

  .mask-3 {
    display: none;
  }

  /* ガラスプレートデザイン（最先端ミニマル・研ぎ澄まし版） */
  .solar-content-area {
    display: block;
    position: relative;
    z-index: 2;
    width: 100%;
    max-width: 375px;
    margin: 0 auto 10.5px; /* 15px × 0.7 = 10.5px */
    background-color: rgba(255, 255, 255, 0.65);
    backdrop-filter: blur(24px);
    -webkit-backdrop-filter: blur(24px);
    border: 0.5px solid rgba(255, 255, 255, 0.6);
    border-radius: 11.2px; /* 16px × 0.7 = 11.2px */
    box-shadow: 0 20px 50px rgba(37, 55, 66, 0.08);
    padding: 21px 12px; /* 30px × 0.7 = 21px */
  }

  /* タイトル（ガラス内） */
  .solar-header {
    margin-bottom: 16.8px; /* 24px × 0.7 = 16.8px */
    padding: 0;
    text-align: center;
    border: none;
    background: none;
    box-shadow: none;
    backdrop-filter: none;
    width: 100%;
    order: unset;
  }

  .solar-label {
    font-family: var(--font-archetype, "Archetype", sans-serif);
    font-size: 10px;
    letter-spacing: 0.2em;
    margin-bottom: 8px;
    opacity: 0.7;
    font-weight: 500; /* Archetype Renner Medium */
  }

  .solar-title {
    font-family: var(--font-archetype, "Archetype", sans-serif);
    font-size: 36px;
    letter-spacing: 0.05em;
    font-weight: 500; /* Archetype Renner Medium */
  }

  /* レスポンシブ版アニメーション強化 */
  .reveal-up {
    opacity: 0;
    transform: translateY(30px);
    filter: blur(2px);
    transition: 
      opacity 0.9s cubic-bezier(0.16, 1, 0.3, 1),
      transform 0.9s cubic-bezier(0.16, 1, 0.3, 1),
      filter 0.7s ease-out;
  }

  .reveal-up.is-visible {
    opacity: 1;
    transform: translateY(0);
    filter: blur(0);
  }

  .solar-label.reveal-up {
    transform: translateY(15px);
  }

  .solar-title.reveal-up {
    transform: translateY(35px) scale(0.98);
    transition: 
      opacity 1s cubic-bezier(0.16, 1, 0.3, 1),
      transform 1s cubic-bezier(0.16, 1, 0.3, 1),
      filter 0.8s ease-out;
  }

  .solar-title.reveal-up.is-visible {
    transform: translateY(0) scale(1);
  }

  .solar-btn-wrap.reveal-up {
    transform: translateY(25px) scale(0.96);
  }

  .solar-btn-wrap.reveal-up.is-visible {
    transform: translateY(0) scale(1);
  }

  /* 本文（ガラス内） */
  .solar-message {
    padding: 0;
    margin: 0;
    text-align: left;
    border: none;
    background: none;
    box-shadow: none;
    backdrop-filter: none;
    width: 100%;
    order: unset;
  }

  /* キャッチコピー（2行強制） */
  .solar-catch {
    font-size: 18px;
    line-height: 1.8;
    margin-bottom: 14px; /* 20px × 0.7 = 14px */
    font-weight: 700;
    color: var(--color-navy);
    width: 100%;
  }

  .solar-catch span {
    display: inline-block;
    white-space: nowrap;
  }
  
  .solar-catch-line-1 {
    transform: scale(0.96);
    transform-origin: center;
    width: 100%;
  }

  .solar-catch-line-2 {
    margin-top: 4px;
  }

  .marker-highlight {
    background: linear-gradient(transparent 60%, rgba(255, 222, 89, 0.4) 60%);
    padding: 0 2px;
  }

  .solar-text-body p {
    font-size: 13px;
    line-height: 1.75;
    letter-spacing: 0.08em;
    color: #263743;
    font-weight: 500;
    text-align: justify;
    margin-bottom: 1.5em;
  }

  /* ボタン */
  .solar-btn-wrap {
    position: relative;
    bottom: auto;
    left: auto;
    transform: none;
    width: 100%;
    text-align: center;
    z-index: 2;
    margin-top: 32px;
    padding-bottom: 20px;
  }

  .btn-solar {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 12px 35px;
    background: #fff;
    color: var(--color-navy, #253742);
    text-decoration: none;
    border-radius: 50px;
    font-family: var(--font-archetype, "Archetype", sans-serif);
    font-size: 1.1rem;
    font-weight: 500; /* Archetype Renner Medium */
    box-shadow: 0 5px 20px rgba(0,0,0,0.05);
    border: 1px solid rgba(0,0,0,0.05);
    margin-top: 20px;
    width: auto;
    min-width: 240px; /* 200px × 1.2 = 240px */
  }

  .btn-solar .icon-circle-arrow {
    display: inline-block;
    width: 24px;
    height: 24px;
    background: #eef2f6;
    border-radius: 50%;
    margin-left: 15px;
    position: relative;
    z-index: 2;
  }

  .btn-solar .icon-circle-arrow::after {
    content: "";
    position: absolute;
    top: 50%;
    left: 50%;
    width: 6px;
    height: 6px;
    border-top: 2px solid var(--color-navy, #253742);
    border-right: 2px solid var(--color-navy, #253742);
    transform: translate(-60%, -50%) rotate(45deg);
  }

  .flux-group {
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
  }

  .flux-item,
  .flux-item img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
  }

}

/* =========================================
   About Company Section Styles (PC & Mobile)
   ========================================= */

/* --------------------------------------------------
   PC Styles (Min-width: 769px)
   -------------------------------------------------- */
@media (min-width: 769px) {
    .about-company-contents {
        position: relative;
        width: 100%;
        padding: 40px 0 0;
        z-index: 1;
        overflow: hidden;
    }

    .about-company-block {
        padding: 44px 0;
        color: var(--color-white);
        max-height: 650px;
        height: 100vh !important;
        border-radius: var(--border-radius-large) var(--border-radius-large) 0 0;
    }

    .about-company-container {
        display: flex;
        justify-content: space-between;
        gap: 60px;
        padding: 0 3%;
    }

    .about-company-left {
        display: flex;
        flex-direction: column;
        gap: 20px;
    }

    .about-company-subtitle {
        font-size: clamp(1.125rem, 1.25vw, 1.25rem);
        line-height: 40px;
        font-family: var(--font-archetype);
        font-weight: lighter;
    }

    .about-company-subtitle-big {
        font-size: clamp(1.75rem, 2.5vw, 2.5rem);
        vertical-align: bottom;
    }

    .about-company-content {
        display: flex;
        gap: 5vw;
        position: relative;
    }

    .about-company-content h2 {
        font-size: clamp(3rem, 6vw, 5.938rem);
        font-family: var(--font-archetype);
        font-weight: 500;
        margin: 0;
        letter-spacing: 0.1rem;
        margin-left: 1%;
        white-space: nowrap;
    }

    .about-company-text {
        font-family: var(--font-japanese);
        flex: 1;
    }

    .about-company-text h3 {
        font-size: clamp(1.5rem, 1.875vw, 1.875rem);
        margin-bottom: 48px;
        font-weight: 500;
        letter-spacing: 0.1rem;
    }

    .about-company-text p {
        font-size: clamp(0.875rem, 1vw, 1rem);
        line-height: 1.8;
        margin-bottom: 48px;
        font-weight: 500;
    }

    .about-company-right picture {
        display: block;
        width: 100%;
    }

    .about-company-right img {
        width: 26vw;
        max-width: clamp(18.75rem, 40vw, 31.25rem);
        border-radius: var(--border-radius-small);
        margin-top: 3rem;
    }

    /* Service Block Colors */
    #about-company-01 {
        background-color: var(--color-orange);
        z-index: 1;
    }

    #about-company-02 {
        background-color: var(--color-white);
        color: var(--color-navy);
        z-index: 2;
    }

    #about-company-03 {
        background-color: var(--color-navy);
        color: var(--color-orange);
        z-index: 3;
    }

    #about-company-02 .about-company-subtitle {
        color: var(--color-navy);
    }

    #about-company-03 .about-company-subtitle {
        color: var(--color-orange);
    }

    /* Service Button */
    .about-company-btn a {
        position: relative;
        display: inline-flex;
        align-items: center;
        justify-content: space-between;
        width: auto;
        min-width: 200px;
        padding: 12px 35px;
        border-radius: 50px;
        font-family: var(--font-archetype);
        font-weight: 500;
        font-size: 1.1rem;
        text-decoration: none;
        background: transparent;
        border: 1.5px solid var(--btn-border);
        color: var(--btn-text);
        overflow: hidden;
        z-index: 1;
        transition: all 0.3s ease;
        box-shadow: 0 5px 20px rgba(0,0,0,0.05);
    }

    .about-company-btn a::before {
        content: "";
        position: absolute;
        top: 0;
        left: 0;
        width: 0;
        height: 100%;
        background: var(--btn-bg-hover);
        transition: width 0.4s cubic-bezier(0.25, 1, 0.5, 1);
        z-index: -1;
    }

    .about-company-btn a:hover::before {
        width: 100%;
    }

    .about-company-btn a:hover {
        color: var(--btn-hover-text) !important;
        border-color: var(--btn-bg-hover);
        box-shadow: 0 10px 30px rgba(0, 0, 0, 0.1);
        transform: translateY(-2px);
    }

    .about-company-btn a .txt {
        position: relative;
        z-index: 2;
    }

    .about-company-btn a .icon-circle-arrow {
        display: inline-block;
        width: 24px;
        height: 24px;
        background: var(--arrow-bg);
        border-radius: 50%;
        position: relative;
        transition: all 0.3s ease;
        flex-shrink: 0;
        z-index: 2;
        margin-left: 15px;
    }

    .about-company-btn a .icon-circle-arrow::after {
        content: "";
        position: absolute;
        top: 50%;
        left: 50%;
        width: 6px;
        height: 6px;
        border-top: 2px solid var(--arrow-color);
        border-right: 2px solid var(--arrow-color);
        transform: translate(-60%, -50%) rotate(45deg);
        transition: border-color 0.3s ease;
    }

    .about-company-btn a:hover .icon-circle-arrow {
        background: var(--arrow-bg-hover);
        transform: translateX(5px);
    }

    .about-company-btn a:hover .icon-circle-arrow::after {
        border-color: var(--arrow-color-hover);
    }

    /* Color Themes */
    .btn-white {
        --btn-border: #ffffff;
        --btn-text: #ffffff;
        --btn-bg-hover: #ffffff;
        --btn-hover-text: var(--color-orange);
        --arrow-bg: rgba(255, 255, 255, 0.2);
        --arrow-color: #ffffff;
        --arrow-bg-hover: var(--color-orange);
        --arrow-color-hover: #ffffff;
    }

    .btn-navy {
        --btn-border: var(--color-navy);
        --btn-text: var(--color-navy);
        --btn-bg-hover: var(--color-navy);
        --btn-hover-text: #ffffff;
        --arrow-bg: #eef2f6;
        --arrow-color: var(--color-navy);
        --arrow-bg-hover: #ffffff;
        --arrow-color-hover: var(--color-navy);
    }

    .btn-orange-white {
        --btn-border: var(--color-orange);
        --btn-text: #ffffff;
        --btn-bg-hover: var(--color-orange);
        --btn-hover-text: #ffffff;
        --arrow-bg: rgba(255, 255, 255, 0.1);
        --arrow-color: #ffffff;
        --arrow-bg-hover: #ffffff;
        --arrow-color-hover: var(--color-orange);
    }

    .about-company-content h2,
    .about-company-subtitle,
    .about-company-subtitle-big {
        font-family: var(--font-archetype);
        font-weight: 500;
    }

    .about-company-text h3 {
        font-weight: 500;
    }
}

/* --------------------------------------------------
   SP Styles (Max-width: 768px)
   GSAP ScrollTriggerを使用（PCと同じ挙動）
   -------------------------------------------------- */
@media (max-width: 768px) {
    /* 1. 土台のスクロール領域 */
    .about-company-contents {
        display: block;
        width: 100%;
        /* paddingを個別に設定（padding: 0との競合を避けるため） */
        padding-top: calc(8vw + 35px); /* ヘッダーの高さ分（上下padding 4vw × 2 + ロゴ高さ35px） */
        padding-right: 0;
        padding-bottom: 0;
        padding-left: 0;
        background-color: #f8fbfe;
        overflow: visible;
        contain: none;
        clip-path: none;
        transform: none;
        z-index: 1;
        /* 画面全体の縦幅（100vh）からヘッダーの高さを引いたサイズ */
        min-height: calc(100vh - var(--header-height, calc(8vw + 35px)));
    }

    /* 2. カードの設定（GSAP ScrollTriggerでpinされる） */
    .about-company-block {
        width: 100%;
        margin: 0;
        padding: 30px 24px 40px;
        box-sizing: border-box;
        border-radius: 24px 24px 0 0;
        box-shadow: 0 -10px 30px rgba(0,0,0,0.15);
        overflow: hidden;
        transform: none;
        opacity: 1;
        visibility: visible;
        /* 画面全体の縦幅（100vh）からヘッダーの高さを引いたサイズをカードの縦幅に指定 */
        height: calc(100vh - var(--header-height, calc(8vw + 35px)));
    }

    /* 1番目のカードの上端をヘッダーの底辺に正確に合わせる */
    .about-company-block:first-child {
        margin-top: 0; /* padding-topで調整済みのため、追加のマージンは不要 */
    }

    /* 最後のカード */
    .about-company-block:last-child {
        position: relative;
        /* 画面全体の縦幅（100vh）からヘッダーの高さを引いたサイズをカードの縦幅に指定 */
        height: calc(100vh - var(--header-height, calc(8vw + 35px)));
        margin-bottom: 0;
    }

    /* 3. Gridレイアウト再構築 */
    .about-company-container {
        display: grid;
        width: 100%;
        height: 100%;
        grid-template-rows: auto auto auto auto auto 1fr;
        grid-template-columns: 100%;
        gap: 0;
        align-content: start;
        padding-bottom: 20px;
    }

    /* 中間ラッパー無効化 (display: contents) */
    .about-company-left,
    .about-company-content,
    .about-company-text,
    .about-company-right {
        display: contents;
    }

    /* --- 各要素の配置 --- */

    /* 1. Subtitle */
    .about-company-subtitle {
        grid-row: 1;
        text-align: left;
        margin: 0;
        padding-bottom: 0;
        font-family: var(--font-archetype, "Archetype", sans-serif);
        font-size: 10px;
        letter-spacing: 0.05em;
        font-weight: 500; /* Archetype Renner Medium */
        color: inherit;
        display: flex;
        align-items: baseline;
        gap: 8px;
        line-height: 1.2;
    }

    .about-company-subtitle-big {
        font-size: 18px;
        font-weight: 500; /* Archetype Renner Medium */
    }

    /* 2. Main Title */
    .about-company-content h2 {
        grid-row: 2;
        text-align: left;
        font-family: var(--font-archetype, "Archetype", sans-serif);
        font-size: 69px; /* 46px × 1.5 = 69px */
        margin: 0 0 8px;
        line-height: 1.1;
        letter-spacing: 0.02em;
        font-weight: 500; /* Archetype Renner Medium */
    }

    /* 3. Image (16:11 → 縦幅をさらに短く) */
    .about-company-right picture,
    .about-company-right img {
        grid-row: 3;
        display: block;
        width: 100%;
        height: auto;
        aspect-ratio: 24 / 11; /* 縦幅をさらに短く */
        object-fit: cover;
        border-radius: 20px;
        margin: 0 auto 12px;
        box-shadow: none;
        opacity: 1;
        visibility: visible;
        max-height: none;
    }

    /* 4. Text Title */
    .about-company-text h3 {
        grid-row: 4;
        order: 4;
        font-family: "Noto Sans JP", sans-serif;
        font-size: 20px;
        line-height: 1.5;
        margin: 0 0 16px;
        text-align: left;
        font-weight: 700;
        letter-spacing: 0.05em;
    }

    .about-company-text h3 br {
        display: block;
    }

    /* 5. Text Body */
    .about-company-text p {
        grid-row: 5;
        order: 5;
        font-family: "Noto Sans JP", sans-serif;
        font-size: 12px;
        line-height: 1.8;
        margin: 0 0 24px;
        text-align: justify;
        font-weight: 500;
        opacity: 1;
        letter-spacing: 0.02em;
    }

    /* 6. Button (Wide Capsule) */
    .about-company-btn {
        grid-row: 6;
        order: 6;
        display: flex;
        justify-content: center;
        align-items: flex-start;
        width: 100%;
        padding-top: 0;
        padding-bottom: 10px;
        margin-top: 0;
    }

    .about-company-btn a {
        position: relative;
        display: inline-flex;
        align-items: center;
        justify-content: center;
        width: auto;
        min-width: 240px; /* 200px × 1.2 = 240px */
        padding: 12px 35px;
        border-radius: 50px;
        font-family: var(--font-archetype, "Archetype", sans-serif);
        font-weight: 500; /* Archetype Renner Medium */
        font-size: 1.1rem;
        text-decoration: none;
        background: transparent;
        border: 1.5px solid var(--btn-border);
        color: var(--btn-text);
        overflow: hidden;
        z-index: 1;
        box-shadow: 0 5px 20px rgba(0,0,0,0.05);
    }

    .about-company-btn a .txt {
        position: relative;
        z-index: 2;
    }

    .about-company-btn a .icon-circle-arrow {
        display: inline-block;
        width: 24px;
        height: 24px;
        background: var(--arrow-bg);
        border-radius: 50%;
        position: relative;
        flex-shrink: 0;
        z-index: 2;
        margin-left: 15px;
    }

    .about-company-btn a .icon-circle-arrow::after {
        content: "";
        position: absolute;
        top: 50%;
        left: 50%;
        width: 6px;
        height: 6px;
        border-top: 2px solid var(--arrow-color);
        border-right: 2px solid var(--arrow-color);
        transform: translate(-60%, -50%) rotate(45deg);
    }

    /* Color Themes */
    .btn-white {
        --btn-border: #ffffff;
        --btn-text: #ffffff;
        --btn-bg-hover: #ffffff;
        --btn-hover-text: var(--color-orange);
        --arrow-bg: rgba(255, 255, 255, 0.2);
        --arrow-color: #ffffff;
        --arrow-bg-hover: var(--color-orange);
        --arrow-color-hover: #ffffff;
    }

    .btn-navy {
        --btn-border: var(--color-navy);
        --btn-text: var(--color-navy);
        --btn-bg-hover: var(--color-navy);
        --btn-hover-text: #ffffff;
        --arrow-bg: #eef2f6;
        --arrow-color: var(--color-navy);
        --arrow-bg-hover: #ffffff;
        --arrow-color-hover: var(--color-navy);
    }

    .btn-orange-white {
        --btn-border: var(--color-orange);
        --btn-text: #ffffff;
        --btn-bg-hover: var(--color-orange);
        --btn-hover-text: #ffffff;
        --arrow-bg: rgba(255, 255, 255, 0.1);
        --arrow-color: #ffffff;
        --arrow-bg-hover: #ffffff;
        --arrow-color-hover: var(--color-orange);
    }

    /* --- Colors --- */
    /* Service 01 (Orange) */
    #about-company-01 {
        background-color: #f0906d;
        z-index: 10;
    }

    #about-company-01 * {
        color: #ffffff;
    }

    #about-company-01 h2 {
        font-family: var(--font-archetype, "Archetype", sans-serif);
        font-weight: 500;
        font-size: 36px;
    }

    #about-company-01 .about-company-btn a {
        --btn-border: #ffffff;
        --btn-text: #ffffff;
        --btn-bg-hover: #ffffff;
        --btn-hover-text: var(--color-orange);
        --arrow-bg: rgba(255, 255, 255, 0.2);
        --arrow-color: #ffffff;
        --arrow-bg-hover: var(--color-orange);
        --arrow-color-hover: #ffffff;
    }

    /* Service 02 (White) */
    #about-company-02 {
        background-color: #ffffff;
        z-index: 20;
    }

    #about-company-02 .about-company-subtitle {
        color: #263743;
    }

    #about-company-02 h2,
    #about-company-02 h3,
    #about-company-02 p {
        color: #263743;
    }

    #about-company-02 h2 {
        font-family: var(--font-archetype, "Archetype", sans-serif);
        font-weight: 500;
        font-size: 36px;
    }

    #about-company-02 .about-company-btn a {
        --btn-border: var(--color-navy);
        --btn-text: var(--color-navy);
        --btn-bg-hover: var(--color-navy);
        --btn-hover-text: #ffffff;
        --arrow-bg: #eef2f6;
        --arrow-color: var(--color-navy);
        --arrow-bg-hover: #ffffff;
        --arrow-color-hover: var(--color-navy);
    }

    /* Service 03 (Navy) */
    #about-company-03 {
        background-color: #263743;
        z-index: 30;
    }

    #about-company-03 .about-company-subtitle {
        color: #ffffff;
    }

    #about-company-03 h2,
    #about-company-03 p {
        color: #ffffff;
    }

    #about-company-03 h2 {
        font-family: var(--font-archetype, "Archetype", sans-serif);
        font-weight: 500;
        font-size: 36px;
    }

    #about-company-03 h3 {
        color: #ffffff;
    }

    #about-company-03 .about-company-btn a {
        --btn-border: #ffffff;
        --btn-text: #ffffff;
        --btn-bg-hover: #ffffff;
        --btn-hover-text: var(--color-orange);
        --arrow-bg: rgba(255, 255, 255, 0.2);
        --arrow-color: #ffffff;
        --arrow-bg-hover: var(--color-orange);
        --arrow-color-hover: #ffffff;
    }
}


/* =========================================
   News Section Styles (PC & Mobile)
   ========================================= */

/* --------------------------------------------------
   PC Styles (Min-width: 769px)
   -------------------------------------------------- */
@media (min-width: 769px) {
    .news-section {
        padding: clamp(3rem, 5vw, 5.6rem) 0;
        background-color: #fff;
    }

    .news-section .container {
        padding: 0 2rem;
    }

    .news-list {
        display: flex;
        flex-direction: column;
        gap: 0;
    }

    .news-item {
        padding: 20px 0;
        border-bottom: 1px solid #eee;
    }

    .news-item:last-child {
        border-bottom: none;
    }

    .news-date {
        font-size: 12px;
        color: #888;
        margin-bottom: 8px;
    }

    .news-title {
        font-size: 14px;
        line-height: 1.7;
        font-weight: 500;
    }
}

/* --------------------------------------------------
   SP Styles (Max-width: 768px)
   -------------------------------------------------- */
@media (max-width: 768px) {
    .news-section {
        padding: 56px 0;
        background-color: #fff;
    }

    .news-section .container {
        padding: 0 16px;
    }

    .news-list {
        display: flex;
        flex-direction: column;
        gap: 0;
    }

    .news-item {
        padding: 20px 0;
        border-bottom: 1px solid #eee;
    }

    .news-item:last-child {
        border-bottom: none;
    }

    .news-date {
        font-size: 12px;
        color: #888;
        margin-bottom: 8px;
    }

    .news-title {
        font-size: 14px;
        line-height: 1.7;
        font-weight: 500;
    }
}

/* =========================================
   Common Slider Styles (Works & Blog)
   ========================================= */

/* --------------------------------------------------
   PC Styles (Min-width: 769px)
   -------------------------------------------------- */
@media (min-width: 769px) {
    /* 1. Common Layout & Container */
    #works,
    .work-container,
    #blog,
    .works-list-section,
    .blog-container {
        padding: clamp(3rem, 5vw, 5.6rem) 0;
        position: relative;
        z-index: 0;
        width: 100%;
        max-width: 1140px;
        margin: 0 auto;
        box-sizing: border-box;
        background-color: #f8fcfe; /* Default background for blog/others */
    }

    /* Works Section Specific - Pure White */
    #works,
    .work-container {
        background-color: #ffffff; /* #FFFFFF */
    }

    /* Blog Section Specific */
    #blog,
    .blog-container {
        background-color: #f8fcfe;
    }

    /* Title Area */
    .works-title,
    .blog-title {
        text-align: center;
        margin-bottom: 3rem;
    }

    .works-title h2,
    .blog-title {
        font-size: clamp(2.5rem, 4.5vw, 4.375rem);
        margin: 0;
        font-family: var(--font-archetype, "Archetype", sans-serif);
        line-height: 1;
        color: var(--color-navy, #253742);
        font-weight: 500;
        letter-spacing: 0.05em;
        padding: 0;
    }

    .works-title .subtitle {
        font-family: var(--font-japanese, "Noto Sans JP", sans-serif);
        font-size: 15px;
        font-weight: 500;
        margin-top: 10px;
        color: var(--color-navy, #253742);
        opacity: 0.8;
    }

    /* Slider Container */
    .works-splide-container,
    .blog-splide {
        width: 100%;
        margin: 0 auto;
    }

    /* Track (Overflow Visible) */
    #works .splide__track,
    .work-container .splide__track,
    #blog .splide__track,
    .blog-container .splide__track {
        overflow: visible;
        padding: 10px 0 30px;
    }

    /* Slide Base */
    #works .splide__slide,
    .work-container .splide__slide,
    #blog .splide__slide {
        box-sizing: border-box;
        opacity: 0.6;
        transition: opacity 0.3s ease;
        position: relative;
        height: auto;
        padding: 0 1rem;
        margin-right: 0;
    }

    #works .splide__slide.is-active,
    .work-container .splide__slide.is-active,
    #blog .splide__slide.is-active,
    #blog .splide__slide:hover {
        opacity: 1;
    }

    /* Works Specific Design */
    #works .slide-image,
    .work-container .slide-image {
        display: block;
        width: 85%;
        height: auto;
        object-fit: cover;
        border-radius: 14px;
        margin: 0 auto;
        vertical-align: bottom;
    }

    #works .slide-caption,
    .work-container .slide-caption {
        display: block;
        width: 85%;
        margin: 15px auto 0;
        font-family: var(--font-japanese, "Noto Sans JP", sans-serif);
        font-size: clamp(1.125rem, 1.375vw, 1.375rem);
        font-weight: 500;
        color: var(--color-navy, #253742);
        line-height: 1.5;
        text-align: left;
    }

    #works .slide-subcaption,
    .work-container .slide-subcaption {
        display: block;
        width: 85%;
        margin: 5px auto 0;
        font-family: var(--font-japanese, "Noto Sans JP", sans-serif);
        font-size: 0.85rem;
        color: var(--color-navy, #253742);
        opacity: 0.7;
        text-align: left;
    }

    /* Blog Specific Design (Card) */
    #blog .splide__slide a {
        display: flex;
        flex-direction: column;
        width: 100%;
        height: 100%;
        background: #fff;
        border-radius: 14px;
        box-shadow: 0 5px 15px rgba(0,0,0,0.05);
        text-decoration: none;
        overflow: hidden;
        transition: transform 0.3s ease, box-shadow 0.3s ease;
    }

    #blog .splide__slide a:hover {
        transform: translateY(-5px);
        box-shadow: 0 20px 40px rgba(0, 51, 102, 0.15);
    }

    #blog .slide-image {
        width: 100%;
        height: 200px;
        object-fit: cover;
        border-radius: 0;
        vertical-align: bottom;
        transition: transform 0.5s ease;
    }

    #blog .splide__slide a:hover .slide-image {
        transform: scale(1.05);
    }

    .blog-caption {
        padding: 20px;
        margin: 0;
        font-family: var(--font-japanese, "Noto Sans JP", sans-serif);
        font-size: 15px;
        font-weight: 500;
        color: var(--lp-text, #333);
        line-height: 1.6;
        text-align: left;
        display: -webkit-box;
        -webkit-line-clamp: 3;
        line-clamp: 3;
        -webkit-box-orient: vertical;
        overflow: hidden;
    }

    #blog .splide__slide a:hover .blog-caption {
        color: var(--color-navy, #253742);
    }

    /* Navigation & Footer (Common) */
    .navigation-wrapper {
        display: flex;
        justify-content: space-between;
        align-items: center;
        margin-top: 3rem;
        width: 100%;
        padding: 0 2rem;
        box-sizing: border-box;
    }

    .navigation-container {
        display: flex;
        gap: 15px;
    }

    .navigation-container .prev-arrow,
    .navigation-container .next-arrow {
        width: 50px;
        height: 50px;
        border-radius: 50%;
        background: #fff;
        border: 1.5px solid var(--color-navy, #253742);
        color: var(--color-navy, #253742);
        font-size: 18px;
        cursor: pointer;
        display: flex;
        align-items: center;
        justify-content: center;
        transition: all 0.3s ease;
    }

    .navigation-container .prev-arrow:hover,
    .navigation-container .next-arrow:hover {
        background: var(--color-navy, #253742);
        color: #fff;
    }

    .view-more a {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        padding: 12px 36px;
        font-family: var(--font-japanese, "Noto Sans JP", sans-serif);
        font-size: 0.95rem;
        font-weight: 700;
        text-decoration: none;
        border-radius: 50px;
        background: #fff;
        color: var(--color-navy, #253742);
        border: 1.5px solid var(--color-navy, #253742);
        transition: all 0.3s ease;
        min-width: 200px;
    }

    .view-more a:hover {
        background: var(--color-navy, #253742);
        color: #fff;
    }
}

/* --------------------------------------------------
   SP Styles (Max-width: 768px)
   -------------------------------------------------- */
@media (max-width: 768px) {
    /* Works Section - White Background */
    #works,
    .work-container {
        background-color: #ffffff; /* #FFFFFF */
    }

    /* Blog Section - Light Blue Background */
    #blog,
    .blog-container {
        background-color: #f8fcfe;
    }

    #works,
    .work-container,
    #blog,
    .works-list-section,
    .blog-container {
        padding: 56px 0;
    }

    #works .container,
    .work-container .container,
    #blog .container,
    .works-list-section .container,
    .blog-container .container {
        padding: 0 16px;
    }

    .works-title,
    .blog-title {
        margin-bottom: 32px;
        text-align: center;
    }

    .works-title h2,
    .blog-title {
        font-family: var(--font-archetype, "Archetype", sans-serif);
        font-size: 40px;
        line-height: 1;
        font-weight: 500; /* Archetype Renner Medium */
    }

    .works-title .subtitle {
        font-size: 11px;
        letter-spacing: 0.15em;
        margin-bottom: 8px;
        display: block;
    }

    .works-splide-container,
    .blog-splide {
        padding: 0;
    }
    
    #works .splide__slide,
    .work-container .splide__slide,
    #blog .splide__slide {
        padding: 0 0.5rem;
    }

    /* SP: Works Image Full Width */
    #works .slide-image,
    .work-container .slide-image,
    #works .slide-caption,
    .work-container .slide-caption,
    #works .slide-subcaption,
    .work-container .slide-subcaption {
        width: 100%;
    }
    
    /* Blog Card on SP */
    #blog .splide__slide a {
        width: 100%;
    }
    
    .slide-caption,
    .blog-caption {
        margin-top: 3vw;
        font-size: 4vw;
        padding-top: 0;
    }
    
    .slide-subcaption {
        font-size: 3vw;
    }

    .navigation-wrapper {
        display: flex;
        justify-content: space-between;
        align-items: center;
        margin-top: 8vw;
        padding: 0 5%;
    }

    .navigation-container {
        display: flex;
        gap: 15px;
    }

    .navigation-container .prev-arrow,
    .navigation-container .next-arrow {
        width: 12vw;
        height: 12vw;
        font-size: 5vw;
        border-radius: 50%;
        background: #fff;
        border: 1.5px solid var(--color-navy, #253742);
        color: var(--color-navy, #253742);
        cursor: pointer;
        display: flex;
        align-items: center;
        justify-content: center;
    }
    
    .view-more {
    }
    
    .view-more a {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        padding: 3vw 6vw;
        font-family: var(--font-japanese, "Noto Sans JP", sans-serif);
        font-size: 3.5vw;
        font-weight: 700;
        text-decoration: none;
        border-radius: 50px;
        background: #fff;
        color: var(--color-navy, #253742);
        border: 1.5px solid var(--color-navy, #253742);
        min-width: 48vw; /* 40vw × 1.2 = 48vw */
    }
        background: #fff;
        color: var(--color-navy, #253742);
        border: 1.5px solid var(--color-navy, #253742);
        min-width: 48vw; /* 40vw × 1.2 = 48vw */
    }

    /* Works Card Styles (if used) */
    .works-card {
        border-radius: 12px;
        overflow: hidden;
        box-shadow: 0 4px 12px rgba(0,0,0,0.06);
    }

    .works-card img {
        width: 100%;
        height: auto;
        aspect-ratio: 16/10;
        object-fit: cover;
    }

    .works-card-content {
        padding: 16px;
    }

    .works-card-title {
        font-size: 14px;
        font-weight: 600;
        line-height: 1.5;
        margin-bottom: 8px;
    }
}
/**
 * グラデーション背景（Hero Section用）
 */

.hero-section {
    overflow: hidden;
}

#gradientCanvas {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    z-index: 0;
    display: block;
}

.hero-section .container,
.hero-section .header-content {
    position: relative;
    z-index: 1;
}

