/* ============================================================
   wcag-s0088-haute.css
   WCAG 2.1 Level AA override for the S0088-Haute Kentico template.

   Selectors verified against the live base CSS pulled from
   https://ascendatelevon.com on 2026-05-07.

   Audit findings:
   - Base CSS (~52KB / 572 rules). No outline-suppression in
     template CSS; Bootstrap still removes them.
   - Form controls — TWO real failures:
       1. .neighborhood-widget .form-control { border:1px solid #999 }
          #999 ≈ 2.85:1 — fails 3:1.
       2. #contactUsEnhancedContainer .form-control
          { background:#f1f1f1; border-bottom:none }
          No visible border at all. Visual cue absent.
   - Sticky elements: .header-menu and #menu-screen-overlay are
     position:fixed; height not declared in those rules.
   - Footer link hover: ul.footer-links li a:hover { color:#999 }
     If footer is dark, that's fine; if light, fails. Verify.

   Specificity strategy:
   Every selector is prefixed with `body #form` to lift above
   widget CSS load order. The form-control fix for
   #contactUsEnhancedContainer keeps its !important because the
   base rule explicitly sets `border-bottom:none` (without a color
   value to override).
   ============================================================ */


/* ------------------------------------------------------------
   WCAG 2.4.7 Focus Visible
   Bootstrap suppressors plus general fallback.
   ------------------------------------------------------------ */
body #form .navbar-toggle:focus-visible,
body #form .dropdown-toggle:focus-visible,
body #form .btn:focus-visible,
body #form .btn-primary:focus-visible,
body #form .form-control:focus-visible,
body #form .header-menu:focus-visible,
body #form a:focus-visible,
body #form button:focus-visible,
body #form input:focus-visible,
body #form select:focus-visible,
body #form textarea:focus-visible,
body #form [tabindex]:focus-visible,
body #form [role="button"]:focus-visible,
body #form .footer-widget footer a:focus-visible {
  /* Webkit-style two-ring halo: blue inner ring + white outer ring
     gives focus visibility on both light AND dark backgrounds.
     The `outline` declaration is intentionally omitted — outline
     paints on top of box-shadow and would cover the white ring. */
  outline-offset: 2px;
  box-shadow: 0 0 0 2px #005fcc, 0 0 0 3px #fff;
}

/* WCAG 2.4.13 AAA (Focus Appearance) — PME-507688 rework (Will Sharp,
   manual scan 2026-08-24): the shared blue+white ring above doesn't
   reliably clear 3:1 against every property's footer background (footers
   commonly run darker/branded compared to the form fields and buttons
   this shared rule also covers). Override just the footer link ring with
   a white+black double ring — one leg always clears 3:1 against any
   single backdrop, the same treatment already used for the Floor Plans V4
   focus rings. Scoped narrowly to `.footer-widget footer a` so the
   inputs/selects/tabindex/role=button elements above, which were not
   flagged, keep their existing ring. */
body #form .footer-widget footer a:focus-visible {
  box-shadow: 0 0 0 2px #fff, 0 0 0 4px #000 !important;
}


/* ------------------------------------------------------------
   WCAG 2.4.11 Focus Not Obscured
   .header-menu is position:fixed. Default 80px scroll-padding;
   adjust after measuring on the live site.
   ------------------------------------------------------------ */
html {
  scroll-padding-top: 80px;
}

body #form :focus-visible {
  scroll-margin-top: 80px;
}


/* ------------------------------------------------------------
   WCAG 1.4.11 Non-text Contrast (form controls)
   Two confirmed failures from base CSS.
   ------------------------------------------------------------ */
body #form .neighborhood-widget .neighborhood-widget__search .form-group .form-control {
  border-color: #595959;
}

body #form #contactUsEnhancedContainer .form-control {
  border-bottom: 1px solid #595959 !important;
}

body #form input.form-control,
body #form select.form-control,
body #form textarea.form-control {
  border-color: #595959;
}

body #form input::placeholder,
body #form textarea::placeholder {
  color: #595959;
  opacity: 1;
}


/* ------------------------------------------------------------
   WCAG 1.4.3 Contrast Minimum (footer disclosure)
   ------------------------------------------------------------ */
body #form .footer-widget footer .footer-disclosure {
  opacity: 0.85;
}


