:root{
	--color-primary:#0D7886;
	--color-accent:#F0F8FA;
	--color-text:#333333;
	--color-text-secondary:#666666;
}

/* BEM helpers (Tailwindã®@applyã‚'ä½¿ã‚ãšãƒ—ãƒ¬ãƒ¼ãƒ³CSSã§è¡¨ç¾) */
.btn{ display:inline-flex; align-items:center; justify-content:center; padding:0.75rem 1.25rem; border-radius:0.375rem; transition:transform .2s ease, box-shadow .2s ease; }
.btn--primary{ background:var(--color-primary); color:#fff; }
.btn--primary:hover{ transform:scale(1.05); }
.btn--secondary{ background:#fff; color:var(--color-primary); outline:1px solid var(--color-primary); }
.btn--secondary:hover{ transform:scale(1.05); }

/* Accent (orange) for CTA */
.btn--accent{ 
  background:#FF7A00; 
  color:#fff; 
  box-shadow:0 6px 20px rgba(255,122,0,.25); 
  transform: scale(1.3);
  transform-origin: center;
  font-weight: 600;
  letter-spacing: 0.5px;
  text-shadow: 0 1px 2px rgba(0,0,0,0.1);
}
.btn--accent:hover{ 
  transform:scale(1.35) translateY(-2px); 
  box-shadow:0 12px 35px rgba(255,122,0,.4); 
}
.btn--accent-outline{ 
  background:#fff; 
  color:#FF7A00; 
  outline:2px solid #FF7A00; 
  transform: scale(1.3);
  transform-origin: center;
  font-weight: 600;
  letter-spacing: 0.5px;
}
.btn--accent-outline:hover{ 
  transform:scale(1.35) translateY(-2px); 
  box-shadow:0 12px 35px rgba(255,122,0,.3); 
}

.card{ background:#fff; border-radius:0.75rem; box-shadow:0 1px 2px rgba(0,0,0,.06); overflow:hidden; transition:transform .2s ease, box-shadow .2s ease; }
.card:hover{ transform: translateY(-5px); box-shadow: 0 10px 25px rgba(0,0,0,.08); }
.card__image{ width:100%; height:12rem; object-fit:cover; }
.card__body{ padding:1rem; }
.card__title{ font-weight:600; margin-bottom:.25rem; }
.card__text{ font-size:.875rem; color:var(--color-text-secondary); }

/* ã‚¹ã‚¿ãƒƒãƒ•ãƒ¡ãƒ³ãƒãƒ¼ã‚«ãƒ¼ãƒ‰ã‚'ç¸¦æ–¹å'ã«120%æ‹¡å¼µ */
#staff .card{ 
  min-height: 450px; 
  display: flex; 
  flex-direction: column; 
  align-items: center;
  text-align: center;
  padding: 1rem;
}
#staff .card__image{ 
  width: 200px; 
  height: 200px; 
  object-fit: cover; 
  object-position: center; 
  border-radius: 50%;
  margin: 1rem auto 1.5rem auto;
  display: block;
  box-shadow: 0 4px 12px rgba(0,0,0,0.1);
  transition: transform 0.3s ease, box-shadow 0.3s ease;
}
#staff .card__body{ 
  padding: 0 1rem 1rem 1rem; 
  flex: 1; 
  display: flex; 
  flex-direction: column; 
  justify-content: flex-start; 
  text-align: left;
  width: 100%;
}
#staff .card__title{
  font-size: 1.1rem;
  font-weight: 600;
  margin-bottom: 0.75rem;
  color: var(--color-text);
}
#staff .card__text{
  font-size: 0.9rem;
  line-height: 1.5;
  color: var(--color-text-secondary);
}
#staff .card:hover{ transform: translateY(-5px); }
#staff .card:hover .card__image{ 
  box-shadow: 0 8px 20px rgba(0,0,0,0.15);
  transform: scale(1.05);
}

.modern-table{ width:100%; border-collapse:separate; border-spacing:0 0.5rem; }
.modern-table th{ vertical-align:top; font-size:.875rem; color:var(--color-text-secondary); padding-right:1.5rem; white-space:nowrap; }
.modern-table td{ font-size:clamp(14px, 1vw, 16px); }

/* ä¼æ¥­æ¦‚è¦ãƒ†ãƒ¼ãƒ–ãƒ«ã®ä¸‹ç·šã‚'å®Ÿç·šã«å¤‰æ›´ */
#company .modern-table tr{ border-bottom: 1px solid #e5e7eb; }
#company .modern-table tr:last-child{ border-bottom: none; }

