/* PEACH CONNECT v0.5.24 — one canonical FV geometry source.
   Replaces 0.5.21–23 override layers and dynamic JS size expansion.
   Content updates in WordPress are preserved. */
:root { --peach-hero-height: 640px; }
@media(max-width: 860px) { :root { --peach-hero-height: 580px; } }
@media(max-width: 760px) { :root { --peach-hero-height: 555px; } }
/* All five hero template families and especially <main class=pc-service>.
   All layout dimensions include padding (border-box). min-height may grow only
   for genuinely overflowing editor content; no forced JS growth. */
body.home #hero.hero,
body main.pc-service #service-hero.sv-top-hero,
body .pcnx-root .hero.peach-shared-fv,
body .pcpr-document .pcpr-hero,
body .pcn .pcn-hero {
 box-sizing:border-box!important;
 display:flex!important;
 align-items:stretch!important;
 justify-content:center!important;
 width:100%!important;
 height:auto!important;
 min-height:var(--peach-hero-height)!important;
 max-height:none!important;
 margin:0!important;
 padding:0!important;
 overflow:clip!important;
}
body.home #hero.hero>.hero-inner,
body main.pc-service #service-hero.sv-top-hero>.hero-inner,
body .pcnx-root .hero.peach-shared-fv .peach-fv-inner,
body .pcpr-document .pcpr-hero-inner,
body .pcn .pcn-hero__inner {
 position:relative!important;
 box-sizing:border-box!important;
 display:flex!important;
 flex-direction:column!important;
 justify-content:center!important;
 align-items:flex-start!important;
 flex:1 1 auto!important;
 min-width:0!important;
 width:min(1150px,calc(100% - 72px))!important;
 max-width:1150px!important;
 margin-inline:auto!important;
 height:auto!important;
 min-height:var(--peach-hero-height)!important;
 max-height:none!important;
 padding:clamp(24px,4vw,52px) 0!important;
}
/* Service index: eliminate independent 700px hero/inner overrides. */
body main.pc-service #service-hero.sv-top-hero .sv-top-hero-copy {
 width:100%!important;max-width:680px!important;
 min-height:0!important;max-height:none!important;
 position:relative!important;inset:auto!important;transform:none!important;
 margin:0!important;padding:0!important;flex:0 1 auto!important;
}
/* Keep all service FV paragraphs visible; restrict excess whitespace instead. */
body main.pc-service #service-hero.sv-top-hero :is(.sv-top-hero-kicker,.sv-top-hero-lead,.sv-top-hero-body){
 max-width:100%!important;min-width:0!important;max-height:none!important;
 overflow:visible!important;text-overflow:clip!important;
 white-space:normal!important;word-break:normal!important;overflow-wrap:break-word!important;
}
body main.pc-service #service-hero.sv-top-hero .sv-top-hero-points {
 margin-top:12px!important;
}
body main.pc-service #service-hero.sv-top-hero .sv-top-hero-buttons {
 margin:12px 0 0!important;
}
@media(max-width:760px){
 body.home #hero.hero>.hero-inner,
 body main.pc-service #service-hero.sv-top-hero>.hero-inner,
 body .pcnx-root .hero.peach-shared-fv .peach-fv-inner,
 body .pcpr-document .pcpr-hero-inner,
 body .pcn .pcn-hero__inner {
  width:calc(100% - 36px)!important;
  max-width:none!important;
  padding:23px 0!important;
 }
 body main.pc-service #service-hero.sv-top-hero :is(.sv-top-hero-kicker,.sv-top-hero-lead,.sv-top-hero-body){
  margin-block:0 11px!important;
 }
 body main.pc-service #service-hero.sv-top-hero h1 {
  font-size:clamp(24px,7.25vw,34px)!important;
  line-height:1.42!important;
  margin:0 0 13px!important;
 }
 body main.pc-service #service-hero.sv-top-hero .sv-top-hero-cta {min-height:48px!important;}
}

