/* R10 contract: shared title spacing; functional workflows stay distinct. */
body.es3d-family-page, body.es3d-family-bambuflow { --es3d-family-before-title:32px; --es3d-family-title-after:6px; }
.es3d-family-page { --es3d-family-title:clamp(36px,3vw,44px); --es3d-family-heading:clamp(24px,2vw,30px); --es3d-family-lead:clamp(17px,1.7vw,19px); }
body.es3d-family-page .es3d-family-content { margin-top:0!important; padding-top:0!important; }
body.es3d-family-page .es3d-family-hero { margin:0 0 24px; padding:var(--es3d-family-before-title) 0 0!important; border:0; border-radius:0; background:transparent; box-shadow:none; }
body.es3d-family-page h1.es3d-family-title { position:static!important; width:auto!important; height:auto!important; clip:auto!important; clip-path:none!important; overflow:visible!important; white-space:normal!important; margin:0 0 var(--es3d-family-title-after)!important; padding:0!important; font-size:var(--es3d-family-title)!important; line-height:1.15!important; font-weight:600!important; letter-spacing:-.035em; color:#54565a; }
body.es3d-family-page .es3d-family-lead { max-width:760px; margin:0; font-size:var(--es3d-family-lead)!important; line-height:1.55; color:#545f57; }
body.es3d-family-page .es3d-formabrace { padding-top:0!important; }
body.es3d-family-page .es3d-formabrace__hero { padding-top:var(--es3d-family-before-title)!important; --es3d-mobile-lead-gap:var(--es3d-family-title-after); }
body.es3d-family-page.es3d-compact-header .es3d-formabrace__hero .es3d-app-lockup { margin-bottom:var(--es3d-family-title-after)!important; }
body.es3d-family-page .es3d-formabrace__lead { margin-top:0!important; }
body.es3d-family--scalaforge .sf3d__hero { display:block; margin:0 0 20px; }
body.es3d-family--scalaforge .sf3d__eyebrow { display:none; }
body.es3d-family--scalaforge .sf3d__hero h2 { font-size:var(--es3d-family-heading)!important; margin:0 0 8px; line-height:1.2; }
body.es3d-family--scalaforge .sf3d__privacy { padding:0; margin:16px 0 0; background:transparent; border:0; border-radius:0; box-shadow:none; font-size:17px; line-height:1.55; }
body.es3d-family--scalaforge .sf3d__privacy strong { display:block; margin-bottom:4px; }
body.es3d-family-page .es3d-project-page,
body.es3d-family-page .es3d-lumasegno { position:relative; left:50%; transform:translateX(-50%); width:var(--es3d-shell-width)!important; max-width:none!important; margin:0!important; padding:0!important; }
body.es3d-family--lumasegno .es3d-lumasegno__hero { gap:16px 24px; align-items:start; }
body.es3d-family--lumasegno .es3d-lumasegno__hero .es3d-lumasegno__eyebrow { display:none; }
body.es3d-family--lumasegno .es3d-lumasegno__status { font-size:13px; line-height:1.5; }
body.es3d-family--lumasegno .es3d-lumasegno__frame-shell { border:0; border-radius:0; box-shadow:none; background:transparent; }
body.es3d-family--lumasegno .es3d-lumasegno__scope h2 { font-size:var(--es3d-family-heading)!important; line-height:1.2; }
body.es3d-family--lumasegno .es3d-lumasegno__scope :is(p,dt,dd) { font-size:17px; line-height:1.55; }
body.es3d-family-page .es3d-project-content > p:first-child { max-width:760px; margin:0 0 24px; font-size:var(--es3d-family-lead); line-height:1.55; }
body.es3d-family-page .es3d-project-content h2 { font-size:var(--es3d-family-heading); line-height:1.2; }
body.es3d-family-page .es3d-project-content :is(p,li) { font-size:17px; line-height:1.55; }
body.es3d-family-page .es3d-hub-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:32px 24px; }
body.es3d-family-page .es3d-hub-item { min-width:0; padding:0 0 24px; border-bottom:1px solid #d6e2da; }
body.es3d-family-page .es3d-hub-image { display:block; margin-bottom:16px; }
body.es3d-family-page .es3d-hub-image img { display:block; width:100%; height:auto; aspect-ratio:3/2; object-fit:cover; border:0; border-radius:0; }
body.es3d-family-page .es3d-hub-item h2 { margin:0 0 8px; font-size:var(--es3d-family-heading); line-height:1.2; }
body.es3d-family-page .es3d-hub-item h2 a { color:#17241e; }
body.es3d-family-page .es3d-hub-item p { margin:0 0 12px; font-size:17px; line-height:1.55; color:#545f57; }
body.es3d-family-page .es3d-hub-cta { display:inline-flex; align-items:center; min-height:44px; font-size:16px; line-height:1.4; color:#1f6a4f; text-decoration:underline; text-underline-offset:.2em; }
body.es3d-family-page .es3d-family-note { max-width:80ch; margin:24px 0; font-size:17px; line-height:1.55; }
body.es3d-family-page .es3d-project-page a:focus-visible { outline:3px solid #178953; outline-offset:3px; }
/* BambuFlow reuses this stylesheet; its engine/runtime files are not replaced. */
body.es3d-scope.es3d-family-bambuflow { background:#fff; }
body.es3d-family-bambuflow .app-shell { padding-top:var(--es3d-family-before-title); }
body.es3d-family-bambuflow .hero h1.es3d-app-lockup { margin-bottom:var(--es3d-family-title-after)!important; }
body.es3d-family-bambuflow .hero .lead { margin-top:0!important; }
@media(max-width:767px) {
  body.es3d-family-page, body.es3d-family-bambuflow { --es3d-family-before-title:28px; }
  body.es3d-family-page .es3d-family-hero, body.es3d-family-page .es3d-formabrace__hero { margin-bottom:20px; }
  body.es3d-family-page .es3d-hub-grid { grid-template-columns:minmax(0,1fr); }
}

body.es3d-family--project .es3d-family-hero:not(.has-intro) { margin-bottom:0; }

body.es3d-family-bambuflow { font-size:17px; }
body.es3d-family-bambuflow .hero .lead { font-size:clamp(17px,1.7vw,19px); line-height:1.55; }
body.es3d-family-bambuflow .panel h2 { font-size:clamp(24px,2vw,30px); line-height:1.2; }
body.es3d-family-bambuflow .panel > p { font-size:17px; line-height:1.55; }

body.es3d-family-page .es3d-formabrace { margin-top:0!important; }

body.es3d-family--scalaforge .es3d-gated-tool { padding:0!important; border:0!important; border-radius:0; background:transparent; box-shadow:none; }
