/*
Theme Name: Conquest Property Management
Theme URI: https://www.conquestrentals.com
Author: CloneShop
Author URI: https://www.cloneshop.com
Description: Custom standalone WordPress theme for Conquest Property Management (conquestrentals.com). Replaces the Composer theme + cpm-styles plugin architecture. Provides site chrome (header, nav, footer), design tokens, and base styles. Page-specific component styles live in assets/css/cpm-components.css. The cpm-listings plugin remains independent.
Version: 1.2.8
Requires at least: 6.0
Requires PHP: 7.4
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Text Domain: cpm
Tags: custom-menu, featured-images, full-width-template, sticky-post
*/

/* ================================================================
   CPM CUSTOM THEME — style.css
   --------------------------------------------------------------
   Source: chrome ported from cpm-global.css (reset, design tokens,
   top bar, header, primary nav, buttons, footer). Page component
   styles (.cpm-* / .home-*) live in assets/css/cpm-components.css
   and load after this file.

   Variable note: this file uses the --green/--serif/--sans token
   set from cpm-global.css. The component stylesheet keeps its own
   --cpm-* token set. The two namespaces are independent and do not
   need reconciliation.
   ================================================================ */

:root{
  --green:#1d5632;--green-dk:#153f25;--green-lt:#2d7a4a;
  --off-white:#f5f7f5;--cream:#f0f3ef;--border:#d4ddd6;
  --gold:#c9a84c;--gold-dk:#a8893a;--azalea:#da4d70;--azalea-lt:#fdf0f3;--azalea-border:#f0c4cf;
  --text:#1a1a1a;--text-mid:#4a4a4a;--text-lt:#6b7280;
  --serif:'Playfair Display',Georgia,serif;
  --sans:'Source Sans 3',system-ui,sans-serif;
}

*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}

html{scroll-behavior:smooth}

