/* ISOFT CMS pages — editorial system derived from the homepage */
.page-hero,.page-list-hero{padding:112px 0 76px;border-bottom:1px solid var(--rule);background:var(--bg)}
.page-shell{max-width:1120px;margin:0 auto}
.page-hero .page-shell{display:grid;grid-template-columns:minmax(0,1.28fr) minmax(280px,.72fr);gap:72px;align-items:end}
.page-hero .eyebrow{grid-column:1/-1}
.page-hero h1,.page-list-hero h1{font:400 clamp(56px,7vw,96px)/.96 var(--serif);letter-spacing:-.032em;margin:18px 0 0;max-width:11ch}
.page-deck{font-size:19px;line-height:1.58;color:var(--ink-2);max-width:48ch;margin:0 0 7px}
.case-facts{display:flex;gap:10px;flex-wrap:wrap;margin-top:26px}
.case-facts span{font:500 10px var(--mono);letter-spacing:.08em;text-transform:uppercase;border:1px solid var(--rule);padding:8px 10px}
.page-cover{padding-top:54px}
.page-cover img{display:block;width:100%;max-height:680px;aspect-ratio:16/8.5;object-fit:cover}

.page-content{padding:0 var(--gutter) 106px}
.page-body{max-width:1120px;margin:auto;color:var(--ink-2);font-size:17px;line-height:1.7}
.page-freeform{max-width:760px;margin:76px auto 0}
.page-body h2,.page-body h3{font-family:var(--serif);font-weight:400;color:var(--ink);letter-spacing:-.02em}
.page-body h2{font-size:clamp(34px,4vw,52px);line-height:1.03;margin:0 0 22px}
.page-body h3{font-size:29px;line-height:1.08;margin:34px 0 13px}
.page-body p{margin:0 0 22px}
.page-body img{max-width:100%;height:auto}
.page-body ul,.page-body ol{padding-left:20px;margin:22px 0 28px}
.page-body li{margin:7px 0}

/* Each builder section is intentionally not a card. The rhythm comes from spacing,
   typography, rules and occasional tonal bands, matching the homepage. */
.reusable-block{position:relative;margin:0;padding:86px 0;border-top:1px solid var(--rule);background:transparent}
.reusable-block:first-of-type{border-top:0}
.reusable-content{max-width:820px}
.reusable-content>h2:first-child,.reusable-content>h3:first-child{margin-top:0}
.reusable-content>p:last-child,.reusable-content>ul:last-child{margin-bottom:0}

/* Intro / featured */
.reusable-featured{padding:98px 0 88px}
.reusable-featured .reusable-content{max-width:920px}
.reusable-featured h2{font-size:clamp(44px,5.2vw,68px);max-width:15ch}
.reusable-featured p{font-size:20px;line-height:1.55;max-width:62ch}

/* Capability / bullet sections */
.reusable-bullets .reusable-content{display:grid;grid-template-columns:minmax(240px,.65fr) minmax(0,1.35fr);column-gap:72px;max-width:none}
.reusable-bullets .reusable-content>h2{grid-column:1;grid-row:1/20;max-width:9ch}
.reusable-bullets .reusable-content>p,.reusable-bullets .reusable-content>ul,.reusable-bullets .reusable-content>ol{grid-column:2}
.reusable-bullets ul{list-style:none;padding:0;margin:10px 0 0;display:grid;grid-template-columns:1fr 1fr;gap:0 28px}
.reusable-bullets li{padding:13px 0;border-top:1px solid var(--rule);margin:0}
.reusable-bullets li:before{content:'↗';font:500 10px var(--mono);margin-right:9px;color:var(--accent)}

/* Two-column text */
.reusable-split .reusable-content,.block-split{display:grid;grid-template-columns:1fr 1fr;gap:68px;max-width:none}
.reusable-split h2{max-width:10ch}

