/*
 Theme Name:   Hello Elementor Child — Su-Techs
 Theme URI:    https://su-techs.com/
 Description:  Hello Elementor child theme for Su-Techs redesign
 Author:       Su-Techs Inc.
 Author URI:   https://su-techs.com/
 Template:     hello-elementor
 Version:      1.3.3
 Text Domain:  hello-elementor-child
*/

/* ============================================================
   DESIGN TOKENS
   ============================================================ */
:root {
  --blue:       #1478C8;
  --blue-mid:   #0F5FA8;
  --blue-dark:  #0B3470;
  --blue-deep:  #071D42;
  --blue-light: #E4F0FA;
  --pink:       #E8457A;
  --pink-dark:  #C33367;
  --white:      #FFFFFF;
  --text:       #0D1E35;
  --text-sub:   #5E6E82;
  --border:     #E0E8F0;
  --off:        #F6F9FC;

  --font:    'M PLUS 1p', 'Hiragino Kaku Gothic ProN', 'Noto Sans JP', sans-serif;
  --font-en: 'Montserrat', sans-serif;
  --ease:    cubic-bezier(.25,.46,.45,.94);
  --max:     1160px;
  --px:      clamp(1.1rem, 4vw, 2.5rem);
  --hh:      72px;
}

/* ============================================================
   GLOBAL RESET & BASE
   ============================================================ */
*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; }
html, body { overflow-x: hidden; }

body {
  font-family: var(--font);
  color: var(--text);
  background: var(--white);
  -webkit-font-smoothing: antialiased;
  line-height: 1.85;
}

a { color: inherit; text-decoration: none; }
img { display: block; max-width: 100%; }

/* ============================================================
   SCROLL ANIMATION UTILITY
   ============================================================ */
.fi {
  opacity: 0;
  transform: translateY(20px);
  transition: opacity .6s ease, transform .6s ease;
}
.fi.on { opacity: 1; transform: none; }
.d1 { transition-delay: .00s; }
.d2 { transition-delay: .08s; }
.d3 { transition-delay: .16s; }
.d4 { transition-delay: .24s; }
.d5 { transition-delay: .32s; }
.d6 { transition-delay: .40s; }

/* ============================================================
   HEADER — カスタム (header.php)
   .hdr / #hdr  モックアップ準拠
   ============================================================ */
.hdr {
  position: fixed;
  inset: 0 0 auto;
  height: var(--hh);
  z-index: 200;
  transition: background .28s, box-shadow .28s;
}
/* スクロール後: JS が .on を付与 */
.hdr.on {
  background: rgba(255,255,255,.96) !important;
  backdrop-filter: blur(14px);
  -webkit-backdrop-filter: blur(14px);
  box-shadow: 0 1px 16px rgba(0,0,0,.07);
}
/* WP管理バー表示中 */
body.admin-bar .hdr { top: 32px; }
@media screen and (max-width: 782px) {
  body.admin-bar .hdr { top: 46px; }
}
/* スマホ(<600px)では WP admin-bar が display:none になるのでヘッダーを top:0 に戻す */
@media screen and (max-width: 600px) {
  body.admin-bar .hdr     { top: 0 !important; }
  body.admin-bar .hdr-mob { top: var(--hh) !important; }
}

.hdr .wrap {
  display: flex;
  align-items: center;
  justify-content: space-between;
  height: 100%;
}

/* ロゴ */
.hdr-logo img {
  height: 34px;
  width: auto;
  display: block;
  transition: opacity .28s;
}
.hdr:not(.on) .hdr-logo img { opacity: .92; }

/* PC ナビ */
.hdr-nav {
  display: flex;
  align-items: center;
  gap: 2rem;
}
.hdr-nav a {
  font-family: var(--font-en);
  font-size: .75rem;
  font-weight: 600;
  letter-spacing: .13em;
  text-transform: uppercase;
  color: rgba(255,255,255,.88);
  transition: color .28s;
  position: relative;
  padding-bottom: 2px;
}
.hdr-nav a::after {
  content: '';
  position: absolute;
  left: 0; bottom: -2px;
  width: 0; height: 2px;
  background: var(--pink);
  transition: width .28s;
  border-radius: 2px;
}
.hdr-nav a:hover::after,
.hdr-nav a.current::after { width: 100%; }
.hdr.on .hdr-nav a { color: var(--text); }

