    :root {
      --cyan: #00A0E9;
      --cyan-dark: #0088C7;
      --cyan-light: #E5F6FC;
      --dark: #1a1a1a;
      --dark-gray: #333333;
      --mid-gray: #666666;
      --light-gray: #f5f5f5;
      --white: #ffffff;
    }

    * {
      margin: 0;
      padding: 0;
      box-sizing: border-box;
    }

    html {
      scroll-behavior: smooth;
      width: 100%;
      overflow-x: hidden;
    }

    body {
      font-family: 'Noto Sans JP', sans-serif;
      font-weight: 400;
      color: var(--dark);
      line-height: 1.8;
      background: var(--white);
      overflow-x: hidden;
      width: 100%;
      max-width: 100%;
    }

    /* カスタムカーソル */
    .cursor {
      position: fixed;
      width: 20px;
      height: 20px;
      pointer-events: none;
      z-index: 9999;
      mix-blend-mode: difference;
    }

    .cursor::before,
    .cursor::after {
      content: '';
      position: absolute;
      background: var(--cyan);
    }

    .cursor::before {
      width: 1px;
      height: 100%;
      left: 50%;
      transform: translateX(-50%);
    }

    .cursor::after {
      width: 100%;
      height: 1px;
      top: 50%;
      transform: translateY(-50%);
    }

    .cursor-dot {
      position: fixed;
      width: 6px;
      height: 6px;
      background: var(--cyan);
      border-radius: 50%;
      pointer-events: none;
      z-index: 9999;
      transition: transform 0.1s ease;
    }

    .cursor-dot.active {
      transform: scale(3);
      opacity: 0.5;
    }

    /* スクロールプログレス */
    .scroll-progress {
      position: fixed;
      top: 0;
      left: 0;
      height: 3px;
      background: var(--cyan);
      z-index: 1001;
      width: 0;
      transition: width 0.1s ease;
    }

    /* ローディング画面 */
    .loader {
      position: fixed;
      inset: 0;
      background: #0a0a0a;
      z-index: 2000;
      display: flex;
      align-items: center;
      justify-content: center;
      flex-direction: column;
      transition: opacity 0.8s ease, visibility 0.8s ease;
    }

    .loader.hidden {
      opacity: 0;
      visibility: hidden;
    }

    /* ローディングキューブアニメーション */
    .loader-cubes {
      display: flex;
      gap: 10px;
      margin-bottom: 2rem;
    }

    .loader-cube {
      width: 20px;
      height: 20px;
      background: var(--cyan);
      animation: cubeLoad 1.2s ease-in-out infinite;
    }

    .loader-cube:nth-child(1) { animation-delay: 0s; }
    .loader-cube:nth-child(2) { animation-delay: 0.2s; }
    .loader-cube:nth-child(3) { animation-delay: 0.4s; }

    @keyframes cubeLoad {
      0%, 100% { transform: translateY(0) rotate(0deg); opacity: 1; }
      50% { transform: translateY(-20px) rotate(45deg); opacity: 0.5; }
    }

    .loader-text {
      font-family: monospace;
      color: var(--cyan);
      font-size: 0.9rem;
      letter-spacing: 0.3em;
    }

    .loader-bar {
      width: 200px;
      height: 2px;
      background: rgba(0, 160, 233, 0.2);
      margin-top: 1rem;
      overflow: hidden;
    }

    .loader-bar-inner {
      height: 100%;
      background: var(--cyan);
      width: 0;
      animation: loading 2s ease forwards;
    }

    @keyframes loading {
      to { width: 100%; }
    }

    /* Header */
    header {
      position: fixed;
      top: 0;
      left: 0;
      right: 0;
      z-index: 1000;
      background: rgba(255, 255, 255, 0.98);
      backdrop-filter: blur(10px);
      box-shadow: 0 2px 20px rgba(0, 0, 0, 0.05);
      transition: all 0.3s ease;
    }

    header.scrolled {
      box-shadow: 0 4px 20px rgba(0, 0, 0, 0.08);
    }

    .header-inner {
      max-width: 1400px;
      margin: 0 auto;
      padding: 0.8rem 3rem;
      display: flex;
      justify-content: space-between;
      align-items: center;
    }

    .logo {
      display: flex;
      align-items: center;
      text-decoration: none;
      opacity: 1;
      transform: translateY(0);
      transition: all 0.5s ease;
    }

    .logo.visible {
      opacity: 1;
      transform: translateY(0);
    }

    .logo img {
      height: 40px;
      width: auto;
    }

    #nav {
      display: flex;
      gap: 2.5rem;
    }

    #nav a {
      text-decoration: none;
      color: var(--dark-gray);
      font-size: 0.85rem;
      letter-spacing: 0.08em;
      position: relative;
      padding: 0.5rem 0;
      transition: color 0.3s ease;
      opacity: 0;
      transform: translateY(-20px);
    }

    #nav a.visible {
      opacity: 1;
      transform: translateY(0);
    }

    header.scrolled #nav a {
      color: var(--dark-gray);
    }

    #nav a::after {
      content: '';
      position: absolute;
      bottom: 0;
      left: 0;
      width: 0;
      height: 2px;
      background: var(--cyan);
      transition: width 0.3s ease;
    }

    #nav a:hover {
      color: var(--cyan);
    }

    #nav a:hover::after {
      width: 100%;
    }

    .contact-btn {
      background: var(--cyan) !important;
      color: var(--white) !important;
      padding: 0.8rem 1.8rem !important;
    }

    header.scrolled .contact-btn {
      background: var(--dark) !important;
    }

    .contact-btn::after {
      display: none !important;
    }

    /* ===== HERO SECTION ===== */
    .hero {
      height: 100vh;
      min-height: 700px;
      position: relative;
      overflow: hidden;
      display: flex;
      align-items: center;
      background: #0a0a0a;
    }

    .hero-bg {
      position: absolute;
      inset: 0;
      background: url('https://okinawa-miyaken.co.jp/image/hero_bg.jpg') center center / cover no-repeat;
      z-index: 1;
      opacity: 0;
      transition: opacity 2s ease;
    }

    .hero-bg.visible {
      opacity: 1;
    }

    .hero-overlay {
      position: absolute;
      inset: 0;
      background: linear-gradient(135deg, rgba(0, 0, 0, 0.85) 0%, rgba(0, 0, 0, 0.6) 50%, rgba(0, 0, 0, 0.7) 100%);
      z-index: 2;
    }

    /* ===== グリッド＋光エフェクト ===== */
    .hero-grid-container {
      position: absolute;
      inset: 0;
      z-index: 3;
      overflow: hidden;
    }

    /* 静的グリッド */
    .hero-grid-static {
      position: absolute;
      inset: 0;
      background-image: 
        linear-gradient(rgba(0, 160, 233, 0.1) 1px, transparent 1px),
        linear-gradient(90deg, rgba(0, 160, 233, 0.1) 1px, transparent 1px);
      background-size: 80px 80px;
      opacity: 0;
      transition: opacity 1s ease;
    }

    .hero-grid-static.visible {
      opacity: 1;
    }

    /* 光が走るライン（水平） */
    .light-line-h {
      position: absolute;
      height: 1px;
      width: 100%;
      left: 0;
      background: linear-gradient(90deg, 
        transparent 0%, 
        transparent 40%,
        rgba(0, 160, 233, 0.8) 50%, 
        transparent 60%,
        transparent 100%
      );
      background-size: 200% 100%;
      opacity: 0;
      animation: lightMoveH 4s linear infinite;
    }

    .light-line-h.visible { opacity: 1; }
    .light-line-h:nth-child(1) { top: 20%; animation-delay: 0s; }
    .light-line-h:nth-child(2) { top: 40%; animation-delay: 1s; }
    .light-line-h:nth-child(3) { top: 60%; animation-delay: 2s; }
    .light-line-h:nth-child(4) { top: 80%; animation-delay: 3s; }

    @keyframes lightMoveH {
      0% { background-position: 200% 0; }
      100% { background-position: -200% 0; }
    }

    /* 光が走るライン（垂直） */
    .light-line-v {
      position: absolute;
      width: 1px;
      height: 100%;
      top: 0;
      background: linear-gradient(180deg, 
        transparent 0%, 
        transparent 40%,
        rgba(0, 160, 233, 0.8) 50%, 
        transparent 60%,
        transparent 100%
      );
      background-size: 100% 200%;
      opacity: 0;
      animation: lightMoveV 5s linear infinite;
    }

    .light-line-v.visible { opacity: 1; }
    .light-line-v:nth-child(5) { left: 20%; animation-delay: 0.5s; }
    .light-line-v:nth-child(6) { left: 40%; animation-delay: 1.5s; }
    .light-line-v:nth-child(7) { left: 60%; animation-delay: 2.5s; }
    .light-line-v:nth-child(8) { left: 80%; animation-delay: 3.5s; }

    @keyframes lightMoveV {
      0% { background-position: 0 200%; }
      100% { background-position: 0 -200%; }
    }

    /* 交差点のパルス */
    .grid-pulse {
      position: absolute;
      width: 10px;
      height: 10px;
      background: var(--cyan);
      opacity: 0;
      transform: translate(-50%, -50%);
      animation: pulse 3s ease-in-out infinite;
    }

    @keyframes pulse {
      0%, 100% { opacity: 0; transform: translate(-50%, -50%) scale(0); }
      50% { opacity: 0.8; transform: translate(-50%, -50%) scale(1); }
    }

    /* ===== 浮遊キューブ ===== */
    .floating-cubes {
      position: absolute;
      inset: 0;
      z-index: 4;
      pointer-events: none;
    }

    .floating-cube {
      position: absolute;
      width: 30px;
      height: 30px;
      opacity: 0;
      transition: opacity 1s ease;
    }

    .floating-cube.visible {
      opacity: 0.15;
    }

    .floating-cube svg {
      width: 100%;
      height: 100%;
      animation: floatCube 8s ease-in-out infinite;
    }

    .floating-cube:nth-child(1) { top: 15%; left: 10%; animation-delay: 0s; }
    .floating-cube:nth-child(2) { top: 25%; left: 85%; animation-delay: 1s; }
    .floating-cube:nth-child(3) { top: 70%; left: 15%; animation-delay: 2s; }
    .floating-cube:nth-child(4) { top: 60%; left: 75%; animation-delay: 3s; }
    .floating-cube:nth-child(5) { top: 40%; left: 5%; animation-delay: 4s; }
    .floating-cube:nth-child(6) { top: 85%; left: 90%; animation-delay: 5s; }

    .floating-cube:nth-child(1) svg { animation-duration: 7s; }
    .floating-cube:nth-child(2) svg { animation-duration: 9s; }
    .floating-cube:nth-child(3) svg { animation-duration: 8s; }
    .floating-cube:nth-child(4) svg { animation-duration: 10s; }
    .floating-cube:nth-child(5) svg { animation-duration: 6s; }
    .floating-cube:nth-child(6) svg { animation-duration: 11s; }

    @keyframes floatCube {
      0%, 100% { transform: translateY(0) rotate(0deg); }
      25% { transform: translateY(-20px) rotate(90deg); }
      50% { transform: translateY(0) rotate(180deg); }
      75% { transform: translateY(20px) rotate(270deg); }
    }

    /* 六角形 */
    .hero-accent {
      position: absolute;
      right: -100px;
      top: 50%;
      transform: translateY(-50%);
      width: 600px;
      height: 600px;
      opacity: 0;
      z-index: 3;
      transition: opacity 1s ease;
    }

    .hero-accent.visible {
      opacity: 0.08;
    }

    .hero-content {
      max-width: 1400px;
      margin: 0 auto;
      padding: 0 3rem;
      position: relative;
      z-index: 10;
      display: flex;
      justify-content: space-between;
      align-items: center;
      width: 100%;
    }

    .hero-text {
      max-width: 600px;
    }

    .hero-tagline {
      font-size: 0.9rem;
      color: var(--cyan);
      letter-spacing: 0.2em;
      margin-bottom: 1.5rem;
      display: flex;
      align-items: center;
      gap: 1rem;
      overflow: hidden;
    }

    .hero-tagline::before {
      content: '';
      width: 40px;
      height: 2px;
      background: var(--cyan);
      transform: translateX(-100%);
      transition: transform 0.8s ease;
    }

    .hero-tagline.visible::before {
      transform: translateX(0);
    }

    .hero-tagline span {
      opacity: 0;
      transition: opacity 0.5s ease 0.3s;
    }

    .hero-tagline.visible span {
      opacity: 1;
    }

    .hero-title {
      font-family: 'Noto Serif JP', serif;
      font-size: 3.5rem;
      font-weight: 500;
      line-height: 1.4;
      margin-bottom: 2rem;
      color: var(--white);
      opacity: 0;
      transform: translateY(20px);
      transition: all 0.8s ease;
    }

    .hero-title.visible {
      opacity: 1;
      transform: translateY(0);
    }

    .hero-title em {
      color: var(--cyan);
      font-style: normal;
    }

    .hero-desc {
      font-size: 1.05rem;
      color: rgba(255, 255, 255, 0.8);
      line-height: 2;
      margin-bottom: 2.5rem;
      opacity: 0;
      transition: opacity 0.8s ease;
    }

    .hero-desc.visible {
      opacity: 1;
    }

    .hero-cta {
      display: flex;
      gap: 1.5rem;
      opacity: 0;
      transform: translateY(20px);
      transition: all 0.8s ease;
    }

    .hero-cta.visible {
      opacity: 1;
      transform: translateY(0);
    }

    .btn {
      display: inline-flex;
      align-items: center;
      gap: 0.8rem;
      padding: 1.2rem 2.5rem;
      font-size: 0.9rem;
      letter-spacing: 0.1em;
      text-decoration: none;
      transition: all 0.3s ease;
      border: none;
      cursor: pointer;
    }

    .btn-primary {
      background: var(--cyan);
      color: var(--white);
    }

    .btn-primary:hover {
      background: var(--cyan-dark);
      transform: translateY(-2px);
      box-shadow: 0 10px 30px rgba(0, 160, 233, 0.4);
    }

    .btn-outline {
      background: transparent;
      color: var(--white);
      border: 1px solid var(--white);
    }

    .btn-outline:hover {
      background: var(--white);
      color: var(--dark);
    }

    /* Hero Stats */
    .hero-stats {
      display: flex;
      flex-direction: column;
      gap: 2rem;
    }

    .stat-card {
      background: rgba(0, 160, 233, 0.05);
      border: 1px solid rgba(0, 160, 233, 0.2);
      padding: 2rem 3rem;
      text-align: center;
      position: relative;
      overflow: hidden;
      opacity: 0;
      transform: translateX(50px);
      transition: all 0.8s ease;
    }

    .stat-card.visible {
      opacity: 1;
      transform: translateX(0);
    }

    .stat-card::before {
      content: '';
      position: absolute;
      top: 0;
      left: 0;
      width: 4px;
      height: 0;
      background: var(--cyan);
      transition: height 0.8s ease 0.3s;
    }

    .stat-card.visible::before {
      height: 100%;
    }

    .stat-number {
      font-size: 5rem;
      font-weight: 700;
      color: var(--white);
      line-height: 1;
    }

    .stat-number .unit {
      font-size: 2rem;
      color: var(--cyan);
      margin-left: 0.1em;
    }

    .stat-label {
      font-size: 0.8rem;
      color: rgba(255, 255, 255, 0.6);
      letter-spacing: 0.2em;
      margin-top: 0.8rem;
      text-transform: uppercase;
    }

    .stat-progress {
      position: absolute;
      bottom: 0;
      left: 0;
      right: 0;
      height: 2px;
      background: rgba(0, 160, 233, 0.2);
    }

    .stat-progress-bar {
      height: 100%;
      background: var(--cyan);
      width: 0;
      transition: width 1.5s ease;
    }

    .stat-card.visible .stat-progress-bar {
      width: 100%;
    }

    /* ===== SECTION COMMON ===== */
    section {
      padding: 8rem 3rem;
      position: relative;
      width: 100%;
      overflow: hidden;
    }

    .section-container {
      max-width: 1200px;
      margin: 0 auto;
      width: 100%;
      padding: 0 1rem;
      box-sizing: border-box;
    }

    .section-header {
      text-align: center;
      margin-bottom: 4rem;
      position: relative;
    }

    .section-label {
      font-size: 0.8rem;
      color: var(--cyan);
      letter-spacing: 0.3em;
      text-transform: uppercase;
      margin-bottom: 1rem;
      opacity: 0;
      transform: translateY(20px);
      transition: all 0.6s ease;
    }

    .section-label.visible {
      opacity: 1;
      transform: translateY(0);
    }

    .section-title {
      font-family: 'Noto Serif JP', serif;
      font-size: 2.2rem;
      font-weight: 500;
      color: var(--dark);
      margin-bottom: 1.5rem;
      opacity: 0;
      transform: translateY(20px);
      transition: all 0.6s ease 0.1s;
    }

    .section-title.visible {
      opacity: 1;
      transform: translateY(0);
    }

    .section-line {
      width: 0;
      height: 3px;
      background: var(--cyan);
      margin: 0 auto;
      transition: width 0.8s ease 0.2s;
    }

    .section-line.visible {
      width: 60px;
    }

    /* ===== セクション区切りキューブ ===== */
    .section-divider {
      display: flex;
      justify-content: center;
      gap: 15px;
      padding: 3rem 0;
      background: var(--light-gray);
    }

    .divider-cube {
      width: 20px;
      height: 20px;
      opacity: 0.3;
      transition: all 0.3s ease;
      animation: dividerFloat 3s ease-in-out infinite;
    }

    .divider-cube:nth-child(1) { animation-delay: 0s; }
    .divider-cube:nth-child(2) { animation-delay: 0.3s; }
    .divider-cube:nth-child(3) { animation-delay: 0.6s; }

    .divider-cube:hover {
      opacity: 1;
      transform: rotate(45deg) scale(1.2);
    }

    @keyframes dividerFloat {
      0%, 100% { transform: translateY(0); }
      50% { transform: translateY(-5px); }
    }

    /* ===== ABOUT SECTION ===== */
    .about {
      background: var(--white);
      overflow: hidden;
    }

    .about-grid {
      display: grid;
      grid-template-columns: 1fr 1fr;
      gap: 5rem;
      align-items: center;
    }

    .about-image {
      position: relative;
      opacity: 0;
      transform: translateX(-50px);
      transition: all 0.8s ease;
    }

    .about-image.visible {
      opacity: 1;
      transform: translateX(0);
    }

    .about-image img {
      width: 100%;
      aspect-ratio: 4/3;
      object-fit: cover;
    }

    /* キューブ装飾 */
    .about-cube-decoration {
      position: absolute;
      bottom: -20px;
      left: -20px;
      display: flex;
      gap: 5px;
      opacity: 0;
      transition: opacity 0.5s ease 0.5s;
    }

    .about-image.visible .about-cube-decoration {
      opacity: 1;
    }

    .about-cube-decoration .cube {
      width: 15px;
      height: 15px;
    }

    .about-cube-decoration .cube:nth-child(1) { animation: cubeFloat 2s ease-in-out infinite; }
    .about-cube-decoration .cube:nth-child(2) { animation: cubeFloat 2s ease-in-out 0.3s infinite; }
    .about-cube-decoration .cube:nth-child(3) { animation: cubeFloat 2s ease-in-out 0.6s infinite; }

    @keyframes cubeFloat {
      0%, 100% { transform: translateY(0) rotate(0deg); }
      50% { transform: translateY(-10px) rotate(180deg); }
    }

    .about-content {
      opacity: 0;
      transform: translateX(50px);
      transition: all 0.8s ease 0.2s;
    }

    .about-content.visible {
      opacity: 1;
      transform: translateX(0);
    }

    .about-content h3 {
      font-family: 'Noto Serif JP', serif;
      font-size: 1.8rem;
      margin-bottom: 2rem;
      line-height: 1.6;
    }

    .about-content p {
      color: var(--mid-gray);
      margin-bottom: 1.5rem;
      line-height: 2;
    }

    .about-info {
      margin-top: 2.5rem;
      padding: 2rem;
      background: var(--light-gray);
      position: relative;
      overflow: hidden;
    }

    .about-info::before {
      content: '';
      position: absolute;
      top: 0;
      left: 0;
      width: 0;
      height: 100%;
      background: rgba(0, 160, 233, 0.05);
      transition: width 0.8s ease;
    }

    .about-content.visible .about-info::before {
      width: 100%;
    }

    .about-info dl {
      display: grid;
      grid-template-columns: 100px 1fr;
      gap: 1rem;
      position: relative;
    }

    .about-info dt {
      font-size: 0.85rem;
      color: var(--mid-gray);
    }

    .about-info dd {
      font-size: 0.95rem;
    }

    /* ===== SERVICES SECTION ===== */
    .services {
      background: var(--dark);
      color: var(--white);
      position: relative;
      overflow: hidden;
    }

    /* 背景グリッドアニメーション＋光 */
    .services-bg-grid {
      position: absolute;
      inset: 0;
      opacity: 0.03;
      background-image: 
        linear-gradient(var(--cyan) 1px, transparent 1px),
        linear-gradient(90deg, var(--cyan) 1px, transparent 1px);
      background-size: 50px 50px;
    }

    /* サービスセクションの光ライン */
    .services-light {
      position: absolute;
      top: 0;
      left: 0;
      right: 0;
      height: 1px;
      background: linear-gradient(90deg, transparent, var(--cyan), transparent);
      animation: servicesLight 3s ease-in-out infinite;
    }

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

    .services .section-title {
      color: var(--white);
    }

    .services-grid {
      display: grid;
      grid-template-columns: repeat(3, 1fr);
      gap: 2rem;
      position: relative;
      z-index: 1;
    }

    .service-card {
      padding: 2.5rem;
      background: rgba(255, 255, 255, 0.03);
      border: 1px solid rgba(255, 255, 255, 0.1);
      transition: all 0.4s ease;
      position: relative;
      overflow: hidden;
      opacity: 0;
      transform: translateY(30px);
    }

    .service-card.visible {
      opacity: 1;
      transform: translateY(0);
    }

    .service-card:hover {
      background: rgba(0, 160, 233, 0.1);
      border-color: var(--cyan);
      transform: translateY(-5px);
    }

    /* サービスカードのキューブアイコン */
    .service-card-cube {
      position: absolute;
      top: 15px;
      right: 15px;
      width: 20px;
      height: 20px;
      opacity: 0.2;
      transition: all 0.3s ease;
    }

    .service-card:hover .service-card-cube {
      opacity: 0.5;
      transform: rotate(45deg);
    }

    .service-icon {
      width: 60px;
      height: 60px;
      margin-bottom: 1.5rem;
      color: var(--cyan);
    }

    .service-card h3 {
      font-size: 1.2rem;
      margin-bottom: 1rem;
      color: var(--white);
    }

    .service-card p {
      font-size: 0.9rem;
      color: rgba(255, 255, 255, 0.6);
      line-height: 1.8;
    }

    /* ===== VALUES SECTION ===== */
    .values {
      background: var(--light-gray);
      position: relative;
    }

    .values-content {
      max-width: 800px;
      margin: 0 auto;
      text-align: center;
    }

    .values-quote {
      font-family: 'Noto Serif JP', serif;
      font-size: 2rem;
      line-height: 1.8;
      color: var(--dark);
      margin-bottom: 2rem;
      position: relative;
      opacity: 0;
      transition: opacity 0.8s ease;
    }

    .values-quote.visible {
      opacity: 1;
    }

    .values-quote::before,
    .values-quote::after {
      content: '"';
      font-size: 4rem;
      color: var(--cyan);
      opacity: 0.3;
      position: absolute;
      font-family: Georgia, serif;
    }

    .values-quote::before {
      top: -20px;
      left: -40px;
    }

    .values-quote::after {
      bottom: -40px;
      right: -40px;
    }

    .values-list {
      display: grid;
      grid-template-columns: repeat(3, 1fr);
      gap: 2rem;
      margin-top: 4rem;
    }

    .value-item {
      padding: 2rem;
      background: var(--white);
      text-align: center;
      position: relative;
      overflow: hidden;
      opacity: 0;
      transform: translateY(30px);
      transition: all 0.6s ease;
    }

    .value-item.visible {
      opacity: 1;
      transform: translateY(0);
    }

    .value-number {
      font-size: 2.5rem;
      font-weight: 700;
      color: var(--cyan);
      opacity: 0.3;
      margin-bottom: 1rem;
      transition: all 0.3s ease;
    }

    .value-item:hover .value-number {
      transform: scale(1.2);
      opacity: 0.5;
    }

    .value-item h4 {
      font-size: 1.1rem;
      margin-bottom: 0.8rem;
    }

    .value-item p {
      font-size: 0.9rem;
      color: var(--mid-gray);
      line-height: 1.8;
    }

    /* ===== WORKS SECTION ===== */
    .works {
      background: var(--white);
    }

    .works-grid {
      display: grid;
      grid-template-columns: repeat(4, 1fr);
      gap: 1rem;
    }

    @media (max-width: 1024px) {
      .works-grid {
        grid-template-columns: repeat(3, 1fr);
      }
    }

    @media (max-width: 768px) {
      .works-grid {
        grid-template-columns: repeat(2, 1fr);
      }
    }

    .work-item {
      position: relative;
      aspect-ratio: 4/3;
      overflow: hidden;
      cursor: pointer;
      opacity: 0;
      transform: scale(0.9);
      transition: all 0.6s ease;
      border-radius: 4px;
    }

    .work-item.visible {
      opacity: 1;
      transform: scale(1);
    }

    .work-item img {
      width: 100%;
      height: 100%;
      object-fit: cover;
      transition: transform 0.5s ease;
    }

    .work-item:hover img {
      transform: scale(1.1);
    }

    .work-overlay {
      position: absolute;
      inset: 0;
      background: linear-gradient(to top, rgba(0, 20, 40, 0.95) 0%, rgba(0, 20, 40, 0.5) 50%, transparent 100%);
      opacity: 0;
      transition: opacity 0.3s ease;
      display: flex;
      flex-direction: column;
      justify-content: flex-end;
      padding: 1rem;
    }

    .work-item:hover .work-overlay {
      opacity: 1;
    }

    /* グリッドオーバーレイ */
    .work-grid-overlay {
      position: absolute;
      inset: 0;
      background-image: 
        linear-gradient(rgba(0, 160, 233, 0.3) 1px, transparent 1px),
        linear-gradient(90deg, rgba(0, 160, 233, 0.3) 1px, transparent 1px);
      background-size: 30px 30px;
      opacity: 0;
      transition: opacity 0.3s ease;
      pointer-events: none;
    }

    .work-item:hover .work-grid-overlay {
      opacity: 0.5;
    }

    .work-info h4 {
      color: var(--white);
      font-size: 0.85rem;
      margin-bottom: 0.2rem;
      line-height: 1.4;
    }

    .work-info .photo-count {
      color: var(--cyan);
      font-size: 0.75rem;
      display: flex;
      align-items: center;
      gap: 0.3rem;
    }

    .work-info .photo-count svg {
      width: 14px;
      height: 14px;
    }

    /* ===== ギャラリーライトボックス ===== */
    .gallery-lightbox {
      position: fixed;
      inset: 0;
      background: rgba(0, 0, 0, 0.95);
      z-index: 10000;
      display: flex;
      align-items: center;
      justify-content: center;
      opacity: 0;
      visibility: hidden;
      transition: all 0.3s ease;
    }

    .gallery-lightbox.active {
      opacity: 1;
      visibility: visible;
    }

    .gallery-lightbox-content {
      position: relative;
      width: 90%;
      max-width: 1200px;
      height: 85vh;
      display: flex;
      flex-direction: column;
    }

    .gallery-lightbox-header {
      display: flex;
      justify-content: space-between;
      align-items: center;
      padding: 1rem 0;
      border-bottom: 1px solid rgba(255, 255, 255, 0.1);
      margin-bottom: 1rem;
    }

    .gallery-lightbox-title {
      color: var(--white);
      font-size: 1.1rem;
      font-weight: 500;
    }

    .gallery-lightbox-close {
      background: none;
      border: none;
      color: var(--white);
      cursor: pointer;
      padding: 0.5rem;
      transition: color 0.3s ease;
    }

    .gallery-lightbox-close:hover {
      color: var(--cyan);
    }

    .gallery-lightbox-main {
      flex: 1;
      display: flex;
      align-items: center;
      justify-content: center;
      position: relative;
      min-height: 0;
    }

    .gallery-lightbox-image {
      max-width: 100%;
      max-height: 100%;
      object-fit: contain;
      opacity: 0;
      transition: opacity 0.3s ease;
    }

    .gallery-lightbox-image.loaded {
      opacity: 1;
    }

    .gallery-lightbox-nav {
      position: absolute;
      top: 50%;
      transform: translateY(-50%);
      background: rgba(0, 160, 233, 0.8);
      border: none;
      color: var(--white);
      width: 50px;
      height: 50px;
      cursor: pointer;
      display: flex;
      align-items: center;
      justify-content: center;
      transition: all 0.3s ease;
      border-radius: 50%;
    }

    .gallery-lightbox-nav:hover {
      background: var(--cyan);
      transform: translateY(-50%) scale(1.1);
    }

    .gallery-lightbox-prev {
      left: -70px;
    }

    .gallery-lightbox-next {
      right: -70px;
    }

    @media (max-width: 1400px) {
      .gallery-lightbox-prev {
        left: 10px;
      }
      .gallery-lightbox-next {
        right: 10px;
      }
    }

    .gallery-lightbox-footer {
      padding: 1rem 0;
      border-top: 1px solid rgba(255, 255, 255, 0.1);
      margin-top: 1rem;
    }

    .gallery-lightbox-thumbnails {
      display: flex;
      gap: 0.5rem;
      overflow-x: auto;
      padding: 0.5rem 0;
      scrollbar-width: thin;
      scrollbar-color: var(--cyan) transparent;
    }

    .gallery-lightbox-thumbnails::-webkit-scrollbar {
      height: 6px;
    }

    .gallery-lightbox-thumbnails::-webkit-scrollbar-track {
      background: rgba(255, 255, 255, 0.1);
      border-radius: 3px;
    }

    .gallery-lightbox-thumbnails::-webkit-scrollbar-thumb {
      background: var(--cyan);
      border-radius: 3px;
    }

    .gallery-thumb {
      width: 80px;
      height: 60px;
      object-fit: cover;
      cursor: pointer;
      opacity: 0.5;
      transition: all 0.3s ease;
      border: 2px solid transparent;
      border-radius: 4px;
      flex-shrink: 0;
    }

    .gallery-thumb:hover {
      opacity: 0.8;
    }

    .gallery-thumb.active {
      opacity: 1;
      border-color: var(--cyan);
    }

    .gallery-lightbox-counter {
      color: rgba(255, 255, 255, 0.7);
      font-size: 0.85rem;
      text-align: center;
      margin-top: 0.5rem;
    }

    /* ===== TESTIMONIALS ===== */
    .testimonials {
      background: linear-gradient(135deg, var(--cyan-light) 0%, var(--white) 100%);
      overflow: hidden;
      position: relative;
    }

    .testimonials-bg {
      position: absolute;
      inset: 0;
      opacity: 0.05;
      background-image: 
        linear-gradient(var(--cyan) 1px, transparent 1px),
        linear-gradient(90deg, var(--cyan) 1px, transparent 1px);
      background-size: 60px 60px;
    }

    .testimonials-slider {
      position: relative;
      max-width: 900px;
      margin: 0 auto;
      overflow: hidden;
    }

    .testimonials-track {
      display: flex;
      transition: transform 0.5s ease;
    }

    .testimonial-card {
      min-width: 100%;
      background: var(--white);
      box-shadow: 0 20px 60px rgba(0, 0, 0, 0.08);
      position: relative;
      display: flex;
      flex-direction: column;
    }

    .testimonial-card::before {
      content: '';
      position: absolute;
      top: 0;
      left: 0;
      width: 5px;
      height: 100%;
      background: var(--cyan);
    }

    .testimonial-image {
      width: 100%;
      height: 300px;
      object-fit: cover;
    }

    .testimonial-content {
      padding: 2.5rem;
    }

    .testimonial-quote {
      font-size: 1rem;
      line-height: 2;
      color: var(--dark-gray);
      margin-bottom: 1.5rem;
    }

    .testimonial-info h4 {
      font-size: 1rem;
      margin-bottom: 0.3rem;
    }

    .testimonial-info p {
      font-size: 0.85rem;
      color: var(--mid-gray);
    }

    .slider-controls {
      display: flex;
      justify-content: center;
      align-items: center;
      gap: 1.5rem;
      margin-top: 2rem;
    }

    .slider-btn {
      width: 50px;
      height: 50px;
      border: 1px solid var(--dark);
      background: transparent;
      cursor: pointer;
      display: flex;
      align-items: center;
      justify-content: center;
      transition: all 0.3s ease;
    }

    .slider-btn:hover {
      background: var(--dark);
      color: var(--white);
    }

    .slider-btn svg {
      width: 20px;
      height: 20px;
    }

    .slider-dots {
      display: flex;
      gap: 0.5rem;
    }

    .slider-dot {
      width: 10px;
      height: 10px;
      border-radius: 50%;
      background: var(--mid-gray);
      opacity: 0.3;
      cursor: pointer;
      transition: all 0.3s ease;
    }

    .slider-dot.active {
      opacity: 1;
      background: var(--cyan);
    }

    /* ===== STAFF ===== */
    .staff {
      background: var(--white);
    }

    .staff-grid {
      display: grid;
      grid-template-columns: repeat(2, 1fr);
      gap: 3rem;
      max-width: 800px;
      margin: 0 auto;
    }

    .staff-card {
      text-align: center;
      opacity: 0;
      transform: translateY(30px);
      transition: all 0.6s ease;
    }

    .staff-card.visible {
      opacity: 1;
      transform: translateY(0);
    }

    .staff-image {
      width: 200px;
      height: 200px;
      margin: 0 auto 1.5rem;
      position: relative;
    }

    .staff-image img {
      width: 100%;
      height: 100%;
      object-fit: cover;
      border-radius: 50%;
      filter: grayscale(100%);
      transition: filter 0.5s ease;
    }

    .staff-card:hover .staff-image img {
      filter: grayscale(0%);
    }

    .staff-image::after {
      content: '';
      position: absolute;
      inset: -10px;
      border: 2px solid var(--cyan);
      border-radius: 50%;
      opacity: 0;
      transform: scale(0.8);
      transition: all 0.3s ease;
    }

    .staff-card:hover .staff-image::after {
      opacity: 0.3;
      transform: scale(1);
    }

    /* スタッフキューブ装飾 */
    .staff-cube {
      position: absolute;
      bottom: -5px;
      right: -5px;
      width: 25px;
      height: 25px;
      opacity: 0;
      transition: all 0.3s ease;
    }

    .staff-card:hover .staff-cube {
      opacity: 0.8;
      transform: rotate(15deg);
    }

    .staff-card h4 {
      font-size: 1.2rem;
      margin-bottom: 0.3rem;
    }

    .staff-card .role {
      font-size: 0.85rem;
      color: var(--cyan);
      margin-bottom: 1rem;
    }

    .staff-card > p:last-child {
      font-size: 0.9rem;
      color: var(--mid-gray);
      line-height: 1.8;
    }

    /* ===== CONTACT ===== */
    .contact {
      background: var(--dark);
      color: var(--white);
      position: relative;
      overflow: hidden;
    }

    .contact-bg-grid {
      position: absolute;
      inset: 0;
      opacity: 0.02;
      background-image: 
        linear-gradient(var(--cyan) 1px, transparent 1px),
        linear-gradient(90deg, var(--cyan) 1px, transparent 1px);
      background-size: 40px 40px;
    }

    /* コンタクトの光ライン */
    .contact-light {
      position: absolute;
      bottom: 0;
      left: 0;
      right: 0;
      height: 1px;
      background: linear-gradient(90deg, transparent, var(--cyan), transparent);
      animation: servicesLight 4s ease-in-out infinite;
    }

    .contact .section-title {
      color: var(--white);
    }

    .contact-grid {
      display: grid;
      grid-template-columns: 1fr 1fr;
      gap: 4rem;
      position: relative;
      z-index: 1;
    }

    .contact-info {
      opacity: 0;
      transform: translateX(-30px);
      transition: all 0.6s ease;
    }

    .contact-info.visible {
      opacity: 1;
      transform: translateX(0);
    }

    .contact-info h3 {
      font-size: 1.3rem;
      margin-bottom: 2rem;
    }

    .contact-item {
      display: flex;
      gap: 1rem;
      margin-bottom: 1.5rem;
      align-items: flex-start;
    }

    .contact-item-icon {
      width: 24px;
      height: 24px;
      color: var(--cyan);
      flex-shrink: 0;
      margin-top: 2px;
    }

    .contact-item-content {
      font-size: 0.95rem;
      color: rgba(255, 255, 255, 0.8);
      line-height: 1.6;
    }

    .contact-item-content a {
      color: rgba(255, 255, 255, 0.8);
      text-decoration: none;
      transition: color 0.3s ease;
    }

    .contact-item-content a:hover {
      color: var(--cyan);
    }

    .contact-form {
      background: rgba(255, 255, 255, 0.03);
      padding: 2.5rem;
      border: 1px solid rgba(255, 255, 255, 0.1);
      opacity: 0;
      transform: translateX(30px);
      transition: all 0.6s ease 0.2s;
    }

    .contact-form.visible {
      opacity: 1;
      transform: translateX(0);
    }

    .form-group {
      margin-bottom: 1.5rem;
    }

    .form-group label {
      display: block;
      font-size: 0.85rem;
      margin-bottom: 0.5rem;
      color: rgba(255, 255, 255, 0.7);
    }

    .form-group input,
    .form-group textarea {
      width: 100%;
      padding: 1rem;
      background: rgba(255, 255, 255, 0.05);
      border: 1px solid rgba(255, 255, 255, 0.1);
      color: var(--white);
      font-size: 1rem;
      font-family: inherit;
      transition: all 0.3s ease;
    }

    .form-group input:focus,
    .form-group textarea:focus {
      outline: none;
      border-color: var(--cyan);
      box-shadow: 0 0 0 3px rgba(0, 160, 233, 0.1);
    }

    .form-group textarea {
      min-height: 150px;
      resize: vertical;
    }

    .form-submit {
      width: 100%;
      padding: 1.2rem;
      background: var(--cyan);
      color: var(--white);
      border: none;
      font-size: 1rem;
      letter-spacing: 0.1em;
      cursor: pointer;
      transition: background 0.3s ease;
    }

    .form-submit:hover {
      background: var(--cyan-dark);
    }

    /* Map */
    .map-section {
      height: 400px;
      position: relative;
      width: 100%;
      max-width: 100%;
      overflow: hidden;
    }

    .map-section iframe {
      width: 100%;
      height: 100%;
      border: 0;
      filter: grayscale(100%);
      transition: filter 0.3s ease;
    }

    .map-section:hover iframe {
      filter: grayscale(50%);
    }

    /* ===== 採用情報セクション ===== */
    .recruit {
      background: linear-gradient(135deg, #0a0a0a 0%, #1a1a1a 100%);
      padding: 6rem 3rem;
      position: relative;
      overflow: hidden;
    }

    .recruit::before {
      content: '';
      position: absolute;
      top: 0;
      left: 0;
      right: 0;
      bottom: 0;
      background: 
        radial-gradient(circle at 20% 50%, rgba(0, 160, 233, 0.08) 0%, transparent 50%),
        radial-gradient(circle at 80% 50%, rgba(0, 160, 233, 0.05) 0%, transparent 50%);
      pointer-events: none;
    }

    .recruit-inner {
      max-width: 1200px;
      margin: 0 auto;
      position: relative;
      z-index: 1;
    }

    .recruit .section-label,
    .recruit .section-title {
      color: var(--white);
    }

    .recruit .section-line::after {
      background: var(--cyan);
    }

    .recruit-message {
      text-align: center;
      margin-bottom: 4rem;
      opacity: 0;
      transform: translateY(30px);
      transition: all 0.8s ease;
    }

    .recruit-message.visible {
      opacity: 1;
      transform: translateY(0);
    }

    .recruit-message h3 {
      font-size: 2rem;
      color: var(--white);
      margin-bottom: 1.5rem;
      font-weight: 500;
    }

    .recruit-message h3 span {
      color: var(--cyan);
    }

    .recruit-message p {
      color: rgba(255, 255, 255, 0.8);
      font-size: 1.1rem;
      line-height: 2;
      max-width: 700px;
      margin: 0 auto;
    }

    .recruit-grid {
      display: grid;
      grid-template-columns: 1fr 1fr;
      gap: 2rem;
      margin-bottom: 3rem;
    }

    .recruit-card {
      background: rgba(255, 255, 255, 0.03);
      border: 1px solid rgba(255, 255, 255, 0.1);
      border-radius: 12px;
      padding: 2rem;
      transition: all 0.6s ease;
      opacity: 0;
      transform: translateY(30px);
    }

    .recruit-card.visible {
      opacity: 1;
      transform: translateY(0);
    }

    .recruit-card:hover {
      background: rgba(255, 255, 255, 0.05);
      border-color: rgba(0, 160, 233, 0.3);
      transform: translateY(-5px);
    }

    .recruit-card-icon {
      width: 50px;
      height: 50px;
      background: linear-gradient(135deg, var(--cyan), var(--cyan-dark));
      border-radius: 12px;
      display: flex;
      align-items: center;
      justify-content: center;
      margin-bottom: 1.5rem;
    }

    .recruit-card-icon svg {
      width: 24px;
      height: 24px;
      stroke: var(--white);
    }

    .recruit-card h4 {
      color: var(--white);
      font-size: 1.1rem;
      margin-bottom: 1rem;
      font-weight: 500;
    }

    .recruit-card p,
    .recruit-card ul {
      color: rgba(255, 255, 255, 0.7);
      font-size: 0.95rem;
      line-height: 1.8;
    }

    .recruit-card ul {
      list-style: none;
      padding: 0;
    }

    .recruit-card ul li {
      padding-left: 1.2rem;
      position: relative;
      margin-bottom: 0.5rem;
    }

    .recruit-card ul li::before {
      content: '';
      position: absolute;
      left: 0;
      top: 0.6rem;
      width: 6px;
      height: 6px;
      background: var(--cyan);
      border-radius: 50%;
    }

    .recruit-highlight {
      display: flex;
      gap: 1rem;
      flex-wrap: wrap;
      margin-top: 1rem;
    }

    .recruit-tag {
      background: rgba(0, 160, 233, 0.15);
      color: var(--cyan);
      padding: 0.4rem 1rem;
      border-radius: 20px;
      font-size: 0.85rem;
      border: 1px solid rgba(0, 160, 233, 0.3);
    }

    .recruit-cta {
      text-align: center;
      margin-top: 3rem;
      padding-top: 3rem;
      border-top: 1px solid rgba(255, 255, 255, 0.1);
      opacity: 0;
      transform: translateY(30px);
      transition: all 0.8s ease;
    }

    .recruit-cta.visible {
      opacity: 1;
      transform: translateY(0);
    }

    .recruit-cta p {
      color: rgba(255, 255, 255, 0.8);
      font-size: 1.1rem;
      margin-bottom: 1.5rem;
    }

    .recruit-cta .btn {
      display: inline-flex;
      align-items: center;
      gap: 0.5rem;
      padding: 1rem 2.5rem;
      font-size: 1rem;
    }

    .recruit-cta .btn svg {
      width: 20px;
      height: 20px;
      transition: transform 0.3s ease;
    }

    .recruit-cta .btn:hover svg {
      transform: translateX(5px);
    }

    @media (max-width: 768px) {
      .recruit {
        padding: 4rem 1.5rem;
      }

      .recruit-message h3 {
        font-size: 1.5rem;
      }

      .recruit-message p {
        font-size: 1rem;
      }

      .recruit-grid {
        grid-template-columns: 1fr;
        gap: 1.5rem;
      }

      .recruit-card {
        padding: 1.5rem;
      }
    }

    /* Footer */
    footer {
      background: #111;
      color: rgba(255, 255, 255, 0.5);
      padding: 2rem 3rem;
      text-align: center;
      width: 100%;
      overflow: hidden;
      box-sizing: border-box;
    }

    footer p {
      font-size: 0.8rem;
      letter-spacing: 0.05em;
    }

    /* トップへ戻る */
    .back-to-top {
      position: fixed;
      bottom: 30px;
      right: 30px;
      width: 50px;
      height: 50px;
      background: var(--cyan);
      color: var(--white);
      border: none;
      cursor: pointer;
      opacity: 0;
      visibility: hidden;
      transition: all 0.3s ease;
      z-index: 100;
      display: flex;
      align-items: center;
      justify-content: center;
    }

    .back-to-top.visible {
      opacity: 1;
      visibility: visible;
    }

    .back-to-top:hover {
      background: var(--cyan-dark);
      transform: translateY(-5px);
    }

    /* Responsive */
    /* CSS-ONLY モバイルメニュー（checkbox + label 方式） */
    /* スタイルはindex.phpのインラインCSSで定義 */

    @media (max-width: 1024px) {
      .cursor, .cursor-dot { display: none; }
      nav#nav { display: none; }

      .hero-content {
        flex-direction: column;
        text-align: center;
      }

      .hero-tagline { justify-content: center; }
      .hero-cta { justify-content: center; }

      .hero-stats {
        flex-direction: row;
        margin-top: 3rem;
        gap: 1rem;
      }

      .stat-card { padding: 1.5rem; }
      .stat-number { font-size: 3rem; }

      section { padding: 5rem 2rem; }

      .about-grid { grid-template-columns: 1fr; gap: 3rem; }
      .services-grid { grid-template-columns: 1fr; }
      .values-list { grid-template-columns: 1fr; }
      .works-grid { grid-template-columns: repeat(2, 1fr); gap: 1rem; }
      .staff-grid { grid-template-columns: 1fr; }
      .contact-grid { grid-template-columns: 1fr; }

      .floating-cubes { display: none; }
      .light-line-h, .light-line-v { display: none; }
      .grid-pulse { display: none; }
    }

    @media (max-width: 768px) {
      .header-inner {
        padding: 0.8rem 1.5rem;
      }

      .logo img {
        height: 35px;
      }

      .hero {
        padding-top: 70px;
        min-height: 100vh;
      }

      .hero-title { 
        font-size: 2.5rem;
        line-height: 1.3;
      }

      .hero-tagline span {
        font-size: 0.7rem;
        letter-spacing: 0.15em;
      }

      .hero-desc {
        font-size: 1.1rem;
        line-height: 1.7;
      }

      .btn {
        padding: 0.7rem 1.2rem;
        font-size: 0.85rem;
      }

      .stat-card { 
        padding: 1rem;
        min-width: auto;
      }

      .stat-number { 
        font-size: 2rem;
      }

      .stat-label {
        font-size: 0.75rem;
      }

      .section-title { 
        font-size: 1.8rem;
      }

      .section-label {
        font-size: 0.75rem;
      }

      .works-grid { 
        grid-template-columns: repeat(2, 1fr);
        gap: 0.8rem;
      }

      .service-card {
        padding: 1.5rem;
      }

      .about-image img {
        width: 100%;
      }

      section { 
        padding: 3rem 1.5rem;
      }

      .contact-grid {
        gap: 2rem;
      }

      .contact-info {
        padding: 1.5rem;
      }

      .contact-item {
        flex-direction: column;
        gap: 1rem;
      }

      .contact-item-icon {
        width: 24px;
        height: 24px;
      }

      .form-group input,
      .form-group textarea {
        font-size: 16px;
      }

      .staff-grid {
        grid-template-columns: 1fr;
      }

      .staff-card img {
        width: 100%;
      }

      .slider-controls {
        gap: 1rem;
      }
    }

    @media (max-width: 480px) {
      .header-inner {
        padding: 0.8rem 1rem;
      }

      .logo img {
        height: 30px;
      }

      .hero-title { 
        font-size: 2rem;
      }

      .hero-desc {
        font-size: 1rem;
      }

      .hero-cta {
        flex-direction: column;
        gap: 0.8rem;
      }

      .btn {
        width: 100%;
        padding: 0.8rem 1rem;
      }

      .stat-card { 
        padding: 0.8rem;
      }

      .stat-number { 
        font-size: 1.5rem;
      }

      .stat-label {
        font-size: 0.65rem;
      }

      .stat-progress {
        margin-top: 0.5rem;
      }

      .section-title { 
        font-size: 1.5rem;
      }

      .section-label {
        font-size: 0.65rem;
      }

      section { 
        padding: 2rem 1rem;
      }

      .works-grid { 
        grid-template-columns: 1fr;
        gap: 0.8rem;
      }

      .work-item {
        aspect-ratio: auto;
        min-height: 200px;
      }

      .service-card {
        padding: 1rem;
      }

      .service-card h3 {
        font-size: 1rem;
      }

      .about-content h2 {
        font-size: 1.2rem;
      }

      .values-quote {
        padding: 1.5rem 1rem;
        font-size: 1.5rem;
      }

      .value-item {
        padding: 1rem;
      }

      .value-item .value-number {
        font-size: 1.5rem;
      }

      .contact-info {
        padding: 1rem;
      }

      .contact-item-content {
        font-size: 0.85rem;
      }

      .form-group label {
        font-size: 0.85rem;
      }

      .form-group input,
      .form-group textarea {
        font-size: 16px;
        padding: 0.8rem;
      }

      .staff-card h3 {
        font-size: 0.95rem;
      }

      .slider-controls {
        gap: 0.5rem;
      }

      .slider-dot {
        width: 8px;
        height: 8px;
      }
    }

    /* ===== LIGHTBOX / POPUP ===== */
    .lightbox-overlay {
      position: fixed;
      inset: 0;
      background: rgba(0, 0, 0, 0.95);
      z-index: 2000;
      opacity: 0;
      visibility: hidden;
      transition: all 0.3s ease;
      display: flex;
      align-items: center;
      justify-content: center;
    }

    .lightbox-overlay.active {
      opacity: 1;
      visibility: visible;
    }

    .lightbox-content {
      position: relative;
      max-width: 90vw;
      max-height: 90vh;
      display: flex;
      flex-direction: column;
      align-items: center;
    }

    .lightbox-image {
      max-width: 100%;
      max-height: 70vh;
      object-fit: contain;
      border-radius: 4px;
      box-shadow: 0 20px 60px rgba(0, 0, 0, 0.5);
    }

    .lightbox-info {
      text-align: center;
      margin-top: 1.5rem;
      color: var(--white);
    }

    .lightbox-info h4 {
      font-size: 1.3rem;
      margin-bottom: 0.3rem;
    }

    .lightbox-info p {
      color: rgba(255, 255, 255, 0.7);
      font-size: 0.95rem;
    }

    .lightbox-close {
      position: absolute;
      top: -50px;
      right: 0;
      width: 40px;
      height: 40px;
      background: transparent;
      border: 2px solid rgba(255, 255, 255, 0.5);
      border-radius: 50%;
      color: var(--white);
      cursor: pointer;
      display: flex;
      align-items: center;
      justify-content: center;
      transition: all 0.3s ease;
    }

    .lightbox-close:hover {
      background: var(--cyan);
      border-color: var(--cyan);
      transform: rotate(90deg);
    }

    .lightbox-nav {
      position: absolute;
      top: 50%;
      transform: translateY(-50%);
      width: 50px;
      height: 50px;
      background: rgba(255, 255, 255, 0.1);
      border: none;
      border-radius: 50%;
      color: var(--white);
      cursor: pointer;
      display: flex;
      align-items: center;
      justify-content: center;
      transition: all 0.3s ease;
    }

    .lightbox-nav:hover {
      background: var(--cyan);
    }

    .lightbox-prev {
      left: -80px;
    }

    .lightbox-next {
      right: -80px;
    }

    .lightbox-counter {
      position: absolute;
      bottom: -40px;
      left: 50%;
      transform: translateX(-50%);
      color: rgba(255, 255, 255, 0.6);
      font-size: 0.85rem;
    }

    /* お客様の声（1件表示用） */
    .testimonials-single {
      max-width: 900px;
      margin: 0 auto;
    }

    @media (max-width: 768px) {
      .lightbox-nav {
        width: 40px;
        height: 40px;
      }

      .lightbox-prev {
        left: 10px;
      }

      .lightbox-next {
        right: 10px;
      }

      .lightbox-close {
        top: -45px;
        right: 0;
      }

      .lightbox-info h4 {
        font-size: 1.1rem;
      }
    }

    /* フォーム送信メッセージ */
    .form-message {
      text-align: center;
      padding: 60px 40px;
      border-radius: 12px;
      animation: fadeInUp 0.6s ease;
    }

    .form-message.success {
      background: linear-gradient(135deg, #e8f5e9 0%, #c8e6c9 100%);
      color: #2e7d32;
    }

    .form-message.success svg {
      color: #4caf50;
    }

    .form-message.error {
      background: linear-gradient(135deg, #ffebee 0%, #ffcdd2 100%);
      color: #c62828;
    }

    .form-message.error svg {
      color: #f44336;
    }

    .form-message h3 {
      font-size: 1.5rem;
      margin-bottom: 16px;
      font-weight: 600;
    }

    .form-message p {
      font-size: 1rem;
      line-height: 1.8;
    }

    @keyframes fadeInUp {
      from {
        opacity: 0;
        transform: translateY(20px);
      }
      to {
        opacity: 1;
        transform: translateY(0);
      }
    }
