Team profile
What you control on a single agent's page — the /team/:slug profile inherits your team appearance slice.
The single agent page (/team/:slug) is a Dynamic Page — Tortus
renders the agent's real directory record inside our chrome. There's no separate
profile setting: the page reads the same team/agent appearance slice as the
roster index ({{tortus:team}}), stored once at design_tokens.agent. Because
the agent page is not MLS-locked, this slice controls real layout — which
sections show and the hero treatment — not just chrome.
Listing data on the page still obeys the per-agent show_listings switch and
renders the MLS disclaimer when listings are present; these controls never
change how listing data is presented.
What you control on the profile
| Field | Values | Effect |
|---|---|---|
enabled | true (default) / false | whole team surface on/off (off → the route 404s and the nav link is suppressed) |
heroStyle | split (default) / centered / banner | the profile hero treatment |
accentColor | primary (default) / secondary / accent | contact rail, CTAs, and stat strip tint |
showStats | true (default) / false | the stat strip (active listings / specialties / languages) |
showExpertise | true (default) / false | the expertise / languages block |
showReviews | true (default) / false | the reviews section |
showListings | true (default) / false | the agent's listings grid (still gated per-agent) |
sectionStyle | flat / border / shadow (default) | card / section container treatment |
buttonStyle | solid (default) / ghost / pill | contact / email / call CTA treatment |
cardRadius | 0–40 px (default 16) | portrait + listing-card corner radius |
listingSort | date (default) / price | default sort of the listings grid |
activesFirst | true / false (default) | group active / in-contract listings before sold |
protectContact | true / false (default) | hide phone/email behind a rate-limited "Reveal" click |
An org that hasn't customized renders byte-identically to today's bespoke profile layout — customize, and the page adopts your hero, sections, and accent.
Referencing the accent from custom content
The resolved accent is a live CSS var (var(--color-primary) by default,
following your accentColor role), and the button treatment maps to the same
brand tokens. A Custom Code block placed on a profile can read them, so any
extra callout stays on-brand and re-skins with the palette.
Custom HTML + CSS escape hatch
Like every page-builder block, a block you add to a profile supports Convert to
custom — the scoped Custom HTML and CSS fields are the escape hatch when a
token knob doesn't reach far enough. Scoped CSS references the same
--color-* / --font-* design tokens, so it stays on-brand.
The team appearance slice is edited from the site's Team appearance panel; the roster token that lists agents is documented on Team.
Full param table: Designer Handbook.

