/* ============================================================
   wcag-c0051-gs-balcony.css
   WCAG 2.1 Level AA override for the C0051-GS-Balcony Kentico template
   (TemplateId 1366).

   Selectors verified against the live base CSS pulled from
   https://livethelaurels.com on 2026-05-07.

   IMPORTANT — this template namespaces all base rules under
   .template-balcony (set by a wrapper div inside <body>).
   All overrides below carry that prefix to match base
   specificity. Several base rules use !important on outline:none
   and box-shadow:none, so our focus rules use !important to win.

   Specificity strategy:
   Every selector is prefixed with `body #form` (the ASP.NET
   WebForms page-level form ID, present on every page and
   wrapping all our target elements). That adds (1, 0, 2) to
   each rule's specificity, lifting our overrides above the
   widget-CSS bundles that load via rpWebpartCss_*. Combined
   with the `.template-balcony` namespace already in each
   selector, rules sit at (1, 3+, 2+).
   ============================================================ */


/* ------------------------------------------------------------
   WCAG 2.4.7 Focus Visible
   Base suppresses outlines on:
     .template-balcony a:hover, .template-balcony a:focus
       { outline-color:transparent; outline-style:none }
     .template-balcony .btn-primary:hover ... { outline:none !important }
     .template-balcony .contact-form ... :focus
       { outline:none; box-shadow:none !important }
     .template-balcony .floorplan-search-bar .floorplan-search-moveindate:focus
       { outline:none }
     .template-balcony .contact-widget .contactus-float-input-div input:focus
       { outline:none }
     .footer-widget footer a:focus { outline:none }
   Restore visible focus rings.
   ------------------------------------------------------------ */
body #form .template-balcony a:focus-visible,
body #form .template-balcony button:focus-visible,
body #form .template-balcony .btn:focus-visible,
body #form .template-balcony .btn-primary:focus-visible,
body #form .template-balcony input:focus-visible,
body #form .template-balcony select:focus-visible,
body #form .template-balcony textarea:focus-visible,
body #form .template-balcony .navbar-toggle:focus-visible,
body #form .template-balcony .dropdown-toggle:focus-visible,
body #form .template-balcony .contact-form .form-control:focus-visible,
body #form .template-balcony .contact-us-enhanced .form-control:focus-visible,
body #form .template-balcony .contact-widget input:focus-visible,
body #form .template-balcony .contact-widget textarea:focus-visible,
body #form .template-balcony .floorplan-search-bar .floorplan-search-moveindate:focus-visible,
body #form .template-balcony [tabindex]:focus-visible,
body #form .template-balcony [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 !important;
  box-shadow: 0 0 0 2px #005fcc, 0 0 0 3px #fff !important;
}


/* ------------------------------------------------------------
   WCAG 2.4.11 Focus Not Obscured
   Base header is position:fixed with height:84px (.template-balcony header).
   Reserve scroll space + a small visual buffer.
   ------------------------------------------------------------ */
html {
  scroll-padding-top: 100px;
}

body #form .template-balcony :focus-visible {
  scroll-margin-top: 100px;
}


/* ------------------------------------------------------------
   WCAG 1.4.11 Non-text Contrast (form controls)
   Base: .template-balcony .contact-us-enhanced .form-group .form-control
         { border:2px solid #abaaab; border-width:0 0 2px }
   #abaaab on white ≈ 3.05:1 — borderline. Bump to #595959 (7:1).
   ------------------------------------------------------------ */
body #form .template-balcony .contact-us-enhanced .form-group .form-control,
body #form .template-balcony .contact-form .form-control,
body #form .template-balcony .contact-widget .contactus-float-input-div input,
body #form .template-balcony .contact-widget .contactus-float-input-div textarea {
  border-color: #595959 !important;
}