/* ------------------------------------------------------------
   WCAG 1.4.1 Use of Color (inline links)
   ------------------------------------------------------------ */
body #form .main-content-text a,
body #form .inner-page-main-content a,
body #form .mainContent a,
body #form main p a,
body #form article p a,
body #form .content p a {
  text-decoration: underline;
  text-underline-offset: 2px;
}

body #form .btn,
body #form .button,
body #form header a,
body #form nav a,
body #form .navbar a,
body #form footer a,
body #form .footer-widget footer a,
body #form .footer-CTA-Button,
body #form .header-CTA-button,
body #form a.more-link,
body #form a.less-link {
  text-decoration: none;
}


/* ------------------------------------------------------------
   TFS 2870264 — WCAG 1.4.1 (homepage inline links)
   Haute's homepage is `<section id="home">` containing
   `.content-home .content-row` and a series of
   `.home-main-content-wrapper` rows. Each row's text content
   lives in `.home-content-sub-content` and `.home-column`.
   The hero/welcome blurb sits in `.content-right.home-column`
   and `.content-left.home-column`. Background captions use
   `.bg-caption`. Homepage CTA buttons use `.button.cta1` /
   `.button.cta2` — opted out.
   ------------------------------------------------------------ */
body #form #home .content-home a,
body #form #home .home-main-content-wrapper a,
body #form #home .home-content-sub-content a,
body #form #home .home-column a,
body #form #home .bg-caption a {
  text-decoration: underline;
  text-underline-offset: 2px;
}

body #form #home a.button,
body #form #home a.cta1,
body #form #home a.cta2,
body #form #home .button.cta1,
body #form #home .button.cta2,
body #form #home .header-ctas a,
body #form #home .homeNav a {
  text-decoration: none;
}


/** ------------------------------------------------------------
   WCAG 2.2 AA 2.5.8 Target Size (Pointer)
   ------------------------------------------------------------ */
body #form header .header-social a {
    width: 24px;
    line-height: 24px;
    margin: 0 5px;
}
/* WCAG 2.2 AA 2.5.8 Target Size (Pointer) — real fix (native checkbox can't be padded;
   appearance:none + explicit 24px sizing; :checked::after re-draws the check so consent UX is preserved) */
body .contact-mobile-form input[type="checkbox"],
#contactusPrivacy input[type="checkbox"],
#privacyDiv input[type="checkbox"],
#contactUsV1Privacy input[type="checkbox"] {
    -webkit-appearance: none;
    appearance: none;
    width: 24px; height: 24px;
    min-width: 24px; min-height: 24px;
    margin: 4px; padding: 0;
    border: 2px solid currentColor; border-radius: 3px;
    background: #fff; cursor: pointer; position: relative;
    vertical-align: middle; flex: 0 0 auto;
}
body .contact-mobile-form input[type="checkbox"]:checked::after,
#contactusPrivacy input[type="checkbox"]:checked::after,
#privacyDiv input[type="checkbox"]:checked::after,
#contactUsV1Privacy input[type="checkbox"]:checked::after {
    content: ""; position: absolute; left: 7px; top: 3px;
    width: 6px; height: 11px;
    border: solid #1a1a1a; border-width: 0 2px 2px 0;
    transform: rotate(45deg);
}
body .contact-mobile-form input[type="checkbox"]:focus-visible,
#contactusPrivacy input[type="checkbox"]:focus-visible,
#privacyDiv input[type="checkbox"]:focus-visible,
#contactUsV1Privacy input[type="checkbox"]:focus-visible {
    outline: 2px solid; outline-offset: 2px;
}

