@charset "UTF-8";
@page {
  margin: 0.5in; }

body {
  overflow: visible !important;
  font-size: 12px;
  scrollbar-width: none; }
  body ::-webkit-scrollbar {
    display: none; }

.w-screen {
  max-width: 100% !important; }

.h-screen {
  height: auto !important; }

.cma-topnav,
.cma-bottomnav,
.btn-closecma,
.prevnext,
.intercom-namespace,
.main-wrapper.blur,
.gallery .thmb-wrap,
.gallery .photo-nav,
#banner-cta-wrap,
#PrivyStorybookBanner,
.ToolTipWithIcon,
.menu-savebox-flexcontainer,
#top-bar,
#agent-dropdown-top-dropdown-col,
#cma-section-agent-banner,
.print-hidden {
  display: none !important; }

.overlay {
  width: auto;
  height: auto !important;
  overflow: visible !important;
  position: static !important; }

#cma-overlay,
#cma-overlay-superior {
  height: auto !important;
  /* Before & After is short enough to fit on a single page, so keep it
     together — otherwise the title and BEFORE tag can get separated from
     the spec table when a page break lands in the middle. */ }
  #cma-overlay ::-webkit-scrollbar,
  #cma-overlay-superior ::-webkit-scrollbar {
    display: none; }
  #cma-overlay .cma-main,
  #cma-overlay .cma-content,
  #cma-overlay .cma-content-container,
  #cma-overlay-superior .cma-main,
  #cma-overlay-superior .cma-content,
  #cma-overlay-superior .cma-content-container {
    height: auto !important;
    max-height: none !important;
    overflow: visible !important;
    scrollbar-width: none; }
    #cma-overlay .cma-main ::-webkit-scrollbar,
    #cma-overlay .cma-content ::-webkit-scrollbar,
    #cma-overlay .cma-content-container ::-webkit-scrollbar,
    #cma-overlay-superior .cma-main ::-webkit-scrollbar,
    #cma-overlay-superior .cma-content ::-webkit-scrollbar,
    #cma-overlay-superior .cma-content-container ::-webkit-scrollbar {
      display: none; }
  #cma-overlay .cma-content,
  #cma-overlay-superior .cma-content {
    padding-right: 0 !important; }
  #cma-overlay .cma-container,
  #cma-overlay-superior .cma-container {
    max-width: 100%; }
  #cma-overlay .cma-content-container,
  #cma-overlay-superior .cma-content-container {
    border-radius: 0;
    box-shadow: none;
    top: 0; }
  #cma-overlay .section,
  #cma-overlay-superior .section {
    page-break-before: auto;
    page-break-inside: auto; }
    #cma-overlay .section h2.cma-title,
    #cma-overlay-superior .section h2.cma-title {
      font-size: 1.375em; }
    #cma-overlay .section h3,
    #cma-overlay-superior .section h3 {
      font-size: 1em; }
  #cma-overlay .section.cma-before-after,
  #cma-overlay-superior .section.cma-before-after {
    page-break-inside: avoid; }

/* Keep each row together, but allow the tables themselves (and the group
   of tables under the map) to flow naturally across pages. Without this,
   a table whose height exceeds the remaining page space gets pushed in
   full to the next page, creating a visible gap under the map. */
.comp-list table tr {
  page-break-inside: avoid; }

/* Stop browsers from auto-repeating <thead> on each new page when a comp
   table spans multiple pages — we want the section header (e.g. "ACTIVE",
   "RENTALS") to appear exactly once, where the data starts. Treating the
   thead as a regular row group disables the repetition. */
.comp-list table thead {
  display: table-row-group; }

/* Strip the on-screen min/max heights + scroll affordances from the comp-list
   wrappers in print. The 150px min-height in particular reserves empty space
   below shorter tables (e.g. Active) and creates a gap before the next table
   (e.g. Rental Comps). */
body.cma-printing .comp-list {
  min-height: 0 !important;
  max-height: none !important;
  overflow: visible !important; }

/* === Per-section print toggles ===
   Body classes are added by CmaPrintModal before window.print() and removed
   on the afterprint event. Each class hides one top-level CMA section. */
body.print-hide-summary #cma-top {
  display: none !important; }

body.print-hide-mls-details #cma-mls-details {
  display: none !important; }

body.print-hide-comparables #cma-comparables {
  display: none !important; }

body.print-hide-before-after #cma-before-after {
  display: none !important; }