/* Header color change on scroll - å¸¸æ™‚#0D7886ã«å¤‰æ›´ */
.site-header{ 
  background: transparent; 
}
.site-header.is-scrolled{ 
  background: rgba(13, 120, 134, 0.9); 
}

/* ãƒ˜ãƒƒãƒ€ãƒ¼æ–‡å­—ã‚µã‚¤ã‚ºã®èª¿æ•´ */
.site-header .font-semibold {
  font-size: 1.25rem;
  font-weight: 600;
}

.site-header .nav-link {
  font-size: 1.1rem;
  font-weight: 500;
  padding: 0.75rem 0.5rem;
}

.site-header img {
  height: 2.5rem;
  width: auto;
}

/* Hero / Tagline ã‚¹ãƒ©ã‚¤ãƒ‰ã‚·ãƒ§ãƒ¼èƒŒæ™¯ */
.hero-section{ 
  position: relative; 
  overflow: hidden; 
  min-height: 66.67vh;
  display: flex;
  align-items: center;
}
.hero-background{ 
  position: absolute; 
  top: 0; 
  left: 0; 
  width: 100%; 
  height: 100%; 
  z-index: 1; 
}
.hero-slide{ 
  position: absolute; 
  top: 0; 
  left: 0; 
  width: 100%; 
  height: 100%; 
  opacity: 0; 
  transition: opacity 2s ease-in-out;
  background-size: cover; 
  background-position: center; 
  background-repeat: no-repeat;
}
.hero-slide.active{ 
  opacity: 1; 
}
.hero-overlay{
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: rgba(13, 120, 134, 0.7);
  z-index: 2;
}
.hero-section .tagline{
  font-size: clamp(32px, 6vw, 80px);
  line-height: 1.2;
  text-shadow: 0 2px 4px rgba(0,0,0,0.3);
  text-align: left;
  font-weight: 700;
  letter-spacing: 0.02em;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-rendering: optimizeLegibility;
}

/* Typography */
.tagline{ color:var(--color-primary); font-weight:700; font-size:clamp(24px, 4vw, 40px); }
.tagline--inverse{ color:#fff; }
.lead{ margin-top:1rem; max-width:48rem; color:var(--color-text-secondary); font-size:clamp(14px, 2.2vw, 18px); }

/* Nav links */
.nav-link{ position:relative; }
.nav-link{ padding: .5rem .25rem; }
.nav-link:focus-visible{ outline:2px solid #fff; outline-offset:2px; border-radius:4px; }
.nav-link.is-active::after{ content:""; position:absolute; left:0; right:0; bottom:-6px; height:2px; background:#fff; opacity:.9; }

/* Parallax placeholder */
.parallax{ background:linear-gradient(180deg, rgba(13,120,134,0.15), rgba(240,248,250,0.15)); }

/* CTA pulse animation */
[data-cta]{ will-change: transform; }
[data-cta].pulse{ animation:pulse 1.6s ease-in-out infinite; }
@keyframes pulse{
	0%,100%{ transform:scale(1); box-shadow:0 0 0 0 rgba(13,120,134,.0); }
	50%{ transform:scale(1.05); box-shadow:0 10px 30px rgba(13,120,134,.18); }
}

/* Links transition */
a{ transition: color .2s ease; }
a:hover{ color:var(--color-primary); }

/* CLS mitigation for common images */
.card__image{ aspect-ratio: 16/9; }
img[alt="ä¼æ¥­ãƒ­ã‚´"], header img{ aspect-ratio: auto; height:auto; }
img[alt*="ãƒãƒŠãƒ¼"]{ aspect-ratio: 16/9; }

/* ç§ãŸã¡ã«ã¤ã„ã¦ã‚»ã‚¯ã‚·ãƒ§ãƒ³ã®ãƒ­ã‚´ç"»åƒã‚µã‚¤ã‚ºèª¿æ•´ */
#about img[alt="ä¼æ¥­ãƒ­ã‚´"]{
  width: 70%;
  height: auto;
  margin: 0 auto;
  display: block;
}

/* äº‹æ¥­å†…å®¹ã‚»ã‚¯ã‚·ãƒ§ãƒ³ã®CTAãƒœã‚¿ãƒ³é…ç½®æœ€é©åŒ– */
#business .btn--accent,
#business .btn--accent-outline {
  min-width: 280px;
  padding: 1rem 2rem;
  font-size: 1.1rem;
  white-space: nowrap;
}

#business .flex.flex-col {
  padding: 2rem 0;
  min-height: 300px;
  justify-content: center;
  gap: 47px;
}