/* TFS 2987209 — WCAG 2.2 AAA 2.5.5 Target Size (Enhanced): expand the consent
   checkbox's pointer hit-area to 44×44 without changing anything visually
   (Option B, plan §4.4/§0.5 J — live-prototyped pixel-identical to today).
   The painted box stays 24×24 (position:relative already set above); this
   adds a transparent ::before centred over the box that only widens the
   clickable/tappable region. Do not touch :checked::after or :focus-visible
   above, and do not remove min-width/min-height:24px on the box rule above —
   on ContactUsFloating templates that min-width is the only reason the box
   is 24px wide at all (rpWebpartCss_ContactUsFloating.css sets width:auto
   !important, §0.4 D). Uses symmetric inset offsets, not
   left/top:50%+transform: live click-testing found percentage-based
   centering lands ~1-2px off-centre (asymmetric vs. the border-box),
   which stole clicks from an adjacent control (Submit button /
   privacy-policy link) on 3 of 16 templates — insets centre reliably
   regardless of border width.

   FIX (TFS 2987209, fleet rescan 2026-08): the checkbox rule above renders
   box-sizing:border-box (confirmed live via computed style on all 8
   templates carrying this exact block), so the CSS containing block for
   this ::before (the padding box) is only 24px - 2*2px border = 20x20, not
   24x24. The original -12px inset was sized against the 24x24 assumption,
   so it actually produced a 20+2*12=44x44 overlay - exactly at the SC
   2.5.5 floor with zero cushion, which is why it measured as a genuine
   misclick onto the adjacent privacy-policy link on Ascension/Aurora/Bliss
   (live elementFromPoint hit-test, 2026-08-19) and as a 1-6px shortfall
   elsewhere once combined with per-template line-height jitter. Bumping
   each inset by 2px (one border-width) restores the intended 48x48
   cushion (20 + 2*14) regardless of box-sizing - re-verified live:
   elementFromPoint at every point in the overlay, including the corner
   nearest the link, now resolves to the checkbox with no measured
   encroachment onto the link/label. */
body .contact-mobile-form input[type="checkbox"]::before,
#contactusPrivacy input[type="checkbox"]::before,
#privacyDiv input[type="checkbox"]::before,
#contactUsV1Privacy input[type="checkbox"]::before {
    content: "";
    position: absolute;
    top: -14px; left: -14px; right: -14px; bottom: -14px;
}
/* ------------------------------------------------------------
   TFS 2987209 — WCAG 2.2 AAA 2.5.5 Target Size (Enhanced)
   S0088-Haute / Ascend footer (plan §4.3b, Family 1b). This
   template renders <footer class="container-fluid"> and never
   loads footer.min.css (Workstream A's fix does not reach it),
   so it needs its own stanza. Governing base CSS:
   RPcssMaster_S0088-Haute.css, identical across all 20 flagged
   domains. Sizes below are illustrative per the plan — confirmed
   against a live measurement pass (§0.6): legal/social/ADA-HUD
   links measure well under 44px on all 20 domains at all 3
   viewports (no media-query variation to account for).
   ------------------------------------------------------------ */
body #form footer ul.footer-links li a.privacy,
body #form footer ul.footer-links li a.additional-footer-link,
body #form footer .rplogo a {
    display: inline-block;
    min-height: 44px;
    line-height: 44px;
    /* no min-width — these labels already measure 345px+ wide */
}

/* Social icons FAIL ON WIDTH here (measured 39px), not just
   height — the inverse of the usual footer-7/-10 pattern
   (Workstream A). Target the <a>, not the <li> — the <li> carries
   a server-emitted inline style="display:inline-block" attribute
   that beats external CSS targeting it. Do NOT grow the ::before
   glyph (it has a visible painted border, so growing it is a
   visible design change) — only the anchor's invisible hit-box
   grows. */
body #form footer ul.social-list li a {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 44px;
    min-height: 44px;
}

/* ADA/HUD links: font-size:0 on an inline anchor collapses its
   line box to 40x0. The parent #ADA-HUD-Links is hard-capped
   height:30px in RpWebpartCss_AdaHudicons.css — relax the
   parent's height here too, or a 44px anchor overflows the box. */
body #form footer #ADA-HUD-Links {
    height: auto;
    min-height: 44px;
}
body #form footer #ADA-HUD-Links a {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 44px;
    min-height: 44px;
}
/* footer .footer-content-social > a (Greystar wordmark) already
   passes at 235x51-85px — intentionally left untouched. */

/* ------------------------------------------------------------
   TFS 2905632 - WCAG 1.4.1 Use of Color (selected state)
   The Floor Plans bed/bath filter and view-switch tabs mark the
   selected item with a brand-color background + #fff text only
   (base rule sets border-color:transparent, no weight/underline).
   Add an underline so the selection is perceivable in greyscale
   and for color-blind users. `body #form` prefix keeps specificity
   above the rpWebpartCss_Floorplan* base bundles. No color changed.
   ------------------------------------------------------------ */
