/* ==========================================================================
   Accessibility — shared global treatments
   --------------------------------------------------------------------------
   WCAG 2.2 AA remediation (Milestone 1.0.7) — Batch 1 + Batch 2.

   Loaded globally from _Layout.cshtml AFTER the chrome (header/footer) CSS and
   layout.css so it can normalise focus rings across the vendored chrome export
   as well as the app's own components.

   This file addresses two shared-fix clusters:
     - 1.4.11 Focus-outline / non-text contrast  (audit #2,3,4,13,35,55,67,68,
                                                   18,38,39,56 → GitLab
                                                   #74,75,76,85,107,127,139,140,
                                                   90,110,111,128)
     - 1.4.3 / 1.4.1 Text & link contrast / distinguishability
                                                  (audit #17,28,53,57,12,19 →
                                                   GitLab #89,100,125,129,84,91)
   ========================================================================== */

:root {
    /* Dual-tone focus ring tokens.

       A single-colour ring can't satisfy the 3:1 non-text-contrast minimum on
       BOTH light and dark backgrounds (e.g. a blue ring measures only 2.58:1 on
       the #1A237E dark filter tags — audit #67/#139). We therefore render the
       focus indicator as two stacked rings: a dark inner ring + a light outer
       ring. Whatever the background, at least one of the two rings clears 3:1,
       so the indicator is always visible. */
    --pf-focus-ring-dark: #181818;   /* 17.76:1 on white, 12.7:1+ on the lilac surfaces */
    --pf-focus-ring-light: #FFFFFF;  /* 13.24:1 on #1A237E, 6.44:1 on #2B5EA7 */
    --pf-focus-ring-width: 2px;
}

/* --------------------------------------------------------------------------
   1.4.11 — Global accessible focus indicator
   --------------------------------------------------------------------------
   Baseline :focus-visible ring for every interactive element. Components that
   already declared a (lower-contrast) ring are normalised here; this rule wins
   because the file loads last. The dual ring = solid dark outline + a white
   box-shadow halo just outside it. Works on light AND dark surfaces, covering:
     #74/#75/#76 Header (Progyny, Get started, Explore menu)  [vendored chrome]
     #85         Footer modal Close
     #107        Location "Call ..." link
     #127        Report an Issue checkboxes
     #139        Search "Remove filter" chips (dark #1A237E bg)
     #140        Search pagination "Page n"
-------------------------------------------------------------------------- */
a:focus-visible,
button:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible,
summary:focus-visible,
[tabindex]:focus-visible,
[role="button"]:focus-visible,
[role="link"]:focus-visible,
[role="menuitem"]:focus-visible,
[role="tab"]:focus-visible,
[role="checkbox"]:focus-visible,
.btn:focus-visible,
.filter-chip:focus-visible,
.filter-tag__remove:focus-visible,
.results-pagination .page-btn:focus-visible,
.pf-info-modal__close-icon:focus-visible,
.pf-info-modal__close-btn:focus-visible {
    outline: var(--pf-focus-ring-width) solid var(--pf-focus-ring-dark);
    outline-offset: 2px;
    /* White halo just outside the dark outline so the indicator stays visible
       on dark backgrounds too. */
    box-shadow: 0 0 0 calc(var(--pf-focus-ring-width) + 2px) var(--pf-focus-ring-light);
    border-radius: inherit;
}

/* Fallback for engines that don't support :focus-visible — keep a ring on
   :focus too, but only where it won't show on mouse-click for plain links. */
@supports not selector(:focus-visible) {
    a:focus,
    button:focus,
    input:focus,
    select:focus,
    textarea:focus,
    [tabindex]:focus,
    [role="button"]:focus {
        outline: var(--pf-focus-ring-width) solid var(--pf-focus-ring-dark);
        outline-offset: 2px;
        box-shadow: 0 0 0 calc(var(--pf-focus-ring-width) + 2px) var(--pf-focus-ring-light);
    }
}

/* On dark-blue surfaces invert the ring: white outline + dark halo, so both
   rings keep >=3:1 against the dark #1A237E bg. White on #1A237E = 13.24:1,
   well above 3:1. */
