/* ============ design tokens (Sheet A palette + B ink, approved 7/20) ============ */
:root:root {
  --ww-coral: #C94D97; /* v4: bright pink accent (was coral) */
  --ww-navy: #1B2F5C;
  --ww-gold: #FBE179;
  --ww-pink: #C94C97;
  --ww-macaw: #C94C97;
  --ww-pinkbright: #C94D97;
  --ww-orange: #FCA861;
  --ww-plum: #27133C;
  --ww-ink: #241F2E;
  --ww-blush: #FAE4E9;
  --ww-peach: #FBEDE2;
  --ww-grad-primary: linear-gradient(90deg, #C94D97 0%, #C94D97 100%); /* v4: solid bright pink */
}

/* ============================================================
   WANDERING WINGS — homepage design system (Concept D)
   Pring Design · built from Figma "Wandering Wings — Landing Concepts"
   Fonts: Cormorant Garamond (display) · Jost (body) · Marcellus (caps)
   ============================================================ */

/* ---------- base / resets on the blank Divi canvas ---------- */
.ww-page, .ww-page * { box-sizing: border-box; }
.ww-page { font-family: 'Jost', sans-serif; color: var(--ww-ink); overflow-x: clip; }
.ww-page img { max-width: 100%; display: block; }
.ww-page a { text-decoration: none; color: inherit; }
.ww-section { position: relative; }
.ww-wrap { max-width: 1240px; margin: 0 auto; padding: 0 100px; }
@media (max-width: 980px) { .ww-wrap { padding: 0 24px; } }

/* Divi code module cleanup */
.et_pb_code_inner { display: block; }

.ww-eyebrow { font: 700 13px/1.4 'Jost', sans-serif; letter-spacing: .26em; color: var(--ww-coral); text-transform: uppercase; }
.ww-h2 { font: 500 42px/1.18 'Cormorant Garamond', serif; color: var(--ww-navy); margin: 0; }
.ww-body { font: 400 15.5px/1.68 'Jost', sans-serif; color: #2E2044; }
.ww-link { font: 700 15px/1 'Jost', sans-serif; color: var(--ww-coral); }
.ww-link:hover { color: var(--ww-pink); }

/* ---------- buttons ---------- */
.ww-btn { display: inline-flex; align-items: center; justify-content: center; white-space: nowrap; border-radius: 999px; font: 700 15px/1 'Jost', sans-serif; padding: 16px 32px; transition: transform .18s ease, box-shadow .18s ease; }
.ww-btn:hover { transform: translateY(-2px); }
.ww-btn--primary { background: var(--ww-grad-primary); color: #fff; box-shadow: 0 12px 28px -6px rgba(201,76,151,.26); }
.ww-btn--primary:hover { box-shadow: 0 16px 34px -6px rgba(201,76,151,.38); color:#fff; }
.ww-btn--glass { background: rgba(255,255,255,.55); border: 1.2px solid rgba(27,47,92,.45); color: var(--ww-navy); backdrop-filter: blur(14px); -webkit-backdrop-filter: blur(14px); }

/* ---------- utility bar ---------- */
.ww-util { background: var(--ww-macaw); color:#fff; font: 500 12.5px/1 'Jost',sans-serif; }
.ww-util .ww-util-in { display:flex; justify-content:space-between; align-items:center; padding: 9px 80px; }
.ww-util b { font-weight: 700; }
@media (max-width: 980px){ .ww-util .ww-util-in { padding: 8px 24px; justify-content:center; } .ww-util .ww-util-left { display:none; } }

/* ---------- hero ---------- */
.ww-hero { background: linear-gradient(180deg,#FBEDE2 0%, #FDF5EC 60%, #FFFFFF 100%); position: relative; overflow: clip; padding: 332px 0 96px; }
.ww-hero::before, .ww-hero::after { content:""; position:absolute; border-radius:50%; filter: blur(120px); pointer-events:none; }
.ww-hero::before { width:480px; height:480px; background: rgba(251,225,121,.38); top:-190px; left:-120px; }
.ww-hero::after { width:460px; height:460px; background: rgba(252,168,97,.20); top:-100px; right:-110px; }
.ww-hero-in { position: relative; z-index: 2; display:flex; flex-direction:column; align-items:center; text-align:center; }

/* floating glass nav */
.ww-nav { position: absolute; top: 18px; left: 50%; transform: translateX(-50%); z-index: 30; display:flex; align-items:center; gap: 26px; padding: 14px 14px 14px 34px; border-radius:999px; background: rgba(255,255,255,.66); border:1px solid rgba(255,255,255,.85); backdrop-filter: blur(28px); -webkit-backdrop-filter: blur(28px); box-shadow: 0 2px 6px -1px rgba(74,13,44,.06), 0 20px 48px -12px rgba(156,58,116,.16); }
.ww-nav a.ww-nav-link { font: 700 14px/1 'Jost',sans-serif; color: var(--ww-navy); white-space:nowrap; }
.ww-nav a.ww-nav-link:hover { color: var(--ww-coral); }
.ww-nav .ww-wordmark { font: 600 italic 26px/1 'Cormorant Garamond', serif; color: var(--ww-coral); white-space:nowrap; padding: 0 6px; }
.ww-nav .ww-btn { padding: 12px 22px; font-size: 13.5px; }
.ww-burger { display:none; }

/* hero content */
.ww-hero-logo { width: 132px; height: auto; margin-bottom: 22px; }
.ww-hero-rule { width: 72px; height: 2px; margin: 16px auto 20px; background: linear-gradient(90deg,#FBE179,#FCA861,#C94C97); border-radius: 2px; }
.ww-h1 { font: 500 58px/1.14 'Cormorant Garamond', serif; color: var(--ww-navy); margin: 0; max-width: 900px; }
.ww-h1 em { font-style: italic; font-weight: 700; }
.ww-hero-sub { margin: 22px auto 26px; max-width: 560px; font: 400 16.5px/1.62 'Jost',sans-serif; color: #2E2044; }
.ww-hero-ctas { display:flex; gap:16px; justify-content:center; margin-bottom: 46px; }

/* video card */
.ww-video { position: relative; width: min(1040px, 100%); border-radius: 28px; overflow:hidden; box-shadow: 0 24px 60px -12px rgba(156,58,116,.28), inset 0 0 0 1px rgba(255,255,255,.35); }
.ww-video img.ww-video-img { width:100%; height:540px; object-fit: cover; }
.ww-video::after { content:""; position:absolute; inset:0; background: linear-gradient(180deg, rgba(42,12,34,0) 55%, rgba(42,12,34,.62) 100%); }
.ww-play { position:absolute; z-index:3; top:50%; left:50%; transform: translate(-50%,-50%); width:92px; height:92px; border-radius:50%; background: rgba(255,255,255,.8); border:1.5px solid rgba(255,255,255,.9); backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px); box-shadow: 0 10px 28px -4px rgba(40,10,33,.30); display:flex; align-items:center; justify-content:center; cursor:pointer; transition: transform .18s ease; }
.ww-play:hover { transform: translate(-50%,-50%) scale(1.06); }
.ww-play svg { margin-left: 5px; }
.ww-video-chip { position:absolute; z-index:3; left:28px; bottom:24px; display:inline-flex; padding:10px 18px; border-radius:999px; background: rgba(255,255,255,.16); border:1px solid rgba(255,255,255,.35); backdrop-filter: blur(16px); -webkit-backdrop-filter: blur(16px); color:#fff; font: 700 12px/1 'Jost',sans-serif; letter-spacing:.08em; }

/* ---------- values strip ---------- */
.ww-values { background: var(--ww-macaw); }
.ww-values-in { display:flex; align-items:center; justify-content:center; gap:22px; padding: 0; }
.ww-values span { font: 400 17px/1 'Marcellus', serif; letter-spacing:.3em; color: #fff; }
.ww-values i { width:6px; height:6px; border-radius:50%; display:inline-block; }
.ww-values i.gold { background:#fff; } .ww-values i.orange { background:#fff; }

/* ---------- how we care ---------- */
.ww-care { background: url(images/ww-deco-birdtracks.svg?v=3) left 60px top 103px / 172px auto no-repeat, url(images/ww-deco-paws.svg?v=3) right 72px top 50px / 241px auto no-repeat, linear-gradient(180deg,#FFFFFF 0%, #FCEEE9 55%, #FAE4E9 100%); position:relative; overflow:clip; padding: 112px 0 148px; }
.ww-care::before { content:""; position:absolute; width:520px; height:520px; border-radius:50%; background: rgba(201,76,151,.12); filter:blur(110px); right:-140px; top:60px; }
.ww-care::after { content:""; position:absolute; width:520px; height:520px; border-radius:50%; background: rgba(251,225,121,.20); filter:blur(110px); left:-140px; bottom:40px; }
.ww-care-head { text-align:center; margin-bottom: 46px; position:relative; z-index:2; }
.ww-care-grid { display:grid; grid-template-columns: repeat(3, minmax(0,1fr)); gap: 28px; position:relative; z-index:2; }
.ww-card { background: rgba(255,255,255,.60); border: 1.2px solid rgba(255,255,255,.95); border-radius: 22px; padding: 38px 30px; backdrop-filter: blur(24px); -webkit-backdrop-filter: blur(24px); box-shadow: 0 16px 38px -10px rgba(156,58,116,.13); transition: transform .2s ease, box-shadow .2s ease; }
.ww-card:hover { transform: translateY(-4px); box-shadow: 0 24px 48px -10px rgba(156,58,116,.20); }
.ww-card .ww-icon { width:64px; height:64px; margin-bottom: 6px; filter: drop-shadow(0 8px 18px rgba(201,76,151,.30)); }
.ww-card h3 { font: 600 26px/1.2 'Cormorant Garamond', serif; color: var(--ww-navy); margin: 12px 0 10px; }
.ww-card p { font: 400 14.5px/1.6 'Jost',sans-serif; color: #2E2044; margin: 0 0 16px; }

/* ---------- swoosh + van ---------- */
.ww-van { background: linear-gradient(180deg,#FFFFFF 0%, #FDF0F6 100%); position: relative; padding: 150px 0 112px; margin-top: -58px; }
.ww-swoosh { position:absolute; top:0; left:0; width:100%; height:130px; pointer-events:none; }
.ww-van-grid { display:grid; grid-template-columns: 1.05fr 1fr; gap: 72px; align-items:center; position:relative; z-index:2; }
.ww-van-img { border-radius: 24px; box-shadow: 0 20px 48px -12px rgba(156,58,116,.18); }
.ww-van-txt .ww-h2 { font-size: 38px; margin: 14px 0 16px; }

/* ---------- species ---------- */
.ww-species { background: linear-gradient(180deg,#FDF0F6 0%, #FBE9F2 100%); padding: 8px 0 132px; }
.ww-species-card { background: rgba(255,255,255,.62); border:1.2px solid rgba(255,255,255,.95); border-radius: 32px; padding: 60px 64px; backdrop-filter: blur(28px); -webkit-backdrop-filter: blur(28px); box-shadow: 0 22px 52px -14px rgba(156,58,116,.14); text-align:center; }
.ww-species-card .ww-h2 { font-size: 36px; margin-bottom: 38px; }
.ww-medallions { display:flex; justify-content:center; gap: 22px; flex-wrap:wrap; margin-bottom: 34px; }
.ww-med { width: 130px; }
.ww-med img { width:108px; height:108px; border-radius:50%; object-fit:cover; margin:0 auto 14px; border: 4px solid #fff; box-shadow: 0 10px 24px -4px rgba(156,58,116,.16); }
.ww-med span { font: 700 13.5px/1.35 'Jost',sans-serif; color: var(--ww-navy); display:block; }

/* ---------- quote ---------- */
.ww-quote { background: url(images/ww-deco-feather-l1.svg?v=3) left 167px top 168px / 150px auto no-repeat, url(images/ww-deco-feather-l2.svg?v=3) left 141px top 305px / 171px auto no-repeat, url(images/ww-deco-feather-r.svg?v=3) right -45px top 230px / 119px auto no-repeat, linear-gradient(180deg,#F8DFEC 0%,#FCF0F6 42%,#FFFFFF 100%); position:relative; overflow:clip; text-align:center; padding: 104px 0 108px; }
.ww-quote::before { content:""; position:absolute; width:600px; height:360px; border-radius:50%; background: rgba(251,225,121,.16); filter:blur(95px); left:50%; transform:translateX(-38%); top:-60px; }
.ww-quote::after { content:""; position:absolute; width:562px; height:360px; border-radius:50%; background: rgba(156,58,116,.10); filter:blur(150px); right:-90px; bottom:-160px; }
.ww-quote-mark { font: 600 175px/0.62 'Cormorant Garamond', serif; background: linear-gradient(135deg,#FBE179,#FCA861,#C94C97); -webkit-background-clip:text; background-clip:text; color:transparent; display:block; margin-bottom: 6px; position:relative; z-index:2; }
.ww-quote blockquote { border: 0; padding: 0; font: 300 40px/1.42 'Cormorant Garamond', serif; color: var(--ww-navy); margin: 0 auto 18px; max-width: 760px; position:relative; z-index:2; }
.ww-quote cite { font: 400 13px/1 'Marcellus', serif; letter-spacing:.22em; color: var(--ww-coral); font-style:normal; position:relative; z-index:2; }

/* ---------- conservation ---------- */
.ww-cons { padding: 112px 0; }
.ww-cons-grid { display:grid; grid-template-columns: 1fr 1.05fr; gap: 72px; align-items:center; }
.ww-cons-img { border-radius: 24px; box-shadow: 0 20px 48px -12px rgba(156,58,116,.16); }
.ww-cons-txt .ww-h2 { font-size: 38px; margin: 14px 0 16px; }

/* ---------- membership ---------- */
.ww-mem { background: var(--ww-pinkbright); position:relative; overflow:clip; padding: 120px 0; }
.ww-mem::before { content:""; position:absolute; width:760px; height:420px; border-radius:50%; background: rgba(227,190,127,.13); filter:blur(120px); right:-120px; top:-160px; }
.ww-mem::after { content:""; position:absolute; width:520px; height:520px; border-radius:50%; background: rgba(198,135,174,.10); filter:blur(120px); left:-140px; bottom:-120px; }
.ww-mem-frame { position:relative; z-index:2; border: 1px solid rgba(255,255,255,.55); background: rgba(255,255,255,.045); border-radius: 4px; padding: 64px 72px; display:flex; flex-direction:column; align-items:center; text-align:center; gap: 26px; }
.ww-mem-frame .ww-eyebrow { color:#fff; letter-spacing:.32em; }
.ww-mem-frame h2 { font: 300 42px/1.2 'Cormorant Garamond', serif; color:#fff; margin:0; }
.ww-mem-micro { font: 400 13px/1.6 'Marcellus', serif; letter-spacing:.26em; color:rgba(255,255,255,.92); max-width: 680px; }
.ww-perks { display:flex; align-items:center; gap: 0; padding: 16px 0 8px; }
.ww-perk { padding: 0 36px; display:flex; flex-direction:column; align-items:center; gap: 9px; }
.ww-perk h4 { font: 600 19px/1.2 'Cormorant Garamond', serif; color:#fff; margin:0; }
.ww-perk p { font: 400 14px/1.55 'Jost',sans-serif; color:rgba(255,255,255,.92); opacity:.9; margin:0; max-width: 270px; }
.ww-perk-sep { width:1px; height:64px; background: rgba(255,255,255,.45); }
.ww-mem-ctas { display:flex; align-items:center; gap: 28px; }
.ww-btn--champagne { background: #fff; color: var(--ww-pinkbright); }
.ww-mem-link { font: 500 14.5px/1 'Jost',sans-serif; color: rgba(255,255,255,.85); }
.ww-mem-link:hover { color:#fff; }

/* ---------- seam + footer ---------- */
.ww-footer { background: #27133C; color:#fff; padding: 104px 0 72px; }
.ww-footer-grid { display:flex; gap: 130px; }
.ww-footer .ww-fwordmark { font: 600 italic 30px/1 'Cormorant Garamond', serif; color:#fff; }
.ww-footer .ww-fcaps { font: 400 12px/1 'Marcellus', serif; letter-spacing:.3em; color:#E3BE7F; margin: 10px 0 8px; }
.ww-footer .ww-fvalues { font: 700 11.5px/1 'Jost',sans-serif; letter-spacing:.2em; color: rgba(255,255,255,.65); }
.ww-fcol h5 { font: 700 12px/1 'Jost',sans-serif; letter-spacing:.22em; color:#E3BE7F; margin: 0 0 14px; }
.ww-fcol a { display:block; font: 500 14px/1 'Jost',sans-serif; color: rgba(255,255,255,.85); margin-bottom: 11px; }
.ww-fcol a:hover { color:#fff; }
.ww-fbottom { background:#27133C; }
.ww-fbottom-in { display:flex; justify-content:space-between; padding: 28px 100px 64px; font: 500 12px/1 'Jost',sans-serif; color: rgba(255,255,255,.55); }

/* ============================================================
   MOBILE — per Figma "Mobile — Concept D" (390 spec)
   ============================================================ */
@media (max-width: 980px) {
  .ww-nav { gap: 12px; padding: 10px 12px 10px 20px; top: 14px; width: calc(100% - 48px); justify-content: space-between; }
  .ww-nav a.ww-nav-link { display: none; }
  .ww-nav .ww-wordmark { font-size: 21px; }
  .ww-nav .ww-btn { padding: 9px 16px; font-size: 12px; }
  .ww-burger { display:flex; flex-direction:column; gap:4px; padding: 6px 4px; background:none; border:none; cursor:pointer; }
  .ww-burger i { width:20px; height:2.2px; border-radius:2px; background: var(--ww-navy); display:block; }
  .ww-mobile-menu { display:none; position:fixed; inset:0; z-index:99; background: rgba(253,245,236,.97); backdrop-filter: blur(20px); -webkit-backdrop-filter: blur(20px); padding: 110px 32px 40px; flex-direction:column; gap: 8px; }
  .ww-mobile-menu.open { display:flex; }
  .ww-mobile-menu a { font: 500 28px/2 'Cormorant Garamond', serif; color: var(--ww-navy); border-bottom: 1px solid rgba(27,47,92,.08); }
  .ww-mobile-close { position:absolute; top:24px; right:24px; font: 400 34px/1 'Jost',sans-serif; color: var(--ww-navy); background:none; border:none; }

  .ww-hero { padding: 128px 0 64px; }
  .ww-hero-logo { width: 96px; margin-bottom: 16px; }
  .ww-h1 { font-size: 27.5px; max-width: 342px; }
  .ww-hero-sub { font-size: 14px; margin: 16px auto 20px; max-width: 330px; }
  .ww-hero-ctas { flex-direction: column; width: 100%; padding: 0 24px; gap: 12px; margin-bottom: 34px; }
  .ww-hero-ctas .ww-btn { width: 100%; }
  .ww-video { border-radius: 20px; width: 100%; }
  .ww-video img.ww-video-img { height: 214px; }
  .ww-play { width: 64px; height: 64px; }
  .ww-play svg { width: 20px; height: 20px; }
  .ww-video-chip { left: 14px; bottom: 14px; font-size: 11px; padding: 8px 14px; }

  .ww-values-in { gap: 12px; padding: 22px 16px; }
  .ww-values span { font-size: 12px; letter-spacing: .2em; }
  .ww-values i { width:5px; height:5px; }

  .ww-care { padding: 64px 0 96px; }
  .ww-care-grid { grid-template-columns: 1fr; gap: 16px; }
  .ww-card { padding: 28px 24px; }
  .ww-card .ww-icon { width: 48px; height: 48px; }
  .ww-h2 { font-size: 28px; }

  .ww-van { padding: 92px 0 64px; margin-top: -34px; }
  .ww-swoosh { height: 58px; }
  .ww-van-grid { grid-template-columns: 1fr; gap: 24px; }
  .ww-van-txt .ww-h2, .ww-cons-txt .ww-h2 { font-size: 26px; }

  .ww-species { padding: 8px 0 72px; }
  .ww-species-card { padding: 36px 20px; border-radius: 24px; }
  .ww-species-card .ww-h2 { margin-bottom: 24px; }
  .ww-medallions { gap: 8px; row-gap: 22px; }
  .ww-med { width: 92px; }
  .ww-med img { width: 88px; height: 88px; }
  .ww-med span { font-size: 11.5px; }

  .ww-quote { padding: 64px 0 68px; }
  .ww-quote-mark { font-size: 90px; }
  .ww-quote blockquote { font-size: 24px; max-width: 330px; }
  .ww-quote cite { font-size: 11px; }

  .ww-cons { padding: 64px 0; }
  .ww-cons-grid { display:flex; flex-direction: column-reverse; gap: 24px; }

  .ww-mem { padding: 64px 0; }
  .ww-mem-frame { padding: 36px 24px; gap: 18px; }
  .ww-mem-frame h2 { font-size: 30px; }
  .ww-mem-micro { font-size: 11px; }
  .ww-perks { flex-direction: column; gap: 18px; }
  .ww-perk-sep { width: 110px; height: 1px; }
  .ww-mem-ctas { flex-direction: column; gap: 14px; }

  .ww-footer { padding: 56px 0 40px; }
  .ww-footer-grid { flex-direction: column; gap: 32px; }
  .ww-footer-cols { display:flex; gap: 20px; }
  .ww-fcol { flex: 1; }
  .ww-fcol a { font-size: 12px; }
  .ww-fcol h5 { font-size: 11.5px; }
  .ww-fbottom-in { flex-direction: column; align-items: center; gap: 6px; padding: 20px 24px 40px; }
}
@media (min-width: 981px) { .ww-footer-cols { display: flex; gap: 130px; } .ww-mobile-menu { display:none !important; } }

/* ============================================================
   NATIVE DIVI ADAPTATION — maps et_pb_* markup to the WW system
   (page rebuilt as native sections/rows/modules for editability)
   ============================================================ */
.ww-sec, .ww-sec * { box-sizing: border-box; }
.ww-sec { font-family: 'Jost', sans-serif; color: var(--ww-ink); }
.ww-sec img { max-width: 100%; }
.ww-sec a { text-decoration: none; }
.ww-sec .et_pb_module { margin-bottom: 0; }
.ww-sec .et_pb_text_inner p { margin: 0; padding: 0; }
.ww-sec .et_pb_row { max-width: 1240px; width: calc(100% - 200px); }
.ww-util .et_pb_row, .ww-nav-row, .ww-foot-row { max-width: 100% !important; width: 100% !important; }

/* neutralize legacy code-module-era offsets */
.ww-sec.ww-van { margin-top: 0; }

/* utility bar (native) */
.ww-util .et_pb_column { margin-bottom: 0; }
.ww-util-left p, .ww-util-right p { font: 500 12.5px/1 'Jost',sans-serif; color: #fff; }
.ww-util-right p a { color: #fff; }

/* typography module hooks */
.ww-eyebrow-m p { font: 700 13px/1.4 'Jost',sans-serif; letter-spacing: .26em; color: var(--ww-coral); text-transform: uppercase; }
.ww-h1-m h1 { font: 500 58px/1.14 'Cormorant Garamond', serif; color: var(--ww-navy); margin: 0 auto; max-width: 900px; padding: 0; }
.ww-h1-m h1 em { font-style: italic; font-weight: 700; }
.ww-h2-m h2 { font: 500 42px/1.18 'Cormorant Garamond', serif; color: var(--ww-navy); margin: 0; padding: 0; }
.ww-h2-m { margin-top: 14px; }
.ww-body-m p { font: 400 15.5px/1.68 'Jost',sans-serif; color: #2E2044; }
.ww-body-m { margin-top: 16px; }
.ww-link-m { margin-top: 18px; }
.ww-hero-logo-m { margin-bottom: 22px; }
.ww-hero-logo-m img { width: 132px; height: auto; }
.ww-hero-rule-m { width: 72px; height: 2px !important; margin: 16px auto 20px; background: linear-gradient(90deg,#FBE179,#FCA861,#C94C97); border-radius: 2px; padding: 0 !important; }
.ww-hero-rule-m .et_pb_divider_internal { display: none; }
.ww-hero-sub-m { margin: 22px auto 26px; max-width: 560px; }
.ww-hero-sub-m p { font: 400 16.5px/1.62 'Jost',sans-serif; color: #2E2044; }
.ww-hero-row .et_pb_column, .ww-care-head .et_pb_column, .ww-quote-row .et_pb_column { text-align: center; }
.ww-video-wrap { margin-top: 46px; display: flex; justify-content: center; }

/* Divi buttons → WW pills */
.ww-btnw { display: inline-block; margin: 0 8px; }
.ww-btnw .et_pb_button { border: none !important; border-radius: 999px; font: 700 15px/1 'Jost',sans-serif !important; padding: 16px 32px !important; transition: transform .18s ease, box-shadow .18s ease; }
.ww-btnw .et_pb_button:after { display: none !important; }
.ww-btnw .et_pb_button:hover { padding: 16px 32px !important; transform: translateY(-2px); background-image: none; }
.ww-btnw--primary .et_pb_button { background: var(--ww-grad-primary) !important; color: #fff !important; box-shadow: 0 12px 28px -6px rgba(201,76,151,.26); }
.ww-btnw--glass .et_pb_button { background: rgba(255,255,255,.55) !important; border: 1.2px solid rgba(27,47,92,.45) !important; color: var(--ww-navy) !important; backdrop-filter: blur(14px); -webkit-backdrop-filter: blur(14px); padding: 15px 31px !important; }
.ww-btnw--champagne .et_pb_button { background: #fff !important; color: var(--ww-pinkbright) !important; }

/* values strip (native text module) */
.ww-values .et_pb_text_inner p { display: flex; align-items: center; justify-content: center; gap: 22px; padding: 30px 24px; margin: 0; }

/* care cards as blurbs */
.ww-care-cards { display: flex; gap: 28px; }
.ww-care-cards .et_pb_column { float: none; width: auto; flex: 1 1 0; margin: 0 !important; display: flex; }
.ww-care-cards .ww-card { width: 100%; }
.ww-card .et_pb_blurb_content { max-width: 100%; text-align: left; }
.ww-card .et_pb_main_blurb_image { margin-bottom: 6px; text-align: left; line-height: 0; }
.ww-card .et_pb_main_blurb_image img { width: 64px; height: 64px; filter: drop-shadow(0 8px 18px rgba(201,76,151,.30)); }
.ww-card .et_pb_module_header { font: 600 26px/1.2 'Cormorant Garamond', serif; color: var(--ww-navy); margin: 12px 0 10px; padding: 0; text-align: left; }
.ww-card .et_pb_blurb_description { font: 400 14.5px/1.6 'Jost',sans-serif; color: #2E2044; text-align: left; }
.ww-card .et_pb_blurb_description p { margin: 0 0 16px; }

/* species card = 3 stacked rows sharing one glass box */
.ww-species-cardrow { background: rgba(255,255,255,.62); border-left: 1.2px solid rgba(255,255,255,.95); border-right: 1.2px solid rgba(255,255,255,.95); backdrop-filter: blur(28px); -webkit-backdrop-filter: blur(28px); }
.ww-species-top { border-top: 1.2px solid rgba(255,255,255,.95); border-radius: 32px 32px 0 0; }
.ww-species-bot { border-bottom: 1.2px solid rgba(255,255,255,.95); border-radius: 0 0 32px 32px; box-shadow: 0 22px 52px -14px rgba(156,58,116,.14); }
.ww-species .et_pb_row { margin-bottom: 0 !important; }
.ww-species-mid { display: flex; gap: 22px; justify-content: center; }
.ww-species-mid .et_pb_column { float: none; width: auto; flex: 1 1 0; margin: 0 !important; }
.ww-med { text-align: center; }
.ww-med .et_pb_blurb_content { text-align: center; }
.ww-med .et_pb_main_blurb_image { margin-bottom: 14px; line-height: 0; }
.ww-med .et_pb_main_blurb_image img { width: 108px; height: 108px; border-radius: 50%; object-fit: cover; border: 4px solid #fff; box-shadow: 0 10px 24px -4px rgba(156,58,116,.16); }
.ww-med .et_pb_module_header { font: 700 13.5px/1.35 'Jost',sans-serif; color: var(--ww-navy); margin: 0; padding: 0; text-align: center; }

/* quote (native text modules) */
.ww-quote-markm p { font: 600 175px/0.62 'Cormorant Garamond', serif; background: linear-gradient(135deg,#FBE179,#FCA861,#C94C97); -webkit-background-clip: text; background-clip: text; color: transparent; margin-bottom: 6px; }
.ww-quote-q { max-width: 760px; margin: 0 auto 18px; }
.ww-quote-q p { font: 300 40px/1.42 'Cormorant Garamond', serif; color: var(--ww-navy); }
.ww-quote-cite p { font: 400 13px/1 'Marcellus', serif; letter-spacing: .22em; color: var(--ww-coral); }
.ww-quote-markm, .ww-quote-q, .ww-quote-cite { position: relative; z-index: 2; }

/* van / conservation split rows */
.ww-van-row, .ww-cons-row { display: flex; align-items: center; gap: 72px; }
.ww-van-row .et_pb_column, .ww-cons-row .et_pb_column { float: none; width: auto; flex: 1 1 0; margin: 0 !important; }
.ww-van-img-m img, .ww-van-img-m picture img { border-radius: 24px; box-shadow: 0 20px 48px -12px rgba(156,58,116,.18); }
.ww-cons-img-m img, .ww-cons-img-m picture img { border-radius: 24px; box-shadow: 0 20px 48px -12px rgba(156,58,116,.16); }
.ww-van .ww-h2-m h2, .ww-cons .ww-h2-m h2 { font-size: 38px; }

/* membership (native) */
.ww-mem-frame { border: 1px solid rgba(255,255,255,.55); background: rgba(255,255,255,.06); border-radius: 4px; position: relative; z-index: 2; }
.ww-mem-frame .et_pb_column { text-align: center; }
.ww-mem-eyebrow p { font: 700 13px/1.4 'Jost',sans-serif; letter-spacing: .32em; color: #fff; text-transform: uppercase; }
.ww-mem-h2 { margin-top: 22px; }
.ww-mem-h2 h2 { font: 300 42px/1.2 'Cormorant Garamond', serif; color: #fff; margin: 0; padding: 0; }
.ww-mem-micro { margin: 20px auto 0; max-width: 680px; }
.ww-mem-micro p { font: 400 13px/1.6 'Marcellus', serif; letter-spacing: .26em; color: rgba(255,255,255,.92); }
.ww-perksm { margin: 22px 0 26px; }
.ww-perksm .et_pb_text_inner { display: flex; justify-content: center; }
.ww-mem .ww-btnw { margin-bottom: 16px; }
.ww-mem-linkm p a { font: 500 14.5px/1 'Jost',sans-serif; color: rgba(255,255,255,.85); }
.ww-mem-linkm p a:hover { color: #fff; }

/* mobile — native adaptation */
@media (max-width: 980px) {
  .ww-sec .et_pb_row { width: calc(100% - 48px); }
  .ww-util .et_pb_row { padding: 8px 24px !important; }
  .ww-util .et_pb_column { width: 100% !important; }
  .ww-util-left { display: none; }
  .ww-util-right p { text-align: center; }
  .ww-h1-m h1 { font-size: 27.5px; max-width: 342px; }
  .ww-h2-m h2 { font-size: 28px !important; }
  .ww-hero-logo-m img { width: 96px; }
  .ww-hero-sub-m { max-width: 330px; }
  .ww-hero-sub-m p { font-size: 14px; }
  .ww-btnw { display: block; margin: 0 0 12px; }
  .ww-btnw .et_pb_button { display: block; width: 100%; text-align: center; }
  .ww-video-wrap { margin-top: 30px; }
  .ww-values .et_pb_text_inner p { gap: 12px; padding: 22px 8px; }
  .ww-care-cards { flex-direction: column; gap: 16px; }
  .ww-card .et_pb_main_blurb_image img { width: 48px; height: 48px; }
  .ww-van-row { flex-direction: column; gap: 24px; }
  .ww-cons-row { flex-direction: column; gap: 24px; }
  .ww-van-row .et_pb_column, .ww-cons-row .et_pb_column, .ww-care-cards .et_pb_column { width: 100% !important; }
  .ww-species-mid { flex-wrap: wrap; column-gap: 12px; row-gap: 26px; justify-content: center; }
  .ww-species-mid .et_pb_column { flex: 0 0 calc(50% - 8px); width: calc(50% - 8px) !important; }
  .ww-med .et_pb_main_blurb_image img { width: 88px; height: 88px; }
  .ww-med .et_pb_module_header { font-size: 11.5px; }
  .ww-species-top { padding: 36px 20px 0 !important; }
  .ww-species-mid { padding: 24px 20px 0 !important; }
  .ww-species-bot { padding: 18px 20px 36px !important; border-radius: 0 0 24px 24px; }
  .ww-species-top.ww-species-cardrow { border-radius: 24px 24px 0 0; }
  .ww-quote-markm p { font-size: 90px; }
  .ww-quote-q { max-width: 330px; }
  .ww-quote-q p { font-size: 24px; }
  .ww-quote-cite p { font-size: 11px; }
  .ww-mem-frame { padding: 32px 20px !important; }
  .ww-mem-h2 h2 { font-size: 30px; }
  .ww-mem-micro p { font-size: 11px; }
  .ww-van .ww-h2-m h2, .ww-cons .ww-h2-m h2 { font-size: 26px !important; }
}

/* ---- native fix round 2 ---- */
/* buttons: Divi puts module_class on the <a> itself */
a.et_pb_button.ww-btnw { white-space: nowrap; border: none !important; border-radius: 999px !important; font: 700 15px/1 'Jost',sans-serif !important; padding: 16px 32px !important; transition: transform .18s ease, box-shadow .18s ease !important; }
a.et_pb_button.ww-btnw:after { display: none !important; }
a.et_pb_button.ww-btnw:hover { padding: 16px 32px !important; transform: translateY(-2px); border: none !important; }
a.et_pb_button.ww-btnw--primary { background: var(--ww-grad-primary) !important; color: #fff !important; box-shadow: 0 12px 28px -6px rgba(201,76,151,.26) !important; }
a.et_pb_button.ww-btnw--glass { background: rgba(255,255,255,.55) !important; border: 1.2px solid rgba(27,47,92,.45) !important; color: var(--ww-navy) !important; backdrop-filter: blur(14px); -webkit-backdrop-filter: blur(14px); padding: 15px 31px !important; }
a.et_pb_button.ww-btnw--champagne { background: #fff !important; color: var(--ww-pinkbright) !important; }
.ww-hero-row .et_pb_button_module_wrapper, .ww-mem .et_pb_button_module_wrapper { display: inline-block; margin: 0 8px; }
.ww-hero-row .et_pb_button_module_wrapper { margin-bottom: 0; }

/* text hooks: element-agnostic (bare text isn't always <p>-wrapped) */
.ww-eyebrow-m .et_pb_text_inner, .ww-eyebrow-m .et_pb_text_inner p { font: 700 13px/1.4 'Jost',sans-serif; letter-spacing: .26em; color: var(--ww-coral); text-transform: uppercase; }
.ww-hero-sub-m .et_pb_text_inner, .ww-hero-sub-m .et_pb_text_inner p { font: 400 16.5px/1.62 'Jost',sans-serif; color: #2E2044; }
.ww-body-m .et_pb_text_inner, .ww-body-m .et_pb_text_inner p { font: 400 15.5px/1.68 'Jost',sans-serif; color: #2E2044; }
.ww-util-left .et_pb_text_inner, .ww-util-left .et_pb_text_inner p, .ww-util-right .et_pb_text_inner, .ww-util-right .et_pb_text_inner p { font: 500 12.5px/1 'Jost',sans-serif; color: #fff; }
.ww-util-right .et_pb_text_inner a, .ww-util-right .et_pb_text_inner a b { color: #fff !important; }
.ww-values .et_pb_text_inner, .ww-values .et_pb_text_inner p { display: flex; align-items: center; justify-content: center; gap: 22px; padding: 30px 24px; margin: 0; }
.ww-values .et_pb_text_inner p { padding: 0; }
.ww-quote-markm .et_pb_text_inner, .ww-quote-markm .et_pb_text_inner p { font: 600 175px/0.62 'Cormorant Garamond', serif; background: linear-gradient(135deg,#FBE179,#FCA861,#C94C97); -webkit-background-clip: text; background-clip: text; color: transparent; }
.ww-quote-q .et_pb_text_inner, .ww-quote-q .et_pb_text_inner p { font: 300 40px/1.42 'Cormorant Garamond', serif; color: var(--ww-navy); }
.ww-quote-cite .et_pb_text_inner, .ww-quote-cite .et_pb_text_inner p { font: 400 13px/1 'Marcellus', serif; letter-spacing: .22em; color: var(--ww-coral); }
.ww-mem-eyebrow .et_pb_text_inner, .ww-mem-eyebrow .et_pb_text_inner p { font: 700 13px/1.4 'Jost',sans-serif; letter-spacing: .32em; color: #fff; text-transform: uppercase; }
.ww-mem-micro .et_pb_text_inner, .ww-mem-micro .et_pb_text_inner p { font: 400 13px/1.6 'Marcellus', serif; letter-spacing: .26em; color: rgba(255,255,255,.92); }

/* logo size */
.ww-hero-logo-m .et_pb_image_wrap img, .ww-hero-logo-m img { width: 132px !important; height: auto !important; }

/* video card: kill flex shrink-to-fit */
.ww-video-wrap { display: block; }
.ww-video-wrap .et_pb_code_inner { width: 100%; display: flex; justify-content: center; }
.ww-video { flex: 0 1 1040px; width: 100%; }

@media (max-width: 980px) {
  .ww-hero-row .et_pb_button_module_wrapper, .ww-mem .et_pb_button_module_wrapper { display: block; margin: 0 0 12px; }
  a.et_pb_button.ww-btnw { display: block !important; width: 100% !important; text-align: center; }
  .ww-hero-logo-m .et_pb_image_wrap img, .ww-hero-logo-m img { width: 96px !important; }
  .ww-hero-sub-m .et_pb_text_inner, .ww-hero-sub-m .et_pb_text_inner p { font-size: 14px; }
  .ww-values .et_pb_text_inner { gap: 12px; padding: 22px 8px; }
  .ww-quote-markm .et_pb_text_inner, .ww-quote-markm .et_pb_text_inner p { font-size: 90px; }
  .ww-quote-q .et_pb_text_inner, .ww-quote-q .et_pb_text_inner p { font-size: 24px; }
  .ww-quote-cite .et_pb_text_inner, .ww-quote-cite .et_pb_text_inner p { font-size: 11px; }
  .ww-mem-micro .et_pb_text_inner, .ww-mem-micro .et_pb_text_inner p { font-size: 11px; }
  .ww-video { flex-basis: 100%; }
}

/* nav containing block = hero section, not Divi row */
.ww-sec.ww-hero { position: relative; }
.ww-nav-row, .ww-nav-row .et_pb_column, .ww-nav-row .et_pb_code, .ww-nav-row .et_pb_code_inner { position: static !important; }

/* ---- Theme Builder header / menu module / 404 ---- */
.ww-tbheader { background: transparent !important; padding: 0 !important; overflow: visible !important; position: relative; z-index: 60; }
.ww-tbheader .ww-util-tb { background: var(--ww-macaw); margin: 0 !important; max-width: 100% !important; }
.ww-navm-row { position: absolute !important; top: 254px; left: 0; right: 0; width: 100% !important; max-width: 100% !important; z-index: 60; background: transparent; }
.ww-navm-row .et_pb_column { text-align: center; }
.ww-navm { width: auto !important; display: inline-block; margin: 0 auto; border-radius: 999px; background: rgba(255,255,255,.66) !important; border: 1px solid rgba(255,255,255,.85); backdrop-filter: blur(28px); -webkit-backdrop-filter: blur(28px); box-shadow: 0 2px 6px -1px rgba(74,13,44,.06), 0 20px 48px -12px rgba(156,58,116,.16); padding: 6px 22px; }
.ww-navm .et_pb_menu__wrap, .ww-navm .et_pb_menu_inner_container { background: transparent !important; }
.ww-navm ul.et-menu > li > a, .ww-navm nav ul li a { font: 700 14px/1 'Jost',sans-serif !important; color: var(--ww-navy) !important; padding: 14px 15px !important; }
.ww-navm ul.et-menu > li > a:hover, .ww-navm nav ul li a:hover { color: var(--ww-coral) !important; opacity: 1 !important; }
.ww-navm .et_pb_menu__logo img, .ww-navm .et_pb_menu__logo-wrap img { max-height: 30px; width: auto; }
.ww-navm li.ww-menu-cta > a { background: var(--ww-grad-primary); color: #fff !important; border-radius: 999px; padding: 12px 22px !important; margin-left: 8px; box-shadow: 0 10px 24px -6px rgba(201,76,151,.3); }
.ww-navm li.ww-menu-cta > a:hover { color: #fff !important; transform: translateY(-1px); }
/* mobile menu (Divi burger) */
.ww-navm .et_mobile_nav_menu { padding: 8px 4px; }
.ww-navm .mobile_menu_bar:before { color: var(--ww-navy); font-size: 30px; }
.ww-navm .et_mobile_menu { background: rgba(253,245,236,.98) !important; border-top: 2px solid var(--ww-coral); border-radius: 0 0 18px 18px; box-shadow: 0 24px 48px -12px rgba(156,58,116,.25); backdrop-filter: blur(20px); -webkit-backdrop-filter: blur(20px); }
.ww-navm .et_mobile_menu li a { font: 500 19px/1.6 'Cormorant Garamond', serif !important; color: var(--ww-navy) !important; border-color: rgba(27,47,92,.08) !important; }
.ww-navm .et_mobile_menu li.ww-menu-cta a { color: var(--ww-coral) !important; font-weight: 600 !important; }

/* 404 */
.ww-404 { background: linear-gradient(180deg,#FBEDE2 0%, #FDF5EC 55%, #FFFFFF 100%); text-align: center; overflow: clip; }
.ww-404-row .et_pb_column { text-align: center; }
.ww-404-logo .et_pb_image_wrap img, .ww-404-logo img { width: 340px !important; height: auto !important; filter: drop-shadow(0 24px 48px rgba(156,58,116,.22)); }
.ww-404-h1 { margin-top: 26px; }
.ww-404-h1 h1 { font: 500 56px/1.15 'Cormorant Garamond', serif; color: var(--ww-navy); margin: 0; padding: 0; }
.ww-404-sub { margin: 16px auto 30px; max-width: 520px; }
.ww-404-sub .et_pb_text_inner, .ww-404-sub .et_pb_text_inner p { font: 400 16.5px/1.6 'Jost',sans-serif; color: #2E2044; }

@media (max-width: 980px) {
  .ww-tbheader .ww-util-tb { padding: 8px 24px !important; }
  .ww-tbheader .ww-util-tb .et_pb_column { width: 100% !important; margin-bottom: 0 !important; }
  .ww-navm-row { top: 46px; padding: 0 24px !important; }
  .ww-navm { display: block; width: 100% !important; padding: 4px 10px; }
  .ww-navm .et_pb_menu__logo img { max-height: 24px; }
  .ww-404-logo .et_pb_image_wrap img, .ww-404-logo img { width: 220px !important; }
  .ww-404-h1 h1 { font-size: 32px; }
}

/* ---- nav polish round: mobile menu layout + solid dropdown + logo box ---- */
.ww-navm .et_pb_menu__logo-wrap, .ww-navm .et_pb_menu__logo { background: transparent !important; }
.ww-tbheader .ww-navm .et_mobile_menu { background-color: #FDF5EC !important; opacity: 1 !important; border-top: 2px solid var(--ww-coral); border-radius: 0 0 18px 18px; box-shadow: 0 24px 48px -12px rgba(156,58,116,.25); }
.ww-tbheader .ww-navm .et_mobile_menu li { background: transparent; }
.ww-tbheader .ww-navm .et_mobile_menu li a { background-color: transparent !important; }
@media (max-width: 980px) {
  .ww-navm .et_pb_menu__wrap { display: flex !important; flex-direction: row !important; align-items: center !important; justify-content: space-between !important; }
  .ww-navm .et_pb_menu__logo-slot, .ww-navm .et_pb_menu__logo-wrap { order: 0; margin: 0; }
  .ww-navm .et_pb_menu__logo img { max-height: 22px !important; }
  .ww-navm .et_pb_menu__menu { display: none !important; }
  .ww-navm .et_mobile_nav_menu { order: 1; display: flex !important; padding: 6px 2px; }
}

/* dropdown bg: out-specify Divi's generated order-class rule */
.ww-tbheader .ww-navm.et_pb_menu .et_mobile_menu,
.ww-tbheader .ww-navm.et_pb_menu .et_mobile_menu ul { background-color: #FDF5EC !important; }

/* mobile nav: single compact row, no wrap */
@media (max-width: 980px) {
  .ww-navm .et_pb_menu__wrap { flex-wrap: nowrap !important; }
  .ww-navm .et_pb_menu__logo-wrap, .ww-navm .et_pb_menu__logo-slot { width: auto !important; flex: 0 0 auto !important; margin: 0 !important; }
  .ww-navm .et_pb_menu__logo { display: flex; align-items: center; }
}

/* mobile nav one-row: flex the inner container (logo-wrap and wrap are siblings) */
@media (max-width: 980px) {
  .ww-navm .et_pb_menu_inner_container { display: flex !important; align-items: center !important; justify-content: space-between !important; flex-wrap: nowrap !important; }
  .ww-navm .et_pb_menu_inner_container .et_pb_menu__logo-wrap { width: auto !important; flex: 0 0 auto !important; }
  .ww-navm .et_pb_menu_inner_container .et_pb_menu__logo { justify-content: flex-start; }
  .ww-navm .et_pb_menu_inner_container .et_pb_menu__wrap { width: auto !important; flex: 0 0 auto !important; }
}
/* dropdown CTA: white text on gradient */
.ww-tbheader .ww-navm.et_pb_menu .et_mobile_menu li.ww-menu-cta a { color: #fff !important; }

/* ============ interior pages: Services + Species ============ */
.ww-pagehero { background: linear-gradient(180deg,#FBEDE2 0%, #FDF5EC 65%, #FFFFFF 100%); position: relative; overflow: clip; }
.ww-pagehero::before { content:""; position:absolute; width:480px; height:480px; border-radius:50%; background: rgba(251,225,121,.30); filter: blur(190px); top:-196px; left:-120px; }
.ww-pagehero::after { content:""; position:absolute; width:460px; height:460px; border-radius:50%; background: rgba(252,168,97,.18); filter: blur(200px); top:-169px; right:-110px; }
.ww-pagehero .et_pb_row { position: relative; z-index: 2; }
.ww-pagehero-h1 { margin-top: 12px; }
.ww-pagehero-h1 h1 { font: 500 56px/1.1 'Cormorant Garamond', serif; color: var(--ww-navy); margin: 0; padding: 0; }
.ww-pagehero-sub { margin-top: 12px; }
.ww-pagehero-sub .et_pb_text_inner, .ww-pagehero-sub .et_pb_text_inner p { font: 400 16px/1.5 'Jost',sans-serif; color: #2E2044; }
.ww-pagehero-row .et_pb_column, .ww-well-head .et_pb_column, .ww-bird-head .et_pb_column, .ww-ask-row .et_pb_column { text-align: center; }

.ww-introsec { background: #fff; }
.ww-intro-row { display: flex; align-items: center; gap: 48px; }
.ww-intro-row .et_pb_column { float: none; margin: 0 !important; }
.ww-intro-row .et_pb_column.et_pb_column_2_3 { flex: 1 1 0; }
.ww-panel { flex: 0 0 340px !important; width: 340px !important; background: rgba(255,255,255,.6); border: 1px solid #F5DEC7; border-radius: 24px; padding: 36px 32px !important; backdrop-filter: blur(20px); -webkit-backdrop-filter: blur(20px); box-shadow: 0 16px 38px -10px rgba(216,90,50,.12); text-align: center; }
.ww-panel-title h3 { font: 500 26px/1.2 'Cormorant Garamond', serif; color: var(--ww-navy); margin: 0 0 16px; padding: 0; }
.ww-panel .et_pb_button_module_wrapper { display: block; margin: 0 0 14px; }
.ww-panel-phone .et_pb_text_inner, .ww-panel-phone .et_pb_text_inner p { font: 500 13.5px/1 'Jost',sans-serif; color: rgba(27,47,92,.8); }

.ww-wellsec { background: linear-gradient(180deg,#FFFFFF 0%, #FCF1E6 55%, #FAE4E9 100%); position: relative; overflow: clip; }
.ww-wellsec::before { content:""; position:absolute; width:520px; height:520px; border-radius:50%; background: rgba(201,76,151,.10); filter: blur(110px); right:-140px; top:40px; }
.ww-wellsec::after { content:""; position:absolute; width:520px; height:520px; border-radius:50%; background: rgba(251,225,121,.18); filter: blur(110px); left:-140px; bottom:20px; }
.ww-wellsec .et_pb_row { position: relative; z-index: 2; }

.ww-chip { display: inline-block; margin: 6px; padding: 11px 20px; border-radius: 999px; background: rgba(255,255,255,.75); border: 1px solid #F7DCE3; font: 500 14px/1 'Jost',sans-serif; color: var(--ww-navy); backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px); }
.ww-chips-left .et_pb_text_inner { text-align: left; }
.ww-chips-left .ww-chip { margin: 6px 12px 6px 0; }
.ww-chip-no { background: #B2452E; border-color: #B2452E; color: #fff; font-weight: 700; }

.ww-diagsec { background: linear-gradient(135deg,#FFF2F8 0%, #FDE1F0 55%, #F8D0E6 100%); }
.ww-diagsec .ww-eyebrow-gold .et_pb_text_inner, .ww-diagsec .ww-eyebrow-gold .et_pb_text_inner p { color: var(--ww-pinkbright) !important; }
.ww-diagsec .ww-h2-white h2 { color: var(--ww-navy) !important; }
.ww-diagsec .ww-body-onwhitebg .et_pb_text_inner, .ww-diagsec .ww-body-onwhitebg .et_pb_text_inner p { color: #2E2044 !important; }
.ww-diagsec .ww-list li::before { background: var(--ww-pinkbright); }
.ww-diag-row { display: flex; align-items: center; gap: 64px; }
.ww-diag-row .et_pb_column { float: none; flex: 1 1 0; margin: 0 !important; }
.ww-eyebrow-gold .et_pb_text_inner, .ww-eyebrow-gold .et_pb_text_inner p { color: #FBE179 !important; }
.ww-h2-white h2 { color: #fff !important; }
.ww-body-onwhitebg .et_pb_text_inner, .ww-body-onwhitebg .et_pb_text_inner p { color: rgba(255,255,255,.75) !important; }

.ww-list ul { list-style: none; margin: 0 !important; padding: 0 !important; }
.ww-list li { position: relative; padding: 0 0 0 18px !important; margin: 0 0 12px; font: 400 14.5px/1.5 'Jost',sans-serif; color: #2E2044; }
.ww-list li::before { content: ""; position: absolute; left: 0; top: 8px; width: 5px; height: 5px; border-radius: 50%; background: #FBE179; }
.ww-diagsec .ww-list li { color: #2E2044; }
.ww-list-2col ul { columns: 2; column-gap: 48px; }
.ww-list-2col li { break-inside: avoid; }

.ww-duosec { background: #fff; }
.ww-duo-row { display: flex; gap: 28px; }
.ww-duocard { float: none !important; flex: 1 1 0; margin: 0 !important; border-radius: 26px; padding: 44px 40px !important; border: 1px solid #F7DCE3; box-shadow: 0 14px 32px -8px rgba(216,90,50,.10); }
.ww-duo-flocks { background: linear-gradient(135deg,#FFFFFF 0%, #FCF1E6 100%); border-color: #F5DEC7; }
.ww-duo-eol { background: linear-gradient(135deg,#FFFFFF 0%, #F2E8F6 100%); border-color: #E9D8F0; }
.ww-duo-h3 { margin-top: 12px; }
.ww-duo-h3 h3 { font: 500 30px/1.2 'Cormorant Garamond', serif; color: var(--ww-navy); margin: 0; padding: 0; }
.ww-duocard .ww-body-m { margin: 12px 0 16px; }

.ww-dvmstrip { background: var(--ww-pinkbright); }
.ww-dvmstrip .ww-eyebrow-m p, .ww-dvmstrip .ww-eyebrow-m .et_pb_text_inner { color: #fff !important; }
.ww-dvmstrip .ww-dvm-line .et_pb_text_inner, .ww-dvmstrip .ww-dvm-line .et_pb_text_inner p { color: #fff; }
.ww-dvmstrip .ww-link, .ww-dvmstrip a { color: #fff !important; }
.ww-dvm-row { display: flex; align-items: center; }
.ww-dvm-row .et_pb_column { float: none; margin: 0 !important; }
.ww-dvm-row .et_pb_column:first-child { flex: 1 1 0; }
.ww-dvm-line { margin-top: 6px; }
.ww-dvm-line .et_pb_text_inner, .ww-dvm-line .et_pb_text_inner p { font: 500 15.5px/1.5 'Jost',sans-serif; color: var(--ww-navy); }
.ww-dvm-link { margin: 0; }

.ww-birdsec { background: linear-gradient(180deg,#FFFFFF 0%, #FCF1E6 100%); }
.ww-bird-cards { display: flex; gap: 24px; }
.ww-bird-cards .et_pb_column { float: none; flex: 1 1 0; margin: 0 !important; display: flex; }
.ww-birdcard { width: 100%; background: rgba(255,255,255,.65); border: 1px solid rgba(255,255,255,.95); border-radius: 20px; padding: 30px 24px; backdrop-filter: blur(20px); -webkit-backdrop-filter: blur(20px); box-shadow: 0 12px 28px -8px rgba(216,90,50,.10); }
.ww-birdcard .et_pb_blurb_content { text-align: center; }
.ww-birdcard .et_pb_main_blurb_image { margin-bottom: 14px; line-height: 0; }
.ww-birdcard .et_pb_main_blurb_image img { width: 92px; height: 92px; border-radius: 50%; object-fit: cover; border: 4px solid #fff; box-shadow: 0 10px 24px -4px rgba(216,90,50,.16); }
.ww-birdcard .et_pb_module_header { font: 600 22px/1.2 'Cormorant Garamond', serif; color: var(--ww-navy); margin: 0 0 8px; padding: 0; text-align: center; }
.ww-birdcard .et_pb_blurb_description { font: 400 13.5px/1.55 'Jost',sans-serif; color: #2E2044; text-align: center; }
.ww-birdcard-ph .et_pb_blurb_content::before { content: ""; display: block; width: 92px; height: 92px; border-radius: 50%; margin: 0 auto 14px; background: linear-gradient(135deg,#F8D0E6,#C94D97); border: 4px solid #fff; box-shadow: 0 10px 24px -8px rgba(236,79,160,.35); }

.ww-repsec { background: #fff; }
.ww-rep-row, .ww-mam-row { display: flex; align-items: center; gap: 56px; }
.ww-rep-row .et_pb_column, .ww-mam-row .et_pb_column { float: none; margin: 0 !important; }
.ww-rep-row .et_pb_column:last-child, .ww-mam-row .et_pb_column:first-child { flex: 1 1 0; }
.ww-bigmed { line-height: 0; }
.ww-bigmed .et_pb_image_wrap img, .ww-bigmed img { width: 150px !important; height: 150px !important; border-radius: 50%; object-fit: cover; border: 4px solid #fff; box-shadow: 0 12px 28px -6px rgba(216,90,50,.18); }
.ww-mamsec { background: linear-gradient(180deg,#FDF2E7 0%, #FAE4E9 100%); }
.ww-mam-pics { display: flex !important; flex-direction: column; align-items: center; }
.ww-bigmed-2 { margin: -22px 0 0 46px !important; }

.ww-navystrip { background: var(--ww-navy); }
.ww-navystrip-row { display: flex; align-items: center; }
.ww-navystrip-row .et_pb_column { float: none; margin: 0 !important; }
.ww-navystrip-row .et_pb_column:first-child { flex: 1 1 0; }
.ww-strip-line .et_pb_text_inner, .ww-strip-line .et_pb_text_inner p { font: 500 15px/1.5 'Jost',sans-serif; color: rgba(255,255,255,.92); }
.ww-strip-link a { font: 700 15px/1 'Jost',sans-serif; color: #FBE179 !important; }

.ww-asksec { background: linear-gradient(180deg,#FFFFFF 0%, #FBEDE2 100%); }
.ww-ask-sub { margin: 14px auto 26px; max-width: 640px; }
.ww-ask-sub .et_pb_text_inner, .ww-ask-sub .et_pb_text_inner p { font: 400 15.5px/1.62 'Jost',sans-serif; color: #2E2044; }

@media (max-width: 980px) {
  .ww-pagehero-h1 h1 { font-size: 34px; }
  .ww-pagehero-sub .et_pb_text_inner, .ww-pagehero-sub .et_pb_text_inner p { font-size: 14px; }
  .ww-intro-row, .ww-diag-row, .ww-duo-row, .ww-bird-cards, .ww-rep-row, .ww-mam-row, .ww-dvm-row, .ww-navystrip-row { flex-direction: column; gap: 20px; }
  .ww-panel { flex: 1 1 auto !important; width: 100% !important; }
  .ww-chip { font-size: 13px; padding: 9px 16px; margin: 4px; }
  .ww-list-2col ul { columns: 1; }
  .ww-duocard { padding: 30px 24px !important; }
  .ww-duo-h3 h3 { font-size: 25px; }
  .ww-dvm-link .et_pb_text_inner { text-align: left !important; }
  .ww-strip-link .et_pb_text_inner { text-align: left !important; }
  .ww-mam-pics { flex-direction: row !important; justify-content: center; gap: 12px; }
  .ww-bigmed-2 { margin: 0 !important; }
  .ww-bigmed .et_pb_image_wrap img, .ww-bigmed img { width: 120px !important; height: 120px !important; }
}

/* ---- MOBILE FIX: flex-basis 0 collapses columns in column-direction rows ---- */
@media (max-width: 980px) {
  .ww-care-cards .et_pb_column,
  .ww-bird-cards .et_pb_column,
  .ww-van-row .et_pb_column,
  .ww-cons-row .et_pb_column,
  .ww-intro-row .et_pb_column,
  .ww-diag-row .et_pb_column,
  .ww-duo-row .et_pb_column,
  .ww-rep-row .et_pb_column,
  .ww-mam-row .et_pb_column,
  .ww-dvm-row .et_pb_column,
  .ww-navystrip-row .et_pb_column { flex: 0 0 auto !important; min-height: 0; }
}

/* ============ About / Contact / Memberships ============ */
/* generic flex row with safe mobile behavior */
.ww-frow { display: flex; gap: 28px; }
.ww-frow > .et_pb_column { float: none; flex: 1 1 0; margin: 0 !important; min-width: 0; }

/* ----- About ----- */
.ww-abouthero { background-size: cover !important; background-position: center 30% !important; position: relative; overflow: clip; }
.ww-abouthero::before { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(14,27,56,.62) 0%, rgba(14,27,56,.25) 55%, rgba(14,27,56,.55) 100%); }
.ww-abouthero .et_pb_row { position: relative; z-index: 2; }
.ww-abouthero .ww-eyebrow-m .et_pb_text_inner, .ww-abouthero .ww-eyebrow-m .et_pb_text_inner p { color: #FBE179; }
.ww-abouthero .ww-pagehero-h1 h1 { color: #fff; }
.ww-abouthero-cred { margin-top: 14px; }
.ww-abouthero-cred .et_pb_text_inner, .ww-abouthero-cred .et_pb_text_inner p { font: 400 15px/1.5 'Marcellus', serif; letter-spacing: .18em; color: #FBE179; }
.ww-bio-row { align-items: center; gap: 64px; }
.ww-bio-img .et_pb_image_wrap img, .ww-bio-img img { border-radius: 26px; box-shadow: 0 20px 44px -12px rgba(216,90,50,.18); }
.ww-bio-col .ww-body-m { margin-top: 14px; }
.ww-statsband { background: linear-gradient(135deg,#0E1B38 0%, #20355E 55%, #0E1B38 100%); }
.ww-statsband .ww-frow { gap: 40px; }
.ww-stat-num .et_pb_text_inner, .ww-stat-num .et_pb_text_inner p { font: 500 26px/1.2 'Cormorant Garamond', serif; color: #FBE179; }
.ww-stat-label { margin-top: 4px; }
.ww-stat-label .et_pb_text_inner, .ww-stat-label .et_pb_text_inner p { font: 400 13.5px/1.4 'Jost',sans-serif; color: rgba(255,255,255,.75); }
.ww-pillars-sec { background: linear-gradient(180deg,#FFFFFF 0%, #FCF1E6 55%, #FAE4E9 100%); }
.ww-pillars .ww-pillar { background: rgba(255,255,255,.62); border: 1px solid rgba(255,255,255,.95); border-radius: 18px; padding: 28px 22px !important; backdrop-filter: blur(18px); -webkit-backdrop-filter: blur(18px); }
.ww-pillar-rule { width: 36px; height: 3px !important; border-radius: 2px; background: linear-gradient(90deg,#C94C97,#F2924E); padding: 0 !important; margin: 0 0 12px; }
.ww-pillar-rule .et_pb_divider_internal { display: none; }
.ww-pillar-num .et_pb_text_inner, .ww-pillar-num .et_pb_text_inner p { font: 400 13px/1 'Marcellus', serif; letter-spacing: .12em; color: var(--ww-coral); }
.ww-pillar-title { margin-top: 8px; }
.ww-pillar-title h3 { font: 600 23px/1.2 'Cormorant Garamond', serif; color: var(--ww-navy); margin: 0; padding: 0; }
.ww-pillar-body { margin-top: 8px; }
.ww-pillar-body .et_pb_text_inner, .ww-pillar-body .et_pb_text_inner p { font: 400 13.5px/1.58 'Jost',sans-serif; color: #2E2044; }
.ww-teamcard { background: linear-gradient(135deg,#FFFFFF 0%, #F9E0E8 100%); border: 1px solid #F7DCE3; border-radius: 22px; padding: 34px 30px !important; text-align: center; }
.ww-avatar { width: 76px; height: 76px; border-radius: 50%; background: linear-gradient(135deg,#C94C97,#F2924E); margin: 0 auto 6px; display: flex; align-items: center; justify-content: center; }
.ww-avatar .et_pb_text_inner, .ww-avatar .et_pb_text_inner p { font: 700 24px/1 'Jost',sans-serif; color: #fff; }
.ww-team-name { margin-top: 10px; }
.ww-team-name h3 { font: 600 25px/1.2 'Cormorant Garamond', serif; color: var(--ww-navy); margin: 0; padding: 0; }
.ww-team-role { margin-top: 4px; }
.ww-team-role .et_pb_text_inner, .ww-team-role .et_pb_text_inner p { font: 400 12px/1.5 'Marcellus', serif; letter-spacing: .12em; color: var(--ww-coral); }
.ww-team-bio { margin-top: 10px; }
.ww-team-bio .et_pb_text_inner, .ww-team-bio .et_pb_text_inner p { font: 400 14px/1.6 'Jost',sans-serif; color: #2E2044; }
.ww-mediastrip { background: #FBEDE2; }
.ww-mediastrip .et_pb_text_inner, .ww-mediastrip .et_pb_text_inner p { font: 400 14px/2 'Marcellus', serif; letter-spacing: .18em; color: rgba(27,47,92,.8); text-align: center; }
.ww-quote-sec { background: #FBE9F2; position: relative; overflow: clip; text-align: center; }
.ww-quote-sec::before { content:""; position:absolute; width:600px; height:360px; border-radius:50%; background: rgba(251,225,121,.16); filter: blur(95px); left:50%; transform: translateX(-38%); top:-40px; }

/* ----- Contact ----- */
.ww-method { background: linear-gradient(135deg,#FFFFFF 0%, #F9E0E8 100%); border: 1px solid #F7DCE3; border-radius: 22px; padding: 34px 28px; text-align: center; box-shadow: 0 12px 28px -8px rgba(216,90,50,.10); }
.ww-method .et_pb_blurb_content { text-align: center; }
.ww-method .et_pb_main_blurb_image { margin-bottom: 10px; line-height: 0; }
.ww-method .et_pb_main_blurb_image img { width: 52px; height: 52px; filter: drop-shadow(0 6px 14px rgba(201,76,151,.28)); }
.ww-method .et_pb_module_header { font: 600 24px/1.2 'Cormorant Garamond', serif; color: var(--ww-navy); margin: 0 0 6px; padding: 0; text-align: center; }
.ww-method .et_pb_blurb_description { font: 400 14px/1.58 'Jost',sans-serif; color: #2E2044; text-align: center; }
.ww-method .ww-method-big { display: block; font: 700 17px/1.4 'Jost',sans-serif; color: var(--ww-coral); margin-bottom: 6px; }
.ww-contact-split { align-items: flex-start; gap: 48px; }
.ww-formcard { background: rgba(255,255,255,.72); border: 1px solid rgba(255,255,255,.95); border-radius: 24px; padding: 40px !important; backdrop-filter: blur(22px); -webkit-backdrop-filter: blur(22px); box-shadow: 0 16px 36px -10px rgba(216,90,50,.12); }
.ww-form-title h3 { font: 500 30px/1.2 'Cormorant Garamond', serif; color: var(--ww-navy); margin: 6px 0 4px; padding: 0; }
.ww-formcard .gform_wrapper label.gfield_label { font: 600 13px/1.4 'Jost',sans-serif !important; color: var(--ww-navy) !important; letter-spacing: .04em; }
.ww-formcard .gform_wrapper input:not([type=submit]), .ww-formcard .gform_wrapper textarea { background: #fff !important; border: 1.2px solid #EBD9C8 !important; border-radius: 12px !important; padding: 12px 16px !important; font: 400 16px/1.4 'Jost',sans-serif !important; color: var(--ww-ink) !important; width: 100%; }
.ww-formcard .gform_wrapper input:focus, .ww-formcard .gform_wrapper textarea:focus { border-color: var(--ww-coral) !important; outline: none; }
.ww-formcard .gform_wrapper textarea { min-height: 120px; }
.ww-formcard .gform_wrapper .gform_button { background: var(--ww-grad-primary) !important; color: #fff !important; border: none !important; border-radius: 999px !important; padding: 15px 32px !important; font: 700 14.5px/1 'Jost',sans-serif !important; cursor: pointer; box-shadow: 0 12px 28px -6px rgba(201,76,151,.26); }
.ww-formcard .gform_wrapper .gform_footer { padding: 8px 0 0 !important; margin: 0 !important; }
.ww-infocard { background: rgba(255,255,255,.72); border: 1px solid #F5DEC7; border-radius: 18px; padding: 24px 26px !important; margin-bottom: 16px !important; backdrop-filter: blur(16px); -webkit-backdrop-filter: blur(16px); }
.ww-infocard-em { border-color: #FBE179; border-width: 1.4px; }
.ww-info-title h4 { font: 600 21px/1.25 'Cormorant Garamond', serif; color: var(--ww-navy); margin: 4px 0 6px; padding: 0; }
.ww-info-body .et_pb_text_inner, .ww-info-body .et_pb_text_inner p { font: 400 14px/1.58 'Jost',sans-serif; color: #2E2044; }
.ww-contact-bg { background: linear-gradient(180deg,#FFFFFF 0%, #FCF1E6 55%, #FAE4E9 100%); }

/* ----- Memberships ----- */
.ww-promgrid { display: flex; flex-wrap: wrap; gap: 20px; justify-content: center; }
.ww-prom { flex: 0 0 calc(25% - 15px); background: rgba(255,255,255,.68); border: 1px solid rgba(255,255,255,.95); border-radius: 16px; padding: 24px; backdrop-filter: blur(16px); -webkit-backdrop-filter: blur(16px); }
.ww-prom h4 { font: 600 19px/1.25 'Cormorant Garamond', serif; color: var(--ww-navy); margin: 10px 0 6px; }
.ww-prom p { font: 400 13px/1.55 'Jost',sans-serif; color: #2E2044; margin: 0; }
.ww-prom i { display: block; width: 28px; height: 3px; border-radius: 2px; background: linear-gradient(90deg,#C94C97,#F2924E); }
.ww-tiers-row { align-items: stretch; }
.ww-tier { border-radius: 24px; padding: 36px 32px !important; border: 1px solid #F7DCE3; background: linear-gradient(135deg,#FFFFFF 0%, #F9E0E8 100%); box-shadow: 0 12px 28px -8px rgba(216,90,50,.10); }
.ww-tier-featured { background: linear-gradient(135deg,#27133C 0%, #421E5B 100%); border: 1px solid rgba(227,190,127,.6); box-shadow: 0 20px 44px -10px rgba(64,20,64,.30); }
.ww-tier-tag .et_pb_text_inner, .ww-tier-tag .et_pb_text_inner p { font: 700 10.5px/1.4 'Jost',sans-serif; letter-spacing: .24em; color: #E3BE7F; }
.ww-tier-name h3 { font: 600 28px/1.2 'Cormorant Garamond', serif; color: var(--ww-navy); margin: 4px 0 6px; padding: 0; }
.ww-tier-featured .ww-tier-name h3 { color: #fff; }
.ww-tier-who .et_pb_text_inner, .ww-tier-who .et_pb_text_inner p { font: 400 14px/1.55 'Jost',sans-serif; color: #2E2044; }
.ww-tier-featured .ww-tier-who .et_pb_text_inner, .ww-tier-featured .ww-tier-who .et_pb_text_inner p { color: rgba(255,255,255,.92); }
.ww-tier .ww-list { margin-top: 12px; }
.ww-tier-featured .ww-list li { color: rgba(255,255,255,.88); }
.ww-tier-featured .ww-list li::before { background: #E3BE7F; }
.ww-tier-app { margin-top: 14px; }
.ww-tier-app .et_pb_text_inner, .ww-tier-app .et_pb_text_inner p { font: 400 13px/1 'Marcellus', serif; letter-spacing: .16em; color: var(--ww-coral); }
.ww-tier-featured .ww-tier-app .et_pb_text_inner, .ww-tier-featured .ww-tier-app .et_pb_text_inner p { color: #E3BE7F; }
.ww-tiers-note { margin-top: 22px; }
.ww-tiers-note .et_pb_text_inner, .ww-tiers-note .et_pb_text_inner p { font: 500 13px/1.5 'Jost',sans-serif; color: #2E2044; }
.ww-step { background: rgba(255,255,255,.72); border: 1px solid rgba(255,255,255,.95); border-radius: 20px; padding: 30px 28px !important; backdrop-filter: blur(16px); -webkit-backdrop-filter: blur(16px); }
.ww-steps-sec { background: linear-gradient(180deg,#FDF2E7 0%, #FAE4E9 100%); }
.ww-step-num .et_pb_text_inner, .ww-step-num .et_pb_text_inner p { font: 400 14px/1 'Marcellus', serif; letter-spacing: .12em; color: var(--ww-coral); }
.ww-step-title { margin-top: 8px; }
.ww-step-title h3 { font: 600 23px/1.25 'Cormorant Garamond', serif; color: var(--ww-navy); margin: 0; padding: 0; }
.ww-step-body { margin-top: 8px; }
.ww-step-body .et_pb_text_inner, .ww-step-body .et_pb_text_inner p { font: 400 14px/1.58 'Jost',sans-serif; color: #2E2044; }
.ww-draftflag { background: #FBEDE2; }
.ww-draftflag .et_pb_text_inner, .ww-draftflag .et_pb_text_inner p { font: 500 12px/1.6 'Jost',sans-serif; letter-spacing: .06em; color: #8A5A2E; text-align: center; }

@media (max-width: 980px) {
  .ww-frow { flex-direction: column; gap: 20px; }
  .ww-frow > .et_pb_column { flex: 0 0 auto !important; width: 100% !important; }
  .ww-abouthero { background-position: center 20% !important; }
  .ww-prom { flex: 0 0 100%; }
  .ww-promgrid { gap: 14px; }
  .ww-tier, .ww-teamcard, .ww-pillar, .ww-step { padding: 26px 22px !important; }
  .ww-formcard { padding: 26px 22px !important; }
  .ww-statsband .ww-frow { gap: 22px; }
}

/* ============ punch list 7/17 PM ============ */
/* Book pill: white label + shorter/wider pill. Out-specifies the generic et-menu link
   rule (0,2,3), which was silently beating the (0,2,2) CTA rule for color AND padding. */
.ww-navm ul.et-menu > li.ww-menu-cta { align-self: center; }
.ww-navm ul.et-menu > li.ww-menu-cta > a, .ww-navm nav ul li.ww-menu-cta > a { color: #fff !important; padding: 14px 28px !important; }
.ww-navm ul.et-menu > li.ww-menu-cta > a:hover, .ww-navm nav ul li.ww-menu-cta > a:hover { color: #fff !important; opacity: 1 !important; }

/* equal-height card rows (contact methods, academy topics) */
.ww-eqrow > .et_pb_column { display: flex; }
.ww-eqrow > .et_pb_column > .et_pb_module { width: 100%; }

/* memberships page hero: plum band treatment to match the home membership band */
.ww-memhero { background: linear-gradient(135deg,#27133C 0%, #421E5B 55%, #27133C 100%); position: relative; overflow: clip; }
.ww-memhero::before { content:""; position:absolute; width:760px; height:420px; border-radius:50%; background: rgba(227,190,127,.13); filter: blur(120px); right:-120px; top:-160px; }
.ww-memhero::after { content:""; position:absolute; width:520px; height:520px; border-radius:50%; background: rgba(198,135,174,.10); filter: blur(120px); left:-140px; bottom:-120px; }
.ww-memhero .et_pb_row { position: relative; z-index: 2; }
.ww-memhero-frame { border: 1px solid rgba(227,190,127,.5); background: rgba(255,255,255,.045); border-radius: 4px; }
.ww-memhero .ww-eyebrow-m .et_pb_text_inner, .ww-memhero .ww-eyebrow-m .et_pb_text_inner p { color: #E3BE7F; letter-spacing: .32em; }
.ww-memhero .ww-pagehero-h1 h1 { color: #fff; }
.ww-memhero .ww-pagehero-sub .et_pb_text_inner, .ww-memhero .ww-pagehero-sub .et_pb_text_inner p { color: rgba(255,255,255,.92); }
.ww-memhero-micro { margin-top: 10px; }
.ww-memhero-micro .et_pb_text_inner, .ww-memhero-micro .et_pb_text_inner p { font: 400 12.5px/1.7 'Marcellus', serif; letter-spacing: .26em; color: rgba(255,255,255,.92); }

/* academy */
.ww-acadsec { background: #fff; }
.ww-acadsec .ww-method h4, .ww-acadsec .ww-method .et_pb_module_header { margin-top: 4px; }
.ww-askform { background: linear-gradient(180deg,#FFFFFF 0%, #FBEDE2 100%); }
.ww-askform-row { max-width: 760px !important; }

/* blog grid */
.ww-blogsec { background: linear-gradient(180deg,#FFFFFF 0%, #FDF0F6 100%); }
.ww-blogm .et_pb_post { background: #fff; border: 1px solid #F7DCE3; border-radius: 22px; padding: 30px 28px 26px; box-shadow: 0 12px 28px -8px rgba(216,90,50,.10); }
.ww-blogm .et_pb_post .entry-featured-image-url { display: block; margin: -30px -28px 20px; border-radius: 22px 22px 0 0; overflow: hidden; }
.ww-blogm .et_pb_post .entry-featured-image-url img { display: block; width: 100%; }
.ww-blogm .et_pb_post .entry-title { font: 600 25px/1.25 'Cormorant Garamond', serif; margin: 0 0 8px; padding: 0; }
.ww-blogm .et_pb_post .entry-title a { color: var(--ww-navy) !important; }
.ww-blogm .et_pb_post .post-meta, .ww-blogm .et_pb_post .post-meta a { font: 500 12px/1.4 'Jost',sans-serif; letter-spacing: .14em; text-transform: uppercase; color: var(--ww-coral) !important; }
.ww-blogm .et_pb_post .post-meta { margin: 0 0 12px; display: block; }
.ww-blogm .et_pb_post .post-content p { font: 400 14.5px/1.62 'Jost',sans-serif; color: #2E2044; }
.ww-blogm .et_pb_post .post-content a.more-link { display: inline-block; margin-top: 10px; font: 700 13.5px/1 'Jost',sans-serif; color: var(--ww-coral); }

@media (max-width: 980px) {
  .ww-memhero-frame { padding: 32px 20px !important; }
  .ww-askform-row { max-width: 100% !important; }
  .ww-blogm .et_pb_post { padding: 24px 20px 22px; }
  .ww-blogm .et_pb_post .entry-featured-image-url { margin: -24px -20px 16px; }
}

/* deco shapes: mobile scale/placement (per Mobile — Concept D frame) */
@media (max-width: 980px) {
  .ww-care { background: url(images/ww-deco-paws.svg?v=3) right 21px top 42px / 68px auto no-repeat, url(images/ww-deco-birdtracks.svg?v=3) left 24px bottom 40px / 100px auto no-repeat, linear-gradient(180deg,#FFFFFF 0%, #FCEEE9 55%, #FAE4E9 100%); }
  .ww-quote { background: url(images/ww-deco-feather-l1.svg?v=3) left 24px top 75px / 86px auto no-repeat, url(images/ww-deco-feather-l2.svg?v=3) left 30px top 148px / 72px auto no-repeat, url(images/ww-deco-feather-r.svg?v=3) right -28px top 109px / 70px auto no-repeat, linear-gradient(180deg,#F8DFEC 0%,#FCF0F6 42%,#FFFFFF 100%); }
}

/* ============ mobile 1:1 pass (Figma Mobile — Concept D 96:2) ============ */
.mbr { display: none; }
.ww-fwordmark img { height: 37px; width: auto; display: block; filter: brightness(0) invert(1); }
@media (max-width: 980px) {
  .ww-sec .mbr, .ww-tbheader .mbr { display: inline; }
  /* nav: wordmark · Book pill · burger in the floating pill (Figma 96:601) */
  .ww-navm-row { top: 50px; padding: 0 18px !important; }
  .ww-navm { padding: 14px 16px; }
  .ww-navm .et_pb_menu__logo img { max-height: 25px !important; }
  .ww-navm .et_pb_menu__menu { display: flex !important; }
  .ww-navm .et_pb_menu__menu ul.et-menu { display: flex; align-items: center; margin: 0; }
  .ww-navm .et_pb_menu__menu ul.et-menu > li { display: none; }
  .ww-navm .et_pb_menu__menu ul.et-menu > li.ww-menu-cta { display: block; margin: 0; }
  .ww-navm ul.et-menu > li.ww-menu-cta > a, .ww-navm nav ul li.ww-menu-cta > a { padding: 10px 15px !important; font-size: 13.5px !important; margin-left: 0; }
  .ww-navm .et_pb_menu__wrap { gap: 10px; }
  .ww-tbheader .ww-navm.et_pb_menu .et_mobile_nav_menu .mobile_menu_bar:before { color: var(--ww-navy, #1B2F5C) !important; font-size: 26px; }
  .ww-navm .et_mobile_nav_menu { padding: 4px 0; }
  /* dropdown CTA as a fitted pill */
  .ww-tbheader .ww-navm.et_pb_menu .et_mobile_menu li.ww-menu-cta { text-align: center; padding: 10px 0 14px; }
  .ww-tbheader .ww-navm.et_pb_menu .et_mobile_menu li.ww-menu-cta a { display: inline-block; width: auto; font: 700 15px/1 'Jost',sans-serif !important; background: var(--ww-grad-primary); border-radius: 999px; padding: 13px 30px !important; }
  /* hero: wave flourish behind CTAs (Figma 96:7) + 52px buttons */
  .ww-sec.ww-hero { background: url(images/ww-deco-herowave.svg?v=1) center top 434px / 100% auto no-repeat, linear-gradient(180deg,#FBEDE2 0%, #FDF5EC 60%, #FFFFFF 100%); }
  a.et_pb_button.ww-btnw, a.et_pb_button.ww-btnw:hover { padding: 18px 32px !important; }
  /* values strip: 59px, no hairlines */
  .ww-values { border-top: 0; border-bottom: 0; }
  .ww-values .et_pb_text_inner p { padding: 21px 8px; }
  /* membership band widths + type */
  .ww-mem .et_pb_row { width: calc(100% - 40px) !important; max-width: 350px; }
  .ww-mem-eyebrow .et_pb_text_inner, .ww-mem-eyebrow .et_pb_text_inner p { font-size: 11px; letter-spacing: .26em; }
  .ww-mem-micro .et_pb_text_inner, .ww-mem-micro .et_pb_text_inner p { font-size: 11px; }
  .ww-mem .et_pb_button_module_wrapper { text-align: center; }
  .ww-mem a.et_pb_button.ww-btnw { display: inline-block !important; width: auto !important; }
  /* care: third track cluster near swoosh (Figma group 9) */
  .ww-care { background: url(images/ww-deco-paws.svg?v=3) right 21px top 42px / 68px auto no-repeat, url(images/ww-deco-birdtracks.svg?v=3) left 46px bottom 30px / 100px auto no-repeat, url(images/ww-deco-birdtracks.svg?v=3) left 150px bottom 2px / 58px auto no-repeat, linear-gradient(180deg,#FFFFFF 0%, #FCEEE9 55%, #FAE4E9 100%); }
  /* footer: one-line links, centered bottom */
  .ww-footer-cols { gap: 20px; justify-content: flex-start; }
  .ww-fcol { flex: 0 0 auto; }
  .ww-fcol a { font-size: 11.5px; white-space: nowrap; }
  .ww-fbottom-in { text-align: center; font-size: 11px; }
  /* values: kill Divi's stacked-column margin + BOTH legacy padding layers (59px strip per Figma) */
  .ww-values .et_pb_column { margin-bottom: 0 !important; }
  .ww-values-in { padding: 0 !important; }
  .ww-values .et_pb_text_inner { padding: 21px 8px; }
  /* species card: solid fill on mobile — stacked glass rows show blur seams */
  .ww-species-cardrow { backdrop-filter: none; -webkit-backdrop-filter: none; background: rgba(255,255,255,.8); }
  /* membership perks column width per Figma */
  .ww-perk p { max-width: 270px; margin: 0 auto; }
}


/* ============ v4 stacked header (7/22 redesign: lockup above pill nav) ============ */
.ww-lockup-row { position: absolute !important; top: 50px; left: 0; right: 0; width: 100% !important; max-width: 100% !important; z-index: 61; text-align: center; pointer-events: none; background: transparent; }
.ww-lockup-row .et_pb_column { text-align: center; }
.ww-lockup { display: inline-flex; flex-direction: column; align-items: center; gap: 9px; pointer-events: auto; }
.ww-lockup-a { display: inline-flex; flex-direction: column; align-items: center; gap: 8px; }
.ww-lockup img.ww-lk-bird { height: 112px; width: auto; display: block; }
.ww-lk-script { font: 600 italic 34px/1 'Cormorant Garamond', serif; color: var(--ww-macaw); letter-spacing: .01em; }
.ww-lk-caps { font: 400 12.5px/1 'Marcellus', serif; letter-spacing: .3em; color: var(--ww-navy); text-transform: uppercase; padding-left: .3em; }
@media (min-width: 981px) { .ww-navm .et_pb_menu__logo-wrap, .ww-navm .et_pb_menu__logo { display: none !important; } }
@media (max-width: 980px) {
  .ww-lockup-row { display: none !important; }
  .ww-navm-row { top: 54px !important; }
  /* mobile pill budget: logo + shrunken CTA + burger must fit 390 */
  .ww-tbheader .ww-navm { padding: 4px 10px !important; }
  .ww-tbheader .ww-navm .et_pb_menu__logo-wrap img, .ww-tbheader .ww-navm .et_pb_menu__logo img { max-height: 17px !important; width: auto !important; }
  .ww-tbheader .ww-navm ul.et-menu li.ww-menu-cta > a { font-size: 11.5px !important; padding: 8px 11px !important; margin-left: 0 !important; white-space: nowrap; }
  .ww-tbheader .ww-navm ul.et-menu { gap: 0 !important; padding: 0 !important; margin: 0 !important; }
  .ww-tbheader .ww-navm .et_pb_menu__menu { margin: 0 !important; }
  .ww-tbheader .ww-navm .et_mobile_nav_menu { padding: 4px 0 4px 6px !important; }
  .ww-tbheader .ww-navm .et_pb_menu__wrap { flex: 0 1 auto; min-width: 0; justify-content: flex-end; }
  .ww-tbheader .ww-navm { display: flex !important; align-items: center; width: calc(100% - 48px) !important; max-width: calc(100% - 48px) !important; }
  .ww-tbheader .ww-navm .et_pb_menu_inner_container { display: flex !important; align-items: center; justify-content: space-between; width: 100%; }
}
/* dropdown panels */
.ww-navm nav ul li ul.sub-menu { background: #fff !important; border: 1px solid rgba(236,79,160,.18) !important; border-top: none !important; border-radius: 16px; box-shadow: 0 24px 56px -16px rgba(156,58,116,.28); padding: 10px !important; min-width: 238px; margin-top: 4px; }
.ww-navm nav ul li ul.sub-menu li { padding: 0 !important; }
.ww-navm nav ul li ul.sub-menu li a { font: 500 14px/1.3 'Jost',sans-serif !important; color: var(--ww-navy) !important; padding: 11px 14px !important; border-radius: 10px; width: 100%; opacity: 1 !important; background: transparent; }
.ww-navm nav ul li ul.sub-menu li a:hover { background: rgba(236,79,160,.08) !important; color: var(--ww-pinkbright) !important; }
.ww-navm ul.et-menu > li.menu-item-has-children > a:first-child::after { content: ""; display: inline-block; margin-left: 7px; vertical-align: 2px; border-left: 4px solid transparent; border-right: 4px solid transparent; border-top: 5px solid currentColor; opacity: .7; }
/* interior page hero clearance under the taller header (desktop; mobile rhythm block later re-asserts 140) */
.ww-sec.ww-pagehero { padding-top: 322px !important; }
.ww-sec.ww-hero { padding-top: 332px !important; }
/* dropdown hardening */
.ww-navm nav ul li ul.sub-menu li, .ww-navm .et-menu li li { float: none !important; display: block; width: 100% !important; padding: 0 !important; margin: 0 !important; }
.ww-navm .et-menu li ul, .ww-navm nav ul li ul { background: #fff !important; opacity: 1; z-index: 120 !important; }


/* ---- Our Team + Policies pages (v4) ---- */
.ww-founder-row { display: flex; align-items: center; gap: 48px; }
.ww-founder-row .et_pb_column { float: none; margin: 0 !important; }
.ww-founder-row .et_pb_column.et_pb_column_1_3 { flex: 0 0 300px; }
.ww-founder-img img { border-radius: 24px; box-shadow: 0 20px 48px -12px rgba(156,58,116,.2); }
.ww-founder-name h2 { font: 500 34px/1.2 'Cormorant Garamond', serif; color: var(--ww-navy); margin: 0 0 6px; padding: 0; }
.ww-founder-creds .et_pb_text_inner { font: 700 13px/1.4 'Jost',sans-serif; letter-spacing: .18em; color: var(--ww-pinkbright); text-transform: uppercase; }
.ww-foundersec .ww-body-m { margin-top: 14px; }
.ww-polcard { border-radius: 26px; border: 1px solid #F7DCE3; background: linear-gradient(135deg,#FFFFFF 0%, #FFF2F8 100%); box-shadow: 0 14px 32px -8px rgba(216,90,50,.10); padding: 40px 36px !important; }
.ww-polnote { border-radius: 20px; background: #fff; padding: 28px 26px !important; border: 1px solid #F7DCE3; }
.ww-polnotes .ww-frow { gap: 24px; }
@media (max-width: 980px) {
  .ww-founder-row { flex-direction: column; gap: 24px; }
  .ww-founder-row .et_pb_column.et_pb_column_1_3 { flex: 0 0 auto; }
}

/* ---- mobile panel fixes (7/22 v4.1) ---- */
/* card icons + avatar circles: retire coral gradient remnants */
.ww-card svg path, .ww-card svg circle, .ww-card svg rect { fill: var(--ww-pinkbright); }
.ww-team-av, .ww-avatar { background: linear-gradient(135deg,#C94D97,#C94C97) !important; }
/* burger touch target */
.ww-tbheader .ww-navm .mobile_menu_bar { padding: 12px 10px; margin: -12px -10px; }
@media (max-width: 980px) {
  /* About image-hero mobile: room + legibility */
  .ww-sec.ww-abouthero { padding-top: 150px !important; padding-bottom: 42px !important; }
  .ww-abouthero .ww-pagehero-h1 h1 { font-size: 30px; text-shadow: 0 2px 22px rgba(26,15,46,.55); }
  .ww-abouthero .ww-pagehero-sub .et_pb_text_inner { text-shadow: 0 1px 14px rgba(26,15,46,.6); }
  /* Team page: kill the dead gap between founder card and team grid */
  .ww-sec.ww-foundersec { padding-bottom: 8px !important; }
  .ww-founder-img img { max-height: 380px; object-fit: cover; width: 100%; }
}

/* birdcard medallion crop + pink placeholder (v4.1) */
.ww-birdcard .et_pb_main_blurb_image img { width: 96px; height: 96px; object-fit: cover; border-radius: 50%; }

/* ---- audit fixes (7/22 v4.2) ---- */
.ww-sec.ww-abouthero, .ww-sec.ww-memhero { padding-top: 322px !important; }
.ww-dvmstrip { background: var(--ww-navy) !important; }
.ww-mem .ww-perk p, .ww-mem-micro .et_pb_text_inner, .ww-mem-micro .et_pb_text_inner p { color: #fff !important; opacity: 1 !important; }
.ww-perk p { font-size: 15px; }
@media (max-width: 980px) {
  .ww-duo-row { flex-direction: column !important; }
  .ww-duo-row .et_pb_column { width: 100% !important; }
  .ww-polcard, .ww-polnote { flex-direction: column !important; }
  .ww-polcard .et_pb_module, .ww-polnote .et_pb_module { width: 100% !important; }
  .ww-tbheader .ww-navm ul.et-menu li.ww-menu-cta > a { font-size: 12px !important; padding: 16px 11px !important; }
  .ww-tbheader .ww-util a { display: inline-block; padding: 12px 4px; margin: -12px -4px; }
}
/* ============ mobile rhythm + polish pass 7/19 ============ */
/* Divi's generated custom_padding CSS loads AFTER this sheet — mobile section paddings need !important to win */
@media (max-width: 980px) {
  .ww-sec { padding-top: 64px !important; padding-bottom: 72px !important; }
  .ww-sec.ww-hero { padding-top: 128px !important; padding-bottom: 64px !important; }
  .ww-sec.ww-pagehero { padding-top: 140px !important; padding-bottom: 56px !important; }
  .ww-sec.ww-memhero { padding-top: 140px !important; padding-bottom: 72px !important; }
  .ww-sec.ww-values, .ww-sec.ww-footwrap { padding-top: 0 !important; padding-bottom: 0 !important; }
  .ww-sec.ww-care { padding-bottom: 96px !important; }
  .ww-sec.ww-species { padding-top: 8px !important; }
  .ww-sec.ww-van { padding-top: 92px !important; padding-bottom: 64px !important; }
  .ww-sec.ww-navystrip, .ww-sec.ww-dvmstrip { padding-top: 32px !important; padding-bottom: 32px !important; }
  .ww-sec.ww-draftflag { padding-top: 14px !important; padding-bottom: 14px !important; }
  .ww-sec.ww-photoband { padding-top: 0 !important; padding-bottom: 56px !important; }
  /* open nav: bar already carries the Book pill — drop the duplicate inside the dropdown */
  .ww-tbheader .ww-navm.et_pb_menu .et_mobile_menu li.ww-menu-cta { display: none; }
  .ww-tbheader .ww-navm.et_pb_menu .et_mobile_menu { padding-bottom: 10px; }
}

/* ============ single post template (default Divi body) ============ */
.single-post #main-content { background: linear-gradient(180deg,#FBEDE2 0%, #FDF5EC 30%, #FFFFFF 100%); }
.single-post #main-content .container { width: calc(100% - 48px); max-width: 820px; }
.single-post #content-area { padding: 170px 0 96px; }
.single-post #left-area { width: 100% !important; float: none; margin: 0 auto; padding-bottom: 0 !important; }
.single-post #sidebar { display: none; }
.single-post h1.entry-title { font: 500 46px/1.15 'Cormorant Garamond', serif; color: var(--ww-navy); margin-bottom: 8px; }
.single-post .et_post_meta_wrapper > p.post-meta, .single-post p.post-meta, .single-post .post-meta a { font: 600 12px/1.5 'Jost',sans-serif; letter-spacing: .14em; text-transform: uppercase; color: #E15A38 !important; }
.single-post .et_post_meta_wrapper img { border-radius: 20px; box-shadow: 0 20px 48px -12px rgba(156,58,116,.16); margin: 10px 0 6px; width: 100%; }
.single-post .entry-content { font: 400 16.5px/1.75 'Jost',sans-serif; color: var(--ww-ink); }
.single-post .entry-content p { margin-bottom: 18px; padding-bottom: 0 !important; }
.single-post .entry-content a { color: #E15A38; font-weight: 600; }
.single-post .entry-content a:hover { color: var(--ww-navy); }
@media (max-width: 980px) {
  .single-post #content-area { padding: 140px 0 72px; }
  .single-post h1.entry-title { font-size: 32px; }
}


/* ============ audit queue 7/23 (sticky nav · blog cards · mobile accordion · v4 link colors) ============ */

/* ---- sticky nav: the glass pill detaches and fixes to the top once the header scrolls out.
   JS (wp_footer) toggles body.ww-stuck with hysteresis; row is fixed with the pill centered. ---- */
body.ww-stuck .ww-navm-row { position: fixed !important; top: 14px !important; left: 0; right: 0; z-index: 9990; animation: wwNavDrop .32s cubic-bezier(.2,.7,.3,1); }
body.ww-stuck .ww-navm { box-shadow: 0 3px 9px -2px rgba(74,13,44,.10), 0 26px 60px -14px rgba(156,58,116,.32); }
@keyframes wwNavDrop { from { opacity: 0; transform: translateY(-22px); } to { opacity: 1; transform: translateY(0); } }
@media (max-width: 980px) {
  body.ww-stuck .ww-navm-row { top: 0 !important; padding: 0 !important; }
  body.ww-stuck .ww-tbheader .ww-navm { width: 100% !important; max-width: 100% !important; border-radius: 0 0 18px 18px; padding: 8px 14px !important; }
  body.ww-stuck .ww-tbheader .ww-navm .et_mobile_menu { max-height: calc(100vh - 76px); overflow: auto; -webkit-overflow-scrolling: touch; }
}

/* ---- blog cards: match the site card language (lift, image ratio, eyebrow-above-title) ---- */
.ww-blogm .et_pb_post { display: flex; flex-direction: column; border: 1px solid rgba(236,79,160,.16); border-radius: 24px; box-shadow: 0 14px 34px -10px rgba(156,58,116,.12); transition: transform .22s ease, box-shadow .22s ease; }
.ww-blogm .et_pb_post:hover { transform: translateY(-5px); box-shadow: 0 24px 52px -12px rgba(156,58,116,.20); }
.ww-blogm .et_pb_post .entry-featured-image-url { order: 0; border-radius: 24px 24px 0 0; }
.ww-blogm .et_pb_post .post-meta { order: 1; margin: 0 0 6px; }
.ww-blogm .et_pb_post .entry-title { order: 2; margin: 0 0 8px; }
.ww-blogm .et_pb_post .post-content { order: 3; }
.ww-blogm .et_pb_post .entry-featured-image-url img { aspect-ratio: 16 / 10; object-fit: cover; width: 100%; transition: transform .35s ease; }
.ww-blogm .et_pb_post:hover .entry-featured-image-url img { transform: scale(1.03); }
.ww-blogm .et_pb_post .entry-title a:hover { color: var(--ww-pinkbright) !important; }
.ww-blogm .et_pb_post .post-content a.more-link { font: 700 12.5px/1 'Jost',sans-serif; letter-spacing: .12em; text-transform: uppercase; color: var(--ww-pinkbright); }
.ww-blogm .et_pb_post .post-content a.more-link::after { content: " \2192"; letter-spacing: 0; }
.ww-blogm .et_pb_post .post-content a.more-link:hover { color: var(--ww-macaw); }

/* single post: retire legacy coral #E15A38 for the v4 pink system */
.single-post .et_post_meta_wrapper > p.post-meta, .single-post p.post-meta, .single-post .post-meta a { color: var(--ww-pinkbright) !important; }
.single-post .entry-content a { color: var(--ww-pinkbright); }
.single-post .entry-content a:hover { color: var(--ww-navy); }

/* ---- mobile menu: collapsed submenus + chevron accordion (JS injects .ww-subtoggle) ---- */
@media (max-width: 980px) {
  .ww-tbheader .et_mobile_menu li.menu-item-has-children { position: relative; }
  .ww-tbheader .et_mobile_menu li.menu-item-has-children > ul.sub-menu { display: none; padding-left: 12px !important; }
  .ww-tbheader .et_mobile_menu li.ww-open > ul.sub-menu { display: block; }
  .ww-tbheader .et_mobile_menu li.menu-item-has-children > a { padding-right: 56px !important; }
  .ww-subtoggle { position: absolute; right: 6px; top: 5px; width: 44px; height: 44px; background: transparent; border: 0; cursor: pointer; padding: 0; z-index: 2; }
  .ww-subtoggle::before { content: ""; position: absolute; left: 50%; top: 50%; width: 9px; height: 9px; border-right: 2px solid var(--ww-macaw); border-bottom: 2px solid var(--ww-macaw); transform: translate(-50%,-65%) rotate(45deg); transition: transform .2s ease; }
  .ww-tbheader .et_mobile_menu li.ww-open > .ww-subtoggle::before { transform: translate(-50%,-35%) rotate(225deg); }
  .ww-tbheader .et_mobile_menu li ul.sub-menu li a { font: 500 15px/1.5 'Jost',sans-serif !important; }
}

/* accordion collapse: Divi's late-loading stylesheet needs the !important (same gotcha as mobile paddings) */
@media (max-width: 980px) {
  .ww-tbheader .et_mobile_menu li.menu-item-has-children > ul.sub-menu { display: none !important; }
  .ww-tbheader .et_mobile_menu li.ww-open > ul.sub-menu { display: block !important; }
}

/* ============ stuck-nav crest medallion (7/23 PM) ============ */
/* Crest lives in Divi's own et_pb_menu__logo-slot li (menu's designed center point,
   between Conservation and Wildlife). Renders ONLY under body.ww-stuck — unscrolled
   state is untouched. Mobile gets .ww-crest-m (medallion + script in the stuck bar). */

/* desktop: headroom for the upward protrusion (scoped — mobile bar stays flush-top) */
@media (min-width: 981px) {
  body.ww-stuck .ww-navm-row { top: 24px !important; }
  .ww-navm ul.et-menu > li.et_pb_menu__logo-slot { position: relative; }
  body.ww-stuck .ww-navm ul.et-menu > li.et_pb_menu__logo-slot { min-width: 104px; }
  /* Divi's .et-menu li a { display:block } out-specifies a bare class — match it and raise */
  .ww-navm li.et_pb_menu__logo-slot a.ww-crest { display: none; }
  body.ww-stuck .ww-navm li.et_pb_menu__logo-slot a.ww-crest { display: flex; align-items: center; justify-content: center; position: absolute; left: 50%; top: 50%; width: 88px; height: 88px; padding: 0 !important; border-radius: 50%; background: rgba(255,255,255,.78); border: 1px solid rgba(255,255,255,.92); backdrop-filter: blur(22px); -webkit-backdrop-filter: blur(22px); box-shadow: 0 3px 8px -2px rgba(74,13,44,.08), 0 18px 40px -12px rgba(156,58,116,.30); animation: wwCrestIn .4s cubic-bezier(.2,.7,.3,1) both; }
  .ww-crest img { width: 58px; height: auto; display: block; }
}
@keyframes wwCrestIn { from { opacity: 0; transform: translate(-50%,-50%) scale(.55); } to { opacity: 1; transform: translate(-50%,-50%) scale(1); } }

/* the crest must overflow the pill chrome */
.ww-navm, .ww-navm .et_pb_menu_inner_container, .ww-navm .et_pb_menu__wrap, .ww-navm .et_pb_menu__menu, .ww-navm nav.et-menu-nav { overflow: visible !important; }

/* never leak into the mobile dropdown clone */
.et_mobile_menu .ww-crest, .et_mobile_menu .et_pb_menu__logo-slot { display: none !important; }

/* mobile: medallion + script in the stuck bar; medallion hangs below the flush-top bar */
.ww-crest-m { display: none; }
@media (max-width: 980px) {
  .ww-crest { display: none !important; }
  body.ww-stuck .ww-tbheader .ww-navm { position: relative; }
  body.ww-stuck .ww-crest-m { display: flex; position: absolute; left: 8px; top: -4px; width: 62px; height: 62px; border-radius: 50%; background: rgba(255,255,255,.88); border: 1px solid rgba(255,255,255,.95); backdrop-filter: blur(18px); -webkit-backdrop-filter: blur(18px); box-shadow: 0 10px 26px -8px rgba(156,58,116,.35); align-items: center; justify-content: center; z-index: 3; animation: wwCrestMIn .4s cubic-bezier(.2,.7,.3,1) both; }
  body.ww-stuck .ww-crest-m img { width: 40px; height: auto; display: block; }
  body.ww-stuck .ww-tbheader .ww-navm .et_pb_menu__logo-wrap { margin-left: 72px !important; }
  body.ww-stuck .ww-tbheader .ww-navm .et_pb_menu__logo-wrap img, body.ww-stuck .ww-tbheader .ww-navm .et_pb_menu__logo img { max-height: 15px !important; }
}
@keyframes wwCrestMIn { from { opacity: 0; transform: scale(.55); } to { opacity: 1; transform: scale(1); } }

/* ---- crest verify-pass fixes (7/23 PM): mobile width budget · dropdown layering · focus ring ---- */
@media (max-width: 980px) {
  /* medallion rides ABOVE the open dropdown's top edge instead of being sliced by it */
  body.ww-stuck .ww-crest-m { left: 4px; top: -4px; width: 60px; height: 60px; z-index: 10001; }
  body.ww-stuck .ww-crest-m img { width: 39px; }
  /* width budget: slimmer script + shrink-tolerant wrap keeps the burger on-screen */
  body.ww-stuck .ww-tbheader .ww-navm .et_pb_menu__logo-wrap { margin-left: 68px !important; flex: 0 1 auto !important; min-width: 0; overflow: hidden; }
  body.ww-stuck .ww-tbheader .ww-navm .et_pb_menu__logo-wrap img, body.ww-stuck .ww-tbheader .ww-navm .et_pb_menu__logo img { max-height: 13px !important; max-width: 100%; width: auto; }
}
/* narrow stuck: the medallion carries the brand alone — script would push the burger offscreen;
   with the script gone, right-align the CTA+burger (space-between would left-hug them under the medallion) */
@media (max-width: 385px) {
  body.ww-stuck .ww-tbheader .ww-navm .et_pb_menu__logo-wrap { display: none !important; }
  body.ww-stuck .ww-tbheader .ww-navm .et_pb_menu__wrap { margin-left: auto; }
}
/* pre-existing (unstuck-only) narrow-pill clip at <=374px: slim the script + CTA so the burger fits */
@media (max-width: 374px) {
  body:not(.ww-stuck) .ww-tbheader .ww-navm .et_pb_menu__logo-wrap img, body:not(.ww-stuck) .ww-tbheader .ww-navm .et_pb_menu__logo img { max-height: 14px !important; }
  body:not(.ww-stuck) .ww-tbheader .ww-navm ul.et-menu li.ww-menu-cta > a { font-size: 11px !important; padding: 14px 9px !important; }
}
/* keyboard focus: visible ring on both crest links */
.ww-crest:focus-visible, .ww-crest-m:focus-visible { outline: 3px solid var(--ww-pinkbright, #C94D97) !important; outline-offset: 3px; border-radius: 50%; }

/* ============ stuck-nav v2: notch-tab lockup (Nick mock 7/23 PM) ============ */
/* Desktop stuck bar: near-opaque white, wider, with the full mini-lockup rising out of the
   bar's top edge in a smooth SVG hump. Bottom edge stays flat. Entrance is one unified
   fast slide (bar + tab move together). Unscrolled state untouched. */
@media (min-width: 981px) {
  body.ww-stuck .ww-navm-row { top: 50px !important; animation: wwNavIn2 .22s cubic-bezier(.22,.9,.32,1) both; }
  body.ww-stuck .ww-navm { background: rgba(255,255,255,.95) !important; border-color: rgba(255,255,255,.98); backdrop-filter: blur(16px); -webkit-backdrop-filter: blur(16px); width: min(1340px, calc(100vw - 80px)) !important; padding: 11px 26px; }
  body.ww-stuck .ww-navm .et_pb_menu_inner_container, body.ww-stuck .ww-navm .et_pb_menu__wrap, body.ww-stuck .ww-navm .et_pb_menu__menu { width: 100% !important; }
  body.ww-stuck .ww-navm ul.et-menu { width: 100%; justify-content: space-between; flex-wrap: nowrap !important; }
  body.ww-stuck .ww-navm ul.et-menu > li > a { padding: 14px 7px !important; font-size: 13.5px !important; }
  body.ww-stuck .ww-navm ul.et-menu > li.ww-menu-cta > a { padding: 14px 24px !important; font-size: 13.5px !important; }
  body.ww-stuck .ww-navm ul.et-menu > li.et_pb_menu__logo-slot { min-width: 180px; }
  /* crest v2 tab: replaces the v1 circle entirely */
  body.ww-stuck .ww-navm li.et_pb_menu__logo-slot a.ww-crest { display: block; position: absolute; left: 50%; top: 50%; transform: translate(-50%,-50%); width: 180px; height: 42px; padding: 0 !important; background: transparent; border: 0; box-shadow: none; border-radius: 0; backdrop-filter: none; -webkit-backdrop-filter: none; animation: none; }
  .ww-crest--tab .ww-tab-hump { display: none; }
  body.ww-stuck .ww-crest--tab .ww-tab-hump { display: block; position: absolute; left: 50%; transform: translateX(-50%); top: -58px; width: 268px; height: 58px; filter: drop-shadow(0 -2px 8px rgba(74,13,44,.05)) drop-shadow(0 8px 20px rgba(156,58,116,.08)); }
  .ww-crest--tab .ww-tab-bird, .ww-crest--tab .ww-lk-script, .ww-crest--tab .ww-lk-caps { display: none; }
  body.ww-stuck .ww-crest--tab .ww-tab-bird { display: block; position: absolute; left: 50%; transform: translateX(-50%); top: -47px; width: auto !important; height: 46px; transition: transform .25s ease; }
  body.ww-stuck .ww-crest--tab:hover .ww-tab-bird { transform: translateX(-50%) scale(1.05); }
  body.ww-stuck .ww-crest--tab .ww-lk-script { display: block; position: absolute; left: 50%; transform: translateX(-50%); top: 2px; font-size: 17.5px; line-height: 1; white-space: nowrap; }
  body.ww-stuck .ww-crest--tab .ww-lk-caps { display: block; position: absolute; left: 50%; transform: translateX(-50%); top: 25px; font-size: 7.5px; line-height: 1; letter-spacing: .28em; white-space: nowrap; }
  body.ww-stuck .ww-crest--tab:focus-visible { outline: 3px solid var(--ww-pinkbright, #C94D97) !important; outline-offset: 4px; border-radius: 14px; }
  /* compact tier for small desktops / iPad landscape: bird-only tab, tighter links */
  @media (max-width: 1280px) {
    body.ww-stuck .ww-navm ul.et-menu > li > a { padding: 14px 5px !important; font-size: 13px !important; }
    body.ww-stuck .ww-navm ul.et-menu > li.ww-menu-cta > a { padding: 14px 18px !important; font-size: 13px !important; }
    body.ww-stuck .ww-navm ul.et-menu > li.et_pb_menu__logo-slot { min-width: 128px; }
    body.ww-stuck .ww-navm li.et_pb_menu__logo-slot a.ww-crest { width: 128px; }
    body.ww-stuck .ww-crest--tab .ww-lk-script, body.ww-stuck .ww-crest--tab .ww-lk-caps { display: none; }
    body.ww-stuck .ww-crest--tab .ww-tab-hump { width: 196px; height: 50px; top: -50px; }
    body.ww-stuck .ww-crest--tab .ww-tab-bird { height: 44px; top: -44px; }
  }
}
@keyframes wwNavIn2 { from { opacity: 0; transform: translateY(-10px); } to { opacity: 1; transform: translateY(0); } }
/* mobile stuck bar joins the near-opaque treatment */
@media (max-width: 980px) {
  body.ww-stuck .ww-tbheader .ww-navm { background: rgba(255,255,255,.95) !important; }
  body.ww-stuck .ww-crest-m { background: rgba(255,255,255,.96); }
}

/* ============ stuck-nav v3 (7/23 /web-dev round): page-centered lockup · seam kill · +20% logo ============ */
@media (min-width: 981px) {
  /* taller hump needs more headroom */
  body.ww-stuck .ww-navm-row { top: 64px !important; }
  /* bar: borderless when stuck (the 1px near-white border read as a seam across the dome base) */
  body.ww-stuck .ww-navm { position: relative; border: 0 !important; }
  /* slot becomes a pure in-flow gap; the crest re-anchors to the BAR so the lockup centers on the page */
  /* spacing model v3: links pack from the bar ends with a fixed rhythm; the slot is the flexible
     center gap (its center lands within ~20px of bar center; the lockup itself anchors to the bar) */
  body.ww-stuck .ww-navm ul.et-menu { justify-content: center; }
  body.ww-stuck .ww-navm ul.et-menu > li { margin: 0 6px; }
  body.ww-stuck .ww-navm ul.et-menu > li.et_pb_menu__logo-slot { position: static !important; flex: 1 1 160px; min-width: 200px; margin: 0; }
  body.ww-stuck .ww-navm li.et_pb_menu__logo-slot a.ww-crest { width: 224px; height: 42px; z-index: 1; }
  /* +20% lockup; hump tucks 2px under the bar top (single-alpha junction, no downward shadow => no seam) */
  body.ww-stuck .ww-crest--tab .ww-tab-hump { width: 302px; height: 62px; top: -70px; filter: drop-shadow(0 -1px 5px rgba(74,13,44,.05)); }
  body.ww-stuck .ww-crest--tab .ww-tab-bird { height: 55px !important; max-height: none !important; width: auto !important; top: -62px; }
  body.ww-stuck .ww-crest--tab .ww-lk-script { font-size: 21px; top: 2px; }
  body.ww-stuck .ww-crest--tab .ww-lk-caps { font-size: 9px; top: 28px; }
  /* compact tier scales with it */
  @media (max-width: 1280px) {
    body.ww-stuck .ww-navm ul.et-menu > li.et_pb_menu__logo-slot { min-width: 156px; }
    body.ww-stuck .ww-navm li.et_pb_menu__logo-slot a.ww-crest { width: 156px; }
    body.ww-stuck .ww-crest--tab .ww-tab-hump { width: 232px; height: 56px; top: -64px; }
    body.ww-stuck .ww-crest--tab .ww-tab-bird { height: 50px !important; max-height: none !important; width: auto !important; top: -56px; }
  }
}

/* ============ stuck-nav v4 (7/23 PM): solid bar · edge-to-edge both states · no left-snap ============ */
@media (min-width: 1281px) {
  /* ONE geometry for both states: bar spans to the viewport edges; links carry a fixed rhythm and
     pack outward from both ends; the slot flex-GROWS to absorb the center leftover, so the gap
     self-centers in every state and the scroll transition is a smooth part-and-slide. */
  .ww-navm, body.ww-stuck .ww-navm { width: calc(100vw - 56px) !important; }
  .ww-navm .et_pb_menu_inner_container, .ww-navm .et_pb_menu__wrap, .ww-navm .et_pb_menu__menu, .ww-navm .et_pb_menu__menu nav, .ww-navm nav.et-menu-nav { width: 100% !important; }
  .ww-navm .et_pb_menu__menu ul.et-menu, body.ww-stuck .ww-navm .et_pb_menu__menu ul.et-menu { width: 100% !important; justify-content: flex-start !important; flex-wrap: nowrap !important; }
  .ww-navm ul.et-menu > li, body.ww-stuck .ww-navm ul.et-menu > li { margin: 0 5px !important; }
  .ww-navm ul.et-menu > li.et_pb_menu__logo-slot, body.ww-stuck .ww-navm ul.et-menu > li.et_pb_menu__logo-slot { flex: 1 1 44px !important; min-width: 44px; margin: 0 !important; transition: min-width .25s ease; }
  body.ww-stuck .ww-navm ul.et-menu > li.et_pb_menu__logo-slot { min-width: 224px !important; }
  /* smooth the link resize that makes room for the crest */
  .ww-navm ul.et-menu > li > a { transition: font-size .22s ease, padding .22s ease; }
  /* align bar side padding across states so the pinned end items don't shift */
  body.ww-stuck .ww-navm { padding-left: 22px !important; padding-right: 22px !important; }
  /* right-group room so the page-centered script keeps clearance from Wildlife */
  body.ww-stuck .ww-navm ul.et-menu > li.ww-menu-cta > a { padding: 14px 16px !important; }
}
@media (min-width: 981px) {
  /* solid sticky bar (no transparency); the dropdown gets the tiny bit instead */
  body.ww-stuck .ww-navm { background: #ffffff !important; backdrop-filter: none; -webkit-backdrop-filter: none; }
  body.ww-stuck .ww-tab-hump path { fill: #ffffff; fill-opacity: 1 !important; }
  .ww-tbheader .ww-navm.et_pb_menu nav ul li ul.sub-menu { background: rgba(255,255,255,.93) !important; backdrop-filter: blur(14px); -webkit-backdrop-filter: blur(14px); }
}
/* mobile sticky bar + medallion: solid; mobile dropdown keeps a whisper */
@media (max-width: 980px) {
  body.ww-stuck .ww-tbheader .ww-navm { background: #ffffff !important; backdrop-filter: none; -webkit-backdrop-filter: none; }
  body.ww-stuck .ww-crest-m { background: #ffffff; backdrop-filter: none; -webkit-backdrop-filter: none; }
  .ww-tbheader .ww-navm.et_pb_menu .et_mobile_menu, .ww-tbheader .ww-navm.et_pb_menu .et_mobile_menu ul { background-color: rgba(253,245,236,.96) !important; backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px); }
}

/* ============ audit round 2 fixes (7/23 PM): 981-1366 band · keyboard a11y · anchors · polish ============ */

/* ---- 981-1366: the 10-item desktop nav cannot fit these widths (audit: Book pill off-viewport
   at 1024). The band now uses the mobile-bar treatment in BOTH states: compact pill with script +
   CTA + burger unscrolled; full-width solid bar with medallion when stuck. ---- */
@media (min-width: 981px) and (max-width: 1280px) {
  .ww-lockup-row { display: none !important; }
  .ww-navm-row { top: 46px; padding: 0 24px !important; }
  .ww-navm { display: flex !important; width: min(560px, 100%) !important; margin: 0 auto; padding: 6px 12px !important; }
  .ww-navm .et_pb_menu__logo-wrap, .ww-navm .et_pb_menu__logo { display: flex !important; }
  .ww-navm .et_pb_menu__logo img { max-height: 22px !important; width: auto !important; }
  .ww-navm .et_pb_menu_inner_container { display: flex !important; align-items: center !important; justify-content: space-between !important; flex-wrap: nowrap !important; width: 100%; }
  .ww-navm .et_pb_menu__wrap, .ww-navm .et_pb_menu__menu, .ww-navm .et_pb_menu__menu nav { width: auto !important; flex: 0 0 auto; }
  .ww-navm .et_pb_menu__menu { display: flex !important; }
  .ww-navm .et_pb_menu__menu ul.et-menu { display: flex !important; align-items: center; margin: 0; width: auto !important; }
  .ww-navm ul.et-menu > li { display: none; margin: 0 !important; }
  .ww-navm ul.et-menu > li.ww-menu-cta { display: block !important; }
  .ww-navm ul.et-menu > li.ww-menu-cta > a { padding: 12px 22px !important; font-size: 13.5px !important; }
  .ww-navm .et_mobile_nav_menu { display: flex !important; order: 2; padding: 4px 0 4px 8px; }
  .ww-navm .mobile_menu_bar:before { color: var(--ww-navy, #1B2F5C); font-size: 28px; }
  .ww-navm ul.et-menu > li.et_pb_menu__logo-slot { display: none !important; }
  /* desktop crest pieces must not render in this band */
  body.ww-stuck .ww-crest, body.ww-stuck .ww-crest--tab .ww-tab-hump, body.ww-stuck .ww-crest--tab .ww-tab-bird, body.ww-stuck .ww-crest--tab .ww-lk-script, body.ww-stuck .ww-crest--tab .ww-lk-caps { display: none !important; }
  /* hero clearance for the shorter header */
  .ww-sec.ww-hero { padding-top: 200px !important; }
  .ww-sec.ww-pagehero, .ww-sec.ww-abouthero, .ww-sec.ww-memhero { padding-top: 190px !important; }
  /* dropdown panel (mobile clone) usable in band: collapsed accordion + chevrons */
  .ww-tbheader .ww-navm .et_mobile_menu li.menu-item-has-children { position: relative; }
  .ww-tbheader .et_mobile_menu li.menu-item-has-children > ul.sub-menu { display: none !important; padding-left: 12px !important; }
  .ww-tbheader .et_mobile_menu li.ww-open > ul.sub-menu { display: block !important; }
  .ww-tbheader .et_mobile_menu li.menu-item-has-children > a { padding-right: 56px !important; }
  .ww-tbheader .et_mobile_menu li a { font: 500 18px/1.6 'Cormorant Garamond', serif !important; color: var(--ww-navy) !important; }
  .ww-tbheader .ww-navm.et_pb_menu .et_mobile_menu li.ww-menu-cta { display: none; }
  .ww-subtoggle { position: absolute; right: 6px; top: 5px; width: 44px; height: 44px; background: transparent; border: 0; cursor: pointer; padding: 0; z-index: 2; }
  .ww-subtoggle::before { content: ""; position: absolute; left: 50%; top: 50%; width: 9px; height: 9px; border-right: 2px solid var(--ww-macaw); border-bottom: 2px solid var(--ww-macaw); transform: translate(-50%,-65%) rotate(45deg); transition: transform .2s ease; }
  .ww-tbheader .et_mobile_menu li.ww-open > .ww-subtoggle::before { transform: translate(-50%,-35%) rotate(225deg); }
  /* stuck: mobile-style solid full-width bar + medallion */
  body.ww-stuck .ww-navm-row { top: 0 !important; padding: 0 !important; }
  body.ww-stuck .ww-tbheader .ww-navm { position: relative; width: 100% !important; max-width: 100% !important; border-radius: 0 0 18px 18px; padding: 8px 18px !important; background: #ffffff !important; }
  body.ww-stuck .ww-crest-m { display: flex; position: absolute; left: 10px; top: -4px; width: 62px; height: 62px; border-radius: 50%; background: #ffffff; border: 1px solid rgba(255,255,255,.95); box-shadow: 0 10px 26px -8px rgba(156,58,116,.35); align-items: center; justify-content: center; z-index: 10001; animation: wwCrestMIn .4s cubic-bezier(.2,.7,.3,1) both; }
  body.ww-stuck .ww-crest-m img { width: 40px; height: auto; display: block; }
  body.ww-stuck .ww-tbheader .ww-navm .et_pb_menu__logo-wrap { margin-left: 66px !important; }
  body.ww-stuck .ww-tbheader .ww-navm .et_mobile_menu { max-height: calc(100vh - 90px); overflow: auto; }
}

/* ---- keyboard accessibility (all widths) ---- */
.ww-tbheader .ww-util a:focus-visible, .ww-navm ul.et-menu > li > a:focus-visible, .ww-navm ul.sub-menu li a:focus-visible, .ww-lockup-a:focus-visible, .ww-navm .mobile_menu_bar:focus-visible, .ww-tbheader .et_mobile_menu a:focus-visible, .ww-subtoggle:focus-visible { outline: 2px solid var(--ww-macaw, #C94C97) !important; outline-offset: 3px; border-radius: 8px; }
/* dropdowns open for keyboard focus exactly like hover */
.ww-navm li.menu-item-has-children:focus-within > ul.sub-menu { visibility: visible !important; opacity: 1 !important; }

/* ---- anchor landings clear the fixed bar ---- */
[id] { scroll-margin-top: 150px; }
@media (max-width: 980px) { [id] { scroll-margin-top: 96px; } }

/* ---- polish: footer tel link off Divi-blue; hero H1 widow ---- */
.ww-fbottom-in a { color: rgba(255,255,255,.85) !important; }
.ww-fbottom-in a:hover { color: var(--ww-pinkbright, #C94D97) !important; }
.ww-h1, .ww-h1 h1, .ww-pagehero-h1 h1 { text-wrap: balance; }

/* ---- audit round 2b: band unstuck strength + anchor headroom ---- */
@media (min-width: 981px) and (max-width: 1280px) {
  .ww-navm ul.et-menu > li { display: none !important; }
  .ww-navm ul.et-menu > li.ww-menu-cta { display: block !important; }
  .ww-navm ul.et-menu > li.et_pb_menu__logo-slot { display: none !important; }
}
[id] { scroll-margin-top: 200px; }
@media (max-width: 980px) { [id] { scroll-margin-top: 120px; } }

/* hero H1: balance the break (the widow 'Nest' at ~1440) — module class is ww-h1-m */
.ww-h1-m h1, .ww-pagehero-h1 h1 { text-wrap: balance; }

/* band: keep CTA + burger on one row inside the wrap */
@media (min-width: 981px) and (max-width: 1280px) {
  .ww-navm .et_pb_menu__wrap { display: flex !important; align-items: center !important; flex-wrap: nowrap !important; }
  .ww-navm .et_pb_menu__wrap > * { flex: 0 0 auto; }
}

/* band stuck: out-rank the desktop stuck width-chain so the bar lays out [script | CTA+burger] */
@media (min-width: 981px) and (max-width: 1280px) {
  body.ww-stuck .ww-navm .et_pb_menu__wrap, body.ww-stuck .ww-navm .et_pb_menu__menu, body.ww-stuck .ww-navm .et_pb_menu__menu nav { width: auto !important; flex: 0 0 auto !important; }
  body.ww-stuck .ww-navm .et_pb_menu_inner_container { display: flex !important; justify-content: space-between !important; align-items: center !important; width: 100% !important; }
  body.ww-stuck .ww-navm .et_pb_menu__logo-wrap { flex: 0 1 auto !important; min-width: 0; }
  body.ww-stuck .ww-tbheader .ww-navm .et_pb_menu__logo img { max-height: 18px !important; }
  .ww-tbheader .ww-navm.et_pb_menu .et_mobile_nav_menu .mobile_menu_bar:before { color: #1B2F5C !important; font-size: 28px; }
}

/* ============ nav v5 (7/23 PM): pill back to its previous size; items spread center-out to the pill edges ============ */
@media (min-width: 1281px) {
  .ww-navm, body.ww-stuck .ww-navm { width: min(1340px, calc(100vw - 80px)) !important; }
  .ww-navm .et_pb_menu__menu ul.et-menu, body.ww-stuck .ww-navm .et_pb_menu__menu ul.et-menu { display: flex; align-items: center !important; justify-content: space-between !important; width: 100% !important; }
}

/* crest padding: taller dome, phoenix gets breathing room top AND bottom (bar sits 12px lower to fit the rise) */
@media (min-width: 1281px) {
  body.ww-stuck .ww-navm-row { top: 76px !important; }
  body.ww-stuck .ww-crest--tab .ww-tab-hump { width: 330px; height: 74px; top: -82px; }
}

/* ============ mobile nav v2 (7/23 eve): Book pill out of the bar · logo always visible ============ */
@media (max-width: 980px) {
  /* the Book pill leaves the bar... */
  .ww-navm .et_pb_menu__menu ul.et-menu > li.ww-menu-cta { display: none !important; }
  /* ...and lives in the menu instead (existing fitted-pill styling applies) */
  .ww-tbheader .ww-navm.et_pb_menu .et_mobile_menu li.ww-menu-cta { display: block !important; }
  /* logo: ALWAYS on — undo the narrow-width stuck hiding, relax the squeeze the CTA forced */
  body.ww-stuck .ww-tbheader .ww-navm .et_pb_menu__logo-wrap { display: flex !important; margin-left: 70px !important; flex: 0 1 auto !important; min-width: 0; overflow: hidden; }
  body.ww-stuck .ww-tbheader .ww-navm .et_pb_menu__logo-wrap img, body.ww-stuck .ww-tbheader .ww-navm .et_pb_menu__logo img { max-height: 16px !important; }
  body.ww-stuck .ww-tbheader .ww-navm .et_pb_menu__wrap { margin-left: 0 !important; }
}
@media (max-width: 980px) {
  /* pin the burger to the bar's right edge (the empty menu slot was holding a phantom gap) */
  .ww-tbheader .ww-navm .et_pb_menu__wrap { flex: 1 1 auto !important; display: flex !important; justify-content: flex-end !important; align-items: center !important; }
  .ww-tbheader .ww-navm .et_pb_menu__menu { flex: 0 0 auto !important; width: auto !important; }
}
@media (max-width: 980px) {
  /* Divi renders a phantom module-level logo-slot div as a third flex child — it hijacks space-between */
  .ww-navm .et_pb_menu_inner_container > .et_pb_menu__logo-slot { display: none !important; }
}

/* ============ mobile audit fixes (7/23 eve): menu modal bundle · type/tap polish · edge widths ============ */
@media (max-width: 980px) {
  /* menu panel: OPAQUE (translucency ghosted page copy through rows); desktop dropdowns keep their glass */
  .ww-tbheader .ww-navm.et_pb_menu .et_mobile_menu, .ww-tbheader .ww-navm.et_pb_menu .et_mobile_menu ul { background-color: #FDF5EC !important; backdrop-filter: none !important; -webkit-backdrop-filter: none !important; }
  /* menu scrolls in EVERY state/orientation; Book pill stays pinned at the visible bottom */
  .ww-tbheader .ww-navm .et_mobile_menu { max-height: calc(100dvh - 130px) !important; overflow-y: auto !important; overscroll-behavior: contain; }
  .ww-tbheader .ww-navm.et_pb_menu .et_mobile_menu li.ww-menu-cta { position: sticky; bottom: 0; background: #FDF5EC; padding-top: 8px; box-shadow: 0 -8px 16px -8px rgba(156,58,116,.15); }
  /* burger becomes an X while open (ETmodules glyph) */
  .ww-navm .mobile_nav.opened .mobile_menu_bar:before { content: "\4d"; }
  /* menu scrim (JS injects .ww-menu-scrim; tap closes) */
  .ww-menu-scrim { position: fixed; inset: 0; background: rgba(27,15,46,.35); z-index: 9980; opacity: 0; transition: opacity .2s ease; pointer-events: none; }
  body.ww-menu-open .ww-menu-scrim { opacity: 1; pointer-events: auto; }
  .ww-tbheader .ww-navm .et_mobile_menu, .ww-navm .et_mobile_nav_menu { z-index: 9990; position: relative; }
  /* tel row in the menu (JS injects li.ww-menu-tel before the CTA) */
  .ww-tbheader .ww-navm.et_pb_menu .et_mobile_menu li.ww-menu-tel { text-align: center; padding: 6px 0 2px; }
  .ww-tbheader .ww-navm.et_pb_menu .et_mobile_menu li.ww-menu-tel a { display: inline-block; width: auto; font: 600 15px/1 'Jost',sans-serif !important; color: var(--ww-navy) !important; border: 1.5px solid rgba(27,47,92,.35); border-radius: 999px; padding: 12px 26px !important; }
  /* tap targets: utility bar, footer, card links */
  .ww-tbheader .ww-util a { display: inline-block; padding: 12px 6px; margin: -12px -6px; }
  .ww-fcol a { display: inline-block; padding: 6px 0; font-size: 12.5px !important; }
  .ww-fbottom-in a { display: inline-block; padding: 10px 4px; margin: -10px -4px; }
  .ww-link, .ww-blogm .et_pb_post .post-content a.more-link { display: inline-block; padding: 10px 0; margin: -6px 0; }
  /* small-type floor: quote attribution, tier badge, about-hero credit legibility */
  .ww-quote-cite .et_pb_text_inner, .ww-quote-cite .et_pb_text_inner p { font-size: 12px; }
  .ww-tier-tag .et_pb_text_inner, .ww-tier-tag .et_pb_text_inner p { font-size: 11.5px; }
  .ww-abouthero-cred .et_pb_text_inner, .ww-abouthero-cred .et_pb_text_inner p { text-shadow: 0 1px 14px rgba(26,15,46,.65); }
  /* membership band: full-alpha link (0.85 white read at ~2.9:1) */
  .ww-mem a, .ww-mem .ww-link { color: #ffffff !important; opacity: 1 !important; }
  /* blog featured image stays inside its card */
  .ww-blogm .et_pb_post { overflow: hidden; }
  /* glass cards: solid on mobile (perf; backgrounds are near-flat cream anyway) */
  .ww-card { backdrop-filter: none !important; -webkit-backdrop-filter: none !important; background: rgba(255,255,255,.85); }
}
/* memberships hero: no more mid-word breaks on small phones */
@media (max-width: 430px) {
  .ww-memhero-frame { padding-left: 18px !important; padding-right: 18px !important; }
  .ww-memhero .ww-pagehero-h1 h1 { font-size: clamp(24px, 8.5vw, 34px); overflow-wrap: normal; word-break: keep-all; }
  .ww-memhero .ww-eyebrow-m .et_pb_text_inner, .ww-memhero .ww-eyebrow-m .et_pb_text_inner p { letter-spacing: .18em; white-space: normal; }
}
/* 320-class: footer columns wrap (kills the 5px page pan), slimmer utility bar, email fits */
@media (max-width: 374px) {
  .ww-footer-cols { flex-wrap: wrap !important; }
  .ww-util { font-size: 11.5px; }
  .ww-util .ww-util-in { padding: 8px 12px; }
  .ww-method .ww-method-big { font-size: 15px; }
}

/* 320-class: footer column headings/links must be allowed to wrap (nowrap forced 304px min-width) */
@media (max-width: 374px) {
  .ww-fcol, .ww-fcol h5, .ww-fcol a { white-space: normal !important; max-width: 100%; }
}

/* menu-open: lift the whole header stacking context above the scrim (menu lives inside .ww-tbheader z60) */
body.ww-menu-open .ww-tbheader { position: relative; z-index: 9990 !important; }

/* menu-open: the TB header's .et_builder_inner_content wrapper (z:2) caps the whole header context — lift it */
body.ww-menu-open .et-l--header .et_builder_inner_content, body.ww-menu-open header .et_builder_inner_content { z-index: 9990 !important; }

/* the dropdown panel must keep Divi's absolute anchoring (my z-fix's position:relative pulled it
   into the pill's flow — giant arch); z-index still applies to positioned elements */
@media (max-width: 980px) {
  .ww-tbheader .ww-navm .et_mobile_menu { position: absolute !important; }
  .ww-navm .et_mobile_nav_menu { position: static !important; }
}

/* ============ nav round 3 (7/24): mobile single-state · single-unit shapes · sharp logo · desktop trio ============ */
@media (max-width: 980px) {
  /* footer: wrap at ALL mobile widths — kills the site-wide horizontal scroll */
  .ww-footer-cols { flex-wrap: wrap !important; row-gap: 16px; }
  .ww-fcol, .ww-fcol h5, .ww-fcol a { white-space: normal !important; }
  .ww-fcol { flex: 1 1 44% !important; max-width: 100%; }
  .ww-fcol a { font-size: 12px !important; }
  /* ONE nav state: utility strip retires; the bar is the header from load; no entrance flashes */
  .ww-tbheader .ww-util-tb, .ww-tbheader .ww-util { display: none !important; }
  .ww-navm-row, body.ww-stuck .ww-navm-row { animation: none !important; }
  body.ww-stuck .ww-crest-m { animation: none !important; }
  /* single-unit shape: union shadow on the bar, none on the circle */
  body.ww-stuck .ww-tbheader .ww-navm { padding: 10px 18px !important; box-shadow: none !important; filter: drop-shadow(0 8px 22px rgba(156,58,116,.22)); }
  body.ww-stuck .ww-crest-m { box-shadow: none !important; border: 0 !important; width: 76px; height: 76px; top: -6px; left: 10px; }
  body.ww-stuck .ww-crest-m img { width: 52px; }
  /* full logo: script + caps stack beside the bird */
  body.ww-stuck .ww-tbheader .ww-navm .et_pb_menu__logo-wrap { display: flex !important; flex-direction: column; align-items: flex-start; gap: 3px; margin-left: 82px !important; overflow: visible; }
  body.ww-stuck .ww-tbheader .ww-navm .et_pb_menu__logo-wrap img, body.ww-stuck .ww-tbheader .ww-navm .et_pb_menu__logo img { max-height: 17px !important; }
  .ww-lk-caps-m { display: block; font: 400 6.8px/1 'Marcellus', serif; letter-spacing: .3em; color: var(--ww-navy, #1B2F5C); text-transform: uppercase; padding-left: 2px; white-space: nowrap; }
  /* hero clearances under the always-present bar (utility strip gone) */
  .ww-sec.ww-hero { padding-top: 118px !important; }
  .ww-sec.ww-pagehero, .ww-sec.ww-memhero { padding-top: 122px !important; }
  .ww-sec.ww-abouthero { padding-top: 130px !important; }
}
@media (min-width: 1281px) {
  /* unstuck: the center gap collapses to normal rhythm (opens only for the crest) */
  .ww-navm ul.et-menu > li.et_pb_menu__logo-slot { flex-basis: 12px !important; min-width: 12px; }
  body.ww-stuck .ww-navm ul.et-menu > li.et_pb_menu__logo-slot { flex-basis: 224px !important; min-width: 224px !important; }
  /* Book pill rides the right end */
  .ww-navm, body.ww-stuck .ww-navm { padding-right: 12px !important; }
  /* single-unit stuck crest: union shadow via filter; humps carry none of their own */
  body.ww-stuck .ww-navm { box-shadow: none !important; filter: drop-shadow(0 3px 8px rgba(74,13,44,.06)) drop-shadow(0 16px 38px rgba(156,58,116,.20)); }
  body.ww-stuck .ww-crest--tab .ww-tab-hump { filter: none !important; }
  .ww-crest--tab .ww-tab-hump--btm { display: none; }
  body.ww-stuck .ww-crest--tab .ww-tab-hump--btm { display: block; position: absolute; left: 50%; top: 49px; bottom: auto; width: 264px; height: 38px; transform: translateX(-50%) scaleY(-1); }
}

/* round 3 pass 2: unstuck gap = grow was the lever, not basis; CTA flush needs the li padding gone */
@media (min-width: 1281px) {
  .ww-navm ul.et-menu > li.et_pb_menu__logo-slot { flex: 0 1 12px !important; min-width: 12px !important; }
  body.ww-stuck .ww-navm ul.et-menu > li.et_pb_menu__logo-slot { flex: 1 1 224px !important; min-width: 224px !important; }
  .ww-navm ul.et-menu > li.ww-menu-cta, body.ww-stuck .ww-navm ul.et-menu > li.ww-menu-cta { padding-right: 0 !important; margin-right: 0 !important; }
}

/* round 3 pass 3: ul right padding was the last 11px before the CTA; slot swallows its residual gaps unstuck */
@media (min-width: 1281px) {
  .ww-navm .et_pb_menu__menu ul.et-menu, body.ww-stuck .ww-navm .et_pb_menu__menu ul.et-menu { padding-right: 0 !important; }
  .ww-navm ul.et-menu > li.et_pb_menu__logo-slot { flex-basis: 0px !important; min-width: 0 !important; margin: 0 -14px !important; transition: flex-basis .25s ease, min-width .25s ease, margin .25s ease; }
  body.ww-stuck .ww-navm ul.et-menu > li.et_pb_menu__logo-slot { flex-basis: 224px !important; min-width: 224px !important; margin: 0 !important; }
}

/* the 11px lived on nav.et-menu-nav / menu wrappers, not the ul */
@media (min-width: 1281px) {
  .ww-navm nav.et-menu-nav, .ww-navm .et_pb_menu__menu { padding-right: 0 !important; }
  .ww-navm .et_pb_menu__menu ul.et-menu { margin-right: 0 !important; }
}

/* Divi's centered-logo mode translates the ul -11px — the true source of the CTA's right gap */
@media (min-width: 1281px) {
  .ww-navm .et_pb_menu__menu ul.et-menu, body.ww-stuck .ww-navm .et_pb_menu__menu ul.et-menu { transform: none !important; }
}

/* the 11px: Divi sets margin-left:-11px on the ul (link-padding offset compensation) */
@media (min-width: 1281px) {
  .ww-navm .et_pb_menu__menu ul.et-menu, body.ww-stuck .ww-navm .et_pb_menu__menu ul.et-menu { margin-left: 0 !important; }
}

/* mobile: circle fully visible under the flush-top bar (protrudes downward only); text clears the circle */
@media (max-width: 980px) {
  body.ww-stuck .ww-crest-m { top: 4px !important; }
  body.ww-stuck .ww-tbheader .ww-navm .et_pb_menu__logo-wrap { margin-left: 96px !important; }
}

/* ============ design-panel round (7/24): band = mobile system · menu polish · lens refinements ============ */
/* 981-1366: full mobile treatment (was a broken third variant) */
@media (min-width: 981px) and (max-width: 1280px) {
  .ww-tbheader .ww-util-tb, .ww-tbheader .ww-util { display: none !important; }
  .ww-navm-row, body.ww-stuck .ww-navm-row { top: 0 !important; padding: 0 !important; animation: none !important; }
  body.ww-stuck .ww-tbheader .ww-navm { position: relative; width: 100% !important; max-width: 100% !important; margin: 0 !important; border-radius: 0 0 18px 18px; padding: 10px 18px !important; background: #ffffff !important; box-shadow: none !important; filter: drop-shadow(0 8px 22px rgba(156,58,116,.22)); display: flex !important; }
  body.ww-stuck .ww-crest-m { display: flex; position: absolute; left: 10px; top: 4px !important; width: 76px; height: 76px; border-radius: 50%; background: #ffffff; border: 0 !important; box-shadow: none !important; align-items: center; justify-content: center; z-index: 10001; animation: none !important; }
  body.ww-stuck .ww-crest-m img { width: 52px; height: auto; display: block; }
  body.ww-stuck .ww-tbheader .ww-navm .et_pb_menu__logo-wrap { display: flex !important; flex-direction: column; align-items: flex-start; gap: 3px; margin-left: 96px !important; }
  body.ww-stuck .ww-tbheader .ww-navm .et_pb_menu__logo-wrap img, body.ww-stuck .ww-tbheader .ww-navm .et_pb_menu__logo img { max-height: 17px !important; width: auto !important; display: block !important; }
  .ww-navm ul.et-menu > li.ww-menu-cta { display: none !important; }
  .ww-tbheader .ww-navm.et_pb_menu .et_mobile_menu li.ww-menu-cta { display: block !important; position: sticky; bottom: 0; background: #FDF5EC; padding-top: 8px; box-shadow: 0 -8px 16px -8px rgba(156,58,116,.15); }
  .ww-tbheader .ww-navm .et_mobile_menu { position: absolute !important; max-height: calc(100dvh - 130px) !important; overflow-y: auto !important; overscroll-behavior: contain; list-style: none !important; padding-top: 48px !important; z-index: 9990; }
  .ww-tbheader .ww-navm.et_pb_menu .et_mobile_menu, .ww-tbheader .ww-navm.et_pb_menu .et_mobile_menu ul { background-color: #FDF5EC !important; list-style: none !important; }
  .ww-tbheader .et_mobile_menu li { list-style: none !important; }
  .ww-navm .mobile_nav.opened .mobile_menu_bar:before { content: "\4d"; }
  .ww-sec.ww-hero { padding-top: 128px !important; }
  .ww-sec.ww-pagehero, .ww-sec.ww-memhero { padding-top: 132px !important; }
  .ww-sec.ww-abouthero { padding-top: 140px !important; }
  .ww-tbheader .ww-navm.et_pb_menu .et_mobile_menu li.ww-menu-tel { display: block; }
}
/* mobile + band shared menu polish */
@media (max-width: 1280px) {
  /* first menu row clears the crest dome */
  .ww-tbheader .ww-navm.et_pb_menu .et_mobile_menu { padding-top: 48px !important; }
  /* BOTH pills pinned: Call rides just above Book */
  .ww-tbheader .ww-navm.et_pb_menu .et_mobile_menu li.ww-menu-tel { position: sticky; bottom: 62px; background: #FDF5EC; padding-top: 6px; }
  .ww-tbheader .ww-navm.et_pb_menu .et_mobile_menu li.ww-menu-cta { bottom: 0; }
  /* caps legibility */
  .ww-lk-caps-m { font-size: 8px !important; letter-spacing: .26em !important; }
}
/* desktop refinements */
@media (min-width: 1281px) {
  /* lens dead-center: bar padding is 22/12 so the padding-box center sits +5px right — correct it */
  body.ww-stuck .ww-navm li.et_pb_menu__logo-slot a.ww-crest { left: calc(50% - 5px); }
  /* ambient term holds the dome's top edge over light content */
  body.ww-stuck .ww-navm { filter: drop-shadow(0 0 2px rgba(74,13,44,.10)) drop-shadow(0 3px 8px rgba(74,13,44,.06)) drop-shadow(0 16px 38px rgba(156,58,116,.20)) !important; }
  /* matched dome chords: bottom mirrors the top's width, kept shallow */
  body.ww-stuck .ww-crest--tab .ww-tab-hump--btm { width: 330px !important; height: 40px !important; }
  /* flank-clearance rebalance around the lens */
  body.ww-stuck .ww-navm ul.et-menu > li.menu-item-103 { margin-right: 20px !important; }
  /* unscrolled slot hiccup: fully swallow its residual gap */
  .ww-navm ul.et-menu > li.et_pb_menu__logo-slot { margin: 0 -16px !important; }
  body.ww-stuck .ww-navm ul.et-menu > li.et_pb_menu__logo-slot { margin: 0 !important; }
  /* dropdown glass: a touch more solid */
  .ww-tbheader .ww-navm.et_pb_menu nav ul li ul.sub-menu { background: rgba(255,255,255,.96) !important; }
  /* faster gap close on unstick */
  .ww-navm ul.et-menu > li.et_pb_menu__logo-slot { transition-duration: .18s !important; }
}
/* 1367-1390: stuck row compresses so the CTA never leaves the capsule */
@media (min-width: 1281px) and (max-width: 1390px) {
  body.ww-stuck .ww-navm ul.et-menu > li > a { font-size: 12.5px !important; padding: 14px 4px !important; }
  body.ww-stuck .ww-navm ul.et-menu > li.ww-menu-cta > a { padding: 14px 14px !important; }
  body.ww-stuck .ww-navm ul.et-menu > li.et_pb_menu__logo-slot { flex-basis: 200px !important; min-width: 200px !important; }
}

/* caps line: full font declaration at band widths too (was Open Sans fallback 981-1366) */
@media (max-width: 1280px) {
  .ww-lk-caps-m { font-family: 'Marcellus', serif !important; font-weight: 400 !important; color: var(--ww-navy, #1B2F5C) !important; text-transform: uppercase !important; line-height: 1 !important; }
}

/* ============ nav logo restyle (7/24 PM, Nick refs) + feather dividers ============ */

/* ---- MOBILE + BAND (≤1366): big phoenix on a stepped-depth bar, no circle ---- */
@media (max-width: 1280px) {
  body.ww-stuck .ww-tbheader .ww-navm {
    background: transparent !important; border-radius: 0 !important; padding: 0 !important;
    height: 122px; filter: drop-shadow(0 10px 24px rgba(156,58,116,.22));
  }
  /* the stepped white surface: deep under the logo, shallower at the burger, S-curve join */
  body.ww-stuck .ww-tbheader .ww-navm::before {
    content: ""; position: absolute; inset: 0; z-index: 0;
    background: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 390 130" preserveAspectRatio="none"><path d="M0 0 H390 V72 C390 82 382 88 372 88 H268 C246 88 238 94 230 104 C223 114 214 120 200 120 H26 C12 120 0 110 0 96 Z" fill="white"/></svg>') center top / 100% 100% no-repeat;
  }
  body.ww-stuck .ww-crest-m {
    display: flex !important; position: absolute; left: 12px; top: 6px; width: auto; height: auto;
    background: transparent !important; border: 0 !important; box-shadow: none !important; border-radius: 0; z-index: 2; animation: none !important;
  }
  body.ww-stuck .ww-crest-m img { width: 88px !important; height: auto; }
  body.ww-stuck .ww-tbheader .ww-navm .et_pb_menu_inner_container { position: static !important; }
  body.ww-stuck .ww-tbheader .ww-navm .et_pb_menu__logo-wrap {
    position: absolute !important; left: 112px !important; top: 36px !important; margin: 0 !important; z-index: 2;
    display: flex !important; flex-direction: column; align-items: flex-start; gap: 4px;
  }
  body.ww-stuck .ww-tbheader .ww-navm .et_pb_menu__logo-wrap img, body.ww-stuck .ww-tbheader .ww-navm .et_pb_menu__logo img { max-height: 21px !important; }
  .ww-lk-caps-m { font-size: 9px !important; letter-spacing: .24em !important; }
  body.ww-stuck .ww-tbheader .ww-navm .et_pb_menu__wrap { position: absolute !important; right: 14px !important; top: 20px !important; width: auto !important; flex: none !important; }
  /* menu panel hangs from the deep edge; no circle to clear anymore */
  .ww-tbheader .ww-navm.et_pb_menu .et_mobile_menu { top: 124px !important; padding-top: 14px !important; }
  /* anchor offset grows with the deeper bar */
  [id] { scroll-margin-top: 150px; }
  /* hero clearances */
  .ww-sec.ww-hero { padding-top: 158px !important; }
  .ww-sec.ww-pagehero, .ww-sec.ww-memhero { padding-top: 162px !important; }
  .ww-sec.ww-abouthero { padding-top: 168px !important; }
}

/* ---- DESKTOP (≥1367): full stacked lockup in a larger lens ---- */
@media (min-width: 1281px) {
  body.ww-stuck .ww-navm-row { top: 118px !important; }
  body.ww-stuck .ww-navm ul.et-menu > li.et_pb_menu__logo-slot { flex-basis: 330px !important; min-width: 330px !important; }
  body.ww-stuck .ww-navm li.et_pb_menu__logo-slot a.ww-crest { width: 330px; }
  body.ww-stuck .ww-crest--tab .ww-tab-hump { width: 520px !important; height: 112px !important; top: -120px !important; }
  body.ww-stuck .ww-crest--tab .ww-tab-hump--btm { width: 520px !important; height: 72px !important; top: 47px !important; }
  body.ww-stuck .ww-crest--tab .ww-tab-bird { height: 108px !important; top: -100px !important; }
  body.ww-stuck .ww-crest--tab .ww-lk-script { font-size: 26px !important; top: 10px !important; }
  body.ww-stuck .ww-crest--tab .ww-lk-caps { font-size: 10.5px !important; top: 42px !important; }
  /* links compress to make room for the wider lens */
  body.ww-stuck .ww-navm ul.et-menu > li > a { font-size: 12.5px !important; padding: 14px 4px !important; }
  body.ww-stuck .ww-navm ul.et-menu > li.ww-menu-cta > a { padding: 14px 12px !important; font-size: 12.5px !important; }
  body.ww-stuck .ww-navm ul.et-menu > li { margin: 0 3px !important; }
  body.ww-stuck .ww-navm ul.et-menu > li.menu-item-103 { margin-right: 10px !important; }
}

/* ---- feather dividers (trial): coral-rise at the care→van seam, whisper above species ---- */
.ww-van { background: url(images/ww-feather-coral.webp) center top -46px / min(1680px, 120%) auto no-repeat, linear-gradient(180deg,#FFFFFF 0%, #FDF0F6 100%) !important; padding-top: 210px !important; }
.ww-van .ww-swoosh { display: none; }
.ww-species { background: url(images/ww-feather-whisper.webp) center top -30px / min(1500px, 115%) auto no-repeat, linear-gradient(180deg,#FDF0F6 0%, #FBE9F2 100%) !important; padding-top: 150px !important; }
@media (max-width: 980px) {
  .ww-van { background-size: 200% auto, auto !important; background-position: center top -10px, center !important; padding-top: 150px !important; }
  .ww-species { background-size: 190% auto, auto !important; background-position: center top -8px, center !important; padding-top: 110px !important; }
}

/* ============ HEADER v6 — launch-package spec (7/24). Shell SVGs are the ONLY surfaces. ============ */

/* ---- reset: retire every prior header surface/decoration at ALL widths ---- */
.ww-lockup-row { display: none !important; }
.ww-tbheader .ww-util-tb, .ww-tbheader .ww-util { display: none !important; }
body.ww-stuck .ww-crest--tab .ww-tab-hump, body.ww-stuck .ww-crest--tab .ww-tab-hump--btm,
.ww-crest--tab .ww-tab-hump, .ww-crest--tab .ww-tab-hump--btm,
body.ww-stuck .ww-crest--tab .ww-lk-script, body.ww-stuck .ww-crest--tab .ww-lk-caps { display: none !important; }
.ww-navm-row, body.ww-stuck .ww-navm-row { animation: none !important; }
body.ww-stuck .ww-tbheader .ww-navm::before { background: none !important; }
@media (prefers-reduced-motion: reduce) { .ww-navm *, .ww-navm { transition: none !important; animation: none !important; } }

.ww-tbheader { --ww-shell: #FFFEFD; --ww-ink: #173268; --ww-cta: #C94D97; }

/* ---- DESKTOP >1280: lens-band shell, single permanent state ---- */
@media (min-width: 1281px) {
  body.ww-stuck .ww-navm-row, .ww-navm-row { position: fixed !important; top: 8px !important; left: 0; right: 0; z-index: 9990; padding: 0 !important; }
  .ww-navm, body.ww-stuck .ww-navm {
    position: relative; display: block !important; margin: 0 auto !important;
    width: min(1920px, 93.75vw) !important; aspect-ratio: 1920 / 246; height: auto !important;
    background: transparent !important; border: 0 !important; border-radius: 0 !important; padding: 0 !important;
    box-shadow: none !important; backdrop-filter: none !important; -webkit-backdrop-filter: none !important;
    filter: drop-shadow(0 12px 28px rgba(41, 18, 61, 0.10));
  }
  .ww-navm::before {
    content: ""; position: absolute; inset: 0; z-index: 0; pointer-events: none;
    background: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1920 246" preserveAspectRatio="none"><path fill="%23FFFEFD" d="M53 70H780C850 70 870 7 960 7C1050 7 1070 70 1140 70H1867A53 53 0 0 1 1920 123A53 53 0 0 1 1867 176H1140C1070 176 1050 239 960 239C870 239 850 176 780 176H53A53 53 0 0 1 0 123A53 53 0 0 1 53 70Z"/></svg>') center / 100% 100% no-repeat;
  }
  .ww-navm .et_pb_menu_inner_container, .ww-navm .et_pb_menu__wrap, .ww-navm .et_pb_menu__menu, .ww-navm .et_pb_menu__menu nav { position: static !important; width: 100% !important; height: 100%; }
  .ww-navm .et_pb_menu__menu ul.et-menu, body.ww-stuck .ww-navm .et_pb_menu__menu ul.et-menu {
    position: absolute !important; left: 2.76%; right: 2.76%; width: auto !important; top: 28.46%; height: 43.09%;
    display: flex !important; align-items: center !important; justify-content: space-between !important; flex-wrap: nowrap !important;
    margin: 0 !important; padding: 0 !important; transform: none !important; z-index: 1;
  }
  .ww-navm ul.et-menu > li, body.ww-stuck .ww-navm ul.et-menu > li { margin: 0 3px !important; }
  .ww-navm ul.et-menu > li.et_pb_menu__logo-slot, body.ww-stuck .ww-navm ul.et-menu > li.et_pb_menu__logo-slot { flex: 0 0 clamp(260px, 15.625vw, 300px) !important; min-width: clamp(260px, 15.625vw, 300px) !important; margin: 0 !important; transition: none; }
  .ww-navm ul.et-menu > li > a, body.ww-stuck .ww-navm ul.et-menu > li > a { font-size: 13px !important; padding: 14px 6px !important; color: var(--ww-ink, #173268) !important; }
  .ww-navm ul.et-menu > li.ww-menu-cta > a, body.ww-stuck .ww-navm ul.et-menu > li.ww-menu-cta > a { background: var(--ww-cta, #C94D97) !important; color: #fff !important; padding: 14px 22px !important; font-size: 13px !important; }
  /* the supplied stacked logo, centered in the medallion */
  body.ww-stuck .ww-navm li.et_pb_menu__logo-slot a.ww-crest, .ww-navm li.et_pb_menu__logo-slot a.ww-crest {
    display: block !important; position: absolute !important; left: 50%; top: 50%; transform: translate(-50%, -50%);
    width: clamp(132px, 8.02vw, 154px); height: auto; padding: 0 !important; background: transparent !important; border: 0 !important; box-shadow: none !important; animation: none !important; z-index: 2;
  }
  .ww-crest img.ww-desktop-logo { width: 100%; height: auto; display: block; }
  /* dropdowns keep prior styling; ensure ink */
  .ww-navm nav ul li ul.sub-menu li a { color: var(--ww-ink, #173268) !important; }
  /* hero clearance under the fixed shell */
  .ww-sec.ww-hero { padding-top: 250px !important; }
  .ww-sec.ww-pagehero, .ww-sec.ww-abouthero, .ww-sec.ww-memhero { padding-top: 240px !important; }
  [id] { scroll-margin-top: 230px; }
}

/* ---- MOBILE ≤1280: stepped-tab shell, full horizontal lockup ---- */
@media (max-width: 1280px) {
  body.ww-stuck .ww-navm-row, .ww-navm-row { position: fixed !important; top: 0 !important; left: 0; right: 0; z-index: 9990; padding: 0 !important; }
  body.ww-stuck .ww-tbheader .ww-navm, .ww-tbheader .ww-navm {
    position: relative; display: block !important; width: 100% !important; max-width: 100% !important; margin: 0 !important;
    aspect-ratio: 430 / 140; height: auto !important;
    background: transparent !important; border: 0 !important; border-radius: 0 !important; padding: 0 !important;
    box-shadow: none !important; filter: drop-shadow(0 12px 28px rgba(41, 18, 61, 0.10));
  }
  body.ww-stuck .ww-tbheader .ww-navm::after { content: none !important; }
  .ww-tbheader .ww-navm::before {
    content: "" !important; position: absolute; inset: 0; z-index: 0; pointer-events: none;
    background: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 430 140" preserveAspectRatio="none"><path fill="%23FFFEFD" d="M0 0H430V66C430 86 414 102 394 102H286C264 102 252 108 240 120C228 133 218 140 196 140H34C14 140 0 126 0 106V0Z"/></svg>') center / 100% 100% no-repeat !important;
  }
  /* the supplied horizontal lockup in the deep tab */
  body.ww-stuck .ww-crest-m, .ww-crest-m {
    display: block !important; position: absolute !important; left: 4.19% !important; top: 31.4% !important; width: 50.23% !important; height: auto !important;
    background: transparent !important; border: 0 !important; box-shadow: none !important; border-radius: 0; z-index: 2; animation: none !important;
  }
  body.ww-stuck .ww-crest-m img, .ww-crest-m img { width: 100% !important; height: auto !important; display: block; }
  /* the script/caps stack retires (the lockup contains them) */
  body.ww-stuck .ww-tbheader .ww-navm .et_pb_menu__logo-wrap, .ww-tbheader .ww-navm .et_pb_menu__logo-wrap { display: none !important; }
  /* burger: 44px target, navy, right inset */
  body.ww-stuck .ww-tbheader .ww-navm .et_pb_menu__wrap, .ww-tbheader .ww-navm .et_pb_menu__wrap { position: absolute !important; right: 16px !important; top: 30% !important; width: auto !important; flex: none !important; }
  .ww-navm .mobile_menu_bar { width: 44px; height: 44px; display: grid; place-items: center; }
  .ww-tbheader .ww-navm.et_pb_menu .et_mobile_nav_menu .mobile_menu_bar:before, .ww-navm .mobile_menu_bar:before { color: #173268 !important; font-size: 28px; }
  /* menu panel hangs below the shell */
  .ww-tbheader .ww-navm.et_pb_menu .et_mobile_menu { top: calc(100vw * 0.3256 + 2px) !important; }
  [id] { scroll-margin-top: calc(100vw * 0.3256 + 40px); }
  .ww-sec.ww-hero { padding-top: calc(100vw * 0.3256 + 44px) !important; }
  .ww-sec.ww-pagehero, .ww-sec.ww-memhero { padding-top: calc(100vw * 0.3256 + 48px) !important; }
  .ww-sec.ww-abouthero { padding-top: calc(100vw * 0.3256 + 56px) !important; }
}

/* 431-1280: shell stretches horizontally at a fixed comfortable height */
@media (min-width: 431px) and (max-width: 1280px) {
  body.ww-stuck .ww-tbheader .ww-navm, .ww-tbheader .ww-navm { aspect-ratio: auto !important; height: 150px !important; }
  body.ww-stuck .ww-crest-m, .ww-crest-m { left: 24px !important; top: 34px !important; width: 262px !important; }
  body.ww-stuck .ww-tbheader .ww-navm .et_pb_menu__wrap, .ww-tbheader .ww-navm .et_pb_menu__wrap { right: 24px !important; top: 32px !important; }
  .ww-tbheader .ww-navm.et_pb_menu .et_mobile_menu { top: 152px !important; }
  [id] { scroll-margin-top: 190px; }
  .ww-sec.ww-hero { padding-top: 200px !important; }
  .ww-sec.ww-pagehero, .ww-sec.ww-memhero { padding-top: 204px !important; }
  .ww-sec.ww-abouthero { padding-top: 212px !important; }
}

/* the v6 reset's background:none!important was eating the new shells — reassert with strength */
@media (min-width: 1281px) {
  .ww-tbheader .ww-navm::before, body.ww-stuck .ww-tbheader .ww-navm::before {
    content: "" !important; position: absolute; inset: 0; z-index: 0; pointer-events: none;
    background: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1920 246" preserveAspectRatio="none"><path fill="%23FFFEFD" d="M53 70H780C850 70 870 7 960 7C1050 7 1070 70 1140 70H1867A53 53 0 0 1 1920 123A53 53 0 0 1 1867 176H1140C1070 176 1050 239 960 239C870 239 850 176 780 176H53A53 53 0 0 1 0 123A53 53 0 0 1 53 70Z"/></svg>') center / 100% 100% no-repeat !important;
  }
}

/* mobile shell: same specificity reassert as desktop (reset carries body.ww-stuck) */
@media (max-width: 1280px) {
  .ww-tbheader .ww-navm::before, body.ww-stuck .ww-tbheader .ww-navm::before {
    content: "" !important; position: absolute; inset: 0; z-index: 0; pointer-events: none;
    background: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 430 140" preserveAspectRatio="none"><path fill="%23FFFEFD" d="M0 0H430V66C430 86 414 102 394 102H286C264 102 252 108 240 120C228 133 218 140 196 140H34C14 140 0 126 0 106V0Z"/></svg>') center / 100% 100% no-repeat !important;
  }
}

/* ============ HEADER v7 (7/27, Nick round): two-state desktop — logo above the bar at page top,
   morphs into the medallion on scroll. Tighter shell (−26% band, −33% logo air), larger nav type,
   inline dropdown arrows, launch-spec shadow, mobile panel containing-block fix, full-bleed feathers.
   Old ≤1366/≥1367 media blocks re-scoped to 1280/1281 in the same push. ============ */

:root { --ww-logow-un: clamp(140px, 10.4vw, 190px); }

/* ---- DESKTOP >1280: shared two-state architecture ---- */
@media (min-width: 1281px) {
  .ww-navm, body.ww-stuck .ww-navm {
    filter: drop-shadow(0 12px 28px rgba(41, 18, 61, 0.10)) !important;
    aspect-ratio: 1680 / 210 !important;
    margin-top: calc(var(--ww-logow-un) * 0.8065 + 10px) !important;
    transition: margin-top .28s cubic-bezier(.4, 0, .2, 1);
    overflow: visible !important;
  }
  body.ww-stuck .ww-tbheader .ww-navm { margin-top: 0 !important; }

  /* unstuck surface: plain capsule (band y66-144 of 210, r39) */
  .ww-tbheader .ww-navm::before, body.ww-stuck .ww-tbheader .ww-navm::before {
    content: "" !important; position: absolute; inset: 0; z-index: 0; pointer-events: none;
    background: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1680 210" preserveAspectRatio="none"><path fill="%23FFFEFD" d="M39 66H1641A39 39 0 0 1 1680 105A39 39 0 0 1 1641 144H39A39 39 0 0 1 0 105A39 39 0 0 1 39 66Z"/></svg>') center / 100% 100% no-repeat !important;
  }
  /* stuck surface: medallion shell (lens y6-204), cross-fades in over the capsule */
  .ww-tbheader .ww-navm::after, body.ww-stuck .ww-tbheader .ww-navm::after {
    content: "" !important; position: absolute; inset: 0; z-index: 0; pointer-events: none;
    background: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1680 210" preserveAspectRatio="none"><path fill="%23FFFEFD" d="M39 66H670C740 66 760 6 840 6C920 6 940 66 1010 66H1641A39 39 0 0 1 1680 105A39 39 0 0 1 1641 144H1010C940 144 920 204 840 204C760 204 740 144 670 144H39A39 39 0 0 1 0 105A39 39 0 0 1 39 66Z"/></svg>') center / 100% 100% no-repeat !important;
    opacity: 0; transition: opacity .2s ease-out;
  }
  body.ww-stuck .ww-tbheader .ww-navm::after { opacity: 1; }

  /* nav band tracks the new geometry: y66-144 of 210 */
  .ww-navm .et_pb_menu__menu ul.et-menu, body.ww-stuck .ww-navm .et_pb_menu__menu ul.et-menu {
    top: 31.43% !important; height: 37.14% !important; left: 2.3% !important; right: 2.3% !important;
  }

  /* restore items at 1281-1366 (old band CSS hid them before the re-scope) */
  .ww-navm ul.et-menu > li, body.ww-stuck .ww-navm ul.et-menu > li { display: flex !important; }
  .ww-navm ul.et-menu > li.menu-item-103, body.ww-stuck .ww-navm ul.et-menu > li.menu-item-103 { margin-right: 4px !important; }

  /* inline dropdown arrows with a real gap (were 16px absolute glyphs overlapping the label) */
  .ww-navm ul.et-menu > li.menu-item-has-children > a:first-child:after,
  body.ww-stuck .ww-navm ul.et-menu > li.menu-item-has-children > a:first-child:after {
    position: static !important; display: inline-block !important;
    font-size: 11px !important; line-height: 1 !important;
    margin: 0 0 0 6px !important; vertical-align: -1px !important;
  }
  .ww-navm ul.et-menu > li > a, body.ww-stuck .ww-navm ul.et-menu > li > a {
    font-weight: 600 !important; letter-spacing: .02em !important; white-space: nowrap;
    color: var(--ww-ink, #173268) !important;
  }

  /* crest: floats above the band unstuck; settles into the lens center when stuck */
  .ww-navm li.et_pb_menu__logo-slot a.ww-crest, body.ww-stuck .ww-navm li.et_pb_menu__logo-slot a.ww-crest {
    display: block !important; position: absolute !important; left: 50% !important;
    top: -10px !important; transform: translate(-50%, -100%) !important;
    width: var(--ww-logow-un) !important;
    height: auto !important; padding: 0 !important; background: transparent !important; border: 0 !important;
    box-shadow: none !important; animation: none !important; z-index: 2;
    transition: top .28s cubic-bezier(.4, 0, .2, 1), transform .28s cubic-bezier(.4, 0, .2, 1), width .28s cubic-bezier(.4, 0, .2, 1) !important;
  }
  body.ww-stuck .ww-navm li.et_pb_menu__logo-slot a.ww-crest {
    top: 50% !important; transform: translate(-50%, -50%) !important; width: clamp(100px, 8.02vw, 154px) !important;
  }
  .ww-crest img.ww-desktop-logo { width: 100%; height: auto; display: block; }

  /* slot: collapsed while the logo floats above; opens to the lens width when stuck */
  .ww-navm ul.et-menu > li.et_pb_menu__logo-slot, body.ww-stuck .ww-navm ul.et-menu > li.et_pb_menu__logo-slot {
    position: static !important; flex: 0 0 0px !important; min-width: 0 !important; margin: 0 calc(-14px - max(0px, (100vw - 1440px) * 0.025)) !important;
    transition: flex-basis .28s cubic-bezier(.4, 0, .2, 1), min-width .28s cubic-bezier(.4, 0, .2, 1), margin .28s cubic-bezier(.4, 0, .2, 1) !important;
  }

  /* dropdown panels hang just under the band in either state */
  .ww-navm nav ul li ul.sub-menu { top: calc(2.4vw + 12px) !important; }

  /* hero clearance: sized to the taller unstuck header (logo + capsule) */
  .ww-sec.ww-hero { padding-top: calc(var(--ww-logow-un) * 0.8065 + min(144px, 7.03vw) + 48px) !important; }
  .ww-sec.ww-pagehero, .ww-sec.ww-abouthero, .ww-sec.ww-memhero { padding-top: calc(var(--ww-logow-un) * 0.8065 + min(144px, 7.03vw) + 40px) !important; }
  [id] { scroll-margin-top: calc(min(204px, 9.96vw) + 40px); }

  @media (prefers-reduced-motion: reduce) {
    .ww-navm, body.ww-stuck .ww-navm, .ww-navm::before, .ww-navm::after,
    body.ww-stuck .ww-tbheader .ww-navm::before, body.ww-stuck .ww-tbheader .ww-navm::after,
    .ww-navm li.et_pb_menu__logo-slot a.ww-crest,
    body.ww-stuck .ww-navm li.et_pb_menu__logo-slot a.ww-crest,
    .ww-navm ul.et-menu > li.et_pb_menu__logo-slot,
    body.ww-stuck .ww-navm ul.et-menu > li.et_pb_menu__logo-slot { transition: none !important; }
  }
}

/* ---- regular desktop ≥1421: full-size type ---- */
@media (min-width: 1421px) {
  .ww-navm ul.et-menu > li, body.ww-stuck .ww-navm ul.et-menu > li { margin: 0 3px !important; }
  .ww-navm ul.et-menu > li > a, body.ww-stuck .ww-navm ul.et-menu > li > a {
    font-size: clamp(13.5px, .5vw + 6.9px, 16px) !important; padding: 10px 7px !important;
  }
  .ww-navm ul.et-menu > li.ww-menu-cta > a, body.ww-stuck .ww-navm ul.et-menu > li.ww-menu-cta > a {
    font-size: clamp(13.5px, .5vw + 6.9px, 16px) !important; font-weight: 600 !important;
    padding: 11px 16px !important; background: var(--ww-cta, #C94D97) !important; color: #fff !important;
  }
  body.ww-stuck .ww-navm ul.et-menu > li.et_pb_menu__logo-slot { flex-basis: min(13vw, 250px) !important; min-width: min(13vw, 250px) !important; margin: 0 !important; }
}

/* ---- compact desktop 1281-1420: same architecture, tighter metrics so 10 items + CTA + lens fit ---- */
@media (min-width: 1281px) and (max-width: 1420px) {
  .ww-navm ul.et-menu > li, body.ww-stuck .ww-navm ul.et-menu > li { margin: 0 2px !important; }
  .ww-navm ul.et-menu > li > a, body.ww-stuck .ww-navm ul.et-menu > li > a {
    font-size: 12.5px !important; padding: 10px 5px !important;
  }
  .ww-navm ul.et-menu > li.ww-menu-cta > a, body.ww-stuck .ww-navm ul.et-menu > li.ww-menu-cta > a {
    font-size: 12.5px !important; font-weight: 600 !important;
    padding: 10px 14px !important; background: var(--ww-cta, #C94D97) !important; color: #fff !important;
  }
  body.ww-stuck .ww-navm ul.et-menu > li.et_pb_menu__logo-slot { flex-basis: 13vw !important; min-width: 13vw !important; margin: 0 !important; }
}

/* ---- MOBILE ≤1280: panel containing-block fix — the burger wrap (52px, absolute) was the
   containing block for the absolutely-positioned .et_mobile_menu, collapsing the whole dropdown
   to a 52px strip. Fixed positioning re-anchors it to the shell (.ww-navm carries a filter, so
   it IS the fixed containing block, spanning the full viewport width at y=0). ---- */
@media (max-width: 1280px) {
  .ww-tbheader .ww-navm.et_pb_menu .et_mobile_menu,
  body.ww-stuck .ww-tbheader .ww-navm.et_pb_menu .et_mobile_menu {
    position: fixed !important; left: 0 !important; right: 0 !important; width: auto !important;
    top: calc(100vw * 0.3256 + 2px) !important;
    max-height: calc(100dvh - 100vw * 0.3256 - 14px) !important;
    overflow-y: auto !important;
  }
}
@media (min-width: 431px) and (max-width: 1280px) {
  .ww-tbheader .ww-navm.et_pb_menu .et_mobile_menu,
  body.ww-stuck .ww-tbheader .ww-navm.et_pb_menu .et_mobile_menu {
    top: 152px !important;
    max-height: calc(100dvh - 166px) !important;
  }
}

/* mobile menu pills share one centered axis */
@media (max-width: 1280px) {
  .ww-tbheader .ww-navm.et_pb_menu .et_mobile_menu li.ww-menu-cta > a,
  .ww-tbheader .ww-navm.et_pb_menu .et_mobile_menu li.ww-menu-tel > a {
    margin-left: auto !important; margin-right: auto !important;
  }
}

/* ---- feather dividers: full-bleed at every width (the min() px caps stranded the art
   ~120-530px short per side at 1920/2560) ---- */
@media (min-width: 981px) {
  .ww-van { background: url(images/ww-feather-coral.webp) center top calc(-2.74vw) / 100% auto no-repeat, linear-gradient(180deg, #FFFFFF 0%, #FDF0F6 100%) !important; padding-top: 12.5vw !important; }
  .ww-species { background: url(images/ww-feather-whisper.webp) center top calc(-2vw) / 100% auto no-repeat, linear-gradient(180deg, #FDF0F6 0%, #FBE9F2 100%) !important; padding-top: 10vw !important; }
}
/* ============ v8 copy round (7/28): combined H1, pillars band, promise checklist, diff grid ============ */
.ww-h1-lead { display: block; font-family: 'Cormorant Garamond', serif; font-style: italic; font-weight: 600; font-size: clamp(21px, 1.9vw, 29px); letter-spacing: .045em; color: #C94D97; margin-bottom: 12px; }
.ww-h1-main { display: block; }
.ww-hero-fine { display: block; margin-top: 14px; font-size: 14.5px; letter-spacing: .015em; color: #2E2044; }
.ww-pillars { display: flex; gap: 0; justify-content: center; align-items: stretch; }
.ww-pillar { flex: 1 1 0; padding: 26px 34px; position: relative; }
.ww-pillars .ww-pillar + .ww-pillar::before { content: ""; position: absolute; left: 0; top: 22%; bottom: 22%; width: 1px; background: rgba(255,255,255,.35); }
.ww-pillars .ww-pillar h3 { font-family: Marcellus, serif; font-size: 15.5px; letter-spacing: .14em; text-transform: uppercase; color: #fff; margin: 0 0 8px; }
.ww-pillars .ww-pillar p { font-family: Jost, sans-serif; font-size: 14.5px; line-height: 1.55; color: rgba(255,255,255,.88); margin: 0; }
.ww-sec.ww-values .ww-values-row, .ww-sec.ww-values .ww-pillars-in { max-width: 1180px; }
ul.ww-checks { list-style: none; margin: 0; padding: 0; }
ul.ww-checks li { position: relative; padding: 7px 0 7px 40px; font-family: Jost, sans-serif; font-size: 15.5px; line-height: 1.55; color: #173268; }
ul.ww-checks li::before { content: "✓"; position: absolute; left: 0; top: 8px; width: 24px; height: 24px; border-radius: 50%; background: #C94D97; color: #fff; font-size: 13px; line-height: 24px; text-align: center; }
ul.ww-checks-2col { columns: 2; column-gap: 56px; }
ul.ww-checks-2col li { break-inside: avoid; }
.ww-promise-row { background: #FDF7F0; border-radius: 28px; padding: 56px 64px !important; box-shadow: 0 22px 52px -18px rgba(156,58,116,.14); }
.ww-diffcard { background: rgba(255,255,255,.75); border: 1.2px solid rgba(255,255,255,.95); border-radius: 22px; padding: 34px 38px; height: 100%; box-shadow: 0 16px 40px -16px rgba(156,58,116,.12); }
.ww-diffcard h3 { font-family: 'Cormorant Garamond', serif; font-weight: 600; font-size: 25px; color: #173268; margin: 0 0 12px; }
.ww-diffcard p { font-family: Jost, sans-serif; font-size: 15.5px; line-height: 1.62; color: #2E2044; }
.ww-diffcard ul.ww-checks li { font-size: 14.5px; }
.ww-sec.ww-diff { background: linear-gradient(180deg, #FFF 0%, #FDF0F6 100%); }
.ww-diffclose { font-family: 'Cormorant Garamond', serif; font-style: italic; font-weight: 500; font-size: clamp(20px, 1.8vw, 26px); line-height: 1.5; color: #173268; max-width: 820px; margin: 0 auto; }
.ww-body-center { max-width: 760px; margin-left: auto !important; margin-right: auto !important; }
@media (max-width: 980px) {
  .ww-pillars { flex-direction: column; }
  .ww-pillar + .ww-pillar::before { left: 22%; right: 22%; top: 0; bottom: auto; width: auto; height: 1px; }
  ul.ww-checks-2col { columns: 1; }
  .ww-promise-row { padding: 36px 24px !important; border-radius: 22px; }
  .ww-diffcard { padding: 26px 22px; }
  .ww-hero-fine { font-size: 13.5px; }
}

/* ============ v9 revisions (7/28, Nick round 2): header r2 · video modal · swooshes · species strip · type bump ============ */

/* ---- HEADER ROUND 2 ---- */
@media (min-width: 1281px) {
  :root { --ww-logow-un: clamp(180px, 13.3vw, 243px); }
  /* narrower bars: unstuck 88vw, stuck 91.5vw; widths morph with the state */
  .ww-navm, body.ww-stuck .ww-navm {
    width: min(1500px, 89vw) !important;
    margin-top: calc(var(--ww-logow-un) * 0.8065 + 48px - min(58.9px, 3.457vw)) !important;
    transition: margin-top .28s cubic-bezier(.4,0,.2,1), width .28s cubic-bezier(.4,0,.2,1);
  }
  body.ww-stuck .ww-tbheader .ww-navm { margin-top: 0 !important; }
  /* logo: +28%, vertically centered between page top and capsule top (16px air each side) */
  .ww-navm li.et_pb_menu__logo-slot a.ww-crest { top: -8px !important; }
  body.ww-stuck .ww-navm li.et_pb_menu__logo-slot a.ww-crest { top: 50% !important; width: clamp(98px, 7.75vw, 149px) !important; }
  /* soft cream halo for busy heroes; off in the lens */
  /* sub-menu: tight, overlapping the pill edge */
  .ww-navm nav ul li ul.sub-menu { top: calc(100% - 8px) !important; }
  /* hover persistence independent of Divi's JS timing */
  .ww-navm nav ul li.menu-item-has-children:hover > ul.sub-menu,
  .ww-navm nav ul li ul.sub-menu:hover { visibility: visible !important; opacity: 1 !important; }
  .ww-navm ul.et-menu > li, body.ww-stuck .ww-navm ul.et-menu > li { flex-shrink: 0 !important; }
  /* unstuck type: full labels + phone + CTA across the capsule */
  .ww-navm ul.et-menu > li > a { font-size: clamp(11.75px, .3vw + 7.6px, 13px) !important; padding: 10px 3px !important; letter-spacing: .01em !important; }
  .ww-navm ul.et-menu > li { margin: 0 2px !important; }
  /* stuck-state type compresses slightly (longer labels + narrower bar); logo untouched */
  body.ww-stuck .ww-navm ul.et-menu > li > a { font-size: clamp(11.75px, .3vw + 7.6px, 13px) !important; padding: 10px 3px !important; letter-spacing: .01em !important; }
  body.ww-stuck .ww-navm ul.et-menu > li.ww-menu-cta > a { font-size: clamp(11.75px, .3vw + 7.6px, 13px) !important; padding: 10px 14px !important; }
  body.ww-stuck .ww-navm ul.et-menu > li { margin: 0 2px !important; }
  body.ww-stuck .ww-navm ul.et-menu > li.et_pb_menu__logo-slot { flex: 1 1 auto !important; min-width: 120px !important; margin: 0 !important; }
  body.ww-stuck .ww-navm ul.et-menu > li { margin: 0 3px !important; }
  /* symmetric anchors: phone utility pinned left, CTA pill pinned right; links center between */
  .ww-navm .et_pb_menu__menu ul.et-menu, body.ww-stuck .ww-navm .et_pb_menu__menu ul.et-menu { padding-left: 0 !important; padding-right: clamp(195px, 13vw + 20px, 220px) !important; box-sizing: border-box !important; }
  .ww-navm ul.et-menu > li.ww-nav-tel { display: none !important; }
  .ww-navm ul.et-menu > li.ww-menu-cta, body.ww-stuck .ww-navm ul.et-menu > li.ww-menu-cta { position: absolute !important; right: 20px !important; top: 50% !important; transform: translateY(-50%) !important; margin: 0 !important; }

  /* hero clearance: taller unstuck header + real breathing room under the pill */
  .ww-sec.ww-hero { padding-top: calc(var(--ww-logow-un) * 0.8065 + min(69.6px, 4.086vw) + 120px) !important; }
  .ww-sec.ww-pagehero, .ww-sec.ww-abouthero, .ww-sec.ww-memhero { padding-top: calc(var(--ww-logow-un) * 0.8065 + min(69.6px, 4.086vw) + 112px) !important; }
  [id] { scroll-margin-top: calc(min(182.1px, 10.93vw) + 48px); }
}
@media (min-width: 1281px) and (max-width: 1420px) {
  .ww-navm ul.et-menu > li > a, body.ww-stuck .ww-navm ul.et-menu > li > a { font-size: 12.5px !important; padding: 10px 3px !important; }
  body.ww-stuck .ww-navm ul.et-menu > li.ww-menu-cta > a { font-size: 12.25px !important; padding: 10px 12px !important; }
  body.ww-stuck .ww-navm ul.et-menu > li { margin: 0 3px !important; }
}

/* ---- VIDEO MODAL ---- */
.ww-video { cursor: pointer; }
.ww-vmodal { position: fixed; inset: 0; z-index: 99990; display: none; align-items: center; justify-content: center; padding: 4vw; }
body.ww-vmodal-open .ww-vmodal { display: flex; }
.ww-vmodal-scrim { position: absolute; inset: 0; background: rgba(27,15,46,.62); backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px); }
.ww-vmodal-box { position: relative; width: min(1080px, 92vw); aspect-ratio: 16 / 9; background: #000; border-radius: 24px; overflow: hidden; box-shadow: 0 40px 90px -20px rgba(27,15,46,.55); z-index: 1; }
.ww-vmodal-box video { width: 100%; height: 100%; display: block; object-fit: contain; background: #000; }
.ww-vmodal-close { position: absolute; top: 12px; right: 12px; width: 44px; height: 44px; border-radius: 50%; background: rgba(255,254,253,.92); color: #173268; border: 0; font-size: 18px; cursor: pointer; box-shadow: 0 8px 24px rgba(27,15,46,.35); z-index: 2; display: grid; place-items: center; }
.ww-vmodal-close:hover { background: #fff; }
body.ww-vmodal-open { overflow: hidden; }
@media (max-width: 700px) { .ww-vmodal-box { border-radius: 16px; } .ww-vmodal { padding: 12px; } }

/* ---- SWOOSHES: dark coral wing retired; whisper blended + raised; subtle hero echo ---- */
@media (min-width: 981px) {
  .ww-van { background: linear-gradient(180deg, #FFFFFF 0%, #FDF0F6 100%) !important; padding-top: 112px !important; }
  .ww-species { position: relative; background: linear-gradient(180deg, #FDF0F6 0%, #FBE9F2 100%) !important; padding-top: 8vw !important; }
  .ww-species::before { content: ""; position: absolute; left: 0; right: 0; top: 0; height: 46vw; background: url(images/ww-feather-whisper.webp) center top -5vw / 100% auto no-repeat; opacity: .55; mix-blend-mode: multiply; pointer-events: none; }
  .ww-species > .et_pb_row, .ww-species > div { position: relative; z-index: 1; }
  .ww-sec.ww-hero { position: relative; }
  .ww-sec.ww-hero::before { content: ""; position: absolute; left: 0; right: 0; top: 24%; height: 62%; background: url(images/ww-feather-whisper.webp) center top / 100% auto no-repeat; opacity: .16; pointer-events: none; }
  .ww-sec.ww-hero > .et_pb_row { position: relative; z-index: 1; }
}
@media (max-width: 980px) {
  .ww-van { background: linear-gradient(180deg, #FFFFFF 0%, #FDF0F6 100%) !important; padding-top: 92px !important; }
  .ww-species { position: relative; background: linear-gradient(180deg, #FDF0F6 0%, #FBE9F2 100%) !important; }
  .ww-species::before { content: ""; position: absolute; left: 0; right: 0; top: 0; height: 70vw; background: url(images/ww-feather-whisper.webp) center top -3vw / 170% auto no-repeat; opacity: .45; mix-blend-mode: multiply; pointer-events: none; }
  .ww-species > .et_pb_row, .ww-species > div { position: relative; z-index: 1; }
}

/* ---- SPECIES STRIP: centered medallion group + larger labels; site-wide small-copy bump ---- */
.ww-species-mid { justify-content: center !important; }
.ww-species-mid .et_pb_column { flex: 0 1 176px !important; width: auto !important; }
.ww-med { text-align: center; }
.ww-med img { margin-inline: auto; display: block; }
.ww-med .et_pb_module_header { font-size: 15.5px !important; letter-spacing: .02em !important; line-height: 1.35 !important; }
.ww-card p, .ww-body-m, .ww-diffcard p { font-size: 16px !important; }
a.ww-link { font-size: 14.5px !important; }
@media (max-width: 980px) {
  .ww-species-mid .et_pb_column { flex: 0 0 calc(50% - 8px) !important; width: calc(50% - 8px) !important; }
  .ww-med .et_pb_module_header { font-size: 14.5px !important; }
}

/* v9.4b: tighter dropdown arrows (5 parents now) */
@media (min-width: 1281px) {
  .ww-navm ul.et-menu > li.menu-item-has-children > a:first-child:after,
  body.ww-stuck .ww-navm ul.et-menu > li.menu-item-has-children > a:first-child:after {
    font-size: 9px !important; margin: 0 0 0 4px !important;
  }
}

/* v9.7 QA fixes: eqrow columns stack their modules vertically (Policies-card bug) */
.ww-eqrow > .et_pb_column { flex-direction: column !important; }

/* ============ v10 QA-panel fixes (7/28) ============ */
.ww-pillars .ww-pillar h3 { color: #173268 !important; }
.ww-pillars .ww-pillar p { color: #2E2044 !important; }
.ww-pillars .ww-pillar + .ww-pillar::before { background: rgba(23,50,104,.18) !important; }
@media (min-width: 1281px) {
  body.ww-stuck .ww-navm .et_pb_menu__menu ul.et-menu { padding-left: clamp(175px, 13.6vw, 205px) !important; }

}
:where([id]) { scroll-margin-top: 180px; }
@media (max-width: 980px) {
  .et-l--footer .et_pb_text_inner a, .et-l--footer .et_pb_code_inner a { display: block; margin: 0 0 10px; }
}
.ww-tbheader .ww-navm.et_pb_menu .et_mobile_menu li.ww-menu-tel,
.ww-tbheader .ww-navm.et_pb_menu .et_mobile_menu li.ww-menu-cta { background: #FDF5EC !important; }
.ww-tbheader .ww-navm.et_pb_menu .et_mobile_menu li.ww-menu-tel::before {
  content: ""; position: absolute; left: 0; right: 0; top: -22px; height: 22px;
  background: linear-gradient(180deg, rgba(253,245,236,0), #FDF5EC); pointer-events: none;
}
.ww-species-mid .et_pb_column { display: flex !important; flex-direction: column; align-items: center; }
/* blog: centered featured-post layout while only one post exists (restore grid at 3+ posts) */
.ww-blogm { display: flex !important; justify-content: center !important; }
.ww-blogm > * { max-width: 720px; width: 100%; }
.ww-founder-img { align-self: flex-start !important; position: sticky; top: 210px; width: 100%; }
.ww-founder-img img { width: 100% !important; height: auto; border-radius: 24px; }
a.ww-hero-emg { display: inline-block; margin-top: 14px; font-family: Jost, sans-serif; font-weight: 600; font-size: 14px; letter-spacing: .02em; color: #B2452E !important; }
a.ww-hero-emg:hover { color: #8f3421 !important; }

/* ============ v11 (7/28 PM, Nick round 3): body ink · eyebrow-as-headline · dark-hero veils · portrait modal · crest fade ============ */
:root { --ww-ink-body: #2E2044; }
.ww-sec p, .ww-sec .et_pb_text_inner, .ww-sec li, .ww-body-m, .ww-card p, .ww-diffcard p, ul.ww-checks li { color: var(--ww-ink-body); font-weight: 400; }
.ww-body-m, .ww-sec .et_pb_blurb_description p { font-size: 16.5px !important; line-height: 1.66; }
.ww-hero-sub-m { color: var(--ww-ink-body) !important; font-size: 17px !important; font-weight: 400 !important; }
.ww-hero-fine { color: var(--ww-ink-body) !important; font-size: 15px !important; opacity: 1 !important; }
.ww-diffclose { color: var(--ww-ink-body); }
.ww-sec .ww-eyebrow-m, .ww-sec .ww-eyebrow-m p {
  font-family: 'Cormorant Garamond', serif !important; font-weight: 600 !important;
  font-size: clamp(30px, 2.5vw, 40px) !important; letter-spacing: 0 !important; text-transform: none !important;
  color: #173268 !important; line-height: 1.16 !important;
}
.ww-sec .ww-eyebrow-m { margin-bottom: 4px; }
.ww-sec .ww-h2-m h2 {
  font-family: 'Cormorant Garamond', serif !important; font-style: italic; font-weight: 500 !important;
  font-size: clamp(19px, 1.55vw, 24px) !important; line-height: 1.5 !important; color: #52427A !important;
  letter-spacing: .01em;
}
.ww-sec .ww-h2-m { margin-top: 0 !important; }
.ww-diffcard h3 { font-size: 28px !important; }
.ww-sec .et_pb_blurb .et_pb_module_header { font-size: 21px !important; line-height: 1.3 !important; }
.ww-med .et_pb_module_header { font-size: 16px !important; }
.ww-care-head, .ww-diff-head { padding-bottom: 54px !important; }
.ww-diffcard { padding: 40px 44px; }
.ww-promise-row { padding: 64px 72px !important; }
@media (max-width: 980px) { .ww-diffcard { padding: 28px 24px; } .ww-promise-row { padding: 40px 24px !important; } }
.ww-sec.ww-abouthero, .ww-sec.ww-memhero { position: relative; }
.ww-sec.ww-abouthero::before, .ww-sec.ww-memhero::before {
  content: ""; position: absolute; left: 0; right: 0; top: 0; height: min(340px, 34vh);
  background: linear-gradient(180deg, rgba(255,252,247,.94) 0%, rgba(255,252,247,.6) 42%, rgba(255,252,247,0) 100%);
  pointer-events: none; z-index: 0;
}
.ww-sec.ww-abouthero > .et_pb_row, .ww-sec.ww-memhero > .et_pb_row { position: relative; z-index: 1; }
.ww-navm li.et_pb_menu__logo-slot a.ww-crest img, .ww-crest-m img { animation: wwCrestIn .5s ease-out both !important; }
@keyframes wwCrestIn { from { opacity: 0; } to { opacity: 1; } }
@media (prefers-reduced-motion: reduce) { .ww-navm a.ww-crest img, .ww-crest-m img { animation: none !important; } }
.ww-vmodal-box { aspect-ratio: 9 / 16; width: auto; height: min(86vh, 920px); max-width: 92vw; }

/* ============ v12 QA fixes (7/28 eve): inversion carrier + band inks + veil + type/spacing ============ */
/* 1. eyebrow-as-headline: style the TEXT CARRIER (legacy 13px inner rule was winning) */
.ww-sec .ww-eyebrow-m .et_pb_text_inner, .ww-sec .ww-eyebrow-m .et_pb_text_inner p {
  font-family: 'Cormorant Garamond', serif !important; font-weight: 600 !important;
  font-size: clamp(30px, 2.5vw, 40px) !important; letter-spacing: 0 !important; text-transform: none !important;
  color: #173268 !important; line-height: 1.16 !important;
}
/* heroes + the membership capsule keep the small-caps kicker treatment */
.ww-hero .ww-eyebrow-m .et_pb_text_inner, .ww-hero .ww-eyebrow-m .et_pb_text_inner p,
.ww-pagehero .ww-eyebrow-m .et_pb_text_inner, .ww-pagehero .ww-eyebrow-m .et_pb_text_inner p,
.ww-memhero .ww-eyebrow-m .et_pb_text_inner, .ww-memhero .ww-eyebrow-m .et_pb_text_inner p,
.ww-abouthero .ww-eyebrow-m .et_pb_text_inner, .ww-abouthero .ww-eyebrow-m .et_pb_text_inner p,
.ww-mem .ww-eyebrow-m .et_pb_text_inner, .ww-mem .ww-eyebrow-m .et_pb_text_inner p,
.ww-mem-eyebrow .et_pb_text_inner, .ww-mem-eyebrow .et_pb_text_inner p {
  font-family: Jost, sans-serif !important; font-weight: 700 !important; font-size: 13px !important;
  letter-spacing: .26em !important; text-transform: uppercase !important; line-height: 1.4 !important;
}
/* 2. sections with no eyebrow: promote the lone H2 back to headline */
.ww-sec .et_pb_column:not(:has(.ww-eyebrow-m)) .ww-h2-m h2 {
  font-style: normal !important; font-weight: 600 !important; font-size: clamp(28px, 2.3vw, 36px) !important;
  color: #173268 !important; line-height: 1.2 !important; letter-spacing: 0 !important;
}
/* 3. dark-band inks (page styles load late — !important required) */
.ww-navystrip .et_pb_text_inner, .ww-navystrip .et_pb_text_inner p, .ww-navystrip em, .ww-navystrip li { color: rgba(255,255,255,.92) !important; }
.ww-statsband .et_pb_text_inner, .ww-statsband .et_pb_text_inner p { color: #F7EFDD !important; }
.ww-statsband .ww-stat-label, .ww-stat-label { color: rgba(247,239,221,.75) !important; }
.ww-wildband .et_pb_text_inner, .ww-wildband .et_pb_text_inner p { color: #F7EFDD !important; }
.ww-memhero-micro, .ww-memhero .ww-memhero-micro .et_pb_text_inner { color: #E3BE7F !important; }
.ww-mem .ww-eyebrow-m .et_pb_text_inner, .ww-mem .ww-eyebrow-m .et_pb_text_inner p,
.ww-mem-eyebrow .et_pb_text_inner, .ww-mem-eyebrow .et_pb_text_inner p { color: rgba(255,255,255,.92) !important; }
/* 4. memhero veil: full-bleed, stronger */
.ww-sec.ww-abouthero::before, .ww-sec.ww-memhero::before {
  left: 0 !important; right: 0 !important; width: auto !important; height: 340px !important;
  background: linear-gradient(180deg, rgba(255,252,247,.97) 0%, rgba(255,252,247,.7) 45%, rgba(255,252,247,0) 100%) !important;
  z-index: 1 !important;
}
.ww-sec.ww-abouthero > .et_pb_row, .ww-sec.ww-memhero > .et_pb_row { position: relative; z-index: 2 !important; }
/* 5. about hero subtitle over photo */
.ww-abouthero-cred, .ww-abouthero .ww-abouthero-cred .et_pb_text_inner { color: #FFF7EA !important; text-shadow: 0 1px 12px rgba(23,32,60,.4); }
/* 6. brand the content links (kill stock Divi blue) */
#main-content .et_pb_text a:not(.et_pb_button):not(.ww-hero-emg), #main-content .et_pb_blurb a { color: #C94D97 !important; font-weight: 600; }
#main-content .et_pb_text a:hover { color: #A93A7D !important; }
/* 7. mobile species labels: 2-up with real width, no mid-word breaks */
@media (max-width: 980px) {
  .ww-species-mid .et_pb_column { flex: 0 0 45% !important; width: 45% !important; }
  .ww-species-mid .et_pb_blurb_container { width: 100%; min-width: 140px; }
  .ww-med .et_pb_module_header { font-size: 18px !important; overflow-wrap: normal !important; word-break: keep-all; }
}
/* 8. H3 floor + home pillar band */
.ww-sec .et_pb_text_inner > h3 { font-size: clamp(24px, 1.9vw, 28px); }
.ww-pillars .ww-pillar h3 { font-size: 18px !important; letter-spacing: .14em !important; }
/* 9. stuck capsule: spread links into the dead left space */
@media (min-width: 1281px) { body.ww-stuck .ww-navm ul.et-menu > li { margin: 0 8px !important; } }
/* 10. modal matches the 3:4 footage */
.ww-vmodal-box { aspect-ratio: 3 / 4 !important; height: min(85vh, 880px) !important; }
/* 11-13. paragraph rhythm · mobile H1 wrap · policies linked h3 */
.ww-sec .et_pb_text_inner p + p { margin-top: .8em !important; }
@media (max-width: 430px) { .ww-memhero h1 { word-break: normal !important; font-size: clamp(30px, 9vw, 40px) !important; } }
.et_pb_column h3 a { color: inherit !important; text-decoration: none !important; }
/* 14. mobile menu pinned block: opaque + above rows */
.ww-tbheader .ww-navm.et_pb_menu .et_mobile_menu li.ww-menu-tel,
.ww-tbheader .ww-navm.et_pb_menu .et_mobile_menu li.ww-menu-cta { z-index: 5; }
/* 15. mobile pillar cards: content-sized with real gaps */
@media (max-width: 980px) { .ww-pillar { min-height: 0 !important; padding: 28px 22px !important; } .ww-pillars { gap: 18px; } }
/* 21. atlist wrapper loading tint */
#atlist-embed { background: #FBE9F2; }

/* v12.1: memhero kicker keeps its gold on plum (carrier rule was forcing navy) */
.ww-memhero .ww-eyebrow-m .et_pb_text_inner, .ww-memhero .ww-eyebrow-m .et_pb_text_inner p { color: #E3BE7F !important; }

/* ============ v13 header round 4 (Nick): stuck spacing discipline + shorter CTA + crest padding spec ============ */
@media (min-width: 1281px) {
  .ww-navm li.et_pb_menu__logo-slot a.ww-crest, body.ww-stuck .ww-navm li.et_pb_menu__logo-slot a.ww-crest { padding: 2px 0 20px !important; }
  body.ww-stuck .ww-navm .et_pb_menu__menu ul.et-menu { padding-left: 0 !important; padding-right: clamp(184px, 12vw + 24px, 206px) !important; }
  body.ww-stuck .ww-navm ul.et-menu > li { margin: 0 7px !important; }
  body.ww-stuck .ww-navm ul.et-menu > li.et_pb_menu__logo-slot { margin: 0 !important; }
  .ww-navm ul.et-menu > li { margin: 0 5px !important; }
}

/* v13.2 (panel r2): flip geometry eases with the crest — no single-frame teleport */
@media (min-width: 1281px) {
  .ww-navm .et_pb_menu__menu ul.et-menu, body.ww-stuck .ww-navm .et_pb_menu__menu ul.et-menu { transition: padding .28s cubic-bezier(.4,0,.2,1); }
  .ww-navm ul.et-menu > li, body.ww-stuck .ww-navm ul.et-menu > li { transition: margin .28s cubic-bezier(.4,0,.2,1); }
}

/* ============ v16: semantic section heads (home) — presets are authority, tokens are fallback ============ */
.ww-headline h2 { font-family: var(--wwb-font-display); font-weight: 600; font-size: var(--wwb-headline-size); color: var(--wwb-ink); line-height: 1.16; margin: 0 0 4px; }
.ww-subtitle, .ww-subtitle p { font-family: var(--wwb-font-display); font-style: italic; font-weight: 500; font-size: var(--wwb-subtitle-size); color: var(--wwb-subtitle-ink); line-height: 1.5; }
.ww-headline-left, .ww-subtitle-left { text-align: left; }
.ww-headline + .ww-subtitle { margin-top: 0; }
@media (max-width: 980px) { .ww-headline h2 { font-size: calc(var(--wwb-headline-size, 36px) * 0.75); } }

/* ============ v17 (7/29, Nick round 5): pillar cards · autoplay hero video · page polish · mobile bar ============ */

/* ---- PILLAR CARDS: luxury medallion treatment on a gradient band ---- */
.ww-sec.ww-values { background: linear-gradient(135deg, var(--wwb-pink-deep, #C94C97) 0%, var(--wwb-pink, #C94D97) 58%, #B23E85 100%) !important; padding: 66px 0 !important; position: relative; }
.ww-sec.ww-values::before { content: ""; position: absolute; inset: 0; background: url(images/ww-feather-whisper.webp) center / 120% auto no-repeat; opacity: .07; mix-blend-mode: soft-light; pointer-events: none; }
.ww-sec.ww-values .et_pb_row { position: relative; z-index: 1; }
.ww-sec.ww-values .et_pb_column { display: flex; }
.ww-sec.ww-values .ww-pillars-in { width: 100%; display: flex; }
.ww-sec.ww-values .ww-pillars-in .et_pb_text_inner { width: 100%; display: flex; }
.ww-pillar2 {
  width: 100%; display: flex; flex-direction: column; align-items: center; text-align: center;
  background: rgba(255,254,253,.94); border: 1px solid rgba(255,255,255,.72);
  border-radius: var(--wwb-card-radius, 22px); padding: 38px 32px 34px;
  box-shadow: 0 10px 24px -12px rgba(74,13,44,.28), 0 28px 56px -20px rgba(74,13,44,.32);
  transition: transform .32s cubic-bezier(.2,.7,.3,1), box-shadow .32s cubic-bezier(.2,.7,.3,1);
}
.ww-pillar2:hover { transform: translateY(-5px); box-shadow: 0 14px 30px -12px rgba(74,13,44,.32), 0 40px 72px -22px rgba(74,13,44,.4); }
.ww-pillar2-icon {
  display: inline-grid; place-items: center; width: 66px; height: 66px; border-radius: 50%;
  background: linear-gradient(180deg, #FFFFFF 0%, var(--wwb-cream, #FDF5EC) 100%);
  border: 1px solid rgba(201,77,151,.28);
  box-shadow: inset 0 1px 0 #fff, 0 10px 20px -10px rgba(156,58,116,.4);
  margin-bottom: 18px;
}
.ww-pillar2-icon img { width: 32px; height: 32px; display: block; }
.ww-pillar2 h3 {
  font-family: var(--wwb-font-display, 'Cormorant Garamond', serif); font-weight: 600;
  font-size: 23px; line-height: 1.22; color: var(--wwb-ink, #173268);
  margin: 0 0 12px; letter-spacing: .01em; text-transform: none;
}
.ww-pillar2-rule { display: block; width: 44px; height: 2px; margin: 0 auto 14px; border-radius: 2px;
  background: linear-gradient(90deg, var(--wwb-gold, #E3BE7F), var(--wwb-pink, #C94D97)); }
.ww-pillar2 p { font-family: var(--wwb-font-body, Jost, sans-serif); font-size: 15.5px; font-weight: 400;
  line-height: 1.62; color: var(--wwb-body-ink, #2E2044); margin: 0; max-width: 30ch; }
@media (max-width: 980px) {
  .ww-sec.ww-values { padding: 44px 0 !important; }
  .ww-pillar2 { padding: 30px 24px 28px; margin-bottom: 14px; }
}

/* ---- HERO VIDEO: inline autoplay card ---- */
.ww-video { position: relative; overflow: hidden; border-radius: 24px; }
.ww-video-vid { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; display: block; }
.ww-video::after { content: ""; position: absolute; inset: 0; border-radius: 24px; box-shadow: inset 0 0 0 1px rgba(255,255,255,.35), inset 0 -80px 90px -50px rgba(31,12,38,.45); pointer-events: none; }
.ww-play { position: relative; z-index: 2; }
.ww-video:hover .ww-play { transform: scale(1.06); }
.ww-play { transition: transform .3s cubic-bezier(.2,.7,.3,1); }
@keyframes wwPulse { 0%, 100% { box-shadow: 0 0 0 0 rgba(255,255,255,.45); } 60% { box-shadow: 0 0 0 14px rgba(255,255,255,0); } }
.ww-play { animation: wwPulse 2.6s ease-out infinite; }
@media (prefers-reduced-motion: reduce) { .ww-play { animation: none; } .ww-pillar2, .ww-pillar2:hover { transform: none; } }

/* ---- PAGE POLISH: hover language for cards + medallions ---- */
.ww-diffcard { transition: transform .32s cubic-bezier(.2,.7,.3,1), box-shadow .32s cubic-bezier(.2,.7,.3,1); }
.ww-diffcard:hover { transform: translateY(-4px); box-shadow: 0 24px 52px -18px rgba(156,58,116,.2); }
.ww-med img { transition: transform .35s cubic-bezier(.2,.7,.3,1), box-shadow .35s; border-radius: 50%; }
.ww-med:hover img { transform: scale(1.045); box-shadow: 0 0 0 3px rgba(201,77,151,.35), 0 14px 30px -12px rgba(156,58,116,.4); }

/* ---- MOBILE NAV: clean rounded bar (replaces the stepped tab shape) ---- */
@media (max-width: 1280px) {
  body.ww-stuck .ww-navm-row, .ww-navm-row { padding: 10px 12px 0 !important; }
  body.ww-stuck .ww-tbheader .ww-navm, .ww-tbheader .ww-navm {
    aspect-ratio: auto !important; height: 64px !important; width: auto !important; max-width: none !important;
    background: var(--wwb-shell, #FFFEFD) !important; border-radius: 100px !important;
    box-shadow: 0 12px 28px rgba(41, 18, 61, 0.12) !important; filter: none !important;
    margin: 0 !important; position: relative;
  }
  .ww-tbheader .ww-navm::before, body.ww-stuck .ww-tbheader .ww-navm::before { content: none !important; background: none !important; }
  body.ww-stuck .ww-crest-m, .ww-crest-m {
    display: block !important; position: absolute !important; left: 20px !important; top: 50% !important;
    transform: translateY(-50%); width: auto !important; height: 40px !important;
  }
  body.ww-stuck .ww-crest-m img, .ww-crest-m img { width: auto !important; height: 100% !important; display: block; }
  body.ww-stuck .ww-tbheader .ww-navm, .ww-tbheader .ww-navm { display: flex !important; align-items: center !important; padding: 0 10px 0 0 !important; }
  .ww-tbheader .ww-navm .et_pb_menu_inner_container { position: static !important; width: 100% !important; display: flex !important; align-items: center !important; }
  body.ww-stuck .ww-tbheader .ww-navm .et_pb_menu__wrap, .ww-tbheader .ww-navm .et_pb_menu__wrap {
    position: static !important; transform: none !important; margin-left: auto !important; width: auto !important; flex: none !important;
  }
  .ww-navm .mobile_menu_bar { width: 44px; height: 44px; display: grid; place-items: center; }
  .ww-tbheader .ww-navm.et_pb_menu .et_mobile_menu,
  body.ww-stuck .ww-tbheader .ww-navm.et_pb_menu .et_mobile_menu {
    top: 82px !important; max-height: calc(100dvh - 96px) !important; border-radius: 18px !important;
    left: 12px !important; right: 12px !important; width: auto !important;
  }
  [id] { scroll-margin-top: 100px !important; }
  .ww-sec.ww-hero { padding-top: 108px !important; }
  .ww-sec.ww-pagehero, .ww-sec.ww-memhero { padding-top: 112px !important; }
  .ww-sec.ww-abouthero { padding-top: 118px !important; }
}
@media (min-width: 431px) and (max-width: 1280px) {
  body.ww-stuck .ww-tbheader .ww-navm, .ww-tbheader .ww-navm { height: 70px !important; }
  body.ww-stuck .ww-crest-m, .ww-crest-m { height: 44px !important; left: 26px !important; }
  .ww-tbheader .ww-navm.et_pb_menu .et_mobile_menu, body.ww-stuck .ww-tbheader .ww-navm.et_pb_menu .et_mobile_menu { top: 90px !important; }
  .ww-sec.ww-hero { padding-top: 118px !important; }
  .ww-sec.ww-pagehero, .ww-sec.ww-memhero { padding-top: 122px !important; }
  .ww-sec.ww-abouthero { padding-top: 128px !important; }
}

/* v17.1 (mobile panel r1): scrim vs Preloader Plus + band coverage */
@media (max-width: 1280px) {
  body:not(.ww-menu-open) > .ww-menu-scrim { opacity: 0 !important; pointer-events: none; }
  body.ww-menu-open > .ww-menu-scrim { opacity: 1 !important; }
  .ww-menu-scrim { transition: opacity .2s ease; }
}

/* ============ v18 (7/29): hero video sizing · pillar cards equal+refined · concierge & species polish ============ */

/* ---- 1. HERO VIDEO: restore the card's height (the poster img used to supply it) ---- */
.ww-video { aspect-ratio: 3 / 4; max-height: 70vh; width: 100%; display: block; }
.ww-video-vid { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.ww-video .ww-play { position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%); }
.ww-video:hover .ww-play { transform: translate(-50%, -50%) scale(1.06); }
.ww-video .ww-video-chip { position: absolute; left: 20px; bottom: 20px; z-index: 2; }
@media (max-width: 980px) { .ww-video { aspect-ratio: 4 / 5; max-height: 62vh; } }

/* ---- 2. PILLAR CARDS: equal height + refined detail ---- */
.ww-sec.ww-values .ww-values-row { display: flex !important; align-items: stretch !important; flex-wrap: wrap; }
.ww-sec.ww-values .ww-values-row > .et_pb_column { display: flex !important; float: none !important; align-items: stretch; }
.ww-sec.ww-values .ww-pillars-in, .ww-sec.ww-values .ww-pillars-in .et_pb_text_inner { width: 100%; display: flex; }
.ww-pillar2 {
  height: 100%; justify-content: flex-start; position: relative; overflow: hidden;
  background: linear-gradient(180deg, #FFFFFF 0%, var(--wwb-cream, #FDF5EC) 100%);
  padding: 42px 34px 38px;
}
.ww-pillar2::before { content: ""; position: absolute; left: 0; right: 0; top: 0; height: 3px;
  background: linear-gradient(90deg, var(--wwb-gold, #E3BE7F), var(--wwb-pink, #C94D97) 55%, var(--wwb-pink-deep, #C94C97)); }
.ww-pillar2-icon {
  width: 72px; height: 72px; color: var(--wwb-ink, #173268);
  background: radial-gradient(circle at 50% 34%, #FFFFFF 0%, var(--wwb-cream, #FDF5EC) 78%);
  border: 1px solid rgba(201,77,151,.24);
  box-shadow: inset 0 1px 0 #fff, 0 8px 18px -10px rgba(156,58,116,.45);
  margin-bottom: 20px; transition: transform .32s cubic-bezier(.2,.7,.3,1);
}
.ww-pillar2-icon svg { width: 32px; height: 32px; display: block; }
.ww-pillar2-icon svg .ac { stroke: var(--wwb-pink, #C94D97); }
.ww-pillar2:hover .ww-pillar2-icon { transform: translateY(-2px) scale(1.04); }
.ww-pillar2 h3 { font-size: 22px; margin: 0 0 14px; }
.ww-pillar2-rule { width: 52px; height: 1.5px; margin: 0 auto 16px; opacity: .85; }
.ww-pillar2 p { font-size: 15px; line-height: 1.66; }
@media (max-width: 980px) { .ww-pillar2 { padding: 32px 24px 30px; } .ww-sec.ww-values .ww-values-row > .et_pb_column { width: 100% !important; } }

/* ---- 3a. CONCIERGE CARE panel ---- */

.ww-promise-row {
  background: linear-gradient(168deg, #FFFDF9 0%, var(--wwb-cream, #FDF5EC) 62%, #FCEFE2 100%) !important;
  border: 1px solid rgba(227,190,127,.42); border-radius: 30px !important;
  box-shadow: 0 26px 60px -24px rgba(156,58,116,.22), inset 0 1px 0 rgba(255,255,255,.9);
  position: relative; overflow: hidden;
}
.ww-promise-row::before { content: ""; position: absolute; left: 50%; top: 0; transform: translateX(-50%);
  width: 180px; height: 3px; border-radius: 0 0 3px 3px;
  background: linear-gradient(90deg, transparent, var(--wwb-gold, #E3BE7F), var(--wwb-pink, #C94D97), transparent); }
.ww-promise-row .ww-headline h2 { margin-bottom: 10px; }
.ww-promise-row .ww-subtitle { margin-bottom: 30px !important; }
.ww-promise-row ul.ww-checks { column-gap: 64px; }
.ww-promise-row ul.ww-checks li { padding: 11px 0 11px 42px; border-bottom: 1px solid rgba(201,77,151,.1); font-size: 15.5px; }
.ww-promise-row ul.ww-checks li::before {
  width: 25px; height: 25px; line-height: 25px; font-size: 12px; top: 11px;
  background: linear-gradient(140deg, var(--wwb-pink, #C94D97), var(--wwb-pink-deep, #C94C97));
  box-shadow: 0 4px 10px -4px rgba(156,58,116,.6);
}
@media (max-width: 980px) { .ww-promise-row { border-radius: 22px !important; } .ww-promise-row ul.ww-checks li { padding-left: 38px; } }

/* ---- 3b. SPECIES WE TREAT: bigger medallions, calm background, navy labels ---- */
.ww-sec.ww-species::before { opacity: .18 !important; mix-blend-mode: normal !important; height: 34vw !important;
  background-size: 108% auto !important; background-position: center top -3vw !important; }
.ww-species-cardrow { background: rgba(255,255,255,.78); }
.ww-species-top { padding-bottom: 6px !important; }
.ww-species-mid { padding-top: 34px !important; padding-bottom: 8px !important; }

.ww-med img, .ww-med picture img { width: 128px !important; height: 128px !important; object-fit: cover; border-radius: 50%;
  box-shadow: 0 0 0 6px rgba(255,255,255,.9), 0 14px 30px -14px rgba(156,58,116,.45); }
.ww-med:hover img { box-shadow: 0 0 0 6px rgba(255,255,255,.95), 0 0 0 7.5px rgba(201,77,151,.4), 0 18px 34px -14px rgba(156,58,116,.5); }
.ww-med .et_pb_module_header { margin-top: 18px !important; min-height: 3em; }
/* medallion titles are links (blurb url) — keep them navy, not brand-link pink */
#main-content .et_pb_blurb .et_pb_module_header a, .ww-med .et_pb_module_header a {
  color: var(--wwb-ink, #173268) !important; font-family: var(--wwb-font-body, Jost, sans-serif) !important;
  font-weight: 600 !important; font-size: 15.5px !important; letter-spacing: .02em; text-decoration: none !important;
  transition: color .25s ease;
}
#main-content .et_pb_blurb .et_pb_module_header a:hover, .ww-med .et_pb_module_header a:hover { color: var(--wwb-pink, #C94D97) !important; }
@media (max-width: 980px) {
  .ww-med img, .ww-med picture img { width: 104px !important; height: 104px !important; }
  .ww-med .et_pb_module_header { min-height: 0; }
  .ww-sec.ww-species::before { height: 52vw !important; background-size: 150% auto !important; opacity: .14 !important; }
}

/* v18.1: icon strokes set directly (legacy values-strip white color was winning via currentColor) */
.ww-sec.ww-values .ww-pillar2-icon, .ww-pillar2-icon { color: var(--wwb-ink, #173268) !important; }
.ww-sec.ww-values .ww-pillar2-icon svg, .ww-pillar2-icon svg {
  fill: none !important; stroke: var(--wwb-ink, #173268) !important;
  stroke-width: 1.35 !important; stroke-linecap: round !important; stroke-linejoin: round !important;
}
.ww-sec.ww-values .ww-pillar2-icon svg .ac, .ww-pillar2-icon svg .ac { stroke: var(--wwb-pink, #C94D97) !important; }

/* v18.2: species card bottom rhythm */
.ww-species-bot { padding-top: 10px !important; padding-bottom: 38px !important; }
@media (max-width: 980px) { .ww-species-bot { padding-bottom: 30px !important; } }

/* v18.3: species grid — desktop 6-up, mobile 2-up, always circular */
@media (min-width: 981px) { .ww-species-mid .et_pb_column { flex: 0 1 190px !important; } }
@media (max-width: 980px) {
  .ww-species-mid { column-gap: 14px !important; row-gap: 22px !important; }
  .ww-species-mid .et_pb_column { flex: 0 0 calc(50% - 7px) !important; width: calc(50% - 7px) !important; margin-bottom: 0 !important; }
  .ww-med img, .ww-med picture img { width: min(104px, 100%) !important; height: auto !important; aspect-ratio: 1 / 1 !important; object-fit: cover; }
  .ww-med .et_pb_module_header { min-height: 0 !important; margin-top: 12px !important; }
}
.ww-med img, .ww-med picture img { aspect-ratio: 1 / 1; }

/* v18.4: kill the inline-baseline gap under medallion images */
.ww-med .et_pb_main_blurb_image { line-height: 0 !important; font-size: 0 !important; margin-bottom: 16px !important; }
.ww-med .et_pb_main_blurb_image .et_pb_image_wrap { display: block !important; line-height: 0 !important; }
@media (max-width: 980px) { .ww-med .et_pb_main_blurb_image { margin-bottom: 12px !important; } }

/* v18.5: pillar card internal rhythm — neutralize Divi's inherited heading/paragraph block spacing */
.ww-pillar2 .ww-pillar2-icon { margin: 0 0 20px !important; }
.ww-pillar2 h3 { margin: 0 0 14px !important; padding: 0 !important; }
.ww-pillar2 .ww-pillar2-rule { margin: 0 auto 16px !important; }
.ww-pillar2 p { margin: 0 !important; padding: 0 !important; }
@media (max-width: 980px) {
  .ww-pillar2 { padding: 30px 24px 28px !important; }
  .ww-pillar2 .ww-pillar2-icon { margin-bottom: 16px !important; }
  .ww-pillar2 h3 { margin-bottom: 10px !important; }
  .ww-pillar2 .ww-pillar2-rule { margin-bottom: 13px !important; }
}

/* ============ v19 (7/29): translucent header shell + hero video carousel ============ */

/* 1. header shell blends with the page */
@media (min-width: 1281px) {
  .ww-tbheader .ww-navm::before, body.ww-stuck .ww-tbheader .ww-navm::before { opacity: .7 !important; }
}

/* 2. HERO VIDEO CAROUSEL — the card frame is unchanged; slides ride inside it */
.ww-vcar { position: relative; overflow: hidden; touch-action: pan-y; cursor: grab; }
.ww-vcar.is-dragging { cursor: grabbing; }
.ww-vcar-track { position: absolute; inset: 0; display: flex; width: 100%; height: 100%;
  transition: transform .58s cubic-bezier(.22,.68,.24,1); will-change: transform; }
.ww-vcar-slide { position: relative; flex: 0 0 100%; width: 100%; height: 100%; overflow: hidden; }
.ww-vcar-vid { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; display: block;
  transform: scale(1.001); transition: opacity .4s ease; }
.ww-vcar-slide:not(.is-active) .ww-vcar-vid { opacity: .92; }

/* arrows: frosted pills, navy chevrons */
.ww-vcar-arrow {
  position: absolute; top: 50%; transform: translateY(-50%); z-index: 4;
  width: 44px; height: 44px; padding: 0; border: 1px solid rgba(255,255,255,.7); border-radius: 50%;
  background: rgba(255,254,253,.82); -webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px);
  box-shadow: 0 8px 22px -8px rgba(31,12,38,.5); cursor: pointer; display: grid; place-items: center;
  opacity: .92; transition: opacity .28s ease, transform .28s cubic-bezier(.2,.7,.3,1), background .28s ease;
}
.ww-vcar-prev { left: 14px; } .ww-vcar-next { right: 14px; }
.ww-vcar-arrow svg { width: 19px; height: 19px; fill: none; stroke: var(--wwb-ink, #173268); stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; transition: stroke .25s ease; }
.ww-vcar-arrow:hover { opacity: 1; background: #FFFEFD; transform: translateY(-50%) scale(1.07); }
.ww-vcar-arrow:hover svg { stroke: var(--wwb-pink, #C94D97); }
.ww-vcar-arrow:focus-visible { outline: 2px solid var(--wwb-pink, #C94D97); outline-offset: 3px; }
.ww-vcar-arrow[disabled] { opacity: .35; pointer-events: none; }

/* dot indicator: active morphs into a pill, on a soft scrim */
.ww-vcar-dots { position: absolute; left: auto; right: 20px; bottom: 24px; z-index: 4;
  display: flex; justify-content: flex-end; align-items: center; gap: 8px; pointer-events: none; }
/* legibility scrim rides each slide so chip + dots always read */
.ww-vcar-slide::after { content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: 128px;
  background: linear-gradient(180deg, rgba(31,12,38,0) 0%, rgba(31,12,38,.42) 100%); pointer-events: none; z-index: 1; }
.ww-vcar-dot { pointer-events: auto; width: 8px; height: 8px; padding: 0; border: 0; border-radius: 100px; cursor: pointer;
  background: rgba(255,255,255,.62); box-shadow: 0 1px 4px rgba(31,12,38,.35);
  transition: width .42s cubic-bezier(.22,.68,.24,1), background .32s ease, transform .28s ease; }
.ww-vcar-dot:hover { background: rgba(255,255,255,.9); transform: scale(1.15); }
.ww-vcar-dot.is-active { width: 28px; background: var(--wwb-pink, #C94D97); box-shadow: 0 2px 10px -2px rgba(201,77,151,.9); transform: none; }
.ww-vcar-dot:focus-visible { outline: 2px solid #fff; outline-offset: 2px; }

/* the play affordance sits above the slides */
.ww-vcar .ww-play { z-index: 5; }
.ww-vcar .ww-video-chip { z-index: 4; }

@media (max-width: 980px) {
  .ww-vcar-arrow { width: 40px; height: 40px; }
  .ww-vcar-prev { left: 10px; } .ww-vcar-next { right: 10px; }
  .ww-vcar-dots { bottom: 18px; right: 16px; }
}
@media (prefers-reduced-motion: reduce) {
  .ww-vcar-track { transition: none !important; }
  .ww-vcar-dot { transition: none !important; }
}

/* v20: arrows live OUTSIDE the video frame (dots stay inside) */
.ww-vcar-outer { position: relative; width: 100%; flex: 1 1 100%; }
@media (min-width: 1281px) {
  .ww-vcar-outer .ww-vcar-prev { left: -68px; }
  .ww-vcar-outer .ww-vcar-next { right: -68px; }
  .ww-vcar-arrow { background: rgba(255,254,253,.94); box-shadow: 0 10px 26px -10px rgba(31,12,38,.35); opacity: 1; }
}
@media (max-width: 1280px) {
  .ww-vcar-outer .ww-vcar-prev { left: 10px; }
  .ww-vcar-outer .ww-vcar-next { right: 10px; }
}

/* ============ v21 (7/29): Species We Treat — Concierge-Care card treatment + refinement ============ */

/* the three stacked rows read as ONE card: horizontal gradient repeats seamlessly across them */
.ww-species-cardrow, .ww-species-top, .ww-species-mid, .ww-species-bot {
  background: linear-gradient(100deg, #FFFDF9 0%, var(--wwb-cream, #FDF5EC) 58%, #FCEFE2 100%) !important;
  border-left: 1px solid rgba(227,190,127,.42) !important;
  border-right: 1px solid rgba(227,190,127,.42) !important;
  backdrop-filter: none !important; -webkit-backdrop-filter: none !important;
  position: relative;
}
.ww-species-top {
  border-top: 1px solid rgba(227,190,127,.42) !important;
  border-radius: 30px 30px 0 0 !important;
  box-shadow: inset 0 1px 0 rgba(255,255,255,.9);
  padding-top: 64px !important;
}
.ww-species-bot {
  border-bottom: 1px solid rgba(227,190,127,.42) !important;
  border-radius: 0 0 30px 30px !important;
  box-shadow: 0 26px 60px -24px rgba(156,58,116,.22) !important;
  padding-top: 26px !important; padding-bottom: 46px !important;
}
/* gold→pink accent, centered on the card's top edge (same as the Concierge card) */
.ww-species-top::before {
  content: ""; position: absolute; left: 50%; top: 0; transform: translateX(-50%);
  width: 180px; height: 3px; border-radius: 0 0 3px 3px; z-index: 2;
  background: linear-gradient(90deg, transparent, var(--wwb-gold, #E3BE7F), var(--wwb-pink, #C94D97), transparent);
}
/* a whisper of the brand feather, low and warm, inside the card */
.ww-species-mid::after {
  content: ""; position: absolute; right: 0; bottom: -30px; width: 46%; height: 150%;
  background: url(images/ww-feather-whisper.webp) right bottom / contain no-repeat;
  opacity: .07; pointer-events: none; z-index: 0;
}
.ww-species-mid .et_pb_column { position: relative; z-index: 1; }

/* medallions: cream-backed rings that warm up on hover */
.ww-med img, .ww-med picture img {
  box-shadow: 0 0 0 6px #FFFDF9, 0 0 0 7px rgba(227,190,127,.35), 0 14px 30px -14px rgba(156,58,116,.4) !important;
  transition: transform .38s cubic-bezier(.2,.7,.3,1), box-shadow .38s cubic-bezier(.2,.7,.3,1) !important;
}
.ww-med:hover img {
  transform: translateY(-5px) scale(1.03);
  box-shadow: 0 0 0 6px #FFFDF9, 0 0 0 7.5px var(--wwb-pink, #C94D97), 0 20px 38px -14px rgba(156,58,116,.55) !important;
}
.ww-med .et_pb_module_header a { transition: color .28s ease; }
.ww-med:hover .et_pb_module_header a { color: var(--wwb-pink, #C94D97) !important; }

/* the closing ask line: hairline rule + refined link */
.ww-species-bot::before {
  content: ""; position: absolute; left: 64px; right: 64px; top: 0; height: 1px;
  background: linear-gradient(90deg, transparent, rgba(227,190,127,.5) 22%, rgba(201,77,151,.28) 50%, rgba(227,190,127,.5) 78%, transparent);
}
.ww-species-bot .ww-link {
  font-family: var(--wwb-font-body, Jost, sans-serif) !important; font-weight: 500 !important;
  font-size: 15px !important; color: var(--wwb-body-ink, #2E2044) !important; letter-spacing: .01em;
  display: inline-flex; align-items: center; gap: 4px;
  border-bottom: 1px solid rgba(201,77,151,.35); padding-bottom: 3px;
  transition: color .26s ease, border-color .26s ease;
}
.ww-species-bot .ww-link:hover { color: var(--wwb-pink, #C94D97) !important; border-bottom-color: var(--wwb-pink, #C94D97); }

@media (max-width: 980px) {
  .ww-species-top { border-radius: 24px 24px 0 0 !important; padding-top: 40px !important; }
  .ww-species-bot { border-radius: 0 0 24px 24px !important; padding-top: 22px !important; padding-bottom: 34px !important; }
  .ww-species-bot::before { left: 24px; right: 24px; }
  .ww-species-mid::after { width: 70%; opacity: .05; }
  .ww-species-bot .ww-link { font-size: 14px !important; }
}

/* v21.1: species refinements — link ink beats the global brand-link rule, label presence */
#main-content .ww-species-bot .ww-link, .ww-species-bot .et_pb_text_inner .ww-link {
  color: var(--wwb-body-ink, #2E2044) !important;
}
#main-content .ww-species-bot .ww-link:hover { color: var(--wwb-pink, #C94D97) !important; }
.ww-med .et_pb_module_header a, #main-content .et_pb_blurb .ww-med .et_pb_module_header a {
  font-size: 16.5px !important; letter-spacing: .015em !important; line-height: 1.35 !important;
}
.ww-med .et_pb_module_header { min-height: 2.7em; }
.ww-species-top .ww-headline h2, .ww-species-top .ww-h2-m h2 { margin-bottom: 6px !important; }
@media (max-width: 980px) {
  .ww-med .et_pb_module_header a, #main-content .et_pb_blurb .ww-med .et_pb_module_header a { font-size: 15px !important; }
}

/* v21.2: correct specificity — .ww-med is COMPOUND on the blurb (.et_pb_blurb.ww-med), and the
   global brand-link rule is (1,3,1) so overrides must exceed it */
#main-content .ww-species-bot .et_pb_text_inner a.ww-link:not(.et_pb_button) {
  color: var(--wwb-body-ink, #2E2044) !important;
}
#main-content .ww-species-bot .et_pb_text_inner a.ww-link:not(.et_pb_button):hover {
  color: var(--wwb-pink, #C94D97) !important;
}
#main-content .et_pb_blurb.ww-med .et_pb_module_header a:not(.et_pb_button) {
  font-size: 16.5px !important; letter-spacing: .015em !important; line-height: 1.35 !important;
  color: var(--wwb-ink, #173268) !important;
}
#main-content .et_pb_blurb.ww-med:hover .et_pb_module_header a:not(.et_pb_button) { color: var(--wwb-pink, #C94D97) !important; }
@media (max-width: 980px) {
  #main-content .et_pb_blurb.ww-med .et_pb_module_header a:not(.et_pb_button) { font-size: 15px !important; }
}

/* v22: species breathing room under the medallion labels */
.ww-species-mid { padding-bottom: 34px !important; }
.ww-species-bot { padding-top: 34px !important; }
@media (max-width: 980px) { .ww-species-mid { padding-bottom: 24px !important; } .ww-species-bot { padding-top: 26px !important; } }

/* v22.1: beat Divi's generated row padding (equal specificity + later in cascade) */
.ww-sec.ww-species .ww-species-mid { padding-bottom: 28px !important; }
.ww-sec.ww-species .ww-species-bot { padding-top: 30px !important; padding-bottom: 46px !important; }
@media (max-width: 980px) {
  .ww-sec.ww-species .ww-species-mid { padding-bottom: 20px !important; }
  .ww-sec.ww-species .ww-species-bot { padding-top: 24px !important; padding-bottom: 34px !important; }
}

/* v22.2: Conservation Corner is now a saturated pink band (Nick's builder color) — light inks */
.ww-sec.ww-cons .et_pb_text_inner, .ww-sec.ww-cons .et_pb_text_inner p { color: rgba(255,255,255,.95) !important; }
.ww-sec.ww-cons .ww-headline h2, .ww-sec.ww-cons .ww-h2-m h2 { color: #FFF7EA !important; }
.ww-sec.ww-cons .ww-subtitle, .ww-sec.ww-cons .ww-subtitle p { color: rgba(255,247,234,.86) !important; }
.ww-sec.ww-cons .et_pb_text_inner em { color: #FFF7EA !important; }
#main-content .ww-sec.ww-cons .et_pb_text_inner a.ww-link:not(.et_pb_button) {
  color: #FFF7EA !important; border-bottom: 1px solid rgba(255,247,234,.45); padding-bottom: 3px;
  transition: color .26s ease, border-color .26s ease;
}
#main-content .ww-sec.ww-cons .et_pb_text_inner a.ww-link:not(.et_pb_button):hover {
  color: var(--wwb-gold, #E3BE7F) !important; border-bottom-color: var(--wwb-gold, #E3BE7F);
}
.ww-sec.ww-cons .ww-cons-img-m img, .ww-sec.ww-cons img {
  box-shadow: 0 0 0 1px rgba(255,255,255,.35), 0 26px 60px -24px rgba(31,12,38,.45);
}

/* ============ v24 (7/29): "What Makes Wandering Wings Different?" — card system + readability ============ */
.ww-sec.ww-diff { background: linear-gradient(180deg, #FFFFFF 0%, var(--wwb-blush, #FDF0F6) 100%); }

/* the four cards now speak the page's card language (cream + gold hairline + top accent) */
.ww-sec.ww-diff .ww-diffcard {
  background: linear-gradient(160deg, #FFFDF9 0%, var(--wwb-cream, #FDF5EC) 62%, #FCEFE2 100%) !important;
  border: 1px solid rgba(227,190,127,.42) !important; border-radius: 26px !important;
  box-shadow: 0 22px 52px -22px rgba(156,58,116,.2), inset 0 1px 0 rgba(255,255,255,.9) !important;
  padding: 44px 46px 40px !important; height: 100%; position: relative; overflow: hidden;
  transition: transform .34s cubic-bezier(.2,.7,.3,1), box-shadow .34s cubic-bezier(.2,.7,.3,1), border-color .34s ease;
}
.ww-sec.ww-diff .ww-diffcard::before {
  content: ""; position: absolute; left: 46px; right: 46px; top: 0; height: 2px;
  background: linear-gradient(90deg, var(--wwb-gold, #E3BE7F), var(--wwb-pink, #C94D97) 65%, transparent);
  opacity: .85;
}
.ww-sec.ww-diff .ww-diffcard:hover {
  transform: translateY(-5px); border-color: rgba(201,77,151,.4) !important;
  box-shadow: 0 30px 64px -22px rgba(156,58,116,.3), inset 0 1px 0 rgba(255,255,255,.9) !important;
}
/* title + hairline, matching the pillar rhythm */
.ww-sec.ww-diff .ww-diffcard h3 {
  font-family: var(--wwb-font-display, 'Cormorant Garamond', serif) !important; font-weight: 600 !important;
  font-size: 27px !important; line-height: 1.2 !important; color: var(--wwb-ink, #173268) !important;
  margin: 0 0 14px !important; padding: 0 0 14px !important; position: relative;
}
.ww-sec.ww-diff .ww-diffcard h3::after {
  content: ""; position: absolute; left: 0; bottom: 0; width: 46px; height: 1.5px; border-radius: 2px;
  background: linear-gradient(90deg, var(--wwb-gold, #E3BE7F), var(--wwb-pink, #C94D97));
}
/* readable body rhythm — dense blocks are now split into paragraphs */
.ww-sec.ww-diff .ww-diffcard p {
  font-size: 16px !important; line-height: 1.74 !important; margin: 0 0 14px !important;
  color: var(--wwb-body-ink, #2E2044) !important;
}
.ww-sec.ww-diff .ww-diffcard p:last-child { margin-bottom: 0 !important; }
.ww-sec.ww-diff .ww-diffcard ul.ww-checks { margin-top: 4px; }
.ww-sec.ww-diff .ww-diffcard ul.ww-checks li {
  font-size: 15.5px !important; line-height: 1.6; padding: 9px 0 9px 38px !important;
  border-bottom: 1px solid rgba(201,77,151,.1);
}
.ww-sec.ww-diff .ww-diffcard ul.ww-checks li:last-child { border-bottom: 0; }
.ww-sec.ww-diff .ww-diffcard ul.ww-checks li::before {
  width: 23px; height: 23px; line-height: 23px; font-size: 11.5px; top: 10px;
  background: linear-gradient(140deg, var(--wwb-pink, #C94D97), var(--wwb-pink-deep, #C94C97));
  box-shadow: 0 4px 10px -4px rgba(156,58,116,.6);
}
/* equal heights across each pair + real air between the two rows */
.ww-sec.ww-diff .ww-diff-cards { display: flex !important; align-items: stretch !important; flex-wrap: wrap; }
.ww-sec.ww-diff .ww-diff-cards > .et_pb_column { display: flex !important; float: none !important; }
.ww-sec.ww-diff .ww-diff-cards > .et_pb_column > .et_pb_module { width: 100%; }
.ww-sec.ww-diff .ww-diff-cards { margin-bottom: 28px !important; }
/* intro + closing lines */
.ww-sec.ww-diff .ww-diff-head .ww-body-m { max-width: 780px; margin-inline: auto !important; }
.ww-sec.ww-diff .ww-diff-head .ww-body-m p { margin-bottom: 12px !important; }
.ww-sec.ww-diff .ww-diffclose {
  position: relative; padding-top: 30px; max-width: 860px;
}
.ww-sec.ww-diff .ww-diffclose::before {
  content: ""; position: absolute; left: 50%; top: 0; transform: translateX(-50%);
  width: 120px; height: 1px;
  background: linear-gradient(90deg, transparent, var(--wwb-gold, #E3BE7F), var(--wwb-pink, #C94D97), transparent);
}
@media (max-width: 980px) {
  .ww-sec.ww-diff .ww-diffcard { padding: 32px 26px 30px !important; border-radius: 22px !important; }
  .ww-sec.ww-diff .ww-diffcard::before { left: 26px; right: 26px; }
  .ww-sec.ww-diff .ww-diffcard h3 { font-size: 24px !important; }
  .ww-sec.ww-diff .ww-diff-cards > .et_pb_column { width: 100% !important; margin-bottom: 18px !important; }
  .ww-sec.ww-diff .ww-diff-cards { margin-bottom: 0 !important; }
}

/* v24.1: species chips inside the Specialists card */
.ww-chiprow { display: flex; flex-wrap: wrap; gap: 8px; margin: 4px 0 18px; }
.ww-chip {
  display: inline-block; padding: 7px 14px; border-radius: 100px;
  background: rgba(255,255,255,.85); border: 1px solid rgba(227,190,127,.55);
  font-family: var(--wwb-font-body, Jost, sans-serif); font-size: 13.5px; font-weight: 500;
  letter-spacing: .015em; color: var(--wwb-ink, #173268); line-height: 1.2;
  box-shadow: 0 2px 6px -3px rgba(156,58,116,.25);
  transition: border-color .25s ease, color .25s ease, transform .25s ease;
}
.ww-diffcard:hover .ww-chip { border-color: rgba(201,77,151,.45); }
.ww-chip:hover { color: var(--wwb-pink, #C94D97); transform: translateY(-1px); }
@media (max-width: 980px) { .ww-chip { font-size: 12.5px; padding: 6px 12px; } .ww-chiprow { gap: 7px; } }

/* v24.2: a whisper of the brand mark settles uneven card bottoms */
.ww-sec.ww-diff .ww-diffcard::after {
  content: ""; position: absolute; right: -40px; bottom: -50px; width: 210px; height: 210px;
  background: url(images/ww-phoenix-512.webp) center / contain no-repeat;
  opacity: .045; pointer-events: none; z-index: 0;
}
.ww-sec.ww-diff .ww-diffcard > * { position: relative; z-index: 1; }
@media (max-width: 980px) { .ww-sec.ww-diff .ww-diffcard::after { width: 150px; height: 150px; right: -30px; bottom: -34px; } }

/* ============ v26 (7/29): HOMEPAGE = SYSTEM. Nick's values promoted to tokens; responsive scale ============
   Type scale (desktop → tablet ≤980 → phone ≤767):
     H1 80/56/42 · section headline 54/40/34 · subtitle 22/20/19 · body 17 · card title 27/26/24
   Section dividers: wave2, desktop as authored → 55% tablet → 33% phone (set per section in Divi)
   Card system: cream gradient + gold hairline + gold→pink top accent (.ww-promise-row, species rows, .ww-diffcard)
   Heads: centered in full-width sections, left-aligned in two-column sections
   ============================================================================================== */
:root { --wwb-h1-size: 80px; --wwb-headline-size: clamp(41px, 2.5vw, 54px); --wwb-subtitle-ink: #C94C97; }

/* legacy phone H1 rule from the original build fought the new scale — retire it */
@media (max-width: 430px) { .ww-h1-m h1 { font-size: 42px !important; max-width: none !important; } }

/* ---- TABLET (≤980) ---- */
@media (max-width: 980px) {
  .ww-headline h2 { font-size: 40px !important; }
  .ww-sec .ww-eyebrow-m .et_pb_text_inner, .ww-sec .ww-eyebrow-m .et_pb_text_inner p { font-size: 40px !important; }
  .ww-subtitle, .ww-subtitle p, .ww-sec .ww-h2-m h2 { font-size: 20px !important; }
  .ww-pillar2 h3 { font-size: 23px !important; }
  .ww-sec.ww-diff .ww-diffcard h3 { font-size: 26px !important; }
  .ww-sec.ww-diff .ww-diffcard p { font-size: 16.5px !important; }
  #main-content .et_pb_blurb.ww-med .et_pb_module_header a:not(.et_pb_button) { font-size: 16px !important; }
  .ww-body-m, .ww-sec .et_pb_blurb_description p { font-size: 17px !important; }
  .ww-hero-sub-m { font-size: 17.5px !important; }
  .ww-diffclose { font-size: 21px !important; }
}
/* ---- PHONE (≤767) — err large ---- */
@media (max-width: 767px) {
  .ww-headline h2 { font-size: 34px !important; line-height: 1.18 !important; }
  .ww-sec .ww-eyebrow-m .et_pb_text_inner, .ww-sec .ww-eyebrow-m .et_pb_text_inner p { font-size: 34px !important; line-height: 1.18 !important; }
  .ww-subtitle, .ww-subtitle p, .ww-sec .ww-h2-m h2 { font-size: 19.5px !important; line-height: 1.45 !important; }
  .ww-body-m, .ww-sec .et_pb_text_inner p, .ww-sec .et_pb_blurb_description p { font-size: 17px !important; line-height: 1.7 !important; }
  .ww-hero-sub-m { font-size: 18px !important; }
  .ww-hero-fine { font-size: 15.5px !important; }
  .ww-pillar2 h3 { font-size: 24px !important; }
  .ww-pillar2 p { font-size: 16px !important; }
  .ww-sec.ww-diff .ww-diffcard h3 { font-size: 26px !important; }
  .ww-sec.ww-diff .ww-diffcard p, .ww-sec.ww-diff .ww-diffcard ul.ww-checks li { font-size: 16.5px !important; }
  #main-content .et_pb_blurb.ww-med .et_pb_module_header a:not(.et_pb_button) { font-size: 16.5px !important; }
  .ww-promise-row ul.ww-checks li { font-size: 16.5px !important; }
  .ww-diffclose { font-size: 20px !important; }
  .ww-chip { font-size: 13.5px !important; }
  .ww-species-bot .ww-link, #main-content .ww-species-bot .et_pb_text_inner a.ww-link:not(.et_pb_button) { font-size: 15.5px !important; }
  /* left-aligned heads return to centre on phone (two-column layouts stack) */
  .ww-sec .ww-headline, .ww-sec .ww-subtitle { text-align: center !important; }
}
/* ---- divider safety net: nothing may eat the phone viewport ---- */
@media (max-width: 767px) {
  .et_pb_top_inside_divider, .et_pb_bottom_inside_divider { max-height: 88px !important; background-size: 100% 88px !important; }
}
@media (min-width: 768px) and (max-width: 980px) {
  .et_pb_top_inside_divider, .et_pb_bottom_inside_divider { max-height: 140px !important; }
}

/* v27: H1 scale from the token (legacy ≤980 rule pinned 27.5px); subtitle out-specifies the generic p rule */
.ww-h1-m h1 { font-size: var(--wwb-h1-size, 80px); max-width: none; }
@media (max-width: 980px) { .ww-h1-m h1 { font-size: 56px; max-width: none; } }
@media (max-width: 767px) { .ww-h1-m h1 { font-size: 42px !important; max-width: none; } }
@media (max-width: 980px) {
  .ww-sec .ww-subtitle .et_pb_text_inner p, .ww-sec .ww-subtitle .et_pb_text_inner { font-size: 20px !important; }
}
@media (max-width: 767px) {
  .ww-sec .ww-subtitle .et_pb_text_inner p, .ww-sec .ww-subtitle .et_pb_text_inner { font-size: 19.5px !important; line-height: 1.45 !important; }
  .ww-sec .ww-hero-sub-m .et_pb_text_inner, .ww-sec .ww-hero-sub-m .et_pb_text_inner p { font-size: 18px !important; }
}

/* ============ v28 (7/29): MOBILE FOCUS — header presence, divider subtlety, alignment, species grid ============ */
@media (max-width: 1280px) {
  /* --- header: taller bar, larger lockup, true optical centering, layered shadow --- */
  body.ww-stuck .ww-tbheader .ww-navm, .ww-tbheader .ww-navm {
    height: 70px !important;
    box-shadow: 0 1px 2px rgba(41,18,61,.06), 0 6px 14px -4px rgba(41,18,61,.10), 0 18px 40px -12px rgba(41,18,61,.16) !important;
  }
  body.ww-stuck .ww-crest-m, .ww-crest-m { height: 48px !important; left: 22px !important; }
  body.ww-stuck .ww-tbheader .ww-navm .et_pb_menu__wrap, .ww-tbheader .ww-navm .et_pb_menu__wrap { margin-right: 8px !important; }
  .ww-navm .mobile_menu_bar { width: 44px; height: 44px; display: flex !important; align-items: center; justify-content: center; }
  .ww-navm .mobile_menu_bar::before, .ww-tbheader .ww-navm.et_pb_menu .et_mobile_nav_menu .mobile_menu_bar:before {
    line-height: 1 !important; display: block !important; margin: 0 !important; padding: 0 !important; font-size: 30px !important;
  }
  /* open panel: sits under the taller bar, with a shadow that matches the bar's language */
  .ww-tbheader .ww-navm.et_pb_menu .et_mobile_menu,
  body.ww-stuck .ww-tbheader .ww-navm.et_pb_menu .et_mobile_menu {
    top: 88px !important; max-height: calc(100dvh - 104px) !important; border-radius: 20px !important;
    box-shadow: 0 2px 4px rgba(41,18,61,.06), 0 10px 24px -6px rgba(41,18,61,.14), 0 28px 60px -16px rgba(41,18,61,.24) !important;
    border: 1px solid rgba(255,255,255,.7) !important; overflow: hidden;
  }
  [id] { scroll-margin-top: 108px !important; }
  .ww-sec.ww-hero { padding-top: 116px !important; }
  .ww-sec.ww-pagehero, .ww-sec.ww-memhero { padding-top: 120px !important; }
  .ww-sec.ww-abouthero { padding-top: 126px !important; }
}
@media (min-width: 431px) and (max-width: 1280px) {
  body.ww-stuck .ww-tbheader .ww-navm, .ww-tbheader .ww-navm { height: 76px !important; }
  body.ww-stuck .ww-crest-m, .ww-crest-m { height: 52px !important; left: 28px !important; }
  .ww-tbheader .ww-navm.et_pb_menu .et_mobile_menu, body.ww-stuck .ww-tbheader .ww-navm.et_pb_menu .et_mobile_menu { top: 94px !important; }
  .ww-sec.ww-hero { padding-top: 126px !important; }
  .ww-sec.ww-pagehero, .ww-sec.ww-memhero { padding-top: 130px !important; }
  .ww-sec.ww-abouthero { padding-top: 136px !important; }
}

@media (max-width: 767px) {
  /* --- dividers: keep the desktop wave, shorter and softer --- */
  .et_pb_top_inside_divider, .et_pb_bottom_inside_divider {
    max-height: 62px !important; background-size: 100% 62px !important; opacity: .62 !important;
  }
  /* --- alignment: a section reads as one centred column on phone --- */
  .ww-sec .et_pb_text.ww-headline, .ww-sec .et_pb_text.ww-subtitle,
  .ww-sec .et_pb_text.ww-body-m, .ww-sec .et_pb_text.ww-eyebrow-m,
  .ww-sec .et_pb_text.ww-link-m, .ww-sec .et_pb_text.ww-diffclose { text-align: center !important; }
  .ww-sec .et_pb_text.ww-headline .et_pb_text_inner, .ww-sec .et_pb_text.ww-subtitle .et_pb_text_inner,
  .ww-sec .et_pb_text.ww-body-m .et_pb_text_inner { text-align: center !important; }
  .ww-headline-left, .ww-subtitle-left { text-align: center !important; }
  /* card interiors stay left-aligned — long prose reads better ragged-right */
  .ww-sec.ww-diff .ww-diffcard, .ww-sec.ww-diff .ww-diffcard p, .ww-promise-row ul.ww-checks li { text-align: left !important; }
  .ww-sec.ww-diff .ww-diffcard h3 { text-align: left !important; }

  /* --- species: real grid on a proper mobile gutter --- */
  .ww-sec.ww-species .ww-species-top { padding: 40px 24px 4px !important; }
  .ww-sec.ww-species .ww-species-mid { padding: 30px 24px 26px !important; }
  .ww-sec.ww-species .ww-species-bot { padding: 26px 24px 34px !important; }
  .ww-species-mid { display: grid !important; grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    column-gap: 18px !important; row-gap: 30px !important; justify-content: stretch !important; }
  .ww-species-mid .et_pb_column { flex: none !important; width: 100% !important; margin: 0 !important;
    display: flex !important; flex-direction: column; align-items: center; }
  .ww-med img, .ww-med picture img { width: 118px !important; height: 118px !important; }
  .ww-med .et_pb_module_header { min-height: 2.6em; margin-top: 14px !important; }
  .ww-species-bot::before { left: 24px; right: 24px; }
}

/* v28.1: burger wrapper chain zeroed (residual 1.3px), medallion max-width released */
@media (max-width: 1280px) {
  .ww-navm .et_mobile_nav_menu, .ww-navm .et_mobile_nav_menu .mobile_nav,
  .ww-tbheader .ww-navm .et_pb_menu__wrap {
    margin-top: 0 !important; margin-bottom: 0 !important; padding: 0 !important;
    display: flex !important; align-items: center !important; line-height: 1 !important; float: none !important;
  }
  .ww-navm .et_mobile_nav_menu .mobile_nav::after { content: none !important; }
}
@media (max-width: 767px) {
  .ww-med .et_pb_main_blurb_image, .ww-med .et_pb_image_wrap {
    width: 118px !important; max-width: 118px !important; margin-left: auto !important; margin-right: auto !important; display: block !important;
  }
  .ww-med img, .ww-med picture img, .ww-med .et_pb_image_wrap img {
    width: 118px !important; height: 118px !important; max-width: none !important; object-fit: cover;
  }
}

/* v28.2: burger pinned by computed offset — absolute WITHOUT transform, so the position:fixed
   menu panel is not captured as a containing block (transform/filter would capture it) */
@media (max-width: 1280px) {
  .ww-tbheader .ww-navm .et_pb_menu__wrap, body.ww-stuck .ww-tbheader .ww-navm .et_pb_menu__wrap {
    position: absolute !important; right: 8px !important; top: 13px !important; transform: none !important;
    margin: 0 !important; width: auto !important; flex: none !important;
  }
}
@media (min-width: 431px) and (max-width: 1280px) {
  .ww-tbheader .ww-navm .et_pb_menu__wrap, body.ww-stuck .ww-tbheader .ww-navm .et_pb_menu__wrap { top: 16px !important; }
}

/* v28.3: burger centering solved structurally — Divi ships .mobile_menu_bar{margin-top:-12px} inside a
   28px-tall wrap, so the 44px target could never centre. Wrap now spans the bar's full height and
   flex-centres the target; margin reset. No transform, so the fixed panel keeps the viewport as its
   containing block. */
@media (max-width: 1280px) {
  .ww-tbheader .ww-navm .et_pb_menu__wrap, body.ww-stuck .ww-tbheader .ww-navm .et_pb_menu__wrap {
    position: absolute !important; right: 8px !important; top: 0 !important; bottom: 0 !important;
    height: auto !important; width: auto !important; display: flex !important; align-items: center !important;
    transform: none !important; margin: 0 !important; flex: none !important;
  }
  .ww-navm .et_mobile_nav_menu, .ww-navm .et_mobile_nav_menu .mobile_nav {
    display: flex !important; align-items: center !important; height: auto !important; margin: 0 !important; padding: 0 !important;
  }
  .ww-navm .mobile_menu_bar { margin: 0 !important; }
}

/* ============ v29 (7/29): mobile panel findings — centring sweep, species grid, measure, rhythm ============ */
@media (max-width: 767px) {
  .ww-sec .et_pb_text h2, .ww-sec .ww-eyebrow-m, .ww-sec .ww-headline, .ww-sec .ww-subtitle,
  .ww-sec .ww-body-m, .ww-sec .ww-link-m { text-align: center !important; }
  .ww-sec .et_pb_text .et_pb_text_inner > h2, .ww-species-top .et_pb_text_inner, .ww-species-top h2,
  .ww-sec.ww-care h2, .ww-sec.ww-care .et_pb_text_inner,
  .ww-sec.ww-diff .ww-diff-head h2, .ww-sec.ww-diff .ww-diff-head .et_pb_text_inner { text-align: center !important; }
  .ww-diffcard, .ww-diffcard h3, .ww-diffcard p, .ww-diffcard li,
  .ww-promise-row ul.ww-checks li, .ww-card, .ww-card p { text-align: left !important; }

  .ww-species-mid { justify-items: center !important; }
  .ww-species-mid .et_pb_column, .ww-med, .ww-med .et_pb_blurb_content { width: 100% !important; max-width: 100% !important; }
  .ww-med .et_pb_main_blurb_image, .ww-med .et_pb_image_wrap { margin-left: auto !important; margin-right: auto !important; }
  .ww-med .et_pb_module_header, .ww-med .et_pb_blurb_container {
    width: 100% !important; max-width: 100% !important; text-align: center !important; min-height: 2.9em;
  }
  #main-content .et_pb_blurb.ww-med .et_pb_module_header a:not(.et_pb_button) {
    font-family: var(--wwb-font-display, 'Cormorant Garamond', serif) !important; font-weight: 600 !important;
    font-size: 21px !important; letter-spacing: 0 !important; line-height: 1.25 !important;
  }
  .ww-species-top::before { left: 24px !important; right: 24px !important; width: auto !important; transform: none !important; height: 2px !important; opacity: .85 !important; }

  .ww-promise-row { padding: 34px 24px 32px !important; }
  .ww-promise-row ul.ww-checks li { padding-left: 34px !important; }

  .ww-quote-cite { margin-top: 30px !important; }
  .ww-quote-q { font-size: 27px !important; line-height: 1.4 !important; }
  .ww-quote-markm { margin-bottom: 6px !important; }

  .ww-sec .ww-body-m, .ww-sec .ww-body-m .et_pb_text_inner, .ww-sec .ww-body-m p { font-size: 17px !important; line-height: 1.7 !important; }

  .ww-sec.ww-mem h2, .ww-mem .et_pb_text h2 { font-size: 34px !important; font-weight: 600 !important; }
  .ww-mem .et_pb_row { max-width: 342px !important; }

  .et-l--footer .et_pb_text_inner a, .et-l--footer .et_pb_code_inner a { font-size: 14.5px !important; line-height: 1.45 !important; }
  .et-l--footer h5, .et-l--footer .et_pb_text_inner h5 { font-size: 12.5px !important; }
  .et-l--footer .et_pb_text_inner p, .et-l--footer span { font-size: 12.5px !important; line-height: 1.5 !important; }

  a.ww-hero-emg { font-size: 15px !important; color: var(--wwb-pink, #C94D97) !important; text-decoration: underline; text-underline-offset: 3px; }
  .ww-nowrap { white-space: nowrap; }

  .ww-pillar2, .ww-card, .ww-diffcard { border-radius: 22px; }
  .ww-species-top { border-radius: 22px 22px 0 0 !important; }
  .ww-species-bot { border-radius: 0 0 22px 22px !important; }

  .et_pb_top_inside_divider, .et_pb_bottom_inside_divider {
    height: 62px !important; max-height: 62px !important; background-size: 100% 62px !important; opacity: .62 !important;
  }
}
@media (min-width: 768px) and (max-width: 980px) {
  .et_pb_top_inside_divider, .et_pb_bottom_inside_divider {
    height: 110px !important; max-height: 110px !important; background-size: 100% 110px !important; opacity: .72 !important;
  }
}

/* ============ v30 (8/3): mobile focus round — header lockup, measure, species grid ============
   Findings verified at 390x844 (Playwright, DPR2) before writing:
   - .ww-crest-m rendered 135x48 in a 70px pill; burger sat ~3px low from Divi's
     translateY(3%) + .mobile_menu_bar::before{top:2px}
   - .ww-promise-row computed 60px padding: Divi's .et_pb_row_N inline CSS beat the
     v29 single-class rule (equal specificity, later in document) -> measure crushed to 220px
   - .ww-med header min-height was 2.9em against the WRAPPER's 14px font (=40.6px), not the
     21px anchor -> 2-line labels overflowed it and made cells 14px taller than 1-line cells
   ========================================================================================= */

/* --- 1. MOBILE HEADER --------------------------------------------------------------- */
@media (max-width: 980px) {
  /* lockup 48 -> 56px (+17%); pill is 70px so this keeps 7px of air top and bottom */
  .ww-tbheader .ww-crest-m img { height: 56px !important; width: auto !important; max-height: 56px !important; }
  .ww-tbheader .ww-crest-m { left: 20px !important; }

  /* burger: drop Divi's 3% nudge and the 2px glyph offset so it centres on the pill axis */
  .ww-tbheader .ww-navm .mobile_menu_bar { transform: none !important; }
  .ww-tbheader .ww-navm .mobile_menu_bar::before,
  .ww-tbheader .ww-navm .et_pb_module .mobile_menu_bar::before { top: 0 !important; }
  .ww-tbheader .ww-navm .et_mobile_nav_menu { margin: 0 8px 0 0 !important; }
}

/* --- 2. CONCIERGE PROMISE: reclaim the measure ---------------------------------------
   #page-container + 3 classes: beats Divi's .et_pb_row_N !important row padding.        */
@media (max-width: 767px) {
  #page-container .ww-sec .et_pb_row.ww-promise-row { padding: 34px 22px 30px !important; }
  #page-container .ww-sec .et_pb_row.ww-promise-row > .et_pb_column { width: 100% !important; margin: 0 !important; }
  .ww-promise-row ul.ww-checks li { padding-left: 32px !important; }
}
@media (min-width: 768px) and (max-width: 980px) {
  #page-container .ww-sec .et_pb_row.ww-promise-row { padding: 44px 40px 40px !important; }
}

/* --- 3. SPECIES GRID: equal cells, equal gutters, centred captions ------------------- */
@media (max-width: 767px) {
  .ww-sec.ww-species .ww-species-mid {
    grid-auto-rows: 1fr !important;
    row-gap: 26px !important; column-gap: 20px !important;
    align-items: start !important;
  }
  /* px, not em — the em was resolving against the 14px wrapper, not the 21px label */
  .ww-med .et_pb_module_header, #main-content .et_pb_blurb.ww-med .et_pb_module_header {
    min-height: 54px !important; display: block !important;
  }
  #main-content .et_pb_blurb.ww-med,
  #main-content .et_pb_blurb.ww-med .et_pb_blurb_container { text-align: center !important; }
  .ww-sec.ww-species .ww-species-bot,
  .ww-sec.ww-species .ww-species-bot p,
  .ww-sec.ww-species .ww-species-bot .et_pb_text_inner { text-align: center !important; }
  .ww-sec.ww-species .ww-species-top { padding: 34px 22px 2px !important; }
}

/* --- 4. MEMBERSHIP: kill the desktop line break (it orphaned "to" on mobile) --------- */
@media (max-width: 767px) {
  .ww-sec.ww-mem h2 br, .ww-sec.ww-mem h2 br.mbr { display: none !important; }
}

/* --- 5. CONSERVATION: trim the dead magenta band under the photo --------------------- */
@media (max-width: 767px) {
  .ww-sec.ww-cons { padding-bottom: 40px !important; }
}

/* ============ v31 (8/3): mobile lockup sizing — specificity correction ============
   v30 targeted `.ww-tbheader .ww-crest-m img` (0,2,1). Two older rules outbid it:
     body.ww-stuck .ww-crest-m      (0,2,1, earlier but ties -> tie broken by ... it also
                                     matches when body IS stuck, which on mobile is always)
     body.ww-stuck .ww-crest-m img  (0,2,2) height:100% -> img just tracked the 48px parent.
   Sizing the CONTAINER at (0,3,1) fixes both: the img is height:100% and follows.       */
@media (max-width: 980px) {
  body.ww-stuck .ww-tbheader .ww-crest-m,
  body .ww-tbheader .ww-crest-m { height: 56px !important; left: 20px !important; }
  /* burger box inset 10px -> glyph ink lands ~20px in, mirroring the logo's 20px */
  .ww-tbheader .ww-navm .et_mobile_nav_menu { margin: 0 2px 0 0 !important; }
}

/* ============ v32 (8/3): mobile centring completion + species footer ============ */

/* --- 1. SPECIES FOOTER LINK ---------------------------------------------------------
   .ww-link is inline-flex, so the sentence and the nowrap "Ask Dr. Zonenshine" span
   laid out as two side-by-side flex items and collided. Block it out on mobile.       */
@media (max-width: 767px) {
  .ww-species-bot .ww-link {
    display: block !important; text-align: center !important;
    border-bottom: 0 !important; text-decoration: underline !important;
    text-underline-offset: 4px !important; text-decoration-thickness: 1px !important;
    line-height: 1.5 !important;
  }
  .ww-species-bot .ww-link .ww-nowrap { display: inline-block; margin-top: 2px; }
  .ww-sec.ww-species .ww-species-bot { padding: 22px 22px 30px !important; }
}

/* --- 2. EYEBROWS + SUBTITLES FOLLOW THEIR H2 -----------------------------------------
   The v29 sweep only caught h2 itself, so kickers/subtitles sitting directly above a
   centred H2 stayed left — the exact mismatch Nick flagged. Centre every text module in
   a column that owns an H2, then hand the card and list bodies back to left.
   The hero is deliberately untouched: it carries an H1, not an H2, so it stays
   fully left-aligned and internally consistent.                                        */
@media (max-width: 767px) {
  .ww-sec .et_pb_column:has(.et_pb_text h2) .et_pb_text,
  .ww-sec .et_pb_column:has(.et_pb_text h2) .et_pb_text .et_pb_text_inner,
  .ww-sec .et_pb_column:has(.et_pb_text h2) .et_pb_text p,
  .ww-sec .et_pb_column:has(.et_pb_text h2) .et_pb_text h3,
  .ww-sec .et_pb_column:has(.et_pb_text h2) .et_pb_text h4 { text-align: center !important; }

  /* re-exclusions: long-form bodies stay left for readability */
  .ww-promise-row ul.ww-checks, .ww-promise-row ul.ww-checks li,
  .ww-card, .ww-card p, .ww-card h3, .ww-card h4,
  .ww-diffcard, .ww-diffcard p, .ww-diffcard h3, .ww-diffcard li,
  .ww-hero .ww-body-m, .ww-hero .ww-body-m p, .ww-hero .ww-h1-m,
  .ww-hero .ww-h1-m h1, .ww-hero .ww-h1-m p { text-align: left !important; }
}

/* ============ v33 (8/3): species footer underline ============
   text-decoration doesn't propagate into an inline-block, so the rule underlined the
   question and skipped the CTA. Underline the CTA only — which is the better read
   anyway: the question is context, "Ask Dr. Zonenshine" is the action.               */
@media (max-width: 767px) {
  .ww-species-bot .ww-link { text-decoration: none !important; }
  .ww-species-bot .ww-link .ww-nowrap {
    text-decoration: underline !important; text-underline-offset: 4px !important;
    text-decoration-thickness: 1px !important; color: var(--wwb-pink, #C94D97) !important;
  }
}

/* ============ v34 (8/3): mobile menu CTA rows ============
   Measured open at 390x844: the tel pill was 41px and Book Appointment 42px — both under
   the 44px minimum touch target. Both rows are position:sticky with a cream backdrop that
   was inset ~21px from the panel edge, so scrolled items could peek past its sides.      */
@media (max-width: 980px) {
  .ww-tbheader .ww-navm.et_pb_menu .et_mobile_menu li.ww-menu-tel > a,
  .ww-tbheader .ww-navm.et_pb_menu .et_mobile_menu li.ww-menu-cta > a {
    padding-top: 15px !important; padding-bottom: 15px !important;
    min-height: 46px !important; line-height: 1 !important;
  }
  /* sticky backdrop spans the full panel width */
  .ww-tbheader .ww-navm.et_pb_menu .et_mobile_menu li.ww-menu-tel,
  .ww-tbheader .ww-navm.et_pb_menu .et_mobile_menu li.ww-menu-cta {
    margin-left: -21px !important; margin-right: -21px !important;
    padding-left: 21px !important; padding-right: 21px !important;
  }
}

/* ============ v35 (8/3): mobile menu CTA cluster separation ============
   The sticky tel row sat flush against the last nav item, so the CTA pair read as two more
   list rows instead of a footer group. Hairline + breathing room above the cluster.      */
@media (max-width: 980px) {
  .ww-tbheader .ww-navm.et_pb_menu .et_mobile_menu li.ww-menu-tel {
    padding-top: 16px !important; margin-top: 6px !important;
    border-top: 1px solid rgba(27, 47, 92, .12) !important;
  }
  .ww-tbheader .ww-navm.et_pb_menu .et_mobile_menu li.ww-menu-cta { padding-bottom: 18px !important; }
}

/* ============ v36 (8/3): divider blending — kill the opacity wash ============
   A Divi inside-divider paints ON TOP of its own section and must be coloured like the
   ADJACENT section, so it reads as that section spilling over. v29 capped every divider at
   `opacity:.62` to make them "more subtle". Over a pale neighbour that's invisible, but over
   #C94D97 it blends 38% of the magenta THROUGH the wave:
       #FDF0F6 at .62 over #C94D97  ->  rgb(233,178,210)   (measured live: #EAB7D0)
   — a dusty mauve matching neither section. That was the "not blending" bug.
   Colour now comes from the Divi section settings (correct per-boundary values); opacity
   goes back to 1 so those values render true. Subtlety comes from the colour match, not
   from transparency.                                                                      */
@media (max-width: 767px) {
  .et_pb_top_inside_divider, .et_pb_bottom_inside_divider {
    height: 80px !important; max-height: 80px !important;
    background-size: 100% 80px !important; opacity: 1 !important;
  }
}
@media (min-width: 768px) and (max-width: 980px) {
  .et_pb_top_inside_divider, .et_pb_bottom_inside_divider {
    height: 120px !important; max-height: 120px !important;
    background-size: 100% 120px !important; opacity: 1 !important;
  }
}

/* ============ v37 (8/3): membership link contrast ============
   .ww-mem-link computed rgb(201,77,151) — the exact #C94D97 of the panel behind it, i.e.
   pink text on pink. Flagged independently by two reviewers. Every other link on a pink
   field uses .ww-link's cream (#FFF7EA); match it.                                       */
.ww-mem .ww-mem-link, a.ww-mem-link, .ww-mem-linkm a {
  color: var(--wwb-cream-warm, #FFF7EA) !important;
  text-decoration: underline !important; text-underline-offset: 4px !important;
  text-decoration-thickness: 1px !important;
}
.ww-mem .ww-mem-link:hover, a.ww-mem-link:hover { color: #FFFFFF !important; }
@media (max-width: 767px) { .ww-mem .ww-mem-link, a.ww-mem-link { font-size: 16px !important; } }

/* ============ v38 (8/3): membership link — outrank the ID selector ============
   v37 lost to `#main-content .et_pb_text a:not(.et_pb_button):not(.ww-hero-emg)` (1,3,1)
   which paints every text link #C94D97 — the same pink as the mem panel. Need (1,4,1).  */
#main-content .ww-mem .et_pb_text a.ww-mem-link,
#main-content .ww-mem .ww-mem-linkm a,
#main-content .ww-mem a.ww-mem-link:not(.et_pb_button) {
  color: var(--wwb-cream-warm, #FFF7EA) !important;
  text-decoration: underline !important; text-underline-offset: 4px !important;
  text-decoration-thickness: 1px !important; font-weight: 600 !important;
}
#main-content .ww-mem a.ww-mem-link:not(.et_pb_button):hover { color: #FFFFFF !important; }
@media (max-width: 767px) { #main-content .ww-mem a.ww-mem-link:not(.et_pb_button) { font-size: 16px !important; } }

/* ================================================================================
   v39 (8/3) — DESKTOP SYSTEM PASS. Five-agent audit; every number below was measured
   live at 1440 before being changed.

   A. ONE CARD SURFACE. Five families had drifted into five recipes:
        radius   22 / 26 / 30                       -> 26px
        border   white .72, white .95, gold .42     -> gold .42 (already 3 of 5)
        shadow   maroon rgba(74,13,44) on pillar2,  -> rgba(156,58,116,.22) 0 26px 60px -24px
                 magenta at .13/.20/.22 elsewhere      (already shared verbatim by 2 families)
        bg       168deg / 100deg / 160deg / 2-stop  -> 168deg, stops 0/62/100
                 / flat translucent white
   B. ROW GAP. .ww-pillar2 gapped 83.4px; .ww-card and .ww-diffcard both 28.0px.
   C. CONTAINER. Every content section is 1240px except ww-values at 1180px.
   D. SECTION RHYTHM. Nine distinct padding values -> three (72 / 112 / 132).
   E. DIVIDER HEIGHT. Eight values from 100 to 251px -> 120 standard, 190 hero-adjacent.
   ================================================================================ */

:root:root:root {
  --wwb-card-radius: 26px;
  --wwb-card-border: 1px solid rgba(227,190,127,.42);
  --wwb-card-shadow: 0 26px 60px -24px rgba(156,58,116,.22);
  --wwb-card-surface: linear-gradient(168deg, #FFFDF9 0%, var(--wwb-cream, #FDF5EC) 62%, #FCEFE2 100%);
  --wwb-card-gap: 28px;
  --wwb-sec-tight: 72px;
  --wwb-sec-standard: 112px;
  --wwb-sec-loose: 132px;
}

@media (min-width: 981px) {
  /* --- A. one card surface across all five families --- */
  .ww-pillar2, .ww-card, .ww-promise-row, .ww-diffcard,
  .ww-species-top, .ww-species-mid, .ww-species-bot {
    border-radius: var(--wwb-card-radius) !important;
    background: var(--wwb-card-surface) !important;
    box-shadow: var(--wwb-card-shadow) !important;
  }
  .ww-pillar2, .ww-card, .ww-promise-row, .ww-diffcard { border: var(--wwb-card-border) !important; }
  /* the species panel is three stacked rows faking one card — keep its split borders,
     only re-unify radius/shadow (horizontal gradient stays: it must not seam at the joins) */
  .ww-species-top { border-radius: var(--wwb-card-radius) var(--wwb-card-radius) 0 0 !important; box-shadow: none !important; }
  .ww-species-mid { border-radius: 0 !important; box-shadow: none !important; }
  .ww-species-bot { border-radius: 0 0 var(--wwb-card-radius) var(--wwb-card-radius) !important; }
  .ww-species-top, .ww-species-mid, .ww-species-bot {
    background: linear-gradient(100deg, #FFFDF9 0%, var(--wwb-cream, #FDF5EC) 58%, #FCEFE2 100%) !important;
  }

  /* --- B. row gap: pillar2 was 83.4px, everything else 28px --- */
  .ww-values-row .ww-pillars-in { margin-right: 0 !important; }
  .ww-values-row > .et_pb_column,
  .ww-values-row .et_pb_column { margin-right: var(--wwb-card-gap) !important; }
  .ww-values-row .et_pb_column:last-child, .ww-values-row .et_pb_column.et-last-child { margin-right: 0 !important; }

  /* --- C. container width parity (values was 1180) --- */
  .ww-sec.ww-values .et_pb_row { max-width: 1240px !important; width: 90% !important; }

  /* --- D. section rhythm: 9 values -> 3 --- */
  .ww-sec.ww-values  { padding-top: var(--wwb-sec-tight) !important;    padding-bottom: var(--wwb-sec-tight) !important; }
  .ww-sec.ww-care    { padding-top: var(--wwb-sec-standard) !important; padding-bottom: var(--wwb-sec-loose) !important; }
  .ww-sec.ww-van     { padding-top: var(--wwb-sec-standard) !important; padding-bottom: var(--wwb-sec-standard) !important; }
  .ww-sec.ww-species { padding-top: var(--wwb-sec-standard) !important; padding-bottom: var(--wwb-sec-loose) !important; }
  .ww-sec.ww-quote   { padding-top: var(--wwb-sec-standard) !important; padding-bottom: var(--wwb-sec-tight) !important; }
  .ww-sec.ww-cons    { padding-top: var(--wwb-sec-standard) !important; padding-bottom: var(--wwb-sec-standard) !important; }
  .ww-sec.ww-diff    { padding-top: var(--wwb-sec-standard) !important; padding-bottom: var(--wwb-sec-loose) !important; }
  .ww-sec.ww-mem     { padding-bottom: var(--wwb-sec-loose) !important; }

  /* --- E. divider heights: 100/160/186/194/200/251 -> 120 + 190 --- */
  .et_pb_top_inside_divider, .et_pb_bottom_inside_divider {
    height: 120px !important; max-height: 120px !important; background-size: 100% 120px !important; opacity: 1 !important;
  }
  .ww-sec.ww-values .et_pb_top_inside_divider, .ww-sec.ww-van .et_pb_top_inside_divider {
    height: 190px !important; max-height: 190px !important; background-size: 100% 190px !important;
  }

  /* --- F. inner rhythm: the chip row carried an unstyled block margin (55.8px vs 14px) --- */
  .ww-diffcard .ww-chiprow { margin-top: 14px !important; }
  .ww-diffcard p + .ww-chiprow, .ww-diffcard p + ul.ww-checks { margin-top: 14px !important; }
}

/* ============ v40 (8/3): icon restyle + two token corrections ============
   (1) The 3 outline icons in the pink "why us" row are now gradient SVGs matching the
       "Why Mobile Care?" set. They were rendering at 32px (inherited from the old inline-
       svg rule) against a ~50px target, and sat in a hard white badge with a gradient ring
       — the target has no badge at all, just a soft glow. Both corrected here.
   (2) --wwb-card-radius is printed by functions.php at wp_head:99, i.e. AFTER this
       stylesheet, so redefining it in CSS loses. The default is raised to 26px in PHP;
       these rules carry 26px literals so the surface is right even if a token goes stale. */
@media (min-width: 981px) {
  .ww-pillar2, .ww-card, .ww-promise-row { border-radius: 26px !important; }
  .ww-species-top { border-radius: 26px 26px 0 0 !important; }
  .ww-species-bot { border-radius: 0 0 26px 26px !important; }
  /* diffcard kept its own older shadow through the var — pin it with the section scope */
  .ww-sec.ww-diff .ww-diffcard {
    box-shadow: 0 26px 60px -24px rgba(156,58,116,.22) !important;
    border-radius: 26px !important;
  }
}
/* icon: match the target's size and its badge-less soft glow */
.ww-pillar2 .ww-pillar2-icon img.ww-pillar2-ico,
.ww-pillar2-icon img.ww-pillar2-ico {
  width: 52px !important; height: 52px !important; display: block; margin: 0 auto;
}
.ww-sec.ww-values .ww-pillar2-icon, .ww-pillar2 .ww-pillar2-icon {
  background: radial-gradient(circle at 50% 50%, rgba(255,255,255,.95) 0%, rgba(253,240,246,.55) 55%, rgba(253,240,246,0) 72%) !important;
  border: 0 !important; box-shadow: none !important;
  width: 96px !important; height: 96px !important; border-radius: 50% !important;
  display: flex !important; align-items: center !important; justify-content: center !important;
  margin: 0 auto 22px !important;
}
@media (max-width: 767px) {
  .ww-pillar2 .ww-pillar2-icon img.ww-pillar2-ico { width: 46px !important; height: 46px !important; }
  .ww-sec.ww-values .ww-pillar2-icon, .ww-pillar2 .ww-pillar2-icon { width: 84px !important; height: 84px !important; margin-bottom: 16px !important; }
}

/* ============ v41 (8/3): typography consolidation (desktop) ============
   Measured: 129 text elements, 7 orphan sizes riding on an otherwise sound token scale.
   1. H2 rendered 54px/600 in six sections but 42px/300 in the membership CTA. Root cause:
      --wwb-headline-size is clamp(41px,2.5vw,54px), which resolves to the 41px FLOOR at
      1440 (2.5vw = 36px). Six H2s hard-code 54px and never touch the token; the CTA is the
      only one actually using it. The clamp is left alone (mobile depends on it) — the CTA
      is brought up to the same 54px/600 the other six render at.
   2. "Card title" was four sizes for one role: 27 / 22 / 21 / 19px. Token --wwb-h3-size
      (28px) existed and NONE of them used it.
   3. Two centred intro paragraphs ran 112 and 115 characters per line (~90 is the ceiling).
      Headline+subtitle stay at the 740px component measure; body drops to 560px.
   4. "Concierge Medicine, Reimagined" had a 0px H2->subtitle gap and 16px subtitle->body,
      against a consistent 30-34px in the other four sections.
   5. Pull-quote B was 25.9px italic against pull-quote A at 40px roman — same editorial job. */
@media (min-width: 981px) {
  /* 1. the one H2 that fell to the clamp floor */
  .ww-sec.ww-mem h2, .ww-mem .et_pb_text h2 {
    font-size: 54px !important; font-weight: 600 !important; line-height: 1.16em !important;
  }
  /* 2. one card-title tier across all four families */
  .ww-pillar2 h3, .ww-pillar2 .ww-pillar2-title,
  .ww-card h3, .ww-card h4, .ww-card .et_pb_module_header,
  .ww-diffcard h3,
  .ww-mem h4, .ww-mem .et_pb_text h4 {
    font-size: var(--wwb-h3-size, 28px) !important; font-weight: 600 !important; line-height: 1.2em !important;
  }
  /* 3. readable measure on the two centred intros (component box stays 740) */
  .ww-sec.ww-care .et_pb_text[class*="ww-body"], .ww-sec.ww-care .ww-body-m,
  .ww-sec.ww-diff .ww-diff-head .ww-body-m, .ww-sec.ww-diff .et_pb_text.ww-body-m {
    max-width: 560px !important; margin-left: auto !important; margin-right: auto !important;
  }
  /* 4. restore the 32px cluster rhythm in the diff section */
  .ww-sec.ww-diff .ww-headline, .ww-sec.ww-diff .et_pb_text:has(h2) { margin-bottom: 32px !important; }
  .ww-sec.ww-diff .ww-subtitle { margin-bottom: 32px !important; }
  /* 5. one pull-quote treatment */
  .ww-sec.ww-diff .ww-quote-closing, .ww-sec.ww-diff .et_pb_text em,
  .ww-diff-closing { font-size: 34px !important; line-height: 1.4em !important; }
}
/* 6. Marcellus is retired at the token level (font-caps -> Jost); these three carried it
      inline, so they need the weight bumped to match Jost's caps spec. */
.ww-quote-cite, .ww-mem .ww-mem-eyebrow2, .et-l--footer .ww-lk-caps,
.ww-lk-caps, .ww-lk-caps-m {
  font-family: var(--wwb-font-caps, 'Jost', sans-serif) !important; font-weight: 700 !important;
}

/* ============ v42 (8/3): finish the Marcellus retirement ============
   --wwb-font-caps is now Jost, but ~10 legacy rules set Marcellus through the `font:`
   SHORTHAND on the inner .et_pb_text_inner nodes, which out-specified the v41 override on
   the outer module. Repointed at the token here so the retirement is complete and any
   future change to --wwb-font-caps actually reaches these three lockups. */
.ww-quote-cite, .ww-quote-cite p,
.ww-quote-cite .et_pb_text_inner, .ww-quote-cite .et_pb_text_inner p,
.ww-mem-micro, .ww-mem-micro p,
.ww-mem-micro .et_pb_text_inner, .ww-mem-micro .et_pb_text_inner p,
.ww-footer .ww-fcaps, .ww-fcaps,
.ww-values span,
.ww-abouthero-cred .et_pb_text_inner, .ww-abouthero-cred .et_pb_text_inner p {
  font-family: var(--wwb-font-caps, 'Jost', sans-serif) !important;
  font-weight: 700 !important;
}

/* ============ v43 (8/3): section rhythm — divider clearance + dead-zone removal ============
   Measured live: .ww-van's top divider is 190px but its first row started at +112px, so the
   content was sitting ON the wave. Meanwhile .ww-mem reserved 270px of padding above a 120px
   divider — 150px of empty gradient, which is the "half a screen of nothing" the composition
   review flagged. Rule adopted: a section with a top divider gets padding-top >= divider + 40.
   All top/bottom dividers now share one 120px height (the 190px special case is retired —
   it was the thing forcing the oversized paddings in the first place). */
@media (min-width: 981px) {
  .et_pb_top_inside_divider, .et_pb_bottom_inside_divider,
  .ww-sec.ww-values .et_pb_top_inside_divider, .ww-sec.ww-van .et_pb_top_inside_divider {
    height: 120px !important; max-height: 120px !important; background-size: 100% 120px !important;
  }
  /* divider clearance: 120 + 40 */
  .ww-sec.ww-van { padding-top: 160px !important; }
  .ww-sec.ww-mem { padding-top: 160px !important; }
  .ww-sec.ww-quote { padding-top: 160px !important; }
  .ww-sec.ww-cons { padding-top: 160px !important; }
  /* values' row carries its own top margin; trim it back to the same clearance */
  .ww-sec.ww-values .et_pb_row:first-of-type { margin-top: 0 !important; }
  .ww-sec.ww-values { padding-top: 160px !important; }
}
@media (max-width: 980px) {
  .ww-sec.ww-van, .ww-sec.ww-mem { padding-top: 120px !important; }
}

/* ============ v44 (8/3): kill the van-section padding doubling ============
   Measured the 432px dead band between the "Why Mobile Care?" cards and the House-Call
   Medicine headline: care padding-bottom 132 + van padding-top 160 + **the van ROW's own
   padding-top 140** — the row was re-adding a full section's worth of space inside a section
   that already had it. Only .ww-van does this; ww-species and ww-mem row padding is real card
   interior and stays. Zeroing it takes the band 432 -> 292px without touching the 3-value
   section scale. */
@media (min-width: 981px) {
  .ww-sec.ww-van .ww-van-row, .ww-sec.ww-van > .et_pb_row {
    padding-top: 0 !important; padding-bottom: 0 !important;
  }
}
@media (max-width: 980px) {
  .ww-sec.ww-van .ww-van-row, .ww-sec.ww-van > .et_pb_row {
    padding-top: 0 !important; padding-bottom: 0 !important;
  }
}

/* ============ v45 (8/4): three mobile fixes from Nick's screenshots ============ */

/* 1. QUOTE -> CONSERVATION divider showed a white band on mobile.
      The divider is filled #FFFFFF, which is correct at desktop (the quote section really
      does render white at the seam there), but on mobile that section's gradient bottoms out
      at ~#F8EFF1 — measured by sampling full-width rows either side of the boundary:
        above 100px #F8ECED · above 60px #F8EEF0 · above 20px #F9F1F3 · at seam #F9F3F5
      so a pure-white wave read as a hard white stripe. Same wave2 geometry, mobile fill. */
@media (max-width: 767px) {
  .ww-sec.ww-cons .et_pb_top_inside_divider {
    background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDBweCIgdmlld0JveD0iMCAwIDEyODAgMTQwIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxnIGZpbGw9IiNGOEVGRjEiPjxwYXRoIGQ9Ik0wIDUxLjc2YzM2LjIxLTIuMjUgNzcuNTctMy41OCAxMjYuNDItMy41OCAzMjAgMCAzMjAgNTcgNjQwIDU3IDI3MS4xNSAwIDMxMi41OC00MC45MSA1MTMuNTgtNTMuNFYwSDB6IiBmaWxsLW9wYWNpdHk9Ii4zIi8+PHBhdGggZD0iTTAgMjQuMzFjNDMuNDYtNS42OSA5NC41Ni05LjI1IDE1OC40Mi05LjI1IDMyMCAwIDMyMCA4OS4yNCA2NDAgODkuMjQgMjU2LjEzIDAgMzA3LjI4LTU3LjE2IDQ4MS41OC04MFYwSDB6IiBmaWxsLW9wYWNpdHk9Ii41Ii8+PHBhdGggZD0iTTAgMHYzLjRDMjguMiAxLjYgNTkuNC41OSA5NC40Mi41OWMzMjAgMCAzMjAgODQuMyA2NDAgODQuMyAyODUgMCAzMTYuMTctNjYuODUgNTQ1LjU4LTgxLjQ5VjB6Ii8+PC9nPjwvc3ZnPg==") !important;
  }
}

/* 2. HERO SWOOSH — larger and vertically centred.
      The whisper silhouette (1536x1024) was painting at background-size:100% (390px wide,
      260px tall) pinned to 100% 0% — top-right corner — so on a 1430px-tall mobile hero it
      read as a small band tucked under the header. Now ~2.1x wider and centred on the hero's
      vertical axis. */
@media (max-width: 767px) {
  .ww-sec.ww-hero {
    background-size: 210% auto !important;
    background-position: 50% 46% !important;
    background-repeat: no-repeat !important;
  }
}
@media (min-width: 768px) and (max-width: 980px) {
  .ww-sec.ww-hero { background-size: 150% auto !important; background-position: 60% 42% !important; }
}

/* 3. MOBILE MENU — the "shadow under the phone number" is an UPWARD shadow on the Book
      Appointment row below it (li.ww-menu-cta had 0 -8px 16px -8px rgba(156,58,116,.15)),
      which cast up under the tel pill. Removed; the hairline above the tel row is enough
      separation on its own. */
.ww-tbheader .ww-navm.et_pb_menu .et_mobile_menu li.ww-menu-cta,
.et_mobile_menu li.ww-menu-cta { box-shadow: none !important; }

/* v46: swoosh vertical position. The mobile hero is 1430px tall, so 46% put the motif near
   the hero's true midpoint — which lands BELOW the first screen. Centring it on the visible
   first screen instead (behind the H1 / lead block) is what "more in the centre" means here. */
@media (max-width: 767px) {
  .ww-sec.ww-hero { background-position: 50% 27% !important; }
}

/* v47: the same white-band problem exists at tablet, just milder. Sampled quote-bottom:
     768px  #F9E9E5  (warm pale peach)  -> white wave is ~22 RGB units off, visible
     1024px #FCF9FA  (near white)       -> within 6 units, leave the white fill alone
   So only 768-980 needs its own fill. */
@media (min-width: 768px) and (max-width: 980px) {
  .ww-sec.ww-cons .et_pb_top_inside_divider {
    background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDBweCIgdmlld0JveD0iMCAwIDEyODAgMTQwIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxnIGZpbGw9IiNGOUU5RTUiPjxwYXRoIGQ9Ik0wIDUxLjc2YzM2LjIxLTIuMjUgNzcuNTctMy41OCAxMjYuNDItMy41OCAzMjAgMCAzMjAgNTcgNjQwIDU3IDI3MS4xNSAwIDMxMi41OC00MC45MSA1MTMuNTgtNTMuNFYwSDB6IiBmaWxsLW9wYWNpdHk9Ii4zIi8+PHBhdGggZD0iTTAgMjQuMzFjNDMuNDYtNS42OSA5NC41Ni05LjI1IDE1OC40Mi05LjI1IDMyMCAwIDMyMCA4OS4yNCA2NDAgODkuMjQgMjU2LjEzIDAgMzA3LjI4LTU3LjE2IDQ4MS41OC04MFYwSDB6IiBmaWxsLW9wYWNpdHk9Ii41Ii8+PHBhdGggZD0iTTAgMHYzLjRDMjguMiAxLjYgNTkuNC41OSA5NC40Mi41OWMzMjAgMCAzMjAgODQuMyA2NDAgODQuMyAyODUgMCAzMTYuMTctNjYuODUgNTQ1LjU4LTgxLjQ5VjB6Ii8+PC9nPjwvc3ZnPg==") !important;
  }
}

/* ============ v48 (8/4): membership swoosh — same fix as the hero ============
   .ww-mem was background-size:100% (390x260 on mobile) with background-repeat:REPEAT on a
   986px-tall section, so the motif tiled ~4x down the panel at postage-stamp scale. One
   large, non-repeating placement instead, matching what the hero now does. */
@media (max-width: 767px) {
  .ww-sec.ww-mem {
    background-size: 210% auto !important;
    background-position: 50% 42% !important;
    background-repeat: no-repeat !important;
  }
}
@media (min-width: 768px) and (max-width: 980px) {
  .ww-sec.ww-mem {
    background-size: 150% auto !important;
    background-position: 60% 40% !important;
    background-repeat: no-repeat !important;
  }
}

/* ================================================================================
   v49 (8/4) — ABOUT + OUR TEAM adopt the homepage system.
   Both pages predated it: off-scale type (H1 56, H2 34/22/33, H3 27/23/21), no
   dividers, section padding at 325/72/40/96/56/104/30/100, 6 overflow elements each.
   Content now carries the wwh1 / wwheadline_l|_c / wwsubtitle / wwbody / wwh3 presets
   and wave2 dividers; this block supplies the card surface, medallions and the
   page-specific layout so both pages read as the same system as Home.
   ================================================================================ */

/* ---------- shared: one card surface, same recipe as home ---------- */
.ww-abouthero-img .et_pb_image_wrap,
.ww-bio-img .et_pb_image_wrap,
.ww-founder-img .et_pb_image_wrap,
.ww-pillar-card, .ww-teamcard, .ww-statcard {
  border-radius: var(--wwb-card-radius, 26px);
  box-shadow: 0 26px 60px -24px rgba(156,58,116,.22);
}
.ww-pillar-card, .ww-teamcard {
  background: linear-gradient(168deg, #FFFDF9 0%, var(--wwb-cream, #FDF5EC) 62%, #FCEFE2 100%);
  border: 1px solid rgba(227,190,127,.42);
}

/* ---------- ABOUT hero: mirrors the home hero's split + card ---------- */
.ww-sec.ww-abouthero { background: linear-gradient(168deg,#FDF7F0 0%, #FCF4EA 55%, #FBEFE6 100%); }
.ww-abouthero-row { align-items: center; }
.ww-abouthero-img img {
  width: 100%; aspect-ratio: 3/4; object-fit: cover; display: block;
  border-radius: var(--wwb-card-radius, 26px);
}
.ww-abouthero-img .et_pb_image_wrap { display: block; overflow: hidden; border-radius: var(--wwb-card-radius, 26px); }
.ww-abouthero-cta { margin-top: 10px; }

/* ---------- bio / founder portraits ---------- */
.ww-bio-img img, .ww-founder-img img {
  width: 100%; aspect-ratio: 4/5; object-fit: cover; display: block;
  border-radius: var(--wwb-card-radius, 26px);
}
.ww-bio-img .et_pb_image_wrap, .ww-founder-img .et_pb_image_wrap {
  display: block; overflow: hidden; border-radius: var(--wwb-card-radius, 26px);
}

/* ---------- stats band ---------- */
.ww-sec.ww-statsband .et_pb_column { text-align: center; }
.ww-stat-num, .ww-stat-num p {
  font-family: var(--wwb-font-display, 'Cormorant Garamond', serif) !important;
  font-size: 26px !important; font-weight: 600 !important; line-height: 1.2 !important;
  color: var(--wwb-ink, #173268) !important;
}
.ww-stat-label, .ww-stat-label p {
  font-family: var(--wwb-font-body, 'Jost', sans-serif) !important;
  font-size: 13px !important; font-weight: 600 !important; letter-spacing: .14em !important;
  text-transform: uppercase; color: var(--wwb-subtitle-ink, #C94C97) !important; margin-top: 8px !important;
}

/* ---------- Five Pillars: each becomes a card in the system ---------- */
.ww-sec.ww-pillars-sec .et_pb_row:not(:first-of-type) {
  background: linear-gradient(168deg, #FFFDF9 0%, var(--wwb-cream, #FDF5EC) 62%, #FCEFE2 100%);
  border: 1px solid rgba(227,190,127,.42);
  border-radius: var(--wwb-card-radius, 26px);
  box-shadow: 0 26px 60px -24px rgba(156,58,116,.22);
  padding: 44px 46px 40px !important;
  margin-bottom: 28px !important;
  position: relative; overflow: hidden;
}
.ww-sec.ww-pillars-sec .et_pb_row:not(:first-of-type)::before {
  content: ""; position: absolute; left: 0; right: 0; top: 0; height: 3px;
  background: linear-gradient(90deg, var(--wwb-gold, #E3BE7F), var(--wwb-pink, #C94D97));
}
.ww-pillar-num, .ww-pillar-num p {
  font-family: var(--wwb-font-display, 'Cormorant Garamond', serif) !important;
  font-size: 44px !important; font-weight: 600 !important; line-height: 1 !important;
  color: rgba(201,77,151,.28) !important; margin-bottom: 6px !important;
}
.ww-pillar-title, .ww-pillar-title h3 {
  font-family: var(--wwb-font-display, 'Cormorant Garamond', serif) !important;
  font-size: var(--wwb-h3-size, 28px) !important; font-weight: 600 !important;
  color: var(--wwb-ink, #173268) !important;
}
.ww-info-title, .ww-info-title h4 {
  font-family: var(--wwb-font-body, 'Jost', sans-serif) !important;
  font-size: 17px !important; font-weight: 600 !important; color: var(--wwb-pink, #C94D97) !important;
  margin-top: 4px !important;
}
.ww-list li { font-size: var(--wwb-body-size, 16.5px); line-height: 1.66; }

/* ---------- OUR TEAM: cards + monogram medallions ---------- */
.ww-sec.ww-teamsec .et_pb_column .et_pb_module:first-child { margin-top: 0; }
.ww-teamcard, .ww-sec.ww-teamsec .et_pb_column > .et_pb_module {
  padding: 0;
}
.ww-sec.ww-teamsec .et_pb_row:not(:first-of-type) > .et_pb_column {
  background: linear-gradient(168deg, #FFFDF9 0%, var(--wwb-cream, #FDF5EC) 62%, #FCEFE2 100%);
  border: 1px solid rgba(227,190,127,.42);
  border-radius: var(--wwb-card-radius, 26px);
  box-shadow: 0 26px 60px -24px rgba(156,58,116,.22);
  padding: 38px 30px 34px !important;
  position: relative; overflow: hidden;
}
.ww-sec.ww-teamsec .et_pb_row:not(:first-of-type) > .et_pb_column::before {
  content: ""; position: absolute; left: 0; right: 0; top: 0; height: 3px;
  background: linear-gradient(90deg, var(--wwb-gold, #E3BE7F), var(--wwb-pink, #C94D97));
}
/* monogram medallion — same ring/shadow language as the Species circles */
.ww-avatar, .ww-avatar p {
  width: 92px !important; height: 92px !important; margin: 0 auto 20px !important;
  border-radius: 50% !important; display: flex !important;
  align-items: center !important; justify-content: center !important;
  background: linear-gradient(150deg, #FDF0F6 0%, #FBE3EE 100%) !important;
  border: 3px solid #FFFFFF !important;
  box-shadow: 0 12px 28px -12px rgba(156,58,116,.4) !important;
  font-family: var(--wwb-font-display, 'Cormorant Garamond', serif) !important;
  font-size: 30px !important; font-weight: 600 !important; letter-spacing: .04em !important;
  color: var(--wwb-pink, #C94D97) !important; line-height: 1 !important;
}
.ww-team-name, .ww-team-name h3 { text-align: center !important; }
.ww-team-role, .ww-team-role p {
  font-family: var(--wwb-font-body, 'Jost', sans-serif) !important;
  font-size: 12.5px !important; font-weight: 700 !important; letter-spacing: .18em !important;
  text-transform: uppercase; color: var(--wwb-subtitle-ink, #C94C97) !important;
  text-align: center !important; margin: 6px 0 14px !important;
}
.ww-founder-creds, .ww-founder-creds p {
  font-family: var(--wwb-font-body, 'Jost', sans-serif) !important;
  font-size: 13px !important; font-weight: 700 !important; letter-spacing: .16em !important;
  text-transform: uppercase; color: var(--wwb-subtitle-ink, #C94C97) !important;
}

/* ---------- quote section: match home ---------- */
.ww-sec.ww-quote-sec { background: linear-gradient(180deg,#FFFFFF 0%, #FDF6F1 100%); }

/* ---------- MOBILE ---------- */
@media (max-width: 767px) {
  .ww-sec.ww-abouthero .et_pb_column, .ww-sec.ww-biosec .et_pb_column,
  .ww-sec.ww-foundersec .et_pb_column { margin-bottom: 26px !important; }
  .ww-abouthero-img img { aspect-ratio: 4/5; }
  .ww-sec.ww-pillars-sec .et_pb_row:not(:first-of-type) { padding: 30px 22px 28px !important; margin-bottom: 22px !important; }
  .ww-sec.ww-teamsec .et_pb_row:not(:first-of-type) > .et_pb_column { padding: 30px 22px 28px !important; margin-bottom: 22px !important; }
  .ww-avatar, .ww-avatar p { width: 78px !important; height: 78px !important; font-size: 26px !important; }
  .ww-stat-num, .ww-stat-num p { font-size: 23px !important; }
  .ww-sec.ww-statsband .et_pb_column { margin-bottom: 26px !important; }
  /* centre every section heading, same rule as Home */
  .ww-sec.ww-abouthero h1, .ww-sec.ww-pagehero h1 { text-align: left !important; }
  .ww-sec.ww-pillars-sec h2, .ww-sec.ww-quote-sec h2, .ww-sec.ww-teamsec h2 { text-align: center !important; }
  .ww-pillar-title, .ww-pillar-title h3, .ww-info-title, .ww-info-title h4 { text-align: left !important; }
}

/* ============ v50 (8/4): About/Our Team — legacy class overrides ============
   The two pages' headings were still rendering at the pre-system sizes (H2 22-42px,
   H3 25-27px) because legacy rules out-specified the presets:
     .ww-sec .ww-h2-m h2         beat  wwheadline_c
     .ww-team-name h3 (600 25px) beat  wwh3
   The modules now carry the homepage's own classes (ww-headline / ww-h1-m / ww-subtitle)
   so they inherit the system directly instead of fighting it. Remaining page-specific
   sizes are set here, and the team-name centring is scoped to the team grid only —
   it was wrongly centring the founder's left-column sub-heads. */
.ww-sec.ww-foundersec .ww-team-name, .ww-sec.ww-foundersec .ww-team-name h3 {
  text-align: left !important;
}
.ww-sec.ww-teamsec .ww-team-name, .ww-sec.ww-teamsec .ww-team-name h3 {
  text-align: center !important;
}
.ww-team-name h3 {
  font-family: var(--wwb-font-display, 'Cormorant Garamond', serif) !important;
  font-size: var(--wwb-h3-size, 28px) !important; font-weight: 600 !important;
  line-height: 1.2 !important; color: var(--wwb-ink, #173268) !important;
}
/* "The Wandering Wings Promise" was 33.12px — bring it onto the headline tier */
.ww-sec.ww-quote-sec .ww-headline h2, .ww-sec.ww-pillars-sec .ww-headline h2 {
  font-size: var(--wwb-headline-size, 54px) !important; font-weight: 600 !important;
}
@media (min-width: 981px) {
  .ww-sec.ww-quote-sec .ww-headline h2, .ww-sec.ww-pillars-sec .ww-headline h2 { font-size: 54px !important; }
  .ww-sec.ww-biosec .ww-headline h2, .ww-sec.ww-foundersec .ww-headline h2 { font-size: 54px !important; }
}

/* ============ v51 (8/4): About hero — undo the dark-photo-hero inheritance ============
   .ww-abouthero used to be a full-bleed photo, so its contents were styled for a dark
   background: gold eyebrow (#FBE179), white H1, and a white ghost CTA (2px white border,
   transparent fill). The hero is now a light cream split like the homepage, so those rules
   render white-on-cream — the "Meet the team" button was effectively invisible. */
.ww-sec.ww-abouthero .ww-eyebrow-m .et_pb_text_inner,
.ww-sec.ww-abouthero .ww-eyebrow-m .et_pb_text_inner p {
  color: var(--wwb-pink, #C94D97) !important; text-shadow: none !important;
}
.ww-sec.ww-abouthero h1, .ww-sec.ww-abouthero .ww-h1-m h1 {
  color: var(--wwb-ink, #173268) !important; text-shadow: none !important;
}
.ww-sec.ww-abouthero .ww-subtitle, .ww-sec.ww-abouthero .ww-subtitle p {
  color: var(--wwb-subtitle-ink, #C94C97) !important; text-shadow: none !important;
}
/* CTA: the homepage's solid pink pill, not the old ghost-on-photo treatment */
.ww-sec.ww-abouthero a.et_pb_button,
.ww-sec.ww-abouthero a.et_pb_button.ww-abouthero-cta {
  background: var(--wwb-grad-primary, linear-gradient(120deg,#C94D97,#E0679B)) !important;
  background-color: var(--wwb-pink, #C94D97) !important;
  color: #FFFFFF !important; border: 0 !important; border-radius: 100px !important;
  padding: 15px 34px !important; font: 700 15px/1 var(--wwb-font-body, 'Jost', sans-serif) !important;
  box-shadow: 0 10px 24px -6px rgba(201,76,151,.34) !important;
}
.ww-sec.ww-abouthero a.et_pb_button:hover { transform: translateY(-1px); color: #FFFFFF !important; }
.ww-sec.ww-abouthero a.et_pb_button::after { color: #FFFFFF !important; }

/* ============ v52 (8/4): card scoping — :nth-of-type was wrapping the headings ============
   v49 carded ".et_pb_row:not(:first-of-type)" on the pillars and team sections. Those
   sections lead with TWO heading rows (eyebrow, then H2), so the H2 row was being turned
   into a card of its own — a full-width cream panel with a gold→pink accent bar sitting
   behind "The flock behind the practice" / "Our Five Pillars". Scope by CONTENT instead:
   a row is a card only if it actually contains a pillar number or a team medallion. */
.ww-sec.ww-pillars-sec .et_pb_row:not(:has(.ww-pillar-num)),
.ww-sec.ww-teamsec .et_pb_row:not(:has(.ww-avatar)) {
  background: none !important; border: 0 !important; box-shadow: none !important;
  padding-left: 0 !important; padding-right: 0 !important; margin-bottom: 0 !important;
}
.ww-sec.ww-pillars-sec .et_pb_row:not(:has(.ww-pillar-num))::before,
.ww-sec.ww-teamsec .et_pb_row:not(:has(.ww-avatar))::before { content: none !important; }
.ww-sec.ww-teamsec .et_pb_row:not(:has(.ww-avatar)) > .et_pb_column {
  background: none !important; border: 0 !important; box-shadow: none !important;
  padding: 0 !important;
}
.ww-sec.ww-teamsec .et_pb_row:not(:has(.ww-avatar)) > .et_pb_column::before { content: none !important; }
/* team cards: equal height so the row bottoms line up like the homepage card rows */
@media (min-width: 981px) {
  .ww-sec.ww-teamsec .et_pb_row:has(.ww-avatar) { display: flex !important; align-items: stretch !important; }
  .ww-sec.ww-teamsec .et_pb_row:has(.ww-avatar) > .et_pb_column { display: flex !important; flex-direction: column !important; }
}

/* ============ v53 (8/4): revision pass from the two review agents ============
   Verified each claim against the live DOM first — two were wrong and are NOT actioned:
   Lu's medallion is not blank (it renders "LU"), and the Our Team hero is uniformly
   centred, not mixed. The rest below are real and measured. */

/* 1. About hero was three alignments in one cluster: eyebrow centre, H1 left, subtitle
      centre, body centre. It's a text-column-beside-an-image block, so the whole cluster
      is the LEFT variant — same as the homepage hero. */
.ww-sec.ww-abouthero .ww-eyebrow-m, .ww-sec.ww-abouthero .ww-eyebrow-m .et_pb_text_inner,
.ww-sec.ww-abouthero .ww-eyebrow-m .et_pb_text_inner p,
.ww-sec.ww-abouthero .ww-h1-m, .ww-sec.ww-abouthero .ww-h1-m h1,
.ww-sec.ww-abouthero .ww-subtitle, .ww-sec.ww-abouthero .ww-subtitle p,
.ww-sec.ww-abouthero .ww-body-m, .ww-sec.ww-abouthero .ww-body-m p {
  text-align: left !important;
}

/* 2. Pillar cards: number/title/eyebrow/checklist are left but the body paragraphs were
      centred — a third pattern that matches neither homepage card type. Card interiors
      are left, per the system. */
.ww-sec.ww-pillars-sec .ww-body-m,
.ww-sec.ww-pillars-sec .ww-body-m p,
.ww-sec.ww-pillars-sec .ww-list, .ww-sec.ww-pillars-sec .ww-list li {
  text-align: left !important;
}
/* the "Our belief:" closing line stays as a deliberate italic pull-line */
.ww-sec.ww-pillars-sec .et_pb_text:last-of-type p { font-style: italic; }

/* 3. Monogram medallions: flat pink discs next to real photography. Give them the icon
      family's gradient, the card system's gold hairline, and the display serif — so they
      read as part of the system rather than a default avatar. */
.ww-avatar, .ww-avatar p {
  background: linear-gradient(150deg, #EE3D9C 0%, #F0705E 55%, #F2A65A 100%) !important;
  border: 3px solid #FFFFFF !important;
  box-shadow: 0 0 0 1px rgba(227,190,127,.42), 0 14px 30px -12px rgba(156,58,116,.45) !important;
  color: #FFFFFF !important;
  font-family: var(--wwb-font-display, 'Cormorant Garamond', serif) !important;
  font-weight: 600 !important; letter-spacing: .05em !important;
}

/* 4. The "Upcoming Events" block was bare text on white — neither a card nor a coloured
      band, so it read as an unfinished stub. Put it on the standard card surface. */
.ww-sec.ww-eventsec .et_pb_row {
  background: linear-gradient(168deg, #FFFDF9 0%, var(--wwb-cream, #FDF5EC) 62%, #FCEFE2 100%);
  border: 1px solid rgba(227,190,127,.42);
  border-radius: var(--wwb-card-radius, 26px);
  box-shadow: 0 26px 60px -24px rgba(156,58,116,.22);
  padding: 44px 46px 40px !important; position: relative; overflow: hidden;
}
.ww-sec.ww-eventsec .et_pb_row::before {
  content: ""; position: absolute; left: 0; right: 0; top: 0; height: 3px;
  background: linear-gradient(90deg, var(--wwb-gold, #E3BE7F), var(--wwb-pink, #C94D97));
}
@media (max-width: 767px) { .ww-sec.ww-eventsec .et_pb_row { padding: 30px 22px 28px !important; } }

/* 5. The authoring note ("⚠ Pending content: National Geographic book photos…") was
      rendering to real visitors. Hidden on the front end — the module is still in the
      builder (admin_label "Media Flag") so the to-do isn't lost. */
.ww-flag { display: none !important; }

/* ============ v54 (8/4): mobile H2 on the pillars section ============
   v50's `.ww-sec.ww-pillars-sec .ww-headline h2 { font-size: var(--wwb-headline-size) }`
   carried no media query, so at 390px the clamp resolved to its 41px floor while every
   other H2 on the page sat at the 34px mobile size. Scoped to desktop; mobile joins the
   rest of the system. */
@media (max-width: 767px) {
  .ww-sec.ww-pillars-sec .ww-headline h2,
  .ww-sec.ww-quote-sec .ww-headline h2,
  .ww-sec.ww-biosec .ww-headline h2,
  .ww-sec.ww-foundersec .ww-headline h2,
  .ww-sec.ww-teamsec .ww-headline h2 { font-size: 34px !important; font-weight: 600 !important; }
}

/* ================================================================================
   v55 (8/4) — About + Our Team: dividers, spacing, alignment.
   Every value below was pixel-sampled or read from computed styles, not eyeballed.
   Scoped to page-id-43 / page-id-122 so the site-wide legacy rules other pages still
   depend on are untouched.
   ================================================================================ */

/* ---------- 1. EYEBROWS: undo the site-wide eyebrow->headline inversion ----------
   `.ww-sec .ww-eyebrow-m` restyles every eyebrow as a 30-40px Cormorant headline, with
   an exception list restoring the kicker inside heroes. But a later mobile rule
   (`.ww-sec .ww-eyebrow-m .et_pb_text_inner {font-size:34px!important}`) has equal
   specificity and beats that exception — so eyebrows rendered as headlines:
     About  "Mission & Pillars"            36px Cormorant navy   (should be 13px kicker)
     Team   "The Flock Behind the Practice" 34px Jost navy        (should be 13px kicker)
   These two pages are fully on the preset system now, so their eyebrows are kickers. */
body.page-id-43 .ww-sec .ww-eyebrow-m,
body.page-id-43 .ww-sec .ww-eyebrow-m p,
body.page-id-43 .ww-sec .ww-eyebrow-m .et_pb_text_inner,
body.page-id-43 .ww-sec .ww-eyebrow-m .et_pb_text_inner p,
body.page-id-122 .ww-sec .ww-eyebrow-m,
body.page-id-122 .ww-sec .ww-eyebrow-m p,
body.page-id-122 .ww-sec .ww-eyebrow-m .et_pb_text_inner,
body.page-id-122 .ww-sec .ww-eyebrow-m .et_pb_text_inner p {
  font-family: var(--wwb-font-body, 'Jost', sans-serif) !important;
  font-weight: 700 !important;
  font-size: var(--wwb-kicker-size, 13px) !important;
  letter-spacing: var(--wwb-kicker-track, .26em) !important;
  text-transform: uppercase !important;
  line-height: 1.4 !important;
  color: var(--wwb-pink, #C94D97) !important;
}
body.page-id-43 .ww-sec .ww-eyebrow-m,
body.page-id-122 .ww-sec .ww-eyebrow-m { margin-bottom: 14px !important; }

/* ---------- 2. DIVIDER COLOURS: each must equal the colour it faces ----------
   Sampled full-width rows either side of every boundary:
     About  pillars-sec TOP  fill #FFFFFF  but above is #182A4D  (the navy stats band)
     About  quote-sec   TOP  fill #FFFFFF  but above is #FBEDE2
     Team   foundersec  TOP  fill #FCF4EA  but above is #FFFEFE
   A white wave against a navy band is the worst of these — it reads as a hard white stripe. */
body.page-id-43 .ww-sec.ww-pillars-sec .et_pb_top_inside_divider {
  background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDBweCIgdmlld0JveD0iMCAwIDEyODAgMTQwIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxnIGZpbGw9IiMxODJBNEQiPjxwYXRoIGQ9Ik0wIDUxLjc2YzM2LjIxLTIuMjUgNzcuNTctMy41OCAxMjYuNDItMy41OCAzMjAgMCAzMjAgNTcgNjQwIDU3IDI3MS4xNSAwIDMxMi41OC00MC45MSA1MTMuNTgtNTMuNFYwSDB6IiBmaWxsLW9wYWNpdHk9Ii4zIi8+PHBhdGggZD0iTTAgMjQuMzFjNDMuNDYtNS42OSA5NC41Ni05LjI1IDE1OC40Mi05LjI1IDMyMCAwIDMyMCA4OS4yNCA2NDAgODkuMjQgMjU2LjEzIDAgMzA3LjI4LTU3LjE2IDQ4MS41OC04MFYwSDB6IiBmaWxsLW9wYWNpdHk9Ii41Ii8+PHBhdGggZD0iTTAgMHYzLjRDMjguMiAxLjYgNTkuNC41OSA5NC40Mi41OWMzMjAgMCAzMjAgODQuMyA2NDAgODQuMyAyODUgMCAzMTYuMTctNjYuODUgNTQ1LjU4LTgxLjQ5VjB6Ii8+PC9nPjwvc3ZnPg==") !important;
}
body.page-id-43 .ww-sec.ww-quote-sec .et_pb_top_inside_divider {
  background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDBweCIgdmlld0JveD0iMCAwIDEyODAgMTQwIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxnIGZpbGw9IiNGQkVERTIiPjxwYXRoIGQ9Ik0wIDUxLjc2YzM2LjIxLTIuMjUgNzcuNTctMy41OCAxMjYuNDItMy41OCAzMjAgMCAzMjAgNTcgNjQwIDU3IDI3MS4xNSAwIDMxMi41OC00MC45MSA1MTMuNTgtNTMuNFYwSDB6IiBmaWxsLW9wYWNpdHk9Ii4zIi8+PHBhdGggZD0iTTAgMjQuMzFjNDMuNDYtNS42OSA5NC41Ni05LjI1IDE1OC40Mi05LjI1IDMyMCAwIDMyMCA4OS4yNCA2NDAgODkuMjQgMjU2LjEzIDAgMzA3LjI4LTU3LjE2IDQ4MS41OC04MFYwSDB6IiBmaWxsLW9wYWNpdHk9Ii41Ii8+PHBhdGggZD0iTTAgMHYzLjRDMjguMiAxLjYgNTkuNC41OSA5NC40Mi41OWMzMjAgMCAzMjAgODQuMyA2NDAgODQuMyAyODUgMCAzMTYuMTctNjYuODUgNTQ1LjU4LTgxLjQ5VjB6Ii8+PC9nPjwvc3ZnPg==") !important;
}
body.page-id-122 .ww-sec.ww-foundersec .et_pb_top_inside_divider {
  background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDBweCIgdmlld0JveD0iMCAwIDEyODAgMTQwIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxnIGZpbGw9IiNGRkZGRkYiPjxwYXRoIGQ9Ik0wIDUxLjc2YzM2LjIxLTIuMjUgNzcuNTctMy41OCAxMjYuNDItMy41OCAzMjAgMCAzMjAgNTcgNjQwIDU3IDI3MS4xNSAwIDMxMi41OC00MC45MSA1MTMuNTgtNTMuNFYwSDB6IiBmaWxsLW9wYWNpdHk9Ii4zIi8+PHBhdGggZD0iTTAgMjQuMzFjNDMuNDYtNS42OSA5NC41Ni05LjI1IDE1OC40Mi05LjI1IDMyMCAwIDMyMCA4OS4yNCA2NDAgODkuMjQgMjU2LjEzIDAgMzA3LjI4LTU3LjE2IDQ4MS41OC04MFYwSDB6IiBmaWxsLW9wYWNpdHk9Ii41Ii8+PHBhdGggZD0iTTAgMHYzLjRDMjguMiAxLjYgNTkuNC41OSA5NC40Mi41OWMzMjAgMCAzMjAgODQuMyA2NDAgODQuMyAyODUgMCAzMTYuMTctNjYuODUgNTQ1LjU4LTgxLjQ5VjB6Ii8+PC9nPjwvc3ZnPg==") !important;
}

/* ---------- 3. DIVIDER CLEARANCE on mobile ----------
   About @390: pillars-sec and quote-sec have an 80px wave but only 64px of padding-top,
   so the first row sits ON the wave. Rule is divider height + 40. */
@media (max-width: 767px) {
  body.page-id-43 .ww-sec.ww-pillars-sec,
  body.page-id-43 .ww-sec.ww-quote-sec { padding-top: 120px !important; }
  body.page-id-122 .ww-sec.ww-foundersec,
  body.page-id-122 .ww-sec.ww-teamsec { padding-top: 120px !important; }
}

/* ---------- 4. SPACING off the 72/112/132 scale ----------
   Team @390 foundersec had padding-bottom 8px. */
@media (max-width: 767px) {
  body.page-id-122 .ww-sec.ww-foundersec { padding-bottom: 72px !important; }
}

/* ---------- 5. ALIGNMENT: the pillars intro cluster disagreed with itself ----------
   Desktop: "Mission & Pillars" centred, its body LEFT, "Our Five Pillars" centred.
   Mobile:  the same body was centred. One cluster, one alignment — it's a full-width
   section, so CENTER. Card interiors stay left (handled in v53). */
body.page-id-43 .ww-sec.ww-pillars-sec > .et_pb_row:not(:has(.ww-pillar-num)) .ww-body-m,
body.page-id-43 .ww-sec.ww-pillars-sec > .et_pb_row:not(:has(.ww-pillar-num)) .ww-body-m p {
  text-align: center !important;
  max-width: 740px !important; margin-left: auto !important; margin-right: auto !important;
}

/* ---------- 6. Founder portrait was stranded ----------
   The left column sat empty for ~570px before the portrait appeared, while the bio ran
   down the right. Pin it to the top of its column so the two columns start together. */
@media (min-width: 981px) {
  body.page-id-122 .ww-sec.ww-foundersec .et_pb_row { align-items: flex-start !important; }
  body.page-id-122 .ww-founder-img { position: sticky; top: 140px; }
}

/* ============ v56 (8/4): pillar numerals + the navy band's upper edge ============
   .ww-pillar-num's WRAPPER took the 44px Cormorant rule, but a legacy rule on the inner
   node (.et_pb_text_inner, 13px Marcellus) won — the same inner-node trap that hid the
   last Marcellus instances. Target the inner node.
   The navy credentials band now also gets a white wave on its TOP edge; it previously had
   a hard cut going in and a (now navy) wave coming out. */
body.page-id-43 .ww-pillar-num,
body.page-id-43 .ww-pillar-num .et_pb_text_inner,
body.page-id-43 .ww-pillar-num .et_pb_text_inner p {
  font-family: var(--wwb-font-display, 'Cormorant Garamond', serif) !important;
  font-size: 44px !important; font-weight: 600 !important; line-height: 1 !important;
  letter-spacing: 0 !important; color: rgba(201,77,151,.30) !important;
}
@media (max-width: 767px) {
  body.page-id-43 .ww-pillar-num,
  body.page-id-43 .ww-pillar-num .et_pb_text_inner,
  body.page-id-43 .ww-pillar-num .et_pb_text_inner p { font-size: 34px !important; }
  body.page-id-43 .ww-sec.ww-statsband { padding-top: 120px !important; }
}

/* ================================================================================
   v57 (8/4) — final pass, from the 3-lens audit panel (each item re-verified live).
   Two of the panel's alignment findings were already fixed in v55/v56 and are NOT
   re-applied; the rest measured true and are handled here.
   ================================================================================ */

/* 1. TEAM had NO visible section transition. My v55 fix matched foundersec's wave to the
      white above it — technically "matching", but white-on-white means no transition at all,
      while the homepage waves at 8 boundaries. The hero's gradient ended #FFFFFF; ending it
      cream gives the shortcode's own #fcf4ea wave something to read against. */
.ww-sec.ww-pagehero {
  background: linear-gradient(180deg, #FBEDE2 0%, #FDF5EC 55%, #FCF4EA 100%) !important;
}
body.page-id-122 .ww-sec.ww-foundersec .et_pb_top_inside_divider { background-image: revert !important; }

/* 2. TEAM teamsec: its 120px wave was white-on-white — invisible — while costing 160px of
      padding. Last bio line to "Meet the rest of the flock" measured 319px of flat white
      (homepage no-divider bands run 244-292). Divider removed in the Divi settings. */
@media (max-width: 767px) { body.page-id-122 .ww-sec.ww-teamsec { padding-top: 64px !important; } }
@media (min-width: 981px) { body.page-id-122 .ww-sec.ww-teamsec { padding-top: 112px !important; } }

/* 3. ABOUT "Upcoming Events": text-align was centre but the box was left-flushed
      (max-width 600, margin-right 546 inside a 1146 card), so the lines centred on x=447
      against a card axis of 720 — 273px off. */
.ww-sec.ww-eventsec .ww-body-m,
.ww-sec.ww-eventsec .ww-body-m .et_pb_text_inner { margin-left: auto !important; margin-right: auto !important; }

/* 4. ABOUT pillars: rows 0 and 6 are NOT cards (no shadow/border/background) yet carried the
      card padding 44/40 — invisible mass at the section's outer edges only. Inner gaps keep it. */
.ww-sec.ww-pillars-sec > .et_pb_row:first-child { padding-top: 0 !important; }
.ww-sec.ww-pillars-sec > .et_pb_row:last-child  { padding-bottom: 0 !important; }


/* ============ v58 (8/4): restore the Team founder wave ============
   v57 used `background-image: revert` to hand the divider back to Divi's own rule, but
   revert resolved to `none` — it removed the wave entirely instead. Setting the cream fill
   explicitly. The hero now ends #FCF4EA, so this cream wave reads against the white
   founder section below it — Team's one visible section transition. */
body.page-id-122 .ww-sec.ww-foundersec .et_pb_top_inside_divider {
  background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDBweCIgdmlld0JveD0iMCAwIDEyODAgMTQwIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxnIGZpbGw9IiNGQ0Y0RUEiPjxwYXRoIGQ9Ik0wIDUxLjc2YzM2LjIxLTIuMjUgNzcuNTctMy41OCAxMjYuNDItMy41OCAzMjAgMCAzMjAgNTcgNjQwIDU3IDI3MS4xNSAwIDMxMi41OC00MC45MSA1MTMuNTgtNTMuNFYwSDB6IiBmaWxsLW9wYWNpdHk9Ii4zIi8+PHBhdGggZD0iTTAgMjQuMzFjNDMuNDYtNS42OSA5NC41Ni05LjI1IDE1OC40Mi05LjI1IDMyMCAwIDMyMCA4OS4yNCA2NDAgODkuMjQgMjU2LjEzIDAgMzA3LjI4LTU3LjE2IDQ4MS41OC04MFYwSDB6IiBmaWxsLW9wYWNpdHk9Ii41Ii8+PHBhdGggZD0iTTAgMHYzLjRDMjguMiAxLjYgNTkuNC41OSA5NC40Mi41OWMzMjAgMCAzMjAgODQuMyA2NDAgODQuMyAyODUgMCAzMTYuMTctNjYuODUgNTQ1LjU4LTgxLjQ5VjB6Ii8+PC9nPjwvc3ZnPg==") !important;
}

/* ============ v59 (8/4): bio portrait framing ============
   hero-gabby13.jpg is 1993x1494 landscape shown in a 4:5 portrait well, so ~60% of the
   source width survives the cover-crop. Gridding the source: her silhouette spans x=33%..88%
   (centre ~60%), but object-position was 50% — so the crop pulled in the empty grey wall on
   the left and pushed her right of the frame's axis. 64% centres her body in the well and
   keeps both the elbow and the hair inside the edges. Used on the About bio and the Our Team
   founder portrait, which are the same file in the same 4:5 well. */
.ww-bio-img img, .ww-founder-img img {
  object-position: 64% 50% !important;
}
@media (max-width: 767px) {
  /* narrower well on mobile crops harder — pull back slightly so the elbow isn't clipped */
  .ww-bio-img img, .ww-founder-img img { object-position: 62% 50% !important; }
}

/* ============ v60 (8/4): bio portrait — hard crop replaces the object-position nudge ============
   Measured the rendered frame: at 64% she still sat 85px right of the axis, and her hair
   already touched the right edge — so no object-position value could centre her without
   clipping. The source (1993x1494 landscape) simply has her off-centre with a wide empty
   wall camera-left. Re-cropped 4:5 at +608 so she is centred in the file itself; the well
   can now use a plain 50% and the framing holds at any size. Same file serves the About bio
   and the Our Team founder portrait. */
.ww-bio-img img, .ww-founder-img img { object-position: 50% 50% !important; }

/* ================================================================================
   v61 (8/4) — Concierge Memberships (45) + Conservation Corner (60) join the system.
   Both were fully pre-system: 0 presets, 0 dividers, padding at 36-150px.
   ================================================================================ */

/* 1. EYEBROWS — opt both pages out of the site-wide eyebrow->headline inversion, the same
      way About/Our Team were. (The inversion's hero exception loses to a later mobile
      !important rule, so eyebrows render as 30-40px headlines without this.) */
body.page-id-45 .ww-sec .ww-eyebrow-m, body.page-id-45 .ww-sec .ww-eyebrow-m p,
body.page-id-45 .ww-sec .ww-eyebrow-m .et_pb_text_inner, body.page-id-45 .ww-sec .ww-eyebrow-m .et_pb_text_inner p,
body.page-id-60 .ww-sec .ww-eyebrow-m, body.page-id-60 .ww-sec .ww-eyebrow-m p,
body.page-id-60 .ww-sec .ww-eyebrow-m .et_pb_text_inner, body.page-id-60 .ww-sec .ww-eyebrow-m .et_pb_text_inner p {
  font-family: var(--wwb-font-body, 'Jost', sans-serif) !important; font-weight: 700 !important;
  font-size: var(--wwb-kicker-size, 13px) !important; letter-spacing: var(--wwb-kicker-track, .26em) !important;
  text-transform: uppercase !important; line-height: 1.4 !important; color: var(--wwb-pink, #C94D97) !important;
}
body.page-id-45 .ww-sec .ww-eyebrow-m, body.page-id-60 .ww-sec .ww-eyebrow-m { margin-bottom: 14px !important; }
/* on the pink bands the kicker needs the light ink instead */
body.page-id-60 .ww-cons .ww-eyebrow-m, body.page-id-60 .ww-cons .ww-eyebrow-m .et_pb_text_inner,
body.page-id-60 .ww-cons .ww-eyebrow-m .et_pb_text_inner p { color: var(--wwb-gold-bright, #FBE179) !important; }

/* 2. CONSERVATION CORNER had 12 blocks of INVISIBLE body copy.
      Its three .ww-cons bands inherit the homepage's light-on-pink inks
      (rgba(255,255,255,.95)) but rendered WHITE — measured luminance delta 0. Those
      sections are now pink #C94D97 in the Divi settings, which makes the inherited inks
      correct and simultaneously gives the page the homepage's alternating rhythm; it was
      9 sections of near-solid white. Headline + link inks pinned here for certainty. */
body.page-id-60 .ww-cons h2, body.page-id-60 .ww-cons .ww-headline h2 { color: #FFF7EA !important; }
body.page-id-60 .ww-cons .ww-ask-sub, body.page-id-60 .ww-cons .ww-ask-sub p,
body.page-id-60 .ww-cons .ww-body-m,  body.page-id-60 .ww-cons .ww-body-m p,
body.page-id-60 .ww-cons li { color: rgba(255,255,255,.95) !important; }
body.page-id-60 .ww-cons a { color: #FFF7EA !important; }

/* 3. NAVY STRIP was dark plum text (#241F2E) on navy (#1B2F5C) — luminance delta 13. */
body.page-id-60 .ww-navystrip, body.page-id-60 .ww-navystrip p,
body.page-id-60 .ww-navystrip .ww-strip-line, body.page-id-60 .ww-navystrip .ww-strip-line p,
body.page-id-60 .ww-navystrip .et_pb_text_inner, body.page-id-60 .ww-navystrip .et_pb_text_inner p {
  color: rgba(255,255,255,.92) !important;
}
body.page-id-60 .ww-navystrip a, body.page-id-60 .ww-navystrip .ww-strip-link a {
  color: var(--wwb-gold, #E3BE7F) !important;
}

/* 4. Legacy inner-node rules beat the presets on both pages (the recurring trap) —
      pin the roles that matter on .et_pb_text_inner as well as the wrapper. */
body.page-id-45 .ww-duo-h3 h3, body.page-id-45 .ww-duo-h3 .et_pb_text_inner h3 {
  font-family: var(--wwb-font-display, 'Cormorant Garamond', serif) !important;
  font-size: var(--wwb-h3-size, 28px) !important; font-weight: 600 !important; line-height: 1.2 !important;
  color: var(--wwb-ink, #173268) !important;
}
body.page-id-45 .ww-memhero-micro, body.page-id-45 .ww-memhero-micro .et_pb_text_inner,
body.page-id-45 .ww-memhero-micro .et_pb_text_inner p {
  font-family: var(--wwb-font-body, 'Jost', sans-serif) !important; font-weight: 700 !important;
  font-size: 13px !important; letter-spacing: .22em !important; text-transform: uppercase !important;
}
body.page-id-60 .ww-ask-sub, body.page-id-60 .ww-ask-sub .et_pb_text_inner,
body.page-id-60 .ww-ask-sub .et_pb_text_inner p {
  font-family: var(--wwb-font-body, 'Jost', sans-serif) !important;
  font-size: var(--wwb-body-size, 16.5px) !important; line-height: 1.66 !important;
}

/* 5. Card surface for the Memberships benefit blocks + steps, matching the homepage recipe. */
body.page-id-45 .ww-duosec .et_pb_column, body.page-id-45 .ww-steps-sec .et_pb_column {
  background: linear-gradient(168deg, #FFFDF9 0%, var(--wwb-cream, #FDF5EC) 62%, #FCEFE2 100%);
  border: 1px solid rgba(227,190,127,.42);
  border-radius: var(--wwb-card-radius, 26px);
  box-shadow: 0 26px 60px -24px rgba(156,58,116,.22);
  padding: 38px 34px 34px !important; position: relative; overflow: hidden;
}
body.page-id-45 .ww-duosec .et_pb_column::before, body.page-id-45 .ww-steps-sec .et_pb_column::before {
  content: ""; position: absolute; left: 0; right: 0; top: 0; height: 3px;
  background: linear-gradient(90deg, var(--wwb-gold, #E3BE7F), var(--wwb-pink, #C94D97));
}
@media (min-width: 981px) {
  body.page-id-45 .ww-duosec .et_pb_row, body.page-id-45 .ww-steps-sec .et_pb_row { align-items: stretch !important; }
}
@media (max-width: 767px) {
  body.page-id-45 .ww-duosec .et_pb_column, body.page-id-45 .ww-steps-sec .et_pb_column {
    padding: 30px 22px 28px !important; margin-bottom: 22px !important;
  }
}

/* 6. Mobile: dividers drop to 80px, so the bottom clearance rule needs the smaller value. */
@media (max-width: 767px) {
  body.page-id-45 .ww-sec, body.page-id-60 .ww-sec { padding-bottom: 120px !important; }
  body.page-id-45 .ww-sec.ww-quote-sec, body.page-id-60 .ww-sec.ww-acadsec,
  body.page-id-60 .ww-sec.ww-navystrip { padding-bottom: 72px !important; }
  body.page-id-60 .ww-sec.ww-navystrip { padding-top: 40px !important; }
}

/* ============ v62 (8/4): Conservation "Wild Story" cluster is the LEFT variant ============
   The module carries ww-headline-left but rendered text-align:center at max-width 740 (the
   CENTER variant's values) over left-aligned body — a mixed cluster. It sits beside the
   macaw image, so the whole cluster is LEFT. Pinned here as well as via the preset, since
   the base .ww-headline rules out-specify the preset CSS. */
body.page-id-60 .ww-headline-left,
body.page-id-60 .ww-headline-left .et_pb_text_inner,
body.page-id-60 .ww-headline-left h2 {
  text-align: left !important; max-width: 600px !important;
  margin-left: 0 !important; margin-right: auto !important;
}
@media (max-width: 767px) {
  /* mobile stacks the column, so the cluster centres with the rest of the page */
  body.page-id-60 .ww-headline-left,
  body.page-id-60 .ww-headline-left .et_pb_text_inner,
  body.page-id-60 .ww-headline-left h2 { text-align: center !important; max-width: 100% !important; }
}

/* ============ v63 (8/4): Memberships card scoping ============
   v61 carded every .et_pb_column in .ww-duosec / .ww-steps-sec, which wrapped the section
   HEADING ("Concierge Care Benefits") in a card of its own — the same trap that hit the
   Our Team heading. Scope by CONTENT: a column is a card only if it holds a benefit
   heading (.ww-duo-h3) or a step. */
body.page-id-45 .ww-duosec .et_pb_column:not(:has(.ww-duo-h3)),
body.page-id-45 .ww-steps-sec .et_pb_column:not(:has(.ww-duo-h3)):not(:has(.ww-list)) {
  background: none !important; border: 0 !important; box-shadow: none !important;
  padding: 0 !important;
}
body.page-id-45 .ww-duosec .et_pb_column:not(:has(.ww-duo-h3))::before,
body.page-id-45 .ww-steps-sec .et_pb_column:not(:has(.ww-duo-h3)):not(:has(.ww-list))::before {
  content: none !important;
}

/* ============ v64 (8/4): Memberships hero inks + stray mobile footer padding ============
   (1) A REGRESSION I INTRODUCED IN v61. Putting the wwh1 / wwsubtitle_c presets on the
   Memberships hero handed it the light-background inks — navy #173268 H1 and pink #C94D97
   subtitle — but that hero's background is a DARK PLUM gradient, sampled #311639 behind the
   H1 row. Luminance delta ~15: the headline was effectively invisible.
   My earlier contrast sweep missed it because it skipped any section with a background-IMAGE
   to avoid false positives — which is exactly where this lived. Conservation's hero is
   cream-backed (#FDF4E7) so its navy H1 is correct and is left alone. */
body.page-id-45 .ww-memhero .ww-h1-m h1,
body.page-id-45 .ww-memhero h1 { color: var(--wwb-cream-warm, #FFF7EA) !important; }
body.page-id-45 .ww-memhero .ww-subtitle,
body.page-id-45 .ww-memhero .ww-subtitle p,
body.page-id-45 .ww-memhero .ww-subtitle .et_pb_text_inner,
body.page-id-45 .ww-memhero .ww-subtitle .et_pb_text_inner p { color: rgba(255,255,255,.88) !important; }
body.page-id-45 .ww-memhero .ww-eyebrow-m,
body.page-id-45 .ww-memhero .ww-eyebrow-m p,
body.page-id-45 .ww-memhero .ww-eyebrow-m .et_pb_text_inner,
body.page-id-45 .ww-memhero .ww-eyebrow-m .et_pb_text_inner p { color: var(--wwb-gold-bright, #FBE179) !important; }

/* (2) The v61 mobile rule `body.page-id-45 .ww-sec, body.page-id-60 .ww-sec {padding-bottom:120px}`
   also caught .ww-footwrap, adding 120px of dead space under the footer on both pages. */
@media (max-width: 767px) {
  body.page-id-45 .ww-sec.ww-footwrap,
  body.page-id-60 .ww-sec.ww-footwrap { padding-bottom: 0 !important; }
}

/* ============ v65 (8/4): Conservation centred clusters were centring on the wrong axis ============
   Measured at 1440 in ww-whymatters and ww-help: the row is full width (100-1340) and the
   headline centres correctly on 720 (350-1090, max-width 740). But the body and the two-column
   list inherit the LEFT variant's `max-width:600px; margin-left:0`, so they occupy 100-700 and
   their text-align:center centres on x=400 — 320px off the headline's axis, with the entire
   right half of the section empty. Same defect class as the About "Upcoming Events" card.
   These are full-width sections, so the whole cluster is the CENTER variant. */
@media (min-width: 981px) {
  body.page-id-60 .ww-whymatters .ww-ask-sub, body.page-id-60 .ww-whymatters .ww-list,
  body.page-id-60 .ww-help .ww-ask-sub,       body.page-id-60 .ww-help .ww-list,
  body.page-id-60 .ww-cons .ww-ask-sub,       body.page-id-60 .ww-cons .ww-list,
  body.page-id-60 .ww-onepct .ww-ask-sub,     body.page-id-60 .ww-onepct .ww-body-m,
  body.page-id-45 .ww-introsec .ww-body-m,    body.page-id-45 .ww-polnotes .ww-body-m,
  body.page-id-45 .ww-quote-sec .ww-body-m {
    max-width: 740px !important; margin-left: auto !important; margin-right: auto !important;
  }
}
/* the .ww-cons pink bands that sit beside the macaw image are the LEFT variant — exclude them */
@media (min-width: 981px) {
  body.page-id-60 .ww-cons:not(.ww-club):not(.ww-promise) .ww-body-m {
    max-width: 600px !important; margin-left: 0 !important; margin-right: auto !important;
  }
}

/* ============ v66 (8/4): Conservation link contrast (WCAG AA) ============
   A proper contrast sweep (samples the real rendered pixel beside each text block, so it
   works over gradients and images) found 4 links under 4.5:1 on Conservation Corner:
     .ww-acadsec  #C94D97 on #FDF1F5  ratio 3.82-3.85  (3 card links)
     .ww-navystrip #C94D97 on #1B2F5C ratio 3.10       (the strip link)
   My v61 fix for the strip didn't land: `#main-content .et_pb_text a:not(.et_pb_button)…`
   is (1,3,1) and paints every text link pink — the same ID rule that hid the membership
   link earlier. These selectors are (1,4,1) so they actually win.
     gold #E3BE7F on navy #1B2F5C  -> 7.5:1
     deep pink #B03F84 on #FDF1F5  -> 4.9:1  (still reads as the brand link colour) */
#main-content .ww-navystrip .et_pb_text a:not(.et_pb_button),
#main-content .ww-navystrip .ww-strip-link a:not(.et_pb_button) {
  color: var(--wwb-gold, #E3BE7F) !important;
}
#main-content .ww-acadsec .et_pb_text a:not(.et_pb_button),
#main-content .ww-acadsec .et_pb_blurb a:not(.et_pb_button) {
  color: #B03F84 !important;
}

/* ============ v67 (8/4): mobile card interiors + detached list bullets ============
   (1) The global mobile centring sweep reached these two new pages' CARD interiors. The
   system rule is that cards stay LEFT inside — the homepage's mobile cards do. Memberships'
   benefit cards were rendering fully centred.
   (2) Worse, the bullet lists inherited text-align:center while their markers stayed pinned
   at the list's left edge — so every bullet floated ~80px away from the words it belongs to,
   on both pages. Items go left; the list block itself stays centred via auto margins so it
   still sits on the section axis. */
@media (max-width: 767px) {
  body.page-id-45 .ww-duosec .et_pb_column, body.page-id-45 .ww-duosec .et_pb_column p,
  body.page-id-45 .ww-duosec .et_pb_text,   body.page-id-45 .ww-duosec .et_pb_text p,
  body.page-id-45 .ww-steps-sec .et_pb_column, body.page-id-45 .ww-steps-sec .et_pb_column p,
  body.page-id-45 .ww-steps-sec .et_pb_text,   body.page-id-45 .ww-steps-sec .et_pb_text p {
    text-align: left !important;
  }
  /* CORRECTED in v69. The v67 rationale ("card headings stay centred like the homepage's
     card titles") was measured FALSE at 390: the homepage's .ww-card h4 computes left/21px
     and .ww-diffcard h3 computes left/26px. Only .ww-pillar2 h3 is centred, and that is a
     centred-icon card, a different species. Card headings go LEFT with their body copy. */
  body.page-id-45 .ww-duosec .ww-duo-h3, body.page-id-45 .ww-duosec .ww-duo-h3 h3 {
    text-align: left !important;
  }
  /* bullets rejoin their text on both pages */
  body.page-id-45 .ww-list, body.page-id-45 .ww-list li,
  body.page-id-60 .ww-list, body.page-id-60 .ww-list li,
  body.page-id-60 .ww-list.ww-ask-sub, body.page-id-60 .ww-list.ww-ask-sub li {
    text-align: left !important;
  }
  body.page-id-45 .ww-list, body.page-id-60 .ww-list {
    max-width: 300px !important; margin-left: auto !important; margin-right: auto !important;
  }
}

/* ============ v68 (8/4): orphaned "Species Spotlight" label ============
   That eyebrow's only content is the "⚠ Pending content: Species Spotlight" module, which
   the global .ww-flag rule hides — leaving a dangling label with nothing beneath it. Hide
   the label too until Gabby supplies the content; the flag module stays in the builder
   (admin_label intact) so the to-do isn't lost. Remove this rule when the content lands.
   CORRECTED in v69: the original selector `.ww-whymatters .et_pb_row:last-child` matched
   ZERO elements, so the label was still on the page. The section's last element child is the
   `.et_pb_bottom_inside_divider` div, not a row — `:last-child` is positional among ALL
   children, not among rows. Target the row by what it contains instead. */
body.page-id-60 .ww-whymatters .et_pb_row:has(.ww-flag) { display: none !important; }


/* ================================================================================
   v69 (8/4): review-panel round. Every item below was re-measured against the live
   DOM before it was written — two of them correct rules I shipped in v67/v68 (edited
   in place above, not layered over).
   ================================================================================ */

/* --- 1. CONSERVATION: the "Sign Up Here" CTA was invisible ---------------------
   .ww-btnw--primary paints var(--ww-grad-primary), which is a solid #C94D97 pair.
   The .ww-cons.ww-club band it sits on is also rgb(201,77,151). Measured button-vs-band
   contrast: 1.006:1 — the button had no edge whatsoever, it read as a line of text.
   Why my contrast sweep cleared it: that tool checks GLYPH vs background, and the label
   is cream on pink at a passing ratio. Surface-vs-surface was never in its remit.
   On a pink band the champagne variant is the system's answer (same as .ww-mem).
   Needs (0,4,0) to beat `a.et_pb_button.ww-btnw--primary` at (0,3,0) + !important. */
.ww-cons.ww-club a.et_pb_button.ww-btnw--primary,
.ww-cons.ww-club .ww-btnw--primary .et_pb_button {
  background: #FFFDF9 !important;
  background-image: none !important;
  color: #B03F84 !important;
  box-shadow: 0 12px 28px -8px rgba(74,13,44,.30) !important;
}

/* --- 2. .ww-method joins the one card family ----------------------------------
   The "Field Stories" cards were the last card species still on the pre-system recipe:
   22px radius, a pink #F7DCE3 border, a coral-cast shadow and a pink-tinted gradient,
   against the system's 26px / champagne border / cream surface. Section A of the design
   system unified five families and never listed .ww-method. Interiors go left to match
   every other card (.ww-pillar2 is the one deliberate exception — centred icon card). */
.ww-method {
  border-radius: var(--wwb-card-radius, 26px) !important;
  background: var(--wwb-card-surface, linear-gradient(168deg,#FFFDF9 0%,#FDF5EC 62%,#FCEFE2 100%)) !important;
  border: var(--wwb-card-border, 1px solid rgba(227,190,127,.42)) !important;
  box-shadow: var(--wwb-card-shadow, 0 26px 60px -24px rgba(156,58,116,.22)) !important;
  padding: 38px 32px 34px !important;
  text-align: left !important;
}
.ww-method .et_pb_blurb_content,
.ww-method .et_pb_module_header,
.ww-method .et_pb_blurb_description { text-align: left !important; }
.ww-method .et_pb_main_blurb_image { text-align: left !important; }

/* --- 3. CONSERVATION mobile hero: the H1 broke its own cluster -----------------
   Measured at 390: kicker `center`, H1 `left`, subtitle `center`. The centring rule
   targeted the module wrapper, which the H1 does not inherit through. Target the h1. */
/* SUPERSEDED in v80 by the site-wide .ww-pagehero rule — this page-scoped patch treated
   the symptom on one page when the cause reaches eleven. Left as a comment, not a rule,
   so two declarations are not fighting over the same element. */

/* --- 4. checklists: labels had floated free of their ✓ badges -----------------
   v67 fixed this for `.ww-list` but these sections use `ul.ww-checks`, a different
   class, and all 6 items still computed `center` at 390 while `li::before` stayed
   pinned at left:0 — so every tick sat ~70px from the words it belongs to.
   Site-wide at mobile: a badge pinned left is never compatible with centred text. */
@media (max-width: 767px) {
  ul.ww-checks, ul.ww-checks li { text-align: left !important; }
}

/* --- 5. MEMBERSHIPS: the record-review cluster was ragged ----------------------
   Measured at 1440. In the second .ww-duosec the row runs 100-1340, the two-column
   list fills it edge to edge, but the paragraph above and the paragraph below inherit
   the LEFT variant's `max-width:600px; margin-left:0` and stop at x=700 — a 640px void
   against a full-width list. v65 fixed this class of defect on introsec / polnotes /
   quote-sec and never listed duosec. Rows that hold a benefit heading are the real
   two-column card rows and are excluded. */
@media (min-width: 981px) {
  body.page-id-45 .ww-duosec .et_pb_row:not(:has(.ww-duo-h3)) .ww-body-m {
    max-width: 740px !important; margin-left: auto !important; margin-right: auto !important;
  }
}

/* --- 6. CONSERVATION mobile body size --------------------------------------
   The page ran two body sizes at 390: .ww-ask-sub at 16.5px against .ww-body-m at 17px.
   Home and Memberships are both 17/28.9. */
@media (max-width: 767px) {
  body.page-id-60 .ww-ask-sub,
  body.page-id-60 .ww-ask-sub .et_pb_text_inner,
  body.page-id-60 .ww-ask-sub .et_pb_text_inner p { font-size: 17px !important; line-height: 1.7 !important; }
}


/* ================================================================================
   v70 (8/5): SERVICES (33) + SPECIES WE TREAT (34) — migration onto the design system.
   Both pages were still on the legacy class set. Measured before/after against the
   homepage, About and Our Team; every reference number below was measured, not assumed.
   ================================================================================ */

/* --- 1. Undo the eyebrow->headline inversion on these two pages -----------------
   Same treatment About (43) and Our Team (122) got in v55, and the reason is the same:
   `.ww-sec .ww-eyebrow-m .et_pb_text_inner` restyles every eyebrow as a 34-40px Cormorant
   headline. Measured on these pages before this rule:
     non-hero eyebrows   36px/600 Cormorant navy at 1440, 34px at 390
     About (correct)     13px/700 Jost uppercase pink, both breakpoints
   Worse, the MOBILE arm of the inversion also beats the hero-kicker exception, so at 390
   the Services hero rendered "HOUSE-CALL VETERINARY CARE" at 34px/700 uppercase Jost with
   8.84px tracking — three full lines, larger than the H1 "Services" underneath it. The
   kicker was the visual headline and the page title was subordinate to it.
   These pages now carry real `.ww-headline` H2s, so their eyebrows are kickers again. */
body.page-id-33 .ww-sec .ww-eyebrow-m,
body.page-id-33 .ww-sec .ww-eyebrow-m p,
body.page-id-33 .ww-sec .ww-eyebrow-m .et_pb_text_inner,
body.page-id-33 .ww-sec .ww-eyebrow-m .et_pb_text_inner p,
body.page-id-34 .ww-sec .ww-eyebrow-m,
body.page-id-34 .ww-sec .ww-eyebrow-m p,
body.page-id-34 .ww-sec .ww-eyebrow-m .et_pb_text_inner,
body.page-id-34 .ww-sec .ww-eyebrow-m .et_pb_text_inner p {
  font-family: var(--wwb-font-body, 'Jost', sans-serif) !important;
  font-weight: 700 !important;
  font-size: var(--wwb-kicker-size, 13px) !important;
  letter-spacing: var(--wwb-kicker-track, .26em) !important;
  text-transform: uppercase !important;
  line-height: 1.4 !important;
  color: var(--wwb-pink, #C94D97) !important;
}
body.page-id-33 .ww-sec .ww-eyebrow-m,
body.page-id-34 .ww-sec .ww-eyebrow-m { margin-bottom: 14px !important; }

/* --- 2. Desktop-only line breaks ------------------------------------------------
   The site has `.mbr` (mobile-only break) but no desktop counterpart, so the <br/>s
   inside these headlines fired at every width — at 390 "Answers when they / matter most."
   broke mid-phrase in a centred block. `.dbr` is the mirror of `.mbr`. */
.dbr { display: inline; }
@media (max-width: 767px) { .dbr { display: none !important; } }

/* --- 3. Card families join the system recipe -----------------------------------
   Measured homepage recipe: radius 26px, surface linear-gradient(168deg,#FFFDF9,#FDF5EC
   62%,#FCEFE2), border 1px rgba(227,190,127,.42), shadow rgba(156,58,116,.22) 0 26px 60px
   -24px. These three species were each off it:
     .ww-panel     radius 24, bg rgba(255,255,255,.6),  coral-cast shadow
     .ww-birdcard  radius 20, bg rgba(255,255,255,.65), white border, coral-cast shadow
     .ww-duocard   radius 26 ok, but champagne-vs-cream border and coral-cast shadow
   NOTE the two .ww-duocard tints are DELIBERATE, not drift: `.ww-duo-flocks` is cream and
   `.ww-duo-eol` is a softer lilac for the end-of-life card. That semantic distinction is
   kept; only the border and shadow are brought onto the system so they read as siblings. */
.ww-panel, .ww-birdcard {
  border-radius: var(--wwb-card-radius, 26px) !important;
  background: var(--wwb-card-surface, linear-gradient(168deg,#FFFDF9 0%,#FDF5EC 62%,#FCEFE2 100%)) !important;
  border: var(--wwb-card-border, 1px solid rgba(227,190,127,.42)) !important;
  box-shadow: var(--wwb-card-shadow, 0 26px 60px -24px rgba(156,58,116,.22)) !important;
}
.ww-duocard {
  border: var(--wwb-card-border, 1px solid rgba(227,190,127,.42)) !important;
  box-shadow: var(--wwb-card-shadow, 0 26px 60px -24px rgba(156,58,116,.22)) !important;
}
/* keep the semantic tints, rebased on the system's warm cream so they sit in one family */
.ww-duocard.ww-duo-flocks { background: linear-gradient(168deg,#FFFDF9 0%, var(--wwb-cream,#FDF5EC) 62%, #FCEFE2 100%) !important; }
.ww-duocard.ww-duo-eol    { background: linear-gradient(168deg,#FFFDF9 0%, #F7F0F7 62%, #F2E8F6 100%) !important; }
/* the blur was doing nothing but costing paint once the surface became opaque */
.ww-panel, .ww-birdcard { backdrop-filter: none !important; -webkit-backdrop-filter: none !important; }

/* card headings onto the system's card-heading step (measured .ww-diffcard h3 = 27/600) */
.ww-panel-title h3, .ww-duo-h3 h3 {
  font-family: var(--wwb-font-display, 'Cormorant Garamond', serif) !important;
  font-weight: 600 !important; font-size: 27px !important;
  color: var(--wwb-ink, #173268) !important; line-height: 1.2 !important;
}
@media (max-width: 767px) { .ww-panel-title h3, .ww-duo-h3 h3 { font-size: 26px !important; } }

/* --- 4. Section rhythm ----------------------------------------------------------
   Both pages ran 80-104px desktop paddings against the tokenised 72 tight / 112 standard /
   132 loose used by home, About and Our Team. Mobile already sat at 64/72, which is on
   system, so it is left alone. */
@media (min-width: 981px) {
  body.page-id-33 .ww-sec.ww-introsec,
  body.page-id-34 .ww-sec.ww-birdsec {
    padding-top: var(--wwb-sec-standard, 112px) !important;
    padding-bottom: var(--wwb-sec-loose, 132px) !important;
  }
  body.page-id-33 .ww-sec.ww-wellsec, body.page-id-33 .ww-sec.ww-diagsec,
  body.page-id-34 .ww-sec.ww-repsec,  body.page-id-34 .ww-sec.ww-mamsec {
    padding-top: var(--wwb-sec-standard, 112px) !important;
    padding-bottom: var(--wwb-sec-standard, 112px) !important;
  }
  body.page-id-33 .ww-sec.ww-duosec,
  body.page-id-34 .ww-sec.ww-asksec {
    padding-top: var(--wwb-sec-standard, 112px) !important;
    padding-bottom: var(--wwb-sec-loose, 132px) !important;
  }
  body.page-id-33 .ww-sec.ww-photoband { padding-bottom: var(--wwb-sec-standard, 112px) !important; }
}

/* --- 5. close the 41px-vs-54px headline split at the token level ----------------
   v41 diagnosed this and only patched the one case it was chasing: --wwb-headline-size is
   clamp(41px, 2.5vw, 54px), and at 1440 2.5vw = 36px, so it pins to the 41px FLOOR. Every
   section that renders a 54px H2 does so by hard-coding 54px and never touching the token;
   only sections without such a rule fall to 41px. Migrating Services and Species onto
   `.ww-headline` therefore gave them 41px H2s against the reference pages' 54px.
   Rather than hard-code a seventh and eighth exception, set the desktop value once. The
   ≤980 (40px) and ≤767 (34px) arms still own the smaller breakpoints, so the clamp that
   mobile depends on is untouched. Verified after shipping: no other page's H2 changed. */
@media (min-width: 981px) {
  .ww-headline h2 { font-size: 54px !important; line-height: 1.16 !important; }
}

/* --- 6. the shared "Ask Dr. Zonenshine" band is a COMPONENT, style it as one --------
   Regression I introduced above: the page-scoped eyebrow opt-out for page 34 also reached
   into `.ww-asksec`, which is Divi Library layout 37 — a GLOBAL band, shared by Species (34)
   and Blog (52). Page edits never touch library layouts, so its `ww-h2-m` stayed legacy while
   its eyebrow became a 13px kicker: the section was left with a kicker and a 22.32px sub and
   no headline at all.
   Fixing it per-page would make the same band render differently on Species than on Blog.
   The band's markup is migrated to `.ww-headline` and its kicker is scoped by SECTION class
   here, so it renders identically on both pages regardless of their migration state. */
.ww-sec.ww-asksec .ww-eyebrow-m,
.ww-sec.ww-asksec .ww-eyebrow-m p,
.ww-sec.ww-asksec .ww-eyebrow-m .et_pb_text_inner,
.ww-sec.ww-asksec .ww-eyebrow-m .et_pb_text_inner p {
  font-family: var(--wwb-font-body, 'Jost', sans-serif) !important;
  font-weight: 700 !important;
  font-size: var(--wwb-kicker-size, 13px) !important;
  letter-spacing: var(--wwb-kicker-track, .26em) !important;
  text-transform: uppercase !important;
  line-height: 1.4 !important;
  color: var(--wwb-pink, #C94D97) !important;
}
.ww-sec.ww-asksec .ww-eyebrow-m { margin-bottom: 14px !important; }

/* --- 7. Services DVM strip link contrast (WCAG AA) -------------------------------
   Measured `rgb(201,77,151)` brand pink on the `#1B2F5C` navy strip = 3.10:1 against a
   4.5 floor. Identical to the Conservation `.ww-navystrip` link fixed in v66; same
   remedy, same specificity requirement — (1,4,1) to beat the ID-scoped
   `#main-content .et_pb_text a:not(.et_pb_button)` rule at (1,3,1) that paints every
   text link pink. Gold #E3BE7F on that navy measures 7.5:1. */
#main-content .ww-dvmstrip .et_pb_text a:not(.et_pb_button),
#main-content .ww-dvmstrip .ww-dvm-link a:not(.et_pb_button),
#main-content .ww-dvmstrip a:not(.et_pb_button) {
  color: var(--wwb-gold, #E3BE7F) !important;
}

/* --- 8. the DVM strip kicker needs the navy-band ink -----------------------------
   Found by the review panel, and it was worse before this round: the strip's eyebrow was
   navy #173268 on the #1B2F5C navy band at 1.05:1 — genuinely invisible. The v70 opt-out
   above incidentally lifted it to brand pink, but pink on that navy measures 3.10:1 and
   this is 13px text, so the floor is 4.5, not 3.0. Gold is what the strip's own link
   already uses and measures 7.43:1 on the same band.
   (The neighbouring `.ww-dvm-line` looks like a 1.23:1 failure if you read the WRAPPER
   div's computed colour — its inner node paints white and it renders correctly. Measure
   the leaf that paints the glyphs, not the box around it.) */
.ww-dvmstrip .ww-eyebrow-m,
.ww-dvmstrip .ww-eyebrow-m p,
.ww-dvmstrip .ww-eyebrow-m .et_pb_text_inner,
.ww-dvmstrip .ww-eyebrow-m .et_pb_text_inner p,
body.page-id-33 .ww-sec.ww-dvmstrip .ww-eyebrow-m .et_pb_text_inner,
body.page-id-33 .ww-sec.ww-dvmstrip .ww-eyebrow-m .et_pb_text_inner p {
  color: var(--wwb-gold, #E3BE7F) !important;
}

/* --- 9. kicker ink: the whole eyebrow tier failed AA on light grounds ------------
   Surfaced once the sweep started reading text that lives in a bare .et_pb_text_inner
   rather than a <p> — the entire `.ww-eyebrow-m` tier is 13px brand pink #C94D97, and at
   13px the floor is 4.5, not 3.0. Measured across the site:
     on #FFFFFF  4.21   ("The Concierge Difference", "Her Story", "Scales and All.")
     on #FDF5EC  3.90   ("House-Call Veterinary Care", "Upcoming Events", "Backyard Flocks")
     on #FCF1E6  3.78   ("Wellness & Preventative Care", "All Species of Bird")
     on #FAE4E9  3.47   ("The Soft, the Spiky, and the Sugar Gliders.")
     on #FDE1F0  3.45   ("Diagnostics")
   Not introduced by this round — it is every kicker on every page, including ones already
   signed off. #B03F84 is the deep pink v66 already established for exactly this problem on
   Conservation's links: same hue, one step darker, 5.40:1 on white and clear of 4.5 on all
   five grounds above. Dark bands are excluded — their kickers are gold or cream and already
   pass; a deep pink there would be a regression. */
:root:root:root { --wwb-kicker-ink: #B03F84; }
.ww-sec:not(.ww-dvmstrip):not(.ww-navystrip):not(.ww-memhero):not(.ww-statsband):not(.ww-mem):not(.ww-cons):not(.ww-values):not(.ww-club) .ww-eyebrow-m,
.ww-sec:not(.ww-dvmstrip):not(.ww-navystrip):not(.ww-memhero):not(.ww-statsband):not(.ww-mem):not(.ww-cons):not(.ww-values):not(.ww-club) .ww-eyebrow-m p,
.ww-sec:not(.ww-dvmstrip):not(.ww-navystrip):not(.ww-memhero):not(.ww-statsband):not(.ww-mem):not(.ww-cons):not(.ww-values):not(.ww-club) .ww-eyebrow-m .et_pb_text_inner,
.ww-sec:not(.ww-dvmstrip):not(.ww-navystrip):not(.ww-memhero):not(.ww-statsband):not(.ww-mem):not(.ww-cons):not(.ww-values):not(.ww-club) .ww-eyebrow-m .et_pb_text_inner p {
  color: var(--wwb-kicker-ink, #B03F84) !important;
}
/* re-assert the dark-band kickers AFTER the blanket rule so cascade order cannot flip them */
.ww-dvmstrip .ww-eyebrow-m, .ww-dvmstrip .ww-eyebrow-m p,
.ww-dvmstrip .ww-eyebrow-m .et_pb_text_inner, .ww-dvmstrip .ww-eyebrow-m .et_pb_text_inner p,
.ww-navystrip .ww-eyebrow-m, .ww-navystrip .ww-eyebrow-m .et_pb_text_inner,
.ww-navystrip .ww-eyebrow-m .et_pb_text_inner p { color: var(--wwb-gold, #E3BE7F) !important; }
body.page-id-45 .ww-memhero .ww-eyebrow-m,
body.page-id-45 .ww-memhero .ww-eyebrow-m p,
body.page-id-45 .ww-memhero .ww-eyebrow-m .et_pb_text_inner,
body.page-id-45 .ww-memhero .ww-eyebrow-m .et_pb_text_inner p { color: var(--wwb-gold-bright, #FBE179) !important; }

/* --- 10. kicker ink on the two PINK-TINTED bands --------------------------------
   #B03F84 clears 4.5 on every cream and white ground but lands at 4.42 on `.ww-diagsec`
   (#FDE1F0) and 4.46 on `.ww-mamsec` (#FAE4E9) — a pink kicker on a pink ground has less
   room. Darkening the site-wide token to rescue two instances would mute the brand pink on
   every other page, so the deeper step is scoped to just these two bands.
   SPECIFICITY NOTE: the blanket rule above carries EIGHT :not() clauses, and each one
   contributes class-level specificity — it scores (0,11,0), so a plain
   `.ww-sec.ww-diagsec .ww-eyebrow-m .et_pb_text_inner` at (0,4,0) loses to it outright.
   An ID beats any number of classes, so these use #main-content, the same lever v66 used. */
#main-content .ww-sec.ww-diagsec .ww-eyebrow-m,
#main-content .ww-sec.ww-diagsec .ww-eyebrow-m p,
#main-content .ww-sec.ww-diagsec .ww-eyebrow-m .et_pb_text_inner,
#main-content .ww-sec.ww-diagsec .ww-eyebrow-m .et_pb_text_inner p,
#main-content .ww-sec.ww-mamsec .ww-eyebrow-m,
#main-content .ww-sec.ww-mamsec .ww-eyebrow-m p,
#main-content .ww-sec.ww-mamsec .ww-eyebrow-m .et_pb_text_inner,
#main-content .ww-sec.ww-mamsec .ww-eyebrow-m .et_pb_text_inner p {
  color: #9E3372 !important;
}

/* --- 11. Services: the membership band's wave was filled for the wrong neighbour ------
   The page's only pre-existing divider. `.ww-mem` is global band 36, shared by five pages,
   and its top wave is filled #FDF0F6 blush — correct on Home, where a blush section sits
   above it. On Services the section above is `.ww-dvmstrip`, sampled #1B2F5C navy, so the
   wave read as a pale stripe pasted under a navy band. The band is global, so this is
   corrected per-page rather than in the library layout. */
body.page-id-33 .ww-sec.ww-mem > .et_pb_top_inside_divider {
  background-image: url("data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTI4MCAxNDAiIHByZXNlcnZlQXNwZWN0UmF0aW89Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTAsMCBDMzIwLDEyMCA5NjAsLTQwIDEyODAsNjAgTDEyODAsMCBaIiBmaWxsPSIjMUIyRjVDIi8+PC9zdmc+") !important;
  background-size: 100% 120px !important; background-repeat: no-repeat !important;
}
@media (max-width: 767px) {
  body.page-id-33 .ww-sec.ww-mem > .et_pb_top_inside_divider { background-size: 100% 80px !important; }
}

/* --- 12. the exclusion chip read as an affirmative one ---------------------------
   "✕ We do not see snakes" computed byte-for-byte identical to "All lizards" beside it:
   bg rgba(255,255,255,.85), border rgba(227,190,127,.55), colour #173268, 500/13.5px. Its
   modifier had been out-specified, so on a page listing what the practice DOES treat, a
   "we do not" item was styled as one of them. Terracotta reads as an exclusion without
   shouting; measured 5.6:1 for the label on that tint. */
#main-content .ww-chip.ww-chip-no {
  background: rgba(178,69,46,.09) !important;
  border-color: rgba(178,69,46,.45) !important;
  color: #8E3520 !important;
}

/* --- 13. bird-card row gutter onto the card-gap token ---------------------------- */
@media (min-width: 981px) { .ww-bird-cards { gap: var(--wwb-card-gap, 28px) !important; } }

/* --- 14. H1 ink: the class never carried it ------------------------------------
   Caught by the review panel and it is subtle — two navies one step apart. After the class
   swap, Services and Species H1s compute rgb(27,47,92) #1B2F5C while home, About and Our
   Team all compute rgb(23,50,104) #173268. The size came from `.ww-h1-m`; the INK on the
   reference pages never did — it comes from a per-module Divi Heading Text Color emitted
   inline as `.et_pb_text_N h1{color:#173268!important}`, which the target pages have no
   equivalent of. `.ww-h1-m h1` itself sets var(--ww-navy), and --ww-navy IS #1B2F5C.
   Do NOT retarget --ww-navy globally: #1B2F5C is correct for card headings (home .ww-card
   h4 and species .ww-birdcard h4 both legitimately compute it). Scope to the two pages. */
body.page-id-33 .ww-h1-m h1, body.page-id-34 .ww-h1-m h1 { color: var(--wwb-ink, #173268) !important; }

/* --- 15. page-hero H1 broke its own cluster at 390, on ELEVEN pages ---------------
   `@media (max-width:767px){ .ww-sec.ww-abouthero h1, .ww-sec.ww-pagehero h1 {text-align:left} }`
   leaves every page-hero H1 left while its kicker and subtitle stay centred. Measured at 390:
   services kicker=center h1=LEFT sub=center · species h1=LEFT sub=center · our-team
   kicker=center h1=LEFT sub=center · contact kicker=center h1=LEFT. All twelve .ww-pagehero
   pages are fully centred at 1440, so the split is mobile-only and the desktop treatment is
   the reference. v69 patched this for Conservation alone — that was the symptom, not the cause.
   `.ww-abouthero` is deliberately excluded: About is genuinely a left-axis hero at desktop
   too (h1, eyebrow and sub all start x=100 at 1440), so left is right there. */
@media (max-width: 767px) {
  .ww-sec.ww-pagehero h1, .ww-sec.ww-pagehero .ww-h1-m h1 { text-align: center !important; }
}

/* --- 16. duocard interiors alternated axis at 390 --------------------------------
   Measured inside both cards: kicker center, heading left, body center, list left — four
   stacked blocks on three different axes, so the card had no left rail. The system rule is
   that card interiors are LEFT on mobile (homepage .ww-card h4 = left/21px at 390).
   Needs an ID to clear the global mobile centring sweep. */
@media (max-width: 767px) {
  #main-content .ww-duocard, #main-content .ww-duocard p,
  #main-content .ww-duocard .ww-eyebrow-m, #main-content .ww-duocard .ww-eyebrow-m .et_pb_text_inner,
  #main-content .ww-duocard .ww-body-m, #main-content .ww-duocard .ww-body-m .et_pb_text_inner,
  #main-content .ww-duocard .ww-body-m .et_pb_text_inner p { text-align: left !important; }
}

/* ================================================================================
   v81 (8/5): spacing + padding pass on Services (33) and Species (34).
   ================================================================================ */

/* --- 1. a section with a top wave needs room for the wave -----------------------
   MY OWN REGRESSION from the divider round earlier today. `.et_pb_top_inside_divider` is
   position:absolute at the section's top edge, so it paints OVER the top padding rather than
   adding height. The waves are 120px (80px at mobile) and I dropped them onto sections whose
   padding-top was 112px (64px), so the wave overshot the padding and the first line of text
   landed ON it:
     services  introsec / wellsec  first text at 112px, wave ends at 120px  -> 8px overlap
     species   birdsec / repsec    same 8px; mamsec clear only because a medallion leads
     all of them at 390            first text at 64px, wave ends at 80px    -> 16px overlap
   About is the reference and it never has this problem because every one of ITS divider
   sections runs padding-top 160px desktop / 120px mobile against the same 120/80px wave —
   a consistent 40px of clearance below the wave's trailing edge. Matching that exactly.
   Sections without a top wave keep the 112/64 standard. */
@media (min-width: 981px) {
  body.page-id-33 .ww-sec.ww-introsec, body.page-id-33 .ww-sec.ww-wellsec,
  body.page-id-33 .ww-sec.ww-diagsec,  body.page-id-33 .ww-sec.ww-duosec,
  body.page-id-34 .ww-sec.ww-birdsec,  body.page-id-34 .ww-sec.ww-repsec,
  body.page-id-34 .ww-sec.ww-mamsec {
    padding-top: 160px !important;
  }
}
/* mobile section paddings need !important regardless — Divi's generated custom_padding
   stylesheet loads AFTER this file and silently wins otherwise */
@media (max-width: 767px) {
  body.page-id-33 .ww-sec.ww-introsec, body.page-id-33 .ww-sec.ww-wellsec,
  body.page-id-33 .ww-sec.ww-diagsec,  body.page-id-33 .ww-sec.ww-duosec,
  body.page-id-34 .ww-sec.ww-birdsec,  body.page-id-34 .ww-sec.ww-repsec,
  body.page-id-34 .ww-sec.ww-mamsec {
    padding-top: 120px !important;
  }
}

/* --- 2. hero H1 sat flush against its subtitle at mobile -------------------------
   Measured gap between `.ww-h1-m` and `.ww-subtitle` at 390: 0px, against 34-35px at 1440.
   Present on About and Our Team too, so this is the system rather than these two pages —
   but 0px is not a designed value: every other stacked pair at 390 runs 14-16px, and a 42px
   H1 with a 19.5px italic line hard against it reads as one block. 14px matches the mobile
   cluster rhythm (kicker->headline is 14px at both breakpoints). */
@media (max-width: 767px) {
  .ww-sec .ww-h1-m { margin-bottom: 14px !important; }
}

/* --- 3. two card species never stepped their padding at mobile ------------------
   The homepage card family steps down between breakpoints — .ww-card 38/30 -> 28/24,
   .ww-diffcard 44/46 -> 32/26, .ww-pillar2 42/34 -> 30/24. Measured on the target pages:
     .ww-birdcard  30/24 at 1440 AND 30/24 at 390  (never steps; under-padded at desktop)
     .ww-panel     36/32 at 1440 AND 36/32 at 390  (never steps; heavy at mobile, where its
                   36px inset fights the page's 24px viewport gutter)
   Given each its own step, keeping the mobile values in the family's 30/24 band. */
@media (min-width: 981px) {
  .ww-birdcard { padding: 34px 26px !important; }
  .ww-panel    { padding: 38px 32px !important; }
}
@media (max-width: 767px) {
  .ww-birdcard { padding: 30px 24px !important; }
  .ww-panel    { padding: 30px 24px !important; }
}

/* --- 4. photo band bottom padding was the odd one out ---------------------------
   `.ww-photoband` closes with 56px at mobile where every other section on the page uses 72.
   Top stays 0 — the photograph is meant to run flush into the band above it. */
@media (max-width: 767px) {
  body.page-id-33 .ww-sec.ww-photoband { padding-bottom: 72px !important; }
}

/* ================================================================================
   v84 (8/5): new brand logo set (mark / horizontal / vertical) replaces the rev2 og
   exports in the header and navs.
     desktop crest  og-21 (2599.56x2101.79, ratio 1.237)  -> ww-logo-vertical.svg   (0.640)
     mobile bar     og-19 (4169.30x1477.18, ratio 2.822)  -> ww-logo-horizontal.svg (3.934)
   Files are the originals, byte-exact: svgo merged 528 paths to 323 for only 9% and
   shifted 0.088% of pixels at path seams. Not worth any hairline risk on a brand mark,
   and they are still ~65% smaller than the 400KB exports they replace.

   THE GEOMETRY PROBLEM. `--ww-logow-un` is a WIDTH, and the header derives the logo's
   HEIGHT from it as `--ww-logow-un * 0.8065` — 0.8065 being og-21's aspect ratio
   (2101.79/2599.56). That derived height drives the nav bar's margin-top AND the
   padding-top of every hero on the site. The new vertical lockup is 1.5629 (0.640
   inverted) — nearly twice as tall per unit width — so leaving either value alone
   breaks the header: keep the width and the logo grows to 299px tall and runs off the
   top of the viewport (measured: at 185px tall its top is already -2px).

   THE FIX. Rescale the width and the multiplier TOGETHER so their product is unchanged:
     width  x 0.51603  (= 0.8065 / 1.5629)   ->  clamp(93px, 6.863vw, 125px)
     multiplier 0.8065 ->  1.5629
   At 1440: 6.863vw = 98.8px wide x 1.5629 = 154.4px tall — identical to the old
   191.5 x 0.8065 = 154.4px. Every calc chain downstream stays exactly correct at every
   viewport, and no hero padding moves. */
@media (min-width: 1281px) {
  :root { --ww-logow-un: clamp(93px, 6.863vw, 125px); }

  .ww-navm, body.ww-stuck .ww-navm {
    margin-top: calc(var(--ww-logow-un) * 1.5629 + 48px - min(58.9px, 3.457vw)) !important;
  }
  .ww-sec.ww-hero {
    padding-top: calc(var(--ww-logow-un) * 1.5629 + min(69.6px, 4.086vw) + 120px) !important;
  }
  .ww-sec.ww-pagehero, .ww-sec.ww-abouthero, .ww-sec.ww-memhero {
    padding-top: calc(var(--ww-logow-un) * 1.5629 + min(69.6px, 4.086vw) + 112px) !important;
  }

  /* STUCK state is sized independently — its width feeds no calc chain. Height-preserving
     would give 90px, and at 90px the lockup is lost inside the lens with the VETERINARY
     line barely legible (rehearsed on the live page). 105px fills the dome properly; 120px
     crowds it. 105 / 1.5629 = 67.2px wide = 4.667vw at 1440, min/max scaled to match. */
  body.ww-stuck .ww-navm li.et_pb_menu__logo-slot a.ww-crest {
    width: clamp(58px, 4.667vw, 90px) !important;
  }
}

/* The mobile bar is height-driven at 56px, so the bird stays exactly the size it was and
   only the wordmark lengthens (158px -> 220px wide). That fits everywhere down to 375px
   (41px of clearance to the burger) but collides at 320 (-14px). Slim it below 375. */
@media (max-width: 374px) {
  body.ww-stuck .ww-tbheader .ww-crest-m,
  body .ww-tbheader .ww-crest-m { height: 46px !important; }
  .ww-tbheader .ww-crest-m img { height: 46px !important; max-height: 46px !important; }
}

/* ================================================================================
   v85 (8/5): Contact (44) + DVM Consultation Services (59) onto the design system.
   Both were still on the pre-system layer: legacy .ww-pagehero-h1 / .ww-pagehero-sub /
   .ww-h2-m classes (H1 56px against the system's 80, H2 33.12px against 54), no wave
   dividers, and section paddings spread across 80/80, 24/88, 64/64, 88/88, 8/96, 0/56.
   Post content now carries .ww-h1-m / .ww-subtitle / .ww-headline and the wave attrs;
   this block supplies the rhythm.
   ================================================================================ */

/* --- 1. eyebrow inversion opt-out (the v55 fix, which never listed these two pages) ---
   Contact's kicker measured 13px at 1440 but 34px at 390, and its "Send a Message"
   kicker rendered 36px at desktop — the inversion rule was treating the eyebrow as the
   headline. Same page-scoped opt-out already used for 43 / 122 / 45 / 60. */
body.page-id-44 .ww-sec .ww-eyebrow-m .et_pb_text_inner,
body.page-id-44 .ww-sec .ww-eyebrow-m .et_pb_text_inner p,
body.page-id-44 .ww-sec .ww-eyebrow-m p,
body.page-id-59 .ww-sec .ww-eyebrow-m .et_pb_text_inner,
body.page-id-59 .ww-sec .ww-eyebrow-m .et_pb_text_inner p,
body.page-id-59 .ww-sec .ww-eyebrow-m p {
  font-family: var(--wwb-font-body, 'Jost', sans-serif) !important;
  font-weight: 700 !important;
  font-size: var(--wwb-kicker-size, 13px) !important;
  line-height: 1.4 !important;
  letter-spacing: var(--wwb-kicker-track, .26em) !important;
  text-transform: uppercase !important;
  color: var(--wwb-pink, #C94D97) !important;
}

/* --- 2. section rhythm: many values -> the 112 / 132 / 72 token set -----------------
   Keyed off `:has(> .et_pb_top_inside_divider)` rather than a hand-listed set of section
   classes. A section that carries a top wave needs 160/120 per the rule established in
   v81 (the divider is absolutely positioned and adds no height, so a 120px wave over
   112px of padding overshoots and the first line of text lands on it); one without a
   wave takes the standard 112/64. Keying on the divider means the padding follows the
   art automatically if a wave is later added or removed — no second list to keep in sync.
   This matters immediately: DVM's 2nd .ww-acadsec deliberately has NO wave (it is the
   continuation of the 1st, white-on-white, and reads as one block), so a class-based
   rule would have wrongly pushed it to 160 and split the pair apart. */
@media (min-width: 981px) {
  body.page-id-44 .ww-sec:has(> .et_pb_top_inside_divider),
  body.page-id-59 .ww-sec:has(> .et_pb_top_inside_divider) { padding-top: 160px !important; }

  body.page-id-44 .ww-sec.ww-duosec { padding-top: 112px !important; }

  body.page-id-44 .ww-sec.ww-methodsec, body.page-id-44 .ww-sec.ww-duosec,
  body.page-id-44 .ww-sec.ww-emgsec,    body.page-id-44 .ww-sec.ww-commitsec,
  body.page-id-59 .ww-sec.ww-acadsec,   body.page-id-59 .ww-sec.ww-steps-sec {
    padding-bottom: 112px !important;
  }
  body.page-id-44 .ww-sec.ww-contact-bg { padding-bottom: 132px !important; }
  /* the un-waved acadsec keeps its tight top so it stays joined to the one above */
  body.page-id-59 .ww-sec.ww-acadsec:not(:has(> .et_pb_top_inside_divider)) {
    padding-top: 8px !important;
  }
}
@media (max-width: 767px) {
  body.page-id-44 .ww-sec:has(> .et_pb_top_inside_divider),
  body.page-id-59 .ww-sec:has(> .et_pb_top_inside_divider) { padding-top: 120px !important; }

  body.page-id-44 .ww-sec.ww-duosec { padding-top: 64px !important; }
  body.page-id-59 .ww-sec.ww-acadsec:not(:has(> .et_pb_top_inside_divider)) {
    padding-top: 8px !important;
  }
  body.page-id-44 .ww-sec.ww-methodsec, body.page-id-44 .ww-sec.ww-duosec,
  body.page-id-44 .ww-sec.ww-emgsec,    body.page-id-44 .ww-sec.ww-commitsec,
  body.page-id-44 .ww-sec.ww-contact-bg,
  body.page-id-59 .ww-sec.ww-acadsec,   body.page-id-59 .ww-sec.ww-steps-sec {
    padding-bottom: 72px !important;
  }
  body.page-id-44 .ww-sec.ww-footwrap,
  body.page-id-59 .ww-sec.ww-footwrap { padding-bottom: 0 !important; }
}

/* --- 3. Contact link/label contrast (WCAG AA) ---------------------------------
   Brand pink #C94D97 on the page's cream and near-white surfaces measures 3.67-4.08:1
   against a 4.5 floor for small text — 5 blocks at 1440, 8 at 390. Identical to what
   v66 fixed on Conservation, so the same ink: #B03F84 clears 4.5 on every one of these
   backgrounds and still reads as the brand link colour.
   The bare <a> inside <p> is painted by `#main-content .et_pb_text a:not(.et_pb_button)`,
   so these need the page-id + section class to out-specify it. */
body.page-id-44 #main-content .ww-pagehero a.ww-link,
body.page-id-44 #main-content .ww-contact-bg a.ww-link,
body.page-id-44 #main-content .ww-duosec .et_pb_text a:not(.et_pb_button),
body.page-id-44 #main-content .ww-emgsec .et_pb_text a:not(.et_pb_button),
body.page-id-44 #main-content .ww-contact-bg .et_pb_text a:not(.et_pb_button),
body.page-id-44 #main-content .ww-methodsec .ww-method-big,
body.page-id-44 #main-content .ww-contact-bg .ww-eyebrow {
  color: #B03F84 !important;
}

/* ================================================================================
   v87 (8/5): review-panel round on Contact (44) + DVM (59). 35 findings survived
   adversarial verification; the verifiers also proved ~20 of the finders' proposed
   fixes were no-ops or outright broken, so the fixes below are the CORRECTED ones —
   several needed !important because the declaration they shadow is itself !important,
   and Divi's per-page et-cache sheet loads AFTER this file.
   ================================================================================ */

/* --- 1. THE SERIOUS ONE, AND IT IS MINE: no divider clearance at 768-980 ----------
   v81 established that a section carrying a top wave needs padding-top >= wave height
   + 40px, and set 160px at >=981 and 120px at <=767. It never covered 768-980. In that
   band the section padding falls back to the 64px mobile value while the divider still
   renders at its 120px desktop height (that override is also <=767), so the first line
   of text sits INSIDE the wave. Measured clearance at 768 and 980:
     contact   emgsec -26  commitsec -26  contact-bg -29
     dvm       acadsec -40 / -13 / -56    steps-sec -56 (x2)   acadsec -56
     services  introsec -56  wellsec -56  diagsec -56  duosec -25
     about     statsband -56  pillars-sec -12  quote-sec -56
   So this was live on every page carrying a wave, not just the two just migrated.
   Scoped generically off :has() rather than by page id so it covers all of them, and
   set to 160px (the panel's proposed 140px buys only +20px of clearance — half what
   the system holds at the other two breakpoints). Heroes are excluded: their top
   padding is calc-driven off the nav clearance and must not be overridden. */
@media (min-width: 768px) and (max-width: 980px) {
  .ww-sec:has(> .et_pb_top_inside_divider):not(.ww-hero):not(.ww-pagehero):not(.ww-abouthero):not(.ww-memhero) {
    padding-top: 160px !important;
  }
}

/* --- 2. Contact's 4th wave was invisible ---------------------------------------
   `.ww-contact-bg` opens `linear-gradient(180deg,#FFFFFF 0%, ...)` and sits directly
   below the white `.ww-commitsec`, so a white-filled wave over a white gradient start
   under a white section rendered nothing at all — no wave, no section boundary.
   Nudging the first stop off pure white gives the wave something to sit against.
   `.ww-contact-bg` matches 1 element on Contact and 0 on every reference page. */
.ww-contact-bg { background: linear-gradient(180deg,#FDF7F1 0%, #FCF1E6 55%, #FAE4E9 100%) !important; }

/* --- 3. card system: three species on Contact never got the mobile step ----------
   v82 gave `.ww-birdcard` and `.ww-panel` their breakpoint step; these three were
   missed. All shadow an !important declaration, so these need !important to land
   (the panel verified plain rules are no-ops here).
     .ww-method   38/32/34/32 at both breakpoints  -> 30/24 at mobile
     .ww-polcard  40/36       at both              -> 30/24 at mobile
     .ww-infocard 24/26       at both              -> 30/24 at mobile
   Radius/border/shadow on the two one-off species join the card tokens; interior
   padding is deliberately NOT tokenised (7 distinct values across the families), so
   only the mobile step is normalised. */
@media (max-width: 767px) {
  .ww-method   { padding: 30px 24px !important; }
  .ww-polcard  { padding: 30px 24px !important; }
  .ww-infocard { padding: 30px 24px !important; }
}
.ww-infocard {
  border-radius: var(--wwb-card-radius, 26px) !important;
  border: var(--wwb-card-border, 1px solid rgba(227,190,127,.42)) !important;
  box-shadow: 0 14px 32px -10px rgba(156,58,116,.16) !important;
}
.ww-formcard { border-radius: var(--wwb-card-radius, 26px) !important; }

/* --- 4. #333 is an ink used nowhere else on the site ---------------------------
   A full leaf-text colour census across six pages found rgb(51,51,51) on exactly three
   elements — these card titles — against plum (276), navy (97+31), pink (26+12) and
   champagne (5). Recolour only: the face stays Jost, because Jost H4 card sub-titles
   are already in the system (About's .ww-info-title, Home's .ww-med).
   Line-height was also set solid at 1.0 — the only headings on the site below 1.14 —
   so wrapped titles nearly collided at 390. */
.ww-infocard h4 {
  color: var(--wwb-navy, #1B2F5C) !important;
  line-height: 1.25 !important;
}
/* the bare .ww-eyebrow span inside these cards is a second kicker species; match the
   system kicker's size and tracking (its ink is already #B03F84 from the v86 AA block) */
.ww-infocard .ww-eyebrow {
  font-size: var(--wwb-kicker-size, 13px) !important;
  line-height: 1.4 !important;
  letter-spacing: var(--wwb-kicker-track, .26em) !important;
}

/* --- 5. Contact's only CTA was a near-miss clone of the primary button -----------
   14.5px against the system's 15px, no mobile step, and carrying Gravity Forms'
   generic field shadow rgba(18,25,97,.08) 0 1px 4px — which leaks from the form-input
   rule (the textarea has the identical value), so it must be overridden explicitly. */
.ww-formcard .gform_wrapper .gform_button {
  font: 700 15px/1 'Jost', sans-serif !important;
  padding: 16px 32px !important;
  box-shadow: 0 12px 28px -6px rgba(201,76,151,.26) !important;
}
@media (max-width: 767px) {
  .ww-formcard .gform_wrapper .gform_button { padding: 18px 32px !important; }
}
/* form fields sat at 38px, under the 44px tap-target floor, while their own submit
   was 44.5px. min-height is what actually moves them (there is no height declaration). */
.ww-formcard .gform_wrapper input[type="text"],
.ww-formcard .gform_wrapper input[type="email"],
.ww-formcard .gform_wrapper input[type="tel"],
.ww-formcard .gform_wrapper select { min-height: 44px !important; }
/* required flag was Gravity Forms' stock red-orange, off the palette entirely */
.ww-formcard .gfield_required { color: #B03F84 !important; }

/* --- 6. DVM section padding + the navy strip ------------------------------------
   photoband closed with 0 bottom, butting the photograph flush into the cream gradient
   below it; page 33 already carries explicit overrides, so mirror them onto 59.
   The un-waved first steps-sec sat at 80px, off the token set (desktop only — 64px at
   mobile is what the approved Species page uses, so that stays).
   navystrip ran 44/44 here against 36/36 on Contact and Species. */
@media (min-width: 981px) {
  body.page-id-59 .ww-sec.ww-photoband { padding-bottom: 112px !important; }
  body.page-id-59 .ww-sec.ww-steps-sec:not(:has(> .et_pb_top_inside_divider)) { padding-top: 112px !important; }
  body.page-id-59 .ww-sec.ww-navystrip { padding-top: 36px !important; padding-bottom: 36px !important; }
}
@media (max-width: 767px) {
  body.page-id-59 .ww-sec.ww-photoband { padding-bottom: 72px !important; }
}

/* --- 7. DVM's navy strip had an inverted hierarchy ------------------------------
   Its lead line is authored at 26px but the blanket mobile rule
   `@media(max-width:767px){ .ww-sec .et_pb_text_inner p { font-size:17px !important } }`
   clobbers it, so the CTA title rendered SMALLER than the paragraph it introduces.
   Exempt the strip rather than re-declaring a size the same rule would clobber again. */
@media (max-width: 767px) {
  .ww-navystrip .et_pb_text_inner p,
  .ww-navystrip .ww-strip-line p { font-size: inherit !important; }
}

/* --- 8. DVM's .ww-method card lists were the only disc bullets on the site -------
   A census across six pages found these 5 ULs (30 items) are the ONLY list-style:disc
   content lists in #main-content anywhere; every other disc list is the mobile nav.
   I had left these deliberately, reasoning that card-interior density differs from
   section rhythm — that reasoning held for the duocard's gaps but not here: this is a
   marker treatment, not a density choice, and the system marker is the dot.
   Champagne #FBE179 is the majority value (About, Contact, DVM's own body lists);
   Services uses pink on one list. */
.ww-method ul { list-style: none !important; margin: 0 !important; padding: 0 !important; }
.ww-method ul li { position: relative; list-style: none !important; padding-left: 18px !important; }
.ww-method ul li::before {
  content: ""; position: absolute; left: 0; top: .62em;
  width: 5px; height: 5px; border-radius: 50%;
  background: var(--wwb-gold-bright, #FBE179);
}

/* --- v88 (8/5): DVM navy-strip lead line, mobile ---------------------------------
   v87 exempted the strip from the blanket `.ww-sec .et_pb_text_inner p{font-size:17px
   !important}` mobile rule, which stopped the paragraphs from rendering LARGER than the
   CTA title. But the lead line is also a <p> in that module, so `inherit` took it down
   to 15px too — hierarchy level rather than inverted. Desktop runs 26px w600 lead over
   15px w500 body; give the lead its own mobile step (20px) so the relationship survives.
   Scoped to page 59: Contact's and Species' strips hold a single DIV/EM line with no
   lead/body split, and must not be enlarged. */
@media (max-width: 767px) {
  body.page-id-59 .ww-navystrip .ww-strip-line p:first-of-type {
    font-size: 20px !important; line-height: 1.35 !important;
  }
}

/* --- v89 (8/5): kicker -> headline margin on Contact + DVM -----------------------
   My v85 eyebrow-inversion opt-out set the kicker's FONT properties for pages 44 and 59
   but never its margin, so the gap fell to whatever Divi computed:
     contact / dvm   34px @1440   and   4px @390
     services / about (approved)  14px at BOTH breakpoints
   The system value is a flat 14px — it does not scale between breakpoints (verified on
   Services across 7 kickers and About across 4). !important is required: the panel
   proved a plain rule moves the hero kicker but leaves the form kicker untouched. */
body.page-id-44 .ww-sec .ww-eyebrow-m,
body.page-id-59 .ww-sec .ww-eyebrow-m { margin-bottom: 14px !important; }
body.page-id-44 .ww-sec .ww-eyebrow-m .et_pb_text_inner > p:last-child,
body.page-id-59 .ww-sec .ww-eyebrow-m .et_pb_text_inner > p:last-child { margin-bottom: 0 !important; }

/* ================================================================================
   v90 (8/5): list-marker contrast (site-wide) + equal-height consultation cards.
   ================================================================================ */

/* --- 1. champagne list markers were invisible on light surfaces -----------------
   Nick flagged this on DVM; measuring every marker on the site against the surface
   actually behind it shows it is site-wide. Champagne #FBE179 vs its backdrop:
     about   pillars-sec  on #FDF5EC  1.20:1        contact  duosec  on #FFF2F8  1.20:1
     services duosec      on #FDF5EC  1.20:1        contact  emgsec  on #FBEDE2  1.13:1
     memberships duosec   on #FDF5EC  1.20:1        dvm      acadsec on #FDF5EC  1.20:1
     conservation whymatters on #FFF  1.30:1        dvm      steps   on #FAE4E9  1.07:1
   Against a 3.0 floor for a non-text UI element. It only ever worked in one place —
   `.ww-cons`, where it sits on the pink band at 3.23:1.
   Someone had already hand-patched `.ww-diagsec` to pink (L539), which is the tell that
   the DEFAULT is wrong rather than the exceptions. So: flip the default to brand pink
   (3.4-4.2:1 on every light surface measured) and keep champagne only where the band
   behind it is dark or pink, where pink itself would vanish. */
.ww-list li::before,
.ww-method ul li::before { background: var(--wwb-pink, #C94D97) !important; }

/* dark / pink bands keep the champagne marker — pink on pink would be ~1:1 */
.ww-cons .ww-list li::before,
.ww-mem .ww-list li::before,
.ww-values .ww-list li::before,
.ww-navystrip .ww-list li::before,
.ww-memhero .ww-list li::before,
.ww-cons .ww-method ul li::before {
  background: var(--wwb-gold-bright, #FBE179) !important;
}
/* .ww-tier-featured already sets its own #E3BE7F and is left alone */

/* --- 2. equal-height consultation cards, with more air between them -------------
   The `.ww-eqrow` rows were already doing their half correctly — at 1440 all three
   columns measure exactly 393px. The break is one level in: the column is
   `display:flex; flex-direction:column`, so the card is a flex ITEM on the main axis,
   and it computes `flex: 0 1 auto` — it never grows into the column it was given.
   Result 393 / 233 / 297, a 160px ragged bottom edge.
   `flex-grow:1` on the card is the fix. Note `flex:1 1 0` would be wrong here — this
   site has a documented bug where `1 1 0` collapses column-direction items to ~1px. */
.ww-eqrow .et_pb_column > .ww-method,
.ww-eqrow .et_pb_column > .ww-card,
.ww-eqrow .et_pb_column > .ww-panel,
.ww-eqrow .et_pb_column > .ww-birdcard,
.ww-eqrow .et_pb_column > .ww-infocard { flex: 1 1 auto !important; }

/* more separation between the consultation boxes (Nick's call). Scoped to DVM so the
   approved pages keep the 28px --wwb-card-gap; promote it to the token if he wants it
   everywhere. Both card sections on the page move together so they stay consistent. */
@media (min-width: 981px) {
  body.page-id-59 .ww-acadsec .ww-eqrow { gap: 36px !important; }
  body.page-id-59 .ww-acadsec .ww-eqrow + .ww-eqrow { margin-top: 36px !important; }
}
@media (max-width: 980px) {
  body.page-id-59 .ww-acadsec .ww-eqrow { gap: 24px !important; }
  body.page-id-59 .ww-acadsec .ww-eqrow + .ww-eqrow { margin-top: 24px !important; }
}

/* ================================================================================
   v91 (8/5): Academy (51), Wildlife (174), Found a Wild Animal (58) onto the system.
   Same profile as the last two pages: legacy .ww-pagehero-h1 / .ww-pagehero-sub /
   .ww-h2-m (H1 56px, H2 22.32 and 33.12px), the eyebrow-inversion bug rendering the
   kicker at 36px, no dividers, and section paddings spread across 0/56, 80/96, 0/64,
   0/48, 0/72, 24/72, 88/96. Post content now carries the system classes and the waves.
   ================================================================================ */

/* --- 1. eyebrow-inversion opt-out + kicker margin (pages 51 / 174 / 58) ---------- */
body.page-id-51 .ww-sec .ww-eyebrow-m .et_pb_text_inner,
body.page-id-51 .ww-sec .ww-eyebrow-m .et_pb_text_inner p,
body.page-id-51 .ww-sec .ww-eyebrow-m p,
body.page-id-174 .ww-sec .ww-eyebrow-m .et_pb_text_inner,
body.page-id-174 .ww-sec .ww-eyebrow-m .et_pb_text_inner p,
body.page-id-174 .ww-sec .ww-eyebrow-m p,
body.page-id-58 .ww-sec .ww-eyebrow-m .et_pb_text_inner,
body.page-id-58 .ww-sec .ww-eyebrow-m .et_pb_text_inner p,
body.page-id-58 .ww-sec .ww-eyebrow-m p {
  font-family: var(--wwb-font-body, 'Jost', sans-serif) !important;
  font-weight: 700 !important;
  font-size: var(--wwb-kicker-size, 13px) !important;
  line-height: 1.4 !important;
  letter-spacing: var(--wwb-kicker-track, .26em) !important;
  text-transform: uppercase !important;
  color: var(--wwb-pink, #C94D97) !important;
}
body.page-id-51 .ww-sec .ww-eyebrow-m,
body.page-id-174 .ww-sec .ww-eyebrow-m,
body.page-id-58 .ww-sec .ww-eyebrow-m { margin-bottom: 14px !important; }
body.page-id-51 .ww-sec .ww-eyebrow-m .et_pb_text_inner > p:last-child,
body.page-id-174 .ww-sec .ww-eyebrow-m .et_pb_text_inner > p:last-child,
body.page-id-58 .ww-sec .ww-eyebrow-m .et_pb_text_inner > p:last-child { margin-bottom: 0 !important; }

/* --- 2. Wildlife had NO background alternation whatsoever -----------------------
   Every one of its eight section boundaries sampled #FFFFFF on both sides — nine
   consecutive white bands, so a wave there would have rendered nothing (the same
   white-on-white case that made Contact's 4th divider invisible). Alternation has to
   come first. Using the system's existing wash, the one `.ww-steps-sec` already uses,
   rather than inventing a new tint. */
body.page-id-174 .ww-sec.ww-duosec:not(.ww-regionsec):not(.ww-emergsec):not(.ww-dirsec),
body.page-id-174 .ww-sec.ww-regionsec,
body.page-id-174 .ww-sec.ww-beforesec,
body.page-id-174 .ww-sec.ww-dirsec {
  background: linear-gradient(180deg,#FDF2E7 0%, #FAE4E9 100%) !important;
}
body.page-id-174 .ww-sec.ww-rescueintro,
body.page-id-174 .ww-sec.ww-foundsec,
body.page-id-174 .ww-sec.ww-emergsec,
body.page-id-174 .ww-sec.ww-commitsec { background: #FFFFFF !important; }

/* --- 3. section rhythm, keyed off the divider (self-maintaining) ----------------
   160/120 wherever a wave exists, per the v81 rule; the standard set otherwise. */
@media (min-width: 981px) {
  body.page-id-51  .ww-sec:has(> .et_pb_top_inside_divider),
  body.page-id-174 .ww-sec:has(> .et_pb_top_inside_divider),
  body.page-id-58  .ww-sec:has(> .et_pb_top_inside_divider) { padding-top: 160px !important; }

  body.page-id-51  .ww-sec:not(.ww-pagehero):not(.ww-footwrap):not(.ww-photoband):not(.ww-mem):not(:has(> .et_pb_top_inside_divider)),
  body.page-id-174 .ww-sec:not(.ww-pagehero):not(.ww-footwrap):not(:has(> .et_pb_top_inside_divider)),
  body.page-id-58  .ww-sec:not(.ww-pagehero):not(.ww-footwrap):not(.ww-photoband):not(.ww-navystrip):not(:has(> .et_pb_top_inside_divider)) {
    padding-top: 112px !important;
  }
  body.page-id-51  .ww-sec:not(.ww-pagehero):not(.ww-footwrap):not(.ww-photoband):not(.ww-mem),
  body.page-id-174 .ww-sec:not(.ww-pagehero):not(.ww-footwrap),
  body.page-id-58  .ww-sec:not(.ww-pagehero):not(.ww-footwrap):not(.ww-photoband):not(.ww-navystrip) {
    padding-bottom: 112px !important;
  }
  body.page-id-51 .ww-sec.ww-photoband,
  body.page-id-58 .ww-sec.ww-photoband { padding-top: 0 !important; padding-bottom: 112px !important; }
}
@media (max-width: 767px) {
  body.page-id-51  .ww-sec:has(> .et_pb_top_inside_divider),
  body.page-id-174 .ww-sec:has(> .et_pb_top_inside_divider),
  body.page-id-58  .ww-sec:has(> .et_pb_top_inside_divider) { padding-top: 120px !important; }

  body.page-id-51  .ww-sec:not(.ww-pagehero):not(.ww-footwrap):not(.ww-photoband):not(.ww-mem):not(:has(> .et_pb_top_inside_divider)),
  body.page-id-174 .ww-sec:not(.ww-pagehero):not(.ww-footwrap):not(:has(> .et_pb_top_inside_divider)),
  body.page-id-58  .ww-sec:not(.ww-pagehero):not(.ww-footwrap):not(.ww-photoband):not(.ww-navystrip):not(:has(> .et_pb_top_inside_divider)) {
    padding-top: 64px !important;
  }
  body.page-id-51  .ww-sec:not(.ww-pagehero):not(.ww-footwrap):not(.ww-photoband):not(.ww-mem),
  body.page-id-174 .ww-sec:not(.ww-pagehero):not(.ww-footwrap),
  body.page-id-58  .ww-sec:not(.ww-pagehero):not(.ww-footwrap):not(.ww-photoband):not(.ww-navystrip) {
    padding-bottom: 72px !important;
  }
  body.page-id-51 .ww-sec.ww-photoband,
  body.page-id-58 .ww-sec.ww-photoband { padding-top: 0 !important; padding-bottom: 72px !important; }
  body.page-id-51 .ww-sec.ww-footwrap,
  body.page-id-174 .ww-sec.ww-footwrap,
  body.page-id-58 .ww-sec.ww-footwrap { padding-bottom: 0 !important; }
}

/* --- v92 (8/5): link + kicker contrast on 174 / 58 (WCAG AA) --------------------
   Brand pink #C94D97 on these pages' light surfaces measures 3.87-3.90:1 against a 4.5
   floor — the same class v66 fixed on Conservation and v86 on Contact, so the same ink.
   These are almost all phone numbers and rescue-org links on the wildlife directories,
   i.e. exactly the content someone reads in an emergency, so it matters here.
   The navy strip is excluded — it already carries gold at 7.5:1, and #B03F84 on navy
   would be far worse. */
body.page-id-174 #main-content .ww-sec:not(.ww-navystrip) .et_pb_text a:not(.et_pb_button),
body.page-id-174 #main-content .ww-sec:not(.ww-navystrip) .et_pb_blurb a:not(.et_pb_button),
body.page-id-58  #main-content .ww-sec:not(.ww-navystrip) .et_pb_text a:not(.et_pb_button),
body.page-id-58  #main-content .ww-sec:not(.ww-navystrip) .et_pb_blurb a:not(.et_pb_button) {
  color: #B03F84 !important;
}

/* the kicker on the rose-tinted `.ww-steps-sec` wash landed at 4.46:1 — 0.04 short of the
   floor. One step darker clears it and is indistinguishable at kicker size. */
body.page-id-58 #main-content .ww-steps-sec .ww-eyebrow-m,
body.page-id-58 #main-content .ww-steps-sec .ww-eyebrow-m .et_pb_text_inner,
body.page-id-58 #main-content .ww-steps-sec .ww-eyebrow-m .et_pb_text_inner p,
body.page-id-58 #main-content .ww-steps-sec .ww-eyebrow-m p { color: #A6377A !important; }

/* ================================================================================
   v94 (8/5): the last five pages — Blog 52, Hospital Policies 123, Emergency 176,
   House Calls 178, Testimonials 170 — onto the design system. Same profile as the
   others: legacy .ww-pagehero-h1 / .ww-pagehero-sub / .ww-h2-m, the eyebrow-inversion
   bug, no dividers, and section paddings spread across 14/14, 24/88, 8/88, 64/40,
   40/96, 72/104, 150/96, 160/72.
   ================================================================================ */

/* --- 1. eyebrow-inversion opt-out + kicker margin ------------------------------- */
body.page-id-52 .ww-sec .ww-eyebrow-m .et_pb_text_inner,
body.page-id-52 .ww-sec .ww-eyebrow-m .et_pb_text_inner p,
body.page-id-52 .ww-sec .ww-eyebrow-m p,
body.page-id-123 .ww-sec .ww-eyebrow-m .et_pb_text_inner,
body.page-id-123 .ww-sec .ww-eyebrow-m .et_pb_text_inner p,
body.page-id-123 .ww-sec .ww-eyebrow-m p,
body.page-id-176 .ww-sec .ww-eyebrow-m .et_pb_text_inner,
body.page-id-176 .ww-sec .ww-eyebrow-m .et_pb_text_inner p,
body.page-id-176 .ww-sec .ww-eyebrow-m p,
body.page-id-178 .ww-sec .ww-eyebrow-m .et_pb_text_inner,
body.page-id-178 .ww-sec .ww-eyebrow-m .et_pb_text_inner p,
body.page-id-178 .ww-sec .ww-eyebrow-m p,
body.page-id-170 .ww-sec .ww-eyebrow-m .et_pb_text_inner,
body.page-id-170 .ww-sec .ww-eyebrow-m .et_pb_text_inner p,
body.page-id-170 .ww-sec .ww-eyebrow-m p {
  font-family: var(--wwb-font-body, 'Jost', sans-serif) !important;
  font-weight: 700 !important;
  font-size: var(--wwb-kicker-size, 13px) !important;
  line-height: 1.4 !important;
  letter-spacing: var(--wwb-kicker-track, .26em) !important;
  text-transform: uppercase !important;
  color: var(--wwb-pink, #C94D97) !important;
}
body.page-id-52 .ww-sec .ww-eyebrow-m,  body.page-id-123 .ww-sec .ww-eyebrow-m,
body.page-id-176 .ww-sec .ww-eyebrow-m, body.page-id-178 .ww-sec .ww-eyebrow-m,
body.page-id-170 .ww-sec .ww-eyebrow-m { margin-bottom: 14px !important; }
body.page-id-52 .ww-sec .ww-eyebrow-m .et_pb_text_inner > p:last-child,
body.page-id-123 .ww-sec .ww-eyebrow-m .et_pb_text_inner > p:last-child,
body.page-id-176 .ww-sec .ww-eyebrow-m .et_pb_text_inner > p:last-child,
body.page-id-178 .ww-sec .ww-eyebrow-m .et_pb_text_inner > p:last-child,
body.page-id-170 .ww-sec .ww-eyebrow-m .et_pb_text_inner > p:last-child { margin-bottom: 0 !important; }

/* --- 2. section rhythm, keyed off the divider ----------------------------------
   160/120 wherever a wave exists (v81 rule), 112/72 otherwise. The hero, footer wrap,
   photo bands and the shared global bands (.ww-mem, .ww-asksec) are excluded — the
   heroes are calc-driven off nav clearance and the globals are owned by the Library. */
@media (min-width: 981px) {
  body.page-id-52 .ww-sec:has(> .et_pb_top_inside_divider),
  body.page-id-123 .ww-sec:has(> .et_pb_top_inside_divider),
  body.page-id-176 .ww-sec:has(> .et_pb_top_inside_divider),
  body.page-id-178 .ww-sec:has(> .et_pb_top_inside_divider),
  body.page-id-170 .ww-sec:has(> .et_pb_top_inside_divider) { padding-top: 160px !important; }

  body.page-id-52 .ww-sec:not(.ww-pagehero):not(.ww-footwrap):not(.ww-mem):not(.ww-asksec):not(.ww-draftflag):not(:has(> .et_pb_top_inside_divider)),
  body.page-id-123 .ww-sec:not(.ww-pagehero):not(.ww-footwrap):not(:has(> .et_pb_top_inside_divider)),
  body.page-id-176 .ww-sec:not(.ww-pagehero):not(.ww-footwrap):not(:has(> .et_pb_top_inside_divider)),
  body.page-id-178 .ww-sec:not(.ww-pagehero):not(.ww-footwrap):not(.ww-mem):not(:has(> .et_pb_top_inside_divider)),
  body.page-id-170 .ww-sec:not(.ww-pagehero):not(.ww-footwrap):not(.ww-mem):not(:has(> .et_pb_top_inside_divider)) {
    padding-top: 112px !important;
  }
  body.page-id-52 .ww-sec:not(.ww-pagehero):not(.ww-footwrap):not(.ww-mem):not(.ww-asksec):not(.ww-draftflag),
  body.page-id-123 .ww-sec:not(.ww-pagehero):not(.ww-footwrap),
  body.page-id-176 .ww-sec:not(.ww-pagehero):not(.ww-footwrap),
  body.page-id-178 .ww-sec:not(.ww-pagehero):not(.ww-footwrap):not(.ww-mem),
  body.page-id-170 .ww-sec:not(.ww-pagehero):not(.ww-footwrap):not(.ww-mem) {
    padding-bottom: 112px !important;
  }
}
@media (max-width: 767px) {
  body.page-id-52 .ww-sec:has(> .et_pb_top_inside_divider),
  body.page-id-123 .ww-sec:has(> .et_pb_top_inside_divider),
  body.page-id-176 .ww-sec:has(> .et_pb_top_inside_divider),
  body.page-id-178 .ww-sec:has(> .et_pb_top_inside_divider),
  body.page-id-170 .ww-sec:has(> .et_pb_top_inside_divider) { padding-top: 120px !important; }

  body.page-id-52 .ww-sec:not(.ww-pagehero):not(.ww-footwrap):not(.ww-mem):not(.ww-asksec):not(.ww-draftflag):not(:has(> .et_pb_top_inside_divider)),
  body.page-id-123 .ww-sec:not(.ww-pagehero):not(.ww-footwrap):not(:has(> .et_pb_top_inside_divider)),
  body.page-id-176 .ww-sec:not(.ww-pagehero):not(.ww-footwrap):not(:has(> .et_pb_top_inside_divider)),
  body.page-id-178 .ww-sec:not(.ww-pagehero):not(.ww-footwrap):not(.ww-mem):not(:has(> .et_pb_top_inside_divider)),
  body.page-id-170 .ww-sec:not(.ww-pagehero):not(.ww-footwrap):not(.ww-mem):not(:has(> .et_pb_top_inside_divider)) {
    padding-top: 64px !important;
  }
  body.page-id-52 .ww-sec:not(.ww-pagehero):not(.ww-footwrap):not(.ww-mem):not(.ww-asksec):not(.ww-draftflag),
  body.page-id-123 .ww-sec:not(.ww-pagehero):not(.ww-footwrap),
  body.page-id-176 .ww-sec:not(.ww-pagehero):not(.ww-footwrap),
  body.page-id-178 .ww-sec:not(.ww-pagehero):not(.ww-footwrap):not(.ww-mem),
  body.page-id-170 .ww-sec:not(.ww-pagehero):not(.ww-footwrap):not(.ww-mem) {
    padding-bottom: 72px !important;
  }
  body.page-id-52 .ww-sec.ww-footwrap,  body.page-id-123 .ww-sec.ww-footwrap,
  body.page-id-176 .ww-sec.ww-footwrap, body.page-id-178 .ww-sec.ww-footwrap,
  body.page-id-170 .ww-sec.ww-footwrap { padding-bottom: 0 !important; }
}

/* --- v95 (8/5): link contrast on Blog (52) + Emergency (176) --------------------
   Brand pink on these pages' white and cream surfaces measures 3.87-4.21:1 against the
   4.5 floor — same class as v66 / v86 / v92, same ink. On Emergency this is the
   after-hours phone number and the link to the emergency-signs list, which is the worst
   possible place on the site for a low-contrast link. Blog's are post dates and the
   "read more" links in the card grid. The navy strip is excluded (already gold). */
body.page-id-52  #main-content .ww-sec:not(.ww-navystrip) .et_pb_text a:not(.et_pb_button),
body.page-id-52  #main-content .ww-blogsec .et_pb_post_content a:not(.et_pb_button),
body.page-id-52  #main-content .ww-blogsec .post-meta,
body.page-id-52  #main-content .ww-blogsec .post-meta a,
body.page-id-52  #main-content .ww-blogsec .more-link,
body.page-id-176 #main-content .ww-sec:not(.ww-navystrip) .et_pb_text a:not(.et_pb_button),
body.page-id-176 #main-content .ww-sec:not(.ww-navystrip) .et_pb_blurb a:not(.et_pb_button) {
  color: #B03F84 !important;
}

/* ================================================================================
   v96-v99 (8/6): three-round full-site multi-agent review.
   R1 92 confirmed, R2 56 confirmed, R3 visual gate. Rebuilt as one block on 8/6 after
   an empty-file push wiped the stylesheet; the six v96-regressing-v96 corrections that
   R2 found are baked in here rather than layered as later overrides.
   Verifier-corrected fixes only — ~1/3 of agent-proposed fixes were refuted or rewritten.
   ================================================================================ */

/* ---------- A. bottom-divider clearance (the mirror of the v87 top-divider fix) ---- */
@media (min-width: 768px) and (max-width: 980px) {
  body.page-id-45 .ww-sec:has(> .et_pb_bottom_inside_divider),
  body.page-id-60 .ww-sec:has(> .et_pb_bottom_inside_divider) { padding-bottom: 160px !important; }
  body.page-id-60 .ww-club .et_pb_button_0_wrapper { text-align: center; }
  body.page-id-60 .ww-club a.et_pb_button.ww-btnw { display: inline-block !important; width: auto !important; }
  body.page-id-43 .ww-sec:has(> .et_pb_bottom_inside_divider),
  body.page-id-16 .ww-sec.ww-van { padding-bottom: 160px !important; }
  body.page-id-16 .ww-sec.ww-values { padding-bottom: 100px !important; }
  body.page-id-16 .ww-sec.ww-cons { padding-bottom: 110px !important; }
}
@media (min-width: 981px) {
  body.page-id-60 .ww-sec.ww-cons { padding-bottom: 160px !important; }
  body.page-id-43 .ww-sec:has(> .et_pb_bottom_inside_divider),
  body.page-id-16 .ww-sec.ww-van { padding-bottom: 160px !important; }
}
@media (max-width: 767px) {
  body.page-id-43 .ww-sec:has(> .et_pb_bottom_inside_divider),
  body.page-id-16 .ww-sec.ww-van { padding-bottom: 120px !important; }
  body.page-id-60 .et_pb_section.ww-sec.ww-cons { padding-bottom: 120px !important; }
}

/* ---------- B. keyboard focus + hover (site-wide, WCAG 2.4.7) ---------------------- */
#main-content a:focus-visible, .ww-footwrap a:focus-visible {
  outline: 2px solid #B03F84 !important; outline-offset: 2px !important;
}
#main-content .ww-navystrip a:focus-visible, .ww-memhero a:focus-visible { outline-color: #E3BE7F !important; }
/* pink ring on a pink band is invisible; cream clears 3:1 on both mem and cons */
#main-content .ww-sec.ww-mem a:focus-visible,
#main-content .ww-sec.ww-cons a:focus-visible { outline-color: #FFF7EA !important; }
.ww-vcar:focus-visible { outline: 2px solid #B03F84; outline-offset: 4px; }
.ww-play:focus-visible { outline: 3px solid #FFFFFF; outline-offset: 3px; box-shadow: 0 0 0 6px rgba(40,10,33,.55); }
.ww-askform input:focus-visible, .ww-askform textarea:focus-visible,
#gform_wrapper_1 input:focus, #gform_wrapper_1 textarea:focus {
  box-shadow: 0 0 0 3px rgba(201,77,151,.25) !important;
}
/* the halo above also matched the submit and flattened its resting lift */
#gform_wrapper_1 input[type=submit]:focus { box-shadow: 0 12px 28px -6px rgba(201,76,151,.26) !important; }
#gform_wrapper_1 input[type=submit]:focus-visible { outline: 3px solid #1B2F5C !important; outline-offset: 3px !important; }
#gform_wrapper_1 input[type=submit]:hover { filter: brightness(.92); transform: translateY(-2px); }
.ww-navystrip a:hover, .ww-emgsec .et_pb_text a:hover, .ww-method a:hover, .ww-link-m a:hover {
  text-decoration: underline; text-underline-offset: 3px;
}
.ww-wellsec .et_pb_text_inner a:hover { background: #FFF; transform: translateY(-1px); box-shadow: 0 6px 16px rgba(156,58,116,.18); }
a.more-link:hover { text-decoration: underline; text-underline-offset: 3px; }
#main-content .ww-care .et_pb_blurb a.ww-link:hover,
#main-content .ww-van .et_pb_text a.ww-link:hover { color: #C94D97 !important; }
@media (prefers-reduced-motion: reduce) {
  #gform_wrapper_1 input[type=submit]:hover,
  .ww-wellsec .et_pb_text_inner a:hover,
  .ww-tbheader li.ww-menu-cta > a:hover { transform: none !important; }
  /* keep a non-motion cue — zeroing the transform alone removed the button's only feedback */
  #page-container a.et_pb_button:hover { transform: none !important; filter: brightness(.92); }
}

/* ---------- C. site-wide unifications --------------------------------------------- */
.ww-sec:not(.ww-memhero) .ww-h1-m h1 { color: var(--ww-navy) !important; }
.ww-body-m p { text-wrap: pretty; }
.ww-quote-markm .et_pb_text_inner { -webkit-text-fill-color: transparent; }
@media (max-width: 980px) {
  .ww-sec .ww-card { border-radius: 26px !important; border: 1px solid rgba(227,190,127,0.42) !important; }
  .ww-sec .ww-promise-row, .ww-sec .ww-pillar2 { border-radius: 26px !important; border: 1px solid rgba(227,190,127,0.42) !important; }
  .ww-sec .ww-species-top { border-radius: 26px 26px 0 0 !important; }
  .ww-sec .ww-species-bot { border-radius: 0 0 26px 26px !important; }
  .ww-checks li:last-child { border-bottom: 0 !important; }
  .ww-duocard .ww-duo-h3 + .ww-list { margin-top: 12px; }
}
.ww-duocard.ww-polnote { border-radius: 26px !important; }
.ww-step { border-radius: 26px !important; border: var(--wwb-card-border) !important; }
@media (min-width: 981px) {
  .ww-sec.ww-dvmstrip { padding-top: 36px !important; padding-bottom: 36px !important; }
  .ww-sec.ww-asksec { padding-top: 112px !important; padding-bottom: 132px !important; }
}
@media (max-width: 767px) {
  body.page-id-60 .ww-sec.ww-navystrip { padding-top: 32px !important; padding-bottom: 32px !important; }
}
#main-content .et_pb_text h3 a:not(.et_pb_button):not(.ww-hero-emg) {
  color: inherit !important;
  text-decoration: underline !important; text-decoration-color: rgba(27,47,92,.35) !important;
  text-underline-offset: 4px !important;
}

/* ---------- D. home --------------------------------------------------------------- */
/* macaw reserved no box before lazy-load (+223px shift). NO aspect-ratio: the img's
   width/height attributes already reserve it, and 3/2 squashed four other pages'
   2.10:1 band photos that share this class. */
@media (max-width: 980px) {
  .ww-cons-img-m .et_pb_image_wrap { display: block; width: 100%; }
  .ww-cons-img-m img { width: 100% !important; height: auto !important; display: block; }
}
body.page-id-16 #main-content .ww-care .et_pb_blurb a:not(.et_pb_button),
body.page-id-16 #main-content .ww-van .et_pb_text a:not(.et_pb_button) { color: #B03F84 !important; }
body.page-id-16 .ww-species a.ww-link { color: #B03F84 !important; }
#main-content a.ww-hero-emg { color: #B03F84 !important; }
@media (max-width: 767px) {
  #main-content .ww-species-bot .ww-link .ww-nowrap { color: #B03F84 !important; }
  .ww-sec .ww-quote-markm .et_pb_text_inner,
  .ww-sec .ww-quote-markm .et_pb_text_inner p { font-size: 90px !important; line-height: 0.62 !important; }
  .et_pb_section.ww-sec.ww-values, .et_pb_section.ww-sec.ww-quote,
  .et_pb_section.ww-sec.ww-cons { padding-top: 120px !important; }
  /* page-scoped: unscoped, these re-broke Conservation's wave clearance at mobile */
  body.page-id-16 .et_pb_section.ww-sec.ww-species { padding-top: 64px !important; }
  body.page-id-16 .et_pb_section.ww-sec.ww-care,
  body.page-id-16 .et_pb_section.ww-sec.ww-cons { padding-bottom: 72px !important; }
}
@media (max-width: 980px) { .ww-hero .ww-h1-lead { color: #B03F84; font-weight: 700; } }
@media (min-width: 981px) {
  body.page-id-122 .ww-sec.ww-pagehero { padding-bottom: 64px !important; }
  body.page-id-16 .ww-sec.ww-hero { padding-top: 325px !important; padding-bottom: 64px !important; }
}
/* the 325px above outranked the compact-band 200px, leaving a 249px void */
@media (min-width: 981px) and (max-width: 1280px) {
  body.page-id-16 .ww-sec.ww-hero { padding-top: 200px !important; }
}

/* ---------- E. about -------------------------------------------------------------- */
body #page-container .et_pb_section .et_pb_button.ww-abouthero-cta {
  background-image: linear-gradient(120deg, #C94D97, #C94D97) !important;
  background-color: #C94D97 !important;
  padding: 14px 30px !important; font-size: 15px !important; font-weight: 700 !important;
  border-radius: 999px !important; border: 0 !important;
  box-shadow: 0 12px 28px -6px rgba(201,76,151,.26) !important;
}
@media (min-width: 981px) {
  body #page-container .et_pb_section .et_pb_button.ww-abouthero-cta { padding: 16px 32px !important; }
}
.ww-mediastrip strong {
  font-family: Jost, sans-serif !important; font-size: 13px !important; font-weight: 700;
  letter-spacing: .26em !important; text-transform: uppercase; color: #B03F84 !important;
}
@media (max-width: 767px) {
  body.page-id-43 .ww-sec.ww-abouthero .et_pb_text .et_pb_text_inner { text-align: left !important; }
}

/* ---------- F. memberships -------------------------------------------------------- */
@media (min-width: 1281px) {
  body.page-id-45 .ww-sec.ww-memhero::before {
    filter: none !important; border-radius: 0 !important; height: 300px !important;
    background: linear-gradient(180deg, rgba(255,252,247,.97) 0%, rgba(255,252,247,.94) 62%, rgba(255,252,247,0) 100%) !important;
  }
}
/* longhands, not the `padding` shorthand — the shorthand clobbered the <=430 side rule */
@media (max-width: 980px) {
  #page-container .et_pb_row.ww-memhero-frame {
    padding-top: 32px !important; padding-bottom: 32px !important;
    padding-left: 20px !important; padding-right: 20px !important;
  }
  body.page-id-45 .ww-duosec .et_pb_column:not(:has(.ww-duo-h3)) { overflow: visible !important; }
}
@media (max-width: 430px) {
  #page-container .et_pb_row.ww-memhero-frame { padding-left: 18px !important; padding-right: 18px !important; }
}
/* These six rules used to key off .et_pb_row_5/_6/_8/_9. et_pb_row_N is a PAGE-GLOBAL
   0-based counter, so moving any section renumbers every row after it and the rules
   silently retarget — moving the photo band to index 2 on 8/7 would have collapsed the
   "Concierge Care Benefits" heading onto its first card at mobile. The four rows now
   carry explicit classes (ww-ben-r1/r2, ww-rr-head/body) added to the post content.
   NEVER reintroduce an index-based row selector on a page whose order can change. */
body.page-id-45 .ww-duosec .ww-rr-head.et_pb_row { padding-bottom: 0 !important; }
body.page-id-45 .ww-duosec .ww-rr-body.et_pb_row { padding-top: 0 !important; }
@media (min-width: 981px) {
  body.page-id-45 .ww-duosec .ww-rr-head h2 { margin-bottom: 22px !important; }
  body.page-id-45 .ww-duosec .et_pb_column:has(.ww-duo-h3),
  body.page-id-45 .ww-steps-sec .et_pb_column:has(.ww-duo-h3) { padding: 40px 36px 36px !important; }
  body.page-id-45 .ww-sec.ww-duosec .ww-list-2col { max-width: 740px; margin-left: auto; margin-right: auto; }
}
@media (max-width: 767px) {
  body.page-id-45 .ww-duosec .ww-rr-head.et_pb_row { margin-bottom: 0 !important; }
  body.page-id-45 .ww-duosec .ww-ben-r1.et_pb_row { padding-bottom: 0 !important; }
  body.page-id-45 .ww-duosec .ww-ben-r2.et_pb_row { padding-top: 0 !important; }
  body.page-id-45 .ww-duosec .ww-duo-row > .et_pb_column,
  body.page-id-45 .ww-steps-sec .ww-duo-row > .et_pb_column { margin-bottom: 0 !important; }
}

/* ---------- G. conservation ------------------------------------------------------- */
/* champagne-on-pink cannot pass AA at 13px; >=19px hits the large-text 3.0 floor.
   Targets the leaf — this kicker has NO <p> inside .et_pb_text_inner. */
body.page-id-60 .ww-club .ww-eyebrow-m .et_pb_text_inner { font-size: 19px !important; }
@media (max-width: 767px) {
  body.page-id-60 .ww-club .ww-eyebrow-m .et_pb_text_inner { letter-spacing: .03em !important; }
  body.page-id-60 .ww-club .et_pb_button_0_wrapper { margin-top: 18px !important; }
}

/* ---------- H. species + services ------------------------------------------------- */
@media (min-width: 768px) and (max-width: 980px) {
  .ww-birdsec .et_pb_column_1_4 { width: 100% !important; }
  body.page-id-33 .et_pb_row_2.ww-well-head.et_pb_row { padding-bottom: 20px !important; }
}
@media (max-width: 767px) {
  .ww-repsec .ww-bigmed { text-align: center !important; }
  .ww-repsec .ww-chips, .ww-mamsec .ww-chips { margin-top: 12px !important; }
  body.page-id-33 .et_pb_row_2.ww-well-head.et_pb_row { padding-bottom: 12px !important; }
  .ww-mamsec .ww-mam-pics { gap: 24px; }
  .ww-mamsec .ww-mam-pics .ww-bigmed { margin-left: 0 !important; margin-right: 0 !important; }
  .ww-dvmstrip .ww-eyebrow-m, .ww-dvmstrip .ww-eyebrow-m .et_pb_text_inner,
  .ww-dvmstrip .ww-eyebrow-m .et_pb_text_inner p { text-align: left !important; }
}
@media (min-width: 981px) {
  body.page-id-33 .et_pb_row_2.ww-well-head.et_pb_row { padding-bottom: 28px !important; }
}
.ww-asksec .ww-ask-sub .et_pb_text_inner { text-wrap: balance; }

/* ---------- I. contact + dvm ------------------------------------------------------ */
@media (min-width: 981px) {
  .ww-emgsec .ww-body-m p { max-width: 760px; margin-left: auto !important; margin-right: auto !important; }
  .ww-commitsec .ww-body-m, .ww-commitsec .ww-body-m .et_pb_text_inner { text-align: center; }
  .ww-contact-bg .et_pb_column_2_5 { display: flex; flex-direction: column; justify-content: space-between; }
  .ww-contact-bg .et_pb_column_2_5 .ww-infocard { margin-bottom: 0 !important; }
  .ww-contact-split .ginput_container_textarea textarea { min-height: 170px !important; height: 170px !important; }
}
@media (max-width: 980px) {
  .ww-form-title { margin-bottom: 18px !important; }
  body.page-id-59 .ww-acadsec .ww-eqrow + .ww-eqrow { margin-top: 0 !important; padding-top: 0 !important; }
  /* page-scoped: unscoped, this collapsed the group seams on policies + wildlife */
  body.page-id-44 .ww-duosec .ww-duo-row, body.page-id-45 .ww-duosec .ww-duo-row,
  body.page-id-59 .ww-duosec .ww-duo-row { padding-top: 0 !important; padding-bottom: 0 !important; }
  .ww-duosec .ww-duo-row > .et_pb_column:last-child { margin-bottom: 0 !important; }
  .ww-duosec .ww-duo-row + .ww-duo-row > .et_pb_column:first-child { margin-top: 0 !important; }
  body.page-id-123 .ww-duosec .ww-duo-row,
  body.page-id-174 .ww-duosec:not(.ww-dirsec) .ww-duo-row { padding-top: 30px !important; padding-bottom: 30px !important; }
}
@media (max-width: 767px) {
  .ww-contact-bg .ww-eyebrow-m .et_pb_text_inner, .ww-contact-bg .ww-eyebrow-m p { text-align: left !important; }
}
.ww-formcard { box-shadow: 0 26px 60px -24px rgba(156,58,116,.22); }

/* ---------- J. academy / wildlife / found / policies / emergency ------------------- */
.ww-acadintro .et_pb_text_inner p, .ww-acadsec .et_pb_text_inner p,
.ww-rescueintro .et_pb_text_inner p, .ww-commitsec .et_pb_text_inner p,
.ww-foundsec .et_pb_text_inner p { max-width: 820px; margin-left: auto; margin-right: auto; }
/* section I's 760px measure for contact — declared AFTER the 820px rule above, which
   otherwise wins on source order at equal specificity */
body.page-id-44 .ww-commitsec .ww-body-m p { max-width: 760px !important; }
@media (min-width: 981px) {
  .ww-acadintro .et_pb_text_inner p, .ww-rescueintro .et_pb_text_inner p { font-size: 15.5px; }
}
@media (max-width: 980px) {
  .ww-dirsec .ww-duo-row { padding-top: 4px !important; padding-bottom: 4px !important; }
  .ww-dirsec a { font-size: 15px !important; }
  #main-content a.ww-mem-link { display: inline-block; line-height: 1.4; padding-block: 8px; }
}
.ww-wellsec a { text-align: center; }
.ww-subtitle a[href^='tel:'] { white-space: nowrap; }
.ww-subtitle a { font-size: inherit !important; font-family: inherit !important; font-style: inherit !important; }
/* colour alone was the links' only cue (WCAG 1.4.1) */
.ww-subtitle a { text-decoration: underline !important; text-decoration-color: rgba(176,63,132,.45) !important; text-underline-offset: 4px !important; }
body.page-id-123 #main-content .ww-sec:not(.ww-navystrip) .et_pb_text a:not(.et_pb_button):not(.ww-hero-emg),
body.page-id-123 #main-content .ww-sec:not(.ww-navystrip) .et_pb_blurb a:not(.et_pb_button) { color: #B03F84 !important; }
/* ...but the card H3's link must still inherit the heading ink, not that pink */
body.page-id-123 #main-content .ww-sec:not(.ww-navystrip) .et_pb_text h3 a:not(.et_pb_button):not(.ww-hero-emg) { color: inherit !important; }

/* ---------- K. header ------------------------------------------------------------- */
@media (min-width: 981px) and (max-width: 1280px) {
  body.ww-stuck .ww-tbheader .ww-crest-m, body .ww-tbheader .ww-crest-m { height: 56px !important; }
}
/* sticky Call/Book pills painted over the last two nav rows when an accordion was open */
@media (max-width: 980px) {
  .ww-tbheader .ww-navm.et_pb_menu .et_mobile_menu li.ww-menu-tel,
  .ww-tbheader .ww-navm.et_pb_menu .et_mobile_menu li.ww-menu-cta { position: static !important; }
}

/* ---------- L. tap targets (WCAG 2.5.8) ------------------------------------------- */
@media (max-width: 767px) {
  .ww-vcar-dots { gap: 28px !important; }
  .ww-vcar-dot { position: relative; }
  .ww-vcar-dot::after { content: ""; position: absolute; left: 50%; top: 50%; transform: translate(-50%,-50%); width: 36px; height: 44px; }
  .ww-dirsec .et_pb_text_inner p { line-height: 2.5 !important; }
  .ww-dirsec .et_pb_text_inner a { display: inline-block; padding-block: 5px; }
}

/* ---------- M. site-wide layout: Divi's clearfix counted as a flex item ------------
   Every multi-column card row spent one extra gap and under-filled on the right.
   Never do this globally on .et_pb_row — float-based rows still need the clearfix. */
@media (min-width: 981px) {
  .ww-frow::before,.ww-frow::after,.ww-duo-row::before,.ww-duo-row::after,
  .ww-care-cards::before,.ww-care-cards::after,.ww-values-row::before,.ww-values-row::after,
  .ww-intro-row::before,.ww-intro-row::after,.ww-diag-row::before,.ww-diag-row::after,
  .ww-bird-cards::before,.ww-bird-cards::after,.ww-van-row::before,.ww-van-row::after,
  .ww-cons-row::before,.ww-cons-row::after,.ww-rep-row::before,.ww-rep-row::after,
  .ww-mam-row::before,.ww-mam-row::after,.ww-dvm-row::before,.ww-dvm-row::after,
  .ww-navystrip-row::before,.ww-navystrip-row::after,.ww-diff-cards::before,.ww-diff-cards::after,
  .ww-contact-split::before,.ww-contact-split::after { content: none !important; display: none !important; }
  .ww-values-row { gap: 28px; }
  .ww-values-row > .et_pb_column { flex: 1 1 0 !important; width: auto !important; margin-right: 0 !important; }
  /* DVM's 5-card list was 3-up then 2-up. PAGE-SCOPED: Academy also has .ww-acadsec
     et_pb_row_4 and its gap is 28px, not DVM's 36px. */
  body.page-id-59 .ww-sec.ww-acadsec .et_pb_row_4 > .et_pb_column {
    flex: 0 0 calc((100% - 72px)/3) !important; width: calc((100% - 72px)/3) !important; margin-right: 0 !important;
  }
  .ww-footer .ww-wrap { max-width: 1440px; }
  .ww-fbottom-in { max-width: 1440px; margin-left: auto; margin-right: auto; }
}

/* ---------- N. desktop measure + balance ------------------------------------------ */
@media (min-width: 981px) {
  #main-content h2 { text-wrap: balance; }
  .ww-sec.ww-pagehero .ww-subtitle .et_pb_text_inner,
  .ww-sec.ww-pagehero .ww-subtitle .et_pb_text_inner p { max-width: 820px; margin-left: auto; margin-right: auto; }
  body.page-id-176 .ww-sec .et_pb_text_inner > p { max-width: 820px; margin-left: auto; margin-right: auto; }
  body.page-id-43 .ww-sec.ww-pillars-sec .et_pb_row:has(.ww-pillar-num) .ww-list-2col { max-width: 600px !important; width: 600px !important; }
  .ww-toc .et_pb_text_inner { max-width: 860px; margin-left: auto; margin-right: auto; }
  .ww-founder-row > .et_pb_column:first-child { position: sticky; top: 120px; align-self: flex-start; }
}

/* ---------- O. blog: single post rendered as a 214px card left-of-centre ----------- */
@media (min-width: 981px) {
  .ww-blogsec .et_pb_blog_grid { max-width: none !important; width: 100% !important; }
  .ww-blogsec .et_pb_salvattore_content { display: flex !important; flex-wrap: wrap !important; gap: 36px !important; }
  .ww-blogsec .et_pb_salvattore_content > .column { width: calc(33.333% - 24px) !important; float: none !important; margin: 0 !important; }
  .ww-blogsec article.et_pb_post { overflow: hidden !important; }
  .ww-blogsec article.et_pb_post .et_pb_image_container { margin: 0 0 29px !important; }
  .ww-blogsec article.et_pb_post .entry-featured-image-url { display: block !important; width: auto !important; margin: -30px -28px 0 !important; }
  .ww-blogsec article.et_pb_post .entry-featured-image-url img { width: 100% !important; display: block !important; }
}

/* ---------- P. mobile polish ------------------------------------------------------ */
@media (max-width: 767px) {
  .ww-quote-cite .et_pb_text_inner, .ww-quote-cite .et_pb_text_inner p {
    line-height: 1.6 !important; max-width: 300px; margin-left: auto; margin-right: auto;
  }
  .ww-polnotes .ww-frow { gap: 20px !important; }
}

/* ================================================================================
   v100 (8/6): ROUND-3 INDEPENDENT VISUAL GATE. 6/6 judges + 4/6 verifiers completed
   before the run was killed. Verdict: 1 BLOCKER upheld, 10 downgraded to POLISH,
   7 POLISH upheld — 32 page-views judged clean.
   Verifier-corrected forms only; several reporter fixes were proven unsafe and are
   NOT used as written (footer, .ww-link, chips scope, button breakpoint).
   ================================================================================ */

/* --- THE ONE BLOCKER: label overflowed its pill at 320 --------------------------
   "DVM Consultation Support Services" ink ran 11.9px past the button's right border
   onto the page background. Site-wide sweep of every a/button/heading/p at 320 across
   all 17 pages found this as the ONLY overflowing element.
   Breakpoint is 360px, NOT the reporter's 400px — at 400 the rule also fires at
   390/430 where nothing is broken and silently shrinks every pill 51 -> 48.3px. */
@media (max-width: 360px) {
  a.et_pb_button.ww-btnw { white-space: normal !important; padding: 14px 20px !important; line-height: 1.35 !important; }
}

/* --- sticky header: the CTA pill overlapped "Contact" 1281-1319 ------------------
   Measured gap by width: -16 @1281, -8 @1290, 0 @1300, +9 @1310, +18 @1320. Below
   1281 the compact header takes over, so the broken band is exactly bounded. The CTA
   is right-anchored, so shrinking its padding moves its LEFT edge right — that is the
   only lever (transform and ul padding-right were both verified inert). */
@media (min-width: 1281px) and (max-width: 1319px) {
  body.ww-stuck .ww-navm ul.et-menu > li.ww-menu-cta > a {
    padding-left: 10px !important; padding-right: 10px !important; font-size: 11.5px !important;
  }
  body.ww-stuck .ww-navm ul.et-menu > li > a { padding-left: 2px !important; padding-right: 2px !important; }
}

/* --- measure: lists and prose that escaped their section's measure --------------- */
@media (min-width: 981px) {
  /* contact: paragraphs capped at 760 while the bullet lists ran the full 1240 grid */
  .ww-emgsec .ww-frow { max-width: 820px; margin-left: auto; margin-right: auto; }
  /* wildlife: one intro paragraph at ~190 characters per line */
  .ww-beforesec .ww-well-head .et_pb_text_inner > p { max-width: 820px; margin-left: auto; margin-right: auto; }
  /* house-calls: full-width centred sections whose short bullets clustered left.
     The auto margins need !important — `.ww-list ul{margin:0!important}` blocks them. */
  .et_pb_column_4_4 > .ww-list:not(.ww-list-2col) .et_pb_text_inner ul {
    width: max-content; max-width: 640px; margin-left: auto !important; margin-right: auto !important;
  }
  /* dvm: 5 cards as 3-up + 2-up left a card-sized hole. Keeping the uniform card width
     from v98 (Nick asked for equal boxes) and centring the orphan row instead — this
     resolves the hole WITHOUT reintroducing the 55%-wider cards v98 fixed. */
  body.page-id-59 .ww-acadsec .ww-eqrow:has(> .et_pb_column:nth-child(2):last-child) { justify-content: center; }
}

/* --- home pillar row: inboard edge + staggered rule ------------------------------ */
.ww-values .et_pb_text_inner { padding-left: 0; padding-right: 0; }
.ww-values .ww-pillar2 h3 { min-block-size: 2lh; }

/* --- our-team: three CTAs staircased inside equal-height cards ------------------- */
.ww-teamcard { display: flex; flex-direction: column; }
.ww-teamcard > .et_pb_module:last-child { margin-top: auto; }

/* --- footer: link columns stopped ~300px short of the fine-print row -------------
   The reporter's `justify-content:space-between` on the GRID was tested and makes it
   worse (opens a 432px void beside the brand block). Flexing the COLS is the fix. */
@media (min-width: 981px) {
  .ww-footer-cols { flex: 1 1 auto !important; justify-content: space-between !important; }
}

/* --- mobile leading + CTA clearance ---------------------------------------------- */
@media (max-width: 980px) {
  /* CTAs sat at exactly 0px from the paragraph above on 5 + 3 pages */
  .ww-perksm + .et_pb_button_module_wrapper { margin-top: 18px; }
  .ww-ask-sub + .et_pb_button_module_wrapper { margin-top: 18px; }
  .ww-step-body + .ww-list { margin-top: 14px; }
  /* academy: desktop row padding leaked into the stacked layout (20,20,48,20,20) */
  .ww-acadsec .et_pb_row + .et_pb_row { padding-top: 0 !important; }
  /* my own v96 tap-target rule set 2.5 leading here, which made wrapped sentences
     separate as much as distinct entries. 1.7 restores the page rhythm; the links keep
     44px targets via padding rather than leading. */
  .ww-dirsec .ww-body-m, .ww-dirsec .ww-body-m p { line-height: 1.7 !important; }
}
@media (max-width: 767px) {
  .ww-dirsec .et_pb_text_inner p { line-height: 1.7 !important; }
  .ww-dirsec .et_pb_text_inner a { display: inline-block; padding-block: 8px; }
  /* chips and standalone links were set line-height:1 by inline font shorthands.
     Page-scoped: the same attribute selector matches 19 non-wrapping chips on policies. */
  body.page-id-58 a[style*="border-radius:999px"] { line-height: 1.35 !important; padding: 12px 18px !important; }
  /* `.ww-link` was proven UNSAFE — it matches 16 nodes incl. inline links inside the
     emergency hero paragraph, which are inline-block with 10px padding at <=980 and
     grow the paragraph with uneven leading. :only-child isolates the standalone ones. */
  a.ww-link:only-child { line-height: 1.45; }
}

/* ================================================================================
   v101 (8/6): THE TABLET BAND (768-980). Round 3's tablet judge found four blockers
   whose verifier never ran; I reproduced all four myself at both widths before fixing.
   Root cause is systemic: rules written for phones were scoped `max-width:980px`, so
   the whole 768-980 band inherited phone layout inside a desktop-width viewport.
   ================================================================================ */

/* U13 — the membership panel rendered as a 350px phone sliver marooned in the band
   (measured 350px wide with 315px of empty magenta each side at 980). */
@media (min-width: 768px) and (max-width: 980px) {
  .ww-mem .et_pb_row { max-width: 640px !important; }
}

/* U16 — pull-quote attributions were welded to the quote: 0px gap at both 768 and 980,
   against 34px at 1440 and 30px at 390. The credit read as a fourth line of the quote. */
@media (min-width: 768px) and (max-width: 980px) {
  .ww-quote .ww-quote-cite, .ww-quote-sec .ww-quote-cite { margin-top: 22px !important; }
}

/* U15 — Conservation's centring rule was wrapped in `min-width:981px`, so at tablet the
   eyebrow/H2/button stayed on the section axis while every paragraph and list shifted
   left (measured -60px @768, -166px @980). */
@media (max-width: 980px) {
  body.page-id-60 .ww-ask-sub, body.page-id-60 .ww-list, body.page-id-60 .ww-body-m {
    margin-left: auto !important; margin-right: auto !important;
  }
}

/* U14 — every multi-column row collapsed to one full-width stack, so text filled only
   34-36% of its row (About's four credentials in a single column with 62% of the navy
   band empty; DVM's cards holding a ~204px text block inside a 929px card).
   Both `flex-direction:row` and killing Divi's clearfix pseudos are required — with the
   width alone the items still stack. */
@media (min-width: 768px) and (max-width: 980px) {
  .ww-frow.ww-eqrow:not(.ww-duo-row):not(.ww-diff-cards),
  .ww-statsband .ww-frow, .ww-emgsec .ww-frow {
    display: flex !important; flex-direction: row !important; flex-wrap: wrap !important;
    gap: 30px 32px !important;
  }
  .ww-frow.ww-eqrow:not(.ww-duo-row):not(.ww-diff-cards)::before,
  .ww-frow.ww-eqrow:not(.ww-duo-row):not(.ww-diff-cards)::after,
  .ww-statsband .ww-frow::before, .ww-statsband .ww-frow::after,
  .ww-emgsec .ww-frow::before, .ww-emgsec .ww-frow::after { display: none !important; content: none !important; }
  .ww-frow.ww-eqrow:not(.ww-duo-row):not(.ww-diff-cards) > .et_pb_column,
  .ww-statsband .ww-frow > .et_pb_column,
  .ww-emgsec .ww-frow > .et_pb_column {
    flex: 0 0 calc(50% - 16px) !important; width: calc(50% - 16px) !important;
    max-width: calc(50% - 16px) !important; margin: 0 !important;
  }
}

/* ================================================================================
   v102 (8/6): LAUNCH. Two visitor-facing DRAFT banners were still rendering live:
     /pet-parent-academy/  "DRAFT COPY — Academy topic cards proposed for Dr. Wild's
                            review"  (a 243px section, plainly legible)
     /blog/                "DRAFT — starter post and blog framing pending Dr.
                            Zonenshine's voice"
   `.ww-flag` (the inline builder to-do markers) has been display:none for months, but
   `.ww-draftflag` is a SECTION class that never got the same treatment. Hiding rather
   than deleting keeps the sections in the Divi builder so the to-dos are not lost —
   remove this rule when the copy is signed off.
   ================================================================================ */
.ww-sec.ww-draftflag { display: none !important; }

/* --- v103 (8/7): skip-to-content link -------------------------------------------
   Visually hidden until focused, then a real pink pill at the top-left. Divi emits
   no <main>, so it targets #main-content, which exists on every page (verified 17/17). */
.ww-skip {
  position: absolute; left: 8px; top: -60px; z-index: 100000;
  background: #C94D97; color: #FFF7EA;
  font: 700 14px/1 'Jost', sans-serif; letter-spacing: .04em;
  padding: 14px 20px; border-radius: 999px; text-decoration: none;
  box-shadow: 0 10px 26px -8px rgba(74,13,44,.45);
  transition: top .18s ease;
}
.ww-skip:focus, .ww-skip:focus-visible {
  top: 8px; outline: 3px solid #1B2F5C; outline-offset: 3px;
}
@media (prefers-reduced-motion: reduce) { .ww-skip { transition: none; } }

/* --- v104 (8/7, LAUNCH): hide the contentless heading-only sections -------------
   The pre-launch gate found five sections that render as a heading over empty
   whitespace — content the client still owes. Measured: /pet-parent-academy/ lost
   1,295px of heading-over-nothing (doc 6777 -> 5482, sections 12 -> 8) and
   /house-calls/ 379px (11043 -> 10664). Every one of the 5 matched elements is
   contentless; `.ww-acadsec` was deliberately NOT used as it matches 15 sections
   site-wide including Academy's POPULATED topic-card grid.
   Remove this rule as each piece of content lands. The two nav items that pointed
   into these sections were repointed in the same change so nothing dead-ends. */
.ww-featarticles, .ww-medvideos, .ww-howtovideos, .ww-webinars,
body.page-id-178 #videos { display: none; }

/* --- v105 (8/7): Memberships brought onto the site's standard page treatment -----
   Nick: "the Concierge Medicine page looks off — header and styling need to match
   the rest of the site." It was the only page still on a bespoke treatment: the sole
   dark-plum hero (all 15 other interior pages are cream/navy/pink), a gold-hairline
   framed panel used nowhere else, gold kickers instead of the system pink, and — per
   the audit — ZERO wave dividers on any of its 7 sections while every other page had
   them. Post content now uses .ww-pagehero and carries 6 waves; this supplies the
   clearance, since the page-45 rhythm rules were written when it had no top waves. */
@media (min-width: 981px) {
  body.page-id-45 .ww-sec:has(> .et_pb_top_inside_divider) { padding-top: 160px !important; }
}
@media (min-width: 768px) and (max-width: 980px) {
  body.page-id-45 .ww-sec:has(> .et_pb_top_inside_divider) { padding-top: 160px !important; }
}
@media (max-width: 767px) {
  body.page-id-45 .ww-sec:has(> .et_pb_top_inside_divider) { padding-top: 120px !important; }
}
/* the veil and frame rules now target classes this page no longer carries; the micro
   line keeps its own class for the type ramp but takes the system body ink */
body.page-id-45 .ww-memhero-micro .et_pb_text_inner,
body.page-id-45 .ww-memhero-micro .et_pb_text_inner p {
  color: var(--ww-ink-body, #2E2044) !important;
  font-family: var(--wwb-font-body, 'Jost', sans-serif) !important;
  font-size: 15.5px !important; letter-spacing: .04em !important; text-transform: none !important;
}

/* --- v106 (8/7): photo bands added to the 7 pages that had no imagery -----------
   Sources are 3:2 (the subjects are portrait-ish, so a 2.1:1 band crop cut the animal
   out entirely — verified on the first pass). At full 1240px width a 3:2 image renders
   827px tall and swamps the page, so these are held to the site's own 820px measure
   and given the card radius, reading as editorial photography rather than a hero band.
   The four pre-existing 2.1:1 bands (services/dvm/academy/wild) keep their full-bleed
   treatment — they are a different, wider crop and are excluded by the row class. */
.ww-photoband .ww-photoband-row { max-width: 820px !important; }
.ww-photoband .ww-photoband-row .ww-cons-img-m img {
  width: 100%; height: auto; display: block;
  border-radius: var(--wwb-card-radius, 26px);
  box-shadow: var(--wwb-card-shadow, 0 26px 60px -24px rgba(156,58,116,.22));
}
@media (max-width: 980px) {
  .ww-photoband .ww-photoband-row { max-width: none !important; }
}

/* --- v107 (8/7): .ww-mem CTA band — WCAG AA fix + Memberships-page scoping --------
   Measured live: band bg #C94D97 vs white = 4.21:1. Passes for the 54px H2 and 28px
   H4s (large text, needs 3.0) but FAILS the 4.5:1 small-text threshold on the eyebrow,
   the "BY APPLICATION" micro, all three 15px perk paragraphs, the button label, and
   the secondary link — six elements, on all five pages carrying the band (home,
   services, academy, house-calls, testimonials).
   Fix darkens the BAND ONLY to #BE4590 (4.73:1 with white). The brand pink #C94D97
   stays put everywhere else — this is a surface, not a palette change. */
.ww-sec.ww-mem { background-color: #BE4590 !important; }
.ww-sec.ww-mem .ww-mem-micro,
.ww-sec.ww-mem .ww-mem-eyebrow,
.ww-sec.ww-mem .ww-mem-eyebrow > div,
.ww-sec.ww-mem .ww-mem-micro > div { color: #FFFFFF !important; }          /* was 255/.92 → 4.21 */
.ww-sec.ww-mem .ww-mem-link { color: #FFFFFF !important; }                  /* was #FBEDE2 → 3.67 */
.ww-sec.ww-mem .et_pb_button.ww-btnw { color: #BE4590 !important; }         /* pink-on-white 4.21 → 4.73 */
.ww-sec.ww-mem .et_pb_button.ww-btnw:hover { color: #A63A7E !important; }

/* On the Memberships page itself both band links pointed at this same page.
   The secondary "View membership details →" is redundant here and is hidden;
   the primary button is repointed to /contact/ by the scoped handler in functions.php. */
body.page-id-45 .ww-sec.ww-mem .ww-mem-link { display: none !important; }

/* --- v108 (8/7): finish the .ww-mem AA fix — specificity + alpha ------------------
   Two misses in v107, both found by measurement:
   1. The link rule lost. An earlier fix at "#main-content .ww-mem .et_pb_text
      a.ww-mem-link" (1-3-2, !important) outranks a 0-3-0 !important rule, so the
      cream #FBEDE2 survived: 4.12:1 on the new band. Re-stated at 1-4-2.
   2. The eyebrow/micro are rgba(255,255,255,.92), and translucent text does NOT
      composite to white — over #BE4590 it lands at rgb(250,240,246) = 4.24:1, still
      short of 4.5. Alpha is forced to 1 rather than nudged. */
#main-content .ww-sec.ww-mem a.ww-mem-link,
#main-content .ww-sec.ww-mem .et_pb_text a.ww-mem-link,
#main-content .ww-sec.ww-mem .ww-mem-linkm a,
#main-content .ww-sec.ww-mem a.ww-mem-link:not(.et_pb_button) {
  color: #FFFFFF !important;
}
#main-content .ww-sec.ww-mem .ww-mem-eyebrow,
#main-content .ww-sec.ww-mem .ww-mem-eyebrow p,
#main-content .ww-sec.ww-mem .ww-mem-eyebrow .et_pb_text_inner,
#main-content .ww-sec.ww-mem .ww-mem-eyebrow .et_pb_text_inner p,
#main-content .ww-sec.ww-mem .ww-eyebrow-m .et_pb_text_inner,
#main-content .ww-sec.ww-mem .ww-eyebrow-m .et_pb_text_inner p,
#main-content .ww-sec.ww-mem .ww-mem-micro,
#main-content .ww-sec.ww-mem .ww-mem-micro p,
#main-content .ww-sec.ww-mem .ww-mem-micro .et_pb_text_inner,
#main-content .ww-sec.ww-mem .ww-mem-micro .et_pb_text_inner p,
#main-content .ww-sec.ww-mem .ww-perk p {
  color: #FFFFFF !important; opacity: 1 !important;
}

/* --- v109 (8/7): the watermark was the real contrast culprit ----------------------
   v107/v108 fixed the flat colour, but the alpha-aware contrast tool (contrast.cjs v3)
   pixel-samples through the section's background IMAGE — the "whisper silhouette"
   watermark — and that image LIGHTENS the pink locally. Sampled backdrops came back
   #C25097–#C55B95 against a #BE4590 base, dropping white text to 3.96–4.30:1.
   Darkening the base further would have to over-correct for the worst pixel and would
   mute the brand pink. background-blend-mode: multiply instead makes the watermark
   mathematically incapable of lightening: result = image x base, so no pixel in the
   band can exceed the base luminance, and #BE4590 vs white = 4.73:1 holds everywhere.
   Same treatment for .ww-cons, which carries the same watermark over the same pink. */
.ww-sec.ww-mem,
.ww-sec.ww-cons {
  background-color: #BE4590 !important;
  background-blend-mode: multiply !important;
}
/* .ww-cons's secondary link was warm cream on pink: 3.96:1. */
#main-content .ww-sec.ww-cons a.ww-cons-link,
#main-content .ww-sec.ww-cons .et_pb_text a:not(.et_pb_button),
#main-content .ww-sec.ww-cons a.ww-mem-link { color: #FFFFFF !important; }

/* Home hero kicker at <=767: #B03F84 on the warm gold-cream #FBE5BB measured 4.37:1.
   Every other kicker in the site sits on a lighter ground and clears 4.5 comfortably,
   so this is scoped to the one hero rather than moved in the --wwb-kicker-ink token. */
@media (max-width: 767px) {
  body.home .ww-hero .ww-eyebrow-m,
  body.home .ww-hero .ww-eyebrow-m p,
  body.home .ww-hero .ww-eyebrow-m span,
  body.home .ww-hero .ww-eyebrow-m .et_pb_text_inner,
  body.home .ww-hero .ww-eyebrow-m .et_pb_text_inner p { color: #A93B7E !important; }
}

/* --- v110 (8/7): land the three AA fixes v109 aimed at and missed -----------------
   Measurement said v109 changed nothing. Three separate reasons, all cascade:

   1. .ww-mem — the band colour was already right; the backdrop under the text is
      .ww-mem-frame, an rgba(255,255,255,.06) wash. 6% white over #BE4590 composites to
      exactly rgb(194,80,151) = #C25097, the value the pixel sampler kept reporting.
      The frame's hairline border is what actually reads as a panel — the wash is
      invisible at 6% — so the wash goes and the border stays. Text now sits on the
      base colour: 4.73:1.
   2. .ww-cons — Divi's et-core-unified deferred stylesheet carries
      ".et_pb_section_6.et_pb_section { background-color:#C94D97 !important }" and loads
      AFTER ww-system.css, so a 0-2-0 !important rule of mine lost on order. Re-stated
      with #main-content (1-3-0) so it wins on specificity regardless of order.
      Its "Read the stories" link lost a different way: the existing cream rule is
      1-5-1 and mine was 1-4-1. Matched exactly and placed later.
   3. The home hero "kicker" is not a kicker — it is SPAN.ww-h1-lead INSIDE the H1, so
      the .ww-eyebrow-m selector never matched anything. Only the <=767 case measured
      short (4.37 on the warm cream #FBE5BB); desktop is left pixel-identical. */
#main-content .ww-sec.ww-mem .ww-mem-frame,
#main-content .ww-sec.ww-mem .et_pb_row.ww-mem-frame { background-color: transparent !important; }

body #main-content .et_pb_section.ww-cons { background-color: #BE4590 !important; }
#main-content .ww-sec.ww-cons .et_pb_text_inner a.ww-link:not(.et_pb_button) { color: #FFFFFF !important; }

@media (max-width: 767px) {
  body.home .ww-hero .ww-h1-lead,
  body.home .ww-hero h1 .ww-h1-lead { color: #A93B7E !important; }
}

/* --- v111 (8/7): the last AA hit — corner glows blanket the band at mobile --------
   .ww-mem::before / ::after are 760x420 and 520x520 blurred radials pinned to the
   band's corners, authored when this band was dark plum. On the pink they lift the
   backdrop: rgba(227,190,127,.13) gold + rgba(198,135,174,.10) mauve composite
   #BE4590 up to rgb(193,81,142) = 4.34:1 under white 13px type.
   At 1440 they stay in the corners and centred text clears them, which is why only
   the 390 measurement failed. At 390 a 760px-wide glow simply covers the whole band.
   Retired below 980px; the desktop treatment is untouched. */
@media (max-width: 980px) {
  .ww-sec.ww-mem::before,
  .ww-sec.ww-mem::after { display: none !important; }
}

/* --- v112 (8/7): body copy left-aligns on phones ---------------------------------
   Measured at 390px across all 17 pages: 56 paragraphs of THREE OR MORE lines are
   centre-aligned, against 22 of one or two lines. Centring a 3-line standfirst at a
   700px desktop measure is elegant; the same copy at 390px becomes an 8-line block
   ragged on both edges, which is what the Concierge page looks like on a phone.
   Per-paragraph switching was rejected: modules routinely contain BOTH lengths
   (DVM 10 short + 13 long, House Calls 6 + 13), so mixing alignment inside one module
   reads worse than a uniform rule.
   The rule adopted is therefore compositional, not per-paragraph: on phones HEADINGS,
   KICKERS, SUBTITLES, PULL QUOTES and the CTA band's perk cluster stay centred, and
   flowing BODY COPY goes left. Desktop and tablet are untouched.
   Scoped to .ww-body-m carrying Divi's own centring class so nothing else can be hit. */
@media (max-width: 767px) {
  #main-content .ww-sec .ww-body-m.et_pb_text_align_center:not(.ww-subtitle):not(.ww-perk):not(.ww-well-head):not(.ww-eyebrow-m):not(.ww-memhero-micro):not(.ww-link-m),
  #main-content .ww-sec .ww-body-m.et_pb_text_align_center:not(.ww-subtitle):not(.ww-perk):not(.ww-well-head):not(.ww-eyebrow-m):not(.ww-memhero-micro):not(.ww-link-m) .et_pb_text_inner,
  #main-content .ww-sec .ww-body-m.et_pb_text_align_center:not(.ww-subtitle):not(.ww-perk):not(.ww-well-head):not(.ww-eyebrow-m):not(.ww-memhero-micro):not(.ww-link-m) p,
  #main-content .ww-sec .ww-body-m.et_pb_text_align_center:not(.ww-subtitle):not(.ww-perk):not(.ww-well-head):not(.ww-eyebrow-m):not(.ww-memhero-micro):not(.ww-link-m) li {
    text-align: left !important;
  }
}

/* --- v113 (8/7): the three routes body copy gets centred by ----------------------
   v112 only caught modules carrying Divi's own .et_pb_text_align_center AND .ww-body-m.
   Measurement afterwards found six long paragraphs still centred at 390 by two other
   routes: Contact's .ww-emgsec/.ww-commitsec get centring from CSS with no Divi class,
   and Emergency's .ww-oncallsec / Wildlife's .ww-rescueintro carry the Divi class on a
   module with no .ww-body-m. Both are ordinary flowing body copy — the on-call one is
   six lines of urgent instruction, which is the worst possible thing to centre on a
   phone. Deliberately NOT generalised to every .et_pb_text: that would drag kickers and
   headings left too, and this stylesheet already has one blanket rule whose eight
   :not() clauses score (0,11,0) and can now only be overridden with an ID. */
@media (max-width: 767px) {
  #main-content .ww-sec .ww-body-m:not(.ww-subtitle):not(.ww-perk):not(.ww-well-head):not(.ww-eyebrow-m):not(.ww-memhero-micro):not(.ww-link-m),
  #main-content .ww-sec .ww-body-m:not(.ww-subtitle):not(.ww-perk):not(.ww-well-head):not(.ww-eyebrow-m):not(.ww-memhero-micro):not(.ww-link-m) .et_pb_text_inner,
  #main-content .ww-sec .ww-body-m:not(.ww-subtitle):not(.ww-perk):not(.ww-well-head):not(.ww-eyebrow-m):not(.ww-memhero-micro):not(.ww-link-m) p,
  #main-content .ww-sec .ww-body-m:not(.ww-subtitle):not(.ww-perk):not(.ww-well-head):not(.ww-eyebrow-m):not(.ww-memhero-micro):not(.ww-link-m) li,
  #main-content .ww-sec.ww-oncallsec .et_pb_text.et_pb_text_align_center:not(.ww-eyebrow-m):not(.ww-link-m) .et_pb_text_inner > p,
  #main-content .ww-sec.ww-rescueintro .et_pb_text.et_pb_text_align_center:not(.ww-eyebrow-m):not(.ww-link-m) .et_pb_text_inner > p {
    text-align: left !important;
  }

  /* the Emergency "After Hours" kicker is a .ww-eyebrow-m NESTED inside a .ww-body-m
     module, so excluding the module by class cannot reach it — re-centre the leaf. */
  /* The class is repeated deliberately to raise specificity to (1,6,1) so this beats the
     v112 rule above, which scores (1,9,1)... no: it beats the rules that actually matched.
     NOTE for future edits — an earlier attempt doubled "#main-content" instead, which
     matches NOTHING, because a duplicated id selector requires two NESTED elements each
     carrying that id and there is only one. Repeat a CLASS, never an id. */
  #main-content .ww-sec .ww-eyebrow-m.ww-eyebrow-m.ww-eyebrow-m,
  #main-content .ww-sec .ww-eyebrow-m.ww-eyebrow-m.ww-eyebrow-m p,
  #main-content .ww-sec .ww-eyebrow-m.ww-eyebrow-m.ww-eyebrow-m .et_pb_text_inner,
  #main-content .ww-sec .ww-memhero-micro.ww-memhero-micro.ww-memhero-micro,
  #main-content .ww-sec .ww-memhero-micro.ww-memhero-micro.ww-memhero-micro p,
  #main-content .ww-sec .ww-memhero-micro.ww-memhero-micro.ww-memhero-micro .et_pb_text_inner { text-align: center !important; }
}

/* --- v114 (8/7): correct v112/v113's collateral, and finish the job --------------
   A before/after diff (toggling my own rules off in the CSSOM and re-reading every
   computed textAlign) showed v112+v113 moved 155 elements: 122 were the 3+ line body
   copy I meant to hit, 33 were 1-2 line elements. Most of those 33 are fine and in
   fact better left-aligned ("Consultations may include:" leading into a left-aligned
   list). Three were genuine regressions; they are now excluded inside v112/v113's own
   :not() chain rather than re-centred by a later rule — a later rule LOST, because the
   v112 selector scores (1,6,0) and a plain re-centring rule only (1,3,0). Excluded:
     .ww-eyebrow-m         a KICKER on Emergency, which must stay centred above its
                           centred heading;
     .ww-memhero-micro     the Memberships hero micro-line — it only got caught because
                           the v105 pass gave it .ww-body-m alongside its own class;
     .ww-link-m            standalone link lines, which are centred CTAs not body copy.
   Also finishing two things measurement turned up:
     * v113's .ww-oncallsec rule used "> p" (direct child) and the paragraphs are nested
       deeper, so it moved only the link and left six lines of urgent emergency
       instruction centred. Descendant selector now, with link-only paragraphs excluded.
     * .ww-acadintro / .ww-acadsec on Academy and Found-a-Wild-Animal centre their body
       copy from a module with no ww- class at all — including a 7-line paragraph.
   DELIBERATELY LEFT CENTRED (designed clusters, not flowing copy): .ww-perksm in the
   pink CTA band, .ww-pillars-in in the home values strip, and .ww-ask-sub standfirsts. */
@media (max-width: 767px) {
  /* :not(.ww-eyebrow-m) on the MODULE is essential — without it this rule was the one
     dragging Emergency's "After Hours" kicker left, and it outranked every attempt to
     re-centre the kicker afterwards. Exclude at the source, do not fight it downstream. */
  #main-content .ww-sec.ww-oncallsec .et_pb_text:not(.ww-eyebrow-m):not(.ww-link-m) .et_pb_text_inner p:not(:has(> a:only-child)),
  #main-content .ww-sec.ww-acadintro .et_pb_text:not(.ww-eyebrow-m):not(.ww-link-m) .et_pb_text_inner p:not(:has(> a:only-child)),
  #main-content .ww-sec.ww-acadsec  .et_pb_text:not(.ww-eyebrow-m):not(.ww-link-m) .et_pb_text_inner p:not(:has(> a:only-child)) {
    text-align: left !important;
  }
}

/* --- v115 (8/7): normalise the photo bands after moving them up the page ----------
   Moving the bands out of the page tail exposed three defects that were invisible
   while they sat at the bottom:
   1. THE IMAGE GREW AS THE VIEWPORT SHRANK. v106 lifted the 820px cap below 980px, so
      the band measured 820px at 1440 but 932px at 980 — wider on a tablet than on a
      desktop. The cap now holds at every width; below ~860px the row is naturally
      narrower than the cap anyway, so nothing is over-constrained on a phone.
   2. PADDING-TOP COLLAPSED TO 0 in the 768-980 band on five of the seven pages. These
      bands used to carry a top wave, which earned them 160px from the
      :has(> .et_pb_top_inside_divider) rule; the waves were removed as part of the move
      because each is now white-on-white, and the fallback in that window is 0. The band
      sat flush against the section above it.
   3. DESKTOP PADDING VARIED 54 / 112 / 160 across the seven pages, inherited from
      whatever page-scoped block each one happened to fall under.
   Bands that still legitimately carry a wave (Hospital Policies, Testimonials — both sit
   directly under the hero) are excluded, so the 160/120 clearance rule keeps owning them. */
#main-content .ww-sec.ww-photoband .ww-photoband-row { max-width: 820px !important; }

#main-content .ww-sec.ww-photoband:not(:has(> .et_pb_top_inside_divider)) {
  padding-top: 112px !important;
  padding-bottom: 112px !important;
}
@media (min-width: 768px) and (max-width: 980px) {
  #main-content .ww-sec.ww-photoband:not(:has(> .et_pb_top_inside_divider)) {
    padding-top: 96px !important;
    padding-bottom: 96px !important;
  }
}
@media (max-width: 767px) {
  #main-content .ww-sec.ww-photoband:not(:has(> .et_pb_top_inside_divider)) {
    padding-top: 72px !important;
    padding-bottom: 72px !important;
  }
}

/* --- v116 (8/7): confirmed findings from the Memberships visual review -------------
   Every item below survived an adversarial verifier that reproduced the measurement
   independently; three further findings were refuted and are not acted on. Selectors
   are keyed to authored classes rather than Divi's auto-numbered .et_pb_text_N /
   .et_pb_row_N, because those renumber whenever a section moves — which is exactly the
   trap that nearly shipped this round. */

/* 1. THE SEAM THE CLIENT WAS SEEING. .ww-mem is global module 36 and its top wave is
      filled #fdf0f6 — exact on Home, where the section above ends on #FDF0F6. On this
      page the section above is .ww-quote-sec, whose gradient ends #FDF6F1, leaving a
      0px hard step measured at CIE dE76 6.15 across 1341 of 1440 columns. For scale, a
      deliberately visible wave edge on this page measures 11.25 — so this false line
      carries over half the contrast of a real divider and reads as a second, flat one.
      Fixed at the root by ending the gradient where the shared band expects it. Scoped
      to page 45: .ww-quote-sec is also on About, which has no membership band below. */
body.page-id-45 .ww-sec.ww-quote-sec { background: linear-gradient(180deg,#FFFFFF 0%, #FDF0F6 100%); }

/* 2. One of the five .ww-intro-centered blocks was missed when the measure was set, so
      "Continuity of Care" ran 860px against 740px everywhere else — a 120px step in the
      same component. Keyed on the component so a sixth instance cannot drift again. */
@media (min-width: 981px) {
  body.page-id-45 .ww-body-m.ww-intro-centered {
    max-width: 740px !important; margin-left: auto !important; margin-right: auto !important;
  }
}

/* 3. The Record Review section is the only prose section on the page that pairs a
      CENTRED h2 with LEFT body copy; every sibling section centres both. The two-column
      bullet list keeps its left edge so the list rag is preserved. Mobile is excluded —
      body copy is deliberately left-set there (v112). */
@media (min-width: 768px) {
  body.page-id-45 .ww-rr-body .ww-body-m,
  body.page-id-45 .ww-rr-body .ww-body-m p { text-align: center !important; }
}

/* 4. 768-980: the benefit-card text carried a 600px cap inside a 932px card with
      margin-right taking the slack, leaving 262px (30%) dead on the right of every
      card. The cards fill their box in that window instead. */
@media (max-width: 980px) {
  body.page-id-45 .ww-duosec .ww-ben-r1 .ww-duo-h3,
  body.page-id-45 .ww-duosec .ww-ben-r2 .ww-duo-h3,
  body.page-id-45 .ww-duosec .ww-rr-body .ww-body-m {
    max-width: 100% !important; margin-left: 0 !important; margin-right: 0 !important;
  }
}

/* 5. A 300px list cap tuned at 390 (where the content box is 296-342px, so it is inert)
      leaked across the whole <=767 band: at 744px it clamped list cards to 300px and
      centred them while their non-list siblings ran 600px flush left — left edges 175px
      apart inside the same stack. Lists follow their container, as they do at 768+. */
@media (max-width: 767px) {
  body.page-id-45 .ww-list, body.page-id-60 .ww-list { max-width: none !important; }
  body.page-id-45 .ww-duocard .ww-list {
    max-width: 600px !important; margin-left: 0 !important; margin-right: auto !important;
  }
}

/* 6. The CTA band's frame is content-top-anchored: 65px of clear space above the kicker
      against 137px below the button inside the same 1px border. The cause is a vestigial
      Divi clearfix ::after acting as a flex item plus the button wrapper's own bottom
      margin — not the padding, which is already a symmetric 64/64 (32/32 mobile). The
      causes are removed rather than compensated with a magic number, so the frame reads
      symmetric at BOTH breakpoints. Applied to the band itself: it is a global module
      and the same phantom is on all six pages that carry it. */
.ww-sec.ww-mem .ww-mem-frame::after { display: none !important; }
.ww-sec.ww-mem .et_pb_button_module_wrapper { margin-bottom: 0 !important; }
.ww-sec.ww-mem .et_pb_button { margin-bottom: 0 !important; }

/* 7. The band's kicker->headline gap is 30px desktop / 22px mobile against the system's
      flat 14px at both breakpoints (verified on the hero and the "About" kicker). */
.ww-sec.ww-mem .ww-mem-eyebrow { margin-bottom: 0 !important; }
.ww-sec.ww-mem .ww-mem-h2 { margin-top: 14px !important; }

/* --- v117 (8/7): JOURNAL / SINGLE-POST SYSTEM ------------------------------------
   /welcome-to-wandering-wings/ is the site's only post and it does NOT use the Divi
   builder (_et_pb_use_builder is unset), so it renders through Divi's stock single.php
   rather than through any of the 17 page layouts. Future posts will be written by the
   practice in the Classic Editor (classic-editor 1.7.0 is active), which means NO
   Gutenberg .wp-block-* classes will ever appear — this layer targets TinyMCE's bare
   h2/h3/ul/ol/blockquote and the classic .alignleft/.aligncenter/.wp-caption markup.
   Everything is scoped to body.single-post, a class no page carries, so the 17 verified
   page layouts cannot be reached by any rule below.

   Why a template layer rather than hand-building this one post in Divi: setting the
   builder flag turns post_content into shortcode soup that Gabby's team could never
   edit again, and it would do nothing for post #2. This costs less and scales. */

/* A. THE OFF-CENTRE COLUMN — the defect you can feel but not name.
      Divi core ships `.et_right_sidebar #left-area{float:left;padding-right:5.5%}` at
      (1,1,0). The body really does carry et_right_sidebar, but the Theme Builder footer
      means there is NO #sidebar element on the page — so that 5.5% is reserving space
      for something that does not exist. Measured live: container 820px, padding-right
      45.09px, entry-content 775px sitting 22.5px LEFT of optical centre. */
body.single-post #left-area { padding-right: 0 !important; padding-left: 0 !important; float: none !important; }
body.single-post #sidebar { display: none !important; }

/* B. ARTICLE HEAD. Structure verified: article.et_pb_post > .et_post_meta_wrapper:first-child
      > h1 + featured img, then .entry-content, then a SECOND, empty .et_post_meta_wrapper.
      The kicker is a ::before because there is no server-side hook above the h1 without
      editing a template — accepted knowingly: it is decorative, so being unselectable and
      untranslatable is fine, but it must read true of every post forever since it cannot
      vary. #B03F84 not #C94D97: the brand pink measures 3.67:1 here and fails AA. */
body.single-post article.et_pb_post > .et_post_meta_wrapper:first-child::before {
  content: "FROM THE PRACTICE";
  display: block; font: 700 12px/1.4 'Jost', sans-serif;
  letter-spacing: .22em; text-transform: uppercase; color: #B03F84; margin: 0 0 12px;
}
body.single-post h1.entry-title {
  font: 500 46px/1.12 'Cormorant Garamond', serif; color: var(--ww-navy, #1B2F5C);
  margin: 0 0 10px; padding: 0; max-width: 700px; text-wrap: balance;
}
/* Divi core ships `#left-area .post-meta{font-size:14px;padding-bottom:15px}` at (1,0,1),
   which beats the theme's own (0,3,1) rule — hence the #left-area here. */
body.single-post #left-area .post-meta {
  font: 400 13px/1.5 'Jost', sans-serif; letter-spacing: .06em;
  color: #6B5B72; padding: 0 0 26px; margin: 0;
}
body.single-post #left-area .post-meta a { color: #6B5B72; text-decoration: none; }
body.single-post .et_post_meta_wrapper:first-child img,
body.single-post .entry-featured-image-url img {
  border-radius: 22px; box-shadow: 0 26px 60px -24px rgba(156,58,116,.22);
  margin: 8px 0 40px; width: 100%; height: auto;
}
body.single-post article.et_pb_post > .et_post_meta_wrapper:last-child:empty { display: none; }

/* C. THE PROSE LAYER — the actual template investment. #left-area is LOAD-BEARING in
      every selector: Divi core ships `#left-area ul, .entry-content ul {…}` and the ol
      equivalent at (1,0,1), which a `.single-post .entry-content ul` rule at (0,2,1)
      loses to on id count. Two tracks only: text 600px, media breaks out to the full
      820px container. Measure: Jost's average advance is ~0.4697em, so 600px at 18px is
      ~71 characters per line, against a 66-72 target (the old 775px at 16.5px was ~100). */
body.single-post #left-area .entry-content {
  font: 400 18px/1.72 'Jost', sans-serif; color: var(--ww-ink, #2E2044);
}
body.single-post #left-area .entry-content > * {
  max-width: 600px; margin-left: auto; margin-right: auto;
}
/* Every per-element margin below MUST use `auto` for left/right. A `margin: 0 0 1.35em`
   shorthand silently resets the auto margins set just above, which left paragraphs and
   headings flush-left at centre 610 while lists and the tail centred at 720 — two
   different axes in one column. Caught by measurement, not by eye. */
body.single-post #left-area .entry-content > p { margin: 0 auto 1.35em; }
body.single-post #left-area .entry-content > p:first-of-type {
  font-size: 21px; line-height: 1.62; color: #241F2E;
}
body.single-post #left-area .entry-content h2 {
  font: 500 32px/1.2 'Cormorant Garamond', serif; color: #173268;
  margin: 52px auto 16px; padding: 0; max-width: 600px; text-wrap: balance;
}
body.single-post #left-area .entry-content h3 {
  font: 600 23px/1.28 'Cormorant Garamond', serif; color: #173268; margin: 36px auto 12px; padding: 0;
}
body.single-post #left-area .entry-content h4 {
  font: 700 14px/1.4 'Jost', sans-serif; letter-spacing: .16em; text-transform: uppercase;
  color: #B03F84; margin: 32px auto 10px; padding: 0;
}
body.single-post #left-area .entry-content ul,
body.single-post #left-area .entry-content ol {
  padding: 0 0 0 2px; margin: 0 auto 1.5em; list-style: none;
}
body.single-post #left-area .entry-content ol { counter-reset: wwp; }
body.single-post #left-area .entry-content ul > li,
body.single-post #left-area .entry-content ol > li {
  position: relative; padding-left: 26px; margin: 0 0 12px; line-height: 1.68;
}
body.single-post #left-area .entry-content ul > li::before {
  content: ""; position: absolute; left: 4px; top: .62em;
  width: 7px; height: 7px; border-radius: 50%; background: #C94D97;
}
body.single-post #left-area .entry-content ol > li::before {
  counter-increment: wwp; content: counter(wwp) ".";
  position: absolute; left: 0; top: 0; font-weight: 600; color: #B03F84;
}
body.single-post #left-area .entry-content blockquote {
  margin: 34px auto; padding: 4px 0 4px 22px; border-left: 3px solid #E9C7DC;
  font: 400 italic 22px/1.5 'Cormorant Garamond', serif; color: #173268;
}
body.single-post #left-area .entry-content a {
  color: #B03F84; text-decoration: underline; text-underline-offset: 3px;
  text-decoration-thickness: 1px;
}
body.single-post #left-area .entry-content a:hover { color: var(--ww-navy, #1B2F5C); }
body.single-post #left-area .entry-content hr {
  max-width: 600px; height: 1px; border: 0; background: #F0DDD0; margin: 44px auto;
}
/* Classic-editor media. No .wp-block-image will ever exist here. */
body.single-post #left-area .entry-content img { border-radius: 16px; height: auto; }
body.single-post #left-area .entry-content img.size-full,
body.single-post #left-area .entry-content .wp-caption.alignnone,
body.single-post #left-area .entry-content figure { max-width: 820px; }
body.single-post #left-area .entry-content .aligncenter,
body.single-post #left-area .entry-content img.aligncenter { display: block; margin: 30px auto; }
body.single-post #left-area .entry-content img.alignleft  { float: left;  margin: 8px 28px 20px 0; max-width: 320px; }
body.single-post #left-area .entry-content img.alignright { float: right; margin: 8px 0 20px 28px; max-width: 320px; }
body.single-post #left-area .entry-content .wp-caption-text,
body.single-post #left-area .entry-content figcaption {
  font: 400 13.5px/1.5 'Jost', sans-serif; color: #6B5B72; text-align: center;
  margin: 10px auto 0; max-width: 600px;
}

/* D. POST TAIL. Divi closes the article with a second, EMPTY .et_post_meta_wrapper, so
      today the reader hits the global footer with no way back and no next step. The
      markup is injected server-side by ww_post_tail() in functions.php — crawlable, no
      flash. It reuses the existing .ww-btnw button rather than inventing one. */
body.single-post .entry-content .ww-posttail { margin: 52px auto 0; max-width: 600px; }
body.single-post .ww-posttail-rule { height: 1px; background: #F0DDD0; margin: 0 0 26px; }
body.single-post .ww-posttail-in { display: flex; align-items: center; justify-content: space-between; gap: 20px; flex-wrap: wrap; }
body.single-post .entry-content a.ww-posttail-back {
  font: 600 13px/1 'Jost', sans-serif; letter-spacing: .12em; text-transform: uppercase;
  color: #B03F84 !important; text-decoration: none !important;
}
body.single-post .entry-content a.ww-posttail-back:hover { color: var(--ww-navy, #1B2F5C) !important; }
body.single-post .entry-content a.et_pb_button.ww-btnw { text-decoration: none !important; }

/* E. MOBILE */
@media (max-width: 980px) {
  body.single-post #content-area { padding: 140px 0 48px; }
  body.single-post h1.entry-title { font-size: 32px; }
  body.single-post article.et_pb_post > .et_post_meta_wrapper:first-child::before { font-size: 11px; letter-spacing: .18em; }
  body.single-post #left-area .entry-content { font-size: 17px; line-height: 1.7; }
  body.single-post #left-area .entry-content > * { max-width: 100%; }
  body.single-post #left-area .entry-content > p:first-of-type { font-size: 19px; }
  body.single-post #left-area .entry-content h2 { font-size: 27px; margin-top: 38px; }
  body.single-post #left-area .entry-content h3 { font-size: 21px; }
  body.single-post #left-area .entry-content blockquote { font-size: 20px; padding-left: 18px; }
  body.single-post #left-area .entry-content img.alignleft,
  body.single-post #left-area .entry-content img.alignright { float: none; max-width: 100%; margin: 26px auto; }
  body.single-post .entry-content .ww-posttail { max-width: 100%; }
}
@media (max-width: 640px) {
  body.single-post .ww-posttail-in { flex-direction: column-reverse; align-items: stretch; }
  body.single-post .entry-content a.ww-posttail-back { text-align: center; }
}

/* --- v118 (8/10): the run-in to the membership band, on every page that carries it --
   Olivia's QA doc flags "color line not blending with hot pink below" on Academy, and
   the same seam class across several pages. An auditor that decodes every wave's SVG
   fill and compares it to the rendered colour of the section above found it on 3 of the
   6 pages carrying global band 36: the band's wave is #FDF0F6, and on Academy, House
   Calls and Testimonials the section above is flat #FFFFFF — a visible step (dRGB 17.6).
   This is my own miss from the 8/7 round: I root-caused the identical seam on
   Memberships but scoped the fix to body.page-id-45, and the band sits on six pages.

   Fixed structurally rather than per page. Any section that is IMMEDIATELY FOLLOWED BY
   the membership band gets the same white -> pale-pink run-in the homepage already uses,
   so the wave always meets its own colour. Home (.ww-diff) and Memberships
   (.ww-quote-sec) already compute exactly this gradient, so for them the rule is a
   no-op; Services runs in from the navy .ww-dvmstrip, which has its own wave override
   and is excluded. New pages that adopt the band inherit the correct seam for free. */
.ww-sec:has(+ .ww-sec.ww-mem):not(.ww-dvmstrip) {
  background-image: linear-gradient(180deg, #FFFFFF 0%, #FDF0F6 100%) !important;
}

/* --- v119 (8/10): the navy bands become plum ------------------------------------
   Olivia's doc says "the blue you wanted to take out" eight times across About,
   Services, Species, Conservation, Contact, DVM Consult and Found a Wild Animal.
   Nick's call: recolour rather than delete, so every credential and CTA stays put.
   Seven bands, three classes, all painted here (not by Divi):
     .ww-statsband  About's credentials strip (135deg navy gradient)
     .ww-dvmstrip   Services
     .ww-navystrip  Species, Conservation, Contact, DVM Consult, Found a Wild Animal
   --ww-navy is deliberately NOT retargeted: #1B2F5C is also the card-heading ink, and
   moving the token would repaint type across the whole site.
   Plum is DARKER than the navy it replaces (L .0156 vs .0304), so every text pairing
   on these bands gains contrast: white 13.06 -> 16.01:1, champagne 7.43 -> 9.10:1. */
.ww-navystrip { background: #27133C !important; }
.ww-dvmstrip  { background: #27133C !important; }
.ww-statsband {
  background: linear-gradient(135deg, #27133C 0%, #412359 55%, #27133C 100%) !important;
}

/* The Services membership-band wave was re-encoded to navy in block 11 so it would not
   read as a pale stripe pasted under the dark band. It is the ONE place the old hex is
   baked into art rather than declared, so it has to move with the band or the seam
   re-opens — the exact failure Olivia caught elsewhere. */
body.page-id-33 .ww-sec.ww-mem > .et_pb_top_inside_divider {
  background-image: url("data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTI4MCAxNDAiIHByZXNlcnZlQXNwZWN0UmF0aW89Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTAsMCBDMzIwLDEyMCA5NjAsLTQwIDEyODAsNjAgTDEyODAsMCBaIiBmaWxsPSIjMjcxMzNDIi8+PC9zdmc+") !important;
}

/* About's stats band hands off to .ww-pillars-sec through a three-layer wave whose art
   was re-encoded navy in an earlier round. With the band now plum that wave stood out as
   a blue stripe under a purple band — visible in the first verification screenshot.
   #2A153F is the exact plum analogue: the old art used #182A4D, the midpoint of the old
   #0E1B38 -> #20355E gradient, so this is the midpoint of the new #27133C -> #412359. */
body.page-id-43 .ww-sec.ww-pillars-sec .et_pb_top_inside_divider {
  background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDBweCIgdmlld0JveD0iMCAwIDEyODAgMTQwIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxnIGZpbGw9IiMyQTE1M0YiPjxwYXRoIGQ9Ik0wIDUxLjc2YzM2LjIxLTIuMjUgNzcuNTctMy41OCAxMjYuNDItMy41OCAzMjAgMCAzMjAgNTcgNjQwIDU3IDI3MS4xNSAwIDMxMi41OC00MC45MSA1MTMuNTgtNTMuNFYwSDB6IiBmaWxsLW9wYWNpdHk9Ii4zIi8+PHBhdGggZD0iTTAgMjQuMzFjNDMuNDYtNS42OSA5NC41Ni05LjI1IDE1OC40Mi05LjI1IDMyMCAwIDMyMCA4OS4yNCA2NDAgODkuMjQgMjU2LjEzIDAgMzA3LjI4LTU3LjE2IDQ4MS41OC04MFYwSDB6IiBmaWxsLW9wYWNpdHk9Ii41Ii8+PHBhdGggZD0iTTAgMHYzLjRDMjguMiAxLjYgNTkuNC41OSA5NC40Mi41OWMzMjAgMCAzMjAgODQuMyA2NDAgODQuMyAyODUgMCAzMTYuMTctNjYuODUgNTQ1LjU4LTgxLjQ5VjB6Ii8+PC9nPjwvc3ZnPg==") !important;
}

/* --- v120 (8/10): mobile spacing, from the client QA pass ------------------------

   1. THE HERO SUB-COPY HAD NO PARAGRAPH RHYTHM ON PHONES.
      Client: "Copy looks a little off, dont know when the paragraph breaks."
      Measured: the block is ONE <p> whose sentences are split by <br class="mbr">
      (a mobile-only break: .mbr is display:none at >=768). Line-height 30.6px applies
      equally to a wrapped line and to a new sentence, so there is nothing to tell them
      apart — 11 lines of undifferentiated text at 390.
      CSS alone cannot fix this: margin/height/::after on a <br> were all measured at
      EXACTLY 0px effect in both Chromium AND WebKit. The breaks are therefore now
      <span class="ww-hbrk">, phrasing content the parser keeps inside the <p>, which
      unlike a <br> does accept display and height.
      Desktop is unchanged by design: hidden, so the sentences flow continuously exactly
      as .mbr made them, and the &nbsp; before each spacer still supplies the word space. */
.ww-hbrk { display: none; }
@media (max-width: 767px) {
  .ww-hero-sub-m .ww-hbrk { display: block; height: 12px; }
}

/* 2. THREE PAGES CARRIED AN UN-ZEROED DIVI ROW PADDING IN THE HERO.
      Client: "Work on spacing in header with subheads" / "spacing inbetween the different
      sections looks unplanned and off". Measured across all 17 pages in BOTH engines:
      the hero's first row computes padding-top 27px desktop / 30px mobile on Concierge
      Memberships, House Calls and Hospital Policies, and 0 on the other fourteen — so
      their first line sits 150px below the nav where every other page sits at 120px.
      Keyed on the hero classes rather than page ids so a new page cannot reintroduce it. */
.ww-sec.ww-pagehero > .et_pb_row:first-child,
.ww-sec.ww-hero > .et_pb_row:first-child,
.ww-sec.ww-abouthero > .et_pb_row:first-child { padding-top: 0 !important; }

/* --- v121 (8/10): mobile spacing round 2, from the two-engine visual review -------
   47 agents reviewed 96 tiles across Chromium and WebKit; 41 findings were checked
   adversarially and 25 survived. EVERY rule below is the verifier's CORRECTED fix,
   not the finder's original — most originals were measured no-ops that lost the
   cascade to an existing !important. Values were injected live and re-measured in
   BOTH engines before being written here. */

/* 1. "Our Five Pillars" sat at a 0px box gap under its intro — the page's tightest
      heading, against a 24-27px norm. (About) */
.ww-pillars-head .ww-body-m + .ww-headline { margin-top: 16px; }

/* 2. THE WORST SPACING DEFECT ON THE SITE — 164px of empty plum above the pillar cards
      against 52px below, a 3.15:1 imbalance, while the cards sit 42px apart. The row
      carries the page's largest margin-top (110px, from Divi's deferred sheet) and the
      section the page's only 44px padding-bottom where seven of nine use 72px.
      ww-system.css ALREADY fixed this — but scoped to (768-980) and never extended to
      phones. Both declarations need !important or they lose to the incumbents. (Home) */
@media (max-width: 767px) {
  .ww-sec.ww-values .ww-values-row { margin-top: 54px !important; }
  .ww-sec.ww-values { padding-bottom: 100px !important; }
}

/* 3. The pull-quote sat 47px below the optical centre of its colour box. Scoped to
      body.home: .ww-sec.ww-quote is on three pages, not one. (Home) */
@media (max-width: 980px) {
  body.home .ww-sec.ww-quote .ww-quote-row { margin-top: 56px !important; }
  body.home .ww-sec.ww-quote { padding-bottom: 116px !important; }
}

/* 4. The bird-track decoration ran 43.7px UNDER the last House-Call card — 43% of the
      graphic hidden behind an opaque card. (Home) */
@media (max-width: 767px) {
  body.page-id-16 .et_pb_section.ww-sec.ww-care { padding-bottom: 128px !important; }
}

/* 5. Intro-copy to first card was 92px in "Why Mobile Care?" but 54px in the
      "What Makes Wandering Wings Different?" section — same relationship, same page. */
.ww-care .ww-care-head { margin-bottom: 8px; }

/* 6. Of four stacked "Different?" cards, gap 2-to-3 was 54px where the others were 38px. */
@media (max-width: 980px) {
  .ww-diff .ww-diff-cards + .ww-diff-cards { padding-top: 0 !important; }
}

/* 7. The hero paragraph was capped 12px narrower than every one of its siblings, so its
      right edge alone failed to line up with the H1, the buttons and the video. (Home) */
@media (max-width: 767px) { .ww-hero-sub-m { max-width: none; } }

/* 8. Memberships hero: 152px of dead cream under the last line against a 58px sibling
      baseline, and the micro-line sat only 10px under the subtitle so the two read as one
      paragraph. The padding needed a body+#page-container ladder to win the cascade. */
@media (max-width: 980px) {
  body.page-id-45 #page-container .ww-pagehero { padding-bottom: 56px !important; }
  body.page-id-45 #page-container .ww-pagehero > .et_pb_row { padding-bottom: 0 !important; }
  .ww-pagehero .ww-memhero-micro { margin-top: 16px; }
}

/* 9. Every bullet list opened 3.89px under its lead-in sentence — visually joined to it. */
@media (max-width: 980px) {
  .ww-sec .ww-list p + ul { margin-top: 12px !important; }
}

/* 10. Stacked card rows alternated 20px and 80px gaps in the same section. Keyed on the
       ROW class, not .ww-duosec: /emergency/ has nine .ww-duo-row and none of them sit
       inside a .ww-duosec, so a .ww-duosec-scoped rule left that page fully broken. */
@media (max-width: 980px) {
  #page-container .et_pb_row.ww-duo-row + .et_pb_row.ww-duo-row { padding-top: 0 !important; }
  #page-container .et_pb_row.ww-duo-row:has(+ .et_pb_row.ww-duo-row) { padding-bottom: 0 !important; }
}

/* 11. Founder-bio subheads got LESS air above them (10px) than two plain paragraphs get
       between them (14px), inverting the hierarchy. (Our Team) */
.ww-foundersec .ww-team-name { margin-top: 28px; }

/* 12. 42px of dead space under the last team card, half of it a Divi clearfix phantom. */
@media (max-width: 767px) {
  .ww-sec.ww-teamsec .et_pb_row:not(:first-of-type) > .et_pb_column { margin-bottom: 22px !important; }
  .ww-teamsec .ww-frow::after { display: none !important; }
}

/* 13. The three avatar discs were the last #EE3D9C on the site — the pre-sweep bright
       pink, not the brand #C94D97. Three elements, all on Our Team. */
.ww-avatar, .ww-avatar p {
  background: linear-gradient(150deg, #C94D97 0%, #F0705E 55%, #F2A65A 100%) !important;
}

/* 14. "MEDIA & SPEAKING" had zero separation from its list, reading as a list item. */
.ww-mediastrip .et_pb_text:first-of-type { margin-bottom: 8px; }

/* 15. House Calls alternated 8px and 38px between a lead-in and its list across five
       instances. Unified to the site's dominant 16px (8px row + the existing 8px head). */
@media (max-width: 980px) {
  body.page-id-178 .ww-steps-sec .ww-well-head + .et_pb_row,
  body.page-id-178 .ww-polnotes .ww-well-head + .et_pb_row,
  body.page-id-178 .ww-acadsec .ww-well-head + .et_pb_row { padding-top: 8px !important; }
}

/* --- v122 (8/11): bottom-up review round — 85 agents, 380 tiles, 64 confirmed -----

   1. THE PRIMARY CTA FAILED WCAG AA AND MY OWN TOOL PASSED IT.
      "Book Appointment" (home, services), "Submit a Question" (blog, species) and
      "Meet the team" (about) are white 15px/700 on #C94D97 = 4.21:1 against a 4.5 floor.
      They survived every previous sweep because contrast.cjs judged "large text" by BOX
      HEIGHT (it.h>=26) — and a button is 47px tall. WCAG large text is a FONT-SIZE test
      (>=24px, or >=18.66px bold). The tool is fixed; so are the buttons.
      #BE4590 is the same plum-pink already used on the membership band: 4.73:1 with white. */
a.et_pb_button.ww-btnw--primary,
.et_pb_button.ww-btnw--primary {
  background: linear-gradient(90deg, #BE4590 0%, #BE4590 100%) !important;
}

/* 2. THE FOOTER WAS THE ONE DARK SURFACE THE PLUM SWEEP MISSED — #2A123E against the
      #27133C used by every other band. Six independent page reviews found it. Because the
      final CTA strip IS #27133C, the mismatch showed up as a flat two-tone butt-joint at
      the foot of a dozen pages; matching them removes the step entirely rather than
      papering a wave over it. Global theme-builder footer, so this lands on all 17 pages
      and the blog template. */
footer.ww-footer, .ww-footer, .ww-fbottom { background-color: #27133C !important; }

/* 3. The copyright line broke 281px / 133px, stranding the "·" separator alone at the end
      of line one on every page. */
.ww-fbottom-in > span:first-child { text-wrap: balance; }

/* 4. The footer's three link columns wrapped 2-up, dropping FOLLOW under CARE and leaving
      a 161x166px dead rectangle — 18% of the footer's nav area. Letting the taller CONNECT
      column span both rows closes it. */
@media (max-width: 980px) {
  .ww-footer-cols { display: grid; grid-template-columns: 1fr 1fr; gap: 32px 20px; align-items: start; }
  .ww-footer-cols > .ww-fcol:nth-child(1) { grid-column: 1; grid-row: 1; }
  .ww-footer-cols > .ww-fcol:nth-child(2) { grid-column: 2; grid-row: 1 / span 2; }
  .ww-footer-cols > .ww-fcol:nth-child(3) { grid-column: 1; grid-row: 2; }
}

/* 5. The photo bands sat 164px below the copy above them and 72px above the copy below —
      not centred in their own white surround. */
@media (max-width: 767px) {
  #main-content .ww-sec.ww-photoband:not(:has(> .et_pb_top_inside_divider)) { padding-top: 20px !important; }
}

/* 6. The plum CTA strips were content-top-anchored: 32px of plum above the first line
      against 52px below. Cause is Divi's row ::after clearfix acting as a flex item — the
      existing kill-list for it is wrapped in (min-width:981px), the one breakpoint where
      the phantom does NOT exist. */
@media (max-width: 980px) {
  .ww-sec.ww-navystrip .et_pb_row::after,
  .ww-sec.ww-dvmstrip .et_pb_row::after,
  .ww-navystrip-row::after, .ww-dvm-row::after { content: none !important; display: none !important; }
  .ww-sec.ww-navystrip, .ww-sec.ww-dvmstrip { padding-top: 42px !important; padding-bottom: 42px !important; }
}

/* The About hero CTA is painted by its own rule at (1,4,0) — a different class from the
   primary buttons, so it survived the fix above and stayed at 4.21:1. Matched specificity. */
body #page-container .et_pb_section .et_pb_button.ww-abouthero-cta {
  background-image: linear-gradient(120deg, #BE4590, #BE4590) !important;
}

/* 7. TWO MORE AA FAILURES, surfaced only once contrast.cjs stopped judging large-text by
      box height. Both are 15-17px type, so the 4.5 floor applies:
      (a) The NAV "Book Appointment" pill — 14.1px/600 white on #C94D97 = 4.21:1, in the
          theme-builder header, so on ALL 17 pages plus the blog. The most prominent CTA on
          the site. My button probe missed it because it is a menu <a>, not an .et_pb_button.
      (b) About's pillar sub-headlines — 17px/600 #C94D97 on the #FDF5EC cream = 3.90:1.
          Uses --wwb-kicker-ink #B03F84, the darker pink already carried for exactly this
          job elsewhere in the file. */
.ww-navm ul.et-menu > li.ww-menu-cta > a,
body.ww-stuck .ww-navm ul.et-menu > li.ww-menu-cta > a { background: #BE4590 !important; }

.ww-sec.ww-pillars-sec h4 { color: var(--wwb-kicker-ink, #B03F84) !important; }

/* 8. Translucent white strikes again. Conservation's three pink bands set their body copy
      to rgba(255,255,255,.95); over the darkened #BE4590 that composites to 4.42:1, just
      under the floor, where opaque white gives 4.73. Same failure mode as the .ww-mem
      eyebrow in v108 — a 5% alpha is invisible to the eye and fatal to the ratio. */
#main-content .ww-sec.ww-cons p, #main-content .ww-sec.ww-cons li,
#main-content .ww-sec.ww-club p, #main-content .ww-sec.ww-club li,
#main-content .ww-sec.ww-promise p, #main-content .ww-sec.ww-promise li {
  color: #FFFFFF !important; opacity: 1 !important;
}

/* 9. The last one. Home's van-band caption is #C94D97 on the #FDF0F6 blush = 3.82:1 at
      15px. The brand pink is simply too light for small text on a tinted ground; the
      kicker ink exists for exactly this and clears the floor. */
#main-content .ww-sec.ww-van p { color: var(--wwb-kicker-ink, #B03F84) !important; }

/* --- v123 (8/11): Olivia's remaining actionable items ---------------------------

   1. THE RIGHT-HAND FEATHER BLEEDS OFF THE EDGE.
      Her note twice: "Feather on the right side bleeding off the edge" / "feather in top
      right corner bleeding off the side". Measured on .ww-quote (home, hospital-policies,
      house-calls): the layer is 119px wide at >=981 positioned calc(100% + 45px), and 70px
      wide below that at calc(100% + 28px) — so 38% / 40% of it sits past the section's
      right edge, and the section computes overflow:clip, so it is cut, not bled.
      All FOUR background-position values are restated on purpose. background-position is a
      comma list matched to the layer list, and supplying three when the element has four
      layers makes CSS cycle the shorter list — the gradient would inherit a layer position
      and paint as a hard band. That exact mistake was proposed and caught in review. */
.ww-sec.ww-quote {
  background-position: 167px 168px, 141px 305px, calc(100% - 22px) 230px, 0% 0% !important;
}
@media (max-width: 980px) {
  .ww-sec.ww-quote {
    background-position: 24px 75px, 30px 148px, calc(100% - 14px) 109px, 0% 0% !important;
  }
}

/* 2. CONSERVATION: "How the copy was laid out looks a little weird, maybe too many spaces."
      Measured: .ww-cons sets 34px between its paragraphs while its four sibling sections on
      the same page (.ww-whymatters, .ww-club, .ww-help, .ww-promise) all use 13px. The
      result is five separated islands — two of them single-line orphans — instead of one
      argument. Brought in line with the page's own standard rather than an invented value.
      The blocks are SEPARATE .ww-body-m modules, not sibling paragraphs — a `p + p` rule
      matched nothing here and instead landed on .ww-club two sections down. The 34px comes
      from Divi's per-module margin-bottom; zeroing it leaves each module's own 16px
      margin-top as the rhythm, which is the page's standard. */
#main-content .ww-sec.ww-cons .ww-body-m { margin-bottom: 0 !important; }

/* 3. CONTACT: "Looks like the boxes are a little close together."
      The three method cards sit at a 28px gutter — the --wwb-card-gap token, so not a bug
      as such. But Nick already chose 36px/24px for the DVM card grid over the same token,
      so the wider gutter is the established preference where a grid feels tight. Matching
      that precedent rather than inventing a third value. */
@media (min-width: 981px) {
  #main-content .ww-sec.ww-methodsec .et_pb_row > .et_pb_column { padding-right: 4px; padding-left: 4px; }
  #main-content .ww-sec.ww-methodsec .ww-method { margin-left: 4px !important; margin-right: 4px !important; }
}

/* 4. HOSPITAL POLICIES now carries the two photos Olivia supplied instead of one.
      The pair is portrait 3:4, so the 820px single-image measure would make each half
      unhelpfully tall; the pair row runs to the full 1080px content width and the two
      images share the card radius and shadow of every other band on the site.
      They stack on phones, where a 1_2 pair would leave each image ~170px wide. */
.ww-photoband-row.ww-polpair { max-width: 1080px !important; }
.ww-photoband-row.ww-polpair .ww-cons-img-m img {
  width: 100%; height: auto; display: block;
  border-radius: var(--wwb-card-radius, 26px);
  box-shadow: var(--wwb-card-shadow, 0 26px 60px -24px rgba(156,58,116,.22));
}
@media (max-width: 980px) {
  .ww-photoband-row.ww-polpair { max-width: none !important; }
  .ww-photoband-row.ww-polpair > .et_pb_column { margin-bottom: 20px !important; }
  .ww-photoband-row.ww-polpair > .et_pb_column:last-child { margin-bottom: 0 !important; }
}
/* v124 — Wildlife photo pair + the measure bug it exposed.

   5. The `.ww-polpair` rows never actually got the wider measure v123 claimed.
      v115 ships `#main-content .ww-sec.ww-photoband .ww-photoband-row` at (1,3,0)
      with !important; v123's `.ww-photoband-row.ww-polpair` is (0,2,0), so the ID
      selector won and BOTH pairs — Hospital Policies and the new Wildlife pair —
      stayed pinned to the 820px single-image measure (387px per half). Restating at
      (1,4,0) lets the pair rule land. Two-up images want the full content width;
      820px splits into halves too small to read a clinical photo in. */
#main-content .ww-sec.ww-photoband .ww-photoband-row.ww-polpair { max-width: 1080px !important; }
@media (max-width: 980px) {
  #main-content .ww-sec.ww-photoband .ww-photoband-row.ww-polpair { max-width: none !important; }
}

/* 6. Wildlife's second band sits mid-page between two text sections that already carry
      their own vertical rhythm (24-Hour ends on 72px, Before You Rescue opens on 64px
      plus a 120px wave). The standard 112/112 photoband padding stacks on top of that
      and opens a ~290px trench. Tighten this one band only; the top-of-page band on the
      same page keeps the standard treatment. */
#main-content .ww-sec.ww-photoband.ww-wildpair { padding-top: 56px !important; padding-bottom: 64px !important; }
@media (max-width: 980px) {
  #main-content .ww-sec.ww-photoband.ww-wildpair { padding-top: 40px !important; padding-bottom: 48px !important; }
}
/* v125 — breathing room under the nav, site-wide.

   Measured before (nav's lowest painted pixel -> top of the first painted hero text,
   Chromium + WebKit agreeing exactly):

       width   Home gap   inner gap      nav bottom
       1600      55px       69px            280
       1440      76px       66px            259
       1280     134px       60px             76
        980      60px       54-60px          76
        390      53px       47px             73

   Two problems, not one:

   a) The gap is simply small everywhere. 47-76px under a bar this heavy reads as
      crowding on a site that runs 112px section padding elsewhere.

   b) HOME GETS TIGHTER AS THE SCREEN GETS WIDER — 76px at 1440 collapsing to 55px at
      1600, the worst number on the site and the page Nick flagged. Cause: the nav's
      height tracks the logo, which is `clamp(180px, 13.3vw, 243px)`, so the bar grows
      ~21px between 1440 and 1600. The interior pages absorb that because their padding
      uses the same logo-derived formula; Home does not, because
      `body.page-id-16 .ww-sec.ww-hero { padding-top: 325px }` (a flat value added later
      for the video hero) overrides the formula and cannot track anything. Home is put
      back on the formula here, which is what actually fixes the wide-viewport case —
      a flat bump would have left 1600+ still drifting.

   Targets: Home ~150px / interior ~130px on full-nav widths, easing to ~120/110 on
   tablet and ~89/79 on phones, where the bar collapses to 76px and less air is needed.
   Home is deliberately ~10-20px looser than the interior pages per Nick's note.

   Specificity: (1,4,1) — has to clear `body.page-id-16 .ww-sec.ww-hero` (0,3,1) and the
   twenty-odd `.ww-sec.ww-hero` rules already carrying !important. Repeating the class is
   the safe way to add weight; doubling #page-container would match nothing. */

/* NOTE on the coefficient: `--ww-logow-un` is `clamp(93px, 6.863vw, 125px)` in the
   layer that is actually live. An earlier layer defines it at roughly double that with
   a 0.8065 multiplier; a later one halved the variable and compensated by moving the
   multiplier to 1.5629. Copying the 0.8065 form lands ~110px short and silently made
   the interior pages TIGHTER than before. Always read the coefficient off the rule the
   browser reports as winning, not off the first grep hit. */

/* ---------- full nav (logo-tracked, so the gap holds as the bar grows) ---------- */
@media (min-width: 1281px) {
  body #page-container .ww-sec.ww-hero.ww-hero {
    padding-top: calc(var(--ww-logow-un) * 1.5629 + min(69.6px, 4.086vw) + 186px) !important;
  }
  body #page-container .ww-sec.ww-pagehero.ww-pagehero,
  body #page-container .ww-sec.ww-abouthero.ww-abouthero,
  body #page-container .ww-sec.ww-memhero.ww-memhero {
    padding-top: calc(var(--ww-logow-un) * 1.5629 + min(69.6px, 4.086vw) + 176px) !important;
  }
}

/* ---------- compact bar (76px tall) ---------- */
@media (min-width: 981px) and (max-width: 1280px) {
  body #page-container .ww-sec.ww-hero.ww-hero { padding-top: 206px !important; }
  body #page-container .ww-sec.ww-pagehero.ww-pagehero,
  body #page-container .ww-sec.ww-abouthero.ww-abouthero,
  body #page-container .ww-sec.ww-memhero.ww-memhero { padding-top: 206px !important; }
}

@media (min-width: 431px) and (max-width: 980px) {
  body #page-container .ww-sec.ww-hero.ww-hero { padding-top: 186px !important; }
  body #page-container .ww-sec.ww-pagehero.ww-pagehero,
  body #page-container .ww-sec.ww-abouthero.ww-abouthero,
  body #page-container .ww-sec.ww-memhero.ww-memhero { padding-top: 186px !important; }
}

/* ---------- phones: bar is 68-73px, so less air buys the same read ---------- */
@media (max-width: 430px) {
  body #page-container .ww-sec.ww-hero.ww-hero { padding-top: 152px !important; }
  body #page-container .ww-sec.ww-pagehero.ww-pagehero,
  body #page-container .ww-sec.ww-abouthero.ww-abouthero,
  body #page-container .ww-sec.ww-memhero.ww-memhero { padding-top: 152px !important; }
}
/* v126 — load experience: preloader exit polish + first-paint color + image reveals.

   1. PRELOADER EXIT. The plugin's exit is `$('.preloader-plus').addClass('complete')`
      and then the whole overlay (cream bg + phoenix mark + progress bar) fades over
      animation_duration. Because the mark rides the overlay's fade, it hovers over the
      already-revealed page — for ~800ms there are TWO phoenixes on screen (preloader
      mark + header logo), which is the "flash" Nick flagged. Fix: the mark and the bar
      leave fast (180ms) the moment .complete lands; the cream veil keeps its slow fade.
      Sequence becomes mark-gone -> plain cream veil -> page. (The pulse itself was
      turned off in the plugin option: custom_img_animation '' — it was a 900ms opacity
      loop, and exiting mid-pulse is what made it abrupt.) */
.preloader-plus.complete .preloader-custom-img,
.preloader-plus.complete .prog-bar,
.preloader-plus.complete .prog-bar-wrapper,
.preloader-plus.complete #preloader-counter {
  opacity: 0 !important;
  transition: opacity 180ms ease-out !important;
}

/* 2. FIRST-PAINT COLOR. Before any stylesheet applies, the canvas is white; the first
      painted frame was a white flash before the cream preloader appeared. Painting the
      root cream makes frame zero match the preloader and the site's lightest surface. */
html { background-color: #FCF4EA; }

/* 3. IMAGE REVEALS. Subtle rise-and-fade on content images as they enter the viewport.
      - Gated on html.ww-anim (set by JS): no JS => no hidden images, nothing to break.
      - Animates the Divi module WRAPPER (.et_pb_image), not the <img>: WPE rewrites
        img -> picture on some pages, and the wrapper survives that; transform+opacity
        don't affect layout, and the img's width/height attrs keep the space reserved,
        so this cannot introduce CLS.
      - .ww-stag* delays are set inline by the JS per intersecting batch (90ms steps).
      - prefers-reduced-motion: everything visible, no transforms, no transitions. */
/* (8/13) will-change removed: it pre-promoted EVERY unrevealed image module to its
   own compositing layer — dozens of GPU layers held live on tall mobile pages for a
   one-shot 700ms transition that plays fine without the hint. */
html.ww-anim #main-content .et_pb_image {
  opacity: 0;
  transform: translateY(14px);
}
/* transition lives on the REVEALED state only: adding the gate class hides
   instantly (no visible fade-down of already-painted images), while adding
   .ww-inview animates the 0 -> 1 rise. */
html.ww-anim #main-content .et_pb_image.ww-inview {
  opacity: 1;
  transform: none;
  transition: opacity 700ms cubic-bezier(.22, .61, .36, 1), transform 700ms cubic-bezier(.22, .61, .36, 1);
}
@media (prefers-reduced-motion: reduce) {
  html.ww-anim #main-content .et_pb_image {
    opacity: 1 !important;
    transform: none !important;
    transition: none !important;
  }
}
/* ============================================================================
   PACKAGE F3 (8/12) — five scoped rendering-bug fixes. Every rule below was
   injected into the live page and re-measured winning before shipping.
   ============================================================================ */

/* F3.1 — HOME values band: .ww-pillar2::before accent (gold->pink) died into the
   pink band bg (#C94D97). Gold->cream inside .ww-values only; .ww-pillar2 exists
   solely on the homepage, and About's pillar cards use .ww-pillar/.ww-pillar-rule
   — out of scope by selector (verified unchanged live). */
.ww-values .ww-pillar2::before {
  background: linear-gradient(90deg, #E3BE7F, #F2DFBD);
}

/* F3.2 — /hospital-policies/ (page-id-123): the one linked H3 title renders
   underlined (inline style + the sitewide `#main-content .et_pb_text h3 a:not(...)`
   rule, which forces `text-decoration: underline !important` at (1,3,2) — a bare
   body.page-id-123 h3#id > a override at (1,1,3) measurably LOSES to it).
   Two ids put this at (2,2,3). Underline returns on hover/focus-visible; the
   sitewide rule's decoration color rgba(27,47,92,.35) + 4px offset still apply. */
body.page-id-123 #main-content .et_pb_text h3#home-visit-prep > a {
  text-decoration-line: none !important;
}
body.page-id-123 #main-content .et_pb_text h3#home-visit-prep > a:hover,
body.page-id-123 #main-content .et_pb_text h3#home-visit-prep > a:focus-visible {
  text-decoration-line: underline !important;
}

/* F3.3 — single posts: Divi's right-sidebar divider (#main-content .container:before,
   1px x full-height #e2e2e2) renders as a phantom line on sidebar-less posts.
   (0,2,2)+id beats Divi's (1,1,1) without !important — measured winning. */
body.single-post #main-content .container::before {
  display: none;
}

/* F3.4 — /found-a-wild-animal/ (page-id-58): the two directory headings were
   inline-styled 26px plum (#2E1A33). Onto the sitewide H3 card-heading step
   (Cormorant Garamond 600 27px #173268, 26px under 768px — mirrors the
   .ww-panel-title/.ww-duo-h3 tier). !important beats the inline font shorthand. */
body.page-id-58 #map .et_pb_text_26 h3,
body.page-id-58 #map .et_pb_text_27 h3 {
  font-family: 'Cormorant Garamond', serif !important;
  font-weight: 600 !important;
  font-size: 27px !important;
  line-height: 1.2 !important;
  color: #173268 !important;
}
@media (max-width: 767px) {
  body.page-id-58 #map .et_pb_text_26 h3,
  body.page-id-58 #map .et_pb_text_27 h3 {
    font-size: 26px !important;
  }
}

/* F3.5 — /emergency/ (page-id-176): promote the "If You're Unsure" closing H3
   (was 27px via the .ww-duo-h3 card tier) to the page H2 scale, mirroring the
   .ww-headline h2 tiers measured live: 54px/1.16 desktop, 40px <=980, 34px/1.18
   <=767. Element stays an H3; the 12 other .ww-duo-h3 headings on the page are
   untouched (scoped by .et_pb_text_65). */
body.page-id-176 .ww-duo-h3.et_pb_text_65 h3 {
  font-size: 54px !important;
  line-height: 1.16 !important;
}
@media (max-width: 980px) {
  body.page-id-176 .ww-duo-h3.et_pb_text_65 h3 {
    font-size: 40px !important;
  }
}
@media (max-width: 767px) {
  body.page-id-176 .ww-duo-h3.et_pb_text_65 h3 {
    font-size: 34px !important;
    line-height: 1.18 !important;
  }
}/* ══ PACKAGE F4 — keyboard + reduced-motion accessibility (additive) ══════ */

/* F4.1 — /our-team/ "Read full bio" <summary>: enlarge target to >24px + focus ring.
   padding-top ONLY, not `padding: 6px 0`: each summary carries an inline style
   (style="...border-bottom:1px solid currentColor;padding-bottom:2px;") — the 2px
   bottom padding is the gap feeding the underline. An author-level padding-bottom
   loses to the inline style without !important, and forcing it would visibly move
   the underline. padding-top:6px wins cleanly: 22.2px → 28.2px target height. */
summary { padding-top: 6px; }
summary:focus-visible { outline: 2px solid #C94D97; outline-offset: 2px; }

/* F4.2 — hero carousel dots: 24px hit target with zero paint/layout change.
   The package's literal `padding:8px + background-clip:content-box` is UNSHIPPABLE
   here (measured): dots are box-sizing:border-box at 8px, so 8px padding collapses
   the content box to 0 → inactive dots render invisible; and the dots carry
   box-shadow: rgba(201,77,151,.9) 0 2px 10px -2px, which paints at the border box
   → enlarging the box draws a visible halo ring (screenshot-confirmed). A padded
   box also shifts the right/bottom-anchored row 16px (layout jump).
   The ::before hit-area overlay extends the clickable box to 24×24 (44×24 active)
   while the button's own box, background, and shadow stay byte-identical.
   (Mobile dots already carry an ::after tap-extension from an earlier fix —
   ::before coexists with it; verified.) */
.ww-vcar-dots .ww-vcar-dot { position: relative; }
.ww-vcar-dots .ww-vcar-dot::before {
  content: '';
  position: absolute;
  inset: -8px;
  border-radius: 100px;
}

/* F4.3 — reduced motion: Divi scroll-reveal modules (.et-waypoint) load at
   opacity:0 and are revealed by waypoint JS animation. Site's existing
   @media (prefers-reduced-motion: reduce) blocks in ww-system.css cover nav,
   play button, carousel track, buttons, and .et_pb_image — but NOT .et-waypoint:
   under reduced motion those modules stayed permanently invisible (measured:
   9/9 hidden on /, 4/4 on /species-we-treat/). Force them visible and static. */
@media (prefers-reduced-motion: reduce) {
  .et-waypoint, .et_animated {
    animation: none !important;
    transition: none !important;
    opacity: 1 !important;
    transform: none !important;
  }
}

/* F4.4 — Atlist map iframe focus ring on /found-a-wild-animal/.
   NOTE: measured INERT in every engine tested (Chromium headless shell, full
   Chrome for Testing, WebKit): when Tab moves focus to an <iframe>, focus is
   delegated into the frame's document and the <iframe> element matches neither
   :focus nor :focus-visible, so this rule cannot currently fire anywhere.
   Kept verbatim per package spec as zero-risk future-proofing — it wins the
   cascade trivially (nothing else styles iframe outline) and activates if
   engines implement :focus-visible on browsing-context containers. */
iframe:focus-visible { outline: 2px solid #C94D97; outline-offset: 2px; }/* ============ F8 (8/12): mobile alignment + spacing package ============ */

/* F8-1 (id5) — /about/ "Her Story" H2: the desktop <br> stranded "canopy —" as a 131px
   middle line at 390px. Hiding the br is NOT safe: the markup has no space around it
   ("canopy —<br>and"), so display:none fuses the words into "canopy —and to" mid-line
   (verified in chromium AND webkit; br ignores content/inline-block overrides, so CSS
   cannot inject the missing space). Fix instead extends the site's own desktop rule
   "#main-content h2 { text-wrap: balance }" (currently gated min-width:981px) to this
   one heading on phones: lines go 269.5/131/323.7 -> 182.9/217.6/323.7 — same 3-line
   composition as desktop, no strand, copy untouched. */
@media (max-width: 767px) {
  body.page-id-43 .ww-sec.ww-biosec .ww-headline h2 { text-wrap: balance; }
}

/* F8-2 (id17) — footer copyright + phone block centered on mobile while every other
   footer group is left-aligned. The centering comes from the <=980 blocks
   ".ww-fbottom-in { text-align:center }" + "{ flex-direction:column; align-items:center }",
   so BOTH properties must flip. NOTE: .ww-fbottom is a SIBLING of footer.ww-footer, not a
   child — ".ww-footer .ww-fbottom-in" matches nothing; scope via the parent class instead.
   After: spans x [24,140.3] -> [24,24], flush with the CARE column h5 at x=24. */
@media (max-width: 980px) {
  .ww-fbottom .ww-fbottom-in { text-align: left; align-items: flex-start; }
}

/* F8-3 (id27) — at <=980 the footer columns are a 2-col grid where CONNECT spans rows
   1-2, so its tail overflows row 1 and the FOLLOW heading in row 2 rose to 1px ABOVE
   CONNECT's last link (gap measured -1.0px on /about/ and /pet-parent-academy/ at 390).
   32px matches the grid's own row-gap; measured gap after: 31.0px at 390 (target >=28),
   8 -> 40px at 820. */
@media (max-width: 980px) {
  .ww-footer-cols > .ww-fcol:nth-child(3) { margin-top: 32px; }
}

/* F8-4 (id42) — /conservation-corner/ (page 60): its body copy was authored in
   .ww-ask-sub modules instead of .ww-body-m, so the v112 phone left-align convention
   never reached it and 14 paragraphs across 7 modules sat centered at 390px. Mirror of
   the v112 rule (same exclusion chain, same !important) with the page-60 ask-sub hook.
   The three .ww-list-2col checklist modules carry et_pb_text_align_left and their <li>
   text already computes left — deliberately untouched, as are headings/eyebrows
   (headTA/eyeTA measured center before AND after). */
@media (max-width: 767px) {
  body.page-id-60 #main-content .ww-sec .et_pb_text.ww-ask-sub.et_pb_text_align_center:not(.ww-subtitle):not(.ww-perk):not(.ww-well-head):not(.ww-eyebrow-m):not(.ww-memhero-micro):not(.ww-link-m),
  body.page-id-60 #main-content .ww-sec .et_pb_text.ww-ask-sub.et_pb_text_align_center:not(.ww-subtitle):not(.ww-perk):not(.ww-well-head):not(.ww-eyebrow-m):not(.ww-memhero-micro):not(.ww-link-m) .et_pb_text_inner,
  body.page-id-60 #main-content .ww-sec .et_pb_text.ww-ask-sub.et_pb_text_align_center:not(.ww-subtitle):not(.ww-perk):not(.ww-well-head):not(.ww-eyebrow-m):not(.ww-memhero-micro):not(.ww-link-m) p,
  body.page-id-60 #main-content .ww-sec .et_pb_text.ww-ask-sub.et_pb_text_align_center:not(.ww-subtitle):not(.ww-perk):not(.ww-well-head):not(.ww-eyebrow-m):not(.ww-memhero-micro):not(.ww-link-m) li {
    text-align: left !important;
  }
}

/* F8-5 (id48) — Ask Dr. Wild / Monthly Q&A standfirsts on Academy (page 51, section
   .ww-askform) and Blog (page 52, section .ww-asksec) centered at 390px. Blog's
   .ww-ask-sub has NO <p> — raw text + <br> directly in .et_pb_text_inner — so the
   inner-level selector is load-bearing, not belt-and-braces. Eyebrow + H2 keep their
   center (measured center before and after). Desktop keeps the centered standfirst. */
@media (max-width: 767px) {
  body.page-id-51 #main-content .ww-sec.ww-askform .et_pb_text.ww-ask-sub,
  body.page-id-51 #main-content .ww-sec.ww-askform .et_pb_text.ww-ask-sub .et_pb_text_inner,
  body.page-id-51 #main-content .ww-sec.ww-askform .et_pb_text.ww-ask-sub p,
  body.page-id-52 #main-content .ww-sec.ww-asksec .et_pb_text.ww-ask-sub,
  body.page-id-52 #main-content .ww-sec.ww-asksec .et_pb_text.ww-ask-sub .et_pb_text_inner,
  body.page-id-52 #main-content .ww-sec.ww-asksec .et_pb_text.ww-ask-sub p {
    text-align: left !important;
  }
}/* v128 — QA-round fixes (post-implementation verification findings).

   1. Hero carousel dots, desktop: non-active dot pitch was 16px (8px dot + 8px gap),
      so the 24px ::before hit zones from the a11y pass overlapped and the effective
      exclusive hit width measured 16.5px — under the WCAG 2.5.8 24px minimum.
      gap 16px puts non-active centers 24px apart: zones touch, never overlap.
      Mobile keeps its own `gap: 28px !important` override — untouched. */
.ww-vcar-dots { gap: 16px; }

/* 2. Memberships "Continuity of Care": the column clips at exactly the text's left
      edge (overflow:hidden + border-radius:26px, clip edge == text x), shaving the
      left arc off line-initial glyphs — 'c' in Chromium, 'w' in WebKit under its
      different wrap. 2px of side padding moves the ink off the clip edge; the 2px
      shift is imperceptible at a 1240px measure. */
body.page-id-45 .et_pb_column_10 .et_pb_text { padding-left: 2px; padding-right: 2px; }

/* 3. Pillar-card bodies: avoid short last lines where the engine supports it
      (progressive enhancement; inert where unsupported). The card-3 copy also
      gets 'around the world.' glued in content so the last line reads as a
      phrase even without text-wrap support. */
.ww-pillar2 p { text-wrap: pretty; }
/* v129 — final-QA fix: the 404 hero was the one hero that did not clear the fixed
   header on desktop (padding-top 180px vs the ~270px nav bottom — logo + nav pill
   overlapped the phoenix artwork). 300px matches the interior-hero clearance.
   Mobile renders clean at the existing 180px, so the fix is desktop-scoped. */
@media (min-width: 981px) {
  body.error404 #main-content .et_pb_section:first-child { padding-top: 300px !important; }
}
/* v130 — iOS Safari frozen-page fix (preloader overlay swallowing touches).

   Mechanism, reproduced in iPhone-emulated WebKit (300ms samples): on `complete`
   the plugin fades the overlay (opacity 800ms) and only THEN parks it off-screen
   via `left: 1000%` with a ZERO-duration, 800ms-DELAYED transition
   (base css: `transition: opacity 1s, transform 1s, left 0s` + inline
   `transition-duration: 800ms,800ms,0s` / `.complete { transition-delay: 0s,0s,800ms }`).
   Until that delayed snap fires, an invisible position:fixed 100vw/100vh z-999
   overlay sits over the page with pointer-events:auto — measured: elementFromPoint
   at mid-viewport returns the overlay for ~900ms on every load. iOS Safari drops
   delayed transitions on composited fixed layers often enough (timer throttling,
   low-power mode, bfcache restores) that the snap never fires and the page loads
   but cannot be scrolled or touched until a visual-viewport change (the
   address-bar trick) forces a style recalc.

   Fix: pointer-events is NOT animatable — it applies synchronously at class-add.
   The instant the plugin declares `complete`, the page below is ready and the
   overlay has no reason to intercept anything, wherever it happens to be parked.
   The visual fade is untouched. functions.php additionally display:none's the
   overlay ~1s after complete (kills the compositing layer and any stale
   hit-region), with a 12s failsafe that also force-completes `body` so a broken
   plugin can never strand the page blank. */
.preloader-plus.complete { pointer-events: none !important; }

/* Failsafe companion: when the 12s watchdog force-completes a load the plugin never
   finished, the page must appear INSTANTLY — the plugin's own reveal
   (body.complete > * { opacity:1; transition: all 1s }) depends on a transition
   Safari won't run in occluded tabs. Never used on a healthy load. */
/* (8/14) `:not(.ww-menu-scrim)` is load-bearing. v137's home-gate applies
   ww-pre-failsafe to EVERY non-home page, and the mobile menu scrim is a direct
   child of body — so this blunt `opacity:1 !important` was forcing the scrim
   visible and dimming 16 of 17 pages on mobile. It ties on specificity with
   `body:not(.ww-menu-open) > .ww-menu-scrim` and wins on order. Never let this
   rule touch the scrim. */
body.ww-pre-failsafe > *:not(.preloader-plus):not(.ww-menu-scrim) { opacity: 1 !important; transition: none !important; }
/* v131 — mobile round: taller imagery, slimmer waves.

   1. TALLER MOBILE IMAGERY. At 390px the full-width photo bands rendered as wide
      letterbox strips — four at 2.1:1 (342x163) and six at 3:2 — while the visual
      language everywhere else on mobile is portrait-leaning cards. Crop them all to
      4:3 via aspect-ratio + object-fit (no new assets, no CLS: the box height is
      known before the image arrives). Scoped by the module classes the wide images
      actually carry (ww-cons-img-m / ww-van-img-m — measured); the About/Team
      portraits use other classes and never match. The side-by-side pairs
      (.ww-polpair: Policies 3:4, Wildlife 4:3) are already the right shape and are
      explicitly restored to natural ratio. */
@media (max-width: 980px) {
  #main-content .et_pb_image.ww-cons-img-m img,
  #main-content .et_pb_image.ww-van-img-m img {
    aspect-ratio: 4 / 3;
    width: 100%;
    height: auto;
    object-fit: cover;
  }
  #main-content .ww-polpair .et_pb_image.ww-cons-img-m img {
    aspect-ratio: auto;
    object-fit: cover;
  }

}
/* v132 — membership-band run-in: repair the stark line above the baked wave.

   The ww-mem band's background is a baked SVG wave whose top region is #FDF0F6;
   v118 therefore fades the PRECEDING section into #FDF0F6 via
   `.ww-sec:has(+ .ww-sec.ww-mem)`. On two pages a display:none pending-content
   section sits between the visible content and the band (ww-webinars on Academy,
   ww-acadsec/#videos on House Calls), so the run-in lands on the HIDDEN section
   and the visible one keeps its own ending color — cream #FBEDE2 (Academy) and
   pure white (House Calls) meeting #FDF0F6 at a hard horizontal edge (Nick's
   screenshot, Ask Gabby page). CSS has no "next VISIBLE sibling" combinator, so
   the run-in is pinned to the actual previous visible section per page. If the
   hidden sections ever go live, v118's :has() takes over on them and these two
   rules become redundant fades on sections that then sit one step earlier —
   harmless, but drop them at that point.
   (/services/ also precedes the band with a non-#FDF0F6 section — the plum
   ww-dvmstrip — but v118 excludes it BY DESIGN; left untouched.) */
body.page-id-51 .ww-sec.ww-askform {
  background: linear-gradient(180deg, #FFFFFF 0%, #FDF0F6 100%) !important;
}
body.page-id-178 .ww-sec.ww-quote {
  background: linear-gradient(180deg, #FFFFFF 0%, #FDF0F6 100%) !important;
}

/* House Calls only: the quote section's decorative pink wash (::after,
   rgba(156,58,116,.1)) overhangs the section bottom and gets CLIPPED by
   section_has_divider's overflow:hidden — re-introducing a tinted step right at
   the boundary the gradient above just fixed. The wash is subtle ambience; the
   seam is not. */
body.page-id-178 .ww-sec.ww-quote::after { display: none; }
/* v133 — desktop round: pillar icons, two seam lines, stray watermark, footer.

   1. PILLAR ICON DISCS (home values band). The icon circle was a radial-gradient
      fading white -> transparent over a cream card, so the disc was effectively
      invisible and the gradient icons floated. Adopt the Species We Treat
      medallion treatment verbatim: solid white fill, white halo ring, soft
      plum-tinted drop shadow, pink ring on hover. Class repeated to clear the
      later `.ww-pillar2-icon` layer that ships the fading gradient. */
.ww-values .ww-pillar2-icon.ww-pillar2-icon {
  background: #FFFFFF !important;
  border: 0 !important;
  box-shadow: 0 0 0 6px rgba(255, 255, 255, .9), 0 14px 30px -14px rgba(156, 58, 116, .45) !important;
}
.ww-values .ww-pillar2:hover .ww-pillar2-icon.ww-pillar2-icon {
  box-shadow: 0 0 0 6px rgba(255, 255, 255, .95), 0 0 0 7.5px rgba(201, 77, 151, .4), 0 18px 34px -14px rgba(156, 58, 116, .5) !important;
}

/* 2. STRAY WATERMARK (home, species -> quote boundary). `.ww-species` carries
      `01-whisper-silhouette-native.png` — a van-wrap working asset — as a section
      background. The shortcode asks for a single bottom-right multiply watermark,
      but it computes to `repeat` at `auto` size, so it tiles and its last partial
      tile is sliced off at the section edge: the "feather poking up" above the
      quote wave. The section's own ::before (ww-feather-whisper) is the intended
      feather decoration and is untouched. */
body.home .ww-sec.ww-species { background-image: none !important; }

/* 3. CLIPPED WASH (home, below the quote). `.ww-quote` is overflow:clip and its
      ::after decorative wash sits at bottom:-160px — the overhang is sliced flat,
      leaving a tinted band with a hard top edge just above the wave. Same defect
      fixed on House Calls in v132. */
body.home .ww-sec.ww-quote::after { display: none !important; }

/* 4. FOOTER. The wordmark is now the real reversed asset, so drop the
      brightness(0) invert(1) hack that was force-whitening the pink logo.
      Four link columns instead of three, so every page and anchor in the main
      nav is reachable from the footer; social moves under the wordmark to buy
      the fourth column its room. */
.ww-fwordmark img { filter: none; }

@media (min-width: 981px) {
  .ww-footer-grid { gap: 64px; align-items: flex-start; }
  .ww-footer-grid > :first-child { flex: 0 0 268px; }
  .ww-footer-cols { display: flex; gap: 48px; flex: 1 1 auto; justify-content: space-between; }
  .ww-fcol { flex: 1 1 auto; min-width: 0; }
  .ww-fcol a { white-space: normal; }
}

/* social row under the wordmark — inherits .ww-fcol link colour, laid out inline */
.ww-fsocial { display: flex; flex-wrap: wrap; gap: 14px; margin-top: 22px; }
.ww-fsocial a {
  display: inline-block; margin: 0;
  font: 500 13px/1 'Jost', sans-serif; letter-spacing: .04em;
  color: rgba(255, 255, 255, .85);
}
.ww-fsocial a:hover { color: #fff; }

@media (max-width: 980px) {
  .ww-fsocial { margin-top: 18px; gap: 16px; }
}

/* The reversed lockup carries "VETERINARY" inside the artwork, so the separate
   gold caps line was removed from the markup as a duplicate. The mark now does
   two lines of work, so it needs a little more height than the old script-only
   wordmark, and the values line gets room to sit on one line. */
.ww-fwordmark img { height: 46px; }
.ww-footer .ww-fvalues { margin-top: 14px; letter-spacing: .16em; }
@media (max-width: 980px) { .ww-fwordmark img { height: 40px; } }

/* Mobile: four columns stacked one-per-row made the footer ~2x taller than the
   page above it. Two-up keeps every link reachable without the marathon scroll.
   Class repeated + !important to clear the older `flex: 1 1 44% !important`
   layer and whatever now outranks it. */
@media (max-width: 980px) {
  .ww-footer .ww-footer-cols.ww-footer-cols {
    display: flex !important; flex-wrap: wrap !important; gap: 26px 18px !important;
  }
  .ww-footer .ww-footer-cols .ww-fcol.ww-fcol {
    flex: 1 1 calc(50% - 9px) !important;
    max-width: calc(50% - 9px) !important;
    min-width: 0 !important;
  }
  .ww-footer .ww-fcol.ww-fcol a { font-size: 12.5px !important; margin-bottom: 9px; }
  .ww-footer .ww-fcol.ww-fcol h5 { margin-bottom: 10px; }
}
/* v134 — footer plum corrected to #27133C.

   Two different plums were meeting at the footer edge: the footer itself was
   #2E1A33 (set in v122) while the swoosh flowing into it — the membership band's
   bottom wave divider — was filled #2A123E. Neither was the intended colour.
   Both are now #27133C so the wave reads as the footer rising, not as a separate
   band sitting on top of it. The divider fills are attributes in page content
   (posts 16 / 33 / 170 / 178 and global library module 36) and are updated there;
   this rule owns the footer surface itself. */
footer.ww-footer, .ww-footer, .ww-fbottom { background-color: #27133C !important; }
/* v135 — one plum, site-wide: #27133C.

   The dark-plum system had drifted into five different values, each introduced by a
   different round: #2E1A33 (navy/DVM strips + footer, v119/v122), #311C36 (the
   lighter layer of the two-tone wave), #2A123E (the swoosh into the footer),
   #241428 -> #3E2445 (stats band), and #1F0C26 -> #3A1745 (memberships hero and
   featured tier). Adjacent surfaces in different plums are exactly why the footer
   seam read as a banding step.

   All dark-plum BASES are now #27133C. Gradients keep their depth by preserving the
   original lift off the base rather than flattening to a single value:
     stats band    #27133C -> #412359 -> #27133C   (was #241428 -> #3E2445, same delta)
     memberships   #27133C -> #421E5B              (was #1F0C26 -> #3A1745, same delta)
     two-tone wave #27133C / #2A153F               (was #2E1A33 / #311C36, same delta)
   Those swaps are made in the layers that own them (base-v95, v119, v122) so the
   concatenated bundle stays the single source of truth; the two wave SVGs are
   base64-baked and were decoded, recoloured and re-encoded.

   NOT changed: #2E1A33 used as TEXT ink on /found-a-wild-animal/ and
   /hospital-policies/. That is body/heading colour, not a plum surface — a separate
   decision, and easy to sweep if wanted. */

/* Backstop: anything still carrying an old plum surface value resolves here. */
.ww-navystrip, .ww-dvmstrip { background: #27133C !important; }
footer.ww-footer, .ww-footer, .ww-fbottom { background-color: #27133C !important; }
/* v136 — Species We Treat: cohesive image system.

   The page ran three different image treatments with no relationship: a 4-up row of
   96px circles, one lone 150px circle marooned in a quarter-column, and two 150px
   circles hand-offset with a negative margin. Both feature rows sat in 1_4 columns,
   so the imagery was tiny and each section carried a large dead zone.

   Both rows are now 1_2,1_2 (page content) and the feature images become large
   rounded rectangles sharing one card language with the rest of the site: 26px
   radius, the standard plum-tinted lift, cover-cropped so no source needs re-cutting.
   Bird-card circles stay circles — a 4-up medallion row is a different, working
   component — but their cards are equalised so the row reads as one band. */

/* ---------- feature images: circles -> large rounded rectangles ---------- */
.ww-repsec .ww-bigmed img,
.ww-repsec .ww-bigmed .et_pb_image_wrap img,
.ww-mamsec .ww-bigmed img,
.ww-mamsec .ww-bigmed .et_pb_image_wrap img {
  width: 100% !important;
  height: auto !important;
  border-radius: var(--wwb-card-radius, 26px) !important;
  border: 0 !important;
  object-fit: cover;
  box-shadow: 0 20px 44px -18px rgba(156, 58, 116, .38) !important;
}
.ww-repsec .ww-bigmed, .ww-mamsec .ww-bigmed { line-height: 0; width: 100%; }
.ww-repsec .ww-bigmed .et_pb_image_wrap,
.ww-mamsec .ww-bigmed .et_pb_image_wrap { display: block; width: 100%; }

/* Reptiles: one wide hero rectangle opposite the copy. */
.ww-repsec .ww-bigmed img { aspect-ratio: 4 / 3; }

/* Small mammals: the pair sits side by side and reads as one unit. The old
   `.ww-bigmed-2 { margin: -22px 0 0 46px }` shingle offset is cleared — it only
   made sense for overlapping circles. */
.ww-mamsec .ww-mam-pics {
  display: flex !important;
  flex-direction: row !important;
  align-items: stretch;
  gap: 18px;
  width: 100%;
}
.ww-mamsec .ww-mam-pics .ww-bigmed { flex: 1 1 0; margin: 0 !important; }
.ww-mamsec .ww-bigmed img { aspect-ratio: 3 / 4; }

/* Rows: images and copy share the vertical centre, and the copy column no longer
   has to fight a quarter-width sibling.
   DESKTOP ONLY — `flex: 1 1 0` on these columns collapses them to ~1px once the row
   flips to flex-direction:column on mobile (the site's long-standing flex trap; every
   custom flex row here needs `flex: 0 0 auto` in the stacked state). */
@media (min-width: 981px) {
  .ww-rep-row, .ww-mam-row { align-items: center; gap: 56px; }
  .ww-rep-row > .et_pb_column, .ww-mam-row > .et_pb_column { flex: 1 1 0 !important; min-width: 0; }
}
@media (max-width: 980px) {
  .ww-rep-row > .et_pb_column, .ww-mam-row > .et_pb_column {
    flex: 0 0 auto !important; width: 100% !important; min-width: 0;
  }
}

/* ---------- bird cards: one band, not four different heights ---------- */
@media (min-width: 981px) {
  /* the row is a Divi 4-up; the columns float by default, so stretch needs the row
     to be flex AND the card (.ww-birdcard, a blurb) to fill its column */
  .ww-birdsec .ww-bird-cards.ww-bird-cards {
    display: flex !important; align-items: stretch !important; flex-wrap: nowrap;
  }
  .ww-birdsec .ww-bird-cards > .et_pb_column {
    display: flex !important; float: none !important; margin-bottom: 0 !important;
  }
  .ww-birdsec .ww-birdcard.ww-birdcard {
    display: flex !important; flex-direction: column; width: 100%; height: auto;
  }
  /* push the subtext down so every card's title sits on the same baseline */
  .ww-birdsec .ww-birdcard .et_pb_blurb_container { display: flex; flex-direction: column; flex: 1 1 auto; }
}

/* ---------- mobile ---------- */
@media (max-width: 980px) {
  .ww-rep-row, .ww-mam-row { gap: 28px; }
  .ww-mamsec .ww-mam-pics { gap: 14px; }
  /* both feature images go 4:3 on phones so the two sections match each other
     and neither runs tall enough to push the copy off-screen */
  .ww-repsec .ww-bigmed img { aspect-ratio: 4 / 3; }
  .ww-mamsec .ww-bigmed img { aspect-ratio: 1 / 1; }
  .ww-repsec .ww-bigmed, .ww-mamsec .ww-bigmed { text-align: center !important; }
}
/* v137 — Gabby's launch-morning round.

   (a) SPLASH. The preloader becomes a deliberate home-page moment instead of a
   toll booth on every click. functions.php gates it to the front page; this layer
   gives it the motion. Nothing animates the bird artwork itself — the effect comes
   from light and scale around it, which reads as "splashy" without redrawing a
   phoenix:
     1. the cream ground breathes a warm blush through it (8s, barely there)
     2. a gold/pink glow blooms out from behind the mark and settles
     3. the mark lands with a soft overshoot, then holds a slow 4s breath
     4. a single diagonal shimmer sweeps across it once, like light on foil
     5. on exit the mark lifts and scales up as the veil lifts away
   All of it is suppressed under prefers-reduced-motion. */
.preloader-plus {
  background-image: radial-gradient(120% 90% at 50% 42%, rgba(251, 225, 121, .22) 0%, rgba(251, 225, 121, 0) 62%),
                    radial-gradient(90% 70% at 50% 58%, rgba(201, 77, 151, .10) 0%, rgba(201, 77, 151, 0) 70%);
  animation: ww-splash-ground 8s ease-in-out infinite alternate;
}
@keyframes ww-splash-ground {
  0%   { background-size: 100% 100%, 100% 100%; }
  100% { background-size: 118% 112%, 112% 118%; }
}

/* glow bloom behind the mark */
.preloader-plus .preloader-content::before {
  content: ""; position: absolute; left: 50%; top: 50%;
  width: 460px; height: 460px; margin: -230px 0 0 -230px; border-radius: 50%;
  background: radial-gradient(circle, rgba(251, 225, 121, .40) 0%, rgba(201, 77, 151, .16) 45%, rgba(201, 77, 151, 0) 70%);
  filter: blur(22px); pointer-events: none; z-index: 0;
  animation: ww-splash-bloom 2600ms cubic-bezier(.22, .61, .36, 1) both;
}
@keyframes ww-splash-bloom {
  0%   { opacity: 0; transform: scale(.55); }
  38%  { opacity: 1; transform: scale(1.06); }
  100% { opacity: .82; transform: scale(1); }
}

/* the mark: entrance -> breath, with a one-pass shimmer */
.preloader-plus .preloader-custom-img {
  position: relative; z-index: 1;
  animation: ww-splash-in 1000ms cubic-bezier(.16, .84, .34, 1.02) both,
             ww-splash-breath 4s ease-in-out 1100ms infinite;
}
@keyframes ww-splash-in {
  0%   { opacity: 0; transform: scale(.86) translateY(10px); }
  100% { opacity: 1; transform: scale(1) translateY(0); }
}
@keyframes ww-splash-breath {
  0%, 100% { transform: scale(1); }
  50%      { transform: scale(1.028); }
}
.preloader-plus .preloader-content { position: relative; }
.preloader-plus .preloader-content::after {
  content: ""; position: absolute; left: 50%; top: 50%;
  width: 200px; height: 200px; margin: -100px 0 0 -100px;
  background: linear-gradient(115deg, rgba(255,255,255,0) 38%, rgba(255,255,255,.55) 50%, rgba(255,255,255,0) 62%);
  pointer-events: none; z-index: 2; opacity: 0;
  animation: ww-splash-shimmer 1500ms ease-in-out 900ms 1 both;
}
@keyframes ww-splash-shimmer {
  0%   { opacity: 0; transform: translateX(-140%) rotate(6deg); }
  35%  { opacity: 1; }
  100% { opacity: 0; transform: translateX(140%) rotate(6deg); }
}

/* exit: the mark lifts away with the veil (overrides v126's fast-out on the mark) */
.preloader-plus.complete .preloader-custom-img {
  opacity: 0 !important;
  transform: scale(1.10) translateY(-8px) !important;
  transition: opacity 420ms ease-out, transform 620ms cubic-bezier(.4, 0, .2, 1) !important;
  animation: none !important;
}
.preloader-plus.complete .preloader-content::before,
.preloader-plus.complete .preloader-content::after { opacity: 0 !important; transition: opacity 300ms ease-out; }

@media (prefers-reduced-motion: reduce) {
  .preloader-plus,
  .preloader-plus .preloader-custom-img,
  .preloader-plus .preloader-content::before,
  .preloader-plus .preloader-content::after { animation: none !important; }
  .preloader-plus .preloader-content::after { display: none; }
}

/* ---------- (c) contact info at the top of every page ---------- */
/* Line 1562 kills the theme-builder utility bar outright; bring it back. The bar
   carries phone, email and Pet Portal on the brand pink. */
.ww-tbheader .ww-util-tb.ww-util-tb { display: flex !important; }
.ww-tbheader .ww-util-tb.ww-util-tb .et_pb_column { margin-bottom: 0 !important; }
.ww-tbheader .ww-util-tb .ww-util-left .et_pb_text_inner,
.ww-tbheader .ww-util-tb .ww-util-right .et_pb_text_inner {
  font: 500 13px/1.4 'Jost', sans-serif; letter-spacing: .02em; color: #FFFFFF;
}
.ww-tbheader .ww-util-tb a { color: #FFFFFF; text-decoration: none; }
.ww-tbheader .ww-util-tb a:hover { text-decoration: underline; }
@media (max-width: 980px) {
  /* phones: keep only the contact side, centred, and give the links real tap area */
  .ww-tbheader .ww-util-tb.ww-util-tb { display: block !important; padding: 7px 18px !important; }
  .ww-tbheader .ww-util-tb .ww-util-left { display: none !important; }
  .ww-tbheader .ww-util-tb .ww-util-right { text-align: center !important; }
  .ww-tbheader .ww-util-tb .ww-util-right .et_pb_text_inner { font-size: 11.5px; line-height: 1.5; }
}

/* ---------- (e) larger header: REVERTED, see v138 ----------
   First attempt scaled --ww-logow-un, which the pill's lens cut-out AND the hero
   padding formula are both derived from — the nav overflowed its 1500px cap
   (Contact pushed outside the pill, CTA colliding with Wildlife) and the logo
   stopped nesting in the notch. Rebuilt conservatively in v138. */

/* ---------- (d) larger intro copy, per her screenshots ---------- */
/* The flagged sections are the centred intro blocks: small type in a narrow measure
   with dead space either side. Bump the size and widen the measure so the copy uses
   the space it was given. Component-scoped, not a global type change. */
@media (min-width: 981px) {
  #main-content .ww-body-m .et_pb_text_inner,
  #main-content .ww-body-m .et_pb_text_inner p,
  #main-content .ww-intro-centered .et_pb_text_inner,
  #main-content .ww-intro-centered .et_pb_text_inner p {
    font-size: 19px !important;
    line-height: 1.72 !important;
  }
  #main-content .ww-intro-centered, #main-content .ww-body-m { max-width: 860px; margin-inline: auto; }
  #main-content .ww-subtitle .et_pb_text_inner,
  #main-content .ww-subtitle .et_pb_text_inner p { font-size: 23px !important; }
}

/* ---------- team headshots replace the initials discs ---------- */
.ww-teamcard .ww-avatar-img img {
  width: 128px; height: 128px; border-radius: 50%; object-fit: cover;
  display: block; margin: 0 auto 4px;
  box-shadow: 0 0 0 6px rgba(255, 255, 255, .9), 0 14px 30px -14px rgba(156, 58, 116, .45);
}
.ww-teamcard .ww-avatar-img { line-height: 0; text-align: center; }
@media (max-width: 980px) {
  .ww-teamcard .ww-avatar-img img { width: 104px; height: 104px; }
}
/* v138 — (e) header enlarged, conservatively.

   Measured baseline before touching anything: nav links 11.92px @1440 / 12.4px @1600
   (fluid, ~0.78vw), CTA 14.1 / 14.9px, logo 99 / 110px.

   The first attempt went to 16.5px with wider item margins AND scaled
   `--ww-logow-un`. Two things broke: the row overflowed its 1500px cap (Contact
   pushed outside the pill, the CTA colliding with Wildlife), and the logo stopped
   nesting in the pill's lens cut-out — because the notch geometry AND the hero
   padding formula are both derived from that variable. Reverted.

   This is the safe version: type only, ~5-8% up, still fluid, no margin changes and
   `--ww-logow-un` untouched, so the lens, the two-state header, the dropdowns and
   the hero spacing all keep the geometry we tuned. */
@media (min-width: 1281px) {
  .ww-tbheader .ww-navm ul.et-menu > li > a { font-size: clamp(12.6px, .84vw, 14px) !important; }
  .ww-tbheader .ww-navm li.ww-menu-cta > a  { font-size: clamp(14.8px, .98vw, 16px) !important; }
}

/* (c) side-effect: `.ww-lockup-row` is absolutely positioned at top:50px inside the
   header, so adding the utility bar pushed the nav pill down while the logo stayed
   put — the logo stopped nesting in the pill's lens cut-out. Offset the lockup by
   the bar's height so the notch lines up again. Desktop only; the mobile header is
   a different component and already correct. */
@media (min-width: 1281px) {
  .ww-tbheader .ww-lockup-row { top: 86px !important; }
}

/* (h) About stays about the practice: Dr. Zonenshine's personal bio and the
   credentials/expertise band move to Our Team. The band was physically relocated
   into page 122 (it existed nowhere else, so hiding alone would have lost it);
   both are hidden here on About. Her full bio already lives on Our Team.
   (i) Media & Speaking hidden until she sends links. */
body.page-id-43 .ww-sec.ww-biosec,
body.page-id-43 .ww-sec.ww-statsband,
body.page-id-43 #media { display: none !important; }
/* v139 — splash, take two (Nick: no reflection; glow + subtle pulse; run a few
   full cycles, never cut off; then fade gently to the page).

   Changes from v137:
   - the diagonal shimmer/reflection sweep is removed entirely
   - the mark now GLOWS: a warm gold-into-pink halo that breathes in sync with it
   - the pulse is a fixed 3 cycles, not an open-ended loop, so the motion always
     completes rather than being interrupted mid-beat by the page appearing
   - the exit is a plain soft fade (no scale-off), per "subtly fade to the home page"

   Timing contract, matched exactly by the JS floor in functions.php:
     0 -> 800ms     mark and glow ease in
     800 -> 3500ms  3 pulse cycles at 900ms
     3500ms         veil begins its fade; page underneath is already painted
   The JS will not release the veil early even if the page finishes loading first. */

/* kill the reflection sweep from v137 */
.preloader-plus .preloader-content::after { display: none !important; content: none !important; }

/* the glow: breathes with the mark, same 900ms beat, 3 cycles then holds */
.preloader-plus .preloader-content::before {
  content: ""; position: absolute; left: 50%; top: 50%;
  width: 420px; height: 420px; margin: -210px 0 0 -210px; border-radius: 50%;
  background: radial-gradient(circle,
              rgba(251, 225, 121, .55) 0%,
              rgba(252, 168, 97, .30) 34%,
              rgba(201, 77, 151, .16) 56%,
              rgba(201, 77, 151, 0) 72%);
  filter: blur(26px); pointer-events: none; z-index: 0;
  animation: ww-glow-in 800ms cubic-bezier(.22, .61, .36, 1) both,
             ww-glow-pulse 900ms ease-in-out 800ms 3 both;
}
@keyframes ww-glow-in {
  0%   { opacity: 0; transform: scale(.6); }
  100% { opacity: 1; transform: scale(1); }
}
@keyframes ww-glow-pulse {
  0%, 100% { opacity: .85; transform: scale(1); }
  50%      { opacity: 1;   transform: scale(1.13); }
}

/* the mark: eases in, then pulses 3 full cycles and settles */
.preloader-plus .preloader-custom-img {
  position: relative; z-index: 1;
  animation: ww-mark-in 800ms cubic-bezier(.16, .84, .34, 1.02) both,
             ww-mark-pulse 900ms ease-in-out 800ms 3 both;
}
@keyframes ww-mark-in {
  0%   { opacity: 0; transform: scale(.88); }
  100% { opacity: 1; transform: scale(1); }
}
@keyframes ww-mark-pulse {
  0%, 100% { transform: scale(1); }
  50%      { transform: scale(1.045); }
}

/* exit: a plain gentle fade of the whole veil — the mark rides it out, no scale-off */
.preloader-plus.complete .preloader-custom-img {
  opacity: 1 !important;
  transform: none !important;
  transition: none !important;
  animation: none !important;
}
.preloader-plus.complete .preloader-content::before {
  opacity: .85 !important; animation: none !important; transition: none !important;
}

@media (prefers-reduced-motion: reduce) {
  .preloader-plus .preloader-custom-img,
  .preloader-plus .preloader-content::before { animation: none !important; }
}
/* v140 — Olivia's review + Gabby's latest. Three of these are regressions from
   today's own changes, so they're fixed at the cause rather than patched over.

   1. LOGO CLIPPING THE PINK BANNER (sitewide, worst on phones). The utility bar
      added for Gabby's (c) sits in normal flow at the top, but the mobile header
      pill is position:fixed — so the pill painted straight over the bar, leaving
      only slivers of pink at either side. Rather than fight two positioning models
      on launch day, the bar is desktop-only, which is where it reads well anyway;
      the phone number already sits in the mobile menu and the footer. */
@media (max-width: 980px) {
  .ww-tbheader .ww-util-tb.ww-util-tb { display: none !important; }
}

/* 2. "HEADER SITS TOO FAR DOWN." The 36px bar pushed every hero down by its own
      height. Give it back by restating v125's hero-padding bands 36px shorter, so
      the nav-to-headline gap returns to what we tuned (150px home / 130px interior).
      Only the >=981 bands, since the bar is now desktop-only. Specificity (1,4,1)
      matches v125's own rules and wins on order. */
@media (min-width: 1281px) {
  body #page-container .ww-sec.ww-hero.ww-hero {
    padding-top: calc(var(--ww-logow-un) * 1.5629 + min(69.6px, 4.086vw) + 150px) !important;
  }
  body #page-container .ww-sec.ww-pagehero.ww-pagehero,
  body #page-container .ww-sec.ww-abouthero.ww-abouthero,
  body #page-container .ww-sec.ww-memhero.ww-memhero {
    padding-top: calc(var(--ww-logow-un) * 1.5629 + min(69.6px, 4.086vw) + 140px) !important;
  }
}
@media (min-width: 981px) and (max-width: 1280px) {
  body #page-container .ww-sec.ww-hero.ww-hero,
  body #page-container .ww-sec.ww-pagehero.ww-pagehero,
  body #page-container .ww-sec.ww-abouthero.ww-abouthero,
  body #page-container .ww-sec.ww-memhero.ww-memhero { padding-top: 170px !important; }
}

/* 3. THE BAR ABOVE THE FOOTER BLENDS INTO IT. Unifying every plum to #27133C left
      the pre-footer strips the same value as the footer, so the boundary vanished
      (it used to read as dark blue against plum). Lift the strips one step —
      still the same plum family, but a visible step down into the footer. */
.ww-navystrip, .ww-dvmstrip { background: #35205A !important; }

/* 4. Breathing room between the utility bar and the logo. With the bar in place the
      lockup sat flush against its bottom edge — Olivia read that as the logo
      "clipping into the banner". 14px of clearance reads as deliberate. */
@media (min-width: 1281px) {
  .ww-tbheader .ww-lockup-row { top: 100px !important; }
}
/* v141 — Olivia: "bird feet graphic is duplicated and stretched" (phone).

   `01-whisper-silhouette-native.png` — the same van-wrap WORKING asset that was
   already causing the clipped-feather artifact on Species — is also set as a
   section background on the home hero and the membership band at
   `background-size: 210%` with multiply blend. On a 390px viewport that renders
   the image 819px wide: hugely zoomed, arbitrarily cropped, and reading as a
   stretched duplicate of the decorative feet. It was authored for wide desktop
   canvases and does not survive the phone.

   Dropped on phones only — desktop keeps the intended watermark. The sections'
   own feather-whisper layers are untouched, so the decoration is not lost. */
@media (max-width: 980px) {
  body.home .ww-sec.ww-hero,
  body.home .ww-sec.ww-mem { background-image: none !important; }
}
/* v142 — new-client reassurance under the primary CTA.

   DaySmart's booking portal opens on a screen headed "exclusive to clients of
   veterinary practices that use DaySmart Vet software" and asks for a phone
   number "to find your profile". Verified with a real number that has never been
   a client: it sends a code and proceeds to the form, so registration is NOT
   blocked — the wording just tells first-time visitors it is. One quiet line
   under the button removes the doubt without over-explaining someone else's UI. */
.ww-newclient-note .et_pb_text_inner p {
  margin: 12px 0 0;
  font: 400 14px/1.5 'Jost', sans-serif;
  color: rgba(36, 31, 46, .72);
  text-align: center;
}
/* the site's mobile body-copy layer outranks a plain class selector here and was
   rendering this note at 17px — larger than its own desktop size. Repeat the class
   and scope under #main-content to win. */
@media (max-width: 980px) {
  #main-content .ww-newclient-note.ww-newclient-note .et_pb_text_inner p,
  #main-content .ww-newclient-note.ww-newclient-note .et_pb_text_inner {
    font-size: 14px !important; line-height: 1.5 !important; margin-top: 10px;
  }
}
/* v143 — the utility bar must PUSH the header assembly down, not sit behind it.

   Measured: `.et-l--header` contributes only 36px of document flow (the bar
   itself). The logo (`.ww-desktop-logo`) and the nav pill (`.ww-navm`) are
   absolutely positioned from y=0, so the bar does not move them — the logo sat at
   top:29px against a bar ending at 36px, putting its top 7px behind the bar at
   every width (1300/1440/1600/1920 all measured clipped:true).

   My earlier attempt moved `.ww-lockup-row`, which is the WRONG element — it has
   zero height and is not what renders the logo. Those rules are neutralised below.

   Fix: translate the whole floating assembly down by the bar's height so it clears
   it, and restore the hero padding that v140 removed (v140 assumed the bar had
   pushed the heroes down; it had not — it only ever pushed the section boxes).
   Excluded from the scrolled state, where the bar has scrolled away and the header
   is fixed — shifting there would leave the nav 36px too low. */
@media (min-width: 981px) {
  /* ONLY the outer nav container. `.ww-desktop-logo` is a DESCENDANT of `.ww-navm`
     (ww-desktop-logo > ww-crest > et_pb_menu), so transforming both shifted the logo
     72px against the pill's 36px and broke their nesting by exactly 36px. Shifting
     the container alone moves the whole assembly and preserves the lens geometry. */
  body:not(.ww-stuck) .ww-tbheader .ww-navm {
    transform: translateY(36px);
  }
  /* the earlier mis-targeted offsets, cancelled */
  .ww-tbheader .ww-lockup-row { top: 50px !important; }
}

/* Restore v125's hero padding: with the assembly shifted down, the nav-to-headline
   gaps return to the tuned 150/130 without v140's -36 compensation. */
@media (min-width: 1281px) {
  body #page-container .ww-sec.ww-hero.ww-hero {
    padding-top: calc(var(--ww-logow-un) * 1.5629 + min(69.6px, 4.086vw) + 186px) !important;
  }
  body #page-container .ww-sec.ww-pagehero.ww-pagehero,
  body #page-container .ww-sec.ww-abouthero.ww-abouthero,
  body #page-container .ww-sec.ww-memhero.ww-memhero {
    padding-top: calc(var(--ww-logow-un) * 1.5629 + min(69.6px, 4.086vw) + 176px) !important;
  }
}
/* 981-1280 keeps v140's shorter value: that band uses the COMPACT 76px header,
   which is in flow and never overlays, so the +36 restoration does not apply
   there — it measured 176/166 against a 140/130 target. */
@media (min-width: 981px) and (max-width: 1280px) {
  body #page-container .ww-sec.ww-hero.ww-hero,
  body #page-container .ww-sec.ww-pagehero.ww-pagehero,
  body #page-container .ww-sec.ww-abouthero.ww-abouthero,
  body #page-container .ww-sec.ww-memhero.ww-memhero { padding-top: 170px !important; }
}
/* v144 — visual review pass, homepage desktop + mobile.
   Both of these are specificity losses, not layout mistakes: a correct rule was
   already in the sheet and was being outranked. Fixed by out-specifying at the
   source rather than stacking another !important on the loser. */

/* 1. HERO: "New client? Start here…" was CENTRED under a LEFT-aligned button pair.
      The module and column are text-align:left; the <p> Divi emits carries its own
      centre. Everything else in that column starts at the button's optical left
      edge (x=108 — the module box is 100, the button wrapper insets 8px), so match
      it. Desktop only: on phones the buttons go full-width and centred is correct. */
@media (min-width: 981px) {
  #main-content .ww-newclient-note .et_pb_text_inner,
  #main-content .ww-newclient-note .et_pb_text_inner p { text-align: left !important; }
  /* the 8px goes on ONE box only — putting it on both nested it twice and the
     ink landed at 116 instead of the button's 108. */
  #main-content .ww-newclient-note .et_pb_text_inner { padding-left: 8px; }
}

/* 2. FOOTER BOTTOM BAR, phones and tablets. `.ww-fbottom-in a { display:inline-block }`
      already existed at <=980 but scores (0,2,0) and lost to the footer-wide
      `.et-l--footer .et_pb_code_inner a { display:block }` at (0,3,0) — so the phone
      number and the email each took their own line and the "·" separator was
      stranded alone on a third. The <=767 band also pushed the links to 14.5px
      against the 12.5px they sit in. This selector is (0,4,0) and wins outright. */
.et-l--footer .ww-fbottom .ww-fbottom-in a {
  display: inline !important;
  font-size: inherit !important;
  line-height: inherit !important;
  padding: 0 !important;
  margin: 0 !important;
}
.et-l--footer .ww-fbottom .ww-fbottom-in > span { width: 100%; }

/* 3. FOOTER LINK COLUMNS, phones — ATTEMPTED AND REVERTED.
      Forcing the (already-present but out-specified) `display:grid` made it far
      worse: `.ww-footer-cols` is a flex ITEM of `.ww-footer-grid`, and as a grid
      its min-content width drove the whole block down to one ~90px column with
      every link wrapping. Same flex/grid-inside-flex collapse documented earlier
      in this build. The wrapped-flex layout stays; the second-row heading
      misalignment is chased at its real cause instead.

      THE REAL CAUSE: the third `.ww-fcol` (Wildlife & Learning) carries
      `margin-top: 32px` while the fourth (Connect) carries 0 — so one of the two
      items on the wrapped second line was pushed down and the row read ragged.
      The container already supplies the row spacing via `gap: 26px 18px`, so the
      margin is a duplicate. Drop it and both second-row headings land on 14014. */
@media (max-width: 980px) {
  .ww-footer .ww-footer-cols > .ww-fcol { margin-top: 0 !important; }
}
/* v145 — Nick's homepage screenshots, 8/14.

   1. HERO CTAs ON ONE LINE.
   2. Conservation Corner optically centred in its pink band.
   3. Concierge Memberships: real clearance under the stroked frame.

   For 2 and 3 the number that matters is NOT the section padding — it's what's
   left of the padding after the swoosh divider eats into it. Both sections carry
   120px inside-dividers top and bottom, so the visible pink margin around the
   content is (padding - 120). That's why they read lopsided while the raw padding
   values looked reasonable. */

/* ---------- 1. hero: Book Appointment + DVM Consult side by side ----------
   Both button wrappers are already inline-block; they stacked only because the
   "New client?" text module sits BETWEEN them in the DOM and breaks the line.
   Rather than restructure the layout (module order drives Divi's global
   et_pb_button_N / et_pb_text_N counters), reorder visually: the column becomes a
   wrapping flex, everything defaults to a full-width row, and the two buttons opt
   out to auto width with the note ordered after them.
   Also normalises the 8px left offset that had button_1 sitting proud of
   button_0 — visible in Nick's screenshot as two CTAs that didn't line up. */
@media (min-width: 981px) {
  .ww-sec.ww-hero .et_pb_row .et_pb_column {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-start;
    align-content: flex-start;
  }
  .ww-sec.ww-hero .et_pb_row .et_pb_column > * { flex: 0 0 100%; order: 0; }
  .ww-sec.ww-hero .et_pb_row .et_pb_column > .et_pb_button_module_wrapper {
    flex: 0 0 auto;
    margin-left: 0 !important;
    margin-right: 0 !important;
  }
  .ww-sec.ww-hero .et_pb_row .et_pb_column > .et_pb_button_0_wrapper { order: 1; margin-right: 14px !important; }
  .ww-sec.ww-hero .et_pb_row .et_pb_column > .et_pb_button_1_wrapper { order: 2; }
  /* the note drops below the pair and keeps the left edge set in v144 */
  .ww-sec.ww-hero .et_pb_row .et_pb_column > .ww-newclient-note {
    order: 3;
    margin-top: 18px !important;
  }
}

/* ---------- 2. Conservation Corner, optically centred ----------
   Measured at 1440: section 160 top / 112 bottom, row adds 50 either side, and
   both dividers are 120. Net visible pink was 90 above the content and 42 below,
   so it sat low. 136/136 evens it to 66/66. */
@media (min-width: 768px) {
  body #page-container .ww-sec.ww-cons {
    padding-top: 136px !important;
    padding-bottom: 136px !important;
  }
}
/* phones run 80px dividers instead of 120, and the same lopsided 90/42 split.
   96/96 lands the same 66/66 there. */
@media (max-width: 767px) {
  body #page-container .ww-sec.ww-cons {
    padding-top: 96px !important;
    padding-bottom: 96px !important;
  }
}

/* ---------- 3. Concierge Memberships, clearance under the frame ----------
   The stroked `.ww-mem-frame` was ending 12px above the bottom swoosh — the box
   looked like it was falling out of the section. 160/132 padding minus the two
   120px dividers left 40 above and 12 below; 176/176 gives 56 and 56. */
@media (min-width: 768px) {
  body #page-container .ww-sec.ww-mem {
    padding-top: 176px !important;
    padding-bottom: 176px !important;
  }
}
/* Worse on small screens than on desktop, and worse again on tablet: the frame
   crossed INTO the swoosh by 8px at 390 and by 48px at 768. 128/128 against the
   80px phone divider gives 48 of clear pink either side. */
@media (max-width: 767px) {
  body #page-container .ww-sec.ww-mem {
    padding-top: 128px !important;
    padding-bottom: 128px !important;
  }
}
/* v146 — Our Team (page 122), Nick's round.

   The bottom swoosh on the Credentials Band is NOT here — it's a real Divi
   divider added to the section shortcode (bottom_divider_style="wave2",
   #FFFFFF, 120px, flipped horizontally so it isn't a mechanical mirror of the
   top). Its custom_padding also went 72px -> 160px on the bottom, because a
   120px divider would otherwise have eaten the whole bottom pad and put the
   credentials on top of the wave — the same overlap fixed on the homepage in
   v145. Doing it as a divider rather than a CSS pseudo-element keeps it inside
   Divi's own system, so the section still behaves in the builder. */

/* ---------- bio cards ---------- */

/* 1. THE CLIPPED "READ FULL BIO". The card carries border-radius:26px with
      overflow:hidden and zero padding, over a transparent background — so the
      radius clips content for no visual gain, and the summary link sits low
      enough on the card to lose its first letter to the bottom-left curve.
      Nothing paints a rounded edge here, so the clip just goes. */
body.page-id-122 .ww-teamcard {
  overflow: visible !important;
}

/* 2. LEFT-ALIGN the whole card — photo, name, credentials, copy. The avatar was
      centred by an auto right margin, not by text-align, so both have to go. */
body.page-id-122 .ww-teamcard,
body.page-id-122 .ww-teamcard .ww-team-name,
body.page-id-122 .ww-teamcard .ww-team-name .et_pb_text_inner,
body.page-id-122 .ww-teamcard .ww-team-name h3,
body.page-id-122 .ww-teamcard .ww-team-role,
body.page-id-122 .ww-teamcard .ww-team-role .et_pb_text_inner,
body.page-id-122 .ww-teamcard .ww-avatar-img {
  text-align: left !important;
}
body.page-id-122 .ww-teamcard .ww-avatar-img img {
  margin-left: 0 !important;
  margin-right: 0 !important;
}
body.page-id-122 .ww-teamcard .ww-avatar-img { margin-right: 0 !important; }

/* 3. BIGGER TYPE. Bio copy was 14/22.4 — too small next to the founder card
      above it. 16/1.68 matches the body size used elsewhere on the site. The
      credentials line and the disclosure link come up a notch with it. */
body.page-id-122 .ww-teamcard .ww-team-bio .et_pb_text_inner,
body.page-id-122 .ww-teamcard .ww-team-bio .et_pb_text_inner p,
body.page-id-122 .ww-teamcard .ww-bio-more p {
  font-size: 16px !important;
  line-height: 1.68 !important;
}
body.page-id-122 .ww-teamcard .ww-team-role .et_pb_text_inner {
  font-size: 13px !important;
  line-height: 1.5 !important;
}
body.page-id-122 .ww-teamcard .ww-bio-more > summary {
  font-size: 13px !important;
}

/* 4. SHANNON AND LU HIDDEN, temporarily, at Gabby's request. nth-child rather
      than the et_pb_column_N classes — those are page-global counters that
      renumber if the layout is ever edited, and this is meant to come back out.
      With one card left the row would strand it at the far left, so the row
      centres it; desktop only, since the mobile row is column-direction and
      justify-content there would push it on the wrong axis. */
body.page-id-122 .ww-frow > .ww-teamcard:nth-child(2),
body.page-id-122 .ww-frow > .ww-teamcard:nth-child(3) {
  display: none !important;
}
@media (min-width: 981px) {
  body.page-id-122 .ww-teamsec .ww-frow { justify-content: center; }
}
/* v147 — Our Team, second pass. Fixes two things v146 caused.

   Hiding two of the three cards left the third as the only flex item on the row,
   so it grew to the full 1240px. That cascaded:
     - the card sat at the far left, `justify-content: center` having nothing to
       centre (one item filling the line is already "centred")
     - Divi sets `.et_pb_column .et_pb_module { margin-bottom: 4.7619% }` — a
       PERCENTAGE, resolved against the column width. At 395px that's 19px; at
       1240px it became 59px, which is the huge photo-to-name and name-to-role
       gaps in the render.

   Rather than pin the lone card back to a third of the row — a 388px column
   stranded under a full-width heading reads as "something is missing" — it takes
   the same shape as the founder card directly above it: portrait left, text
   right. Cohesive with the page's own pattern, and it comes straight back out
   when Shannon and Lu are unhidden, since the rule is keyed to the single-card
   state. */

@media (min-width: 981px) {
  body.page-id-122 .ww-frow > .ww-teamcard:nth-child(1) {
    display: grid !important;
    grid-template-columns: 220px minmax(0, 1fr);
    grid-template-rows: auto auto minmax(0, 1fr);
    column-gap: 52px;
    align-content: start;
    width: 100% !important;
    min-width: 0;
  }

  /* kill the percentage margins outright and set the rhythm explicitly, so the
     spacing no longer depends on how wide the column happens to be */
  body.page-id-122 .ww-frow > .ww-teamcard:nth-child(1) > .et_pb_module {
    margin-bottom: 0 !important;
    margin-top: 0 !important;
  }

  body.page-id-122 .ww-frow > .ww-teamcard:nth-child(1) > .ww-avatar-img {
    grid-column: 1;
    grid-row: 1 / span 3;
  }
  body.page-id-122 .ww-frow > .ww-teamcard:nth-child(1) > .ww-team-name {
    grid-column: 2;
    grid-row: 1;
  }
  body.page-id-122 .ww-frow > .ww-teamcard:nth-child(1) > .ww-team-role {
    grid-column: 2;
    grid-row: 2;
    margin-top: 8px !important;
  }
  body.page-id-122 .ww-frow > .ww-teamcard:nth-child(1) > .ww-team-bio {
    grid-column: 2;
    grid-row: 3;
    margin-top: 20px !important;
    max-width: 68ch;
  }

  /* the portrait carries the left column at 128px, so it comes up to match the
     founder photo's presence */
  body.page-id-122 .ww-frow > .ww-teamcard:nth-child(1) .ww-avatar-img img {
    width: 200px !important;
    height: 200px !important;
  }
}

/* Phones keep the stacked card. The column is full-width there too, but at
   ~342px the 4.7619% margin resolves to a sane 16px, so it's left alone. */
/* v148 — Our Team, third pass.

   v147's grid fixed the shape but not the composition: the card still started at
   the row's left edge and ran out at ~1035, leaving a 300px void on the right
   under a CENTRED heading. Reading the two together, the block looked snapped to
   the left for no reason.

   Constrain the card to 900px and centre it, so it sits under the middle of
   "Meet the rest of the flock". 900 = 220 portrait + 52 gutter + 628 of text,
   which is the measure the bio wants anyway — so the `68ch` cap on the bio comes
   off and the text column simply fills its track. */
@media (min-width: 981px) {
  body.page-id-122 .ww-frow > .ww-teamcard:nth-child(1) {
    max-width: 900px !important;
    margin-left: auto !important;
    margin-right: auto !important;
  }
  body.page-id-122 .ww-frow > .ww-teamcard:nth-child(1) > .ww-team-bio {
    max-width: none;
  }
}
/* v149 — Our Team, founder card readability.

   The founder bio column is 892px wide (448 -> 1340) and the copy fills all of
   it, so lines run to ~105 characters. Comfortable measure is 60-75; past about
   85 the eye loses the line return and long-form copy reads as a wall. This is
   the longest single body of text on the site, so it's the one place the measure
   actually matters.

   (Measured after: 72ch still rendered 821px / ~85 chars in Jost, whose ch is a
   wide 0.6em. 62ch lands ~710px / ~75 chars.)

   A sticky portrait was tried here to also use up the dead left rail (the photo
   ends at y1248 while the column runs to y2470) — Nick removed it 8/14. The rail
   stays empty below the portrait; only the measure cap remains. */
@media (min-width: 981px) {
  body.page-id-122 .ww-foundersec .ww-founder-row .et_pb_column_2 .et_pb_text .et_pb_text_inner {
    max-width: 62ch;
  }
}
/* v150 — credentials band, responsive padding for the new bottom swoosh.

   Adding the bottom divider in the shortcode set the DESKTOP padding to
   160/160, which reads 40px clear of both swooshes at 1440. Below that the band
   still used the padding it had when there was no bottom wave, so the new one
   ran straight into the credentials:

       768 -> above 40, below -48   (content 48px INSIDE the swoosh)
       390 -> above -16, below -8   (crossing both)

   Dividers are 120px at >=768 and 80px below it, so the padding has to band with
   them. These values put a consistent 40px of clear plum on every side at every
   width. */
@media (min-width: 768px) {
  body #page-container .ww-sec.ww-statsband {
    padding-top: 160px !important;
    padding-bottom: 160px !important;
  }
}
@media (max-width: 767px) {
  body #page-container .ww-sec.ww-statsband {
    padding-top: 120px !important;
    padding-bottom: 120px !important;
  }
}
/* v151 — "Read full bio" becomes a close control once the bio is open.

   `.ww-bio-more` is a native <details>/<summary>. Its label is a real text node,
   so it can't be swapped in CSS directly — instead the node is collapsed to
   font-size 0 and the visible label is drawn with pseudo-elements, which can
   then change on [open]. Verified first that the summary carries no existing
   ::before/::after and `list-style: none` kills the marker, so nothing is being
   clobbered.

   The label sits on ::before and the close glyph on ::after, split rather than
   packed into one string: "×" is a math symbol that sits at x-height, so inside
   an all-caps letterspaced label it read small and weak. Its own box lets it
   take U+2715 at a size and baseline that match the caps.

   Everything else about the control is inherited untouched — uppercase, 1.82px
   tracking, #C94D97, the 1px underline, the 6px/2px padding — so it stays the
   same object, just relabelled.

   Trade-off worth knowing: the DOM text stays "Read full bio" in both states, so
   a screen reader announces that plus the expanded/collapsed state <details>
   exposes natively, which reads correctly either way. Changing the accessible
   name too would need JS on the toggle; not worth touching functions.php for on
   launch day. */
body.page-id-122 .ww-teamcard .ww-bio-more > summary {
  font-size: 0 !important;
  cursor: pointer;
}
body.page-id-122 .ww-teamcard .ww-bio-more > summary::before {
  content: "Read full bio";
  font-size: 13px;
}
body.page-id-122 .ww-teamcard .ww-bio-more[open] > summary::before {
  content: "Close";
}
body.page-id-122 .ww-teamcard .ww-bio-more[open] > summary::after {
  content: "\2715";
  font-size: 11px;
  letter-spacing: 0;
  margin-left: 6px;
  position: relative;
  top: -0.5px;
}
/* v152 — remove the sticky founder portrait on Our Team (Nick, 8/14).

   Correction to what v149 assumed: the portrait was ALREADY sticky before this
   session. Three earlier rules set it, and v149 only nudged the offset:

     .ww-founder-img                                  position:sticky; top:210px
     body.page-id-122 .ww-founder-img                 position:sticky; top:140px
     .ww-founder-row > .et_pb_column:first-child      position:sticky; top:120px

   So dropping v149's rule alone left it sticky. All three have to be unset —
   both the column (which is what actually pins on this page) and the image
   module inside it. Scoped to page 122, since that's the page under review and
   the founder row is used elsewhere in the theme. */
body.page-id-122 .ww-foundersec .ww-founder-row > .et_pb_column:first-child,
body.page-id-122 .ww-foundersec .ww-founder-row .et_pb_column_1,
body.page-id-122 .ww-founder-img {
  position: static !important;
  top: auto !important;
}
/* v153 — About page (43): Nick's round.

   ---------------------------------------------------------------------------
   1. THE DOUBLE WAVE BELOW THE HERO
   ---------------------------------------------------------------------------
   Two 120px dividers stack at the same boundary (y1072-1192 and y1192-1312):
   the hero's bottom wave in #FFFFFF, then the pillars section's top wave in
   #2A153F. The plum one is orphaned — it was drawn to transition out of the
   plum credentials band, and v138 hid that band on this page, so it now floats
   as a dark stripe in white space. The cream->white boundary only needs one
   wave, and the hero's white one is the correct one.

   Hidden in CSS rather than removed from the shortcode on purpose: everything
   below keys off `nth-of-type` within this section, and deleting the divider
   would shift every index by one. It also makes the plum wave trivial to
   restore if the credentials band ever comes back to this page. */
body.page-id-43 .ww-pillars-sec > .et_pb_top_inside_divider { display: none !important; }

/* ---------------------------------------------------------------------------
   2. FIVE PILLARS AS A TWO-COLUMN CARD GRID
   ---------------------------------------------------------------------------
   Each pillar is its own full-width `.et_pb_row`, so the section itself becomes
   the grid and the rows become its items. Section children in order:
     (1) top divider  (2) heading row  (3..7) pillars 01-05
     (8) promise row  (9) bottom divider

   The inline padding reproduces `.ww-sec .et_pb_row`'s own geometry —
   `calc(100% - 200px)` capped at 1240 — so the grid lines up with every other
   row on the site at any viewport. Absolutely-positioned children (the two
   dividers) resolve against the section's padding BOX, not its content box, so
   they stay full-bleed.

   05 spans both columns. Five items in two columns leaves an odd one out; a
   full-width final card reads as a deliberate capstone rather than a gap, and
   gives Conservation the weight it deserves as the closing idea. */
@media (min-width: 981px) {
  body.page-id-43 .ww-pillars-sec {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    column-gap: 28px;
    row-gap: 28px;
    padding-left: max(100px, calc((100% - 1240px) / 2));
    padding-right: max(100px, calc((100% - 1240px) / 2));
  }
  body.page-id-43 .ww-pillars-sec > .et_pb_row {
    width: 100% !important;
    max-width: none !important;
    margin-left: 0 !important;
    margin-right: 0 !important;
  }
  /* heading, capstone pillar and promise run the full width */
  body.page-id-43 .ww-pillars-sec > .et_pb_row:nth-of-type(2),
  body.page-id-43 .ww-pillars-sec > .et_pb_row:nth-of-type(7),
  body.page-id-43 .ww-pillars-sec > .et_pb_row:nth-of-type(8) {
    grid-column: 1 / -1;
  }
  /* paired cards match height within their grid row */
  body.page-id-43 .ww-pillars-sec > .et_pb_row:has(> .ww-pillar),
  body.page-id-43 .ww-pillars-sec .ww-pillar { height: 100%; }
}

/* ---------------------------------------------------------------------------
   3. THE CARD ITSELF
   ---------------------------------------------------------------------------
   `.ww-pillar` was a transparent column. Nick asked for cards, so it takes the
   site's existing card language — but warm rather than the homepage's
   `rgba(255,255,255,.75)`, which would vanish against this section's white
   gradient. The cream/gold pairing is the same one used by the species and
   promise cards. */
body.page-id-43 .ww-pillars-sec .ww-pillar {
  background: linear-gradient(180deg, #FFFDF9 0%, #FDF6EC 100%);
  border: 1px solid rgba(227, 190, 127, .42);
  border-radius: 22px;
  box-shadow: 0 16px 40px -18px rgba(156, 58, 116, .18);
  padding: 38px 34px 34px !important;
}
@media (max-width: 980px) {
  body.page-id-43 .ww-pillars-sec .ww-pillar { padding: 28px 22px 26px !important; }
}

/* the 36x3 rule above the number — Nick: remove */
body.page-id-43 .ww-pillars-sec .ww-pillar-rule { display: none !important; }

/* ---------------------------------------------------------------------------
   4. ICON DISC, AND THE NUMBER DEMOTED TO MAKE ROOM
   ---------------------------------------------------------------------------
   Same disc as the homepage pillars: a white circle, the icon at 34px, and a
   soft plum shadow. The number drops from 44px/600 to a 13px tracked label so
   it reads as an index rather than the headline of the card.

   Icons: Excellence and Conservation reuse the existing set. Dignity, Education
   and Connection were drawn for this — same 64x64 box and the same
   #EE3D9C -> #F0705E -> #F2A65A gradient as every other icon in the system. */
body.page-id-43 .ww-pillars-sec .ww-pillar-num .et_pb_text_inner {
  font-size: 13px !important;
  font-weight: 600 !important;
  letter-spacing: .2em !important;
  line-height: 1.2 !important;
  color: rgba(201, 77, 151, .85) !important;
}
body.page-id-43 .ww-pillars-sec .ww-pillar-num .et_pb_text_inner::before {
  content: "";
  display: block;
  width: 72px;
  height: 72px;
  margin: 0 0 18px;
  border-radius: 50%;
  background-color: #FFFFFF;
  background-repeat: no-repeat;
  background-position: center;
  background-size: 34px 34px;
  box-shadow: 0 10px 26px -12px rgba(156, 58, 116, .45),
              0 0 0 1px rgba(255, 255, 255, .9);
}
body.page-id-43 .ww-pillars-sec > .et_pb_row:nth-of-type(3) .ww-pillar-num .et_pb_text_inner::before {
  background-image: url("/wp-content/themes/divi-child/images/ww-icon-dignity.svg");
}
body.page-id-43 .ww-pillars-sec > .et_pb_row:nth-of-type(4) .ww-pillar-num .et_pb_text_inner::before {
  background-image: url("/wp-content/themes/divi-child/images/ww-icon-expertise.svg");
}
body.page-id-43 .ww-pillars-sec > .et_pb_row:nth-of-type(5) .ww-pillar-num .et_pb_text_inner::before {
  background-image: url("/wp-content/themes/divi-child/images/ww-icon-education.svg");
}
body.page-id-43 .ww-pillars-sec > .et_pb_row:nth-of-type(6) .ww-pillar-num .et_pb_text_inner::before {
  background-image: url("/wp-content/themes/divi-child/images/ww-icon-connection.svg");
}
body.page-id-43 .ww-pillars-sec > .et_pb_row:nth-of-type(7) .ww-pillar-num .et_pb_text_inner::before {
  background-image: url("/wp-content/themes/divi-child/images/ww-icon-conservation.svg");
}

/* ---------------------------------------------------------------------------
   5. THE WANDERING WINGS PROMISE
   ---------------------------------------------------------------------------
   The copy is wrapped in <strong> in the content, so it rendered at 700 while
   the paragraph around it sits at 400 — that's the heaviness Nick flagged. Back
   to normal weight. The italic stays: it's what marks this as the section's
   closing statement rather than more body copy.

   Selected by "the column in this section that is NOT a pillar card", which
   survives any renumbering of Divi's global et_pb_text_N counters. */
body.page-id-43 .ww-pillars-sec .et_pb_column:not(.ww-pillar) .ww-body-m strong {
  font-weight: 400 !important;
}
/* v154 — About pillars, second pass. Two things v153 caused or exposed.

   1. NESTED DOUBLE CARD. The pillar ROW already carried the site's card
      treatment — rounded corners, cream fill, the pink-to-gold hairline across
      the top. v153 added a second card to the `.ww-pillar` COLUMN inside it, so
      every pillar rendered as a box inside a box, with two borders and two
      radii. The row's card is the established one, so the column's comes back
      out and the column stops being a card again.

      With the column no longer a card it shouldn't be padded like one either:
      the row already insets 46px, and the column was adding 34 on top of that —
      160px of horizontal padding inside a 606px card left only 446px of text.
      Zeroed, so the copy sits on the row's own inset.

   2. THE CHECKLIST OVERFLOWED. An earlier layer pins `.ww-list-2col` in these
      rows to a hard `width: 600px !important`, which was fine when the row was
      1240px wide. In a 606px card it ran straight out through the right edge —
      "Compassionate end-of-life" and "Individualized treatment p..." were
      clipped. It now fills its container instead, and the paired cards drop to a
      single list column since ~510px cannot hold two. The full-width capstone
      (05 Conservation) keeps two columns, which is what it was designed for. */

body.page-id-43 .ww-pillars-sec .ww-pillar {
  background: none !important;
  border: 0 !important;
  border-radius: 0 !important;
  box-shadow: none !important;
  backdrop-filter: none !important;
  -webkit-backdrop-filter: none !important;
  padding: 0 !important;
}

/* same selector as the rule that pinned it, so source order decides */
body.page-id-43 .ww-sec.ww-pillars-sec .et_pb_row:has(.ww-pillar-num) .ww-list-2col {
  width: 100% !important;
  max-width: none !important;
}
@media (min-width: 981px) {
  body.page-id-43 .ww-pillars-sec > .et_pb_row:nth-of-type(3) .ww-list-2col ul,
  body.page-id-43 .ww-pillars-sec > .et_pb_row:nth-of-type(4) .ww-list-2col ul,
  body.page-id-43 .ww-pillars-sec > .et_pb_row:nth-of-type(5) .ww-list-2col ul,
  body.page-id-43 .ww-pillars-sec > .et_pb_row:nth-of-type(6) .ww-list-2col ul {
    columns: 1 !important;
  }
}
/* v155 — The Wandering Wings Promise as a graphical callout.

   With the five pillars now reading as cream cards, the Promise sat bare on the
   pink gradient between two of them — the summation of the section looked like
   the one thing nobody had styled.

   It becomes the full stop instead: the brand plum, reversed out. That does two
   things a sixth cream card couldn't. It closes the cadence (light, light,
   light, dark) so the eye knows the section has ended, and it keeps the Promise
   from reading as another pillar. The plum, the 24px radius and the gold
   hairline are all already in the system — the footer, the swooshes, the card
   tops — so it's new composition, not a new vocabulary.

   The feather sits at 10% behind the copy, bottom-right, clipped by the panel. */
body.page-id-43 .ww-pillars-sec > .et_pb_row:nth-of-type(8) {
  position: relative;
  overflow: hidden;
  background: linear-gradient(135deg, #27133C 0%, #3E2159 58%, #2A153F 100%) !important;
  border: 0 !important;
  border-radius: 24px !important;
  box-shadow: 0 26px 60px -32px rgba(39, 19, 60, .55) !important;
  padding: 66px 56px 62px !important;
}

/* gold hairline across the top — the same signal the cream cards use, warmed up
   so it reads against plum */
/* `content` needs !important — something later in the sheet resets
   `.et_pb_row::before { content: none }` and was killing this outright. */
body.page-id-43 .ww-pillars-sec > .et_pb_row:nth-of-type(8)::before {
  content: "" !important;
  position: absolute;
  top: 0; left: 0; right: 0;
  height: 2px;
  background: linear-gradient(90deg, #F2A65A 0%, #F0705E 48%, #EE3D9C 100%);
}

/* feather watermark, bottom-right, well under the text */
body.page-id-43 .ww-pillars-sec > .et_pb_row:nth-of-type(8)::after {
  content: "" !important;
  position: absolute;
  right: -40px;
  bottom: -70px;
  width: 320px;
  height: 320px;
  background: url("/wp-content/themes/divi-child/images/ww-deco-feather-r.svg") no-repeat center / contain;
  /* the asset already bakes in fill-opacity=".1", so an extra .10 here made it
     effectively 1% — invisible. Near-opaque leaves the SVG's own 10%. */
  opacity: .9;
  pointer-events: none;
}

/* everything in the panel sits above the watermark */
body.page-id-43 .ww-pillars-sec > .et_pb_row:nth-of-type(8) > * {
  position: relative;
  z-index: 1;
}

/* reversed type */
body.page-id-43 .ww-pillars-sec > .et_pb_row:nth-of-type(8) h1,
body.page-id-43 .ww-pillars-sec > .et_pb_row:nth-of-type(8) h2,
body.page-id-43 .ww-pillars-sec > .et_pb_row:nth-of-type(8) h3 {
  color: #FFFFFF !important;
}
body.page-id-43 .ww-pillars-sec > .et_pb_row:nth-of-type(8) .et_pb_text_inner,
body.page-id-43 .ww-pillars-sec > .et_pb_row:nth-of-type(8) .et_pb_text_inner p,
body.page-id-43 .ww-pillars-sec > .et_pb_row:nth-of-type(8) strong {
  color: rgba(255, 255, 255, .93) !important;
}

@media (max-width: 980px) {
  body.page-id-43 .ww-pillars-sec > .et_pb_row:nth-of-type(8) {
    padding: 44px 26px 42px !important;
    border-radius: 20px !important;
  }
  body.page-id-43 .ww-pillars-sec > .et_pb_row:nth-of-type(8)::after {
    width: 210px; height: 210px; right: -50px; bottom: -60px;
  }
}
/* v156 — Nick, mid-review: close the gap above Mission & Pillars, and make the
   Promise the sixth box rather than a full-width band.

   1. THE GAP. `.ww-pillars-sec` carried `padding-top: 160px` to clear its 120px
      top divider. v153 hid that divider (it was the orphaned plum wave), so the
      160px became pure empty white on top of the hero's own bottom wave and its
      160px of bottom padding. 56px is enough now — the heading row adds its own
      44px, so "MISSION & PILLARS" still lands ~100px clear of the wave.

   2. SIX BOXES, NOT 4 + 2 BANDS. v153 made 05 Conservation span both columns to
      resolve the odd count, and the Promise was a full-width panel below it.
      Nick wants the Promise to BE the sixth cell — which resolves the odd count
      properly and kills the empty space beside Conservation. Both revert to
      normal grid cells.

      Two knock-ons: Conservation is now a 606px card, so its checklist drops to
      one column like the other four; and the Promise panel loses the padding it
      had as a full-width band and centres its copy vertically, so it reads as a
      deliberate pair with the card beside it rather than a short box. */

@media (min-width: 768px) {
  body #page-container .ww-sec.ww-pillars-sec { padding-top: 56px !important; }
}
@media (max-width: 767px) {
  body #page-container .ww-sec.ww-pillars-sec { padding-top: 40px !important; }
}

@media (min-width: 981px) {
  /* 05 Conservation and the Promise are ordinary cells again */
  body.page-id-43 .ww-pillars-sec > .et_pb_row:nth-of-type(7),
  body.page-id-43 .ww-pillars-sec > .et_pb_row:nth-of-type(8) {
    grid-column: auto;
  }

  /* Conservation's checklist matches the other four now that it's half-width */
  body.page-id-43 .ww-pillars-sec > .et_pb_row:nth-of-type(7) .ww-list-2col ul {
    columns: 1 !important;
  }

  /* the Promise sits as a card beside Conservation: same height, copy centred */
  /* `align-self` has to be forced: the panel was landing in the right cell but
     sitting at the BOTTOM of the track (top 3810 inside a band starting at
     3356) instead of filling it, which left a hole under Conservation — the
     same gap Nick was objecting to, just moved. Stretched, it matches the card
     beside it, and the internal flex centres the copy in the taller panel. */
  body.page-id-43 .ww-pillars-sec > .et_pb_row:nth-of-type(8) {
    align-self: stretch !important;
    display: flex;
    flex-direction: column;
    justify-content: center;
    padding: 48px 40px !important;
  }
  body.page-id-43 .ww-pillars-sec > .et_pb_row:nth-of-type(8)::after {
    width: 240px;
    height: 240px;
    right: -56px;
    bottom: -62px;
  }
}
/* v157 — place the pillar grid explicitly.

   With `grid-column: auto` the Promise refused to land in the empty cell beside
   05 Conservation and dropped to a row of its own, leaving exactly the hole Nick
   asked me to remove. Rather than keep chasing why auto-placement resolved that
   way, every cell is now stated outright. Explicit placement is deterministic,
   it survives any future change to the section's child order, and it reads as
   the layout it is:

       row 1   Mission & Pillars heading   (full width)
       row 2   01 Dignity     | 02 Excellence
       row 3   03 Education   | 04 Connection
       row 4   05 Conservation| The Wandering Wings Promise

   Child indices are nth-of-type among the section's divs, where (1) is the
   hidden top divider — so the heading is (2) and the six cards are (3)-(8). */
@media (min-width: 981px) {
  body.page-id-43 .ww-pillars-sec > .et_pb_row:nth-of-type(2) { grid-column: 1 / -1 !important; grid-row: 1 !important; }
  body.page-id-43 .ww-pillars-sec > .et_pb_row:nth-of-type(3) { grid-column: 1 !important; grid-row: 2 !important; }
  body.page-id-43 .ww-pillars-sec > .et_pb_row:nth-of-type(4) { grid-column: 2 !important; grid-row: 2 !important; }
  body.page-id-43 .ww-pillars-sec > .et_pb_row:nth-of-type(5) { grid-column: 1 !important; grid-row: 3 !important; }
  body.page-id-43 .ww-pillars-sec > .et_pb_row:nth-of-type(6) { grid-column: 2 !important; grid-row: 3 !important; }
  body.page-id-43 .ww-pillars-sec > .et_pb_row:nth-of-type(7) { grid-column: 1 !important; grid-row: 4 !important; }
  body.page-id-43 .ww-pillars-sec > .et_pb_row:nth-of-type(8) { grid-column: 2 !important; grid-row: 4 !important; }
}
/* v158 — Promise card: full height, and a minimal mark above the title.

   HEIGHT. `align-self: stretch` computed correctly but the panel still measured
   377.94px inside an 832px track, sitting flush to its bottom edge. The paired
   pillar cards don't rely on align-self at all — v153 gives them an explicit
   `height: 100%`, and that is what actually equalises them. The Promise simply
   never got it, so it uses the same mechanism now rather than a second one.

   ICON. The five pillars use a gradient glyph in a white disc. The Promise is
   plum, so a white disc would punch a hole in it — instead the mark sits bare on
   the panel: a single-weight feather outline in the same
   #EE3D9C -> #F0705E -> #F2A65A gradient every other icon uses. Minimal, and it
   reads as the brand's own motif closing the section. */
@media (min-width: 981px) {
  body.page-id-43 .ww-pillars-sec > .et_pb_row:nth-of-type(8) { height: 100% !important; }
}

body.page-id-43 .ww-pillars-sec > .et_pb_row:nth-of-type(8) .ww-headline .et_pb_text_inner::before,
body.page-id-43 .ww-pillars-sec > .et_pb_row:nth-of-type(8) > .et_pb_column > .et_pb_text:first-child .et_pb_text_inner::before {
  content: "" !important;
  display: block;
  width: 48px;
  height: 48px;
  margin: 0 auto 18px;
  background: url("/wp-content/themes/divi-child/images/ww-icon-promise.svg") no-repeat center / contain;
}
/* v159 — single blog post: clear the header.

   The post isn't built with Divi sections — it's the child theme's standard
   single-post template — so it never inherited the hero padding that
   `.ww-hero` / `.ww-pagehero` / `.ww-abouthero` / `.ww-memhero` all carry. Its
   top padding is a flat 58px container + 170px content-area = 264px, which is
   fine against the compact header but not against the tall one.

   Measured, the overlap is confined to >=1281px, where the header switches to
   its two-row state and the nav pill's box runs to y357 (1440) / y416 (1920)
   while the post's first ink sits at 264:

       1920  post ink 264  vs  nav bottom 416   overlapping
       1440  post ink 264  vs  nav bottom 357   overlapping
       1280  post ink 293  vs  nav bottom  86   clear
        768  post ink 225  vs  nav bottom  86   clear
        390  post ink 225  vs  nav bottom  80   clear

   So the fix is banded to >=1281 and reuses the interior-page formula verbatim
   rather than inventing a number — which lands the post's first ink at exactly
   425 (1440) and 477 (1920), the same as the About hero's. The container's own
   58px is zeroed so the formula is the only thing setting the offset. */
@media (min-width: 1281px) {
  body.single-post #main-content > .container { padding-top: 0 !important; }
  body.single-post #content-area {
    padding-top: calc(var(--ww-logow-un) * 1.5629 + min(69.6px, 4.086vw) + 176px) !important;
  }
}
/* v160 — single post: put the body copy on the same left edge as everything else.

   The article header and the featured image sit at the column's left edge (310
   at 1440, 820px wide). The body copy doesn't: every child of `.entry-content`
   carries `max-width: 600px` with `margin: 0 110px`, centring the measure inside
   that column. So the copy started 110px to the right of the title, the date and
   the image — the page read as two competing left edges.

   The 600px measure is right and stays; only the centring goes. That leaves the
   ordinary editorial arrangement the rest of the page already implies: a wide
   image, a wide title, and a narrower text column all hung off one left edge.

   `.ww-posttail` (the All stories / Ask Dr. Wild row) is a child too, so it
   comes along and its rule now lines up with the copy above it. */
body.single-post .entry-content > * {
  margin-left: 0 !important;
  margin-right: 0 !important;
}
/* v161 — Hospital Policies: break up the wall of identical cards.

   The page was 19 policy cards in ten identical two-up rows — 9,467px of the
   same rectangle. Nick: mix image+text cards, a full-width section with swoosh
   dividers and full-width cards; About-style card treatment; icons where they
   help; never four boring cards in a quadrant.

   The section becomes one six-column grid and the Divi rows are set to
   `display: contents`, so the 19 cards become grid items directly and can each
   take their own span. Spans sum to 6 per visual row (66 across eleven rows), so
   nothing leaves a hole:

     full image | 2-up | 3-up | 2-up | FULL-BLEED BAND | full image
     | 2-up | 3-up | full | 2-up | full

   Spans are chosen by copy length, not just for looks: a card over ~800
   characters never lands in a third. The first pass put Biosecurity (1,027
   chars) in a 395px column and it towered over its neighbours.
   Row/column map, for anyone reading this later:
     r1c1  span 6  Appointments 785 · image
     r1c2  span 3  Preparing 1094
     r2c1  span 3  Emergencies 912
     r2c2  span 2  Hospitalization 500
     r3c1  span 2  Payment 533
     r3c2  span 2  Cancellation 375
     r4c1  span 3  Medical Records 442
     r4c2  span 3  Client Privacy 610
     r5c1  span 6  Our Commitment 350 · BAND
     r6c1  span 6  Service Area 709 · image
     r6c2  span 3  Biosecurity 1027
     r7c1  span 3  Multi-Bird 541
     r7c2  span 2  Telemedicine 733
     r8c1  span 2  Prescription Refill 653
     r8c2  span 2  Laboratory 514
     r9c1  span 6  Home Safety 689
     r9c2  span 3  Wildlife 441 · image
     r10c1  span 3  Client Communication 688
     r10c2  span 6  Our Standards 690
*/

@media (min-width: 981px) {
  body.page-id-123 .ww-duosec {
    display: grid;
    grid-template-columns: repeat(6, minmax(0, 1fr));
    column-gap: 28px;
    row-gap: 28px;
    align-items: stretch;
    /* reproduces `.ww-sec .et_pb_row` geometry: calc(100% - 200px), capped 1240 */
    padding-left: max(100px, calc((100% - 1240px) / 2));
    padding-right: max(100px, calc((100% - 1240px) / 2));
  }
  body.page-id-123 .ww-duosec > .et_pb_row.ww-duo-row { display: contents; }
  body.page-id-123 .ww-duosec .ww-duocard {
    width: auto !important; max-width: none !important; margin: 0 !important; height: 100%;
  }
  body.page-id-123 .ww-duosec > .et_pb_row.ww-pol-r1 > .et_pb_column:nth-of-type(1) { grid-column: span 6; }
  body.page-id-123 .ww-duosec > .et_pb_row.ww-pol-r1 > .et_pb_column:nth-of-type(2) { grid-column: span 3; }
  body.page-id-123 .ww-duosec > .et_pb_row.ww-pol-r2 > .et_pb_column:nth-of-type(1) { grid-column: span 3; }
  body.page-id-123 .ww-duosec > .et_pb_row.ww-pol-r2 > .et_pb_column:nth-of-type(2) { grid-column: span 2; }
  body.page-id-123 .ww-duosec > .et_pb_row.ww-pol-r3 > .et_pb_column:nth-of-type(1) { grid-column: span 2; }
  body.page-id-123 .ww-duosec > .et_pb_row.ww-pol-r3 > .et_pb_column:nth-of-type(2) { grid-column: span 2; }
  body.page-id-123 .ww-duosec > .et_pb_row.ww-pol-r4 > .et_pb_column:nth-of-type(1) { grid-column: span 3; }
  body.page-id-123 .ww-duosec > .et_pb_row.ww-pol-r4 > .et_pb_column:nth-of-type(2) { grid-column: span 3; }
  body.page-id-123 .ww-duosec > .et_pb_row.ww-pol-r5 > .et_pb_column:nth-of-type(1) { grid-column: span 6; }
  body.page-id-123 .ww-duosec > .et_pb_row.ww-pol-r6 > .et_pb_column:nth-of-type(1) { grid-column: span 6; }
  body.page-id-123 .ww-duosec > .et_pb_row.ww-pol-r6 > .et_pb_column:nth-of-type(2) { grid-column: span 3; }
  body.page-id-123 .ww-duosec > .et_pb_row.ww-pol-r7 > .et_pb_column:nth-of-type(1) { grid-column: span 3; }
  body.page-id-123 .ww-duosec > .et_pb_row.ww-pol-r7 > .et_pb_column:nth-of-type(2) { grid-column: span 2; }
  body.page-id-123 .ww-duosec > .et_pb_row.ww-pol-r8 > .et_pb_column:nth-of-type(1) { grid-column: span 2; }
  body.page-id-123 .ww-duosec > .et_pb_row.ww-pol-r8 > .et_pb_column:nth-of-type(2) { grid-column: span 2; }
  body.page-id-123 .ww-duosec > .et_pb_row.ww-pol-r9 > .et_pb_column:nth-of-type(1) { grid-column: span 6; }
  body.page-id-123 .ww-duosec > .et_pb_row.ww-pol-r9 > .et_pb_column:nth-of-type(2) { grid-column: span 3; }
  body.page-id-123 .ww-duosec > .et_pb_row.ww-pol-r10 > .et_pb_column:nth-of-type(1) { grid-column: span 3; }
  body.page-id-123 .ww-duosec > .et_pb_row.ww-pol-r10 > .et_pb_column:nth-of-type(2) { grid-column: span 6; }
  /* third-width cards get tighter gutters so the measure survives */
  body.page-id-123 .ww-duosec > .et_pb_row.ww-pol-r2 > .et_pb_column:nth-of-type(2) { padding: 30px 26px 28px !important; }
  body.page-id-123 .ww-duosec > .et_pb_row.ww-pol-r3 > .et_pb_column:nth-of-type(1) { padding: 30px 26px 28px !important; }
  body.page-id-123 .ww-duosec > .et_pb_row.ww-pol-r3 > .et_pb_column:nth-of-type(2) { padding: 30px 26px 28px !important; }
  body.page-id-123 .ww-duosec > .et_pb_row.ww-pol-r7 > .et_pb_column:nth-of-type(2) { padding: 30px 26px 28px !important; }
  body.page-id-123 .ww-duosec > .et_pb_row.ww-pol-r8 > .et_pb_column:nth-of-type(1) { padding: 30px 26px 28px !important; }
  body.page-id-123 .ww-duosec > .et_pb_row.ww-pol-r8 > .et_pb_column:nth-of-type(2) { padding: 30px 26px 28px !important; }
}

/* ---------- card treatment, matched to the About pillar cards ---------- */
body.page-id-123 .ww-duosec .ww-duocard {
  background: linear-gradient(180deg, #FFFDF9 0%, #FDF6EC 100%) !important;
  border: 1px solid rgba(227, 190, 127, .42) !important;
  border-radius: 22px !important;
  box-shadow: 0 16px 40px -18px rgba(156, 58, 116, .18) !important;
  padding: 38px 34px 34px !important;
  position: relative;
  overflow: hidden;
}
body.page-id-123 .ww-duosec .ww-duocard::before {
  content: "" !important;
  position: absolute; top: 0; left: 0; right: 0; height: 2px; z-index: 2;
  background: linear-gradient(90deg, #F2A65A 0%, #F0705E 48%, #EE3D9C 100%);
}
@media (max-width: 980px) {
  body.page-id-123 .ww-duosec .ww-duocard { padding: 28px 22px 26px !important; }
}

/* ---------- icon discs ---------- */
body.page-id-123 .ww-duosec .ww-duocard .ww-duo-h3 .et_pb_text_inner::before {
  content: ""; display: block; width: 64px; height: 64px; margin: 0 0 16px;
  border-radius: 50%; background-color: #FFFFFF; background-repeat: no-repeat;
  background-position: center; background-size: 30px 30px;
  box-shadow: 0 10px 26px -12px rgba(156,58,116,.45), 0 0 0 1px rgba(255,255,255,.9);
}
body.page-id-123 .ww-duosec > .et_pb_row.ww-pol-r1 > .et_pb_column:nth-of-type(1) .ww-duo-h3 .et_pb_text_inner::before { display: none; }
body.page-id-123 .ww-duosec > .et_pb_row.ww-pol-r1 > .et_pb_column:nth-of-type(2) .ww-duo-h3 .et_pb_text_inner::before { background-image: url("/wp-content/themes/divi-child/images/ww-icon-housecall.svg"); }
body.page-id-123 .ww-duosec > .et_pb_row.ww-pol-r2 > .et_pb_column:nth-of-type(1) .ww-duo-h3 .et_pb_text_inner::before { background-image: url("/wp-content/themes/divi-child/images/ww-icon-alert.svg"); }
body.page-id-123 .ww-duosec > .et_pb_row.ww-pol-r2 > .et_pb_column:nth-of-type(2) .ww-duo-h3 .et_pb_text_inner::before { background-image: url("/wp-content/themes/divi-child/images/ww-icon-diagnostics.svg"); }
body.page-id-123 .ww-duosec > .et_pb_row.ww-pol-r3 > .et_pb_column:nth-of-type(1) .ww-duo-h3 .et_pb_text_inner::before { background-image: url("/wp-content/themes/divi-child/images/ww-icon-payment.svg"); }
body.page-id-123 .ww-duosec > .et_pb_row.ww-pol-r3 > .et_pb_column:nth-of-type(2) .ww-duo-h3 .et_pb_text_inner::before { background-image: url("/wp-content/themes/divi-child/images/ww-icon-cal.svg"); }
body.page-id-123 .ww-duosec > .et_pb_row.ww-pol-r4 > .et_pb_column:nth-of-type(1) .ww-duo-h3 .et_pb_text_inner::before { background-image: url("/wp-content/themes/divi-child/images/ww-icon-document.svg"); }
body.page-id-123 .ww-duosec > .et_pb_row.ww-pol-r4 > .et_pb_column:nth-of-type(2) .ww-duo-h3 .et_pb_text_inner::before { background-image: url("/wp-content/themes/divi-child/images/ww-icon-shield.svg"); }
body.page-id-123 .ww-duosec > .et_pb_row.ww-pol-r5 > .et_pb_column:nth-of-type(1) .ww-duo-h3 .et_pb_text_inner::before { display: none; }
body.page-id-123 .ww-duosec > .et_pb_row.ww-pol-r6 > .et_pb_column:nth-of-type(1) .ww-duo-h3 .et_pb_text_inner::before { display: none; }
body.page-id-123 .ww-duosec > .et_pb_row.ww-pol-r6 > .et_pb_column:nth-of-type(2) .ww-duo-h3 .et_pb_text_inner::before { background-image: url("/wp-content/themes/divi-child/images/ww-icon-shield.svg"); }
body.page-id-123 .ww-duosec > .et_pb_row.ww-pol-r7 > .et_pb_column:nth-of-type(1) .ww-duo-h3 .et_pb_text_inner::before { background-image: url("/wp-content/themes/divi-child/images/ww-icon-connection.svg"); }
body.page-id-123 .ww-duosec > .et_pb_row.ww-pol-r7 > .et_pb_column:nth-of-type(2) .ww-duo-h3 .et_pb_text_inner::before { background-image: url("/wp-content/themes/divi-child/images/ww-icon-phone.svg"); }
body.page-id-123 .ww-duosec > .et_pb_row.ww-pol-r8 > .et_pb_column:nth-of-type(1) .ww-duo-h3 .et_pb_text_inner::before { background-image: url("/wp-content/themes/divi-child/images/ww-icon-document.svg"); }
body.page-id-123 .ww-duosec > .et_pb_row.ww-pol-r8 > .et_pb_column:nth-of-type(2) .ww-duo-h3 .et_pb_text_inner::before { background-image: url("/wp-content/themes/divi-child/images/ww-icon-flask.svg"); }
body.page-id-123 .ww-duosec > .et_pb_row.ww-pol-r9 > .et_pb_column:nth-of-type(1) .ww-duo-h3 .et_pb_text_inner::before { background-image: url("/wp-content/themes/divi-child/images/ww-icon-housecall.svg"); }
body.page-id-123 .ww-duosec > .et_pb_row.ww-pol-r9 > .et_pb_column:nth-of-type(2) .ww-duo-h3 .et_pb_text_inner::before { display: none; }
body.page-id-123 .ww-duosec > .et_pb_row.ww-pol-r10 > .et_pb_column:nth-of-type(1) .ww-duo-h3 .et_pb_text_inner::before { background-image: url("/wp-content/themes/divi-child/images/ww-icon-mail.svg"); }
body.page-id-123 .ww-duosec > .et_pb_row.ww-pol-r10 > .et_pb_column:nth-of-type(2) .ww-duo-h3 .et_pb_text_inner::before { background-image: url("/wp-content/themes/divi-child/images/ww-icon-expertise.svg"); }


/* ---------- image + text cards ----------
   Backgrounds on pseudo-elements rather than real <img>, so page content is
   untouched and the crop stays art-directable from CSS. */
@media (min-width: 981px) {
  body.page-id-123 .ww-duosec > .et_pb_row.ww-pol-r1 > .et_pb_column:nth-of-type(1), body.page-id-123 .ww-duosec > .et_pb_row.ww-pol-r6 > .et_pb_column:nth-of-type(1) {
    display: grid; column-gap: 44px; align-items: center; padding: 34px !important;
  }
  body.page-id-123 .ww-duosec > .et_pb_row.ww-pol-r1 > .et_pb_column:nth-of-type(1) { grid-template-columns: 380px minmax(0, 1fr); }
  body.page-id-123 .ww-duosec > .et_pb_row.ww-pol-r6 > .et_pb_column:nth-of-type(1) { grid-template-columns: minmax(0, 1fr) 380px; }
  body.page-id-123 .ww-duosec > .et_pb_row.ww-pol-r1 > .et_pb_column:nth-of-type(1)::after, body.page-id-123 .ww-duosec > .et_pb_row.ww-pol-r6 > .et_pb_column:nth-of-type(1)::after {
    content: ""; grid-row: 1 / -1; align-self: stretch; min-height: 300px;
    border-radius: 16px; background-position: center; background-size: cover;
  }
  body.page-id-123 .ww-duosec > .et_pb_row.ww-pol-r1 > .et_pb_column:nth-of-type(1) > * { grid-column: 2; }
  body.page-id-123 .ww-duosec > .et_pb_row.ww-pol-r1 > .et_pb_column:nth-of-type(1)::after { grid-column: 1; background-image: url("/wp-content/uploads/2026/08/ww-band-housecalls.jpg"); }
  body.page-id-123 .ww-duosec > .et_pb_row.ww-pol-r6 > .et_pb_column:nth-of-type(1) > * { grid-column: 1; }
  body.page-id-123 .ww-duosec > .et_pb_row.ww-pol-r6 > .et_pb_column:nth-of-type(1)::after { grid-column: 2; background-image: url("/wp-content/uploads/2026/07/ww-van-v2.jpg"); }

  body.page-id-123 .ww-duosec > .et_pb_row.ww-pol-r9 > .et_pb_column:nth-of-type(2) { display: flex; flex-direction: column; }
  body.page-id-123 .ww-duosec > .et_pb_row.ww-pol-r9 > .et_pb_column:nth-of-type(2)::after {
    content: ""; display: block; height: 170px; margin: 0 0 22px; order: -1;
    border-radius: 14px;
    background: url("/wp-content/uploads/2026/08/ww-wild-duck.jpg") center / cover;
  }
}
@media (max-width: 980px) {
  body.page-id-123 .ww-duosec > .et_pb_row.ww-pol-r1 > .et_pb_column:nth-of-type(1), body.page-id-123 .ww-duosec > .et_pb_row.ww-pol-r6 > .et_pb_column:nth-of-type(1), body.page-id-123 .ww-duosec > .et_pb_row.ww-pol-r9 > .et_pb_column:nth-of-type(2) { display: flex; flex-direction: column; }
  body.page-id-123 .ww-duosec > .et_pb_row.ww-pol-r1 > .et_pb_column:nth-of-type(1)::after, body.page-id-123 .ww-duosec > .et_pb_row.ww-pol-r6 > .et_pb_column:nth-of-type(1)::after, body.page-id-123 .ww-duosec > .et_pb_row.ww-pol-r9 > .et_pb_column:nth-of-type(2)::after {
    content: ""; display: block; height: 190px; margin: 0 0 20px; order: -1;
    border-radius: 14px; background-position: center; background-size: cover;
  }
  body.page-id-123 .ww-duosec > .et_pb_row.ww-pol-r1 > .et_pb_column:nth-of-type(1)::after { background-image: url("/wp-content/uploads/2026/08/ww-band-housecalls.jpg"); }
  body.page-id-123 .ww-duosec > .et_pb_row.ww-pol-r6 > .et_pb_column:nth-of-type(1)::after { background-image: url("/wp-content/uploads/2026/07/ww-van-v2.jpg"); }
  body.page-id-123 .ww-duosec > .et_pb_row.ww-pol-r9 > .et_pb_column:nth-of-type(2)::after { background-image: url("/wp-content/uploads/2026/08/ww-wild-duck.jpg"); }
}

/* ---------- the full-bleed commitment band ----------
   "Our Commitment" breaks the container and runs the full viewport width with a
   wave riding each edge — Divi's own wave2 recoloured white, so it reads as the
   same section boundary the rest of the site uses.

   The breakout works because the card is a span-6 grid item and therefore
   centred on the page: `calc(50% - 50vw)` resolves to exactly the section's own
   padding at every width. The sheet already carries `overflow-x: clip`, which
   absorbs the scrollbar difference in 100vw — verified no horizontal overflow at
   390/1440/1920. */
body.page-id-123 .ww-duosec > .et_pb_row.ww-pol-r5 > .et_pb_column:nth-of-type(1) {
  background:
    url("/wp-content/themes/divi-child/images/ww-deco-feather-r.svg") no-repeat right -40px bottom -60px / 300px,
    linear-gradient(135deg, #27133C 0%, #3E2159 58%, #2A153F 100%) !important;
  position: relative; overflow: hidden;
  border-radius: 0 !important; border: 0 !important; box-shadow: none !important;
  text-align: center;
}
@media (min-width: 981px) {
  body.page-id-123 .ww-duosec > .et_pb_row.ww-pol-r5 > .et_pb_column:nth-of-type(1) {
    margin-left: calc(50% - 50vw) !important;
    margin-right: calc(50% - 50vw) !important;
    padding: 132px 56px 128px !important;
  }
}
@media (max-width: 980px) {
  /* Divi puts an explicit width on the stacked column, so negative margins alone
     shifted it left without widening it — width has to be released too. */
  body.page-id-123 .ww-duosec > .et_pb_row.ww-pol-r5 > .et_pb_column:nth-of-type(1) {
    width: auto !important; max-width: none !important;
    margin-left: -24px !important; margin-right: -24px !important;
    padding: 92px 26px 88px !important;
  }
  body.page-id-123 .ww-duosec > .et_pb_row.ww-pol-r5 > .et_pb_column:nth-of-type(1)::before, body.page-id-123 .ww-duosec > .et_pb_row.ww-pol-r5 > .et_pb_column:nth-of-type(1)::after { height: 60px; }
}
body.page-id-123 .ww-duosec > .et_pb_row.ww-pol-r5 > .et_pb_column:nth-of-type(1)::before {
  content: "" !important; position: absolute; top: 0; left: 0; right: 0; height: 96px; z-index: 1;
  background: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMjBweCIgdmlld0JveD0iMCAwIDEyODAgMTQwIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxnIGZpbGw9IiNGRkZGRkYiPjxwYXRoIGQ9Ik0xMjgwIDMuNEMxMDUwLjU5IDE4IDEwMTkuNCA4NC44OSA3MzQuNDIgODQuODljLTMyMCAwLTMyMC04NC4zLTY0MC04NC4zQzU5LjQuNTkgMjguMiAxLjYgMCAzLjRWMTQwaDEyODB6IiBmaWxsLW9wYWNpdHk9Ii4zIi8+PHBhdGggZD0iTTAgMjQuMzFjNDMuNDYtNS42OSA5NC41Ni05LjI1IDE1OC40Mi05LjI1IDMyMCAwIDMyMCA4OS4yNCA2NDAgODkuMjQgMjU2LjEzIDAgMzA3LjI4LTU3LjE2IDQ4MS41OC04MFYxNDBIMHoiIGZpbGwtb3BhY2l0eT0iLjUiLz48cGF0aCBkPSJNMTI4MCA1MS43NmMtMjAxIDEyLjQ5LTI0Mi40MyA1My40LTUxMy41OCA1My40LTMyMCAwLTMyMC01Ny02NDAtNTctNDguODUuMDEtOTAuMjEgMS4zNS0xMjYuNDIgMy42VjE0MGgxMjgweiIvPjwvZz48L3N2Zz4=") no-repeat center / 100% 100%;
  transform: scaleY(-1);
}
body.page-id-123 .ww-duosec > .et_pb_row.ww-pol-r5 > .et_pb_column:nth-of-type(1)::after {
  content: ""; position: absolute; bottom: 0; left: 0; right: 0; height: 96px; z-index: 1;
  background: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMjBweCIgdmlld0JveD0iMCAwIDEyODAgMTQwIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxnIGZpbGw9IiNGRkZGRkYiPjxwYXRoIGQ9Ik0xMjgwIDMuNEMxMDUwLjU5IDE4IDEwMTkuNCA4NC44OSA3MzQuNDIgODQuODljLTMyMCAwLTMyMC04NC4zLTY0MC04NC4zQzU5LjQuNTkgMjguMiAxLjYgMCAzLjRWMTQwaDEyODB6IiBmaWxsLW9wYWNpdHk9Ii4zIi8+PHBhdGggZD0iTTAgMjQuMzFjNDMuNDYtNS42OSA5NC41Ni05LjI1IDE1OC40Mi05LjI1IDMyMCAwIDMyMCA4OS4yNCA2NDAgODkuMjQgMjU2LjEzIDAgMzA3LjI4LTU3LjE2IDQ4MS41OC04MFYxNDBIMHoiIGZpbGwtb3BhY2l0eT0iLjUiLz48cGF0aCBkPSJNMTI4MCA1MS43NmMtMjAxIDEyLjQ5LTI0Mi40MyA1My40LTUxMy41OCA1My40LTMyMCAwLTMyMC01Ny02NDAtNTctNDguODUuMDEtOTAuMjEgMS4zNS0xMjYuNDIgMy42VjE0MGgxMjgweiIvPjwvZz48L3N2Zz4=") no-repeat center / 100% 100%;
}
body.page-id-123 .ww-duosec > .et_pb_row.ww-pol-r5 > .et_pb_column:nth-of-type(1) > * { position: relative; z-index: 2; }
body.page-id-123 .ww-duosec > .et_pb_row.ww-pol-r5 > .et_pb_column:nth-of-type(1) h1, body.page-id-123 .ww-duosec > .et_pb_row.ww-pol-r5 > .et_pb_column:nth-of-type(1) h2, body.page-id-123 .ww-duosec > .et_pb_row.ww-pol-r5 > .et_pb_column:nth-of-type(1) h3 { color: #FFFFFF !important; }
body.page-id-123 .ww-duosec > .et_pb_row.ww-pol-r5 > .et_pb_column:nth-of-type(1) .et_pb_text_inner, body.page-id-123 .ww-duosec > .et_pb_row.ww-pol-r5 > .et_pb_column:nth-of-type(1) .et_pb_text_inner p, body.page-id-123 .ww-duosec > .et_pb_row.ww-pol-r5 > .et_pb_column:nth-of-type(1) strong { color: rgba(255,255,255,.93) !important; }

/* v162 — Hospital Policies image cards: fix the vertical distribution.

   v161 laid the two full-width image cards out as `display: grid` with the photo
   spanning `grid-row: 1 / -1` in column 1 and the text modules in column 2. But
   each text module is its own grid item, so each one got its own row, the rows
   stretched to the photo's height, and `align-items: center` then centred each
   module INSIDE its own tall row — which is why "Appointments" floated on its
   own with a void above the body copy.

   Multiple modules can't share one grid cell without a wrapper, and there's no
   wrapper to add without editing page content. So the photo comes out of flow
   instead: absolutely positioned down the side, with the card padded to clear
   it. The copy then flows as ordinary block text, top-aligned, which is what it
   wanted all along. */
@media (min-width: 981px) {
  body.page-id-123 .ww-duosec > .et_pb_row.ww-pol-r1 > .et_pb_column:nth-of-type(1),
  body.page-id-123 .ww-duosec > .et_pb_row.ww-pol-r6 > .et_pb_column:nth-of-type(1) {
    display: block !important;
    position: relative;
    min-height: 368px;
    padding: 38px 34px 34px !important;
  }
  body.page-id-123 .ww-duosec > .et_pb_row.ww-pol-r1 > .et_pb_column:nth-of-type(1)::after,
  body.page-id-123 .ww-duosec > .et_pb_row.ww-pol-r6 > .et_pb_column:nth-of-type(1)::after {
    content: "";
    position: absolute;
    top: 34px;
    bottom: 34px;
    width: 392px;
    border-radius: 16px;
    background-position: center;
    background-size: cover;
    min-height: 0;
    margin: 0;
  }
  /* Appointments — photo left, copy right */
  body.page-id-123 .ww-duosec > .et_pb_row.ww-pol-r1 > .et_pb_column:nth-of-type(1) {
    padding-left: 460px !important;
  }
  body.page-id-123 .ww-duosec > .et_pb_row.ww-pol-r1 > .et_pb_column:nth-of-type(1)::after {
    left: 34px;
  }
  /* Service Area — the van earns the right-hand side, copy left */
  body.page-id-123 .ww-duosec > .et_pb_row.ww-pol-r6 > .et_pb_column:nth-of-type(1) {
    padding-right: 460px !important;
  }
  body.page-id-123 .ww-duosec > .et_pb_row.ww-pol-r6 > .et_pb_column:nth-of-type(1)::after {
    right: 34px;
  }
}
/* v163 — Hospital Policies, two corrections.

   1. THE VAN NEVER LOADED. `ww-van-v2.jpg` was referenced at
      /wp-content/uploads/2026/07/ but it lives in 2026/08 — the other two
      photos on this page happen to be 2026/08 and rendered fine, so only the
      Service Area card came up empty on its right-hand side.

   2. THE COMMITMENT BAND WASN'T CENTRED. `text-align: center` on the band lost
      to Divi's per-module `et_pb_text_align_left` classes, so the heading sat at
      the padding edge and the copy at its own indent — two different left edges
      inside a centred panel. Alignment is forced on the modules themselves, and
      the copy gets a measure with auto margins so it centres as a block rather
      than running the full 1,328px of the band. */

@media (min-width: 981px) {
  body.page-id-123 .ww-duosec > .et_pb_row.ww-pol-r6 > .et_pb_column:nth-of-type(1)::after {
    background-image: url("/wp-content/uploads/2026/08/ww-van-v2.jpg");
  }
}
@media (max-width: 980px) {
  body.page-id-123 .ww-duosec > .et_pb_row.ww-pol-r6 > .et_pb_column:nth-of-type(1)::after {
    background-image: url("/wp-content/uploads/2026/08/ww-van-v2.jpg");
  }
}

body.page-id-123 .ww-duosec > .et_pb_row.ww-pol-r5 > .et_pb_column:nth-of-type(1) .et_pb_text,
body.page-id-123 .ww-duosec > .et_pb_row.ww-pol-r5 > .et_pb_column:nth-of-type(1) .et_pb_text_inner,
body.page-id-123 .ww-duosec > .et_pb_row.ww-pol-r5 > .et_pb_column:nth-of-type(1) .et_pb_text_inner p,
body.page-id-123 .ww-duosec > .et_pb_row.ww-pol-r5 > .et_pb_column:nth-of-type(1) h1,
body.page-id-123 .ww-duosec > .et_pb_row.ww-pol-r5 > .et_pb_column:nth-of-type(1) h2,
body.page-id-123 .ww-duosec > .et_pb_row.ww-pol-r5 > .et_pb_column:nth-of-type(1) h3 {
  text-align: center !important;
}
body.page-id-123 .ww-duosec > .et_pb_row.ww-pol-r5 > .et_pb_column:nth-of-type(1) .et_pb_text_inner {
  max-width: 820px;
  margin-left: auto !important;
  margin-right: auto !important;
}
/* v164 — Services page: the "random swooshes that end and miscoloured boxes".

   Sampled the actual rendered colour at every section boundary (x=12, clear of
   content) and compared it to the fill each wave was drawn in:

     1312  above FCF4EA   wave #FCF4E9   ok
     1906  above FFFFFF   wave #FFFFFF   ok
     2518  above FAE5E2   wave #FAE4E9   near enough, corrected anyway
     3096  above FEE9F4   wave #F8D0E6   WRONG — a hard pink band across a pale section
     3877  above FFFFFF   NO WAVE        hard straight edge into the plum strip
     4004  above 35205A   wave #27133C   two different plums stacked

   So the "swooshes that end" are waves drawn in a colour that doesn't match what
   is above them, and the "miscoloured box" is the referring-vets strip sitting at
   #35205A directly above a #27133C wave.

   The waves are Divi-generated SVG data URIs, so the fill cannot be changed in
   CSS — instead each one is re-encoded here from Divi's own SVG with only the
   fill swapped, which keeps the exact wave shape and orientation. */

/* 1. Diagnostics — wave matches the section above it */
body.page-id-33 .ww-sec.ww-diagsec > .et_pb_top_inside_divider {
  background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMjBweCIgdmlld0JveD0iMCAwIDEyODAgMTQwIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxnIGZpbGw9IiNGQUU1RTIiPjxwYXRoIGQ9Ik0wIDUxLjc2YzM2LjIxLTIuMjUgNzcuNTctMy41OCAxMjYuNDItMy41OCAzMjAgMCAzMjAgNTcgNjQwIDU3IDI3MS4xNSAwIDMxMi41OC00MC45MSA1MTMuNTgtNTMuNFYwSDB6IiBmaWxsLW9wYWNpdHk9Ii4zIi8+PHBhdGggZD0iTTAgMjQuMzFjNDMuNDYtNS42OSA5NC41Ni05LjI1IDE1OC40Mi05LjI1IDMyMCAwIDMyMCA4OS4yNCA2NDAgODkuMjQgMjU2LjEzIDAgMzA3LjI4LTU3LjE2IDQ4MS41OC04MFYwSDB6IiBmaWxsLW9wYWNpdHk9Ii41Ii8+PHBhdGggZD0iTTAgMHYzLjRDMjguMiAxLjYgNTkuNC41OSA5NC40Mi41OWMzMjAgMCAzMjAgODQuMyA2NDAgODQuMyAyODUgMCAzMTYuMTctNjYuODUgNTQ1LjU4LTgxLjQ5VjB6Ii8+PC9nPjwvc3ZnPg==") !important;
}

/* 2. Backyard Flocks — this is the one that read as a stray pink band */
body.page-id-33 .ww-sec.ww-duosec > .et_pb_top_inside_divider {
  background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMjBweCIgdmlld0JveD0iMCAwIDEyODAgMTQwIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxnIGZpbGw9IiNGRUU5RjQiPjxwYXRoIGQ9Ik0wIDUxLjc2YzM2LjIxLTIuMjUgNzcuNTctMy41OCAxMjYuNDItMy41OCAzMjAgMCAzMjAgNTcgNjQwIDU3IDI3MS4xNSAwIDMxMi41OC00MC45MSA1MTMuNTgtNTMuNFYwSDB6IiBmaWxsLW9wYWNpdHk9Ii4zIi8+PHBhdGggZD0iTTAgMjQuMzFjNDMuNDYtNS42OSA5NC41Ni05LjI1IDE1OC40Mi05LjI1IDMyMCAwIDMyMCA4OS4yNCA2NDAgODkuMjQgMjU2LjEzIDAgMzA3LjI4LTU3LjE2IDQ4MS41OC04MFYwSDB6IiBmaWxsLW9wYWNpdHk9Ii41Ii8+PHBhdGggZD0iTTAgMHYzLjRDMjguMiAxLjYgNTkuNC41OSA5NC40Mi41OWMzMjAgMCAzMjAgODQuMyA2NDAgODQuMyAyODUgMCAzMTYuMTctNjYuODUgNTQ1LjU4LTgxLjQ5VjB6Ii8+PC9nPjwvc3ZnPg==") !important;
}

/* 3. The referring-vets strip: one plum, not two.
      v140 set `.ww-navystrip, .ww-dvmstrip` to #35205A on purpose — those strips
      sit directly above the plum footer and needed a step to stay visible. Here
      the strip is followed by the membership section, whose top wave is #27133C,
      so the step just made it look like a mis-tinted box. Scoped to this page so
      v140's reasoning still holds everywhere it applies. */
body.page-id-33 .ww-sec.ww-dvmstrip {
  background: #27133C !important;
  position: relative;
  overflow: hidden;
}

/* 4. …and give it the wave it never had, so it stops butting into the white
      section above with a straight edge. 56px rather than the site's usual 120
      because this is a compact CTA bar, not a full section; the extra top
      padding keeps the copy clear of it. */
body.page-id-33 .ww-sec.ww-dvmstrip::before {
  content: "" !important;
  position: absolute;
  top: 0; left: 0; right: 0;
  height: 56px;
  background: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMjBweCIgdmlld0JveD0iMCAwIDEyODAgMTQwIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxnIGZpbGw9IiNGRkZGRkYiPjxwYXRoIGQ9Ik0wIDUxLjc2YzM2LjIxLTIuMjUgNzcuNTctMy41OCAxMjYuNDItMy41OCAzMjAgMCAzMjAgNTcgNjQwIDU3IDI3MS4xNSAwIDMxMi41OC00MC45MSA1MTMuNTgtNTMuNFYwSDB6IiBmaWxsLW9wYWNpdHk9Ii4zIi8+PHBhdGggZD0iTTAgMjQuMzFjNDMuNDYtNS42OSA5NC41Ni05LjI1IDE1OC40Mi05LjI1IDMyMCAwIDMyMCA4OS4yNCA2NDAgODkuMjQgMjU2LjEzIDAgMzA3LjI4LTU3LjE2IDQ4MS41OC04MFYwSDB6IiBmaWxsLW9wYWNpdHk9Ii41Ii8+PHBhdGggZD0iTTAgMHYzLjRDMjguMiAxLjYgNTkuNC41OSA5NC40Mi41OWMzMjAgMCAzMjAgODQuMyA2NDAgODQuMyAyODUgMCAzMTYuMTctNjYuODUgNTQ1LjU4LTgxLjQ5VjB6Ii8+PC9nPjwvc3ZnPg==") no-repeat center / 100% 100%;
  z-index: 0;
}
body.page-id-33 .ww-sec.ww-dvmstrip > * { position: relative; z-index: 1; }
@media (min-width: 981px) {
  body #page-container .ww-sec.ww-dvmstrip { padding-top: 92px !important; }
}
@media (max-width: 980px) {
  body.page-id-33 .ww-sec.ww-dvmstrip::before { height: 40px; }
  body #page-container .ww-sec.ww-dvmstrip { padding-top: 68px !important; }
}
/* v165 — Conservation Corner.

   ---------------------------------------------------------------------------
   1. THE PINK BANDS SIT LOW — and this one is my own doing.
   ---------------------------------------------------------------------------
   v145 set `.ww-sec.ww-cons { padding: 136px 0 }` to centre the homepage's
   Conservation Corner. That rule was never page-scoped, and this page has three
   `.ww-cons` sections with a different divider arrangement: the homepage section
   carries its own top AND bottom dividers, whereas here the pink only has a
   BOTTOM divider — the wave above it belongs to the preceding white section. So
   136/136 lands very differently.

   Measured on the rendered page (pixel-sampled down the left edge, Small Actions
   band): pink runs 2855 -> 3595, content 3071 -> 3581. That's 216px of pink
   above the copy and 14px below it.

   Pink extends ~80px ABOVE each section's box (the preceding section's 120px
   pink wave) and stops 120px above its bottom (its own white wave), so balance
   needs `pb = pt + 200`. Holding each section's height constant, that resolves
   to 36/236 for all three bands — their content heights differ but the arithmetic
   lands on the same pair. Result: 116px of clear pink either side. */
@media (min-width: 768px) {
  body.page-id-60 #page-container .ww-sec.ww-cons {
    padding-top: 36px !important;
    padding-bottom: 236px !important;
  }
}
@media (max-width: 767px) {
  /* phones run 80px dividers, so the same derivation gives pb = pt + 134 */
  body.page-id-60 #page-container .ww-sec.ww-cons {
    padding-top: 30px !important;
    padding-bottom: 164px !important;
  }
}

/* ---------------------------------------------------------------------------
   2. ORPHANED LAST LINES
   ---------------------------------------------------------------------------
   The centred copy blocks are 740px wide and several sentences overshoot it by
   two or three words, so they dropped a stub onto a second line —
   "community engagement." and "choose to care." each sat alone under a full
   line. Rather than chase a width that happens to fit this particular copy (and
   breaks the moment Gabby edits a sentence), let the browser balance the lines.
   `balance` evenly distributes a short block; `pretty` is the safety net for
   longer ones and for browsers that only support that. */
/* `balance` is for CENTRED blocks — it evens the line lengths, which is exactly
   what kills the "choose to care." orphan. Applying it to the left-aligned
   column in "Every Companion Bird Has a Wild Story" was wrong: balance shortened
   every line there and left the 584px column visibly under-filled. That copy
   gets `pretty` instead, which only prevents the orphan and otherwise fills the
   measure normally. */
body.page-id-60 .ww-headline .et_pb_text_inner,
body.page-id-60 .ww-headline .et_pb_text_inner p,
body.page-id-60 .ww-ask-sub .et_pb_text_inner,
body.page-id-60 .ww-ask-sub .et_pb_text_inner p {
  text-wrap: balance;
}
body.page-id-60 .ww-cons .et_pb_text_inner p {
  text-wrap: pretty;
}

/* ---------------------------------------------------------------------------
   3. THE LISTS
   ---------------------------------------------------------------------------
   Both are two-column, both were pinned to the same 740px box, and neither
   width suited its own content:

     Why Conservation Matters — items are two words ("Pollution", "Habitat
     loss"), so 370px columns left an enormous empty gutter down the middle.
     Narrowed to 600px, which pulls the columns together under the centred copy.

     How You Can Help — items run to 50 characters, so 370px columns forced
     "Inspiring the next generation of wildlife advocates" onto two lines and
     made the right column taller than the left. Widened to 900px so every item
     holds one line.

   Both are centred as a block so they sit under the centred copy above rather
   than hanging off its left edge.

   Sized with `width`, not `max-width`: these modules are pinned to 740px by an
   ancestor, and a max-width can only cap that — the How You Can Help list needed
   to GROW past it and silently didn't on the first attempt. Each width is the
   longest item in that list, doubled, plus the column gap. */
@media (min-width: 981px) {
  body.page-id-60 .ww-whymatters .ww-list-2col .et_pb_text_inner {
    width: 540px;
    max-width: none;
    margin-left: auto !important;
    margin-right: auto !important;
  }
  body.page-id-60 .ww-help .ww-list-2col .et_pb_text_inner {
    width: 860px;
    max-width: none;
    margin-left: auto !important;
    margin-right: auto !important;
  }
}

/* the 5px dot sat at the top of its line box rather than on the text's
   mid-line — nudged onto the first line's optical centre */
body.page-id-60 .ww-whymatters .ww-list-2col li::before {
  top: .62em;
}
/* v166 — Services: the End-of-Life card's cool tint.

   `.ww-duo-flocks` and `.ww-duo-eol` sit side by side with the same gold border
   and radius, but different gradients:

     flocks  #FFFDF9 -> #FDF5EC -> #FCEFE2   warm cream
     eol     #FFFDF9 -> #F7F0F7 -> #F2E8F6   cool lavender

   The cool tint is clearly deliberate — a gentler tone for the hardest subject
   on the page. But paired with a warm card and wrapped in a gold border it reads
   as washed-out rather than considered, which is what Nick saw as a "miscoloured
   box". Every other card on the site is the warm cream, so this one joins them.

   If the softer tone is wanted back, the fix isn't to restore this gradient on
   its own — the border needs to cool with it, or the pair reads mismatched again. */
body.page-id-33 .ww-sec.ww-duosec .ww-duocard.ww-duo-eol {
  background-image: linear-gradient(168deg, rgb(255, 253, 249) 0%, rgb(253, 245, 236) 62%, rgb(252, 239, 226) 100%) !important;
}
/* v167 — RECOVERED FROM SERVER (renumbered from a second, duplicate "v166").

   Found 2026-08-14 during the Hospital Policies round: the live stylesheet on
   WPE was 4,906 bytes longer than the canonical concat in ~/.ww-qa/css/. A
   concurrent session had appended this Services diagonal-band fix directly to
   the server and never saved a numbered source file — and it labelled the block
   v166, which was already taken by the End-of-Life card tint.

   Saved here verbatim as v167 so the concat reproduces the live file again.
   Nothing in it was changed. */

/* v166 — Services: the hard horizontal band across the Diagnostics section.

   WHAT NICK SAW: a straight line running the full width of the Diagnostics
   section, just above the wave that leads into Backyard Flocks — invisible at
   the left edge and obvious on the right.

   ROOT CAUSE: `.ww-diagsec` is the ONLY full-width section on the site painted
   with a DIAGONAL gradient (135deg). Every other section — hero, care, van,
   species, quote, wellsec, birdsec, mamsec, asksec — is 180deg vertical. A
   vertical gradient ends on one flat colour along its bottom edge, so Divi's
   wave divider (a single flat SVG fill) can match it exactly. A 135deg gradient
   does not: along the bottom edge it runs from mid-gradient at the left to the
   end colour at the right.

   v164 measured the colour above the boundary at x=12 and re-filled the wave to
   match — which is why the seam vanishes at the left edge and peaks at the
   right. Measured across the boundary at 1440 before this fix:

       x=  20   above FEE9F3   wave FEE9F4   ΔRGB  12
       x= 520   above FDE1F0   wave FEE9F4   ΔRGB  13
       x= 920   above FAD9EB   wave FEE9F4   ΔRGB  29
       x=1420   above F8D0E6   wave FEE9F4   ΔRGB  45   <- the visible band

   No single fill can fix that, because the thing it has to match isn't one
   colour. So flatten the edge instead, then match it.

   1. A vertical settle layer resolves the last 190px of the diagonal wash to one
      colour across the full width. The diagonal still reads through the body of
      the section — only the bottom edge is normalised, and it is normalised over
      190px, so there is no second seam where the settle begins.

      #FBDCED is the midpoint of what the edge runs between today (FEE9F4 left,
      F8D0E6 right), so the left half deepens very slightly and the right half
      lightens very slightly rather than the whole strip shifting one way. */
body.page-id-33 .ww-sec.ww-diagsec {
  background:
    linear-gradient(180deg, rgba(251,220,237,0) calc(100% - 190px), #FBDCED 100%),
    linear-gradient(135deg, #FFF2F8 0%, #FDE1F0 55%, #F8D0E6 100%) !important;
}

/* 2. …and the wave below is re-filled to that exact colour. Same Divi wave2
      geometry and the same three fill-opacity layers — only the fill changed,
      so the shape and its softness are untouched. */
body.page-id-33 .ww-sec.ww-duosec > .et_pb_top_inside_divider {
  background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMjBweCIgdmlld0JveD0iMCAwIDEyODAgMTQwIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxnIGZpbGw9IiNGQkRDRUQiPjxwYXRoIGQ9Ik0wIDUxLjc2YzM2LjIxLTIuMjUgNzcuNTctMy41OCAxMjYuNDItMy41OCAzMjAgMCAzMjAgNTcgNjQwIDU3IDI3MS4xNSAwIDMxMi41OC00MC45MSA1MTMuNTgtNTMuNFYwSDB6IiBmaWxsLW9wYWNpdHk9Ii4zIi8+PHBhdGggZD0iTTAgMjQuMzFjNDMuNDYtNS42OSA5NC41Ni05LjI1IDE1OC40Mi05LjI1IDMyMCAwIDMyMCA4OS4yNCA2NDAgODkuMjQgMjU2LjEzIDAgMzA3LjI4LTU3LjE2IDQ4MS41OC04MFYwSDB6IiBmaWxsLW9wYWNpdHk9Ii41Ii8+PHBhdGggZD0iTTAgMHYzLjRDMjguMiAxLjYgNTkuNC41OSA5NC40Mi41OWMzMjAgMCAzMjAgODQuMyA2NDAgODQuMyAyODUgMCAzMTYuMTctNjYuODUgNTQ1LjU4LTgxLjQ5VjB6Ii8+PC9nPjwvc3ZnPg==") !important;
}

/* 3. The top edge of the same section had a milder version of the same error.
      v164 sampled x=12 there too and filled the wave #FAE5E2 — but that sample
      sat inside the tail of `.ww-wellsec::after`, the blurred gold disc pinned
      to the section's bottom-left, so it picked up a yellow cast the rest of the
      width doesn't have. Across most of the width the wellness gradient really
      does end on its declared #FAE4E9. Refilling to that halves the worst-case
      join (ΔRGB 14 -> 7) without touching the two blur discs, which are doing
      deliberate work in that section's design.

      Residual: the discs still tint the extreme left and right of that edge by
      ~7 ΔRGB. That is well under the ~20 where a join starts to read as a line
      on a soft gradient, and removing it entirely means moving the discs — a
      look change, not a defect fix. Left alone on purpose. */
body.page-id-33 .ww-sec.ww-diagsec > .et_pb_top_inside_divider {
  background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMjBweCIgdmlld0JveD0iMCAwIDEyODAgMTQwIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxnIGZpbGw9IiNGQUU0RTkiPjxwYXRoIGQ9Ik0wIDUxLjc2YzM2LjIxLTIuMjUgNzcuNTctMy41OCAxMjYuNDItMy41OCAzMjAgMCAzMjAgNTcgNjQwIDU3IDI3MS4xNSAwIDMxMi41OC00MC45MSA1MTMuNTgtNTMuNFYwSDB6IiBmaWxsLW9wYWNpdHk9Ii4zIi8+PHBhdGggZD0iTTAgMjQuMzFjNDMuNDYtNS42OSA5NC41Ni05LjI1IDE1OC40Mi05LjI1IDMyMCAwIDMyMCA4OS4yNCA2NDAgODkuMjQgMjU2LjEzIDAgMzA3LjI4LTU3LjE2IDQ4MS41OC04MFYwSDB6IiBmaWxsLW9wYWNpdHk9Ii41Ii8+PHBhdGggZD0iTTAgMHYzLjRDMjguMiAxLjYgNTkuNC41OSA5NC40Mi41OWMzMjAgMCAzMjAgODQuMyA2NDAgODQuMyAyODUgMCAzMTYuMTctNjYuODUgNTQ1LjU4LTgxLjQ5VjB6Ii8+PC9nPjwvc3ZnPg==") !important;
}
/* v168 — Hospital Policies: the two defects the grid repair exposed.

   Context: v161 built this page as a six-column masonry grid but keyed every
   rule on `body.page-id-123 .ww-duosec > .et_pb_row:nth-of-type(N)`.
   `:nth-of-type` counts by TAG, and .ww-duosec's first child is Divi's
   `div.et_pb_top_inside_divider` — so every span, icon, image and the
   full-bleed band landed one row EARLY, and the tenth row matched nothing at
   all (its two cards collapsed to 1/6 of the grid = 183px, breaking words
   mid-syllable). The rows now carry real classes `ww-pol-r1..r10` set in the
   page content, and v161/v162/v163 were retargeted onto them.

   With the grid finally laying out as designed, two problems became visible on
   the full-width (span 6) cards. Both are measured, not eyeballed.


   1. PARAGRAPH GAPS SCALED WITH CARD WIDTH.

   Divi ships `.et_pb_gutters3 .et_pb_column_1_2 .et_pb_module{margin-bottom:5.82%}`
   — a PERCENTAGE, resolved against the column's content box. The sheet's own
   `.ww-sec .et_pb_module{margin-bottom:0}` is (0,2,0) and loses to Divi's
   (0,3,0), so 5.82% was what actually painted. Measured across this page:

       card span   content width   gap
       span 2          343px      19.8px
       span 3          538px      31.2px
       span 6         1172px      68.1px

   Three different paragraph rhythms on one page, and in the full-width cards
   the gap was more than two line-heights — the three paragraphs of "Home
   Safety" read as three separate blocks rather than one policy.

   Fixed at a flat 24px (~0.8 line-height at this 16.5px/1.85 body) so the
   rhythm is identical in every card regardless of how wide it is. Needs
   `!important` at (0,4,0) because Divi's per-page et-cache stylesheet loads
   AFTER ww-system.css.


   2. BODY COPY DID NOT ALIGN WITH ITS OWN HEADING.

   `.ww-body-m` carries `max-width:860px; margin-left:auto; margin-right:auto`.
   In a span 2 or span 3 card the 860px cap never binds, so copy sat flush left
   under the heading. In a span 6 card the content box is 1172px, so the cap bit
   and centred the block — leaving the icon and heading at 35px from the card
   edge and the body at 190px. Measured on both full-width text cards:

       .ww-pol-r9c1  "Home Safety"        head 35   body 190   (155px step)
       .ww-pol-r10c2 "Our Standards"      head 35   body 190   (155px step)

   The 860px measure itself is right — it is the site's established measure and
   1172px would run ~140 characters per line. So keep the measure and left-align
   it instead of centring it, which puts body and heading on one axis.

   `.ww-pol-r5` (Our Commitment) is excluded: that card is the full-bleed plum
   band and is centred BY DESIGN — forcing margin-left:0 there would drag its
   copy off the band's centre axis. */

@media (min-width: 981px) {
  /* 1 — one paragraph rhythm at every card width */
  body.page-id-123 .ww-duosec .ww-duocard .et_pb_module {
    margin-bottom: 24px !important;
  }
  body.page-id-123 .ww-duosec .ww-duocard .et_pb_module:last-child {
    margin-bottom: 0 !important;
  }

  /* 2 — the 860px measure left-aligns to the heading, except on the band */
  body.page-id-123 .ww-duosec > .et_pb_row:not(.ww-pol-r5) > .et_pb_column .ww-body-m {
    margin-left: 0 !important;
    margin-right: auto !important;
  }
}

@media (max-width: 980px) {
  /* Stacked cards are ~342px wide, where the percentage resolved to ~20px
     anyway — pinned so it stops tracking the viewport. */
  body.page-id-123 .ww-duosec .ww-duocard .et_pb_module {
    margin-bottom: 20px !important;
  }
  body.page-id-123 .ww-duosec .ww-duocard .et_pb_module:last-child {
    margin-bottom: 0 !important;
  }
}
/* v169 — Hospital Policies: rebalance two grid rows so the copy fills the card.

   v161 sized every span by character count, but two of the eleven grid rows
   pair a long card with a short one at equal width (3 + 3). In an equal-height
   grid the tall card sets the row height and the short one carries the
   difference as dead cream inside its own border:

       grid row                                 chars   span   void
       Biosecurity  +  Multi-Bird Household     1027/541  3+3   320px
       Preparing    +  Emergencies              1094/912  3+3   247px

   320px is 39% of an 817px card — it reads as a mistake rather than as
   breathing room, and it was the largest remaining defect on the page.

   Equal-height rows are still the right model here (letting cards size to
   content just moves the gap outside the card, where it looks worse), so the
   fix is to give the longer copy the wider column:

       Biosecurity  span 3 -> 4      Multi-Bird    span 3 -> 2
       Preparing    span 3 -> 4      Emergencies   span 3 -> 2

   Both rows still sum to 6, so the eleven-row rhythm and the 66-column total
   are unchanged. Measured at 1440 across the whole page:

       total void   1854px -> 1438px   (-22%)
       worst void    320px ->  249px   (-22%)
       page height  9919px -> 9782px

   v161's note warns that copy over ~800 characters should never land in a
   third, because on its first pass Biosecurity "towered over its neighbours".
   That rule held when the neighbour was another span 3; it does not bite here
   because the neighbour is now span 4 and absorbs the height. Emergencies at
   912 characters in a 395px column sets ~45 characters per line, which is
   inside the comfortable measure — checked on screen, not just in numbers. */

@media (min-width: 981px) {
  body.page-id-123 .ww-duosec > .et_pb_row.ww-pol-r1 > .et_pb_column:nth-of-type(2) { grid-column: span 4; }
  body.page-id-123 .ww-duosec > .et_pb_row.ww-pol-r2 > .et_pb_column:nth-of-type(1) { grid-column: span 2; }
  body.page-id-123 .ww-duosec > .et_pb_row.ww-pol-r6 > .et_pb_column:nth-of-type(2) { grid-column: span 4; }
  body.page-id-123 .ww-duosec > .et_pb_row.ww-pol-r7 > .et_pb_column:nth-of-type(1) { grid-column: span 2; }

  /* The two cards that moved into a third take the tighter gutter v161 gives
     every span 2 card, so interior padding stays consistent across the row. */
  body.page-id-123 .ww-duosec > .et_pb_row.ww-pol-r2 > .et_pb_column:nth-of-type(1),
  body.page-id-123 .ww-duosec > .et_pb_row.ww-pol-r7 > .et_pb_column:nth-of-type(1) {
    padding: 30px 26px 28px !important;
  }

  /* ...and the two that widened to span 4 take the standard 34px gutter back,
     in case v161 had them on the narrow step. */
  body.page-id-123 .ww-duosec > .et_pb_row.ww-pol-r1 > .et_pb_column:nth-of-type(2),
  body.page-id-123 .ww-duosec > .et_pb_row.ww-pol-r6 > .et_pb_column:nth-of-type(2) {
    padding: 38px 34px 34px !important;
  }
}

/* =====================================================================
   v170 — CONTACT (44): emergency section left-edge alignment, 2026-08-14
   ===================================================================== */

/* Measured at 1440, painted-text left edges down the .ww-emgsec column:

       headline            100   (full width, centred)
       "If your pet is…"   340
       symptom list col1   310   <- 30px out
       symptom list col2   734
       "Please do not…"    340

   The two-column symptom list sits on a generic `.ww-emgsec .ww-frow
   { max-width: 820px }` while the prose either side of it runs the
   section's 760px measure, so the list hung 30px left of everything it
   sits between. Both blocks are centred on the same axis, which is
   exactly why the mismatch reads as a wobble rather than as a deliberate
   outdent.

   Moving the list in to 760 (rather than pushing the prose out to 820)
   keeps the paragraph at a comfortable measure — 820px of 15.5px Jost is
   ~53em against a 30-40em target. Verified no symptom wraps to a second
   line at the narrower width: 0/10 items wrap before and after, and the
   list columns now land on 340 / 734 with a right edge of 1100, matching
   the prose exactly. */

@media (min-width: 981px) {
  body.page-id-44 .ww-emgsec .ww-frow { max-width: 760px !important; }
}

/* =====================================================================
   v171 — CONTACT (page 44) design round, 2026-08-14

   Originally shipped as v168 + v169 and lost when a concurrent Hospital
   Policies session claimed both numbers and rebuilt ww-system.css from
   its own copy of ~/.ww-qa/css/. Re-applied here verbatim. Their two
   blocks (body.page-id-123) are untouched and there is no interaction —
   everything below is body.page-id-44 or the .ww-formcard component.

   Sections:  A. card-pair voids   B. tablet measure   C. widows
              D. form field boundaries (WCAG 1.4.11)
   ===================================================================== */


/* --- A. CARD PAIRS TAKE NATURAL HEIGHT (>=981) -----------------------
   .ww-frow columns are flex with the default align-items:stretch, and on
   this page the COLUMN *is* the card (module_class="ww-duocard" sits on
   et_pb_column). So the sparse card in each pair was padded out with
   empty ground inside its own border: 256px on "General Contact
   Information", 349px on "Calling Our Office". A void inside a bordered
   card reads as a bug; a rag between two separate cards reads as content.
   Scoped to 44: /emergency/ has nine .ww-duo-row and must not change. */
@media (min-width: 981px) {
  body.page-id-44 .ww-duosec .ww-duo-row { align-items: flex-start !important; }
  body.page-id-44 .ww-duosec .ww-duo-row > .et_pb_column { align-self: flex-start !important; }

  /* methodsec -> duosec was 252px card-edge to card-edge (112 + 112 + a
     27px row pad) against the site's own 112/112 section rhythm. */
  body.page-id-44 .ww-duosec > .et_pb_row.ww-duo-row:first-of-type { padding-top: 0 !important; }
}


/* --- B. TABLET MEASURE, 768-980 --------------------------------------
   The documented blind spot: cards go full-width here while the viewport
   is still wide, so body copy ran 45-60em against a 30-40em target.
   Measured at 980 before: emgsec close 59.8em, duosec bodies 51-55em,
   navystrip 50.9em, hero standfirst 45.2em. Capping in em keeps it
   font-relative. 11 blocks over 44em at 980 and 4 at 768 -> 0 at both. */
@media (min-width: 768px) and (max-width: 980px) {

  /* left-aligned copy inside cards — cap from the left edge */
  body.page-id-44 #main-content .ww-duocard .ww-body-m .et_pb_text_inner,
  body.page-id-44 #main-content .ww-duocard .ww-body-m p,
  body.page-id-44 #main-content .ww-duocard .ww-list .et_pb_text_inner,
  body.page-id-44 #main-content .ww-infocard .et_pb_text_inner,
  body.page-id-44 #main-content .ww-navystrip .ww-strip-line .et_pb_text_inner,
  body.page-id-44 #main-content .ww-navystrip .ww-strip-line p {
    max-width: 40em;
    margin-right: auto;
  }

  /* centred prose — cap and keep it on the section axis */
  body.page-id-44 #main-content .ww-emgsec .ww-body-m .et_pb_text_inner,
  body.page-id-44 #main-content .ww-emgsec .ww-body-m p,
  body.page-id-44 #main-content .ww-commitsec .ww-body-m .et_pb_text_inner,
  body.page-id-44 #main-content .ww-commitsec .ww-body-m p {
    max-width: 40em !important;
    margin-left: auto;
    margin-right: auto;
  }

  /* hero standfirst is 20px serif — display copy sits tighter than body */
  body.page-id-44 #main-content .ww-pagehero .ww-subtitle .et_pb_text_inner,
  body.page-id-44 #main-content .ww-pagehero .ww-subtitle p {
    max-width: 36em;
    margin-left: auto;
    margin-right: auto;
  }
}


/* --- C. WIDOWS -------------------------------------------------------
   These tiers never got a text-wrap treatment (the body tiers already
   carry `pretty`). Worst case measured: the hero standfirst dropping
   "help." alone on line 3 — a 37px last line against an 818px measure.
   `balance` not `pretty` for the short centred blocks: `pretty` only
   tidies the final lines and left the 0.05 ratio untouched. Chromium
   caps `balance` at ~6 lines and falls back cleanly past that, so the
   longer commitsec paragraphs degrade to normal wrapping. */
body.page-id-44 #main-content .ww-pagehero .ww-subtitle .et_pb_text_inner,
body.page-id-44 #main-content .ww-pagehero .ww-subtitle p,
body.page-id-44 #main-content .ww-commitsec .ww-body-m .et_pb_text_inner,
body.page-id-44 #main-content .ww-commitsec .ww-body-m p,
body.page-id-44 #main-content .ww-navystrip .ww-strip-line .et_pb_text_inner,
body.page-id-44 #main-content .ww-navystrip .ww-strip-line p {
  text-wrap: balance;
}

body.page-id-44 #main-content .ww-methodsec .ww-method .et_pb_blurb_description,
body.page-id-44 #main-content .ww-methodsec .ww-method .et_pb_blurb_description p {
  text-wrap: pretty;
}


/* --- D. FORM FIELD BOUNDARIES (WCAG 1.4.11) --------------------------
   The contact form is the page's primary conversion element and its
   fields had no usable boundary. Pixel-sampled off the live render:

       card ground   rgb(254,252,250)
       field fill    rgb(255,255,255)   -> 1.02:1 against the ground
       field border  #EBD9C8            -> 1.34:1 against the ground

   SC 1.4.11 Non-text Contrast wants 3:1 for the visual boundary that
   identifies a control, so a white field on a white card outlined at
   1.34 reads as no field at all.

   #94806D keeps the warm sand character rather than dropping in a grey,
   and clears the floor across the WHOLE card gradient — the card runs
   #FFFDF9 -> cream -> #FCEFE2, and a border only just passing at the top
   fails by the bottom: #9C8875 measured 3.34:1 at #FFFDF9 but exactly
   3.00:1 at #FCEFE2. #94806D holds 3.71 -> 3.34 across the same range.
   Verified 3.69:1 by pixel sample on the live render.

   Scoped to .ww-formcard, the same Gravity Forms component on Contact
   (44) and Pet Parent Academy (51) — both should match.

   The focus state (--ww-coral #EC4FA0) is left alone: it measures 3.31:1
   where the fields actually sit, so it already passes. */

.ww-formcard .gform_wrapper input:not([type=submit]),
.ww-formcard .gform_wrapper textarea,
.ww-formcard .gform_wrapper select {
  border-color: #94806D !important;
}

/* ==========================================================================
   v170 — Found a Wild Animal (page 58) review + the header band it exposed

   (Written and verified once as v167, then lost when a parallel session rebuilt
   this file from an older snapshot. Re-applied verbatim on top of v168/v169.)
   ========================================================================== */

/* 1. STICKY HEADER: "Contact" still ran under the Book pill.

   v-prev fixed this for 1281-1319 and measured the band as ending there. It
   doesn't. Re-measured today with the existing rule live, the gap between
   Contact's right edge and the CTA's left edge is:

       1281 -19    1291 -11    1301  -2    1311  +6     <- rule ON, still short
       1321 -12    1331  -3    1341  +5    1351 +14     <- rule OFF at 1320, relapse
       1361 +22    1371 +27    1381 +28    1391 +29     <- genuinely clear

   So there were two broken bands, not one: the old rule was too weak at its own
   floor, and its 1319 ceiling created a cliff where the CTA's padding and font
   snapped back up and the overlap returned.

   Rehearsed four candidates against the live page (injected, nothing written)
   and measured every 10px from 1281 to 1400. This one holds a flat 33px across
   1281-1351 and hands off to the untouched band at 1361 with 22px — no cliff.
   Margins do the work from 1320 up so the nav keeps its full type size there;
   the 11.5px step stays confined to 1281-1319, where the CTA is already stepped
   down and the tier is established. */
@media (min-width: 1281px) and (max-width: 1360px) {
  body.ww-stuck .ww-navm ul.et-menu > li.ww-menu-cta > a {
    padding-left: 9px !important; padding-right: 9px !important; font-size: 11.5px !important;
  }
  body.ww-stuck .ww-navm ul.et-menu > li > a { padding-left: 2px !important; padding-right: 2px !important; }
  body.ww-stuck .ww-navm ul.et-menu > li { margin: 0 5px !important; }
  body.ww-stuck .ww-navm ul.et-menu > li.et_pb_menu__logo-slot { margin: 0 !important; }
}
@media (min-width: 1281px) and (max-width: 1319px) {
  body.ww-stuck .ww-navm ul.et-menu > li > a { font-size: 11.5px !important; }
}

/* 2. THE MAP — taller on desktop (Nick's call).

   It shipped at a fixed height="580px" attribute, which at 1210px wide is a
   2.09:1 letterbox — the wrong proportion for a locator you are meant to pan
   and scan for a rehabilitator near you. CSS beats the presentational attribute,
   so the height can scale with the viewport without touching the embed markup.

   clamp(620px, 54vw, 820px): 620 at the 981 floor, 777 at 1440, capped at 820
   so it never eats a whole 1080p screen. Mobile keeps 580 — at 342px wide that
   is already a tall portrait frame. */
@media (min-width: 981px) {
  body.page-id-58 #atlist-embed { height: clamp(620px, 54vw, 820px) !important; }
}

/* 3. SECTION RHYTHM — this page is eight sections of centred prose.

   The site rhythm is padding-top 160 / padding-bottom 112, which was tuned on
   pages where sections carry cards, photos or bands. Five of this page's
   junctions are prose-block to prose-block, so the reader gets 272px of empty
   between one sentence and the next heading — the page reads as unfinished
   rather than as generous.

   Tightened to 124/88 = 212px per junction. Deliberately still loose: this is
   emergency guidance and the whitespace is doing real work separating advice
   that must not be misread as continuous. Scoped to this page so every other
   page keeps the established rhythm. */
@media (min-width: 981px) {
  body.page-id-58 #page-container .ww-sec.ww-acadsec,
  body.page-id-58 #page-container .ww-sec.ww-acadintro {
    padding-top: 124px !important;
    padding-bottom: 88px !important;
  }
}
@media (max-width: 980px) {
  body.page-id-58 #page-container .ww-sec.ww-acadsec,
  body.page-id-58 #page-container .ww-sec.ww-acadintro {
    padding-top: 100px !important;
    padding-bottom: 64px !important;
  }
}

/* 4. "How Wandering Wings Can Help" — three competing measures in one block.

   The eyebrow, headline and the two prose lines all ran the full 1240px grid,
   while the bullet list is capped by an earlier rule to `width: max-content`
   and centred, landing at 410-1030. So the block stacked a 1240-wide centred
   line, a 620-wide left-aligned list, and another 1240-wide centred line — the
   eye got three different left edges in four elements.

   Capping the prose to 760px puts it on the same optical column as the list
   while keeping the intro line ("Although we do not provide long-term
   rehabilitation…") on a single line, which a 620px cap would have broken. The
   headline stays full width — it is the section's anchor and is meant to span. */
@media (min-width: 981px) {
  body.page-id-58 .ww-acadsec:has(.ww-list) .et_pb_text:not([class*="ww-"]) .et_pb_text_inner {
    max-width: 760px;
    margin-left: auto !important;
    margin-right: auto !important;
  }
}

/* ============================================================================
   R22-CENTRING-0817-089ab159  —  v172: vertical balance against the VISIBLE
   colour band  (replaces the reverted v171)
   ----------------------------------------------------------------------------
   Olivia's 8/17 review says "not centered" / "center the copy" 12 times. The
   offset is VERTICAL, not horizontal — every centred block already measures
   dead-centre horizontally.

   Cause: a Divi wave divider at the top of a section is painted in the PREVIOUS
   section's colour, and a bottom divider in the NEXT section's colour. So a
   section's visible colour band is displaced from its box, and symmetric padding
   lands the copy off-centre inside that band.

   WHAT v171 GOT WRONG, and why this one is different:

   1. v171 used ONE blended wave depth (k = 0.551) for both orientations. Measured
      per divider by filled-area fraction (r22-k.cjs, every divider on the site):
      a TOP wave fills 0.4225 of its height, a BOTTOM wave 0.5725 — they are
      mirrors of one shape and sum to 1. One k is wrong for both.

          vTop = boxTop    + 0.4225*ownTop - 0.5725*prevBot
          vBot = boxBottom - 0.5725*ownBot + 0.4225*nextTop

   2. v171 keyed off SECTION padding. But Divi rows carry their own asymmetric
      padding — the homepage quote row adds 100px on top and 0 on the bottom —
      so section padding does not tell you where the ink actually lands. These
      values are measured from real ink extent (text rects + media + card
      backgrounds) on the live page, per section, at 1440 and 390.

   3. v171 was a :has() signature rule, so it could not express the real spread:
      nine House Calls sections share signature 120/0/0/120 and identical
      padding, yet their ink sits 45–137px high because their row padding
      differs. Only per-section values fix them all.

   Sanity check on direction — the model predicts the homepage quote sits LOW and
   House Calls sits HIGH, which is exactly the opposite pair Olivia reported.

   Heroes are excluded on purpose (their top padding is fixed-header clearance).
   Sections off by <24px are left alone. Regenerate with r22-skew.cjs + r22-gen.cjs.
   ========================================================================== */
/* --- desktop (measured at 1440) --- */
@media (min-width: 981px) {

  /* home */
  body.page-id-16 #page-container .et_pb_section.ww-sec.et_pb_section_1 { padding-top: 125px !important; padding-bottom: 107px !important; } /* ww-values: was 160/72, ink sat low 70px */
  body.page-id-16 #page-container .et_pb_section.ww-sec.et_pb_section_5 { padding-top: 141px !important; padding-bottom: 91px !important; } /* ww-quote: was 160/72, ink sat low 38px */
  body.page-id-16 #page-container .et_pb_section.ww-sec.et_pb_section_7 { padding-top: 91px !important; padding-bottom: 153px !important; } /* ww-diff: was 112/132, ink sat low 43px */

  /* services */
  body.page-id-33 #page-container .et_pb_section.ww-sec.et_pb_section_1 { padding-top: 199px !important; padding-bottom: 93px !important; } /* ww-introsec: was 160/132, ink sat high 78px */
  body.page-id-33 #page-container .et_pb_section.ww-sec.et_pb_section_2 { padding-top: 194px !important; padding-bottom: 78px !important; } /* ww-wellsec: was 160/112, ink sat high 68px */
  body.page-id-33 #page-container .et_pb_section.ww-sec.et_pb_section_3 { padding-top: 187px !important; padding-bottom: 85px !important; } /* ww-diagsec: was 160/112, ink sat high 54px */
  body.page-id-33 #page-container .et_pb_section.ww-sec.et_pb_section_4 { padding-top: 179px !important; padding-bottom: 113px !important; } /* ww-duosec: was 160/132, ink sat high 39px */
  body.page-id-33 #page-container .et_pb_section.ww-sec.et_pb_section_5 { padding-top: 65px !important; padding-bottom: 63px !important; } /* ww-dvmstrip: was 92/36, ink sat low 55px */

  /* species */
  body.page-id-34 #page-container .et_pb_section.ww-sec.et_pb_section_1 { padding-top: 197px !important; padding-bottom: 95px !important; } /* ww-birdsec: was 160/132, ink sat high 74px */
  body.page-id-34 #page-container .et_pb_section.ww-sec.et_pb_section_2 { padding-top: 187px !important; padding-bottom: 85px !important; } /* ww-repsec: was 160/112, ink sat high 53px */
  body.page-id-34 #page-container .et_pb_section.ww-sec.et_pb_section_6 { padding-top: 129px !important; padding-bottom: 115px !important; } /* ww-asksec: was 112/132, ink sat high 34px */

  /* about */
  body.page-id-43 #page-container .et_pb_section.ww-sec.et_pb_section_4 { padding-top: 93px !important; padding-bottom: 179px !important; } /* ww-eventsec: was 112/160, ink sat low 38px */

  /* contact */
  body.page-id-44 #page-container .et_pb_section.ww-sec.et_pb_section_2 { padding-top: 147px !important; padding-bottom: 77px !important; } /* ww-duosec: was 112/112, ink sat high 70px */
  body.page-id-44 #page-container .et_pb_section.ww-sec.et_pb_section_3 { padding-top: 190px !important; padding-bottom: 82px !important; } /* ww-emgsec: was 160/112, ink sat high 59px */
  body.page-id-44 #page-container .et_pb_section.ww-sec.et_pb_section_4 { padding-top: 189px !important; padding-bottom: 83px !important; } /* ww-commitsec: was 160/112, ink sat high 58px */

  /* concierge */
  body.page-id-45 #page-container .et_pb_section.ww-sec.et_pb_section_1 { padding-top: 203px !important; padding-bottom: 117px !important; } /* ww-introsec: was 160/160, ink sat high 86px */
  body.page-id-45 #page-container .et_pb_section.ww-sec.et_pb_section_2 { padding-top: 214px !important; padding-bottom: 106px !important; } /* ww-polnotes: was 160/160, ink sat high 107px */
  body.page-id-45 #page-container .et_pb_section.ww-sec.et_pb_section_3 { padding-top: 232px !important; padding-bottom: 88px !important; } /* ww-duosec: was 160/160, ink sat high 144px */
  body.page-id-45 #page-container .et_pb_section.ww-sec.et_pb_section_4 { padding-top: 214px !important; padding-bottom: 106px !important; } /* ww-steps-sec: was 160/160, ink sat high 107px */
  body.page-id-45 #page-container .et_pb_section.ww-sec.et_pb_section_5 { padding-top: 188px !important; padding-bottom: 104px !important; } /* ww-duosec: was 160/132, ink sat high 56px */
  body.page-id-45 #page-container .et_pb_section.ww-sec.et_pb_section_6 { padding-top: 125px !important; padding-bottom: 119px !important; } /* ww-quote-sec: was 112/132, ink sat high 26px */
  body.page-id-45 #page-container .et_pb_section.ww-sec.et_pb_section_8 { padding-top: 193px !important; padding-bottom: 159px !important; } /* ww-mem: was 176/176, ink sat high 34px */

  /* academy */
  body.page-id-51 #page-container .et_pb_section.ww-sec.et_pb_section_6 { padding-top: 137px !important; padding-bottom: 87px !important; } /* ww-photoband: was 112/112, ink sat high 51px */

  /* foundwild */
  body.page-id-58 #page-container .et_pb_section.ww-sec.et_pb_section_3 { padding-top: 210px !important; padding-bottom: 62px !important; } /* ww-steps-sec: was 160/112, ink sat high 99px */
  body.page-id-58 #page-container .et_pb_section.ww-sec.et_pb_section_5 { padding-top: 138px !important; padding-bottom: 86px !important; } /* ww-wellsec: was 112/112, ink sat high 52px */

  /* dvm */
  body.page-id-59 #page-container .et_pb_section.ww-sec.et_pb_section_2 { padding-top: 86px !important; padding-bottom: 34px !important; } /* ww-acadsec: was 8/112, ink sat high 157px */
  body.page-id-59 #page-container .et_pb_section.ww-sec.et_pb_section_3 { padding-top: 190px !important; padding-bottom: 82px !important; } /* ww-steps-sec: was 160/112, ink sat high 59px */
  body.page-id-59 #page-container .et_pb_section.ww-sec.et_pb_section_4 { padding-top: 174px !important; padding-bottom: 98px !important; } /* ww-acadsec: was 160/112, ink sat high 28px */
  body.page-id-59 #page-container .et_pb_section.ww-sec.et_pb_section_5 { padding-top: 190px !important; padding-bottom: 82px !important; } /* ww-steps-sec: was 160/112, ink sat high 59px */
  body.page-id-59 #page-container .et_pb_section.ww-sec.et_pb_section_6 { padding-top: 190px !important; padding-bottom: 82px !important; } /* ww-acadsec: was 160/112, ink sat high 59px */
  body.page-id-59 #page-container .et_pb_section.ww-sec.et_pb_section_7 { padding-top: 189px !important; padding-bottom: 83px !important; } /* ww-steps-sec: was 160/112, ink sat high 58px */

  /* conservation */
  body.page-id-60 #page-container .et_pb_section.ww-sec.et_pb_section_1 { padding-top: 75px !important; padding-bottom: 197px !important; } /* ww-onepct: was 112/160, ink sat low 74px */
  body.page-id-60 #page-container .et_pb_section.ww-sec.et_pb_section_2 { padding-top: 70px !important; padding-bottom: 202px !important; } /* ww-cons: was 36/236, ink sat high 69px */
  body.page-id-60 #page-container .et_pb_section.ww-sec.et_pb_section_3 { padding-top: 69px !important; padding-bottom: 203px !important; } /* ww-whymatters: was 112/160, ink sat low 85px */
  body.page-id-60 #page-container .et_pb_section.ww-sec.et_pb_section_4 { padding-top: 74px !important; padding-bottom: 198px !important; } /* ww-cons ww-club: was 36/236, ink sat high 77px */
  body.page-id-60 #page-container .et_pb_section.ww-sec.et_pb_section_5 { padding-top: 69px !important; padding-bottom: 203px !important; } /* ww-help: was 112/160, ink sat low 85px */
  body.page-id-60 #page-container .et_pb_section.ww-sec.et_pb_section_6 { padding-top: 70px !important; padding-bottom: 202px !important; } /* ww-cons ww-promise: was 36/236, ink sat high 68px */
  body.page-id-60 #page-container .et_pb_section.ww-sec.et_pb_section_7 { padding-top: 88px !important; padding-bottom: 156px !important; } /* ww-acadsec: was 112/132, ink sat low 48px */

  /* team */
  body.page-id-122 #page-container .et_pb_section.ww-sec.et_pb_section_1 { padding-top: 199px !important; padding-bottom: 93px !important; } /* ww-foundersec: was 160/132, ink sat high 78px */

  /* policies */
  body.page-id-123 #page-container .et_pb_section.ww-sec.et_pb_section_1 { padding-top: 181px !important; padding-bottom: 91px !important; } /* ww-duosec: was 160/112, ink sat high 41px */

  /* wildlife */
  body.page-id-174 #page-container .et_pb_section.ww-sec.et_pb_section_1 { padding-top: 187px !important; padding-bottom: 85px !important; } /* ww-rescueintro: was 160/112, ink sat high 54px */
  body.page-id-174 #page-container .et_pb_section.ww-sec.et_pb_section_2 { padding-top: 223px !important; padding-bottom: 49px !important; } /* ww-duosec: was 160/112, ink sat high 126px */
  body.page-id-174 #page-container .et_pb_section.ww-sec.et_pb_section_3 { padding-top: 194px !important; padding-bottom: 78px !important; } /* ww-foundsec: was 160/112, ink sat high 67px */
  body.page-id-174 #page-container .et_pb_section.ww-sec.et_pb_section_4 { padding-top: 224px !important; padding-bottom: 48px !important; } /* ww-duosec ww-regionsec: was 160/112, ink sat high 127px */
  body.page-id-174 #page-container .et_pb_section.ww-sec.et_pb_section_5 { padding-top: 224px !important; padding-bottom: 48px !important; } /* ww-duosec ww-emergsec: was 160/112, ink sat high 127px */
  body.page-id-174 #page-container .et_pb_section.ww-sec.et_pb_section_6 { padding-top: 224px !important; padding-bottom: 48px !important; } /* ww-beforesec: was 160/112, ink sat high 127px */
  body.page-id-174 #page-container .et_pb_section.ww-sec.et_pb_section_7 { padding-top: 190px !important; padding-bottom: 82px !important; } /* ww-commitsec: was 160/112, ink sat high 59px */
  body.page-id-174 #page-container .et_pb_section.ww-sec.et_pb_section_8 { padding-top: 198px !important; padding-bottom: 74px !important; } /* ww-duosec ww-dirsec: was 160/112, ink sat high 76px */

  /* emergency */
  body.page-id-176 #page-container .et_pb_section.ww-sec.et_pb_section_2 { padding-top: 217px !important; padding-bottom: 55px !important; } /* ww-telepolsec: was 160/112, ink sat high 113px */

  /* housecalls */
  body.page-id-178 #page-container .et_pb_section.ww-sec.et_pb_section_1 { padding-top: 224px !important; padding-bottom: 48px !important; } /* ww-duosec: was 160/112, ink sat high 127px */
  body.page-id-178 #page-container .et_pb_section.ww-sec.et_pb_section_2 { padding-top: 183px !important; padding-bottom: 89px !important; } /* ww-polnotes: was 160/112, ink sat high 45px */
  body.page-id-178 #page-container .et_pb_section.ww-sec.et_pb_section_3 { padding-top: 229px !important; padding-bottom: 43px !important; } /* ww-duosec: was 160/112, ink sat high 137px */
  body.page-id-178 #page-container .et_pb_section.ww-sec.et_pb_section_4 { padding-top: 209px !important; padding-bottom: 63px !important; } /* ww-steps-sec: was 160/112, ink sat high 97px */
  body.page-id-178 #page-container .et_pb_section.ww-sec.et_pb_section_5 { padding-top: 203px !important; padding-bottom: 69px !important; } /* ww-acadsec: was 160/112, ink sat high 86px */
  body.page-id-178 #page-container .et_pb_section.ww-sec.et_pb_section_6 { padding-top: 203px !important; padding-bottom: 69px !important; } /* ww-polnotes: was 160/112, ink sat high 86px */
  body.page-id-178 #page-container .et_pb_section.ww-sec.et_pb_section_7 { padding-top: 190px !important; padding-bottom: 82px !important; } /* ww-acadsec: was 160/112, ink sat high 59px */
  body.page-id-178 #page-container .et_pb_section.ww-sec.et_pb_section_8 { padding-top: 203px !important; padding-bottom: 69px !important; } /* ww-steps-sec: was 160/112, ink sat high 85px */
  body.page-id-178 #page-container .et_pb_section.ww-sec.et_pb_section_9 { padding-top: 203px !important; padding-bottom: 69px !important; } /* ww-acadsec: was 160/112, ink sat high 86px */
}

/* --- mobile (measured at 390) --- */
@media (max-width: 980px) {

  /* home */
  body.page-id-16 #page-container .et_pb_section.ww-sec.et_pb_section_1 { padding-top: 132px !important; padding-bottom: 88px !important; } /* ww-values: was 120/100, ink sat high 24px */
  body.page-id-16 #page-container .et_pb_section.ww-sec.et_pb_section_2 { padding-top: 99px !important; padding-bottom: 93px !important; } /* ww-care: was 64/128, ink sat high 69px */
  body.page-id-16 #page-container .et_pb_section.ww-sec.et_pb_section_5 { padding-top: 138px !important; padding-bottom: 98px !important; } /* ww-quote: was 120/116, ink sat high 36px */
  body.page-id-16 #page-container .et_pb_section.ww-sec.et_pb_section_7 { padding-top: 47px !important; padding-bottom: 89px !important; } /* ww-diff: was 64/72, ink sat low 34px */

  /* services */
  body.page-id-33 #page-container .et_pb_section.ww-sec.et_pb_section_1 { padding-top: 155px !important; padding-bottom: 37px !important; } /* ww-introsec: was 120/72, ink sat high 70px */
  body.page-id-33 #page-container .et_pb_section.ww-sec.et_pb_section_2 { padding-top: 135px !important; padding-bottom: 57px !important; } /* ww-wellsec: was 120/72, ink sat high 31px */
  body.page-id-33 #page-container .et_pb_section.ww-sec.et_pb_section_3 { padding-top: 147px !important; padding-bottom: 45px !important; } /* ww-diagsec: was 120/72, ink sat high 55px */

  /* species */
  body.page-id-34 #page-container .et_pb_section.ww-sec.et_pb_section_1 { padding-top: 140px !important; padding-bottom: 52px !important; } /* ww-birdsec: was 120/72, ink sat high 41px */
  body.page-id-34 #page-container .et_pb_section.ww-sec.et_pb_section_2 { padding-top: 150px !important; padding-bottom: 42px !important; } /* ww-repsec: was 120/72, ink sat high 61px */
  body.page-id-34 #page-container .et_pb_section.ww-sec.et_pb_section_6 { padding-top: 82px !important; padding-bottom: 54px !important; } /* ww-asksec: was 64/72, ink sat high 36px */

  /* about */
  body.page-id-43 #page-container .et_pb_section.ww-sec.et_pb_section_6 { padding-top: 104px !important; padding-bottom: 88px !important; } /* ww-quote-sec: was 120/72, ink sat low 32px */

  /* contact */
  body.page-id-44 #page-container .et_pb_section.ww-sec.et_pb_section_2 { padding-top: 90px !important; padding-bottom: 46px !important; } /* ww-duosec: was 64/72, ink sat high 53px */

  /* concierge */
  body.page-id-45 #page-container .et_pb_section.ww-sec.et_pb_section_1 { padding-top: 146px !important; padding-bottom: 94px !important; } /* ww-introsec: was 120/120, ink sat high 53px */
  body.page-id-45 #page-container .et_pb_section.ww-sec.et_pb_section_2 { padding-top: 156px !important; padding-bottom: 84px !important; } /* ww-polnotes: was 120/120, ink sat high 72px */
  body.page-id-45 #page-container .et_pb_section.ww-sec.et_pb_section_3 { padding-top: 180px !important; padding-bottom: 60px !important; } /* ww-duosec: was 120/120, ink sat high 121px */
  body.page-id-45 #page-container .et_pb_section.ww-sec.et_pb_section_4 { padding-top: 167px !important; padding-bottom: 73px !important; } /* ww-steps-sec: was 120/120, ink sat high 94px */
  body.page-id-45 #page-container .et_pb_section.ww-sec.et_pb_section_5 { padding-top: 165px !important; padding-bottom: 75px !important; } /* ww-duosec: was 120/120, ink sat high 90px */
  body.page-id-45 #page-container .et_pb_section.ww-sec.et_pb_section_8 { padding-top: 146px !important; padding-bottom: 110px !important; } /* ww-mem: was 128/128, ink sat high 36px */

  /* academy */
  body.page-id-51 #page-container .et_pb_section.ww-sec.et_pb_section_2 { padding-top: 78px !important; padding-bottom: 58px !important; } /* ww-acadsec: was 64/72, ink sat high 27px */
  body.page-id-51 #page-container .et_pb_section.ww-sec.et_pb_section_6 { padding-top: 63px !important; padding-bottom: 29px !important; } /* ww-photoband: was 20/72, ink sat high 86px */

  /* foundwild */
  body.page-id-58 #page-container .et_pb_section.ww-sec.et_pb_section_3 { padding-top: 161px !important; padding-bottom: 31px !important; } /* ww-steps-sec: was 120/72, ink sat high 82px */
  body.page-id-58 #page-container .et_pb_section.ww-sec.et_pb_section_5 { padding-top: 95px !important; padding-bottom: 41px !important; } /* ww-wellsec: was 64/72, ink sat high 63px */

  /* dvm */
  body.page-id-59 #page-container .et_pb_section.ww-sec.et_pb_section_1 { padding-top: 105px !important; padding-bottom: 87px !important; } /* ww-acadsec: was 120/72, ink sat low 30px */
  body.page-id-59 #page-container .et_pb_section.ww-sec.et_pb_section_2 { padding-top: 52px !important; padding-bottom: 28px !important; } /* ww-acadsec: was 8/72, ink sat high 123px */

  /* conservation */
  body.page-id-60 #page-container .et_pb_section.ww-sec.et_pb_section_2 { padding-top: 64px !important; padding-bottom: 130px !important; } /* ww-cons: was 30/164, ink sat high 67px */
  body.page-id-60 #page-container .et_pb_section.ww-sec.et_pb_section_3 { padding-top: 48px !important; padding-bottom: 136px !important; } /* ww-whymatters: was 64/120, ink sat low 32px */
  body.page-id-60 #page-container .et_pb_section.ww-sec.et_pb_section_4 { padding-top: 65px !important; padding-bottom: 129px !important; } /* ww-cons ww-club: was 30/164, ink sat high 70px */
  body.page-id-60 #page-container .et_pb_section.ww-sec.et_pb_section_5 { padding-top: 48px !important; padding-bottom: 136px !important; } /* ww-help: was 64/120, ink sat low 32px */
  body.page-id-60 #page-container .et_pb_section.ww-sec.et_pb_section_6 { padding-top: 53px !important; padding-bottom: 141px !important; } /* ww-cons ww-promise: was 30/164, ink sat high 46px */

  /* team */
  body.page-id-122 #page-container .et_pb_section.ww-sec.et_pb_section_1 { padding-top: 156px !important; padding-bottom: 36px !important; } /* ww-foundersec: was 120/72, ink sat high 73px */
  body.page-id-122 #page-container .et_pb_section.ww-sec.et_pb_section_2 { padding-top: 139px !important; padding-bottom: 101px !important; } /* ww-statsband: was 120/120, ink sat high 37px */

  /* policies */
  body.page-id-123 #page-container .et_pb_section.ww-sec.et_pb_section_1 { padding-top: 30px !important; padding-bottom: 162px !important; } /* ww-duosec: was 120/72, ink sat low 181px */

  /* wildlife */
  body.page-id-174 #page-container .et_pb_section.ww-sec.et_pb_section_2 { padding-top: 164px !important; padding-bottom: 28px !important; } /* ww-duosec: was 120/72, ink sat high 105px */
  body.page-id-174 #page-container .et_pb_section.ww-sec.et_pb_section_3 { padding-top: 144px !important; padding-bottom: 48px !important; } /* ww-foundsec: was 120/72, ink sat high 48px */
  body.page-id-174 #page-container .et_pb_section.ww-sec.et_pb_section_4 { padding-top: 164px !important; padding-bottom: 28px !important; } /* ww-duosec ww-regionsec: was 120/72, ink sat high 104px */
  body.page-id-174 #page-container .et_pb_section.ww-sec.et_pb_section_5 { padding-top: 164px !important; padding-bottom: 28px !important; } /* ww-duosec ww-emergsec: was 120/72, ink sat high 116px */
  body.page-id-174 #page-container .et_pb_section.ww-sec.et_pb_section_6 { padding-top: 164px !important; padding-bottom: 28px !important; } /* ww-beforesec: was 120/72, ink sat high 105px */
  body.page-id-174 #page-container .et_pb_section.ww-sec.et_pb_section_8 { padding-top: 146px !important; padding-bottom: 46px !important; } /* ww-duosec ww-dirsec: was 120/72, ink sat high 53px */

  /* emergency */
  body.page-id-176 #page-container .et_pb_section.ww-sec.et_pb_section_1 { padding-top: 96px !important; padding-bottom: 96px !important; } /* ww-oncallsec: was 120/72, ink sat low 48px */
  body.page-id-176 #page-container .et_pb_section.ww-sec.et_pb_section_2 { padding-top: 164px !important; padding-bottom: 28px !important; } /* ww-telepolsec: was 120/72, ink sat high 103px */

  /* housecalls */
  body.page-id-178 #page-container .et_pb_section.ww-sec.et_pb_section_1 { padding-top: 164px !important; padding-bottom: 28px !important; } /* ww-duosec: was 120/72, ink sat high 105px */
  body.page-id-178 #page-container .et_pb_section.ww-sec.et_pb_section_2 { padding-top: 141px !important; padding-bottom: 51px !important; } /* ww-polnotes: was 120/72, ink sat high 43px */
  body.page-id-178 #page-container .et_pb_section.ww-sec.et_pb_section_3 { padding-top: 164px !important; padding-bottom: 28px !important; } /* ww-duosec: was 120/72, ink sat high 116px */
  body.page-id-178 #page-container .et_pb_section.ww-sec.et_pb_section_4 { padding-top: 152px !important; padding-bottom: 40px !important; } /* ww-steps-sec: was 120/72, ink sat high 65px */
  body.page-id-178 #page-container .et_pb_section.ww-sec.et_pb_section_5 { padding-top: 147px !important; padding-bottom: 45px !important; } /* ww-acadsec: was 120/72, ink sat high 54px */
  body.page-id-178 #page-container .et_pb_section.ww-sec.et_pb_section_6 { padding-top: 147px !important; padding-bottom: 45px !important; } /* ww-polnotes: was 120/72, ink sat high 54px */
  body.page-id-178 #page-container .et_pb_section.ww-sec.et_pb_section_8 { padding-top: 147px !important; padding-bottom: 45px !important; } /* ww-steps-sec: was 120/72, ink sat high 54px */
  body.page-id-178 #page-container .et_pb_section.ww-sec.et_pb_section_9 { padding-top: 147px !important; padding-bottom: 45px !important; } /* ww-acadsec: was 120/72, ink sat high 54px */
}
/* end R22-CENTRING-0817-089ab159 */

/* ============================================================================
   R22-OLIVIA-0817-089ab159  —  v173: Olivia's 8/17 review, the non-centring items
   (the 12 "center the copy" notes are handled by R22-CENTRING-0817 above)
   ========================================================================== */

/* --- 1. Body copy that fell through to Divi's 14px default -----------------
   Olivia flags "copy size too small" on five different pages. One cause: those
   blocks are BARE TEXT inside .et_pb_text_inner with no <p> wrapper, so every
   body-copy rule on this site — all of them p-targeted — misses them and they
   inherit Divi's body default of 14px while their neighbours sit at 16.5-19px.

   Fixing it at the inherited default rather than with 51 per-block overrides.
   Verified with r22-fsdiff.cjs across 15 pages: 21 blocks move 14 -> 16.5px and
   nothing else changes size. Unitless line-height so each element computes its
   own leading instead of inheriting a length struck from the old 14px. */
body { font-size: 16.5px; line-height: 1.7; }
/* the injected mobile lockup caps are sized in em off the body — pin them so the
   line above cannot grow them at desktop widths */
@media (min-width: 1281px) { .ww-lk-caps-m { font-size: 14px; } }

/* --- 2. Our Team: credentials + role on one line --------------------------
   The column caps prose at 62ch for a readable measure, but the credential line
   is letter-spaced uppercase and needs ~502px against that 484px cap, so
   "OFFICER" wrapped alone. It is a label, not prose — exempt it from the cap. */
@media (min-width: 981px) {
  body.page-id-122 #page-container .ww-foundersec .ww-founder-row .et_pb_column .ww-founder-creds .et_pb_text_inner {
    max-width: none;
  }
}

/* --- 3. About: stray white swoosh at the very top of the page --------------
   ww-abouthero is the only hero on the site carrying a TOP wave divider. A top
   divider paints the PREVIOUS section's colour — and there is no previous
   section — so it renders as a loose white swoosh under the header. */
body.page-id-43 #page-container .ww-abouthero > .et_pb_top_inside_divider { display: none !important; }

/* --- 4. Hospital Policies: Appointments photo -----------------------------
   ww-band-housecalls.jpg has the subject's head against the very top edge of
   the frame, so every crop clips her. Swapped for the macaw-chick exam, which
   is the same room and the same warmth with the face clear of the edge. */
@media (min-width: 981px) {
  body.page-id-123 #page-container .ww-duosec > .et_pb_row.ww-pol-r1 > .et_pb_column:nth-of-type(1)::after {
    background-image: url("/wp-content/uploads/2026/08/ww-pol-appt.jpg") !important;
    background-position: 50% 32% !important;
  }
}
@media (max-width: 980px) {
  body.page-id-123 #page-container .ww-duosec > .et_pb_row.ww-pol-r1 > .et_pb_column:nth-of-type(1)::after {
    background-image: url("/wp-content/uploads/2026/08/ww-pol-appt.jpg") !important;
    background-position: 50% 28% !important;
  }
}

/* --- 5. Hospital Policies: Our Commitment feather --------------------------
   300px and hung 40/60px off the corner, so it read as a giant clipped shape
   rather than a deco accent. Down to 168px and pulled back into the frame. */
body.page-id-123 #page-container .ww-duosec > .et_pb_row.ww-pol-r5 > .et_pb_column:nth-of-type(1) {
  background:
    url("/wp-content/themes/divi-child/images/ww-deco-feather-r.svg") no-repeat right -14px bottom -22px / 168px,
    linear-gradient(135deg, #27133C 0%, #3E2159 58%, #2A153F 100%) !important;
}

/* --- 6. Hospital Policies: Home Safety runs the full 1240px card -----------
   Three paragraphs set to a ~600px measure inside a full-width card left the
   right half empty and the rag looking cut off. Two columns keeps the measure
   readable and uses the card. */
@media (min-width: 981px) {
  /* The three paragraphs are three SEPARATE .ww-body-m modules, so putting
     `columns` on each inner just split one paragraph in half. The columns have
     to go on the card itself so all three flow as blocks, with the heading
     spanning both and each paragraph kept whole. */
  body.page-id-123 #page-container .ww-duosec > .et_pb_row.ww-pol-r9 > .et_pb_column:nth-of-type(1) {
    columns: 2; column-gap: 54px;
  }
  body.page-id-123 #page-container .ww-duosec > .et_pb_row.ww-pol-r9 > .et_pb_column:nth-of-type(1) > .et_pb_text:first-of-type {
    column-span: all;
  }
  body.page-id-123 #page-container .ww-duosec > .et_pb_row.ww-pol-r9 > .et_pb_column:nth-of-type(1) .ww-body-m {
    max-width: none !important; margin-right: 0 !important; break-inside: avoid;
  }
}

/* --- 7. Hospital Policies: Wildlife & Native Bird Policy image -------------
   Was ww-wild-duck.jpg — 170px tall, cropped through the handler's chin, and
   already used twice elsewhere. Swapped for a rescued pigeon in a towel wrap
   (an actual wild-bird rescue, not a pet species) and the box
   given enough height to hold the subject. */
@media (min-width: 981px) {
  body.page-id-123 #page-container .ww-duosec > .et_pb_row.ww-pol-r9 > .et_pb_column:nth-of-type(2)::after {
    height: 300px !important;
    background: url("/wp-content/uploads/2026/08/ww-pol-wildbird2.jpg") 50% 42% / cover no-repeat !important;
  }
}
@media (max-width: 980px) {
  body.page-id-123 #page-container .ww-duosec > .et_pb_row.ww-pol-r9 > .et_pb_column:nth-of-type(2)::after {
    height: 240px !important;
    background-image: url("/wp-content/uploads/2026/08/ww-pol-wildbird2.jpg") !important;
    background-position: 50% 42% !important;
  }
}

/* --- 8. The quote band's right feather was half off the canvas ------------
   Two feathers sit fully inside on the left and the third was hung at right
   -45px, so it read as a mistake rather than a pair. Brought in-frame. */
.ww-quote {
  background:
    url(images/ww-deco-feather-l1.svg?v=3) left 167px top 168px / 150px auto no-repeat,
    url(images/ww-deco-feather-l2.svg?v=3) left 141px top 305px / 171px auto no-repeat,
    url(images/ww-deco-feather-r.svg?v=3) right 34px top 226px / 108px auto no-repeat,
    linear-gradient(180deg,#F8DFEC 0%,#FCF0F6 42%,#FFFFFF 100%);
}
@media (max-width: 980px) {
  .ww-quote {
    background:
      url(images/ww-deco-feather-l1.svg?v=3) left 18px top 75px / 78px auto no-repeat,
      url(images/ww-deco-feather-l2.svg?v=3) left 24px top 148px / 66px auto no-repeat,
      url(images/ww-deco-feather-r.svg?v=3) right 14px top 109px / 62px auto no-repeat,
      linear-gradient(180deg,#F8DFEC 0%,#FCF0F6 42%,#FFFFFF 100%);
  }
}

/* --- 9. Wildlife: the intro paragraph --------------------------------------
   A lone 15.5px sans paragraph ragged across a 900px measure in an otherwise
   empty band — Olivia's "change the font, increase size, weird layout, maybe
   needs a separation" are all this one block. Set as a proper serif lead at a
   measure that balances, which is how every other page opens. */
@media (min-width: 981px) {
  body.page-id-174 #page-container .ww-rescueintro .et_pb_text_inner,
  body.page-id-174 #page-container .ww-rescueintro .et_pb_text_inner p {
    font-family: "Cormorant Garamond", serif !important;
    font-size: 25px !important;
    font-weight: 400 !important;
    line-height: 1.5 !important;
    max-width: 820px !important;
    margin-left: auto !important;
    margin-right: auto !important;
    text-wrap: balance;
  }
}
@media (max-width: 980px) {
  body.page-id-174 #page-container .ww-rescueintro .et_pb_text_inner,
  body.page-id-174 #page-container .ww-rescueintro .et_pb_text_inner p {
    font-family: "Cormorant Garamond", serif !important;
    font-size: 21px !important;
    line-height: 1.5 !important;
    max-width: 100% !important;
  }
}

/* --- 10. Conservation: "Small Actions. Big Impact." on the pink ------------
   White-on-pink loses apparent weight, so copy that reads fine on cream reads
   small here. Up one step on that band only. */
body.page-id-60 #page-container .ww-cons.ww-club .et_pb_text_inner,
body.page-id-60 #page-container .ww-cons.ww-club .et_pb_text_inner p,
body.page-id-60 #page-container .ww-cons.ww-club .ww-list li {
  font-size: 17.5px !important;
}
body.page-id-60 #page-container .ww-cons.ww-club .ww-eyebrow-m,
body.page-id-60 #page-container .ww-cons.ww-club .ww-eyebrow-m .et_pb_text_inner,
body.page-id-60 #page-container .ww-cons.ww-club .ww-eyebrow-m p { font-size: 13px !important; }

/* --- 11. Contact: the info cards were touching -----------------------------
   Service Area / Hours / Emergencies stacked with margin-bottom 0 and no gap,
   so three separate cards read as one block with rules through it. */
body.page-id-44 #page-container .ww-infocard + .ww-infocard { margin-top: 20px !important; }

/* --- 12. Concierge: "A Higher Standard of Veterinary Medicine" -------------
   Not a missing divider. .ww-quote-sec carries a 600x360 blurred gold glow on
   ::before hung at top:-40px, and the section is `overflow: clip` — so the blur
   is sliced flat at the section's top edge and reads as a hard rectangular band
   against the white above. About hides it behind a top wave divider; Concierge
   has no divider, so it is exposed there.

   Dropping the glow far enough inside that its 95px blur is fully contained
   removes the edge and lets the section's own gradient (which starts #FFFFFF)
   meet the white above invisibly. Scoped to page 45 so About is untouched. */
body.page-id-45 #page-container .ww-sec.ww-quote-sec::before { top: 78px !important; }

/* end R22-OLIVIA-0817-089ab159 */

/* ============================================================================
   R22-PETPORTAL-0817-089ab159  —  v174
   Olivia: "Can the Pet Portal on the right side be a link... it feels like it
   should be a hyperlink but it doesn't click anywhere."

   The anchor was never missing. Layout 25's utility bar already carries
   <a href="https://petcare.vettersoftware.com/" target="_blank">Pet Portal</a>.
   The fixed nav pill row (.ww-navm-row) spans the full width with a 4_4 column,
   and that column is painted over the utility bar — elementFromPoint at the
   anchor's own centre returns .et_pb_row_2_tb_header's column, not the link.
   So every utility-bar link (phone and email too) was being swallowed.

   Make the lockup row's empty area transparent to the pointer and give its own
   interactive children their clicks back.
   ========================================================================== */
.ww-tbheader .ww-navm-row,
.ww-tbheader .ww-navm-row > .et_pb_column { pointer-events: none; }
.ww-tbheader .ww-navm-row .et_pb_menu,
.ww-tbheader .ww-navm-row .ww-navm,
.ww-tbheader .ww-navm-row nav,
.ww-tbheader .ww-navm-row a,
.ww-tbheader .ww-navm-row button,
.ww-tbheader .ww-navm-row .ww-crest,
.ww-tbheader .ww-navm-row .mobile_menu_bar,
.ww-tbheader .ww-navm-row .et_mobile_menu,
.ww-tbheader .ww-navm-row .ww-crest-m { pointer-events: auto; }
/* end R22-PETPORTAL-0817-089ab159 */

/* ============================================================================
   R22-SPLASH-0817-089ab159  —  v175: preloader, quieter
   Nick: remove the glow, slow it down a bit, make it more subtle.

   The glow is gone entirely — the mark now carries the whole moment on its own.

   The BEAT is slower and the amplitude is roughly halved, but the total splash
   length is deliberately unchanged at 3500ms, because that number is a contract:
   `SPLASH_FLOOR = 3500` in functions.php holds the veil open for exactly this
   long, and the iOS-Safari failsafe and early-`complete` stripping are all timed
   against it. Slowing the motion without touching the total keeps every one of
   those paths exactly as tested.

       old:  800ms in  + 3 x 900ms  pulse @ scale 1.045   = 3500ms
       new: 1000ms in  + 2 x 1250ms pulse @ scale 1.020   = 3500ms

   So each beat is ~39% slower, the pulse travels less than half as far, and the
   entrance no longer overshoots — it settles into 1.0 instead of springing past
   it. If the splash itself should be longer or shorter, that is a separate
   change and SPLASH_FLOOR has to move with it.
   ========================================================================== */

/* the glow is removed */
.preloader-plus .preloader-content::before {
  display: none !important;
  content: none !important;
  animation: none !important;
}

/* the mark: eases in without overshoot, then two long, shallow breaths */
.preloader-plus .preloader-custom-img {
  animation: ww-mark-in 1000ms cubic-bezier(.22, .61, .36, 1) both,
             ww-mark-pulse 1250ms ease-in-out 1000ms 2 both;
}
@keyframes ww-mark-in {
  0%   { opacity: 0; transform: scale(.94); }
  100% { opacity: 1; transform: scale(1); }
}
@keyframes ww-mark-pulse {
  0%, 100% { transform: scale(1);     }
  50%      { transform: scale(1.020); }
}
/* end R22-SPLASH-0817-089ab159 */

/* ============================================================================
   R22-NAVSLOT-0817-089ab159  —  v176: Conservation Corner balance at large widths
   Nick: "Conservation Corner isn't balanced at larger sizes."

   Correct, and it gets worse the wider the screen. The centre logo slot is a
   flex item sitting between Conservation Corner and Wildlife. It was collapsed
   with a negative margin that GROWS with the viewport and has no upper bound:

       margin: 0 calc(-14px - max(0px, -36px + 2.5vw))

   Meanwhile the ul is `justify-content: space-between`, so every other gap GROWS
   too. The two move in opposite directions, so the error compounds:

       width   ordinary gap   Conservation -> Wildlife
       1440         18.7            20.4     ok
       1920         38.1            35.2
       2200         39.9            24.7
       2560         42.1            11.2     <- 31px too tight

   Chasing the formula is the wrong fix: a collapsed flex item still takes TWO
   space-between shares where the rhythm wants one, so no margin value can make
   it disappear at every width. Take it out of the flex flow instead and the gap
   is correct by construction, at any width, with no magic numbers.

   `display: contents` and not `position: absolute` on purpose — the crest is an
   absolutely-positioned child of this slot whose containing block is the UL, and
   positioning the slot would capture it and re-break the v7 centring. Verified:
   crest stays exactly page-centred (720/800/960/1280 at 1440/1600/1920/2560).

   Scoped to the unstuck state only — when stuck, the slot becomes the grow-slot
   that opens the lens gap, and still needs to be a flex item. Measured the cost
   to the stick transition: none. Items already travel 150-260px horizontally on
   stick (the abbreviation swap and the pinned CTA, not a regression from this),
   and with this change that travel is marginally SMALLER, not larger.
   ========================================================================== */
@media (min-width: 1281px) {
  body:not(.ww-stuck) .ww-tbheader .ww-navm nav ul.et-menu > li.et_pb_menu__logo-slot {
    display: contents !important;
  }
  /* the last 1px: Conservation carries margin-right 4px where every other item
     has 5px, to rebalance the lens flanks — which is a stuck-state concern. */
  body:not(.ww-stuck) .ww-tbheader .ww-navm nav ul.et-menu > li.menu-item-103 {
    margin-right: 5px !important;
  }
}
/* end R22-NAVSLOT-0817-089ab159 */
