/*
 * Podiatry Site Core — frontend styles.
 *
 * Deliberately minimal. Colours, fonts and layout intent mirror the existing
 * brand system (DM Serif Display for headings, DM Sans for body/UI, teal
 * #3DA0A0, deep navy #2C3E50). We do not redeclare fonts here — the theme's
 * global typography already cascades in.
 *
 * Anything more opinionated belongs in the theme / blog styling CSS files,
 * not this plugin.
 */

/* ---------- Clinic card grid ---------- */
.pcy-clinic-cards {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
	gap: 24px;
}

.pcy-clinic-card {
	background: #ffffff;
	border: 1px solid #e3e8ec;
	border-radius: 6px;
	overflow: hidden;
	display: flex;
	flex-direction: column;
	transition: box-shadow 180ms ease, transform 180ms ease;
}

.pcy-clinic-card:hover {
	box-shadow: 0 6px 20px rgba( 27, 45, 79, 0.08 );
	transform: translateY(-2px);
}

.pcy-clinic-card__media {
	display: block;
	aspect-ratio: 16 / 10;
	overflow: hidden;
	background: #f4f7f8;
}

.pcy-clinic-card__media img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}

.pcy-clinic-card__body {
	padding: 20px 22px 22px;
	display: flex;
	flex-direction: column;
	gap: 10px;
	flex: 1;
}

.pcy-clinic-card__title {
	margin: 0;
	font-size: 1.35rem;
	line-height: 1.2;
	color: #1B2D4F;
}

.pcy-clinic-card__title a {
	color: inherit;
	text-decoration: none;
}

.pcy-clinic-card__title a:hover {
	color: #3DA0A0;
}

.pcy-clinic-card__location {
	font-size: 0.9rem;
	color: #5a6472;
	letter-spacing: 0.01em;
}

.pcy-clinic-card__summary {
	margin: 0;
	font-size: 0.98rem;
	line-height: 1.55;
	color: #2C3E50;
}

.pcy-clinic-card__cta {
	margin-top: auto;
	align-self: flex-start;
	font-weight: 600;
	color: #3DA0A0;
	text-decoration: none;
}

.pcy-clinic-card__cta:hover {
	color: #2C3E50;
}

/* ---------- Single-clinic helpers ---------- */
.pcy-clinic-address {
	font-style: normal;
	line-height: 1.55;
	color: #2C3E50;
}

.pcy-clinic-hours {
	list-style: none;
	margin: 0;
	padding: 0;
}

.pcy-clinic-hours__row {
	display: flex;
	justify-content: space-between;
	padding: 6px 0;
	border-bottom: 1px solid #eef1f3;
	gap: 16px;
}

.pcy-clinic-hours__row:last-child {
	border-bottom: none;
}

.pcy-clinic-hours__day {
	font-weight: 600;
	color: #1B2D4F;
}

.pcy-clinic-hours__val {
	color: #2C3E50;
}

.pcy-clinic-map {
	border-radius: 6px;
	overflow: hidden;
	border: 1px solid #e3e8ec;
}

/* ---------- Pricing output helpers ---------- */
.pcy-price {
	font-weight: 600;
	color: #1B2D4F;
}

.pcy-price-note,
.pcy-price-duration {
	font-size: 0.88rem;
	color: #5a6472;
}

.pcy-price-block {
	display: flex;
	flex-direction: column;
	gap: 4px;
}

.pcy-price-block__label {
	font-weight: 600;
	color: #1B2D4F;
}

.pcy-price-block__duration,
.pcy-price-block__note {
	font-size: 0.88rem;
	color: #5a6472;
}

/* dev-i: wrapper for [price_extra_rows] — stacks editor-added spare rows
   using the same visual rhythm as adjacent hand-placed [price_block]s. */
.pcy-extra-rows {
	display: flex;
	flex-direction: column;
	gap: 16px;
}

.pcy-disclaimer {
	font-size: 0.9rem;
	color: #5a6472;
	line-height: 1.55;
}

/* ---------- Buttons ---------- */
.pcy-btn {
	display: inline-block;
	padding: 12px 22px;
	border-radius: 6px;
	font-weight: 600;
	text-decoration: none;
	line-height: 1;
	transition: background 160ms ease, color 160ms ease;
}

.pcy-btn--primary {
	background: #3DA0A0;
	color: #ffffff;
}

.pcy-btn--primary:hover {
	background: #2C3E50;
	color: #ffffff;
}

.pcy-btn--outline {
	background: transparent;
	color: #3DA0A0;
	border: 1.5px solid #3DA0A0;
}

.pcy-btn--outline:hover {
	background: #3DA0A0;
	color: #ffffff;
}

/* ---------- Per-clinic support text (dev-g) ---------- */
.pcy-clinic-find-us__support {
	margin: 8px 0 16px;
	color: #2C3E50;
	line-height: 1.55;
}

.pcy-clinic-contact__support {
	margin: 0 0 16px;
	color: #2C3E50;
	line-height: 1.55;
}