.filter-tag__remove:focus-visible,
.results-pagination .page-btn:focus-visible {
    outline-color: var(--pf-focus-ring-light);
    box-shadow: 0 0 0 calc(var(--pf-focus-ring-width) + 2px) var(--pf-focus-ring-dark);
}

/* GitLab #140 (WCAG Batch A): Eduardo re-tested the active pagination button
   and saw only the black outer halo. The white outline was being drawn outside
   the blue button, onto the white page background, so it became invisible. Draw
   the active/current page indicator INSET on the blue fill instead: the visible
   ring is white, not black, and clears the 3:1 non-text contrast requirement. */
.results-pagination .page-btn.active:focus-visible {
    outline: none;
    box-shadow: inset 0 0 0 var(--pf-focus-ring-width) var(--pf-focus-ring-light);
}

/* --------------------------------------------------------------------------
   WCAG Batch A: Focus rings for header controls (#74 #75 #76)
   --------------------------------------------------------------------------
   Eduardo re-tested MR !138 (Batch 1+2 dual-tone ring) and asked for the
   header focus indicators to read as the white ring used on "Login", not the
   old dark-outline-with-white-halo look.

   #74 (Progyny logo / brand link):
   The logo sits inside the dark header (#203860) with the brand SVG well clear
   of the header edges, so a SINGLE white outline reads cleanly on every side
   (white on #203860 = 11.69:1). Keep it as the approved single white ring.

   #75 / #76 (desktop "Get started" pill + "Explore menu" / nav-toggle button):
   These two controls have height:100% of the 60px header, so a white ring at
   outline-offset:2px regressed -- the ring's top/bottom edge was drawn OUTSIDE
   the control into the adjacent WHITE page area above/below the 60px header,
   where white-on-white is invisible.

   Per Eduardo's verdict the indicator MUST stay white-only ("Use only the white
   visual focus, the same way it is implemented on the Login element") -- adding
   a dark companion band would regress the accepted fix. So the ring stays a
   single WHITE ring; we only change HOW it is drawn: INSET via box-shadow so the
   whole ring sits ON the control's own colored fill rather than bleeding into
   the adjacent white. Contrast of the white ring against each fill:
     - Get started bg #3A5AAD => 6.47:1 (>>3:1)
     - Explore menu bg #749E19 => 3.16:1 ( >3:1, passes)
   Drawing it inset also keeps it within the control bounds, so it is never
   clipped by the 60px header height -- this resolves "not going around the
   whole element".

   NOTE on the nav-drawer "Get started" (.header-navigation .get-started):
   that one is intentionally NOT in this white block. When the menu is open it
   sits on the near-white drawer panel (rgba(255,255,255,0.9)) alongside the
   other menu items (Employers, Smart Benefits, ...). It uses an inset dark ring
   inside the blue button so the focus indicator is visible on all four sides,
   including desktop where the button is flush with the bottom of the menu panel.
   -------------------------------------------------------------------------- */

/* #74 logo + Login: single white ring, sits clear inside the dark header. */
.site-header .logo a:focus-visible,
.site-header .login:focus-visible {
    outline: var(--pf-focus-ring-width) solid var(--pf-focus-ring-light);
    outline-offset: 2px;
    box-shadow: none;
}

/* #75 / #76: full-height header controls (height:100% of the 60px header)
   whose OUTER edge meets white. A white ring drawn OUTSIDE the control
   (outline-offset:2px) regressed: its top/bottom edge fell into the white page
   area above/below the 60px header (white-on-white, invisible).

   Per Eduardo's verdict the indicator stays WHITE-ONLY (matching Login) -- no
   dark companion band. Fix the visibility purely by drawing the same white ring
   INSET via an inset box-shadow, so the whole ring sits ON the control's own
   colored fill (#3A5AAD Get started = 6.47:1, #749E19 nav-toggle = 3.16:1, both
   >=3:1) instead of bleeding into the adjacent white. Inset also means it is
   never clipped by the header height, which resolves "not going around the
   whole element".

   The nav-drawer "Get started" (.header-navigation .get-started) is deliberately
   excluded here: on the open (near-white) menu panel it gets its own dark inset
   ring below, not the white-only desktop header treatment. */
