/* JP Advisory — redesign (Graphite & Signal) */
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;}
*{box-sizing:border-box;}
body{margin:0;background:#fff;-webkit-font-smoothing:antialiased;}
a{color:inherit;text-decoration:none;}
img{max-width:100%;}
[id]{scroll-margin-top:84px;}
h1,h2,h3,h4{text-wrap:balance;}
p,li{text-wrap:pretty;}

/* interactive states (inline styles can't express :hover/:focus, so these use !important to win) */
.btn-dark{transition:background .16s ease;}
.btn-dark:hover{background:#45577A !important;}
.btn-blue{transition:background .16s ease;}
.btn-blue:hover{background:#17191D !important;}
.link-underline{transition:color .16s ease,border-color .16s ease;}
.link-underline:hover{color:#45577A !important;border-color:#45577A !important;}
.link-plain:hover{color:#45577A !important;}
.link-plain-inv:hover{color:#fff !important;}
.nav-cta:hover{background:#17191D !important;}
.field{transition:border-color .16s ease;}
.field:focus{border-color:#45577A !important;outline:none;}

/* details / FAQ chevron */
details summary{list-style:none;cursor:pointer;}
details summary::-webkit-details-marker{display:none;}
details[open] summary .chev{transform:rotate(45deg);}
.chev{transition:transform .22s ease;}

/* header */
.site-header{position:sticky;top:0;z-index:40;background:rgba(255,255,255,.92);backdrop-filter:blur(10px);border-bottom:1px solid rgba(23,25,29,.12);}

/* approach diagram: line-draw animation on first scroll into view */
.js #approachViz .av-ln,.js #approachViz .av-plan{stroke-dasharray:520;stroke-dashoffset:520;}
.js #approachViz .av-node{transform:scale(0);transform-origin:center;transform-box:fill-box;}
.js #approachViz .av-label{opacity:0;}
.js #approachViz.go .av-ln,.js #approachViz.go .av-plan{animation:draw 1s ease forwards;}
.js #approachViz.go .av1{animation-delay:.05s;} .js #approachViz.go .av2{animation-delay:.22s;}
.js #approachViz.go .av3{animation-delay:.39s;} .js #approachViz.go .av4{animation-delay:.56s;}
.js #approachViz.go .av-node{animation:pop .4s cubic-bezier(.34,1.56,.64,1) .8s forwards;}
.js #approachViz.go .av-plan{animation-delay:.95s;}
.js #approachViz.go .av-label{animation:fade .6s ease forwards;}
.js #approachViz.go .avl1{animation-delay:.25s;} .js #approachViz.go .avl2{animation-delay:.42s;}
.js #approachViz.go .avl3{animation-delay:.59s;} .js #approachViz.go .avl4{animation-delay:.76s;}
.js #approachViz.go .av-key{animation-delay:1.2s;}
@keyframes draw{to{stroke-dashoffset:0;}}
@keyframes pop{to{transform:scale(1);}}
@keyframes fade{to{opacity:1;}}
@media (prefers-reduced-motion:reduce){
  .js #approachViz .av-ln,.js #approachViz .av-plan{stroke-dashoffset:0;animation:none !important;}
  .js #approachViz .av-node{transform:scale(1);animation:none !important;}
  .js #approachViz .av-label{opacity:1;animation:none !important;}
}

/* responsive: collapse fixed two-column grids that aren't auto-fit */
@media (max-width:820px){
  .two-col-intro,.two-col-detail,.two-col-bio,.guarantee-grid{grid-template-columns:1fr !important;}
  .guarantee-grid svg{margin:0 auto;}
}
@media (max-width:700px){
  /* key insights stack in one column: strip the column padding so all four align */
  .insight-cell{padding-left:0 !important;padding-right:0 !important;border-right:none !important;}
}
@media (max-width:640px){
  .site-header .head-nav{gap:12px 16px !important;}
  .hero-h1{font-size:clamp(30px,7vw,40px) !important;}
  /* hero image: 33% shorter on mobile, crop weighted 2/3 off the bottom */
  .hero-media{height:min(362px,33.5vh) !important;}
  .hero-media img{object-position:50% 33% !important;}
}

/* contact / book form confirmation */
.form-ok{display:none;padding:28px;border:1px solid rgba(23,25,29,.12);background:#F6F7F8;font-size:15px;color:#4b4f57;line-height:1.6;}
.form-ok.show{display:block;}
.form-ok b{color:#17191D;}