body #form .fp2-bed-bath ul li.active > a,
body #form .FloorPlansV2 .fp-switch-tabs .btn-default.active,
body #form .FloorPlansV3 .fp-switch-tabs .btn-default.active {
  text-decoration: underline;
  text-underline-offset: 3px;
}

/* ------------------------------------------------------------
   TFS 2987209 — WCAG 2.2 AAA 2.5.5 Target Size (Enhanced), 44x44
   S0088-Haute header nav / CTAs / phone, hero scroll link and the
   footer directions link. Found by a Silktide scan of the
   S0088-Haute SAT testbed (11 URLs, 172 flagged instances) that
   showed none of this ticket's previously shipped selectors were
   at fault — every flagged element belonged to chrome this ticket
   had not yet reached.

   This template does NOT load assets/common/header/css/header.css
   and does not use the shared Header widget (that widget emits
   .nav-main/.navLink, never #menuElem). Its header is
   template-native markup styled by RPcssMaster_S0088-Haute.css,
   which is why the fix lives in this per-template override rather
   than in a shared header file.

   Cascade confirmed live via document.styleSheets: the master is
   at index 0, the widget bundle at index 6, this file at index 8.
   A plain rule here therefore wins; no !important is needed
   anywhere below, and none is used.

   NOTE on units: html font-size is 10px on this template, so every
   rem in the master is x10, not x16. `line-height:2.4rem` = 24px.

   Technique — min-height/min-width plus box-sizing, NOT padding and
   NOT a ::before overlay:
   * min-height/min-width are uncontested on these selectors (every
     GS-22 master and widget stylesheet was audited). Per CSS2.1
     §10.7 they are applied last in height resolution, so they also
     beat any competing height/max-height without a specificity
     fight.
   * box-sizing:border-box makes min-height:44px yield a total of
     exactly 44px INCLUDING the existing 5px padding-bottom and the
     7px transparent border-bottom that draws the active-state
     indicator. Without it the box totals 56px, overshooting the
     requirement and growing the header by ~30px.
   * A symmetric ::before overlay was live-tested here and
     MEASURABLY STOLE CLICKS: at <=1024px the stacked nav rows sit
     4.14px apart and elementFromPoint above "Amenities" re-resolved
     from "Home" to "Amenities". Separately, #menuElem li a carries
     overflow:hidden at <=1024px, which rendered the overlay
     completely inert until overflow:visible was added. The direct
     grow reflows cleanly instead and every centre hit-test still
     resolves to the intended link.
   ------------------------------------------------------------ */

/* Nav links measured 26.28px tall at 1440 (14.29px line box + 5px
   padding-bottom + 7px border-bottom). Two labels ALSO fail on
   width — "Blog" at 37.42px and "Home" at 40.78px — so min-width is
   required here. That is a deliberate departure from Workstream A's
   "do not add min-width to text links" rule, which was calibrated
   for footer links measuring 345px+; it does not hold for short nav
   labels. inline-flex centring keeps the label optically centred in
   the taller box — with a bare min-height on the inherited
   display:block the text would sit at the top with the active-state
   underline stranded ~24px below it. */
body #form #menuElem li a,
body #form .menuElem li a {
    box-sizing: border-box;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 44px;
    min-height: 44px;
}

/* Header CTA buttons ("Tour" / "Apply Now"), measured 36px tall at
   1440 with 35-38.9px of clearance on the tight side, so growing to
   44px stays inside the 64px header-CTA container and does not
   approach a neighbour. min-width is a no-op here (the base sets
   min-width:135px) but guards a future narrower label.
   The inline color/text-decoration !important on .cta2 is injected
   at RUNTIME by a contrast-scrim script that is not present in this
   repo; it only ever touches colour, text-decoration and
   border-colour, so it cannot affect sizing. */
body #form .header-ctas .button {
    box-sizing: border-box;
    min-height: 44px;
}