.site-header .get-started-h:focus-visible,
.site-header button.nav-toggle:focus-visible {
    outline: none;
    box-shadow: inset 0 0 0 var(--pf-focus-ring-width) var(--pf-focus-ring-light);
}

/* #75 menu/drawer "Get started": the link is full-width and flush with the menu
   panel edge on desktop, so the global OUTSIDE outline/halo can be clipped or
   hidden by the panel boundary (only the top edge remained visible). Draw the
   dark ring INSET on this menu button instead so it surrounds the button on all
   four sides while preserving the white-background desktop header Get Started
   treatment above. */
.site-header .header-navigation .get-started:focus-visible {
    outline: none;
    box-shadow: inset 0 0 0 var(--pf-focus-ring-width) var(--pf-focus-ring-dark);
}

/* --------------------------------------------------------------------------
   1.4.11 — Non-text contrast of edit-field borders & icons (≥3:1)
   --------------------------------------------------------------------------
   #90  Main Finder edit-field borders were #B5B5B5 (2.05:1). Bump the resting
        border to #767676 (4.54:1). Covers the query field, location field,
        plan combobox trigger/dropdown/search.
   #128 Report an Issue "Additional information" + input borders (--pd-gray2
        #E6E6E6 / similar low-contrast greys) → same accessible border token.
   #110/#111 Location clinic-score tooltip icon (reported #999, 2.85:1) +
        its hover → #595959 (7.0:1).
-------------------------------------------------------------------------- */
:root {
    --pf-field-border: #767676; /* 4.54:1 on white — clears the 3:1 non-text min with margin */
    --pf-icon-fg: #595959;      /* 7.0:1 on white */
}

/* GitLab #128 / WCAG audit #56 (1.4.11): Report an Issue text inputs and
   textarea use --pd-gray2 (#E6E6E6, ~1.24:1) for their resting border. Append
   .ri-input and .ri-textarea here so they inherit the accessible border token
   (#767676, 4.54:1). The :focus state (blue var(--pd-blue3) + box-shadow) is
   declared in report-issue.css via a :focus selector with its own border-color,
   so it continues to win for the focused state. */
.pf-combobox__trigger,
.pf-combobox__dropdown,
.pf-combobox__search,
.pf-autocomplete__input,
.pf-autocomplete__dropdown,
.ri-input,
.ri-textarea {
    border-color: var(--pf-field-border) !important;
}

/* Because the resting border above is !important, the blue focus border in
   report-issue.css (.ri-input:focus / .ri-textarea:focus, no !important) would
   otherwise lose to it and the focus indicator would stay grey. Re-assert the
   blue focus border here with !important so the visible focus state is kept. */
.ri-input:focus,
.ri-textarea:focus {
    border-color: var(--pd-blue3) !important;
}

/* Clinic-score / priority-scheduling info icons (shared detail header). */
.pd-clinic-score__info {
    color: var(--pf-icon-fg);
}

.pd-clinic-score__info:hover,
.pd-clinic-score__info:focus {
    color: var(--pf-icon-fg);
}

/* --------------------------------------------------------------------------
   1.4.3 — Placeholder / supporting text contrast (≥4.5:1)
   --------------------------------------------------------------------------
   #89  Main Finder query/location placeholders (#999 → 2.85:1)
   #100 Main Finder combobox "Type at least 3 characters" helper (#999)
   #125 Report an Issue placeholders (#AAA → 2.32:1)
   #129 Report an Issue "(not required)" text (#777 → 4.48:1, just under)
   All bumped to #595959 (7.0:1).
-------------------------------------------------------------------------- */
:root {
    --pf-muted-text: #595959; /* 7.0:1 on white */
}

.pf-autocomplete__input::placeholder,
.pf-autocomplete__input::-webkit-input-placeholder,
.form-control-custom::placeholder,
.search-header .form-control::placeholder,
.pf-combobox__display,
.pf-combobox__search::placeholder {
    color: var(--pf-muted-text);
}

/* Report an Issue page muted text + placeholders (#125, #129). */
.ri-optional {
    color: var(--pf-muted-text);
}

.ri-textarea::placeholder,
.ri-input::placeholder {
    color: var(--pf-muted-text);
}