/* Image + text — primary visual pattern */
.reusable-image_text{padding:96px 0}
.block-image-text{display:grid;grid-template-columns:minmax(0,1fr) minmax(360px,.95fr);gap:76px;align-items:center}
.block-image-text.image-left{grid-template-columns:minmax(360px,.95fr) minmax(0,1fr)}
.block-image-text .reusable-content{max-width:620px}
.block-media{position:relative;background:#ebe7df;overflow:hidden}
.block-media:after{content:"";position:absolute;inset:0;border:1px solid rgba(15,15,14,.06);pointer-events:none}
.block-image-text .block-media img{display:block;width:100%;aspect-ratio:4/3;object-fit:cover;transition:transform .45s ease}
.block-image-text:hover .block-media img{transform:scale(1.015)}
.block-image-text .reusable-content ul{list-style:none;padding:0;margin-top:24px;display:grid;grid-template-columns:1fr 1fr;gap:0 20px}
.block-image-text .reusable-content li{margin:0;padding:10px 0;border-top:1px solid var(--rule)}
.block-image-text .reusable-content li:before{content:'✓';font:500 10px var(--mono);color:var(--accent);margin-right:8px}

/* Full-width image / visual break */
.reusable-full_image{padding:90px 0}
.reusable-full_image .reusable-content{max-width:760px;margin-bottom:32px}
.block-full-image{background:#ebe7df;overflow:hidden}
.block-full-image img{display:block;width:100%;max-height:680px;aspect-ratio:16/8.5;object-fit:cover}

/* Statistics */
.reusable-stats{padding:88px 0}
.reusable-stats .reusable-content{max-width:none}
.block-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:28px;margin-top:38px}
.block-stats div{border-top:1px solid var(--rule-strong);padding:20px 0 0}
.block-stats strong{display:block;font:400 64px/1 var(--serif);color:var(--ink);letter-spacing:-.035em}
.block-stats span{display:block;margin-top:10px;font-size:13px;max-width:22ch;color:var(--ink-3)}

/* Steps */
.reusable-steps .reusable-content{max-width:none}
.block-steps{display:grid;grid-template-columns:repeat(3,1fr);gap:34px;margin-top:36px}
.block-steps>div{border-top:1px solid var(--rule);padding-top:17px}
.block-steps span{font:500 10px var(--mono);letter-spacing:.1em;color:var(--accent)}
.block-steps h3{margin:12px 0 9px}

/* Technology band */
.reusable-tech{padding:82px 0}
.reusable-tech .reusable-content{max-width:none}
.block-chips{display:flex;flex-wrap:wrap;gap:8px;margin-top:28px}
.block-chips span{border:1px solid var(--rule-strong);padding:10px 13px;font:500 11px var(--mono);letter-spacing:.035em;color:var(--ink);background:rgba(255,255,255,.3)}

/* Proof */
.reusable-proof{padding:88px 48px;margin-left:-48px;margin-right:-48px;background:var(--accent-soft);border-top:0}
.reusable-proof .reusable-content{max-width:900px}
.reusable-proof ul{display:grid;grid-template-columns:1fr 1fr;gap:0 34px;list-style:none;padding:0}
.reusable-proof li{border-top:1px solid rgba(31,61,46,.18);padding:14px 0;margin:0}

/* Quotes */
.reusable-testimonial .reusable-content{max-width:900px}
.block-quote{margin:0;padding:0;border:0}
.block-quote p{font:400 clamp(32px,4vw,48px)/1.13 var(--serif);color:var(--ink)}
.block-quote footer{font-size:13px;color:var(--ink-2)}
.block-quote footer span{display:block;color:var(--ink-3);margin-top:4px}

/* FAQ */
.reusable-faq{padding-top:92px}
.reusable-faq .reusable-content{max-width:920px}
.block-faq details{border-top:1px solid var(--rule);padding:18px 0}
.block-faq details:last-child{border-bottom:1px solid var(--rule)}
.block-faq summary{cursor:pointer;color:var(--ink);font-weight:550;font-size:17px}
.block-faq details p{margin:12px 0 0;max-width:68ch}

/* CTA */
.reusable-cta{margin:26px -48px 0;padding:66px 48px;background:var(--ink);color:var(--bg);border-top:0}
.reusable-cta .reusable-content{max-width:900px}
.reusable-cta h2,.reusable-cta h3,.reusable-cta p{color:inherit}
.reusable-cta h2{font-size:clamp(40px,5vw,62px);max-width:14ch}
.reusable-cta p{color:rgba(244,241,236,.72);max-width:60ch}
.reusable-cta .btn-primary{background:var(--bg);color:var(--ink)}

/* Case study grid */
.block-case-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:30px}
.block-case-grid>div{border-top:1px solid var(--rule);padding-top:15px}