body.print-hide-public-records #cma-public-records,
body.print-hide-public-records #cma-mortgage-history,
body.print-hide-public-records #cma-property-history,
body.print-hide-public-records #cma-tax-info {
  display: none !important; }

/* Public Records subsection toggles. Foreclosure/Assessor blocks are
   identified by data-supergroup attribute since their names come from data. */
body.print-hide-pr-foreclosure
#cma-public-records
[data-supergroup*="oreclosure" i] {
  display: none !important; }

body.print-hide-pr-assessor #cma-public-records [data-supergroup*="ssessor" i] {
  display: none !important; }

body.print-hide-pr-deed #cma-public-records [data-supergroup*="eed" i] {
  display: none !important; }

body.print-hide-pr-mortgage-history #cma-mortgage-history {
  display: none !important; }

body.print-hide-pr-property-history #cma-property-history {
  display: none !important; }

body.print-hide-pr-tax-info #cma-tax-info {
  display: none !important; }

/* Comparables subsection toggles — hide individual status groups in the
   printed comparables section. Each comp-list wrapper carries a
   `.comp-list-status-{status}` class so we can target them directly. */
body.print-hide-comp-investor #cma-comparables .comp-list-status-investor {
  display: none !important; }

body.print-hide-comp-sold #cma-comparables .comp-list-status-sold {
  display: none !important; }

body.print-hide-comp-under-contract
#cma-comparables
.comp-list-status-under-contract {
  display: none !important; }

body.print-hide-comp-pending #cma-comparables .comp-list-status-pending {
  display: none !important; }

body.print-hide-comp-active #cma-comparables .comp-list-status-active {
  display: none !important; }

body.print-hide-comp-rental #cma-comparables .comp-list-status-rental-mls {
  display: none !important; }

/* Hide matching pins + legend chips on the printed comps map. Investor is
   intentionally NOT in this list: comps can be classified as Investor AND
   another status (e.g. an investor-grade sold). When the user unchecks the
   Investor Comps table, we still want the blue overlay pin to render on top
   of any overlapping sold/active/etc pin, and we want the Investor legend
   chip to remain so the reader understands why that comp prints blue. */
body.print-hide-comp-sold
#cma-comparables
.cma-print-map-pin[data-status="sold"],
body.print-hide-comp-sold
#cma-comparables
.cma-print-map-legend
[data-status="sold"] {
  display: none !important; }

body.print-hide-comp-under-contract
#cma-comparables
.cma-print-map-pin[data-status="under-contract"],
body.print-hide-comp-under-contract
#cma-comparables
.cma-print-map-legend
[data-status="under-contract"] {
  display: none !important; }

body.print-hide-comp-pending
#cma-comparables
.cma-print-map-pin[data-status="pending"],
body.print-hide-comp-pending
#cma-comparables
.cma-print-map-legend
[data-status="pending"] {
  display: none !important; }

body.print-hide-comp-active
#cma-comparables
.cma-print-map-pin[data-status="active"],
body.print-hide-comp-active
#cma-comparables
.cma-print-map-legend
[data-status="active"] {
  display: none !important; }

body.print-hide-comp-rental
#cma-comparables
.cma-print-map-pin[data-status="rental-mls"],
body.print-hide-comp-rental
#cma-comparables
.cma-print-map-legend
[data-status="rental-mls"] {
  display: none !important; }

/* When comparables is included, force every column to display. Several
   columns carry inline `print:!hidden` (Tailwind), so we override here. */
body.cma-printing:not(.print-hide-comparables) #cma-comparables .comp-list table th,
body.cma-printing:not(.print-hide-comparables) #cma-comparables .comp-list table td {
  display: table-cell !important; }

/* Pin-number cell: matches the labeled pin on the printed comparables map
   so the user can connect a row to its pin. */
.cma-print-pin-cell {
  width: 1.5em;
  padding: 2px 4px !important;
  text-align: center;
  font-weight: 700;
  border-right: 1px solid #ddd;
  white-space: nowrap; }

/* Overlay pins on the printed static map. Rendered as small numbered discs
   anchored to lat/lng coordinates via Web Mercator projection in JS. */
.cma-print-map-pin {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 18px;
  height: 18px;
  padding: 0 4px;
  border-radius: 9px;
  border: 1px solid;
  font-size: 10px;
  font-weight: 700;
  line-height: 1;
  box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.8);
  -webkit-print-color-adjust: exact;
  print-color-adjust: exact; }

