/* ========================================
   株式会社clapt - style.css
   トーン: 誠実・親しみやすい・クリーン
   ======================================== */

   @import url('https://fonts.googleapis.com/css2?family=Noto+Sans+JP:wght@300;400;500;700&display=swap');

   /* --- CSS Variables --- */
   :root {
     --blue-vivid:   #1ab4f0;
     --blue-mid:     #0e91d4;
     --blue-deep:    #0a6fa8;
     --blue-dark:    #0b4d78;
     --blue-pale:    #e8f7fd;
     --blue-pale2:   #f0fafe;
   
     --white:        #ffffff;
     --gray-50:      #f7f9fb;
     --gray-100:     #eef1f5;
     --gray-300:     #c8d0da;
     --gray-500:     #8895a7;
     --gray-700:     #4a5568;
     --text:         #1e2d3d;
     --text-light:   #627387;
   
     --font-sans:    'Noto Sans JP', sans-serif;
   
     --radius-sm:    8px;
     --radius-md:    14px;
     --radius-lg:    24px;
   
     --shadow-sm:    0 2px 12px rgba(14, 145, 212, 0.07);
     --shadow-md:    0 6px 32px rgba(14, 145, 212, 0.12);
     --shadow-lg:    0 12px 56px rgba(14, 145, 212, 0.18);
   
     --transition:   0.3s cubic-bezier(0.4, 0, 0.2, 1);
     --max-width:    1160px;
   }
   
   /* --- Reset & Base --- */
   *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
   html { scroll-behavior: smooth; font-size: 16px; }
   body {
     font-family: var(--font-sans);
     color: var(--text);
     background: var(--white);
     line-height: 1.8;
     -webkit-font-smoothing: antialiased;
   }
   img { max-width: 100%; display: block; }
   a { color: inherit; text-decoration: none; }
   ul { list-style: none; }
   
   .container {
     max-width: var(--max-width);
     margin: 0 auto;
     padding: 0 48px;
   }
   .pc-only { display: inline; }
   
   /* --- Section Common --- */
   .section-title {
     font-size: clamp(1.8rem, 3.5vw, 2.6rem);
     font-weight: 700;
     letter-spacing: 0.06em;
     color: var(--text);
     line-height: 1.1;
   }
   
   .section-subtitle {
     font-size: 0.72rem;
     font-weight: 500;
     letter-spacing: 0.22em;
     color: var(--blue-mid);
     margin-top: 6px;
     text-transform: uppercase;
   }
   
   .section-title + .section-subtitle {
     margin-bottom: 56px;
   }
   
   /* ========================================
      HEADER
      ======================================== */
   .header {
     position: fixed;
     top: 0; left: 0; right: 0;
     z-index: 100;
     padding: 18px 0;
     transition: background var(--transition), box-shadow var(--transition), padding var(--transition);
   }
   
   .header.scrolled {
     background: rgba(255, 255, 255, 0.96);
     backdrop-filter: blur(16px);
     box-shadow: 0 1px 0 var(--gray-100), 0 4px 20px rgba(0,0,0,0.06);
     padding: 12px 0;
   }
   
   .header-container {
     max-width: var(--max-width);
     margin: 0 auto;
     padding: 0 48px;
     display: flex;
     align-items: center;
     justify-content: space-between;
   }
   
   .logo-image {
     height: 44px;
     width: auto;
   }
   
   .header:not(.scrolled) .logo-image {
     filter: brightness(0) invert(1);
   }
   
   .nav-list {
     display: flex;
     gap: 36px;
     align-items: center;
   }
   
   .nav-list a {
     font-size: 0.82rem;
     font-weight: 500;
     letter-spacing: 0.08em;
     color: rgba(255,255,255,0.8);
     transition: color var(--transition);
     position: relative;
     padding-bottom: 3px;
   }
   
   .header.scrolled .nav-list a {
     color: var(--gray-700);
   }
   
   .nav-list a::after {
     content: '';
     position: absolute;
     bottom: 0; left: 0;
     width: 0; height: 2px;
     background: var(--blue-vivid);
     border-radius: 2px;
     transition: width var(--transition);
   }
   
   .nav-list a:hover,
   .nav-list a.active {
     color: var(--white);
   }
   
   .header.scrolled .nav-list a:hover,
   .header.scrolled .nav-list a.active {
     color: var(--blue-mid);
   }
   
   .nav-list a:hover::after,
   .nav-list a.active::after {
     width: 100%;
   }
   
   .js-menu-toggle {
     display: none;
     flex-direction: column;
     gap: 5px;
     background: none;
     border: none;
     cursor: pointer;
     padding: 4px;
   }
   
   .js-menu-toggle span {
     display: block;
     width: 22px; height: 2px;
     background: var(--white);
     border-radius: 2px;
     transition: var(--transition);
     transform-origin: center;
   }
   
   .header.scrolled .js-menu-toggle span {
     background: var(--text);
   }
   
   .js-menu-toggle.active span:nth-child(1) { transform: translateY(7px) rotate(45deg); }
   .js-menu-toggle.active span:nth-child(2) { opacity: 0; }
   .js-menu-toggle.active span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }
   
   /* ========================================
      HOME SECTION
      ======================================== */
   .home-section {
     min-height: 100vh;
     display: flex;
     align-items: center;
     justify-content: center;
     position: relative;
     overflow: hidden;
     background: linear-gradient(145deg, #0b4d78 0%, #0e91d4 55%, #1ab4f0 100%);
   }
   
   .home-section::before {
     content: '';
     position: absolute;
     top: -20%; right: -10%;
     width: 70vw; height: 70vw;
     background: radial-gradient(ellipse, rgba(255,255,255,0.18) 0%, transparent 65%);
     pointer-events: none;
     animation: glow 8s ease-in-out infinite alternate;
   }
   
   .home-section::after {
     content: '';
     position: absolute;
     bottom: -20%; left: -10%;
     width: 60vw; height: 60vw;
     background: radial-gradient(ellipse, rgba(10, 111, 168, 0.4) 0%, transparent 65%);
     pointer-events: none;
     animation: glow 10s ease-in-out infinite alternate-reverse;
   }
   
   @keyframes glow {
     from { transform: scale(1) translate(0, 0); }
     to   { transform: scale(1.1) translate(2%, 2%); }
   }
   
   .geometric-shapes { position: absolute; inset: 0; pointer-events: none; }
   
   .shape {
     position: absolute;
     border: 1px solid rgba(255,255,255,0.15);
     border-radius: 50%;
   }
   
   .shape-1 { width: 500px; height: 500px; top: -150px; right: -100px; animation: float1 14s ease-in-out infinite; }
   .shape-2 { width: 300px; height: 300px; bottom: -80px; left: -60px; border-color: rgba(255,255,255,0.1); animation: float2 11s ease-in-out infinite; }
   .shape-3 { width: 140px; height: 140px; top: 35%; right: 18%; border-color: rgba(255,255,255,0.12); animation: float3 9s ease-in-out infinite; }
   .shape-4 { width: 70px; height: 70px; bottom: 28%; left: 22%; border-color: rgba(255,255,255,0.1); animation: float2 7s ease-in-out infinite reverse; }
   
   @keyframes float1 { 0%,100%{transform:translateY(0) rotate(0deg)} 50%{transform:translateY(-24px) rotate(5deg)} }
   @keyframes float2 { 0%,100%{transform:translateY(0)} 50%{transform:translateY(-16px)} }
   @keyframes float3 { 0%,100%{transform:translateY(0) scale(1)} 50%{transform:translateY(-12px) scale(1.06)} }
   
   .home-content {
     position: relative;
     z-index: 1;
     text-align: center;
     padding: 0 20px;
     animation: fadeInUp 0.9s ease both;
   }
   
   @keyframes fadeInUp {
     from { opacity: 0; transform: translateY(28px); }
     to   { opacity: 1; transform: translateY(0); }
   }
   
   .home-title {
     font-size: clamp(2.8rem, 7.5vw, 5.5rem);
     font-weight: 700;
     letter-spacing: 0.04em;
     color: var(--white);
     line-height: 1.1;
     margin-bottom: 18px;
   }

   .home-tagline {
     font-size: clamp(0.9rem, 2vw, 1.15rem);
     font-weight: 400;
     letter-spacing: 0.22em;
     color: var(--blue-vivid);
     margin-bottom: 28px;
   }
   
   .home-subtitle {
     font-size: clamp(0.875rem, 1.8vw, 1rem);
     color: rgba(255,255,255,0.82);
     line-height: 2.2;
     margin-bottom: 48px;
     font-weight: 300;
     letter-spacing: 0.06em;
   }
   
   .cta-button {
     display: inline-block;
     padding: 16px 52px;
     background: var(--white);
     color: var(--blue-mid);
     font-size: 0.82rem;
     font-weight: 700;
     letter-spacing: 0.14em;
     border-radius: 100px;
     box-shadow: 0 8px 32px rgba(0,0,0,0.15);
     transition: transform var(--transition), box-shadow var(--transition), background var(--transition);
   }
   
   .cta-button:hover {
     transform: translateY(-3px);
     box-shadow: 0 14px 40px rgba(0,0,0,0.2);
     background: var(--blue-pale);
   }
   
   /* ========================================
      NEWS SECTION
      ======================================== */
   .news-section {
     padding: 72px 0;
     background: var(--white);
     border-bottom: 1px solid var(--gray-100);
   }
   
   .news-content { display: flex; flex-direction: column; gap: 12px; }
   
   .news-item {
     display: flex;
     align-items: center;
     gap: 28px;
     padding: 18px 0;
     border-bottom: 1px solid var(--gray-100);
     transition: opacity var(--transition);
   }

   .news-item:first-child {
     border-top: 1px solid var(--gray-100);
   }

   .news-item:hover {
     opacity: 0.7;
   }
   
   .news-date {
     font-size: 0.78rem;
     color: var(--gray-500);
     letter-spacing: 0.08em;
     white-space: nowrap;
     font-weight: 500;
   }
   
   .news-title {
     font-size: 0.92rem;
     font-weight: 500;
     color: var(--text);
   }
   
   .news-link {
     color: var(--blue-mid);
     text-decoration: underline;
     text-underline-offset: 3px;
     transition: color var(--transition);
   }
   .news-link:hover { color: var(--blue-deep); }

   /* ========================================
      SERVICES SECTION
      ======================================== */
   .services-section {
     padding: 120px 0;
     background: var(--gray-50);
   }
   
   .services-grid {
     display: grid;
     grid-template-columns: repeat(2, 1fr);
     gap: 20px;
   }
   
   .service-card {
     padding: 44px 36px;
     background: var(--white);
     border: 1.5px solid var(--gray-100);
     border-radius: var(--radius-lg);
     box-shadow: var(--shadow-sm);
     transition: box-shadow var(--transition), transform var(--transition), border-color var(--transition);
   }
   
   .service-card:hover {
     box-shadow: var(--shadow-md);
     transform: translateY(-5px);
     border-color: var(--blue-pale);
   }
   
   .service-icon {
     width: 60px; height: 60px;
     background: var(--blue-pale);
     border-radius: var(--radius-md);
     display: flex;
     align-items: center;
     justify-content: center;
     margin-bottom: 24px;
     color: var(--blue-mid);
     transition: background var(--transition), color var(--transition);
   }
   
   .service-card:hover .service-icon {
     background: linear-gradient(135deg, var(--blue-mid), var(--blue-vivid));
     color: var(--white);
   }
   
   .service-title {
     font-size: 1.05rem;
     font-weight: 700;
     color: var(--text);
     margin-bottom: 14px;
     line-height: 1.55;
   }
   
   .service-description {
     font-size: 0.865rem;
     color: var(--text-light);
     line-height: 1.95;
     font-weight: 300;
   }
   
   /* ========================================
      PERFORMANCE SECTION
      ======================================== */
   .performance-section {
     padding: 120px 0;
     background: var(--white);
   }
   
   .performance-list-container {
     display: flex;
     flex-direction: column;
     gap: 16px;
   }
   
   .performance-item {
     padding: 36px 40px;
     background: var(--gray-50);
     border-radius: var(--radius-lg);
     border: 1.5px solid var(--gray-100);
     transition: border-color var(--transition), box-shadow var(--transition), transform var(--transition);
   }
   
   .performance-item:hover {
     border-color: var(--blue-pale);
     box-shadow: var(--shadow-sm);
     transform: translateY(-2px);
   }
   
   .performance-content { flex: 1; }
   
   .performance-category {
     display: inline-block;
     font-size: 0.68rem;
     font-weight: 700;
     letter-spacing: 0.18em;
     text-transform: uppercase;
     color: var(--blue-mid);
     background: var(--blue-pale);
     padding: 4px 12px;
     border-radius: 100px;
     margin-bottom: 14px;
   }
   
   .performance-heading {
     font-size: 1.05rem;
     font-weight: 700;
     color: var(--text);
     margin-bottom: 10px;
     line-height: 1.65;
   }
   
   .performance-detail {
     font-size: 0.875rem;
     color: var(--text-light);
     line-height: 1.95;
     font-weight: 300;
   }
   
   .performance-note {
     margin-top: 20px;
     font-size: 0.75rem;
     color: var(--gray-500);
     letter-spacing: 0.04em;
   }
   
   /* ========================================
      ABOUT SECTION
      ======================================== */
   .about-section {
     padding: 120px 0;
     background: var(--gray-50);
   }
   
   .about-content {
     display: grid;
     grid-template-columns: 1fr 1fr;
     gap: 64px;
     align-items: stretch;
   }
   
   .company-info {
     background: var(--white);
     border-radius: var(--radius-lg);
     border: 1.5px solid var(--gray-100);
     overflow: hidden;
     box-shadow: var(--shadow-sm);
   }
   
   .info-row {
     display: grid;
     grid-template-columns: 90px 1fr;
     gap: 20px;
     padding: 20px 28px;
     border-bottom: 1px solid var(--gray-100);
     align-items: start;
   }
   
   .info-row:last-child { border-bottom: none; }
   
   .info-row dt {
     font-size: 0.75rem;
     font-weight: 700;
     letter-spacing: 0.08em;
     color: var(--blue-mid);
     padding-top: 2px;
   }
   
   .info-row dd {
     font-size: 0.875rem;
     color: var(--text);
     line-height: 1.85;
   }
   
   .info-row dd a {
     color: var(--blue-mid);
     text-decoration: underline;
     text-underline-offset: 3px;
   }
   
   .business-list {
     list-style: disc;
     padding-left: 1.2em;
     display: flex;
     flex-direction: column;
     gap: 4px;
   }
   
   .business-list li {
     font-size: 0.875rem;
     color: var(--text);
     font-weight: 300;
   }
   
   /* iframe は flex と同様に縦伸びが効かないことがあるため絶対配置で親いっぱいに */
   .about-map {
     position: relative;
     border-radius: var(--radius-lg);
     overflow: hidden;
     box-shadow: var(--shadow-md);
     border: 1.5px solid var(--gray-100);
     min-height: 0;
     align-self: stretch;
   }
   
   .about-map iframe {
     position: absolute;
     inset: 0;
     width: 100%;
     height: 100%;
     display: block;
     border: 0;
   }
   
   /* ========================================
      CONTACT SECTION
      ======================================== */
   .contact-section {
     padding: 120px 0;
     background: linear-gradient(160deg, var(--blue-pale2) 0%, var(--white) 60%);
   }
   
   .contact-content {
     text-align: center;
     max-width: 600px;
     margin: 0 auto;
   }
   
   .contact-text {
     font-size: 0.95rem;
     color: var(--text-light);
     line-height: 2.1;
     margin-bottom: 44px;
     font-weight: 300;
   }
   
   .contact-button {
     display: inline-flex;
     align-items: center;
     gap: 12px;
     padding: 20px 56px;
     background: linear-gradient(135deg, var(--blue-mid) 0%, var(--blue-vivid) 100%);
     color: var(--white);
     font-size: 0.875rem;
     font-weight: 700;
     letter-spacing: 0.1em;
     border-radius: 100px;
     box-shadow: 0 6px 28px rgba(14, 145, 212, 0.32);
     transition: transform var(--transition), box-shadow var(--transition);
   }
   
   .contact-button:hover {
     transform: translateY(-3px);
     box-shadow: 0 12px 40px rgba(14, 145, 212, 0.42);
   }
   
   /* ========================================
      FOOTER
      ======================================== */
   .footer {
     background: var(--text);
     padding: 64px 0 32px;
   }
   
   .footer-content {
     display: grid;
     grid-template-columns: 2fr 1fr 1.5fr;
     gap: 48px;
     padding-bottom: 48px;
     border-bottom: 1px solid rgba(255,255,255,0.08);
     margin-bottom: 28px;
   }
   
   .footer-logo h3 {
     font-size: 1rem;
     font-weight: 700;
     color: var(--white);
     letter-spacing: 0.06em;
     margin-bottom: 10px;
   }
   
   .footer-logo p {
     font-size: 0.8rem;
     color: rgba(255,255,255,0.45);
     line-height: 2;
     font-weight: 300;
   }
   
   .footer-nav h4,
   .footer-info h4 {
     font-size: 0.68rem;
     font-weight: 700;
     letter-spacing: 0.2em;
     text-transform: uppercase;
     color: var(--white);
     margin-bottom: 18px;
   }
   
   .footer-nav ul { display: flex; flex-direction: column; gap: 10px; }
   
   .footer-nav a {
     font-size: 0.82rem;
     color: rgba(255,255,255,0.45);
     transition: color var(--transition);
   }
   .footer-nav a:hover { color: var(--white); }
   
   .footer-info p {
     font-size: 0.82rem;
     color: rgba(255,255,255,0.45);
     line-height: 2;
   }
   
   .footer-info a {
     color: rgba(255,255,255,0.45);
     transition: color var(--transition);
   }
   .footer-info a:hover { color: var(--white); }
   
   .footer-bottom { text-align: center; }
   
   .footer-bottom p {
     font-size: 0.72rem;
     color: rgba(255,255,255,0.22);
     letter-spacing: 0.06em;
   }
   
   .footer-bottom a {
     color: rgba(255,255,255,0.32);
     text-decoration: underline;
     text-underline-offset: 3px;
   }
   
   /* ========================================
      RESPONSIVE
      ======================================== */
   @media (max-width: 900px) {
     .container { padding: 0 28px; }
     .header-container { padding: 0 28px; }
     .services-grid { grid-template-columns: 1fr; }
     .about-content { grid-template-columns: 1fr; gap: 36px; }
     .about-map { min-height: 280px; }
     .footer-content { grid-template-columns: 1fr 1fr; }
     .footer-logo { grid-column: 1 / -1; }
   }
   
   @media (max-width: 640px) {
     .pc-only { display: none; }
     .container { padding: 0 20px; }
     .header-container { padding: 0 20px; }
   
     .js-menu-toggle { display: flex; }
   
     .nav-list {
       display: none;
       position: fixed;
       inset: 0;
       background: rgba(11, 77, 120, 0.97);
       flex-direction: column;
       align-items: center;
       justify-content: center;
       gap: 36px;
       z-index: 99;
     }
     .nav-list.active { display: flex; }
     .nav-list a { font-size: 1.1rem; color: var(--white); }
   
     .services-section,
     .performance-section,
     .about-section,
     .contact-section { padding: 72px 0; }
   
     .service-card { padding: 28px 22px; }
     .performance-item { padding: 24px 22px; }
     .footer-content { grid-template-columns: 1fr; gap: 28px; }
   
     .news-item {
       flex-direction: column;
       gap: 6px;
       padding: 18px 20px;
     }
   
     .about-map { min-height: 300px; }
   }