/* --------------------------------------------------------------------------
   1.4.1 — Links must be distinguishable from plain text (not by colour alone)
   --------------------------------------------------------------------------
   #84  Footer "Emergency care notice" modal — "911" link inside a paragraph.
   #91  Main Finder "(888) 597-5065" Care Advocate phone link inside a
        paragraph (Need Help info box).
   Both sit in running text, so we add a persistent underline (a non-colour
   affordance) rather than relying on colour. Underline on hover/focus already
   existed; this makes it always-on inside body copy.
-------------------------------------------------------------------------- */
.pf-info-modal__phone,
.need-help-box__phone {
    text-decoration: underline;
    text-underline-offset: 2px;
}

/* Report an Issue page description — contact email link sits in running text
   (axe: 1.01:1 vs surrounding #444444). Underline it so it isn't colour-only. */
.ri-page-description a {
    text-decoration: underline;
    text-underline-offset: 2px;
}

/* ==========================================================================
   WCAG Batch 5b: Header button appearance preservation
   ==========================================================================
   #78/#77: The .nav-toggle was converted from <a> to <button>. Reset default
   browser button styles so the visual appearance is unchanged from the
   vendored chrome. The vendored CSS targets .nav-toggle directly, so layout
   and colour rules still apply.

   #81: .submenu-toggle is a new expand/collapse trigger alongside each
   .menu-item-has-children link. It is visually minimal (icon only) and
   unstyled by default, relying on vendored chrome rules for layout context.
   -------------------------------------------------------------------------- */

/* Reset button defaults for the converted nav-toggle (was <a>). */
button.nav-toggle {
    background: none;
    border: none;
    cursor: pointer;
    font: inherit;
    padding: 0;
    text-decoration: none;
    color: inherit;
}

/* Submenu expand/collapse toggle buttons (new, alongside .menu-item-has-children links). */
button.submenu-toggle {
    background: none;
    border: none;
    cursor: pointer;
    font: inherit;
    padding: 0;
    color: inherit;
    display: inline-flex;
    align-items: center;
    justify-content: center;
}

/* --------------------------------------------------------------------------
   #73: "Select a plan instead" converted from <a role="button"> to <button>.
   Preserve the link-like appearance of the hint text. The parent paragraph
   already carries .pf-combobox__auth-hint for size/colour. Here we reset
   button chrome and add underline to match the former <a> presentation.
   -------------------------------------------------------------------------- */
button.pf-combobox__auth-hint-btn {
    background: none;
    border: none;
    padding: 0;
    cursor: pointer;
    font: inherit;
    color: inherit;
    text-decoration: underline;
    text-underline-offset: 2px;
}

button.pf-combobox__auth-hint-btn:hover,
button.pf-combobox__auth-hint-btn:focus {
    text-decoration: underline;
}

/* --------------------------------------------------------------------------
   #119: clinic score info button converted from <i role="button"> to <button>.
   Preserve the icon appearance by resetting button chrome and matching the
   former .pd-clinic-score__info colour, size, and cursor.
   -------------------------------------------------------------------------- */
button.pd-clinic-score__info-btn {
    background: none;
    border: none;
    padding: 0;
    cursor: pointer;
    font: inherit;
    color: var(--pf-icon-fg);
    font-size: 16px;
    line-height: 1;
    display: inline-flex;
    align-items: center;
}

@media (pointer: coarse) {
    button.pd-clinic-score__info-btn {
        padding: 12px;
        margin: -12px;
    }
}

button.pd-clinic-score__info-btn:hover,
button.pd-clinic-score__info-btn:focus {
    color: var(--pf-icon-fg);
}

/* #120 (WCAG 2.4.7): The clinic-score info button is a zero-padding inline button
   whose default browser outline could be obscured by the surrounding flex layout.
   Explicitly apply the dual-tone focus ring so the indicator is always visible,
   matching the global pattern from the Batch 1 focus ring above. The border-radius
   is set to 2px so the ring wraps the icon shape rather than inheriting 0 from the
   button reset, giving a clearly visible keyboard focus indicator. */