/* Blog Coming Soon */
.hdr-nav-soon {
  font-family: var(--font-en);
  font-size: .75rem;
  font-weight: 600;
  letter-spacing: .13em;
  text-transform: uppercase;
  color: rgba(255,255,255,.28);
  cursor: default;
  user-select: none;
}
.hdr.on .hdr-nav-soon { color: rgba(0,0,0,.22); }

/* Contact ボタン */
.hdr-cta {
  font-family: var(--font-en);
  font-size: .75rem;
  font-weight: 600;
  letter-spacing: .12em;
  text-transform: uppercase;
  padding: .5rem 1.3rem;
  border-radius: 4px;
  background: var(--pink);
  color: #fff !important;
  transition: background .28s, transform .28s;
}
.hdr-cta:hover { background: var(--pink-dark); transform: translateY(-1px); }
.hdr-cta::after { display: none !important; }

/* ハンバーガー（SP） */
.burger {
  display: none;
  flex-direction: column;
  gap: 5px;
  background: none;
  border: none;
  cursor: pointer;
  padding: 6px;
}
.burger span {
  display: block;
  width: 22px;
  height: 1.8px;
  background: rgba(255,255,255,.85);
  border-radius: 2px;
  transition: background .28s, transform .3s;
}
.hdr.on .burger span { background: var(--text); }