/* Phone link — THREE instances on this template, not two: the
   header toolbar (.header-phone), one inside ul.menuElem (already
   covered by the nav rule above), and the footer/contact-info
   block. The already-shipped Family 1b footer stanza does NOT cover
   a.seo-number — it names only .privacy, .additional-footer-link,
   .rplogo a, .social-list li a and #ADA-HUD-Links a — so the footer
   instance needs this new selector.

   The toolbar instance is floated, hence already blockified, so
   min-height alone grows it downward: safe.
   The contact-info instance is display:inline, where min-height has
   no effect at all, so it needs a display change. It gets
   inline-flex plus vertical-align:top rather than inline-block with
   line-height:44px, because an inline box with an enlarged line box
   grows symmetrically about the baseline — that would expand ~11px
   UPWARD into the 5px gap above it and overlap
   #footerDirectionsLink. vertical-align:top anchors the box to the
   top of its line box so growth is downward only. */
body #form .header-phone a.seo-number {
    box-sizing: border-box;
    min-height: 44px;
}
body #form .contact-info-container a.seo-number {
    box-sizing: border-box;
    display: inline-flex;
    align-items: center;
    vertical-align: top;
    min-height: 44px;
}

/* Hero scroll-down link. ONE instance — the Silktide report's "x2"
   was the same element counted twice. Measured 25.72px wide, so it
   fails on BOTH axes; it is an icon-style control with generous
   clearance on every side, so a symmetric grow is safe. */
body #form a.rp-scroll {
    box-sizing: border-box;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 44px;
    min-height: 44px;
}

/* Footer Google-Maps directions link, 32px tall (font-size:1.2rem =
   12px, line-height:2rem = 20px). Height only — the label is a full
   street address and measures far wider than 44px. The master
   already sets display:inline-block, so min-height applies directly.
   Only the .contact-info-container selector is used: a `footer
   #footerDirectionsLink` variant was tested against the live DOM and
   matched ZERO elements, so it was removed rather than shipped as
   dead CSS. */
body #form .contact-info-container #footerDirectionsLink {
    box-sizing: border-box;
    min-height: 44px;
}

/* ------------------------------------------------------------
   WCAG 2.2 AA 2.5.8 Target Size (Minimum) — TFS 3040687
   Shared-component block. IDENTICAL BYTES in every wcag-*.css —
   this issue spans 23 templates, so nothing here is template-tuned.

   Source of truth: Silktide check `ensure-minimum-target-size`
   pulled from PROD 2026-08-24 — 182 sites / 1,034 flagged elements
   (test/3040687-target-size/silktide-prod/raw-flagged.json). Every
   rule cites the bucket and the geometry Silktide reported, and each
   was measured in headless Chrome before being included.

   Specificity: `body` prefix + !important rather than this template's
   own namespace prefix. The namespace would narrow the match and miss
   elements rendered outside the template wrapper (the decoy anchor is
   one of those).

   *** NEVER ADD `display` TO A TEXT-LINK RULE HERE. ***
   MEASURED, then SEEN in a screenshot: `display:inline-block` on
   a[href*="greystar.com/privacy"] made that link drop ~9px BELOW its row-mates
   ("DISCLOSURES & LICENSES", "DMCA AGENT") in the elan08022023 footer — a
   visible zig-zag, because inline-block turns the link into an atomic box that
   carries its own padding into the line layout. Vertical padding on a plain
   INLINE link grows the hit box (what the scanner measures) while the glyphs
   stay exactly on the baseline. Padding alone is sufficient; `display` is not
   needed anywhere in this block except the decoy's `display:none`.

   *** 24.0px IS NOT ENOUGH — read before editing any value below. ***
   TFS 2955118 established empirically (see the Tableau and Ascension
   notes earlier in this file) that a target landing on EXACTLY 24.0px
   is still flagged by the scanner: ".CMSSiteMapLink at 32px passes,
   footer links at 24.0 do not." So every rule here OVERSHOOTS:
     - text links  -> vertical padding, which composes with any existing
                      padding instead of replacing it, and never caps the
                      box the way line-height does
     - icon/dots   -> 28px, not 24px
   Do NOT "tidy" these back to min-height:24px / line-height:24px. That
   reintroduces the 24.0 failure AND, because these rules carry
   !important, would override the working padding-based rules that some
   templates (e.g. Ascension) already ship.
   ------------------------------------------------------------ */