button.pd-clinic-score__info-btn:focus-visible {
    outline: var(--pf-focus-ring-width) solid var(--pf-focus-ring-dark);
    outline-offset: 3px;
    box-shadow: 0 0 0 calc(var(--pf-focus-ring-width) + 2px) var(--pf-focus-ring-light);
    border-radius: 2px;
}

/* ==========================================================================
   WCAG Batch 8: Heading structure and semantics (1.3.1)
   Appearance-preservation rules for markup changes made in this batch.
   New elements (ul, fieldset) would inherit browser defaults that change
   visual layout. These rules neutralise those defaults so the page looks
   exactly as before.
   ========================================================================== */

/* ---------- #87: Footer legal-links list ----------
   The <ul class="pf-footer__legal-list"> wraps the footer nav links.
   Reset all list chrome and make the ul behave like the old bare nav (flex row). */
.pf-footer__legal-list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    align-items: center;
    gap: 16px;
    flex-wrap: wrap;
}

@media (max-width: 767.98px) {
    .pf-footer__legal-list {
        flex-direction: column;
        align-items: flex-start;
        gap: 8px;
    }

    /* #101: CSS 'order' rules removed. DOM order now matches visual order.
       The <li> elements in _Layout.cshtml are now sequenced Terms, Privacy,
       Language, Emergency, matching reading and visual order on all viewports. */
}

/* ---------- #116: Hours list (office + monitoring) ----------
   <ul class="ld-hours-list"> replaces the old bare <div> wrappers.
   The old divs had no bullets, no padding. Match that exactly. */
.ld-hours-list {
    list-style: none;
    margin: 0;
    padding: 0;
}

.ld-hours-list li {
    margin: 0;
    padding: 0;
}

/* ---------- #126: Report an Issue fieldset ----------
   <fieldset class="ri-issues-fieldset"> wraps the checkbox group.
   Browser defaults add a border and padding. Remove them so the card
   body looks identical to before the change. */
.ri-issues-fieldset {
    border: none;
    margin: 0;
    padding: 0;
    min-width: 0;
}

/* The <legend> replaces the old <p class="ri-section-label">. Keep the same
   appearance: block, full width, existing font from ri-section-label. */
.ri-issues-fieldset > legend {
    float: none;
    width: 100%;
    padding: 0;
    margin-bottom: 0.5rem;
}

/* ---------- #103/#112/#116: Additional information items ----------
   <ul class="ld-additional-items"> replaces <div role="list">.
   The div used display:flex/flex-wrap; replicate that on the ul. */
ul.ld-additional-items {
    list-style: none;
    margin: 0;
    padding: 0;
}

ul.ld-additional-items .ld-additional-item {
    list-style: none;
}