body{font-family:var(--sans);font-size:16px;color:var(--text);background:#fff;-webkit-font-smoothing:antialiased}

img{display:block;max-width:100%}

a{text-decoration:none}

ul{list-style:none}

.wrap{max-width:1180px;margin:0 auto;padding:0 40px}

.skip-link{position:absolute;left:-9999px;top:4px;z-index:9999}

.skip-link:focus{left:12px;background:var(--green);color:#fff;padding:8px 18px;border-radius:4px;font-size:13px}

.top-bar{background:var(--green);padding:7px 0;font-size:12px;font-weight:600}

.top-bar .wrap{display:flex;justify-content:space-between;align-items:center}

.top-bar a{color:rgba(255,255,255,.88);display:inline-flex;align-items:center;gap:5px}

.top-bar a:hover{color:#fff}

.top-bar-left{display:flex;gap:20px}

.top-bar-right{display:flex;gap:8px}

.top-bar-right a{background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.22);padding:4px 14px;border-radius:4px;font-size:11px;text-transform:uppercase;letter-spacing:.07em}

.top-bar-right a:hover{background:#fff;color:var(--green)}

.site-header{background:#fff;border-bottom:1px solid var(--border);box-shadow:0 1px 6px rgba(0,0,0,.05);position:sticky;top:0;z-index:200}

.header-inner{display:flex;justify-content:space-between;align-items:center;height:72px}

.logo{display:flex;align-items:center;gap:10px;font-family:var(--serif);font-size:18px;font-weight:700;color:var(--green)}

/* Header logo image: the bundled CPM logo, or one set under Customize > Site Identity */
.site-header .logo img,.site-header .custom-logo{display:block;height:58px;width:auto}
/* Footer logo: the white version, same file the live footer uses */
.site-footer .logo img{display:block;height:64px;width:auto}

/* Social icons in the top bar */
.top-bar-social{display:inline-flex;align-items:center;gap:2px}
.top-bar-social a{padding:5px}
.top-bar-social a:focus-visible{outline:2px solid #fff;outline-offset:1px}

.logo-mark{width:44px;height:44px;border-radius:8px;background:var(--green);display:flex;align-items:center;justify-content:center;flex-shrink:0}

.site-nav{display:flex;gap:2px;align-items:center}

.site-nav a{font-size:14px;font-weight:500;color:var(--text-mid);padding:7px 13px;border-radius:6px;transition:all .2s}

.site-nav a:hover,.site-nav a.active{color:var(--green);background:#eef3ee}

.nav-cta{background:var(--green)!important;color:#fff!important;margin-left:8px;font-weight:600!important;padding:9px 18px!important}

.nav-cta:hover{background:var(--green-dk)!important}

.btn{display:inline-flex;align-items:center;gap:6px;padding:12px 26px;border-radius:6px;font-family:var(--sans);font-size:15px;font-weight:600;line-height:1.3;cursor:pointer;transition:all .22s;text-decoration:none;border:2px solid transparent}

.btn-green{background:var(--green);color:#fff;border-color:var(--green)}

.btn-green:hover{background:var(--green-dk);color:#fff;transform:translateY(-1px);box-shadow:0 6px 18px rgba(29,86,50,.28)}

.btn-gold{background:var(--gold);color:#fff;border-color:var(--gold)}

.btn-gold:hover{background:var(--gold-dk);transform:translateY(-1px)}

.btn-white{background:#fff;color:var(--green);border-color:#fff}

.btn-white:hover{transform:translateY(-1px);box-shadow:0 6px 18px rgba(0,0,0,.14)}

.btn-ghost{background:transparent;color:#fff;border-color:rgba(255,255,255,.45)}

.btn-ghost:hover{background:rgba(255,255,255,.1);border-color:rgba(255,255,255,.8)}

.lbl{display:block;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.18em;color:var(--green);margin-bottom:10px}

.sec-hd{text-align:center;margin-bottom:52px}

.sec-hd h2{font-family:var(--serif);font-size:36px;color:var(--green);margin-bottom:12px;line-height:1.18}

.sec-hd p{font-size:16px;color:var(--text-lt);max-width:600px;margin:0 auto;line-height:1.7}

.bc{display:flex;align-items:center;gap:8px;margin-bottom:14px;font-size:13px}

.bc a{color:rgba(255,255,255,.6)}

.bc a:hover{color:rgba(255,255,255,.9)}

.bc span[aria-hidden]{color:rgba(255,255,255,.4)}

.trust-bar{padding:48px 0;background:#fff;border-top:1px solid var(--border)}

.trust-row{display:flex;justify-content:center;align-items:center;gap:60px;flex-wrap:wrap}

.tbadge{display:flex;flex-direction:column;align-items:center;gap:10px;text-decoration:none;opacity:.82;transition:opacity .2s}

.tbadge:hover{opacity:1}

.tbl{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.07em;color:var(--text-lt);text-align:center;line-height:1.4}

.site-footer{background:var(--green-dk);color:rgba(255,255,255,.88);padding:60px 0 0}

.fg{display:grid;grid-template-columns:1.8fr 1fr 1fr 1fr;gap:40px;margin-bottom:48px}

.fb .logo{color:#fff;margin-bottom:10px}

.fb .logo-mark{background:rgba(255,255,255,.14)}

.fb p{font-size:14px;color:rgba(255,255,255,.68);line-height:1.7;max-width:280px;margin-top:4px}

/* Footer column titles are h2 so the heading outline has no gap. */
.fc .fh{font-family:var(--sans);font-weight:700;font-size:11px;line-height:inherit;text-transform:uppercase;letter-spacing:.1em;color:rgba(255,255,255,.76);margin:0 0 16px}

.fc li{margin-bottom:9px}

.fc li a,.fc address a{font-size:14px;color:rgba(255,255,255,.76)}

.fc li a:hover,.fc address a:hover{color:#fff}

.fc address{font-size:14px;color:rgba(255,255,255,.76);font-style:normal;line-height:1.85}

.fbot{border-top:1px solid rgba(255,255,255,.14);padding:22px 0 26px}

.fbot p{font-size:13px;color:rgba(255,255,255,.76);margin-top:14px}

.fbot a{font-size:14px;color:rgba(255,255,255,.85)}

/* TREC notice links: 16px is 12 point, the minimum for the short "TREC" labels. */
.fbot .flinks-trec a{font-size:16px;font-weight:600;color:#fff}

.flinks + .flinks{margin-top:10px}

.fbot a:hover,.fbot a:focus-visible{color:#fff;text-decoration:underline}

.flinks{display:flex;flex-wrap:wrap;gap:8px 20px}

@media(max-width:1024px){.fg{grid-template-columns:1fr 1fr}}

@media(max-width:768px){.wrap{padding:0 24px}}

@media(max-width:540px){.top-bar .wrap{flex-direction:column;gap:8px}.top-bar-left{flex-wrap:wrap;justify-content:center;gap:4px 16px}.fg{grid-template-columns:1fr}}

/* ================================================================
   MOBILE NAV — built for the custom theme (Composer previously
   supplied the hamburger). Hamburger button + slide-in panel.
   ================================================================ */
.nav-toggle{
  display:none;
  flex-direction:column;
  justify-content:center;
  gap:5px;
  width:44px;height:44px;
  padding:9px;
  background:transparent;
  border:1px solid var(--border);
  border-radius:8px;
  cursor:pointer;
}
.nav-toggle span{
  display:block;
  height:2px;width:100%;
  background:var(--green);
  border-radius:2px;
  transition:transform .25s ease,opacity .2s ease;
}
.nav-toggle[aria-expanded="true"] span:nth-child(1){transform:translateY(7px) rotate(45deg)}
.nav-toggle[aria-expanded="true"] span:nth-child(2){opacity:0}
.nav-toggle[aria-expanded="true"] span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}

.nav-backdrop{
  position:fixed;inset:0;z-index:190;
  background:rgba(8,24,15,.5);
  opacity:0;visibility:hidden;
  transition:opacity .25s ease,visibility .25s ease;
}
body.nav-open .nav-backdrop{opacity:1;visibility:visible}

@media(max-width:980px){
  .nav-toggle{display:flex}
  .site-nav{
    position:fixed;top:0;right:-320px;
    width:300px;max-width:85vw;height:100%;
    z-index:200;
    flex-direction:column;
    align-items:stretch;
    gap:4px;
    padding:88px 20px 32px;
    background:#fff;
    box-shadow:-8px 0 32px rgba(0,0,0,.16);
    overflow-y:auto;
    transition:right .28s ease;
  }
  .site-nav.is-open{right:0}
  .site-nav a{font-size:15px;padding:12px 14px}
  .nav-cta{margin:10px 0 0;text-align:center;justify-content:center}
  body.nav-open{overflow:hidden}
}

/* Honor reduced-motion preferences */
@media(prefers-reduced-motion:reduce){
  .nav-toggle span,.site-nav,.nav-backdrop{transition:none}
  html{scroll-behavior:auto}
}

/* Default WP page content wrapper (non-CPM templates) */
.cpm-default-main{max-width:820px;margin:0 auto;padding:56px 24px 72px}
.cpm-default-main h1.entry-title{font-family:var(--serif);color:var(--green);font-size:34px;margin-bottom:24px;line-height:1.2}
.cpm-default-main p{line-height:1.75;margin-bottom:18px;color:var(--text-mid)}
.cpm-default-main a{color:var(--green-lt);text-decoration:underline}

/* ================================================================
   NAV MENU INTEGRATION — wp_nav_menu outputs <ul><li><a>; lay it
   out inline inside .site-nav and reflow it in the mobile panel.
   ================================================================ */
.site-nav .nav-menu{
  display:flex;
  align-items:center;
  gap:2px;
  list-style:none;
  margin:0;padding:0;
}
.site-nav .nav-menu li{margin:0}
.site-nav .current-menu-item > a,
.site-nav .current_page_item > a{color:var(--green);background:#eef3ee}

@media(max-width:980px){
  .site-nav .nav-menu{
    flex-direction:column;
    align-items:stretch;
    gap:4px;
    width:100%;
  }
  .site-nav .nav-menu li{width:100%}
  .site-nav .nav-menu a{display:block}
}

/* ================================================================
   SINGLE POST + SEARCH FORM
   ================================================================ */
.cpm-single .cpm-post-meta{color:var(--text-lt);font-size:14px;margin-bottom:22px}
.cpm-single .cpm-post-meta a{color:var(--green-lt)}
.cpm-post-featured{margin:0 0 28px}
.cpm-post-featured img{width:100%;height:auto;border-radius:14px}
.cpm-post-content h2{font-family:var(--serif);color:var(--green);font-size:26px;margin:30px 0 12px}
.cpm-post-content h3{font-family:var(--serif);color:var(--text);font-size:20px;margin:24px 0 10px}
.cpm-post-content ul,.cpm-post-content ol{margin:0 0 18px 22px}
.cpm-post-content li{margin-bottom:8px;line-height:1.7;color:var(--text-mid)}
.cpm-post-content img{border-radius:10px;height:auto}
.cpm-post-back{margin-top:36px}
.cpm-post-back a{color:var(--green-lt);font-weight:600}
.cpm-pagination .nav-links{display:inline-flex;gap:8px;flex-wrap:wrap;justify-content:center}
/* :not(.cpm-page-btn): the News page buttons have their own style in cpm-components.css */
.cpm-pagination .page-numbers:not(.cpm-page-btn){display:inline-flex;align-items:center;justify-content:center;min-width:40px;height:40px;padding:0 12px;border:1px solid var(--border);border-radius:6px;color:var(--text-mid);font-weight:600}
.cpm-pagination .page-numbers.current:not(.cpm-page-btn){background:var(--green);color:#fff;border-color:var(--green)}
.cpm-pagination a.page-numbers:not(.cpm-page-btn):hover{border-color:var(--green);color:var(--green)}
.search-form{display:inline-flex;gap:8px}
.search-form .search-field{padding:11px 14px;border:1px solid var(--border);border-radius:6px;font-family:var(--sans);font-size:15px;min-width:240px}
.search-form .search-submit{padding:11px 20px;background:var(--green);color:#fff;border:none;border-radius:6px;font-weight:600;cursor:pointer}
.search-form .search-submit:hover{background:var(--green-dk)}

/* ================================================================
   DROPDOWN MENUS (v1.2)
   Second-level items of the Primary Navigation menu.

   Desktop: the submenu opens on hover, or when the small arrow
   button next to the parent link is pressed (keyboard and touch).
   The parent stays a normal link.
   Phone panel: the arrow button opens the sub-items in place.

   A menu item with the CSS class "cpm-menu-cta" (set on the item
   under Appearance > Menus) is drawn as the header button.
   ================================================================ */
.site-nav .nav-menu > li{position:relative;display:flex;align-items:center}
.site-nav .sub-toggle{
  display:inline-flex;align-items:center;justify-content:center;
  width:24px;height:32px;margin-left:-9px;padding:0;
  background:transparent;border:0;border-radius:4px;
  color:var(--text-mid);cursor:pointer;
}
.site-nav .sub-toggle:hover{color:var(--green)}
.site-nav .sub-toggle:focus-visible,
.site-nav a:focus-visible{outline:2px solid var(--green);outline-offset:2px}
.site-nav .sub-toggle svg{transition:transform .2s ease}
.site-nav .sub-toggle[aria-expanded="true"] svg{transform:rotate(180deg)}

.site-nav .sub-menu{
  display:none;
  position:absolute;top:100%;left:0;z-index:210;
  min-width:250px;margin:0;padding:8px;list-style:none;
  background:#fff;border:1px solid var(--border);border-radius:10px;
  box-shadow:0 14px 34px rgba(0,0,0,.13);
}
.site-nav .sub-menu li{margin:0}
.site-nav .sub-menu a{display:block;padding:9px 12px;white-space:nowrap}
.site-nav .nav-menu > li.is-open > .sub-menu{display:block}
@media (min-width:981px) and (hover:hover){
  .site-nav .nav-menu > li:hover > .sub-menu{display:block}
}

/* Header button from the menu (class "cpm-menu-cta" on the item).
   Same look as .nav-cta. Everything is !important because the live
   stylesheet styles .cpm-menu-cta for the old Composer header (a
   see-through pill with a gold border) and marks all of it !important. */
.site-nav .nav-menu > li.cpm-menu-cta > a,
.site-nav .nav-menu > li.cpm-menu-cta > a:visited{
  display:block!important;
  background:var(--green)!important;color:#fff!important;
  border:0!important;border-radius:6px!important;
  -webkit-backdrop-filter:none!important;backdrop-filter:none!important;
  margin-left:8px!important;padding:9px 18px!important;
  font-weight:600!important;letter-spacing:normal!important;line-height:normal!important;
}
.site-nav .nav-menu > li.cpm-menu-cta > a:hover,
.site-nav .nav-menu > li.cpm-menu-cta > a:focus{background:var(--green-dk)!important;color:#fff!important}

@media(max-width:980px){
  .site-nav .nav-menu > li{flex-wrap:wrap}
  .site-nav .nav-menu > li > a{flex:1 1 0;min-width:0}
  .site-nav .sub-toggle{width:44px;height:44px;margin-left:4px;border:1px solid var(--border);border-radius:8px}
  .site-nav .sub-menu{
    position:static;flex:0 0 100%;min-width:0;
    margin:2px 0 6px;padding:0 0 0 14px;
    border:0;border-left:2px solid var(--border);border-radius:0;box-shadow:none;
  }
  .site-nav .sub-menu a{white-space:normal;font-size:14px;padding:10px 12px}
  .site-nav .nav-menu > li.cpm-menu-cta > a{margin:10px 0 0!important;padding:12px 14px!important;text-align:center}
}
@media(prefers-reduced-motion:reduce){
  .site-nav .sub-toggle svg{transition:none}
}

/* ================================================================
   COMPOSER BASE (v1.2)
   ----------------------------------------------------------------
   The live pages sit on top of the Composer theme and Bootstrap,
   and inherit a few element defaults from them that the page CSS
   never restates. Without these, a link with no color of its own
   turns browser blue, an h2 with no weight of its own goes bold,
   and Contact Form 7 fields change size.

   Scope: <main class="cpm-legacy">, which functions.php prints on
   every view except the blog templates. The header, footer, single
   posts and archives are not touched.

   Every selector is wrapped in :where(), so each rule has the same
   or lower weight than the Composer rule it stands in for. Anything
   in cpm-components.css still wins exactly as it does on live.

   Values were read from the live site's computed styles, Nov 2026.
   ================================================================ */
:where(.cpm-legacy){line-height:1.88;color:#333}
:where(.cpm-legacy) a{color:#1b5630}
:where(.cpm-legacy) :is(h1,h2,h3,h4,h5,h6){color:#1a1a1a;font-weight:400;line-height:1.5}
:where(.cpm-legacy) :is(h1,h2,h3){margin-bottom:10px}
:where(.cpm-legacy) h1{font-size:24px}
:where(.cpm-legacy) h2{font-size:21px}
:where(.cpm-legacy) h3{font-size:18px}
:where(.cpm-legacy) h4{font-size:16px;margin:8px 0}
:where(.cpm-legacy) p{margin-bottom:20px}
:where(.cpm-legacy) li,
:where(.cpm-legacy) li a{font-size:16px}
:where(.cpm-legacy) blockquote{position:relative;font-size:18px}
:where(.cpm-legacy) cite{font-weight:700;font-style:normal}
:where(.cpm-legacy) :is(b,strong){font-weight:700}
:where(.cpm-legacy) table{margin:10px 0 25px;max-width:100%;text-align:left}
:where(.cpm-legacy) img{display:inline;vertical-align:middle}
:where(.cpm-legacy) :is(dt,dd){line-height:1.42857143}
:where(.cpm-legacy) dt{float:left;width:100px;text-align:right;font-weight:700}
:where(.cpm-legacy) dd{margin-left:110px;padding-bottom:.5em}

/* Form controls and Contact Form 7 */
:where(.cpm-legacy) :is(button,input,optgroup,select,textarea){color:inherit;font:inherit}
:where(.cpm-legacy) button{padding:1px 6px}
:where(.cpm-legacy) input[type="range"]{display:block;width:100%}
:where(.cpm-legacy) output{display:block;padding-top:7px;font-size:14px;line-height:1.42857143}
:where(.cpm-legacy) label{margin-bottom:5px}
:where(.cpm-legacy) option{padding:0 2px}
:where(.cpm-legacy) .wpcf7 p{font-weight:700;font-size:14px;margin-bottom:30px}
:where(.cpm-legacy) .wpcf7 label{display:block;color:#1a1a1a}
:where(.cpm-legacy) span.wpcf7-form-control-wrap{max-width:300px;width:100%}
:where(.cpm-legacy) :is(.wpcf7-text,.wpcf7-number,.wpcf7-date,.wpcf7-select){width:100%;max-width:300px;height:40px;margin-top:10px;padding:0 10px;font-size:14px;font-weight:400;color:#444;background:none;border:1px solid #eaeaea}
:where(.cpm-legacy) .wpcf7-textarea{width:100%;min-height:220px;margin-top:10px;padding:10px;font-weight:400;color:#1a1a1a;background:none;border:1px solid #eaeaea}
:where(.cpm-legacy) input[type="submit"]{height:40px;padding:0 20px;font-size:14px;font-weight:400;line-height:40px;text-transform:uppercase;color:#1b5630;background:transparent;border:1px solid #1b5630;border-radius:3px}

/* ================================================================
   WIDE DEFAULT PAGE (v1.2)
   Pages on the default template that bring their own H1 and layout
   (Available Rentals, Owner Portal). Same box Composer gives them
   on live: 1170px wide, 100px above and below.
   ================================================================ */
.cpm-default-wide{max-width:1170px;margin:0 auto;padding:100px 15px}
@media (max-width:767px){
  .cpm-default-wide{padding:60px 20px}
}

/* ================================================================
   KEEPING THE THEME'S OWN PARTS THE SAME (v1.2)
   cpm-components.css is now the live stylesheet, !important and
   all. These two blocks stop it from changing things that belong
   to this theme and were fine in 1.1.

   1. Footer on phones. 1.1 picked up centered footer text from the
      old Composer footer rules. The footer is no longer a <footer>
      tag (see footer.php), so the same look is set here directly.

   2. Blog templates on phones (archive, search, 404). The live
      file forces 40px side padding on .cpm-container at every
      width. These templates keep the 20px they had in 1.1.
   ================================================================ */
/* Accessibility fixes over the live stylesheet (1.2.4).
   Trust badge captions were 3:1 on the pale background; AA needs 4.5:1.
   Slide dots on the Welcome page were 8 to 10px; AA needs a 24px target.
   The dot keeps its look: the extra size is clear padding. */
/* #333, because the badge itself is shown at 75% opacity. */
.cpm-trust-badge-label{color:#333 !important}
.cpm-deck-dot{box-sizing:border-box !important;width:24px !important;height:24px !important;padding:7px !important;border:0 !important;background:transparent !important;position:relative}
.cpm-deck-dot::before{content:"";display:block;width:100%;height:100%;box-sizing:border-box;border-radius:50%;border:2px solid #1d5632;background:transparent;transition:background .2s}
.cpm-deck-dot.active::before{background:#1d5632}
.cpm-deck-nav{gap:0 !important}
.cpm-search-title{font-family:var(--serif);font-size:32px;line-height:1.2;color:var(--green);margin:0 0 28px}


/* ================================================================
   1.2.5: FIXES FROM THE STAGING SCAN
   Everything here sits on top of cpm-components.css (the live
   stylesheet, kept as it is), so each rule says what it corrects.
   ================================================================ */

/* Text for screen readers only (used for a few headings that keep
   the heading outline in order without changing the page). */
.screen-reader-text{border:0;clip:rect(1px,1px,1px,1px);clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute !important;width:1px;word-wrap:normal !important}

/* ---- Phones: sections that ran off the right edge -------------
   These grids either had no phone rule or used "1fr", which cannot
   shrink below its widest child. minmax(0,1fr) can. */
@media (max-width:767px){
  #cpm-page-wrapper .cpm-local-inner,
  #cpm-page-wrapper .cpm-pricing-grid,
  #cpm-page-wrapper .cpm-contact-grid,
  #cpm-page-wrapper .cpm-resource-cards,
  #cpm-page-wrapper [style*="grid-template-columns:1fr 1fr"][style*="max-width"]{grid-template-columns:minmax(0,1fr) !important}
  #cpm-page-wrapper .cpm-local-photo-wrap{width:100% !important}
  #cpm-page-wrapper .cpm-contact-grid{gap:36px !important}
  #cpm-page-wrapper .cpm-included-grid{grid-template-columns:repeat(2,minmax(0,1fr)) !important}
}
@media (min-width:768px) and (max-width:1024px){
  #cpm-page-wrapper .cpm-resource-cards{grid-template-columns:repeat(2,minmax(0,1fr)) !important}
}

/* ---- Contrast (WCAG AA needs 4.5 to 1 for text this size) ------
   Gold buttons: white on gold was 2.3 to 1. Dark green on gold is 5.2. */
#main a.cpm-btn-gold,#main button.cpm-btn-gold{color:#153f25 !important}
#main a.cpm-btn-gold:hover,#main button.cpm-btn-gold:hover{background:#d6b862 !important;color:#153f25 !important}
/* Renter's Insurance "Liability Only" badge: white on yellow was 2.1 to 1. */
.cpm-ri-option-badge-warn{color:#2b2100 !important}
/* Pink phone links set inline with the azalea color were 4 to 1 at 13px. */
#cpm-page-wrapper a[style*="var(--cpm-azalea)"]{color:#b8325a !important}
/* Listing breadcrumb links were 4.2 to 1. */
.cpm-ls ol li a{color:#1d5632 !important}

/* ---- Links inside sentences are underlined ---------------------
   Color alone does not mark a link for everyone (WCAG 1.4.1). Links
   with a class of their own (buttons, cards) are left as they are. */
.cpm-legacy p a:not([class]),
.cpm-legacy li a:not([class]),
.cpm-legacy td a:not([class]),
.cpm-legacy .cpm-legal-contact-block a:not([class]){text-decoration:underline !important;text-underline-offset:2px}
.cpm-legacy .cpm-breadcrumb a,.cpm-legacy nav a{text-decoration:none !important}

/* ---- More contrast and link fixes found on the re-scan ---------- */
/* Large numerals on the Owners service rows and the Agents pledge cards:
   3.3 to 1 or better on white and on the pale green cards (they were
   1.1 and 1.5). Still a soft sage, just readable. */
#main .cpm-svc-number{color:#6b8c75 !important}
#main .cpm-pledge-num{color:#6b8c75 !important;opacity:1 !important}
/* Names under the home testimonial and job titles on the team cards. */
#main .home-blockquote cite{color:#5b6f5e !important}
#main .cpm-team-card .cpm-card-title{color:#b8325a !important}
/* White label on the pink pricing badge: a shade deeper so it reads (4.9 to 1). */
#main .cpm-pricing-card-badge{background:#c93c62 !important}
/* In-text links on the Owner Portal help page and in listing descriptions. */
#main .crumbs a,#main .notice a,#main .cpm-ls-single-desc a{text-decoration:underline !important;text-underline-offset:2px}

/* ---- Articles: notice on old listing posts, closing next steps -- */
.cpm-post-notice{margin:0 0 24px;padding:14px 18px;background:var(--azalea-lt);border-left:4px solid var(--azalea);border-radius:0 8px 8px 0;color:var(--text);line-height:1.6}
.cpm-post-notice a{font-weight:600}
.cpm-post-cta{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:20px;margin:44px 0 0;padding-top:32px;border-top:1px solid var(--border)}
.cpm-post-cta-card{background:var(--off-white);border:1px solid var(--border);border-radius:14px;padding:26px 24px}
.cpm-post-cta-card h2{font-family:var(--serif);font-size:22px;line-height:1.3;color:var(--green);margin:0 0 8px}
.cpm-post-cta-card p{margin:0 0 16px;color:var(--text-mid);line-height:1.6}
.cpm-post-cta-card .btn{color:#fff;text-decoration:none}
.cpm-post-cta-card ul{list-style:none;margin:18px 0 0;padding:0}
.cpm-post-cta-card li{margin:0 0 8px;line-height:1.5}
.cpm-post-cta-card li a{color:var(--green);font-weight:600}

/* Legal pages (Privacy Policy, Terms of Use, Cookie Policy, Tenant
   Selection Criteria): body copy reads left aligned. Without this the
   live stylesheet's stray "-header" rule centers every paragraph. */
#main .cpm-legal-section .cpm-legal-card p,
#main .cpm-legal-section .cpm-legal-intro{text-align:left !important}
#main .cpm-legal-section .cpm-legal-card h3:first-of-type{margin-top:0 !important}

@media (max-width:767px){
  .site-footer .logo img{margin-left:auto;margin-right:auto}
  .fbot a{display:inline-block;padding:5px 0}
  .site-footer{text-align:center}
  .site-footer ul li{display:block;line-height:1.5}
  .site-footer ul li a{display:inline-block;padding:6px 0;line-height:1.4}
  .fbot,.flinks{justify-content:center}
}
@media (max-width:600px){
  #main:not(.cpm-legacy) .cpm-container{padding-left:20px !important;padding-right:20px !important}
}

/* ---- City pages (1.2.7): direct answer box, locator diagram, leasing
   record cards, two-column split. Each city page is written by hand, so
   these are small building blocks, not a template. ---- */
#cpm-page-wrapper .cpm-city-answer{max-width:860px;margin:0 auto 8px;padding:22px 26px;background:#f5f7f5;border-left:4px solid #c9a84c;border-radius:0 12px 12px 0;font-size:17px;line-height:1.65;color:#1a2e1c;text-align:left !important}
#cpm-page-wrapper .cpm-city-answer strong{color:#1d5632}
#cpm-page-wrapper .cpm-locator{max-width:560px;margin:0 auto}
#cpm-page-wrapper .cpm-locator-svg{width:100%;height:auto;display:block;border:1px solid #e0e8e2;border-radius:14px}
#cpm-page-wrapper .cpm-locator-cap{font-size:13px;color:#5b6f5e;margin:10px 0 0;text-align:center !important;line-height:1.5}
#cpm-page-wrapper .cpm-city-record{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;max-width:1000px;margin:0 auto}
#cpm-page-wrapper .cpm-city-record article{background:#fff;border:1.5px solid #e0e8e2;border-radius:12px;padding:20px 22px;text-align:left}
#cpm-page-wrapper .cpm-city-record h3{font-family:'Source Sans 3',sans-serif;font-size:16px;font-weight:700;color:#1a2e1c;margin:0 0 6px}
#cpm-page-wrapper .cpm-city-record p{font-size:14px;color:#40514a;line-height:1.6;margin:0;text-align:left !important}
#cpm-page-wrapper .cpm-rec-tag{display:inline-block;font-size:12px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:#1d5632;margin-bottom:8px}
#cpm-page-wrapper .cpm-city-split{display:grid;grid-template-columns:1.15fr 1fr;gap:48px;align-items:start;max-width:1040px;margin:0 auto}
#cpm-page-wrapper .cpm-city-split p,#cpm-page-wrapper .cpm-city-split li{text-align:left !important}
#cpm-page-wrapper .cpm-city-prose{max-width:820px;margin:0 auto}
#cpm-page-wrapper .cpm-city-prose p,#cpm-page-wrapper .cpm-city-prose li{text-align:left !important;font-size:16px;line-height:1.7;color:#40514a}
#cpm-page-wrapper .cpm-city-prose p+p{margin-top:14px}
#cpm-page-wrapper .cpm-city-prose h3{font-family:'Source Sans 3',sans-serif;font-size:18px;font-weight:700;color:#1a2e1c;margin:26px 0 8px}
#cpm-page-wrapper .cpm-city-sources{max-width:820px;margin:28px auto 0;font-size:13px;color:#5b6f5e;line-height:1.6;text-align:left !important}
#cpm-page-wrapper .cpm-city-sources a{color:#1d5632;text-decoration:underline}
@media(max-width:767px){#cpm-page-wrapper .cpm-city-split{grid-template-columns:minmax(0,1fr);gap:28px}#cpm-page-wrapper .cpm-city-record{grid-template-columns:minmax(0,1fr)}}
/* Towns without their own page: muted by color and a dashed border, not by opacity (opacity dropped the text to 3.5 to 1). */
#cpm-page-wrapper .cpm-area-tag-plain,.cpm-area-tag-plain{opacity:1 !important;color:#40514a !important;border-style:dashed !important}