/* Retained and reviewed layouts from 0.5.21 and 0.5.22. */
/* The style of the heading may vary, but a heading must never be cropped. */
body main :is(.pcnx-section-heading,.pcnx-section-heading h2,.pcnx-feature-text,
  .pcnx-item-copy,.pcnx-item-copy h3,.pcnx-flow-timeline h3,
  .section-heading,.section-heading h2,.sv-section-heading,.sv-section-heading h2,
  .pcn-section-heading,.pcn-section-heading h2,
  .pcpr-section-heading,.pcpr-section-heading h2){
  min-width:0!important;
  max-width:100%!important;
  text-overflow:clip!important;
  overflow-wrap:break-word!important;
  white-space:normal!important;
  word-break:normal!important;
  hyphens:none!important;
}
body main :is(.pcnx-section-heading,.pcnx-section-heading h2,.section-heading h2,
 .sv-section-heading h2,.pcn-section-heading h2,.pcpr-section-heading h2){
 overflow:visible!important;
}
/* Specific pages previously used single-line inner badges/titles; allow phrases to wrap. */
body main :is(.pcnx-section-heading h2,.pcnx-feature h3,.pcnx-item h3,
 .sv-section-heading h2,.section-heading h2) :is(span,strong,b){
 max-width:100%;white-space:normal;overflow-wrap:break-word;
}
body main .peach-brand-keep {white-space:nowrap!important;word-break:keep-all!important;overflow-wrap:normal!important}
/* SNS recommendation: all three cards use one photo size, without featured first-card enlargement. */
body .pcnx-root.pcnx-page-sns #recommend .pcnx-items--recommended-photo {
 display:grid!important;grid-template-columns:repeat(3,minmax(0,1fr))!important;
 grid-template-rows:auto!important;align-items:stretch!important;gap:22px!important;
}
body .pcnx-root.pcnx-page-sns #recommend .pcnx-items--recommended-photo>.pcnx-item {
 display:flex!important;flex-direction:column!important;grid-row:auto!important;
 grid-column:auto!important;min-width:0!important;min-height:0!important;
}
body .pcnx-root.pcnx-page-sns #recommend .pcnx-items--recommended-photo>.pcnx-item>.pcnx-photo {
 display:block!important;flex:none!important;margin:0!important;width:100%!important;
 height:auto!important;min-height:0!important;max-height:none!important;
 aspect-ratio:16/10!important;border-radius:0!important;overflow:hidden!important;
}
body .pcnx-root.pcnx-page-sns #recommend .pcnx-items--recommended-photo>.pcnx-item>.pcnx-photo img {
 display:block!important;width:100%!important;height:100%!important;object-fit:cover!important;
}
body .pcnx-root.pcnx-page-sns #recommend .pcnx-items--recommended-photo>.pcnx-item>.pcnx-item-copy {
 flex:1 1 auto!important;min-width:0!important;display:flex!important;
 flex-direction:column!important;justify-content:center!important;padding:23px!important;
}
/* All four service-detail flow sections had real image paths but a legacy display:none. */
body .pcnx-root.pcnx-page-branding .pcnx-type-flow .pcnx-flow-timeline,
body .pcnx-root.pcnx-page-sns .pcnx-type-flow .pcnx-flow-timeline,
body .pcnx-root.pcnx-page-event .pcnx-type-flow .pcnx-flow-timeline,
body .pcnx-root.pcnx-page-spot .pcnx-type-flow .pcnx-flow-timeline {
 display:grid!important;grid-template-columns:1fr!important;gap:17px!important;
 list-style:none!important;padding:0!important;max-width:1000px!important;
}
body .pcnx-root:is(.pcnx-page-branding,.pcnx-page-sns,.pcnx-page-event,.pcnx-page-spot)
 .pcnx-type-flow .pcnx-flow-timeline::before{display:none!important;content:none!important}