/* ==========================================================================
   WCAG Batch 9: Provider Profile zoom and reflow at 200% and 400% (1.4.4 / 1.4.10)
   --------------------------------------------------------------------------
   GitLab #124 (1.4.4 Resize Text, High): content disappears at 200% zoom.
   GitLab #123 (1.4.10 Reflow, High): content disappears at 400% zoom
   (~320px effective viewport width).

   Root causes found in professional-details.css and call-to-action.css:

   FIX 1 — .cta-bar overflow: hidden (call-to-action.css line 13)
     The outer CTA container clips its flex children when they grow at zoom.
     Override to overflow: visible so text and the action button are never
     hidden. The decorative border-radius is preserved; only the clipping
     behaviour changes.

   FIX 2 — .cta-bar__btn white-space: nowrap (call-to-action.css line 91)
     The action button label cannot wrap, so at high zoom the button text
     overflows the container and is clipped by Fix 1's overflow. Remove
     nowrap so the label can break to a new line at narrow effective widths.

   FIX 3 — .cta-bar flex row lacks wrapping at narrow effective widths
     The CTA content + action button sit in a single flex row with no
     flex-wrap, so at ~320-640px the action button is pushed off-screen.
     Add flex-wrap: wrap for narrow viewports (max-width: 640px covers both
     200% and 400% zoom on typical desktop screens).

   FIX 4 — .pd-provider-header flex row lacks flex-wrap
     The photo column is flex-shrink: 0 (124px min) and the info column is
     flex: 1 min-width: 0. At zoom levels that land between the existing
     mobile breakpoint (767.98px) and the actual visible width, the two
     columns do not stack. Adding flex-wrap: wrap ensures the info column
     falls below the photo if there is not enough room, preventing
     horizontal overflow.
     (The existing @media (max-width: 767.98px) block already handles the
     common phone case; this adds wrap as a safety net for intermediate
     effective widths.)

   FIX 5 — .pd-clinics-map fixed height: 660px (professional-details.css line 519)
     The map panel uses a hard pixel height with overflow: hidden. At zoom
     the container stays 660px tall regardless of content, potentially
     clipping map controls or overflow from sibling elements that wrap
     around it. Replace with min-height: 300px so the container can grow.
     The map is already display: none at <992px (handled upstream); this
     fix guards the visible range where the map is shown.

   FIX 6 — .pd-clinics-layout fixed-width map column (377px) at zoom
     At effective viewports between ~640px and ~992px (200% zoom on 1280-
     1984px screens) the 377px fixed map column plus the list column can
     exceed the available width. The existing 991.98px media query collapses
     the layout to a column, but adding flex-wrap: wrap as a supplementary
     guard means the map column drops below the list rather than overflowing
     if the breakpoint does not fire in time (e.g. due to scrollbar width,
     container padding, or sub-pixel rounding at zoom).

   FIX 7 — .pd-login-link--inline white-space: nowrap
     The "Log in to see plans" inline CTA uses nowrap, meaning it cannot
     wrap at narrow effective widths. Allow normal wrapping via white-space:
     normal so the link text reflows instead of overflowing its card.

   Real validation: manual zoom testing at 200% and 400% on the Provider
   Profile page. No horizontal scrollbar for content; no clipped or
   invisible text or interactive elements.
   ========================================================================== */

/* FIX 1: CTA bar — remove clipping overflow so content is never hidden. */
.cta-bar {
    overflow: visible;
}

/* FIX 2 + FIX 3: CTA bar button — allow label to wrap; collapse the row
   at narrow effective widths (200% zoom ~640px, 400% zoom ~320px). */
.cta-bar__btn {
    white-space: normal;
}

@media (max-width: 640px) {
    .cta-bar {
        flex-wrap: wrap;
    }

    .cta-bar__content {
        flex: 1 1 100%;
    }

    .cta-bar__action {
        flex: 1 1 100%;
        margin-left: 0;
    }

    .cta-bar__btn {
        width: 100%;
    }
}

/* FIX 4: Provider header — wrap photo + info columns at narrow widths.
   Supplements the existing 767.98px column-direction rule; flex-wrap: wrap
   acts as a safety net for intermediate effective widths at zoom. */
.pd-provider-header {
    flex-wrap: wrap;
}

/* FIX 5: Additional-clinics map — replace the hard fixed height (660px) with a
   flexible height so the container can grow at zoom instead of clipping.
   IMPORTANT: the Google Maps canvas (.map-component) is height: 100% and relies
   on a definite-height ancestor to render. With height: auto the percentage
   collapses to 0 and the map disappears, so we give .pd-clinics-map a definite
   height (which the map fills) AND a min-height floor, plus a min-height on the
   map canvas itself so it never collapses regardless of the resolved parent
   height. The height can still grow if surrounding content needs more room. */
.pd-clinics-map {
    height: 660px;
    min-height: 300px;
}

.pd-clinics-map .map-component {
    min-height: 300px;
}

/* FIX 6: Additional-clinics layout — supplement the 991.98px column
   breakpoint with flex-wrap: wrap so the map column drops below the list
   rather than overflowing at intermediate effective widths. */
.pd-clinics-layout {
    flex-wrap: wrap;
}

/* FIX 7: Login inline link — allow text to wrap at narrow effective widths
   instead of overflowing its card container. */
.pd-login-link--inline {
    white-space: normal;
}