/* ---------- Parking & access block (dev-g) ---------- */
.pcy-clinic-parking-notes {
	margin: 24px 0;
	padding: 18px 22px;
	background: #f7fbfb;
	border: 1px solid #e3e8ec;
	border-radius: 6px;
}

.pcy-clinic-parking-notes__heading {
	margin: 0 0 8px;
	color: #1B2D4F;
	font-size: 1.15rem;
	line-height: 1.3;
}

.pcy-clinic-parking-notes__body {
	color: #2C3E50;
	line-height: 1.55;
}

.pcy-clinic-parking-notes__body p {
	margin: 0 0 8px;
}

.pcy-clinic-parking-notes__body p:last-child {
	margin-bottom: 0;
}


/* PCY_P3_BTN_WEIGHT_v1 */
/* P3 polish 2026-05-19: bump primary teal buttons 500->600 for AA-Large-Bold contrast on #3DA0A0 background. Brand teal preserved. */
body[class] .btn-teal,
body[class] a.btn-teal,
body[class] .pcy-hp2-btn-primary,
body[class] .pcy-cc-btn-primary,
body[class] .pcy-abt-btn-primary,
body[class] .pcy-btn-primary,
body[class] .pcy-btn-teal,
body[class] .btn-primary,
body[class] .pcy-cta-final .btn-teal,
body[class] .pcy-trust-card .btn-teal,
body[class] .pcy-final-btns .btn-primary,
body[class] .pcy-decision-card .pcy-dc-cta,
body[class] .pcy-conditions-cta > a,
body[class] .pcy-conditions-cta .btn-primary,
body[class] .pcy-services-cta-row .btn-primary,
body[class] .pcy-process-cta .btn-primary,
body[class] .pcy-reviews-cta .btn-primary,
body[class] .pcy-fees-cta .btn-primary {
  font-weight: 600 !important;
}