/* Child pages */
.child-pages{padding-top:82px;border-top:1px solid var(--rule)}
.child-pages h2{font-size:42px}

/* Page CTA */
.page-cta{padding:0 0 110px}
.page-cta-inner{background:var(--ink);color:var(--bg);padding:54px 58px;display:flex;align-items:end;justify-content:space-between;gap:42px}
.page-cta h2{font:400 46px/1.02 var(--serif);margin:10px 0;max-width:13ch}
.page-cta p{max-width:58ch;color:rgba(244,241,236,.7)}

/* Listing pages */
.page-list-hero .lede{max-width:58ch;margin-top:24px}
.page-list{padding:76px 0 120px}
.page-card-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:36px 28px}
.page-card{display:block;text-decoration:none;color:inherit;border-top:1px solid var(--rule);padding-top:18px;transition:transform .2s ease}
.page-card:hover{transform:translateY(-3px)}
.page-card img{width:100%;aspect-ratio:16/10;object-fit:cover;margin-bottom:20px}
.page-card h2,.page-card h3{font:400 31px/1.05 var(--serif);margin:11px 0}
.page-card p{color:var(--ink-3);line-height:1.55}
.page-card strong{display:block;font-size:13px;margin-top:12px}
.page-card-link{display:block;margin-top:18px;color:var(--accent)}

@media(max-width:900px){
  .page-hero .page-shell{grid-template-columns:1fr;gap:28px}.page-hero .eyebrow{grid-column:auto}.page-hero h1{max-width:14ch}
  .page-card-grid{grid-template-columns:1fr 1fr}.page-cta-inner{align-items:flex-start;flex-direction:column}
  .reusable-bullets .reusable-content,.block-image-text,.block-image-text.image-left,.reusable-split .reusable-content,.block-split{grid-template-columns:1fr;gap:34px}
  .reusable-bullets .reusable-content>h2{grid-column:1;grid-row:auto;max-width:14ch}.reusable-bullets .reusable-content>p,.reusable-bullets .reusable-content>ul,.reusable-bullets .reusable-content>ol{grid-column:1}
  .block-image-text.image-left .block-media{order:0}.block-image-text.image-left .reusable-content{order:1}.block-image-text.image-right .reusable-content{order:0}.block-image-text.image-right .block-media{order:1}
}
@media(max-width:700px){
  .page-card-grid,.block-stats,.block-steps,.block-case-grid,.reusable-proof ul,.block-image-text .reusable-content ul{grid-template-columns:1fr}
  .page-hero,.page-list-hero{padding:72px 0 54px}.page-content{padding-top:0}.page-cta-inner{padding:32px}
  .reusable-block{padding:62px 0}.reusable-featured{padding-top:68px}.reusable-proof,.reusable-cta{margin-left:-20px;margin-right:-20px;padding-left:20px;padding-right:20px}
  .block-image-text{gap:24px}.page-body h2{font-size:38px}.reusable-featured h2{font-size:44px}
}

/* Service-page section navigation */
.service-section-nav{position:sticky;top:65px;z-index:35;background:color-mix(in srgb,var(--bg) 94%,transparent);backdrop-filter:blur(10px);border-bottom:1px solid var(--rule)}
.service-section-nav-inner{display:flex;align-items:center;gap:22px;overflow-x:auto;scrollbar-width:none;padding-top:14px;padding-bottom:14px;white-space:nowrap}
.service-section-nav-inner::-webkit-scrollbar{display:none}
.service-section-nav-label{font:500 10px var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--ink-4);padding-right:6px}
.service-section-nav a{font-size:12px;color:var(--ink-3);text-decoration:none;transition:color .15s ease}
.service-section-nav a:hover{color:var(--ink)}
.reusable-block{scroll-margin-top:125px}
@media(max-width:720px){.service-section-nav{top:65px}.service-section-nav-label{display:none}.service-section-nav-inner{gap:18px}}

/* v4.6 — responsive editorial formatting + lightweight motion */
.page-hero h1,.page-list-hero h1,.page-body h2,.page-body h3,.reusable-content h2,.reusable-content h3{
  text-wrap:balance;
  overflow-wrap:normal;
  word-break:normal;
  hyphens:none;
}
.page-deck,.reusable-content p{ text-wrap:pretty; }