/* ------------------------------------------------------------
   WCAG 1.4.3 Contrast Minimum (footer disclosure only)
   The base rule `.template-balcony a { color:#919191 }` technically
   fails 4.5:1 on white, but we do NOT override the color here.
   Reason: shared template injection applies to every Greystar
   property on this template, and properties apply their own brand
   colors to body links. A blanket `color: #595959` would override
   per-property branding. If a specific property's brand color
   fails Silktide, fix it at that property's site-CSS level.
   We DO bump the footer-disclosure opacity (no brand impact).
   ------------------------------------------------------------ */
body #form .footer-widget footer .footer-disclosure {
  opacity: 0.85;
}


/* ------------------------------------------------------------
   WCAG 1.4.1 Use of Color (inline links)
   Underline inline content links so they're distinguishable
   without color. Scoped to body-content containers only —
   bare `p a` / `li a` / `dd a` selectors would bleed into
   footer nav (which uses `<ul><li><a>` for menu links) and
   footer disclosure (`<p><a>`), so we anchor to actual content
   containers instead.
   ------------------------------------------------------------ */
body #form .template-balcony .container-fluid.main a,
body #form .template-balcony .col-sm-12.content a,
body #form .template-balcony .main-content-text a,
body #form .template-balcony .inner-page-main-content a {
  text-decoration: underline;
  text-underline-offset: 2px;
}

body #form .template-balcony a.btn,
body #form .template-balcony a.button,
body #form .template-balcony .btn,
body #form .template-balcony .btn-primary,
body #form .template-balcony header a,
body #form .template-balcony nav a,
body #form .template-balcony .navbar a,
body #form .template-balcony .navbar-collapse a,
body #form .template-balcony .cta-header-btn,
body #form .template-balcony .header-CTA-button,
body #form .template-balcony .footer-CTA-Button,
body #form .template-balcony a.more-link,
body #form .template-balcony a.less-link,
body #form .footer-widget footer a {
  text-decoration: none;
}


/* ------------------------------------------------------------
   TFS 2870264 — WCAG 1.4.1 (homepage inline links)
   Balcony's homepage uses `.about-section` (the welcome
   row with three `.col-md-4` text columns: `<h4>` + `<p>`)
   and `.neighborhood-widget` (same pattern). `.callout`
   holds the section heading; rich-text paragraphs sit in
   `.col-md-4 > p`. The "more" link uses `<a class="more-btn">`
   — already opted out via `a.more-link` above; explicit
   opt-out here for the matching `more-btn` class too.
   ------------------------------------------------------------ */
body #form .template-balcony .about-section .col-md-4 a,
body #form .template-balcony .about-section .col-md-4 p a,
body #form .template-balcony .about-section .callout a,
body #form .template-balcony .neighborhood-widget .col-md-4 a,
body #form .template-balcony .neighborhood-widget .col-md-4 p a,
body #form .template-balcony .neighborhood-widget .callout a {
  text-decoration: underline;
  text-underline-offset: 2px;
}

body #form .template-balcony .about-section a.more-btn,
body #form .template-balcony .neighborhood-widget a.more-btn,
body #form .template-balcony a.more-btn,
body #form .template-balcony .more-btn {
  text-decoration: none;
}

/* ------------------------------------------------------------
   WCAG 2.2 AA 2.5.8 Target Size (Pointer)
   ------------------------------------------------------------ */
body #form .footer-widget footer a {
    line-height: 24px;
    margin: 5px 0;
    display: inline-block
}

/* ------------------------------------------------------------
   WCAG 1.4.3 Contrast Minimum — "Get Directions" button
   TFS 2870466

   Base: .btn-primary { background:#00A0B0; color:#fff; }
   White on #00A0B0 ≈ 3.13:1 — fails the 4.5:1 normal-text
   threshold. At 20px (~15pt) bold, the text qualifies as
   "large text" per WCAG (14pt+ bold), which only requires
   3:1 contrast — so bolding lets the existing palette pass.
   ------------------------------------------------------------ */
.template-balcony a.btn.btn-primary.btn-lg[href*="maps.google.com"] {
  font-weight: bold;
}