.cma-print-map-pin[data-variant="subject"] {
  min-width: 22px;
  height: 22px;
  border-radius: 11px;
  border-width: 2px;
  font-size: 12px; }

/* Live JS maps (Google Maps WebGL canvases) don't render reliably in print.
   We render a Static Maps API <img> alongside each live map and toggle
   visibility for print. */
.cma-print-static-map {
  page-break-inside: avoid;
  /* Keep the first comps table attached directly under the map instead of
     letting the browser push the table to the next page, which leaves a
     visible gap when the section is short (e.g. only Rental Comps selected). */
  page-break-after: avoid;
  break-after: avoid;
  /* Keep the map attached to the section title above it so the
     "Comparables" heading doesn't get orphaned at the bottom of a page. */
  page-break-before: avoid;
  break-before: avoid;
  margin: 0 auto 1rem;
  text-align: center; }
  .cma-print-static-map img {
    display: inline-block;
    max-width: 100%;
    height: auto; }

/* Keep the "Comparables" section title attached to its first content
   block. The browser otherwise places the h2 + <hr> wrapper at the
   bottom of a page and breaks before the map/tables on the next page. */
#cma-comparables > h2 + div {
  page-break-before: avoid;
  break-before: avoid; }

/* Print-only branding header in the top right corner of the first page.
   Sits above the grey line at the top of the .cma-content-container.
   Hidden on screen via Tailwind's `hidden` class on the wrapper. */
.cma-print-page-header {
  display: flex !important;
  width: 100%;
  align-self: stretch;
  justify-content: flex-end;
  align-items: center;
  gap: 0.4rem;
  padding-top: 0.4in;
  margin-top: 0;
  margin-bottom: 8px;
  padding-right: 0.1in;
  page-break-inside: avoid;
  break-inside: avoid; }

.cma-print-page-header-logo {
  height: 22px;
  width: auto; }

.cma-print-page-header-text {
  font-size: 0.95em;
  color: #838383; }

/* Print hero: subject photo and subject location map side by side, 50/50.
   Replaces the on-screen photo gallery during print. */
#cma-top .image-block {
  /* Hide the on-screen photo gallery widget; the hero row below replaces it. */
  display: none !important; }

.cma-print-hero {
  display: flex !important;
  flex-direction: row;
  gap: 0.5rem;
  page-break-inside: avoid;
  margin-bottom: 0.75rem; }

.cma-print-hero-photo,
.cma-print-hero-map {
  flex: 0 0 calc(50% - 0.25rem);
  max-width: calc(50% - 0.25rem);
  aspect-ratio: 3 / 2;
  overflow: hidden; }

.cma-print-hero-photo img,
.cma-print-hero-map img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center; }

/* Property Remarks / Features moved into the Property Summary section
   (and hidden in MLS Details via print:!hidden on the original block). */
.cma-print-remarks-features {
  display: block !important;
  page-break-inside: avoid;
  margin-top: 0.75rem; }

.cma-print-remarks-features-block {
  margin-bottom: 0.75rem; }
  .cma-print-remarks-features-block h3 {
    font-size: 1em;
    font-weight: 600;
    margin: 0 0 0.25rem; }
  .cma-print-remarks-features-block p {
    margin: 0;
    font-size: 0.9em;
    line-height: 1.4; }

#cma-top .overview-map,
#cma-comparables .comparable-top {
  /* Live maps stay hidden in print; static images render in their place. */ }

/* Additional Photos: opt-in section. The container ships hidden; only when
   the user checks the option does .print-show-additional-photos appear on
   <body>, which reveals the grid. */
body.print-show-additional-photos .cma-print-additional-photos {
  display: block !important;
  margin-top: 1rem; }

.cma-print-additional-photos-title {
  text-align: center;
  font-size: 1.25em;
  font-weight: 600;
  margin: 0 0 0.75rem; }

/* Keep any section heading on the same page as the content that follows it,
   so titles like "MLS Details", "Comparables", "Public Records", "Assessor
   Records", "Mortgage History", etc. don't get orphaned at the bottom of a
   page when their content overflows. We chain the avoid through the small
   intro elements (status lines, decorative <hr>s) that often sit between a
   section title and its first real content block. */
h2,
h3,
h4,
hr,
.mls-title-status {
  page-break-after: avoid;
  break-after: avoid; }

/* Public Records uses a 3-column flex layout on screen, but flex children
   don't paginate cleanly — sub-group titles (e.g. "Sales") get separated
   from their lists. Stack the columns vertically in print and keep each
   labeled group together. */