body .pcnx-root:is(.pcnx-page-branding,.pcnx-page-sns,.pcnx-page-event,.pcnx-page-spot)
 .pcnx-type-flow .pcnx-flow-timeline>.pcnx-item{
 display:grid!important;grid-template-columns:minmax(0,35%) minmax(0,1fr)!important;
 grid-auto-flow:row!important;align-items:stretch!important;min-width:0!important;
 min-height:180px!important;margin:0!important;padding:0!important;
 background:#fff!important;border:1px solid #dce9e9!important;border-radius:15px!important;
 overflow:hidden!important;box-shadow:0 8px 25px rgba(20,68,77,.055)!important;
}
body .pcnx-root:is(.pcnx-page-branding,.pcnx-page-sns,.pcnx-page-event,.pcnx-page-spot)
 .pcnx-type-flow .pcnx-flow-timeline>.pcnx-item>.pcnx-photo{
 display:block!important;grid-column:1!important;min-height:180px!important;
 width:100%!important;height:100%!important;aspect-ratio:auto!important;
 max-height:none!important;margin:0!important;border-radius:0!important;
 overflow:hidden!important;
}
body .pcnx-root:is(.pcnx-page-branding,.pcnx-page-sns,.pcnx-page-event,.pcnx-page-spot)
 .pcnx-type-flow .pcnx-flow-timeline>.pcnx-item>.pcnx-photo img{
 display:block!important;width:100%!important;height:100%!important;object-fit:cover!important;
}
body .pcnx-root:is(.pcnx-page-branding,.pcnx-page-sns,.pcnx-page-event,.pcnx-page-spot)
 .pcnx-type-flow .pcnx-flow-timeline>.pcnx-item>.pcnx-item-copy{
 display:flex!important;grid-column:2!important;flex-direction:column!important;
 align-items:flex-start!important;justify-content:center!important;
 min-width:0!important;width:100%!important;padding:21px 26px!important;
}
body .pcnx-root:is(.pcnx-page-branding,.pcnx-page-sns,.pcnx-page-event,.pcnx-page-spot)
 .pcnx-type-flow .pcnx-flow-timeline .pcnx-index{
 position:static!important;flex:none!important;width:auto!important;height:auto!important;
 margin:0 0 10px!important;padding:4px 12px!important;font-size:13px!important;
 border:0!important;border-radius:24px!important;background:#e9f5f3!important;
}
/* Existing timeline dots were absolutely positioned and overlap photographs; remove only here. */
body .pcnx-root:is(.pcnx-page-branding,.pcnx-page-sns,.pcnx-page-event,.pcnx-page-spot)
 .pcnx-type-flow .pcnx-flow-timeline>.pcnx-item::before,
body .pcnx-root:is(.pcnx-page-branding,.pcnx-page-sns,.pcnx-page-event,.pcnx-page-spot)
 .pcnx-type-flow .pcnx-flow-timeline>.pcnx-item::after{content:none!important;display:none!important}

body main :is(.pcnx-section-heading,.pcnx-feature-text,.pcnx-feature,.pcnx-item-copy,
 .section-heading,.sv-service-copy,.sv-section-heading,.pcn-intro,.pcn-editorial__copy,
 .pcpr-section-heading,.pcn-section-heading){min-width:0!important;max-width:100%!important}
body main :is(.pcnx-section-heading h2,.pcnx-feature h2,.pcnx-feature h3,
 .pcnx-item-copy h3,.pcnx-story h3,.pcnx-cta h2,.section-heading h2,
 .sv-service-copy h2,.sv-section-heading h2,.pcn-intro h2,
 .pcn-editorial__copy h2,.pcpr-section-heading h2,
 .pcn-section-heading h2,.pcn-cta h2){
  box-sizing:border-box!important;max-width:100%!important;min-width:0!important;
  height:auto!important;max-height:none!important;overflow:visible!important;
  text-overflow:clip!important;-webkit-line-clamp:unset!important;
  display:block;white-space:normal!important;word-break:normal!important;
  line-break:strict!important;overflow-wrap:break-word!important;hyphens:none!important;
  text-wrap:pretty;
}
body main :is(.pcnx-section-heading h2,.pcnx-feature h3,.pcnx-item-copy h3,
 .section-heading h2,.sv-service-copy h2,.sv-section-heading h2,
 .pcn-intro h2,.pcpr-section-heading h2) :is(span,strong,b,em){
  max-width:100%;height:auto;max-height:none;white-space:normal!important;
  word-break:normal!important;overflow-wrap:break-word!important;
  -webkit-line-clamp:unset!important;text-overflow:clip!important;
}
body main :is(.pcnx-feature-text,.pcnx-item-copy,.sv-service-copy,.pcn-editorial__copy)>p{
  height:auto!important;max-height:none!important;-webkit-line-clamp:unset!important;
  overflow:visible!important;white-space:normal!important;
  line-break:strict;overflow-wrap:break-word;
}
/* Preserve genuine line-break protection for the proper business name. */
body main .peach-brand-keep{white-space:nowrap!important;word-break:keep-all!important;overflow-wrap:normal!important}