/* 1. Hidden decoy anchor — 85 rows / 29 sites, reported 54x22.
      <a href="#" tabindex="-1" aria-hidden="true" rel="nofollow"
         style="opacity:.01;position:absolute;z-index:-999">___</a>
      Not a real control. Its inline style carries no !important, so
      this wins and takes it out of hit-testing and the a11y tree. */
body a[aria-hidden="true"][tabindex="-1"][rel="nofollow"] {
    display: none !important;
}

/* 2. Site-map page links — 371 rows / 52 sites, the largest bucket.
      Reported ~71x19, stacked about one line-height apart.
      NOTE: a.CMSListMenuLink (5 rows) is deliberately EXCLUDED — that
      is the primary-nav class, and forcing line-height on it across 22
      templates risks every page's header for 5 rows. */
body a.CMSSiteMapLink {
    padding-top: 5px !important;
    padding-bottom: 5px !important;
}

/* 3. Social icon links — NOT handled here. 44 rows / 23 sites, flagged at
      11.4x24 / 17.2x24 (icon-font glyph on a `display:inline` anchor).

      MEASURED: every fleet-wide formulation broke something.
        - `display:inline-flex` + min-28  -> SHRANK compliant icons
                                             (balcony 44x44 -> 28x28, slate 33 -> 28)
        - `display:inline-block` + min-28 -> same shrink (the box comes from the
                                             parent's layout; any display override
                                             re-computes it)
        - `padding: 4px 8px` (no shrink)  -> the extra width WRAPS the icon row
                                             onto a second line: slateqanew
                                             UL.header-social 5 icons, vertical
                                             centre spread 0px -> 28.6px (visible
                                             zig-zag); emerald +8px, balcony +4px.

      The containers differ per template, so this needs a container-scoped rule,
      not a fleet-wide one. **TFS 2982346 owns social-icon target size** and has
      per-template branches for exactly this. Left to that ticket on purpose.
      Do not re-add a global `a.facebook`-style rule here. */

/* 4. Hero scroll-down affordance — 18 rows / 15 sites, reported 9x16. */
body a#scroll-down {
    padding: 6px 8px !important;
}

/* 5. Hamburger / nav toggle — reported 16x6. a.dropdown-toggle is already
      handled elsewhere in this file; only the button form is new.

      min-* rather than padding: a <button> is inline-block by default, so
      min-width/min-height apply and can only ever RAISE a dimension. An
      earlier `padding: 10px` shorthand REPLACED the button's own padding and
      grew emerald10262023's header button from 90.5x44 to 110.5x47 — 20px
      wider for no benefit, since it was already compliant. Verified with
      min-*: elan08022023 menu-toggle stays 40x35 @375 and 55x45 @1440. */
body button.menu-toggle {
    min-width: 28px !important;
    min-height: 28px !important;
}

/* 6. Carousel dots and gallery pagination.
      padding + background-clip:content-box grows the HIT AREA while the
      painted dot keeps its original size, so the carousel looks the same.
      The padding is per-widget because the dots differ in size, and with
      box-sizing:border-box the content box (= the painted area) is
      28px - 2*padding. Get this wrong and the dot visibly SHRINKS.
        .owl-dot          measured  7x7  -> padding 10px leaves  8px painted
        flexslider dots   measured 14x14 -> padding  7px leaves 14px painted */
body button.owl-dot,
body .owl-dots button.owl-dot {
    box-sizing: border-box !important;
    min-width: 28px !important;
    min-height: 28px !important;
    padding: 10px !important;
    margin-left: 2px !important;
    margin-right: 2px !important;
    background-clip: content-box !important;
}
body .flex-control-nav a,
body .flex-control-paging a {
    box-sizing: border-box !important;
    min-width: 28px !important;
    min-height: 28px !important;
    padding: 7px !important;
    background-clip: content-box !important;
}
/* a.pagination-item is deliberately NOT handled here. MEASURED REGRESSION:
   on haute011326.sat-ws the gallery tiles are
   `a.fancybox3.gallery-item.pagination-item` at display:block, 469.5x449.5.
   Forcing `display:inline-block` collapsed them to 28px and shortened the page
   by 3,936px — it destroys the gallery grid. The flagged element was a
   380x2 collapsed inline on one site (17 rows, 1 site); that is not worth
   risking every gallery on the fleet. Route it to its own ticket with a
   container-scoped selector if it matters. */