.public-listing-details,
.public-listing-details > .public-listing-details-col {
  display: block !important;
  flex: none !important;
  flex-direction: column !important;
  width: 100% !important;
  max-width: 100% !important;
  margin: 0 !important;
  float: none !important;
  position: static !important; }

.public-listing-details-col > div {
  page-break-inside: avoid;
  break-inside: avoid; }

/* The disclaimer carries a 120px top margin for screen layout that distorts
   pagination in print and can leave it visually misplaced when prior content
   has float or flex artifacts. Trim the margin and force a clean block, then
   match the Property Remarks body text for visual consistency. */
.mls-info {
  margin: 1rem 0 0 0 !important;
  display: block !important;
  clear: both !important;
  font-size: 0.9em;
  line-height: 1.4;
  color: inherit; }

/* In print we render a dedicated centered MLS/source summary directly
   under the hero photo+map (.cma-print-source-summary). The on-screen
   source rows would otherwise duplicate it at the bottom of the summary. */
.cma-print-source-row {
  display: none !important; }

/* Centered, two-line source summary placed directly under the hero
   photo + map in print. Hidden on screen via Tailwind's `hidden` class
   on the wrapper. */
.cma-print-source-summary {
  display: block !important;
  text-align: center;
  margin: 0.5rem 0 0.75rem;
  page-break-inside: avoid;
  break-inside: avoid; }

.cma-print-source-summary-line {
  display: block;
  font-size: 0.85em;
  line-height: 1.4;
  color: #838383; }

/* The MLS badge component renders as a flex div; flatten it inline so
   the badge sits on the same line as the source name + public records. */
.cma-print-source-summary-line > div {
  display: inline-flex;
  vertical-align: middle;
  margin-right: 0.35rem; }

.cma-print-source-summary-text {
  display: inline; }

.cma-print-source-summary-brokerage {
  font-size: 0.85em;
  margin-top: 0.15rem; }

/* === Universal page-break safety net ===
   Atomic-looking content should stay on one page when possible. Browsers
   honor this when the element fits on a page and gracefully fall back to
   breaking inside when content is genuinely too tall to fit, so this is
   safe to apply broadly without forcing huge whitespace gaps. */
p,
li,
blockquote,
.mls-info,
.cma-print-remarks-features-block {
  page-break-inside: avoid;
  break-inside: avoid; }

/* Ensure at least 3 lines of text are left together on either side of a
   page break when text content does need to span pages. */
body {
  orphans: 3;
  widows: 3; }

.cma-print-additional-photos-grid {
  font-size: 0;
  line-height: 0; }

.cma-print-additional-photo {
  display: inline-block;
  vertical-align: top;
  width: calc(50% - 0.25rem);
  margin: 0 0.25rem 0.5rem 0;
  page-break-inside: avoid;
  break-inside: avoid; }
  .cma-print-additional-photo:nth-child(2n) {
    margin-right: 0; }
  .cma-print-additional-photo img {
    display: block;
    width: 100%;
    height: auto;
    max-height: 4.5in;
    object-fit: cover;
    page-break-inside: avoid;
    break-inside: avoid; }

/* Stack comp tables by status: investor first (when present), then sold,
   under-contract, pending, active. Rental keeps the default order at the
   bottom. */
body.cma-printing:not(.print-hide-comparables)
#cma-comparables
[id^="comps-table-wrapper-"] {
  display: flex;
  flex-direction: column; }
  body.cma-printing:not(.print-hide-comparables)
#cma-comparables
[id^="comps-table-wrapper-"] .comp-list {
    order: 5; }
  body.cma-printing:not(.print-hide-comparables)
#cma-comparables
[id^="comps-table-wrapper-"] .comp-list:has(#comp-list-investor) {
    order: 0; }
  body.cma-printing:not(.print-hide-comparables)
#cma-comparables
[id^="comps-table-wrapper-"] .comp-list:has(#comp-list-sold) {
    order: 1; }
  body.cma-printing:not(.print-hide-comparables)
#cma-comparables
[id^="comps-table-wrapper-"] .comp-list:has(#comp-list-under-contract) {
    order: 2; }
  body.cma-printing:not(.print-hide-comparables)
#cma-comparables
[id^="comps-table-wrapper-"] .comp-list:has(#comp-list-pending) {
    order: 3; }
  body.cma-printing:not(.print-hide-comparables)
#cma-comparables
[id^="comps-table-wrapper-"] .comp-list:has(#comp-list-active) {
    order: 4; }

#cma-overlay .cma-content-container #cma-top .image-block .gallery,
#cma-overlay-superior .cma-content-container #cma-top .image-block .gallery {
  height: auto;
  margin-bottom: 20px; }
  #cma-overlay .cma-content-container #cma-top .image-block .gallery .large-image,
  #cma-overlay-superior .cma-content-container #cma-top .image-block .gallery .large-image {
    height: 440px !important; }