/* Reduce motion preference */
@media (prefers-reduced-motion: reduce){
	*{ animation: none!important; transition: none!important; scroll-behavior: auto!important; }
}

/* ã‚¹ãƒžãƒ›è¡¨ç¤ºã§ã®å³å´ä½™ç™½å•é¡Œä¿®æ­£ */
@media (max-width: 640px) {
  .mx-auto.max-w-7xl {
    padding-left: 1rem;
    padding-right: 1rem;
  }
  
  /* Googleãƒžãƒƒãƒ—ã®ã‚¹ãƒžãƒ›è¡¨ç¤ºèª¿æ•´ */
  #access iframe {
    width: 100%;
    height: 300px;
    max-width: 100%;
  }
  
  #access .h-\[400px\] {
    height: 300px;
  }
  
  /* ãƒ˜ãƒƒãƒ€ãƒ¼ä¼æ¥­åã®ã‚¹ãƒžãƒ›è¡¨ç¤ºèª¿æ•´ */
  .site-header .font-semibold {
    font-size: 1rem;
  }
  
  .site-header img {
    height: 2rem;
  }
}

/* ===========================================
   スマホでの左側余白問題修正
   =========================================== */

/* 1. 全体のコンテナ設定を強化 */
html, body {
  width: 100%;
  max-width: 100%;
  overflow-x: hidden;
}

/* 2. 基本コンテナの最大幅制限 */
* {
  box-sizing: border-box;
}

/* 3. スマホでの具体的な修正 */
@media (max-width: 640px) {
  /* 全てのコンテナの幅制限 */
  .mx-auto.max-w-7xl,
  .max-w-7xl {
    width: 100%;
    max-width: 100%;
    padding-left: 0.75rem;
    padding-right: 0.75rem;
    overflow-x: hidden;
  }
  
  /* CTAボタンのサイズ調整 */
  #business .btn--accent,
  #business .btn--accent-outline {
    min-width: auto;
    width: 100%;
    max-width: 250px;
    padding: 0.875rem 1.5rem;
    font-size: 1rem;
  }
  
  /* Grid レイアウトのgap調整 */
  .grid {
    gap: 1rem;
  }
  
  .gap-8 {
    gap: 1rem;
  }
  
  .gap-6 {
    gap: 0.75rem;
  }
  
  /* テーブルの横スクロール対策 */
  .overflow-x-auto {
    width: 100%;
    max-width: calc(100vw - 1.5rem);
  }
  
  /* iframe要素の幅制限 */
  iframe {
    width: 100% !important;
    max-width: 100% !important;
  }
  
  /* YouTube動画のコンテナ */
  .aspect-video {
    width: 100%;
    max-width: 100%;
  }
  
  /* Googleマップのコンテナ */
  #access .h-\[400px\],
  #access iframe {
    width: 100% !important;
    height: 250px;
    max-width: 100% !important;
  }
  
  /* 画像の最大幅制限 */
  img {
    max-width: 100%;
    height: auto;
  }
  
  /* ヘッダーの調整 */
  .site-header .mx-auto {
    padding-left: 0.75rem;
    padding-right: 0.75rem;
  }
  
  /* フッターの調整 */
  footer .mx-auto {
    padding-left: 0.75rem;
    padding-right: 0.75rem;
  }
  
  /* セクション間の余白調整 */
  section {
    overflow-x: hidden;
  }
  
  /* 事業内容セクションの特別な調整 */
  #business .flex.flex-col {
    gap: 1.5rem;
    padding: 1rem 0;
    min-height: auto;
  }
  
  /* スタッフカードの調整 */
  #staff .grid {
    gap: 1rem;
  }
  
  /* 企業概要テーブルの調整 */
  #company .modern-table {
    font-size: 14px;
  }
  
  #company .modern-table th {
    padding-right: 0.75rem;
    font-size: 13px;
  }
}

/* 4. より小さなデバイス用の追加修正 */
@media (max-width: 375px) {
  .mx-auto.max-w-7xl {
    padding-left: 0.5rem;
    padding-right: 0.5rem;
  }
  
  #business .btn--accent,
  #business .btn--accent-outline {
    font-size: 0.9rem;
    padding: 0.75rem 1rem;
  }
  
  .hero-section .tagline {
    font-size: clamp(24px, 8vw, 48px);
  }
}

/* 5. 横方向のスクロール完全防止 */
body {
  position: relative;
  overflow-x: hidden;
}

#app {
  overflow-x: hidden;
  width: 100%;
  max-width: 100%;
}

/* 6. ビューポート単位の使用を避ける */
@media (max-width: 640px) {
  .w-full {
    width: 100% !important;
    max-width: 100% !important;
  }
}