/* PCY_P3_FOOTER_HEADING_v1 */
/* P3 2026-05-19: footer column headings need white to beat Divi unified-CSS !important on h4. */
body[class] .pcy-footer-heading,
body[class] .pcy-footer-clinics__heading{color:#FFFFFF !important;}


/* PCY_HERO_SECTION_GAP_TIGHTEN_v2 */
/* P3 spacing pass 2 2026-05-19: existing inline edits (padTop 40 / s2 padBot 88 / decision padBot 64) left the visible gap above WHAT WE DO at ~248px on desktop. Cut both sides + tighten further. */
body[class] .pcy-services-section{padding-top:20px !important;}
@media (max-width:768px){body[class] .pcy-services-section{padding-top:32px !important;}}
body[class].home .pcy-s2{padding-bottom:40px !important;}
body[class].home .pcy-decision{padding-bottom:40px !important;}
@media (max-width:768px){body[class].home .pcy-s2{padding-bottom:32px !important;}body[class].home .pcy-decision{padding-bottom:32px !important;}}

/* PCY_CLINIC_ARCHIVE_GRID_v1 */
body.post-type-archive-clinic .pcy-clinic-cards{grid-template-columns:repeat(2,minmax(0,1fr));max-width:1024px;margin-left:auto;margin-right:auto;}
@media (max-width:600px){body.post-type-archive-clinic .pcy-clinic-cards{grid-template-columns:1fr;max-width:380px;}}
/* PCY_FOOTER_LINK_WHITE_v1 */
body[class] .pcy-footer-wrap a:not(.pcy-footer-logo){color:#FFFFFF !important;}
body[class] .pcy-footer-wrap a:not(.pcy-footer-logo):hover{color:#3DA0A0 !important;}

/* PCY_CLINIC_ARCHIVE_HERO_BG_v1 */
body.post-type-archive-clinic .et-l--body > .et_builder_inner_content .et_pb_section.et_pb_section_0_tb_body{background-color:#223344 !important;}

/* PCY_FOOTER_CTA_HOVER_FIX_v1 */
body[class] .pcy-footer-wrap .pcy-footer-col--contact a.pcy-footer-cta,
body[class] .pcy-footer-wrap .pcy-footer-col--contact a.pcy-footer-cta:hover{color:#FFFFFF !important;}

/* PCY_FOOTER_NO_HSCROLL_v1 - clip 100vw full-bleed footer breakout so it never forces a page-wide horizontal scrollbar (100vw includes the scrollbar gutter) */
body[class] .et-l--footer{overflow-x:clip;}


/* ===================================================================
   SNAGLIST PACK C  (2026-05-21)  visual/content polish
   =================================================================== */

/* PCY_CTA_PHONE_ICON_v1 - standardise hero/final-CTA phone buttons to ONE red/pink inline-SVG phone icon (Feather phone); hides any inline <svg> and replaces the emoji ::before; strips stray phone emoji from non-phone outline buttons (e.g. final-CTA View Clinics). Decorative. */
body[class] .condition-hero a.btn-outline[href^="tel:"]::before,
body[class] .service-hero a.btn-outline[href^="tel:"]::before,
body[class] .final-cta a.btn-outline[href^="tel:"]::before,
body[class] .pcy-final-btns a.btn-phone[href^="tel:"]::before,
body[class] .pcy-cond-hub-hero a.pcy-cond-hub-btn-ghost[href^="tel:"]::before,
body[class] .pcy-abt-hero a.pcy-abt-btn-ghost[href^="tel:"]::before{content:"" !important;display:inline-block !important;width:17px !important;height:17px !important;flex:0 0 auto !important;vertical-align:-3px;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23E8505B' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07A19.5 19.5 0 0 1 4.69 12 19.79 19.79 0 0 1 1.61 3.4 2 2 0 0 1 3.6 1.22h3a2 2 0 0 1 2 1.72c.127.96.361 1.903.7 2.81a2 2 0 0 1-.45 2.11L7.91 8.8a16 16 0 0 0 6.29 6.29l.95-.95a2 2 0 0 1 2.11-.45c.907.339 1.85.573 2.81.7A2 2 0 0 1 22 16.92z'/%3E%3C/svg%3E") no-repeat center/contain !important;}
body[class] .condition-hero a.btn-outline[href^="tel:"],
body[class] .service-hero a.btn-outline[href^="tel:"],
body[class] .final-cta a.btn-outline[href^="tel:"],
body[class] .pcy-final-btns a.btn-phone[href^="tel:"],
body[class] .pcy-cond-hub-hero a.pcy-cond-hub-btn-ghost[href^="tel:"],
body[class] .pcy-abt-hero a.pcy-abt-btn-ghost[href^="tel:"]{display:inline-flex !important;align-items:center !important;gap:8px !important;}
body[class] .condition-hero a.btn-outline[href^="tel:"] svg,
body[class] .service-hero a.btn-outline[href^="tel:"] svg,
body[class] .final-cta a.btn-outline[href^="tel:"] svg,
body[class] .pcy-final-btns a.btn-phone[href^="tel:"] svg{display:none !important;}
body[class] .condition-hero a.btn-outline:not([href^="tel:"])::before,
body[class] .service-hero a.btn-outline:not([href^="tel:"])::before,
body[class] .final-cta a.btn-outline:not([href^="tel:"])::before{content:none !important;}

/* PCY_CLINIC_CARD_CTA_HOVER_v1 - card 'View ... ->' hover was #2C3E50 navy = invisible on dark-navy single-clinic cards. Keep readable + on-brand: darker teal on white archive cards, lighter teal on dark single-clinic cards. */
body[class] .pcy-clinic-card__cta:hover{color:#2C8585 !important;}
body.single-clinic .pcy-clinic-card__cta:hover{color:#7FD0D0 !important;}

/* PCY_ABOUT_HERO_LOGOS_v1 - enlarge About-hero trust/accreditation logo pills for legibility (were 26px) without overpowering the hero. */
body[class] .pcy-abt-hero-logo img{height:40px !important;}
body[class] .pcy-abt-hero-logo{padding:10px 18px !important;}
body[class] .pcy-abt-hero-logos{gap:14px !important;margin-top:26px !important;}
@media (max-width:768px){body[class] .pcy-abt-hero-logo img{height:32px !important;}body[class] .pcy-abt-hero-logo{padding:8px 14px !important;}}

/* PCY_ABOUT_HERO_CTA_PARITY_v1 - align About hero CTAs to the service/condition hero CTA system (primary already #3DA0A0/6px; align ghost border + min-height + hover). Phone icon via PCY_CTA_PHONE_ICON_v1. */
body[class] .pcy-abt-btn-primary,body[class] .pcy-abt-btn-ghost{min-height:55px !important;}
body[class] .pcy-abt-btn-ghost{border-width:1.6px !important;}
body[class] .pcy-abt-btn-primary:hover{background:#2C8585 !important;transform:translateY(-2px) !important;}
body[class] .pcy-abt-btn-ghost:hover{border-color:#ffffff !important;background:rgba(255,255,255,0.12) !important;transform:translateY(-2px) !important;}

/* PCY_COND_HUB_CTA_PARITY_v1 - Conditions index hero ghost: match system border opacity + hover (primary already aligned). Phone icon via PCY_CTA_PHONE_ICON_v1. */
body[class] .pcy-cond-hub-btn-primary,body[class] .pcy-cond-hub-btn-ghost{min-height:55px !important;}
body[class] .pcy-cond-hub-btn-ghost{border-color:rgba(255,255,255,0.65) !important;}
body[class] .pcy-cond-hub-btn-ghost:hover{border-color:#ffffff !important;background:rgba(255,255,255,0.12) !important;transform:translateY(-2px) !important;}

/* PCY_ABOUT_REVIEWS_HIDE_v1 - hide placeholder/dummy 'What our patients say' reviews (fake 5-star cards w/ developer-replace comment) until real testimonials supplied. Markup preserved; display:none collapses cleanly (no gap). */
body[class] .pcy-abt-reviews{display:none !important;}


/* ===================================================================
   PHONE-ICON CONTEXT COLOUR  (2026-05-21, after Snaglist Pack C)
   =================================================================== */

/* PCY_PHONE_ICON_CONTEXT_COLOUR_v1 - same SVG phone shape, colour adapts to background: red/pink (#E8505B) on dark-navy hero phone buttons, white (#FFFFFF) on teal final-CTA phone buttons. Also closes Pack C gaps: .services-hero/.fees-hero/.contact-hero heroes still rendered the page-CSS emoji because PCY_CTA_PHONE_ICON_v1 only matched .service-hero/.condition-hero. No emoji, no shape/destination/layout change. */
body[class] .services-hero a.btn-outline[href^="tel:"]::before,
body[class] .fees-hero a.btn-outline[href^="tel:"]::before,
body[class] .contact-hero a.btn-outline[href^="tel:"]::before{content:"" !important;display:inline-block !important;width:17px !important;height:17px !important;flex:0 0 auto !important;vertical-align:-3px;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23E8505B' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07A19.5 19.5 0 0 1 4.69 12 19.79 19.79 0 0 1 1.61 3.4 2 2 0 0 1 3.6 1.22h3a2 2 0 0 1 2 1.72c.127.96.361 1.903.7 2.81a2 2 0 0 1-.45 2.11L7.91 8.8a16 16 0 0 0 6.29 6.29l.95-.95a2 2 0 0 1 2.11-.45c.907.339 1.85.573 2.81.7A2 2 0 0 1 22 16.92z'/%3E%3C/svg%3E") no-repeat center/contain !important;}
body[class] .services-hero a.btn-outline[href^="tel:"],
body[class] .fees-hero a.btn-outline[href^="tel:"],
body[class] .contact-hero a.btn-outline[href^="tel:"]{display:inline-flex !important;align-items:center !important;gap:8px !important;}
body[class] .services-hero a.btn-outline[href^="tel:"] svg,
body[class] .fees-hero a.btn-outline[href^="tel:"] svg,
body[class] .contact-hero a.btn-outline[href^="tel:"] svg{display:none !important;}

body[class] .final-cta a.btn-outline[href^="tel:"]::before,
body[class] .pcy-final-btns a.btn-phone[href^="tel:"]::before{background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23FFFFFF' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07A19.5 19.5 0 0 1 4.69 12 19.79 19.79 0 0 1 1.61 3.4 2 2 0 0 1 3.6 1.22h3a2 2 0 0 1 2 1.72c.127.96.361 1.903.7 2.81a2 2 0 0 1-.45 2.11L7.91 8.8a16 16 0 0 0 6.29 6.29l.95-.95a2 2 0 0 1 2.11-.45c.907.339 1.85.573 2.81.7A2 2 0 0 1 22 16.92z'/%3E%3C/svg%3E") no-repeat center/contain !important;}

/* PCY_MOBILE_HEADER_LOGO_SIZE_FIX_v1 — mobile-only regression fix (<=980px): restore a full-size, undistorted header logo and comfortable white-bar padding at burger-menu widths. Frees the logo from Divi default max-width:100% (which was squashing it) and lets its container size to the natural ratio. Desktop header untouched (gated by the media query). */
@media (max-width:1280px){
  body[class] .et-l--header .et_pb_menu__logo img,
  body[class] .et-l--header .et_pb_menu__logo a img{
    height:34px !important;
    width:auto !important;
    max-width:none !important;
    max-height:none !important;
    object-fit:contain !important;
  }
  body[class] .et-l--header .et_pb_menu__logo,
  body[class] .et-l--header .et_pb_menu__logo-wrap{
    width:auto !important;
    max-width:none !important;
  }
  body[class] .et-l--header .et_pb_menu{
    padding-top:14px !important;
    padding-bottom:14px !important;
  }
  body[class] .et-l--header .et_pb_menu_inner_container,
  body[class] .et-l--header .et_pb_menu__wrap{
    align-items:center !important;
  }
}
/* PCY_MOBILE_HEADER_LOGO_SIZE_FIX_v1 — tiny-screen guard: shrink the logo slightly below 360px so it never collides with the burger / forces horizontal scroll. */
@media (max-width:360px){
  body[class] .et-l--header .et_pb_menu__logo img,
  body[class] .et-l--header .et_pb_menu__logo a img{
    height:30px !important;
  }
}

/* PCY_MOBILE_HEADER_STRIP_CENTER_v1 — mobile-only (<=980px): vertically centre the top navy contact strip (email / phone / location) by removing the leftover stacked-column gutter (Divi adds margin-bottom:30px to the column when it stacks on mobile, which pushed the content to the top of the strip) and balancing the strip padding. Desktop strip layout untouched. */
@media (max-width:1280px){
  body[class] .et-l--header .et_pb_section_0_tb_header .et_pb_column{
    margin-bottom:0 !important;
  }
  body[class] .et-l--header .et_pb_row_0_tb_header{
    padding-top:9px !important;
    padding-bottom:9px !important;
  }
}

/* =========================================================================
   PCY_HEADER_CLS_STABILITY_v1
   Fixes the large header layout shift reported by PageSpeed/Lighthouse
   (CLS 0.75 on .et_pb_menu__wrap; minor shifts on logo / menu / a::after).
   Root cause: Divi serves the Theme-Builder header styling in a DEFERRED
   stylesheet and the ETmodules icon webfont loads after first paint, so the
   header is briefly unsized then snaps into place. This plugin stylesheet is
   render-blocking, so reserving the final header geometry here holds the
   space from first paint. Values mirror the already-rendered header
   (desktop bar 76px, zero padding; logo 1498x200 -> 42px tall; mobile logo
   34px set by PCY_MOBILE_HEADER_LOGO_SIZE_FIX_). Nav stays DM Sans 500.
   Design unchanged; idempotent (re-applying overwrites identical rules). */
@media (min-width:1281px){
  /* Reserve the desktop menu-bar height so it cannot collapse/expand when
     the deferred Divi CSS arrives. Module = wrap = menu = 76px, no padding. */
  .et-l--header .et_pb_menu_0_tb_header.et_pb_menu,
  .et-l--header .et_pb_menu__wrap,
  .et-l--header .et_pb_menu__menu{ min-height:76px; }
  /* Enforce the horizontal nav pre-deferred so links cannot flash stacked. */
  .et-l--header .et_pb_menu__menu{ display:flex; }
  .et-l--header #menu-main-menu{ display:flex; flex-wrap:nowrap; }
  /* Cap the logo so it cannot paint full-size before the deferred CSS sizes
     it; aspect-ratio matches the image width/height attributes. */
  .et-l--header .et_pb_menu__logo img{
    height:42px; width:auto; max-width:none;
  }
}
/* Lock nav typography to brand metrics so a font swap cannot reflow height. */
.et-l--header #menu-main-menu > li > a{
  font-family:"DM Sans", sans-serif; line-height:14px;
}
/* The menu hover-underline / dropdown-arrow ::after is drawn by Divi in the
   ETmodules icon font; its measured shift is <0.01 (within CLS windowing) so
   it is deliberately NOT repositioned here. Forcing it out of flow displaced
   the dropdown carets, so arrow/underline placement is left to Divi. */
@media (max-width:1280px){
  /* Reserve the mobile bar height (logo 34px + 14px top padding = 48px floor;
     stays at or below natural height, so no gap is introduced). */
  .et-l--header .et_pb_menu_0_tb_header.et_pb_menu{ min-height:48px; }
}

/* =========================================================================
   PCY_IMG_DIMS_RESERVE_v1
   Reserves intrinsic aspect-ratio for the white footer logo, which lives in
   the Divi Theme-Builder footer (REST-walled, so a height attribute cannot be
   added without the Visual Builder). The <img> already carries width=280 but
   no height; aspect-ratio holds its box from first paint (no CLS, no visual
   change: 280w / (1498:200) = 37.4px, identical to current render). Idempotent. */
.et-l--footer img[src*="podiatry-clinics-logo-white"]{ aspect-ratio:1498 / 200; height:auto; }


/* _________________________________________________________________________
   PCY_MOBILE_MENU_SUBMENU_FIX_v1
   Mobile-only (<=980px) clean accordion for the header mobile menu.
   After the D4->D5 migration the orphaned ".dfh-*" custom CSS still hid the
   sub-menu items and rendered a stray ETmodules icon on each parent row, but
   the "dfh" toggle script that used to reveal them is no longer loaded -> the
   rows showed redundant icons and the submenu could not open. This removes the
   leftover icon and, paired with a small scoped script (same marker, in
   podiatry-site-core.php), gives ONE chevron toggle per parent row driven by a
   .pcy-open class. Parent links keep navigating to their pages (URLs unchanged);
   the chevron is a separate ~56px full-row tap target. Desktop nav untouched.
   ------------------------------------------------------------------------- */
.pcy-submenu-toggle{ display:none; }

@media (max-width: 1280px){
  /* 1. Remove leftover dfh/Divi icon(s) on parent rows (dfh content has no
        !important, so content:none wins) so only our single chevron shows. */
  .et_pb_menu .et_mobile_menu .menu-item-has-children > a::after{ content:none !important; }
  .et_pb_menu .et_mobile_menu .menu-item-has-children > .dfh-menu-switched-icon{ display:none !important; }

  /* 2. Parent row = link (fills) + chevron toggle; sub-menu wraps to its own line. */
  .et_pb_menu .et_mobile_menu .menu-item-has-children{ display:flex; flex-wrap:wrap; align-items:stretch; position:relative; }
  .et_pb_menu .et_mobile_menu .menu-item-has-children > a{ flex:1 1 auto; min-width:0; }

  /* 3. Single chevron toggle: comfortable ~56px x full-row tap target. */
  .et_pb_menu .et_mobile_menu .menu-item-has-children > .pcy-submenu-toggle{
    display:flex; align-items:center; justify-content:center;
    flex:0 0 56px; align-self:stretch; min-height:44px;
    margin:0; padding:0; background:transparent; border:0;
    -webkit-appearance:none; appearance:none; cursor:pointer;
    color:#3DA0A0; line-height:1;
  }
  .et_pb_menu .et_mobile_menu .menu-item-has-children > .pcy-submenu-toggle::after{
    content:"3"; font-family:"ETmodules"; font-size:18px; font-weight:normal; font-style:normal;
    speak:none; -webkit-font-smoothing:antialiased; -moz-osx-font-smoothing:grayscale;
    line-height:1; display:block; transition:transform .2s ease;
  }
  .et_pb_menu .et_mobile_menu .menu-item-has-children.pcy-open > .pcy-submenu-toggle::after{ transform:rotate(180deg); }

  /* 4. Sub-menu open/close driven solely by .pcy-open (not the missing dfh script). */
  .et_pb_menu .et_mobile_menu .menu-item-has-children > .sub-menu{
    flex:0 0 100%; width:100%; display:none !important; list-style:none !important; margin:0; padding:0;
  }
  .et_pb_menu .et_mobile_menu .menu-item-has-children.pcy-open > .sub-menu{ display:block !important; }
  .et_pb_menu .et_mobile_menu .menu-item-has-children.pcy-open > .sub-menu > li{ display:block !important; }

  /* 5. Expanded sub-items: indented, readable, on-brand (DM Sans inherited, navy text). */
  .et_pb_menu .et_mobile_menu .menu-item-has-children > .sub-menu > li > a{
    display:block; padding:11px 18px 11px 34px; font-size:14px; line-height:1.3; color:#2C3E50;
  }
}


/* =========================================================================
   PCY_HEADER_COMPACT_BREAKPOINT_v1  (header containment fix, 2026-05-31)
   The CLS-stability rule above used to force the full desktop nav at every
   width >=981px (display:flex + flex-wrap:nowrap on #menu-main-menu), which
   overrode Divi's responsive collapse and kept the cramped desktop header at
   tablet/laptop widths (e.g. 1024px) -> the logo wordmark ("Clinics") and the
   Book/Enquire CTA were clipped. We now switch to the compact (burger) header
   at <=1280px and only run the full desktop header at >=1281px, where it
   actually fits. Authoritative + !important so it does not depend on Divi's
   regenerable Theme-Builder dynamic CSS (a stale cached breakpoint was the
   trigger). No redesign: same logo asset, same menu, same colours/fonts; the
   <=1280px mobile logo sizing, contact-strip centring and submenu accordion
   markers are all gated to the same 1280px so the burger menu + chevron
   accordion work across the whole compact range. */
@media (max-width:1280px){
  body[class] .et-l--header .et_pb_menu__menu{ display:none !important; }
  body[class] .et-l--header .et_mobile_nav_menu{ display:block !important; }
}
@media (min-width:1281px){
  body[class] .et-l--header .et_pb_menu__menu{ display:flex !important; }
  body[class] .et-l--header .et_mobile_nav_menu{ display:none !important; }
}

/* PCY_HEADER_COMPACT_BREAKPOINT_v1.1 (2026-05-31) — left-align mobile menu items across the whole compact range. The menu module's alignment is text-align:right (desktop nav sits right, by the Book/Enquire button), which cascades into .et_mobile_menu; Divi only left-aligns the burger menu at <=980px, so in the new 981-1280px compact slice the items inherited right alignment. Force left to match the <=980px behaviour. No structural/colour/font change. */
@media (max-width:1280px){
  body[class] .et-l--header .et_mobile_nav_menu,
  body[class] .et-l--header .et_mobile_menu,
  body[class] .et-l--header .et_mobile_menu li > a{ text-align:left !important; }
}

/* PCY_HEADER_COMPACT_BREAKPOINT_v1.2 (2026-06-15) — kill list bullets on the opened
   burger menu across the whole compact range (981–1280px). When the compact breakpoint
   was extended from Divi's native <=980px to <=1280px (v1/v1.1), Divi's native mobile-menu
   list-style reset did not apply in the new 981–1280px slice, so the opened menu showed
   default disc bullets + the left indentation that hangs them. This re-asserts the reset
   for the menu <ul>, every <li>, and nested submenu <ul>/<li>, and zeroes the list
   margin/padding that creates the bullet hang-indent. Left alignment (v1.1) and the single
   chevron accordion (section above) are untouched; nothing changes at >=1281px. */
@media (max-width:1280px){
  body[class] .et-l--header .et_mobile_menu,
  body[class] .et-l--header .et_mobile_menu ul,
  body[class] .et-l--header .et_mobile_menu li,
  body[class] .et-l--header .et_mobile_menu .sub-menu,
  body[class] .et-l--header .et_mobile_menu .sub-menu li{
    list-style:none !important;
    list-style-type:none !important;
  }
  body[class] .et-l--header .et_mobile_menu,
  body[class] .et-l--header .et_mobile_menu ul,
  body[class] .et-l--header .et_mobile_menu .sub-menu{
    margin-left:0 !important;
    padding-left:0 !important;
  }
  body[class] .et-l--header .et_mobile_menu li::marker,
  body[class] .et-l--header .et_mobile_menu li::before{
    content:"" !important;
  }
}

/* PCY_HEADER_COMPACT_BREAKPOINT_v1.3 (2026-06-15) — make the opened burger menu
   scrollable across the compact range (<=1280px). The mobile menu drops down as a
   position:absolute panel (z-index 9999) with no max-height/overflow, so when Services
   or Conditions submenus expand, the panel runs past the bottom of the viewport with
   nothing to scroll. On a phone the page itself scrolls so you can still reach the items;
   on desktop/laptop, once Divi's sticky header pins the bar near the top, the panel is
   anchored to it and the overflow is unreachable. Cap the panel to the viewport height
   (minus a generous header allowance covering the contact strip + menu bar) and let it
   scroll internally. overscroll-behavior:contain stops the page scrolling behind it.
   Only the compact .et_mobile_menu is affected; the >=1281px desktop nav (which uses
   .et_pb_menu__menu and its own dropdowns) is untouched. */
@media (max-width:1280px){
  body[class] .et-l--header .et_mobile_menu{
    max-height:calc(100vh - 120px) !important;
    overflow-y:auto !important;
    overscroll-behavior:contain;
    -webkit-overflow-scrolling:touch;
  }
}

/* =========================================================================
   PCY_HEADER_LOGO_SIZE_TUNE_v1 (2026-06-26) — desktop header logo clip fix.
   Root cause (confirmed live across 1290-1500px): the Divi logo box
   .et_pb_menu__logo has overflow:hidden + flex-shrink:1, so as the full desktop
   nav (forced on at >=1281px) competes with the logo in the menu flex row, the
   logo BOX shrinks (it does NOT scale the image) and overflow:hidden CROPS the
   wordmark — e.g. "PODIATRY CLINICS" -> "PODIATRY CLIN" on a ~1440px MacBook
   (24px cropped), worse at 1366px (41px) and 1290px (58px). Fix is gated to the
   full-desktop range only (>=1281px); the compact/burger header at <=1280px and
   the PCY_MOBILE_HEADER_LOGO_SIZE_FIX_v1 logo are untouched:
     1) trim the rendered logo to ~262px wide (height 35px at the 1498:200
        ratio) so it needs less room and stays balanced beside the nav;
     2) stop the logo box + wrap from shrinking (flex-shrink:0) and from cropping
        (overflow:visible, width:auto, max-width:none) so the wordmark can never
        be clipped again at any width or browser zoom.
   Placed last so it beats PCY_HEADER_CLS_STABILITY_v1 (img height:42px) and the
   Divi Theme-Builder dynamic CSS. No asset/colour/font/redesign change. */
@media (min-width:1281px){
  body[class] .et-l--header .et_pb_menu__logo img,
  body[class] .et-l--header .et_pb_menu__logo a img,
  body[class] .et-l--header .et_pb_menu__logo-wrap img{
    height:35px !important;
    width:auto !important;
    max-width:none !important;
    max-height:none !important;
    object-fit:contain !important;
  }
  body[class] .et-l--header .et_pb_menu__logo,
  body[class] .et-l--header .et_pb_menu__logo-wrap{
    overflow:visible !important;
    flex-shrink:0 !important;
    width:auto !important;
    max-width:none !important;
  }
}


/* =========================================================================
   PCY_SERVICE_OVERFLOW_FIX_v1 (2026-06-26) — remove the ~8px horizontal scroll
   on the two raw-HTML service pages (Ultrasound 90570, Lower-Limb Rehab 90568).
   Root cause (confirmed live across 390–1440px): both pages are built as raw
   HTML inside a Divi .et_pb_code module, whose inline CSS forces every <section>
   full-bleed via `.et_pb_code section{width:100vw;margin-left:calc(50% - 50vw)}`.
   100vw INCLUDES the vertical-scrollbar gutter, so each coloured band renders
   ~8px wider than the client area and overshoots the right edge -> a small
   page-wide horizontal scrollbar. D5-block service pages (e.g. Chiropody 90264)
   don't wrap sections in .et_pb_code, so they never get the 100vw rule and are
   unaffected — which is exactly why only these two pages scroll.
   Fix: clip the harmless scrollbar-gutter overshoot at the page-body wrapper
   (.entry-content), scoped to these two page IDs only. overflow-x:clip (not
   hidden) does NOT create a scroll container and leaves the vertical axis
   untouched, so sticky/scroll behaviour is preserved. The full-bleed bands still
   paint edge-to-edge across the visible viewport; only the few px sitting under
   the scrollbar gutter are trimmed -> zero visible layout change. Mirrors the
   existing PCY_FOOTER_NO_HSCROLL_v1 approach. Header/nav/mobile-menu/footer are
   separate Theme Builder layouts and are not matched by this selector. */
body.page-id-90570 .entry-content,
body.page-id-90568 .entry-content{overflow-x:clip;}

/* ============================================================
   PCY_CLINIC_HERO_SPLIT_v2  (2026-06-26)
   Single-clinic split hero — durable rebuild.
   The original split lived in TB body 90427 and keyed off Divi
   auto-index classes; a TB re-save renumbered the modules so the
   in-template clone/grid/hide stopped matching and the featured
   image regressed to a standalone block under the hero. This block
   pairs with pcy_core_clinic_hero_split_js() (plugin) which clones
   the featured image into <figure class="pcy-clinic-hero-media">
   inside the hero row using stable hooks only, then tags the source
   with .pcy-clinic-hero-src-hidden. Lives in the plugin so it
   survives future TB re-saves. Typography/colours inherit the global
   DM Serif Display / DM Sans + teal/navy system (nothing overridden).
   ============================================================ */
/* Desktop: hero row -> 2 columns (text left, image right). Gated on the
   media figure so a clinic with no featured image keeps a single text column. */
body.single-clinic .et-l--body .et_pb_row:has(> .pcy-clinic-hero-media){
  display:grid !important;
  grid-template-columns:1.05fr .95fr;
  gap:48px;
  align-items:center;
}
body.single-clinic .et-l--body .et_pb_row:has(> .pcy-clinic-hero-media) > .et_pb_column{
  width:auto !important;
  margin:0 !important;
  float:none !important;
}
body.single-clinic .pcy-clinic-hero-media{
  margin:0;
  align-self:center;
}
body.single-clinic .pcy-clinic-hero-media img{
  display:block;
  width:100%;
  aspect-ratio:16 / 10;
  object-fit:cover;
  border-radius:14px;
  box-shadow:0 18px 40px rgba(0,0,0,.28);
}
/* Hide the original standalone featured-image module (clone source) */
body.single-clinic .et-l--body .pcy-clinic-hero-src-hidden{
  display:none !important;
}
/* Mobile/tablet: stack cleanly — text first, image below, constrained, no h-scroll */
@media (max-width:980px){
  body.single-clinic .et-l--body .et_pb_row:has(> .pcy-clinic-hero-media){
    grid-template-columns:1fr;
    gap:26px;
  }
  body.single-clinic .et-l--body .et_pb_row:has(> .pcy-clinic-hero-media) > .et_pb_column{
    order:1;
  }
  body.single-clinic .pcy-clinic-hero-media{
    order:2;
    max-width:88vw;
    margin:0 auto;
  }
}

/* ============================================================
   PCY_CLINIC_IMG_OBJPOS_v1  (2026-07-02)
   Per-clinic crop position for the reused clinic photos. Both the
   single-clinic split hero (.pcy-clinic-hero-media img) and the clinic
   cards (.pcy-clinic-card__img) use object-fit:cover on the same 16/10
   box and previously defaulted to object-position 50% 50%, which clipped
   the York shopfront fascia ("PODIATRY CLINICS" sign + website + phone).
   Bias each clinic's crop so its key subject stays in frame. Hooked on the
   image src (each featured-image filename carries the clinic slug, e.g.
   york-clinic*.jpg) so ONE rule covers every place the photo is reused:
   the /clinics/ archive cards, the single-clinic hero, and the
   "Other Clinic Locations" cards on individual clinic pages. No Divi
   auto-index or slug body classes are used (the clinic CPT singles expose
   only body.single-clinic + postid-*, not a slug class), so this survives
   Theme Builder re-saves and card re-renders. object-fit stays cover, so
   images still fill their box with no stretching/distortion.
   ============================================================ */
/* York - shopfront: preserve the full fascia sign, website + phone (top of frame) */
.pcy-clinic-hero-media img[src*="york-clinic"],
.pcy-clinic-card__img[src*="york-clinic"]{ object-position:50% 0% !important; }

/* Leeds - street exterior */
.pcy-clinic-hero-media img[src*="leeds-clinic"],
.pcy-clinic-card__img[src*="leeds-clinic"]{ object-position:50% 45% !important; }

/* Wetherby - interior reception (wall sign sits upper-centre) */
.pcy-clinic-hero-media img[src*="wetherby-clinic"],
.pcy-clinic-card__img[src*="wetherby-clinic"]{ object-position:50% 45% !important; }

/* Wharfedale - stone-front entrance */
.pcy-clinic-hero-media img[src*="wharfedale-clinic"],
.pcy-clinic-card__img[src*="wharfedale-clinic"]{ object-position:50% 45% !important; }