/* Give long service headings more breathing room so they do not stack into narrow towers. */
.reusable-featured .reusable-content{max-width:1040px}
.reusable-featured h2{font-size:clamp(42px,4.45vw,62px);line-height:1.01;max-width:20ch;letter-spacing:-.028em}
.reusable-featured p{max-width:68ch}

/* Standard long-form sections use an editorial split when the content contains a heading. */
.reusable-rich_text .reusable-content{max-width:940px}
.reusable-rich_text .reusable-content>h2:first-child{max-width:17ch}

/* Auto-format substantial lists. JS adds .auto-list-2/.auto-list-3 after counting items. */
.page-body ul.auto-list-2,.page-body ol.auto-list-2,
.reusable-content ul.auto-list-2,.reusable-content ol.auto-list-2{
  list-style:none;padding:0;margin:28px 0 0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 34px;
}
.page-body ul.auto-list-3,.page-body ol.auto-list-3,
.reusable-content ul.auto-list-3,.reusable-content ol.auto-list-3{
  list-style:none;padding:0;margin:30px 0 0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0 30px;
}
.page-body .auto-list-2>li,.page-body .auto-list-3>li,
.reusable-content .auto-list-2>li,.reusable-content .auto-list-3>li{
  margin:0;padding:13px 0;border-top:1px solid var(--rule);break-inside:avoid;line-height:1.48;
}
.reusable-content .auto-list-2>li:before,.reusable-content .auto-list-3>li:before{
  content:'↗';font:500 9px var(--mono);color:var(--accent);margin-right:8px;vertical-align:2px;
}
/* Do not double-decorate special block lists. */
.reusable-bullets .auto-list-2>li:before,.reusable-bullets .auto-list-3>li:before,
.block-image-text .auto-list-2>li:before,.block-image-text .auto-list-3>li:before{content:none}

/* Capability lists get more useful horizontal density on large screens. */
.reusable-bullets ul.auto-list-2{grid-template-columns:repeat(2,minmax(0,1fr));gap:0 30px}
.reusable-bullets ul.auto-list-3{grid-template-columns:repeat(2,minmax(0,1fr));gap:0 30px}
.reusable-bullets .reusable-content{column-gap:82px}

/* Add subtle alternating rhythm without turning sections into cards. */
.reusable-block:nth-of-type(even):not(.reusable-cta):not(.reusable-proof){
  position:relative;
}
.reusable-block:nth-of-type(even):not(.reusable-cta):not(.reusable-proof):before{
  content:"";position:absolute;inset:0 calc(50% - 50vw);background:rgba(255,255,255,.22);z-index:-1;
}

/* Improve large image sections. */
.block-image-text{gap:clamp(38px,6vw,82px)}
.block-image-text .block-media{min-height:320px}
.block-image-text .block-media img{height:100%;min-height:320px;object-fit:cover}
.block-image-text .reusable-content h2:first-child{max-width:13ch}

/* Better paragraph measure in dense sections. */
.reusable-content>p{max-width:68ch}
.reusable-split .reusable-content>div p,.block-split>div p{max-width:52ch}

/* Lightweight reveal motion — progressively enhanced by pages.js. */
.js-reveal{opacity:0;transform:translateY(22px);transition:opacity .62s cubic-bezier(.2,.7,.2,1),transform .62s cubic-bezier(.2,.7,.2,1)}
.js-reveal.is-visible{opacity:1;transform:none}
.js-reveal .block-media img{transform:scale(1.025);transition:transform .8s cubic-bezier(.2,.7,.2,1)}
.js-reveal.is-visible .block-media img{transform:scale(1)}
.js-reveal-delay-1{transition-delay:.07s}.js-reveal-delay-2{transition-delay:.14s}

@media (prefers-reduced-motion:reduce){
  .js-reveal{opacity:1!important;transform:none!important;transition:none!important}
  .js-reveal .block-media img{transform:none!important;transition:none!important}
}