/* SP モバイルナビ オーバーレイ */
.hdr-mob {
  position: fixed;
  top: var(--hh);
  left: 0; right: 0;
  background: var(--blue-deep);
  padding: .5rem 0 1.5rem;
  display: flex;
  flex-direction: column;
  transform: translateY(-110%);
  opacity: 0;
  visibility: hidden;
  transition: transform .3s var(--ease), opacity .3s, visibility .3s;
  z-index: 199;
  box-shadow: 0 8px 28px rgba(0,0,0,.3);
}
body.admin-bar .hdr-mob { top: calc(var(--hh) + 32px); }
@media screen and (max-width: 782px) {
  body.admin-bar .hdr-mob { top: calc(var(--hh) + 46px); }
}
.hdr-mob.open {
  transform: translateY(0);
  opacity: 1;
  visibility: visible;
}
.hdr-mob a,
.hdr-mob .hdr-nav-soon {
  font-family: var(--font-en);
  font-size: .75rem;
  font-weight: 600;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: rgba(255,255,255,.82);
  padding: 1rem var(--px);
  border-bottom: 1px solid rgba(255,255,255,.06);
  transition: background .2s, color .2s;
}
.hdr-mob a:hover { color: #fff; background: rgba(255,255,255,.04); }
.hdr-mob .hdr-nav-soon { color: rgba(255,255,255,.25); cursor: default; }
.hdr-mob .hdr-cta-mob {
  margin: 1rem var(--px) 0;
  padding: .75rem 1.3rem;
  border-bottom: none;
  background: var(--pink);
  color: #fff !important;
  border-radius: 4px;
  text-align: center;
}
.hdr-mob .hdr-cta-mob:hover { background: var(--pink-dark); }

/* SP レスポンシブ */
@media (max-width: 767px) {
  .hdr-nav { display: none; }
  .burger   { display: flex; }
}

/* ============================================================
   HEADER — Elementor Pro Theme Builder (フォールバック)
   header.php がない環境向けに残す
   実際のセレクタ: .elementor-location-header
   ============================================================ */
.elementor-location-header {
  position: fixed !important;
  top: 0 !important;
  left: 0 !important;
  right: 0 !important;
  z-index: 9000 !important;
  background: rgba(7,29,66,.95) !important;
  backdrop-filter: blur(12px) !important;
  -webkit-backdrop-filter: blur(12px) !important;
  border-bottom: 1px solid rgba(255,255,255,.08) !important;
  transition: background .3s ease, box-shadow .3s ease, top .15s ease !important;
}

/* WP管理バー表示中 (ログイン時): 32px 下げる */
body.admin-bar .elementor-location-header {
  top: 32px !important;
}
@media screen and (max-width: 782px) {
  body.admin-bar .elementor-location-header {
    top: 46px !important;
  }
}

/* スクロール後（JS が .scrolled を付与） */
.elementor-location-header.scrolled {
  background: rgba(255,255,255,.98) !important;
  box-shadow: 0 2px 20px rgba(0,0,0,.08) !important;
  border-bottom-color: var(--border) !important;
}

/* ヘッダー内セクション・コンテナの背景を透明に */
.elementor-location-header .elementor-section,
.elementor-location-header .elementor-container {
  background: transparent !important;
  background-color: transparent !important;
}

/* ヘッダーセクション 高さ統一 */
.elementor-element-35e4868,
.elementor-element-047cd7b {
  min-height: var(--hh) !important;
}

/* ヘッダーコンテナ・列を縦方向中央揃え */
.elementor-element-35e4868 > .elementor-container,
.elementor-element-047cd7b > .elementor-container {
  align-items: center !important;
  min-height: var(--hh) !important;
}

/* ロゴ列 (Desktop: d406d7d / Mobile: 03ac305) */
.elementor-element-d406d7d.elementor-column > .elementor-widget-wrap,
.elementor-element-03ac305.elementor-column > .elementor-widget-wrap {
  justify-content: center !important;
  align-items: center !important;
}

/* ナビ列 (Desktop: 5e1f0b2 / Mobile: 336651a) */
.elementor-element-5e1f0b2.elementor-column > .elementor-widget-wrap,
.elementor-element-336651a.elementor-column > .elementor-widget-wrap {
  justify-content: center !important;
  align-items: center !important;
}

/* ロゴ画像
   Desktop: elementor-element-257e172
   Mobile:  elementor-element-dd00ef0  */
.elementor-location-header .elementor-element-257e172 img,
.elementor-location-header .elementor-element-dd00ef0 img,
.elementor-location-header .elementor-widget-site-logo img,
.elementor-location-header .custom-logo {
  height: 40px !important;
  width: auto !important;
  max-width: none !important;
  object-fit: contain !important;
  filter: none !important;
  opacity: 1 !important;
  display: block !important;
  transition: opacity .3s !important;
}
/* SP: ロゴをやや小さく */
@media (max-width: 767px) {
  .elementor-location-header .elementor-element-dd00ef0 img {
    height: 32px !important;
  }
}

/* nav widget の上パディングをリセット */
.elementor-location-header .elementor-element-d164d7e > .elementor-widget-container,
.elementor-location-header .elementor-element-a8f7a7c > .elementor-widget-container {
  padding-top: 0 !important;
  padding-bottom: 0 !important;
  margin: 0 !important;
}

/* ナビゲーション — PC水平メニュー */
.elementor-location-header .elementor-nav-menu .elementor-item,
.elementor-location-header .elementor-nav-menu a.elementor-item {
  font-weight: 600 !important;
  letter-spacing: .06em !important;
  color: rgba(255,255,255,.85) !important;
  transition: color .25s !important;
  padding: 0 1rem !important;
}
.elementor-location-header.scrolled .elementor-nav-menu .elementor-item,
.elementor-location-header.scrolled .elementor-nav-menu a.elementor-item {
  color: var(--text-sub) !important;
}
.elementor-location-header .elementor-nav-menu .elementor-item:hover,
.elementor-location-header .elementor-nav-menu .elementor-item-active,
.elementor-location-header .elementor-nav-menu .current-menu-item > a {
  color: var(--blue) !important;
}

/* ハンバーガーアイコン（SP） */
.elementor-location-header .elementor-menu-toggle,
.elementor-location-header .elementor-menu-toggle i,
.elementor-location-header .elementor-menu-toggle svg {
  color: rgba(255,255,255,.9) !important;
  fill: rgba(255,255,255,.9) !important;
  border-color: rgba(255,255,255,.3) !important;
}
.elementor-location-header.scrolled .elementor-menu-toggle,
.elementor-location-header.scrolled .elementor-menu-toggle i,
.elementor-location-header.scrolled .elementor-menu-toggle svg {
  color: var(--text) !important;
  fill: var(--text) !important;
  border-color: var(--border) !important;
}

/* SP ドロップダウンメニュー */
.elementor-location-header .elementor-nav-menu--dropdown {
  background: var(--blue-deep) !important;
  border-color: rgba(255,255,255,.08) !important;
  border-radius: 0 0 12px 12px !important;
  box-shadow: 0 12px 32px rgba(0,0,0,.25) !important;
}
.elementor-location-header .elementor-nav-menu--dropdown .elementor-item,
.elementor-location-header .elementor-nav-menu--dropdown .elementor-sub-item {
  color: rgba(255,255,255,.82) !important;
  border-bottom: 1px solid rgba(255,255,255,.06) !important;
  padding: 1rem 1.4rem !important;
}
.elementor-location-header .elementor-nav-menu--dropdown .elementor-item:hover {
  color: #fff !important;
  background: rgba(255,255,255,.05) !important;
}

/* ページ本文をヘッダー固定分だけ下げる (Elementor標準ページ用) */
.site-main,
#content {
  padding-top: var(--hh) !important;
}
body.admin-bar .site-main,
body.admin-bar #content {
  padding-top: calc(var(--hh) + 32px) !important;
}
@media screen and (max-width: 782px) {
  body.admin-bar .site-main,
  body.admin-bar #content {
    padding-top: calc(var(--hh) + 46px) !important;
  }
}