/* 7. Header / footer phone links — NOT handled here. 6 rows / 5 sites,
      flagged at ~102x19.

      MEASURED ON PROD (181-site sweep, 2026-08-25): the rule
        a.footer-phone.seo-number, a.header-phone.seo-number
          { padding-top:5px; padding-bottom:5px }
      SHRANK the phone CTA on 30 live sites — e.g. affinityatkendrick.com,
      esprialiving.com, affinityathudson.com: a.btn.footer-phone.seo-number went
      137x38 -> 137x32, and apartmentsdavie.com 175x46.6 -> 175x40.6. On those
      templates the element is a styled button whose own padding is larger than
      5px, and `padding-top/bottom` REPLACES it rather than adding to it.

      6 flagged rows is not worth a visible shrink on 30 sites. `min-height`
      would be safe but is a no-op on the inline instances that are actually
      flagged, so it would buy nothing. Needs a per-template rule that knows
      whether the phone renders as inline text or as a button. */

/* 8. "Read More" expander — 26 rows. Measured on encorerise.com: 94.5x20,
      `display:inline`, no sibling controls in its row, so vertical padding is
      safe here and lifts it to 38px.

      REMOVED from this rule after measurement, do not re-add:
        a[href*="greystar.com/privacy"] (38 rows / 7 sites) — every instance
          measured is ALREADY compliant (mirabellahouston 95.3x44,
          capitalplaceatsouthwood 94.6x44 and 132x27, thegeorgianapts 41x28).
          Padding them gained nothing and BROKE the footer legal row: on
          elan08022023 the base CSS makes that link `display:inline-block` at
          44px alongside "Disclosures & Licenses" / "DMCA Agent"; +9px padding
          grew it to 62px and dropped its centre 9px BELOW its row-mates —
          visible zig-zag, confirmed in a screenshot.
        a[href*="onlineleasing.realpage.com"] (12 rows) — no instance measured
          under 24px, so there was no evidence it needed the rule, and it
          carries the same row-breaking risk.
      Both need a per-template, container-scoped rule if they are ever a real
      failure. A fleet-wide href selector cannot tell "already fine" from
      "too small". */
body a.more-link {
    padding-top: 9px !important;
    padding-bottom: 9px !important;
}

/* 9. In-prose content links — the last and largest remaining bucket
      (~191 rows), e.g. neighbourhood/POI links inside pasted body copy:
        a "Bert Fields Park"  109.7x18  parent p.MsoNormal  prose 425 chars

      These are arguably EXEMPT under 2.5.8's Inline exception, but
      Silktide flags them, so they are padded here to clear the check.

      4px, not more: the flagged links measure 17-22px tall, so +8px lands them
      at 25-30px — clear of 24 without enlarging the box further than needed.
      Measured on thegeorgianapts-dallas.com/Neighborhood.aspx: pad 4px gives
      minHeight 26.0; pad 7px gives 32.0 but widens the box-overlap between
      links on adjacent lines from 26px to 32px for no compliance gain.

      Vertical padding on an INLINE box grows the hit area (which is what
      Silktide measures) without pushing text lines apart. Measured on
      thegeorgianapts-dallas.com/Neighborhood.aspx, altalongwood.com and
      thearialiving.com/site-map.aspx: body scrollHeight delta 0 at
      1440px, but -20px to +27px at 375px, and scrollWidth delta 0 at
      every width. None of these links carry a background-color or border
      (measured: 0 of them), so the enlarged box is invisible. So: no horizontal overflow, small vertical movement
      on mobile — QA regression check §3a in the validation guide.

      Scope is deliberately narrow — p / td / span, classless links only.
      DO NOT broaden this to `a:not([class])`: measured on
      mirabellahouston.com that also pads already-compliant 44px nav and
      footer links up to 57px, inflates the footer logo 170px -> 184px,
      and SHRANK a 44px CTA to 30px. */
body p a:not([class]),
body td a:not([class]),
body span a:not([class]) {
    padding-top: 4px !important;
    padding-bottom: 4px !important;
}
/* ---------- end WCAG 2.5.8 Target Size (TFS 3040687) ---------- */