/* Lightweight "progress is flowing" treatment; never paint every scroll frame. */
body.home .process .steps-grid,
body .pcnx-root .pcnx-flow-timeline,
body .pcf-page .pcf-timeline{position:relative!important;isolation:isolate}
/* Home line is vertical on mobile; use its existing base rail. */
@media(max-width:760px){
 body.home .process .steps-grid::after{
  content:'';position:absolute;left:27px;top:48px;bottom:54px;width:3px;
  background:linear-gradient(#e8a06a,#1c7a80);
  transform:scaleY(0);transform-origin:top center;z-index:1;
  pointer-events:none;border-radius:5px;
 }
 body.home .process .steps-grid.peach-flow-active::after{animation:peach-flow-progress 2.4s ease-out forwards}
 body.home .process .steps-grid li{z-index:2;position:relative}
}
/* Services previously hid their connecting line; give each image/card its own coherent rail. */
body .pcnx-root:is(.pcnx-page-branding,.pcnx-page-sns,.pcnx-page-event,.pcnx-page-spot)
 .pcnx-type-flow .pcnx-flow-timeline{padding-left:26px!important;overflow:visible!important}
body .pcnx-root:is(.pcnx-page-branding,.pcnx-page-sns,.pcnx-page-event,.pcnx-page-spot)
 .pcnx-type-flow .pcnx-flow-timeline::before{
 content:''!important;display:block!important;position:absolute!important;
 top:26px;bottom:26px;left:8px;width:3px;height:auto;
 background:#d2e5e4;border-radius:5px;z-index:0;
}
body .pcnx-root:is(.pcnx-page-branding,.pcnx-page-sns,.pcnx-page-event,.pcnx-page-spot)
 .pcnx-type-flow .pcnx-flow-timeline::after{
 content:'';display:block;position:absolute;left:8px;top:26px;bottom:26px;
 background:linear-gradient(#e8a06a,#396e77);width:3px;z-index:0;
 transform:scaleY(0);transform-origin:top center;pointer-events:none;border-radius:5px;
}
body .pcnx-root:is(.pcnx-page-branding,.pcnx-page-sns,.pcnx-page-event,.pcnx-page-spot)
 .pcnx-type-flow .pcnx-flow-timeline.peach-flow-active::after{animation:peach-flow-progress 2.5s ease-out forwards}
body .pcnx-root:is(.pcnx-page-branding,.pcnx-page-sns,.pcnx-page-event,.pcnx-page-spot)
 .pcnx-type-flow .pcnx-flow-timeline>.pcnx-item{position:relative;z-index:1}
/* /flow/ has an alternating timeline on desktop. Animate its actual spine. */
body .pcnx-root.pcnx-page-flow #flow .pcnx-flow-timeline::after{
 content:''!important;display:block!important;position:absolute!important;
 left:calc(50% - 1.5px);top:42px;bottom:42px;height:auto;width:3px;
 background:linear-gradient(#e8a06a,#396e77);transform:scaleY(0);transform-origin:top center;pointer-events:none;
}
body .pcnx-root.pcnx-page-flow #flow .pcnx-flow-timeline.peach-flow-active::after{animation:peach-flow-progress 3s ease-out forwards}
@media(max-width:700px){
 body .pcnx-root.pcnx-page-flow #flow .pcnx-flow-timeline::after{left:9px!important}
}
/* Specialized /flow/ page uses border-left on mobile and arrows on desktop. */
@media(max-width:700px){
 body .pcf-page .pcf-step{position:relative}
 body .pcf-page .pcf-step::after{
  content:'';position:absolute;left:-2px;top:0;bottom:0;width:3px;
  background:linear-gradient(#e8a06a,#396e77);transform:scaleY(0);transform-origin:top center;
 }
 body .pcf-page .pcf-step.peach-flow-active::after{animation:peach-flow-progress .75s ease-out forwards}
}
@media(min-width:701px){
 body .pcf-page .pcf-step-arrow{background:linear-gradient(90deg,#e8a06a,#396e77)!important;background-size:200% 100%!important}
 body .pcf-page .pcf-step.peach-flow-active .pcf-step-arrow{animation:peach-arrow-pulse 1.15s ease-out both}
}
@keyframes peach-flow-progress{from{transform:scaleY(0)}to{transform:scaleY(1)}}
@keyframes peach-arrow-pulse{from{background-position:100% 50%;opacity:.3}to{background-position:0 50%;opacity:1}}

/* Four service detailed timelines always expose their images. */
body .pcnx-root:is(.pcnx-page-branding,.pcnx-page-sns,.pcnx-page-event,.pcnx-page-spot)
 .pcnx-type-flow .pcnx-flow-timeline>.pcnx-item>.pcnx-photo{display:block!important;visibility:visible!important;opacity:1!important;}
body .pcnx-root:is(.pcnx-page-branding,.pcnx-page-sns,.pcnx-page-event,.pcnx-page-spot)
 .pcnx-type-flow .pcnx-flow-timeline>.pcnx-item>.pcnx-photo img{display:block!important;visibility:visible!important;opacity:1!important;width:100%!important;height:100%!important;object-fit:cover!important;}
/* The company logo should be present, not washed out. */
body .pcnx-root.pcnx-page-company .peach-shared-fv .hero-photo img{opacity:.42!important;object-fit:contain!important;}
body .pcnx-root.pcnx-page-company .peach-shared-fv .hero-fade{background:linear-gradient(90deg,rgba(248,251,251,.88) 0%,rgba(248,251,251,.81) 55%,rgba(248,251,251,.54) 100%)!important;}
@media(max-width:760px){
 body .pcnx-root.pcnx-page-sns #recommend .pcnx-items--recommended-photo{grid-template-columns:1fr!important;gap:16px!important;max-width:560px!important;margin-inline:auto!important}
 body .pcnx-root:is(.pcnx-page-branding,.pcnx-page-sns,.pcnx-page-event,.pcnx-page-spot) .pcnx-type-flow .pcnx-flow-timeline>.pcnx-item{grid-template-columns:minmax(0,1fr)!important;min-height:0!important;}
 body .pcnx-root:is(.pcnx-page-branding,.pcnx-page-sns,.pcnx-page-event,.pcnx-page-spot) .pcnx-type-flow .pcnx-flow-timeline>.pcnx-item>.pcnx-photo{grid-column:1!important;grid-row:1!important;min-height:0!important;height:auto!important;aspect-ratio:16/9!important;max-height:230px!important;}
 body .pcnx-root:is(.pcnx-page-branding,.pcnx-page-sns,.pcnx-page-event,.pcnx-page-spot) .pcnx-type-flow .pcnx-flow-timeline>.pcnx-item>.pcnx-item-copy{grid-column:1!important;grid-row:2!important;padding:18px 20px 22px!important;}
 body .pcnx-root.pcnx-page-company .peach-shared-fv .hero-photo img{opacity:.33!important}
 body .pcnx-root.pcnx-page-company .peach-shared-fv .hero-fade{background:rgba(250,252,252,.68)!important}
}
/* Headings and Japanese typesetting may wrap at phrases, but cannot be clipped. */
body main :is(h1,h2,h3,p){min-width:0;}
body main :is(.pcnx-section-heading h2,.section-heading h2,.sv-section-heading h2,.pcpr-section-heading h2,.pcn-section-heading h2){overflow:visible!important;max-height:none!important;text-overflow:clip!important;white-space:normal!important;word-break:normal!important;line-break:strict!important;overflow-wrap:break-word!important;}
body main .peach-brand-keep{white-space:nowrap!important;word-break:keep-all!important;overflow-wrap:normal!important;}
/* Render timeline progress by a single transform; no scroll event work. */
@media(max-width:760px){
 body.home .process .steps-grid.peach-flow-active::after{animation:peach-flow-progress 2.2s ease-out both;}
}
@media(prefers-reduced-motion:reduce){.peach-flow-active::after,.pcf-step.peach-flow-active::after{animation:none!important;transform:none!important}}
/* Service index previously set hero-photo inset:41% on phones, leaving a large
   blank-looking lower area even when the measured FV height matched HOME. */
body main.pc-service #service-hero.sv-top-hero .hero-media,
body main.pc-service #service-hero.sv-top-hero .hero-photo {
 position:absolute!important;
 inset:0!important;
 width:100%!important;
 height:100%!important;
 min-height:100%!important;
 max-height:none!important;
 overflow:hidden!important;
}
body main.pc-service #service-hero.sv-top-hero .hero-photo img {
 display:block!important;
 width:100%!important;
 height:100%!important;
 object-fit:cover!important;
 object-position:68% center!important;
 transform:none!important;
}
@media(max-width:760px){
 body main.pc-service #service-hero.sv-top-hero .hero-fade {
  background:linear-gradient(180deg,rgba(248,252,252,.98) 0%,rgba(248,252,252,.95) 43%,rgba(248,252,252,.79) 69%,rgba(248,252,252,.5) 100%)!important;
 }
}