@media(min-width:1280px){
  .page-body ul.auto-list-3,.page-body ol.auto-list-3,.reusable-content ul.auto-list-3,.reusable-content ol.auto-list-3,
  .reusable-bullets ul.auto-list-3{grid-template-columns:repeat(3,minmax(0,1fr))}
}
@media(max-width:980px){
  .page-body ul.auto-list-3,.page-body ol.auto-list-3,.reusable-content ul.auto-list-3,.reusable-content ol.auto-list-3,
  .reusable-bullets ul.auto-list-3{grid-template-columns:repeat(2,minmax(0,1fr))}
  .reusable-featured h2{max-width:18ch}
}
@media(max-width:620px){
  .page-body ul.auto-list-2,.page-body ol.auto-list-2,.reusable-content ul.auto-list-2,.reusable-content ol.auto-list-2,
  .page-body ul.auto-list-3,.page-body ol.auto-list-3,.reusable-content ul.auto-list-3,.reusable-content ol.auto-list-3,
  .reusable-bullets ul.auto-list-2,.reusable-bullets ul.auto-list-3{grid-template-columns:1fr}
  .reusable-featured h2{font-size:clamp(39px,12vw,48px);max-width:14ch}
  .block-image-text .block-media,.block-image-text .block-media img{min-height:240px}
}

/* v4.17.1 — quieter editorial internal-link hub */
.related-content-hub{border-top:1px solid var(--rule);padding:92px 0 104px;background:var(--paper)}
.related-content-head{display:grid;grid-template-columns:minmax(150px,.55fr) minmax(0,1.45fr);gap:56px;align-items:start;margin-bottom:54px}
.related-content-head h2{font:400 clamp(44px,5vw,68px)/.98 var(--serif);letter-spacing:-.03em;margin:0 0 14px;max-width:9ch;text-wrap:balance}
.related-content-head p{font-size:15px;line-height:1.6;color:var(--ink-3);margin:0;max-width:44ch}
.related-content-label{font:500 10px/1.4 var(--mono);letter-spacing:.11em;text-transform:uppercase;color:var(--ink-4)}
.related-insights{display:grid;grid-template-columns:minmax(150px,.55fr) minmax(0,1.45fr);gap:56px;padding-top:28px;border-top:1px solid var(--rule)}
.related-insight-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));column-gap:34px;row-gap:0}
.related-insight{display:grid;grid-template-columns:38px minmax(0,1fr);gap:14px;text-decoration:none;color:var(--ink);padding:22px 0 26px;border-top:1px solid var(--rule-strong);min-width:0}
.related-insight:nth-child(-n+2){border-top:0;padding-top:0}
.related-index{font:500 10px/1.4 var(--mono);letter-spacing:.08em;color:var(--ink-4);padding-top:4px}
.related-insight h3{font:400 clamp(24px,2.15vw,31px)/1.08 var(--serif);letter-spacing:-.02em;margin:0 0 10px;text-wrap:balance}
.related-insight p{font-size:13px;line-height:1.58;color:var(--ink-3);margin:0 0 13px;max-width:42ch}
.related-content-link{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--ink-3)}
.related-insight:hover .related-content-link{color:var(--accent)}
.related-directory{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:34px;margin-top:54px;padding-top:30px;border-top:1px solid var(--rule)}
.related-directory-group{min-width:0}
.related-directory-group .related-content-label{margin-bottom:16px}
.related-directory-links{border-top:1px solid var(--rule-strong)}
.related-directory-links a{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;text-decoration:none;color:var(--ink);padding:15px 0 16px;border-bottom:1px solid var(--rule);font:400 20px/1.12 var(--serif);letter-spacing:-.014em}
.related-directory-links a>span:first-child{max-width:18ch;text-wrap:balance}
.related-directory-links a>span:last-child{font:400 13px/1 var(--sans);color:var(--ink-4);padding-top:4px;transition:transform .2s ease,color .2s ease}
.related-directory-links a:hover>span:last-child{transform:translate(2px,-2px);color:var(--accent)}
@media(max-width:900px){
  .related-content-head,.related-insights{grid-template-columns:1fr;gap:18px}
  .related-content-head{margin-bottom:42px}
  .related-insight-grid{grid-template-columns:1fr}
  .related-insight:nth-child(2){border-top:1px solid var(--rule-strong);padding-top:22px}
  .related-directory{grid-template-columns:1fr;gap:34px}
}
@media(max-width:640px){
  .related-content-hub{padding:68px 0 78px}
  .related-content-head h2{font-size:clamp(42px,12vw,56px)}
  .related-insight{grid-template-columns:30px minmax(0,1fr);gap:10px}
  .related-insight h3{font-size:25px}
  .related-directory-links a{font-size:19px}
}