#cma-overlay .cma-content-container
#cma-before-after
.before-after-photo-row
.image-block
.gallery,
#cma-overlay-superior .cma-content-container
#cma-before-after
.before-after-photo-row
.image-block
.gallery {
  height: auto; }
  #cma-overlay .cma-content-container
#cma-before-after
.before-after-photo-row
.image-block
.gallery img,
  #cma-overlay .cma-content-container
#cma-before-after
.before-after-photo-row
.image-block
.gallery .large-image,
  #cma-overlay-superior .cma-content-container
#cma-before-after
.before-after-photo-row
.image-block
.gallery img,
  #cma-overlay-superior .cma-content-container
#cma-before-after
.before-after-photo-row
.image-block
.gallery .large-image {
    height: 240px !important; }

/* Matthew didn't love this
.text-2xl {
  font-size: 1.5em;
  line-height: 2em;
}

.text-2xl-3xl {
  font-size: 1.75em;
}

.text-3\.5xl {
  font-size: 2em;
}

.text-3xl {
  font-size: 1.875em;
  line-height: 2.25em;
}

.text-4xl {
  font-size: 2.25em;
  line-height: 2.5em;
}

.text-5xl {
  font-size: 3em;
  line-height: 1;
}

.text-\[12px\] {
  font-size: 12px;
}

.text-base {
  font-size: 1em;
  line-height: 1.5em;
}

.text-base-lg {
  font-size: 1.063em;
}

.text-lg {
  font-size: 1.125em;
  line-height: 1.75em;
}

.text-lg-xl {
  font-size: 1.188em;
}

.text-sm {
  font-size: 0.875em;
  line-height: 1.25em;
}

.text-sm-base {
  font-size: 0.938em;
}

.text-xl {
  font-size: 1.25em;
  line-height: 1.75em;
}

.text-xl-2xl {
  font-size: 1.375em;
}

.text-xs {
  font-size: 0.75em;
  line-height: 1em;
}

.text-xs-sm {
  font-size: 0.813em;
}

.text-xxs {
  font-size: 0.625em;
}

.text-xxs-xs {
  font-size: 0.688em;
}

.text-xxxs {
  font-size: 0.5em;
}
*/
.rounded-full.bg-none {
  width: 1em !important;
  height: 1em !important; }

#cma-overlay .cma-content-container .listing-details ul,
#cma-overlay-superior .cma-content-container .listing-details ul {
  margin-top: 15px; }

#cma-overlay .cma-content-container .listing-details ul li,
#cma-overlay-superior .cma-content-container .listing-details ul li {
  padding: 2px 0; }

/* Agent branding footer: hidden on screen; only revealed while printing. The
   footer flows after the last CMA section so it lands at the end of the
   printout. */
.cma-print-footer {
  display: none; }

body.cma-printing .cma-print-footer {
  display: block;
  margin-top: 24px;
  page-break-inside: avoid;
  font-size: 12px;
  color: #2f2f2f; }

body.cma-printing .cma-print-footer-divider {
  border-top: 1px solid #c9c9c9;
  margin-bottom: 12px; }

body.cma-printing .cma-print-footer-content {
  display: flex;
  align-items: center;
  gap: 16px; }

body.cma-printing .cma-print-footer-image-wrap {
  flex: 0 0 auto; }

body.cma-printing .cma-print-footer-image {
  display: block;
  max-height: 72px;
  max-width: 140px;
  object-fit: contain; }

body.cma-printing .cma-print-footer-image-avatar {
  width: 72px;
  height: 72px;
  border-radius: 50%;
  object-fit: cover; }

body.cma-printing .cma-print-footer-text {
  flex: 1 1 auto;
  line-height: 1.35; }

body.cma-printing .cma-print-footer-name {
  font-weight: 600;
  font-size: 14px; }

body.cma-printing .cma-print-footer-title,
body.cma-printing .cma-print-footer-brokerage {
  color: #555; }

body.cma-printing .cma-print-footer-contact {
  flex: 0 0 auto;
  text-align: right;
  line-height: 1.35; }