/* ==========================================================================
   WCAG Batch 6b: Text-spacing resilience (#94, 1.4.12)
   ==========================================================================
   When a user applies WCAG 1.4.12 text-spacing overrides (line-height 1.5x,
   letter-spacing 0.12em, word-spacing 0.16em) certain combobox display
   elements were clipped because they used overflow:hidden with white-space:nowrap
   inside a fixed-height container. The triggers already use min-height (good),
   but the inner display span and readonly-text span suppress wrapping without
   allowing the parent to grow. The fix allows the trigger to expand vertically
   by ensuring text nodes are not trapped behind a fixed ceiling:
   - Change overflow:hidden to overflow:visible on the display spans.
   - Keep white-space:nowrap and text-overflow:ellipsis so single-line text
     still truncates at default spacing (no layout change under normal conditions).
   - The parent trigger uses min-height:52px (not a fixed height), so it
     grows freely when line-height is increased externally.
   - Same treatment for .pf-combobox__readonly-text and the search-form
     label row, which inherits Bootstrap's line-height and has no fixed height.
   Note: .pf-autocomplete__input is a native <input> element. Browsers do not
   apply paragraph/line-height spacing overrides to single-line input values
   in the same way, and the input already uses min-height. No change needed there.
   ========================================================================== */

/* Text-spacing resilience for the combobox display value.
   NOTE (Batch 9 / #95 follow-up): the original fix here used overflow: visible,
   but the display span still has white-space: nowrap (from layout.css), so
   overflow: visible let a long selected plan/location value SPILL OUT of the
   field at all zoom levels — it defeated the ellipsis truncation entirely.
   Vertical growth under WCAG 1.4.12 text-spacing is already handled by the
   parent .pf-combobox__trigger (min-height: 52px + flex align-items: center,
   no fixed ceiling — it grows freely when line-height increases). So we keep
   overflow: hidden + text-overflow: ellipsis here to truncate cleanly on a
   single line and never overflow the field horizontally. */
.pf-combobox__display {
    overflow: hidden;
    text-overflow: ellipsis;
}

/* Same treatment for the read-only display text (plan locked by SSO or
   "no plan"): keep single-line ellipsis truncation, no horizontal spill.
   The .pf-combobox__readonly-display wrapper's min-height handles vertical
   text-spacing growth. */
.pf-combobox__readonly-text {
    overflow: hidden;
    text-overflow: ellipsis;
}

/* Allow the read-only display wrapper itself to grow; it uses min-height
   already, but the inner overflow:hidden was capping growth. */
.pf-combobox__readonly-display {
    overflow: visible;
}

/* Search-form labels: ensure no fixed height constrains them when line-height
   grows. The .search-form .form-label rule sets only font/color, no height.
   This guard adds an explicit min-height so the row never clips label text. */
.search-form .form-label {
    min-height: 1lh;
}

/* ==========================================================================
   WCAG Batch 6b: Required field marker (#92, 1.3.1)
   ==========================================================================
   The asterisk is a conventional required-field indicator (red, positioned
   after the label text). The aria-hidden="true" on the span keeps the
   asterisk out of the accessibility tree; the adjacent visually-hidden
   "(required)" span provides the programmatic announcement.
   ========================================================================== */
.pf-required-marker {
    color: #c0392b;
    margin-left: 3px;
    font-weight: 700;
    font-size: 0.9em;
    line-height: 1;
    vertical-align: middle;
}

/* ==========================================================================
   WCAG #82/#83: Footer modal-trigger buttons (WCAG 2.4.3 / 4.1.2)
   ==========================================================================
   The Language & Accessibility Assistance and Emergency Care Notice triggers
   were changed from <a href="#"> links to <button type="button"> elements so
   they correctly convey an ACTION (opening a dialog), not a navigation link.
   Native <button> elements carry UA default styling (background, border,
   padding). These rules reset those defaults so the buttons look pixel-
   identical to the text links they replaced, matching the sibling Terms and
   Privacy <a> links styled in layout.css (.pf-footer__legal a).
   ========================================================================== */
.pf-footer__link--language,
.pf-footer__link--emergency {
    background: none;
    border: none;
    padding: 0;
    margin: 0;
    font: inherit;
    color: #0c39a1;
    cursor: pointer;
    text-decoration: none;
    transition: color 0.15s ease;
    font-family: "Poppins", sans-serif;
    font-size: 12px;
    font-style: normal;
    font-weight: 550;
    line-height: 14px;
    display: inline;
}

.pf-footer__link--language:hover,
.pf-footer__link--emergency:hover {
    color: #0d1554;
    text-decoration: underline;
}
