
/* Souzoku LP v2 structural layout */
.souzoku-v2, .souzoku-v2 * { box-sizing: border-box; }
.souzoku-v2 { --navy:#173856; --gold:#c69a4b; --line:#d8e0e6; --soft:#f5f8fa; --text:#17324b; color:var(--text); }
.souzoku-v2 section { width:100%; clear:both; float:none !important; }
.souzoku-v2 .sv2-wrap { width:min(1120px, calc(100% - 48px)); margin:0 auto; }
.souzoku-v2 .sv2-section { padding:72px 0; }
.souzoku-v2 .sv2-section.alt { background:var(--soft); }
.souzoku-v2 .sv2-kicker { text-align:center; color:var(--gold); font-size:12px; letter-spacing:.2em; font-weight:700; margin-bottom:12px; }
.souzoku-v2 .sv2-title { text-align:center; font-size:clamp(28px,3.3vw,42px); line-height:1.35; margin:0 0 42px; }
.souzoku-v2 .sv2-grid { display:grid !important; grid-template-columns:repeat(3,minmax(0,1fr)) !important; gap:24px; align-items:stretch; width:100%; }
.souzoku-v2 .sv2-grid.two { grid-template-columns:repeat(2,minmax(0,1fr)) !important; }
.souzoku-v2 .sv2-card { position:relative; min-width:0; width:100%; height:100%; margin:0 !important; padding:28px; border:1px solid #e3e9ee; border-radius:14px; background:#fff; box-shadow:0 8px 28px rgba(23,56,86,.07); float:none !important; }
.souzoku-v2 .sv2-card h3 { font-size:20px; line-height:1.5; margin:0 0 12px; }
.souzoku-v2 .sv2-card p { margin:0; line-height:1.9; }
.souzoku-v2 .sv2-num { display:block; color:var(--gold); font-size:12px; letter-spacing:.08em; font-weight:700; margin-bottom:8px; }
.souzoku-v2 .sv2-hero { background:linear-gradient(135deg,#f7fafc 0%,#fff 55%,#eef4f8 100%); padding:72px 0 36px; }
.souzoku-v2 .sv2-hero-grid { display:grid; grid-template-columns:1.2fr .8fr; gap:48px; align-items:center; }
.souzoku-v2 .sv2-hero h1 { font-size:clamp(34px,4.6vw,58px); line-height:1.3; margin:0 0 20px; }
.souzoku-v2 .sv2-hero p { font-size:18px; line-height:1.9; }
.souzoku-v2 .sv2-proof { background:var(--navy); color:#fff; padding:22px 0; }
.souzoku-v2 .sv2-proof-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:20px; }
.souzoku-v2 .sv2-proof-item { text-align:center; font-weight:700; line-height:1.5; }
.souzoku-v2 .sv2-proof-item strong { display:block; font-size:24px; color:#fff; }
.souzoku-v2 .sv2-cta { text-align:center; margin-top:34px; }
.souzoku-v2 .sv2-button { display:inline-block; background:var(--gold); color:#fff !important; text-decoration:none !important; padding:16px 28px; border-radius:999px; font-weight:700; box-shadow:0 8px 20px rgba(198,154,75,.25); }
.souzoku-v2 .sv2-case { overflow:hidden; padding:0; }
.souzoku-v2 .sv2-case-head { background:var(--navy); color:#fff; padding:22px 26px; }
.souzoku-v2 .sv2-case-body { padding:26px; }
.souzoku-v2 .sv2-flow { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:18px; }
.souzoku-v2 .sv2-flow .sv2-card { text-align:center; }
.souzoku-v2 .sv2-faq details { background:#fff; border:1px solid #e3e9ee; border-radius:12px; padding:20px 22px; margin-bottom:14px; }
.souzoku-v2 .sv2-faq summary { font-weight:700; cursor:pointer; }
.souzoku-v2 .sv2-contact { background:var(--navy); color:#fff; }
.souzoku-v2 .sv2-contact .sv2-title, .souzoku-v2 .sv2-contact p { color:#fff; }
.souzoku-v2 .sv2-note { font-size:13px; opacity:.85; text-align:center; margin-top:14px; }

@media (max-width: 1023px){
  .souzoku-v2 .sv2-grid { grid-template-columns:repeat(2,minmax(0,1fr)) !important; }
  .souzoku-v2 .sv2-proof-grid { grid-template-columns:1fr; }
  .souzoku-v2 .sv2-hero-grid { grid-template-columns:1fr; }
  .souzoku-v2 .sv2-flow { grid-template-columns:repeat(2,minmax(0,1fr)); }
}
@media (max-width: 767px){
  .souzoku-v2 .sv2-wrap { width:calc(100% - 32px); }
  .souzoku-v2 .sv2-section { padding:54px 0; }
  .souzoku-v2 .sv2-grid, .souzoku-v2 .sv2-grid.two { grid-template-columns:1fr !important; }
  .souzoku-v2 .sv2-flow { grid-template-columns:1fr; }
  .souzoku-v2 .sv2-card { padding:22px; }
}


/* ==========================================================
   v2.1 Lightning full-width page fix
   The LP was correctly gridded but remained inside Lightning's
   left main-content column. These rules remove the reserved
   sidebar/content-column constraint only on the v2 LP page.
   ========================================================== */

body.souzoku-lp-v2-page .siteContent,
body.souzoku-lp-v2-page .siteContent > .container,
body.souzoku-lp-v2-page .siteContent .container,
body.souzoku-lp-v2-page #main,
body.souzoku-lp-v2-page .mainSection,
body.souzoku-lp-v2-page main.mainSection {
    width: 100% !important;
    max-width: none !important;
    flex: 0 0 100% !important;
    flex-basis: 100% !important;
    margin-left: 0 !important;
    margin-right: 0 !important;
    padding-left: 0 !important;
    padding-right: 0 !important;
}

/* Lightning / VK Blocks sidebar area should not reserve horizontal space. */
body.souzoku-lp-v2-page .sideSection,
body.souzoku-lp-v2-page aside.sideSection,
body.souzoku-lp-v2-page #sideSection,
body.souzoku-lp-v2-page .subSection {
    display: none !important;
}

/* Remove Bootstrap row negative-margin/column constraints around main content. */
body.souzoku-lp-v2-page .siteContent > .container > .row,
body.souzoku-lp-v2-page .siteContent .row {
    width: 100% !important;
    max-width: none !important;
    margin-left: 0 !important;
    margin-right: 0 !important;
}

/* Some Lightning versions assign col-* classes directly to mainSection. */
body.souzoku-lp-v2-page .mainSection[class*="col-"],
body.souzoku-lp-v2-page main[class*="col-"] {
    width: 100% !important;
    max-width: 100% !important;
    flex: 0 0 100% !important;
}

/* The WordPress post/article wrappers can also carry content-width limits. */
body.souzoku-lp-v2-page article,
body.souzoku-lp-v2-page .entry-body,
body.souzoku-lp-v2-page .entry-content,
body.souzoku-lp-v2-page .page-content {
    width: 100% !important;
    max-width: none !important;
    margin-left: 0 !important;
    margin-right: 0 !important;
}

/* Keep the actual LP content centered at the intended design width. */
body.souzoku-lp-v2-page .souzoku-v2 .sv2-wrap {
    width: min(1120px, calc(100% - 48px)) !important;
    max-width: 1120px !important;
    margin-left: auto !important;
    margin-right: auto !important;
}

/* Remove default page-title/breadcrumb horizontal offsets if present. */
body.souzoku-lp-v2-page .page-header,
body.souzoku-lp-v2-page .breadcrumb {
    width: 100%;
}

@media (max-width: 767px) {
    body.souzoku-lp-v2-page .souzoku-v2 .sv2-wrap {
        width: calc(100% - 32px) !important;
    }
}


/* ==========================================================
   v3.0 ACCESS / MAP / LP FOOTER
   ========================================================== */

body.page-template-page-souzoku-v3 .siteContent,
body.page-template-page-souzoku-v3 .siteContent > .container,
body.page-template-page-souzoku-v3 .siteContent .container,
body.page-template-page-souzoku-v3 .siteContent .row,
body.page-template-page-souzoku-v3 .mainSection{
  width:100%!important;
  max-width:none!important;
  margin:0!important;
  padding-left:0!important;
  padding-right:0!important;
  flex:0 0 100%!important;
}

body.page-template-page-souzoku-v3 .sideSection,
body.page-template-page-souzoku-v3 #sideSection,
body.page-template-page-souzoku-v3 .subSection{
  display:none!important;
}

body.page-template-page-souzoku-v3 #souzoku-v3-main{
  width:100%!important;
  max-width:none!important;
  margin:0!important;
  padding:0!important;
  overflow:hidden;
}

.souzoku-v2 .souzoku-access{
  padding:88px 0;
  background:#f6f8fa;
}

.souzoku-v2 .souzoku-access-lead{
  max-width:720px;
  margin:-20px auto 42px;
  text-align:center;
  line-height:1.9;
  color:#63717a;
}

.souzoku-v2 .souzoku-access-grid{
  display:grid;
  grid-template-columns:minmax(0,.9fr) minmax(480px,1.1fr);
  gap:32px;
  align-items:stretch;
}

.souzoku-v2 .souzoku-access-info{
  padding:34px;
  border-radius:18px;
  background:#fff;
  border:1px solid #e0e6ea;
  box-shadow:0 14px 34px rgba(23,56,86,.07);
}

.souzoku-v2 .souzoku-access-label{
  color:#c69a4b;
  font-size:12px;
  font-weight:800;
  letter-spacing:.16em;
  margin-bottom:10px;
}

.souzoku-v2 .souzoku-access-info h3{
  margin:0 0 18px;
  color:#173856;
  font-size:26px;
}

.souzoku-v2 .souzoku-address{
  margin:0 0 24px;
  color:#233d52;
  line-height:1.9;
  font-size:16px;
}

.souzoku-v2 .souzoku-access-list{
  margin:0 0 28px;
}

.souzoku-v2 .souzoku-access-list div{
  display:grid;
  grid-template-columns:90px 1fr;
  gap:18px;
  padding:14px 0;
  border-top:1px solid #e8ecef;
}

.souzoku-v2 .souzoku-access-list dt{
  font-size:13px;
  font-weight:700;
  color:#73808a;
}

.souzoku-v2 .souzoku-access-list dd{
  margin:0;
  color:#233d52;
  line-height:1.7;
}

.souzoku-v2 .souzoku-map{
  min-height:470px;
  overflow:hidden;
  border-radius:18px;
  border:1px solid #dfe5e9;
  box-shadow:0 14px 34px rgba(23,56,86,.07);
  background:#eef1f3;
}

.souzoku-v2 .souzoku-map iframe{
  display:block;
  width:100%!important;
  height:100%!important;
  min-height:470px!important;
  border:0!important;
}

/* LP専用の下部フッター */
.souzoku-v2 .souzoku-legal-footer{
  padding:28px 0;
  background:#102f4a;
  color:#fff;
}

.souzoku-v2 .souzoku-legal-footer-inner{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:30px;
}

.souzoku-v2 .souzoku-legal-footer-inner>div:first-child{
  display:flex;
  flex-direction:column;
  gap:5px;
}

.souzoku-v2 .souzoku-legal-footer strong{
  font-size:15px;
}

.souzoku-v2 .souzoku-legal-footer span{
  color:rgba(255,255,255,.68);
  font-size:12px;
}

.souzoku-v2 .souzoku-legal-links{
  display:flex;
  gap:22px;
}

.souzoku-v2 .souzoku-legal-links a{
  color:#e5c98c!important;
  font-size:13px;
  font-weight:700;
  text-decoration:none!important;
}

@media(max-width:960px){
  .souzoku-v2 .souzoku-access-grid{
    grid-template-columns:1fr;
  }
  .souzoku-v2 .souzoku-map,
  .souzoku-v2 .souzoku-map iframe{
    min-height:400px!important;
  }
}

@media(max-width:767px){
  .souzoku-v2 .souzoku-access{
    padding:62px 0;
  }
  .souzoku-v2 .souzoku-access-info{
    padding:24px;
  }
  .souzoku-v2 .souzoku-access-list div{
    grid-template-columns:1fr;
    gap:5px;
  }
  .souzoku-v2 .souzoku-map,
  .souzoku-v2 .souzoku-map iframe{
    min-height:330px!important;
  }
  .souzoku-v2 .souzoku-legal-footer-inner{
    flex-direction:column;
    align-items:flex-start;
  }
  .souzoku-v2 .souzoku-legal-links{
    flex-direction:column;
    gap:10px;
  }
}


/* ==========================================================
   v3.1 PHONE INQUIRY
   ========================================================== */
.souzoku-v2 .souzoku-contact-actions{
  display:grid;
  grid-template-columns:1fr;
  gap:12px;
  margin-top:8px;
}

.souzoku-v2 .souzoku-phone-button{
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  min-height:96px;
  padding:14px 20px;
  border-radius:12px;
  background:#173856;
  color:#fff!important;
  text-decoration:none!important;
  box-shadow:0 10px 24px rgba(23,56,86,.18);
  transition:transform .2s ease,box-shadow .2s ease;
}

.souzoku-v2 .souzoku-phone-button:hover{
  transform:translateY(-2px);
  box-shadow:0 14px 30px rgba(23,56,86,.24);
}

.souzoku-v2 .souzoku-phone-label{
  font-size:13px;
  font-weight:700;
  letter-spacing:.04em;
}

.souzoku-v2 .souzoku-phone-button strong{
  margin:3px 0 1px;
  font-size:28px;
  line-height:1.2;
  letter-spacing:.04em;
}

.souzoku-v2 .souzoku-phone-button small{
  color:rgba(255,255,255,.78);
  font-size:12px;
}

.souzoku-v2 .souzoku-form-button{
  width:100%;
  text-align:center;
}

.souzoku-v2 .souzoku-phone-note{
  margin:14px 0 0;
  font-size:11px;
  line-height:1.7;
  color:#74818a;
}

.souzoku-v2 .souzoku-footer-phone{
  display:flex;
  flex-direction:column;
  color:#fff!important;
}

.souzoku-v2 .souzoku-footer-phone small{
  margin-top:2px;
  color:rgba(255,255,255,.62);
  font-size:10px;
  font-weight:400;
}

@media(min-width:768px){
  .souzoku-v2 .souzoku-contact-actions{
    grid-template-columns:1fr 1fr;
    align-items:stretch;
  }
  .souzoku-v2 .souzoku-form-button{
    display:flex;
    align-items:center;
    justify-content:center;
    min-height:96px;
  }
}


/* ==========================================================
   v3.3 FV CONSISTENCY + ACCESS/FOOTER BALANCE
   ========================================================== */

/* First view: preserve the same polished desktop composition as the current top page */
body.page-template-page-souzoku-v3 .souzoku-v2 .sv2-hero,
body.page-template-page-souzoku-v3 .souzoku-v2 .sv2-fv{
  padding-top:42px!important;
  padding-bottom:42px!important;
}

body.page-template-page-souzoku-v3 .souzoku-v2 .sv2-hero-grid,
body.page-template-page-souzoku-v3 .souzoku-v2 .sv2-fv-grid{
  width:min(1120px,calc(100% - 48px))!important;
  max-width:1120px!important;
  margin-left:auto!important;
  margin-right:auto!important;
  grid-template-columns:minmax(0,1.35fr) minmax(320px,.65fr)!important;
  gap:54px!important;
  align-items:start!important;
}

body.page-template-page-souzoku-v3 .souzoku-v2 .sv2-hero h1,
body.page-template-page-souzoku-v3 .souzoku-v2 .sv2-fv h1{
  max-width:700px!important;
  font-size:clamp(44px,4.3vw,64px)!important;
  line-height:1.18!important;
  letter-spacing:-.035em!important;
}

body.page-template-page-souzoku-v3 .souzoku-v2 .sv2-hero-side,
body.page-template-page-souzoku-v3 .souzoku-v2 .sv2-message{
  max-width:360px!important;
  margin-left:auto!important;
}

/* Access section proportions */
.souzoku-v2 .souzoku-access{
  padding:76px 0 0!important;
  background:linear-gradient(180deg,#f6f8fa 0%,#eef3f6 100%)!important;
}

.souzoku-v2 .souzoku-access .sv2-wrap{
  width:min(1120px,calc(100% - 48px))!important;
  max-width:1120px!important;
}

.souzoku-v2 .souzoku-access-head,
.souzoku-v2 .souzoku-access > .sv2-wrap > .sv2-title{
  text-align:center!important;
}

.souzoku-v2 .souzoku-access-lead{
  margin:-12px auto 30px!important;
}

.souzoku-v2 .souzoku-access-divider{
  display:flex;
  align-items:center;
  gap:16px;
  margin:0 0 22px;
  color:#c69a4b;
  font-size:11px;
  font-weight:800;
  letter-spacing:.18em;
}
.souzoku-v2 .souzoku-access-divider:before,
.souzoku-v2 .souzoku-access-divider:after{
  content:"";
  flex:1;
  height:1px;
  background:#d9e0e5;
}

.souzoku-v2 .souzoku-access-grid{
  grid-template-columns:minmax(0,1fr) minmax(0,1fr)!important;
  gap:26px!important;
  align-items:stretch!important;
}

.souzoku-v2 .souzoku-access-info{
  display:flex!important;
  flex-direction:column!important;
  justify-content:flex-start!important;
  padding:30px!important;
  border-radius:16px!important;
}

.souzoku-v2 .souzoku-access-info h3{
  font-size:23px!important;
  margin-bottom:12px!important;
}

.souzoku-v2 .souzoku-address{
  margin-bottom:16px!important;
  line-height:1.75!important;
}

.souzoku-v2 .souzoku-access-list{
  margin-bottom:18px!important;
}

.souzoku-v2 .souzoku-access-list div{
  grid-template-columns:76px 1fr!important;
  padding:10px 0!important;
}

/* Equal-weight contact choices */
.souzoku-v2 .souzoku-contact-actions-balanced{
  display:grid!important;
  grid-template-columns:1fr 1fr!important;
  gap:12px!important;
  margin-top:auto!important;
}

.souzoku-v2 .souzoku-contact-actions-balanced .souzoku-phone-button,
.souzoku-v2 .souzoku-contact-actions-balanced .souzoku-form-button{
  min-height:104px!important;
  width:100%!important;
  margin:0!important;
  padding:14px 16px!important;
  border-radius:12px!important;
  box-sizing:border-box!important;
  display:flex!important;
  flex-direction:column!important;
  align-items:center!important;
  justify-content:center!important;
  text-align:center!important;
}

.souzoku-v2 .souzoku-contact-actions-balanced .souzoku-phone-button strong{
  font-size:24px!important;
}

.souzoku-v2 .souzoku-contact-actions-balanced .souzoku-form-button{
  background:#cfa049!important;
  color:#fff!important;
  box-shadow:0 10px 24px rgba(207,160,73,.22)!important;
}

.souzoku-v2 .souzoku-contact-actions-balanced .souzoku-form-button span{
  font-size:11px!important;
  opacity:.88;
  margin-bottom:5px;
}

.souzoku-v2 .souzoku-contact-actions-balanced .souzoku-form-button strong{
  font-size:14px!important;
  line-height:1.5!important;
}

.souzoku-v2 .souzoku-phone-note{
  margin:12px 0 0!important;
  line-height:1.6!important;
}

/* Map is the same visual height as office card */
.souzoku-v2 .souzoku-map{
  min-height:0!important;
  height:100%!important;
  border-radius:16px!important;
}

.souzoku-v2 .souzoku-map iframe{
  min-height:0!important;
  height:100%!important;
  min-height:520px!important;
}

/* Footer should visually attach to access block */
.souzoku-v2 .souzoku-legal-footer{
  margin-top:46px!important;
  padding:24px 0!important;
}

.souzoku-v2 .souzoku-legal-footer .sv2-wrap{
  width:min(1120px,calc(100% - 48px))!important;
  max-width:1120px!important;
}

.souzoku-v2 .souzoku-legal-links{
  align-items:center!important;
  flex-wrap:wrap!important;
}

@media(max-width:960px){
  body.page-template-page-souzoku-v3 .souzoku-v2 .sv2-hero-grid,
  body.page-template-page-souzoku-v3 .souzoku-v2 .sv2-fv-grid{
    grid-template-columns:1fr!important;
  }
  body.page-template-page-souzoku-v3 .souzoku-v2 .sv2-hero-side,
  body.page-template-page-souzoku-v3 .souzoku-v2 .sv2-message{
    max-width:none!important;
    margin-left:0!important;
  }
  .souzoku-v2 .souzoku-access-grid{
    grid-template-columns:1fr!important;
  }
  .souzoku-v2 .souzoku-map iframe{
    min-height:400px!important;
  }
}

@media(max-width:767px){
  body.page-template-page-souzoku-v3 .souzoku-v2 .sv2-hero-grid,
  body.page-template-page-souzoku-v3 .souzoku-v2 .sv2-fv-grid,
  .souzoku-v2 .souzoku-access .sv2-wrap,
  .souzoku-v2 .souzoku-legal-footer .sv2-wrap{
    width:calc(100% - 32px)!important;
  }
  body.page-template-page-souzoku-v3 .souzoku-v2 .sv2-hero h1,
  body.page-template-page-souzoku-v3 .souzoku-v2 .sv2-fv h1{
    font-size:38px!important;
  }
  .souzoku-v2 .souzoku-contact-actions-balanced{
    grid-template-columns:1fr!important;
  }
  .souzoku-v2 .souzoku-map iframe{
    min-height:330px!important;
  }
}


/* v3.4 First-view contact details */
.souzoku-v2 .sv2-hero-contact{
  max-width:520px;
  margin-top:34px;
  text-align:center;
}
.souzoku-v2 .sv2-free-consult{
  display:flex;
  align-items:center;
  gap:18px;
  margin-bottom:18px;
  color:#173856;
  font-size:20px;
  font-weight:800;
}
.souzoku-v2 .sv2-free-consult:before,
.souzoku-v2 .sv2-free-consult:after{
  content:"";
  flex:1;
  height:1px;
  background:#d8dee3;
}
.souzoku-v2 .sv2-free-consult:before{
  background:#4c91cf;
}
.souzoku-v2 .sv2-hero-form{
  display:inline-flex!important;
  align-items:center;
  justify-content:center;
  min-width:220px;
  min-height:50px;
  margin:0 auto 20px!important;
  padding:12px 26px!important;
}
.souzoku-v2 .sv2-hero-phone{
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:3px;
  color:#173856;
  font-weight:700;
}
.souzoku-v2 .sv2-hero-phone span{
  font-size:15px;
  letter-spacing:.02em;
}
.souzoku-v2 .sv2-hero-phone a{
  color:#173856!important;
  font-size:17px;
  font-weight:800;
  letter-spacing:.035em;
  text-decoration:none!important;
}
.souzoku-v2 .sv2-hero-phone a:hover{
  text-decoration:underline!important;
}
@media(max-width:767px){
  .souzoku-v2 .sv2-hero-contact{
    max-width:none;
    margin-top:28px;
  }
  .souzoku-v2 .sv2-free-consult{
    font-size:18px;
  }
  .souzoku-v2 .sv2-hero-form{
    width:100%;
  }
  .souzoku-v2 .sv2-hero-phone span{
    font-size:13px;
  }
  .souzoku-v2 .sv2-hero-phone a{
    font-size:18px;
  }
}