/* ============================================================
   HERO SECTION
   ============================================================ */
.hero-section,
.elementor-section.is-hero,
section.hero {
  min-height: 100vh;
  background: linear-gradient(150deg, var(--blue-deep) 0%, var(--blue-dark) 60%, #0E3A7A 100%);
  display: flex;
  align-items: center;
  position: relative;
  overflow: hidden;
}

/* ============================================================
   PAGE HERO BANNER (サブページ共通)
   ============================================================ */
.page-hero,
.ph {
  padding-top: var(--hh);
  background: linear-gradient(135deg, var(--blue-deep) 0%, var(--blue-dark) 100%);
  position: relative;
  overflow: hidden;
}
.page-hero::before,
.ph::before {
  content: '';
  position: absolute; inset: 0;
  background: radial-gradient(ellipse 80% 80% at 60% 50%, rgba(20,120,200,.18), transparent);
  pointer-events: none;
}
.page-hero-inner,
.ph-inner {
  text-align: center;
  padding: 4.5rem 1rem 4rem;
  position: relative; z-index: 1;
}
.page-hero-en,
.ph-en {
  font-family: var(--font-en);
  font-size: .68rem;
  font-weight: 600;
  letter-spacing: .3em;
  text-transform: uppercase;
  color: var(--pink);
  margin-bottom: .8rem;
}
.page-hero-title,
.ph-h {
  font-size: clamp(1.8rem, 4vw, 2.8rem);
  font-weight: 700;
  color: #fff;
  letter-spacing: .06em;
}

/* ============================================================
   SECTION COMMON
   ============================================================ */
.section-label,
.lbl {
  display: block;
  font-family: var(--font-en);
  font-size: .6rem;
  font-weight: 600;
  letter-spacing: .25em;
  text-transform: uppercase;
  color: var(--pink);
  margin-bottom: .9rem;
}
.section-heading,
.sh {
  font-size: clamp(1.4rem, 3vw, 2rem);
  font-weight: 700;
  letter-spacing: .05em;
  line-height: 1.4;
}
.section-sub,
.sec-sub {
  font-size: .92rem;
  color: var(--text-sub);
  line-height: 1.9;
  margin-top: .8rem;
}

/* ============================================================
   BUTTONS
   ============================================================ */
.btn-primary,
.elementor-button.btn-primary {
  display: inline-flex;
  align-items: center;
  gap: .6rem;
  font-family: var(--font-en) !important;
  font-size: .72rem !important;
  font-weight: 600 !important;
  letter-spacing: .18em !important;
  text-transform: uppercase !important;
  background: linear-gradient(135deg, var(--pink), var(--pink-dark)) !important;
  color: #fff !important;
  padding: .95rem 2.4rem !important;
  border-radius: 999px !important;
  border: none !important;
  box-shadow: 0 8px 28px rgba(232,69,122,.35) !important;
  transition: opacity .25s, transform .25s !important;
}
.btn-primary:hover,
.elementor-button.btn-primary:hover {
  opacity: .88 !important;
  transform: translateY(-2px) !important;
}

.btn-outline,
.elementor-button.btn-outline {
  display: inline-flex;
  align-items: center;
  gap: .6rem;
  font-family: var(--font-en) !important;
  font-size: .72rem !important;
  font-weight: 600 !important;
  letter-spacing: .18em !important;
  text-transform: uppercase !important;
  background: transparent !important;
  color: #fff !important;
  padding: .9rem 2.2rem !important;
  border-radius: 999px !important;
  border: 1.5px solid rgba(255,255,255,.4) !important;
  transition: border-color .25s, background .25s !important;
}
.btn-outline:hover { border-color: #fff !important; background: rgba(255,255,255,.06) !important; }

/* ============================================================
   SERVICE CARDS (app-icon style)
   ============================================================ */
.srv-card,
.service-card {
  background: var(--white);
  border: 1px solid var(--border);
  border-radius: 14px;
  padding: 2rem 1.8rem;
  box-shadow: 0 4px 24px rgba(11,52,112,.08);
  transition: box-shadow .36s var(--ease), transform .36s var(--ease);
  position: relative; overflow: hidden;
}
.srv-card:hover,
.service-card:hover {
  box-shadow: 0 16px 44px rgba(11,52,112,.16);
  transform: translateY(-5px);
}
.srv-card::after,
.service-card::after {
  content: ''; position: absolute; bottom: 0; left: 0; right: 0; height: 3px;
  background: linear-gradient(90deg, var(--blue), var(--pink));
  transform: scaleX(0); transform-origin: left;
  transition: transform .36s var(--ease);
}
.srv-card:hover::after,
.service-card:hover::after { transform: scaleX(1); }

/* App icon */
.app-icon {
  width: 58px; height: 58px; border-radius: 16px;
  display: flex; align-items: center; justify-content: center;
  margin-bottom: 1.4rem;
  box-shadow: 0 6px 18px rgba(0,0,0,.14);
}
.app-icon svg { width: 28px; height: 28px; color: #fff; }
.ai1 { background: linear-gradient(135deg, #1478C8, #1AAAE0); }
.ai2 { background: linear-gradient(135deg, #0F5FA8, #7B52D8); }
.ai3 { background: linear-gradient(135deg, #0E8AB0, #1478C8); }

/* ============================================================
   FOOTER — カスタム (footer.php)
   ============================================================ */
.ftr {
  background: var(--blue-deep);
  color: rgba(255,255,255,.55);
  padding: 4rem 0 2rem;
}
.ftr-top {
  display: grid;
  grid-template-columns: 1.6fr 1fr 1fr;
  gap: 3rem;
  margin-bottom: 3rem;
}
.ftr-logo img {
  height: 28px;
  width: auto;
  display: block;
  margin-bottom: 1.2rem;
}
.ftr-desc {
  font-size: .82rem;
  color: rgba(255,255,255,.42);
  line-height: 1.9;
  max-width: 260px;
}
.ftr-nav h4 {
  font-family: var(--font-en);
  font-size: .6rem;
  font-weight: 600;
  letter-spacing: .2em;
  text-transform: uppercase;
  color: rgba(255,255,255,.28);
  margin-bottom: 1.2rem;
}
.ftr-nav ul { display: flex; flex-direction: column; gap: .7rem; }
.ftr-nav a {
  font-size: .82rem;
  color: rgba(255,255,255,.52);
  transition: color .2s;
}
.ftr-nav a:hover { color: #fff; }
.ftr-compliance {
  display: flex;
  justify-content: center;
  align-items: center;
  gap: 2rem;
  padding: .9rem 0;
  border-top: 1px solid rgba(255,255,255,.08);
  margin-top: .5rem;
}
.ftr-compliance a {
  font-size: .72rem;
  color: rgba(255,255,255,.45);
  transition: color .2s;
}
.ftr-compliance a:hover { color: rgba(255,255,255,.85); }
.ftr-btm {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding-top: 1.8rem;
  border-top: 1px solid rgba(255,255,255,.07);
  font-family: var(--font-en);
  font-size: .72rem;
  color: rgba(255,255,255,.22);
}
.ftr-btm .pk { color: rgba(255,255,255,.18); }

@media (max-width: 767px) {
  .ftr-top {
    grid-template-columns: 1fr;
    gap: 2rem;
  }
  .ftr-btm {
    flex-direction: column;
    gap: .5rem;
    text-align: center;
  }
  /* Elementor フォールバック footer */
  .footer-bottom,
  .site-footer .footer-copyright {
    flex-direction: column;
    gap: .5rem;
    text-align: center;
  }
}

/* ============================================================
   FOOTER — Elementor Pro Theme Builder (フォールバック)
   実際のセレクタ: .elementor-location-footer
   ============================================================ */
.elementor-location-footer,
.site-footer,
#site-footer {
  background: var(--blue-deep) !important;
  color: rgba(255,255,255,.55) !important;
}

.elementor-location-footer .elementor-section,
.elementor-location-footer .elementor-container {
  background: transparent !important;
  background-color: transparent !important;
}

.elementor-location-footer a,
.site-footer a,
#site-footer a {
  color: rgba(255,255,255,.55) !important;
  transition: color .2s;
}
.elementor-location-footer a:hover,
.site-footer a:hover,
#site-footer a:hover { color: #fff !important; }

.elementor-location-footer .elementor-heading-title,
.elementor-location-footer h1,
.elementor-location-footer h2,
.elementor-location-footer h3,
.elementor-location-footer h4 {
  color: rgba(255,255,255,.55) !important;
}

.elementor-location-footer p,
.elementor-location-footer .elementor-widget-text-editor {
  color: rgba(255,255,255,.45) !important;
}

.footer-logo img,
.site-footer .custom-logo {
  height: 28px !important;
  width: auto !important;
  margin-bottom: 1.2rem;
}

.footer-desc {
  font-size: .82rem;
  color: rgba(255,255,255,.45);
  line-height: 1.9;
  max-width: 260px;
}

.footer-nav-title,
.footer-widget-title {
  font-family: var(--font-en);
  font-size: .6rem !important;
  font-weight: 600 !important;
  letter-spacing: .2em !important;
  text-transform: uppercase !important;
  color: rgba(255,255,255,.3) !important;
  margin-bottom: 1.2rem !important;
}

.footer-nav li,
.site-footer .menu li {
  margin-bottom: .7rem;
}
.footer-nav a,
.site-footer .menu a {
  font-size: .83rem;
  color: rgba(255,255,255,.55) !important;
  transition: color .2s;
}
.footer-nav a:hover,
.site-footer .menu a:hover { color: #fff !important; }

.footer-bottom,
.site-footer .footer-copyright {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding-top: 1.8rem;
  margin-top: 3rem;
  border-top: 1px solid rgba(255,255,255,.08);
  font-size: .75rem;
  color: rgba(255,255,255,.25);
  font-family: var(--font-en);
}

/* ============================================================
   ELEMENTOR KIT OVERRIDES — グローバルカラー・フォント上書き
   Kit ID: 104
   ============================================================ */
.elementor-kit-104 {
  --e-global-color-primary:   var(--text) !important;
  --e-global-color-secondary: var(--text-sub) !important;
  --e-global-color-text:      var(--text) !important;
  --e-global-color-accent:    var(--blue) !important;
  --e-global-typography-primary-font-family:   'M PLUS 1p' !important;
  --e-global-typography-secondary-font-family: 'Montserrat' !important;
  --e-global-typography-text-font-family:      'M PLUS 1p' !important;
  --e-global-typography-accent-font-family:    'Montserrat' !important;
  background-color: var(--white) !important;
}

/* ============================================================
   HERO SECTION OVERRIDES
   PC:  .elementor-element-d998103 (elementor-317, hidden-tablet/mobile)
   SP:  .elementor-element-aae1b65 (elementor-317, hidden-desktop/tablet)
   ============================================================ */

/* 既存の背景画像の上にダークグラデーションオーバーレイを追加 */
.elementor-element-d998103 > .elementor-background-overlay,
.elementor-element-aae1b65 > .elementor-background-overlay {
  background: linear-gradient(
    150deg,
    rgba(7,29,66,.82) 0%,
    rgba(11,52,112,.60) 55%,
    rgba(14,58,122,.42) 100%
  ) !important;
  opacity: 1 !important;
  display: block !important;
}

/* ヒーローメイン見出し（PC: fe86bc7, SP: bf5505c）を白に */
.elementor-element-fe86bc7 .elementor-heading-title,
.elementor-element-bf5505c .elementor-heading-title {
  color: #fff !important;
  -webkit-text-stroke-color: transparent !important;
  stroke: transparent !important;
  font-family: var(--font) !important;
  font-weight: 700 !important;
  line-height: 1.25 !important;
  text-shadow: 0 2px 24px rgba(0,0,0,.3) !important;
}

/* ヒーローサブテキスト（PC: b9a142d, SP: a78d8fd）を白に */
.elementor-element-b9a142d .elementor-heading-title,
.elementor-element-a78d8fd .elementor-heading-title {
  color: rgba(255,255,255,.85) !important;
  font-family: var(--font) !important;
  font-weight: 400 !important;
  line-height: 1.9 !important;
}

/* ============================================================
   ELEMENTOR GLOBAL OVERRIDES
   ============================================================ */

/* Elementor コンテナの最大幅 */
.elementor-section .elementor-container,
.e-con-inner {
  max-width: var(--max);
}

/* Elementor 見出しウィジェット */
.elementor-widget-heading .elementor-heading-title {
  font-family: var(--font) !important;
  font-weight: 700;
  line-height: 1.4;
  letter-spacing: .04em;
}

/* Elementor テキストウィジェット */
.elementor-widget-text-editor {
  font-family: var(--font);
  line-height: 1.85;
}

/* Elementor ボタンウィジェット デフォルト */
.elementor-widget-button .elementor-button {
  font-family: var(--font-en) !important;
  font-weight: 600 !important;
  letter-spacing: .1em !important;
  text-transform: uppercase !important;
  border-radius: 999px !important;
  transition: opacity .25s, transform .25s !important;
}

/* Elementor 区切り線 */
.elementor-divider-separator {
  border-color: var(--border);
}

/* Elementor フォームウィジェット */
.elementor-field-group input[type=text],
.elementor-field-group input[type=email],
.elementor-field-group input[type=tel],
.elementor-field-group textarea,
.elementor-field-group select {
  font-family: var(--font) !important;
  border: 1.5px solid var(--border) !important;
  border-radius: 10px !important;
  padding: .75rem 1rem !important;
  transition: border-color .2s, box-shadow .2s !important;
}
.elementor-field-group input:focus,
.elementor-field-group textarea:focus,
.elementor-field-group select:focus {
  border-color: var(--blue) !important;
  box-shadow: 0 0 0 3px rgba(20,120,200,.1) !important;
  outline: none !important;
}
.elementor-form .elementor-button[type=submit] {
  background: linear-gradient(135deg, var(--pink), var(--pink-dark)) !important;
  border: none !important;
  border-radius: 999px !important;
  font-family: var(--font-en) !important;
  font-weight: 600 !important;
  letter-spacing: .18em !important;
  text-transform: uppercase !important;
  box-shadow: 0 8px 28px rgba(232,69,122,.3) !important;
}

/* ============================================================
   CARD COMPONENTS (共通)
   ============================================================ */
.card {
  background: var(--white);
  border: 1px solid var(--border);
  border-radius: 14px;
  overflow: hidden;
  box-shadow: 0 2px 16px rgba(11,52,112,.05);
  transition: transform .3s var(--ease), box-shadow .3s;
}
.card:hover {
  transform: translateY(-4px);
  box-shadow: 0 10px 32px rgba(11,52,112,.1);
}

/* ============================================================
   BLOG GRID (アーカイブ / ウィジェット)
   ============================================================ */
.blog-grid,
.posts-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 2rem;
}

.post-thumbnail img {
  width: 100%;
  aspect-ratio: 16/9;
  object-fit: cover;
}

/* ============================================================
   POLICY PAGES
   ============================================================ */
.policy-body {
  max-width: 800px;
  margin-inline: auto;
}
.policy-section h2 {
  font-size: 1.05rem;
  font-weight: 700;
  color: var(--blue-dark);
  padding-left: 1rem;
  border-left: 3px solid var(--blue);
  margin-bottom: 1rem;
  line-height: 1.5;
}
.policy-section p,
.policy-section li {
  font-size: .93rem;
  line-height: 2;
  color: var(--text);
}

/* ============================================================
   MOBILE
   ============================================================ */
@media (max-width: 768px) {
  .blog-grid,
  .posts-grid {
    grid-template-columns: 1fr;
  }

  .site-footer .footer-columns,
  .site-footer .elementor-container {
    flex-direction: column;
    gap: 2rem;
  }
}

@media (max-width: 767px) {
  /* ============================================================
     !important overrides — beat any cached inline <style> blocks
     ============================================================ */

  /* Prevent horizontal scroll */
  html { overflow-x: hidden !important; }
  body { max-width: 100vw !important; overflow-x: hidden !important; }

  /* Inner page hero — use px value instead of --hh var (var may not override) */
  .ph { padding-top: 58px !important; }
  body.admin-bar .ph { padding-top: 104px !important; }
  .ph-inner,
  .page-hero-inner { padding: 2rem 1rem 1.5rem !important; }

  /* Service cards — horizontal (icon left, text right) layout */
  .srv-grid { grid-template-columns: 1fr !important; }
  .srv-card {
    display: flex !important;
    flex-direction: row !important;
    gap: .9rem !important;
    padding: 1.1rem 1rem !important;
    align-items: flex-start !important;
  }
  .app-icon {
    width: 42px !important;
    height: 42px !important;
    border-radius: 10px !important;
    flex-shrink: 0 !important;
    margin-bottom: 0 !important;
  }
  .app-icon svg { width: 20px !important; height: 20px !important; }
  .srv-text { flex: 1 !important; min-width: 0 !important; }

  /* Grid resets for sub-pages */
  .scope-grid { grid-template-columns: 1fr !important; }
  .scope-card::after { display: none !important; }
  .mission-inner { display: flex !important; flex-direction: column !important; gap: 1.5rem !important; }
  .contact-inner { grid-template-columns: 1fr !important; gap: 2rem !important; }
  .form-row { grid-template-columns: 1fr !important; }
  .info-panel { position: static !important; }

  /* Profile section */
  .profile-inner { display: flex !important; flex-direction: column !important; align-items: stretch !important; gap: 1.5rem !important; }
  .profile-inner > div:last-child { width: 100% !important; min-width: 0 !important; overflow-wrap: break-word !important; }
  .profile-img {
    width: 120px !important;
    height: 120px !important;
    max-width: 100% !important;
    margin-inline: auto !important;
  }

  /* Hero (front page) */
  .hero__net { display: none !important; }
  .hero__h1 { font-size: 2rem !important; }
  .hero__text { padding-inline: 0 !important; }
  .hero__btns { flex-direction: column !important; align-items: center !important; }
  .hero__btns .btn { width: auto !important; min-width: 210px !important;
                     border-radius: 999px !important; justify-content: center !important; }

  /* Contact form */
  .form-card { padding: 2rem 1.4rem !important; }

  /* Company table — prevent overflow, force word-wrap */
  .co-table-wrap { overflow-x: auto !important; -webkit-overflow-scrolling: touch !important; }
  .co-table { width: 100% !important; table-layout: fixed !important; }
  .co-table th {
    width: 90px !important;
    white-space: normal !important;
    word-break: keep-all !important;
    font-size: .6rem !important;
    padding: .9rem .7rem !important;
    vertical-align: top !important;
  }
  .co-table td {
    overflow-wrap: break-word !important;
    word-break: break-all !important;
    font-size: .85rem !important;
    padding: .9rem .7rem !important;
  }

  /* Section padding */
  .sec        { padding-block: 3.5rem !important; }
  .sec-srv    { padding-block: 3.5rem !important; }
  .sec-proj   { padding-block: 3.5rem !important; }
  .sec-cta    { padding-block: 3.5rem !important; }
  .sec-contact { padding-block: 3rem !important; }
  .approach-inner { gap: 2rem !important; }

  /* Section head — 余白縮小 */
  .sec-head   { margin-bottom: 2rem !important; }

  /* Project slider */
  .proj-card  { flex: 0 0 calc(100vw - 3rem) !important; max-width: 340px !important; }
  .proj-head  { flex-wrap: wrap !important; gap: .8rem !important; align-items: flex-start !important; }

  /* CTA・hero ボタン — 丸角・幅自動・中央寄せ（全ページ共通） */
  .cta-btns   { flex-direction: column !important; align-items: center !important; gap: .7rem !important; }
  .cta-btns .btn { width: auto !important; min-width: 210px !important;
                   border-radius: 999px !important; justify-content: center !important; }

  /* ミッション / スコープ / プロジェクトカード: コンパクト */
  .mission-cards { gap: .65rem !important; }
  .mcard         { padding: .75rem .85rem !important; }
  .scope-card    { padding: .85rem .9rem !important; }
  .scope-grid    { gap: .65rem !important; }
  .proj-card     { padding: 1.2rem 1.1rem !important; }

  /* MAP height */
  .map-wrap iframe { height: 240px !important; }

  /* co-lead margin */
  .co-lead    { margin-bottom: 1.8rem !important; }
}
