/* ============================================================
   OrthoTexas — Pillar components (canonical).
   Values from the live Elementor kit + component-inventory.md.
   EVERY rule is scoped under .otx-pillar (specificity 0,2,0+) so it wins over the
   Elementor kit's `.elementor-kit-7 a` / `.elementor-kit-7 h1` global rules (0,1,1),
   which otherwise force link-blue button text and dark hero headings.
   Font is inherited (real Gibson from the kit). EDIT ONCE → all 15 pillars update.
   ============================================================ */
.otx-pillar{
  --navy:#041E42; --blue:#2D68C4; --orange:#FE8C42; --ink:#222E3F;
  --cloud:#F4F6FC; --grey:#F8F9FA; --muted:#495057;
  --card-shadow:1px 1px 15px #00000017; --card-radius:20px; --btn-radius:100px;
  --container:1350px;
  color:var(--ink); font-size:18px; line-height:1.58;
}
.otx-pillar *{box-sizing:border-box}
.otx-pillar img{max-width:100%;display:block}

/* buttons (kit: 100px pill, invert on hover) — explicit colors beat `.elementor-kit-7 a` */
.otx-pillar .otx-btn{display:inline-block;font-size:20px;font-weight:600;text-decoration:none;border-radius:var(--btn-radius);padding:15px 26px;border:2px solid transparent;cursor:pointer;transition:background-color .3s,color .3s,border-color .3s;line-height:1}
.otx-pillar .otx-btn-primary{background:var(--orange);color:#fff;border-color:var(--orange)}
.otx-pillar .otx-btn-primary:hover{background:transparent;color:var(--orange);border-color:var(--orange)}
.otx-pillar .otx-btn-outline{background:transparent;color:#fff;border-color:rgba(255,255,255,.75)}
.otx-pillar .otx-btn-outline:hover{background:#fff;color:var(--navy);border-color:#fff}

/* type — explicit colors, scoped */
.otx-pillar .otx-h1{font-size:48px;font-weight:700;line-height:1.12;margin:0 0 16px;color:var(--ink)}
.otx-pillar .otx-h2{font-size:36px;font-weight:600;line-height:1.18;margin:0 0 14px;color:var(--ink)}
.otx-pillar .otx-h2.blue{color:var(--blue)}
.otx-pillar .otx-h2.white{color:#fff}
.otx-pillar .otx-overline{display:block;font-size:16px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--orange);margin-bottom:10px}

/* bands + section anatomy (100px/30px rhythm) */
.otx-pillar .otx-band{padding:100px 30px}
.otx-pillar .otx-in{max-width:var(--container);margin:0 auto}
.otx-pillar .otx-band.navy{background:var(--navy);color:#fff}
.otx-pillar .otx-band.cloud{background:var(--cloud)}
.otx-pillar .otx-sec-head{text-align:center;max-width:760px;margin:0 auto 40px}
.otx-pillar .otx-sec-head p{font-size:18px;color:var(--muted);margin-top:12px}
.otx-pillar .otx-band.navy .otx-sec-head p{color:rgba(255,255,255,.82)}
.otx-pillar .otx-center{text-align:center;max-width:760px;margin:0 auto}
.otx-pillar .otx-navy-sub{color:rgba(255,255,255,.82);margin:12px auto 26px;max-width:620px}
/* a pillar's own paragraph under "Meet Our Specialists" (OTX Related List section_body, 1.1.9) */
.otx-pillar .otx-sec-head .otx-navy-body{max-width:760px;margin:12px auto 26px}
.otx-pillar .otx-sec-head .otx-navy-body p{color:rgba(255,255,255,.82);margin:0 0 12px}
.otx-pillar .otx-sec-head .otx-navy-body p:last-child{margin-bottom:0}
.otx-pillar .otx-sec-head .otx-navy-body a{color:#fff;text-decoration:underline;text-underline-offset:2px}

/* prose */
.otx-pillar .otx-prose p{margin:0 0 16px;max-width:820px;color:var(--ink);font-size:18px}
.otx-pillar .otx-center-prose{text-align:center;max-width:760px;margin:0 auto}
.otx-pillar .otx-center-prose p{margin-left:auto;margin-right:auto}

/* grids */
.otx-pillar .otx-grid{display:grid;gap:24px}
.otx-pillar .otx-g3{grid-template-columns:repeat(3,1fr)}
.otx-pillar .otx-g2{grid-template-columns:repeat(2,1fr)}

/* info card (Card foundation, no image) */
.otx-pillar .otx-info-card{background:#fff;border:1.5px solid #E7ECF3;border-radius:var(--card-radius);box-shadow:var(--card-shadow);padding:24px;text-decoration:none;color:var(--ink);display:block;transition:border-color .15s,transform .15s}
.otx-pillar a.otx-info-card:hover{border-color:var(--blue);transform:translateY(-2px)}
.otx-pillar .otx-info-card b{display:block;font-size:22px;font-weight:600;color:var(--navy);margin-bottom:6px;letter-spacing:-.01em}
.otx-pillar .otx-info-card p{font-size:15px;color:var(--muted);margin:0}
.otx-pillar .otx-info-card-more{display:inline-block;margin-top:14px;font-size:15px;font-weight:600;color:var(--blue)}
.otx-pillar .otx-info-card-more::after{content:"\2192";margin-left:6px;display:inline-block;transition:transform .15s}
.otx-pillar a.otx-info-card:hover .otx-info-card-more::after{transform:translateX(3px)}

/* treatment two-surface split */
.otx-pillar .otx-tx{display:grid;grid-template-columns:1fr 1fr;gap:24px;margin-top:8px}
.otx-pillar .otx-tx-col{border-radius:var(--card-radius);padding:32px}
.otx-pillar .otx-tx-non{background:#fff;box-shadow:var(--card-shadow)}
.otx-pillar .otx-tx-surg{background:var(--navy);color:#fff}
.otx-pillar .otx-tx-col h3{font-size:24px;font-weight:600;margin:0 0 16px;color:var(--navy)}
.otx-pillar .otx-tx-surg h3{color:#fff}
.otx-pillar .otx-tx-item{padding:12px 0;border-top:1px solid rgba(4,30,66,.09)}
.otx-pillar .otx-tx-surg .otx-tx-item{border-top:1px solid rgba(255,255,255,.14)}
.otx-pillar .otx-tx-item b{display:block;font-size:16px;font-weight:600}
.otx-pillar .otx-tx-item small{font-size:14px;color:var(--muted)}
.otx-pillar .otx-tx-surg .otx-tx-item small{color:rgba(255,255,255,.66)}
.otx-pillar .otx-tx-note{margin-top:16px;font-size:15px;color:var(--muted)}

/* why-choose proof rows */
.otx-pillar .otx-why{margin-top:8px}
.otx-pillar .otx-proof{display:flex;gap:16px;background:#fff;border:1.5px solid #E7ECF3;border-radius:12px;padding:20px}
.otx-pillar .otx-check{flex:none;width:34px;height:34px;border-radius:9px;background:#FFF3EA;color:#E06B1F;display:flex;align-items:center;justify-content:center;font-weight:800}
.otx-pillar .otx-proof b{display:block;font-size:16px;color:var(--navy);margin-bottom:3px}
.otx-pillar .otx-proof p{font-size:14px;color:var(--muted);margin:0}

/* imaging/rehab duo */
.otx-pillar .otx-duo{background:var(--cloud);border-radius:var(--card-radius);padding:26px 28px}
.otx-pillar .otx-duo b{display:block;font-size:20px;color:var(--navy);margin-bottom:8px}
.otx-pillar .otx-duo p{font-size:15px;color:var(--muted);margin:0 0 10px}

/* specialists (navy band) */
.otx-pillar .otx-docs{margin:24px 0}
.otx-pillar .otx-doc{display:flex;align-items:center;gap:14px;background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.12);border-radius:12px;padding:16px;text-decoration:none;color:#fff}
.otx-pillar .otx-doc:hover{background:rgba(255,255,255,.10)}
.otx-pillar .otx-ava{width:48px;height:48px;border-radius:50%;background:linear-gradient(135deg,#2D68C4,#6FA0E8);flex:none;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:14px;color:#fff}
.otx-pillar .otx-ava-img{background-size:cover;background-position:center top;background-repeat:no-repeat}
/* the no-photo stand-in, printed as a decorative <img alt=""> (includes/provider-photos.php) */
.otx-pillar .otx-ava img{display:block;width:100%;height:100%;border-radius:50%;object-fit:cover;object-position:center top}
.otx-pillar .otx-doc b{display:block;font-size:15px;color:#fff} .otx-pillar .otx-doc small{font-size:12px;color:rgba(255,255,255,.6)}

/* FAQ accordion (canonical) */
.otx-pillar .otx-faq{max-width:1000px;margin:0 auto}
.otx-pillar .otx-faq details{background:#fff;border-radius:8px;margin-bottom:12px;box-shadow:0 0 0 1px #EEE inset}
.otx-pillar .otx-faq summary{list-style:none;padding:20px;font-size:20px;font-weight:600;color:var(--ink);cursor:pointer;display:flex;justify-content:space-between;align-items:center;gap:16px}
.otx-pillar .otx-faq summary::-webkit-details-marker{display:none}
.otx-pillar .otx-faq summary::after{content:"";width:12px;height:12px;flex:none;background:no-repeat center/contain;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'><path d='M1 3l5 5 5-5' stroke='%23FE8C42' stroke-width='2' fill='none' stroke-linecap='round' stroke-linejoin='round'/></svg>");transition:transform .2s}
.otx-pillar .otx-faq details[open] summary::after{transform:rotate(180deg)}
.otx-pillar .otx-faq details p{padding:0 20px 20px;margin:0;font-size:16px;color:var(--muted)}

/* interior hero (standalone preview; TB template can build this natively later) */
.otx-pillar .otx-hero{background:var(--navy);color:#fff;padding:80px 30px}
.otx-pillar .otx-hero-in{display:grid;grid-template-columns:1fr 1fr;gap:60px;align-items:center}
.otx-pillar .otx-hero h1,.otx-pillar .otx-hero .otx-h1{color:#fff}
.otx-pillar .otx-hero .otx-overline{color:rgba(255,255,255,.6)}
.otx-pillar .otx-hero p{color:rgba(255,255,255,.82);font-size:20px;margin:0 0 26px;max-width:560px}
.otx-pillar .otx-hero-cta{display:flex;gap:14px;flex-wrap:wrap}
.otx-pillar .otx-hero-img{aspect-ratio:4/3.2;border-radius:20px;background:linear-gradient(135deg,#20406e,#3f6fb2);display:flex;align-items:center;justify-content:center;color:rgba(255,255,255,.5);font-size:12px;letter-spacing:.08em}

@media (max-width:900px){
  .otx-pillar .otx-g3,.otx-pillar .otx-g2,.otx-pillar .otx-tx,.otx-pillar .otx-hero-in{grid-template-columns:1fr}
  .otx-pillar .otx-hero-img{display:none}
  .otx-pillar .otx-band{padding:60px 22px}
}
@media (prefers-reduced-motion:reduce){.otx-pillar *{transition:none!important}}

/* treatment split with only one populated side (services without surgery) */
.otx-pillar .otx-tx-single{grid-template-columns:1fr}

/* archive filter (JetSmartFilters replacement) */
/* No bottom margin: it inflated the widget's box beyond the form, so a flex
   row centring its children left the fields sitting above the label. Spacing
   below the bar belongs to the container's padding/gap, not the widget. */
.otx-pillar .otx-af{display:flex;flex-wrap:wrap;gap:12px;align-items:center;margin-bottom:0}
.otx-pillar .otx-af select,.otx-pillar .otx-af input[type=search]{font-family:inherit;font-size:16px;padding:12px 15px;border:1.5px solid #E3EAF4;border-radius:10px;background:#fff;color:var(--ink);min-width:200px}
.otx-pillar .otx-af select:focus,.otx-pillar .otx-af input[type=search]:focus{outline:2px solid var(--blue);outline-offset:1px}
.otx-pillar .otx-af-btn{font-family:inherit;font-size:16px;font-weight:600;padding:12px 22px;border:none;border-radius:10px;background:var(--navy);color:#fff;cursor:pointer}
.otx-pillar .otx-af-btn:hover{background:var(--blue)}
.otx-pillar .otx-af-clear{font-size:15px;font-weight:600;color:var(--blue);text-decoration:underline}
.otx-pillar .otx-af-count{font-size:15px;color:var(--muted);margin:0 0 18px}

/* OTX Repeater (Format) — replaces jet-listing-dynamic-repeater.
   Direction only; all other styling stays in the row format + per-instance CSS,
   exactly as the approved design had it. */
.otx-repeater-format{display:flex}
.otx-repeater-format.otx-dir-column{flex-direction:column}
.otx-repeater-format.otx-dir-row{flex-direction:row;flex-wrap:wrap;gap:8px}
.otx-repeater-format__item{display:block}
.otx-repeater-format.otx-dir-row .otx-repeater-format__item{display:inline-block}
.otx-repeater-format.otx-list{list-style:none;margin:0;padding:0}
/* Provider pages (Providers Single 348, widget 2d8b481): Areas of Expertise as pills in a row that
   wraps, spaced like the Specialties row above it (theme .specialties-buttons: gap 15px 10px).
   The widget is set to column; only .specialties-buttons wraps it. Blake, 2026-10-08. */
.specialties-buttons .otx-repeater-format.otx-dir-column{flex-direction:row;flex-wrap:wrap;gap:15px 10px}
.specialties-buttons .otx-repeater-format .specialties-button{margin-right:0}
/* A long Areas of Expertise pill ("Treatment of conditions affecting the spine, back, and neck" on
   3716) wraps inside the screen instead of widening the page on phones (Oct. 8). */
.specialties-buttons .otx-repeater-format__item{max-width:100%}
.specialties-buttons .otx-repeater-format .specialties-button{max-width:100%;white-space:normal;text-align:left}
/* Provider pages (Providers Single 348, container #specialties): services (loop 858fdc3) and
   treatment areas (loop ta0d001) are two loop grids, so one service over two areas stacked as two
   rows. Their cards now share one centered row of up to three, wrapping below. Blake, 2026-10-08. */
.elementor-348 #specialties>.e-con-inner{flex-direction:row;flex-wrap:wrap;justify-content:center;align-items:stretch;gap:30px}
.elementor-348 #specialties>.e-con-inner>.elementor-widget-shortcode{flex:0 0 100%;width:100%;text-align:center}
.elementor-348 #specialties .provider-specialties,.elementor-348 #specialties .provider-specialties>.elementor-widget-container,.elementor-348 #specialties .provider-specialties .elementor-loop-container{display:contents}
.elementor-348 #specialties .provider-specialties .e-loop-item{flex:0 1 calc((100% - 60px)/3);min-width:300px;max-width:400px}
@media (max-width:767px){.elementor-348 #specialties .provider-specialties .e-loop-item{flex-basis:100%;min-width:0;max-width:none}}

/* Locations archive filter — replaces the 4 JetSmartFilters widgets.
   Flat facility-type facets (see includes/facility-types.php) plus the ZIP box.
   The old control was an accordion of three panels whose Specialties list had
   six of its eight options disabled at runtime; the flat set is the decided
   design, so this deliberately does not reproduce the accordion. */
.otx-pillar .otx-locfilter{display:flex;flex-direction:column;gap:18px;margin-bottom:24px}
.otx-pillar .otx-locfilter__proximity{display:flex;flex-wrap:wrap;gap:10px}
.otx-pillar .otx-locfilter__zip{flex:1 1 200px;font-family:inherit;font-size:16px;padding:12px 15px;border:1.5px solid #E3EAF4;border-radius:10px;background:#fff;color:var(--ink)}
.otx-pillar .otx-locfilter__radius{font-family:inherit;font-size:16px;padding:12px 15px;border:1.5px solid #E3EAF4;border-radius:10px;background:#fff;color:var(--ink)}
.otx-pillar .otx-locfilter__zip:focus,.otx-pillar .otx-locfilter__radius:focus{outline:2px solid var(--blue);outline-offset:1px}
.otx-pillar .otx-locfilter__submit{font-family:inherit;font-size:16px;font-weight:600;padding:12px 24px;border:none;border-radius:10px;background:var(--navy);color:#fff;cursor:pointer}
.otx-pillar .otx-locfilter__submit:hover{background:var(--blue)}
.otx-pillar .otx-locfilter__heading{font-size:15px;font-weight:600;color:var(--muted);margin:0;text-transform:uppercase;letter-spacing:.04em}
.otx-pillar .otx-locfilter__facets{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:10px}
.otx-pillar .otx-locfilter__facet{display:inline-block;font-size:16px;font-weight:600;text-decoration:none;padding:10px 20px;border-radius:var(--btn-radius);border:1.5px solid #E3EAF4;background:#fff;color:var(--ink);transition:background-color .3s,color .3s,border-color .3s}
.otx-pillar .otx-locfilter__facet:hover{border-color:var(--blue);color:var(--blue)}
.otx-pillar .otx-locfilter__facet.is-active{background:var(--navy);border-color:var(--navy);color:#fff}
.otx-pillar .otx-locfilter__clear{align-self:flex-start;font-size:15px;font-weight:600;color:var(--blue);text-decoration:underline}
.otx-locfilter__message{padding:12px 16px;border-radius:12px;background:#F4F6FC;color:#495057;margin-bottom:20px}
.otx-map-info{padding:10px;color:#333;min-width:150px}
.otx-map-info__title{font-weight:700;margin:0 0 6px}
.otx-map-info__link{color:#2D68C4;font-weight:700;text-decoration:none}

/* The Elementor kit sets `input, select, textarea { width:100% }` globally, which
   forced every facet onto its own line and made the filter bar four rows tall.
   Put them back on one line; they still wrap on narrow screens. */
.otx-pillar .otx-af select,
.otx-pillar .otx-af input[type=search]{flex:1 1 200px;width:auto;min-width:0}
.otx-pillar .otx-af-btn,
.otx-pillar .otx-af-clear{flex:0 0 auto}

/* Single-location map (OTX_Location_Map). Replaces Elementor's Google Maps
   iframe, which could not carry the brand pin. The canvas is `hidden` until the
   script draws into it, so a missing or blocked Maps API leaves the address and
   directions link rather than an empty framed box. */
.otx-pillar .otx-locmap{display:flex;flex-direction:column;gap:14px}
.otx-pillar .otx-locmap__canvas{width:100%;height:500px;border-radius:var(--card-radius);overflow:hidden}
.otx-pillar .otx-locmap__canvas[hidden]{display:none}
.otx-pillar .otx-locmap__meta{display:flex;flex-wrap:wrap;align-items:center;gap:10px 20px}
.otx-pillar .otx-locmap__address{margin:0;color:var(--muted);font-size:16px}
.otx-pillar .otx-locmap__directions{display:inline-block;font-size:16px;font-weight:600;text-decoration:none;padding:10px 20px;border-radius:var(--btn-radius);background:var(--navy);color:#fff;transition:background-color .3s}
.otx-pillar .otx-locmap__directions:hover,.otx-pillar .otx-locmap__directions:focus{background:var(--blue);color:#fff}
.otx-pillar .otx-locmap__sr{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}

/* ============================================================
   Template design audit, Oct. 8, 2026: profile and pillar fixes (audit fixes 7 and 9).
   Source: OTX audit/02-design/2026-10-08-template-design-audit.md, findings PRO-* and PIL-*.
   Defects only: each rule keeps the client-approved look and changes nothing beyond its finding.
   pillar.css loads BEFORE the theme stylesheet and Elementor's post-<id>.css, so every rule here
   wins on specificity, never on source order. PRO-05 is a template 348 setting, not CSS
   (tools/staged/q-profile-nav.php).
   ============================================================ */

/* PRO-02 (regression from 1.1.11). On a profile with services but no treatment areas, or the
   reverse, the empty loop grid still prints an empty .e-loop-nothing-found-message. The
   display:contents rule above lifts it into the #specialties flex row: 0 px wide, but it takes a
   30 px gap, so a lone card sat 15 px off center and phones got an extra ~90 px row. */
.elementor-348 #specialties .e-loop-nothing-found-message{display:none}

/* PRO-06. The Testimonials (b36bb64) and "Working with" (7e763a9) headings are align-self:center
   shortcode widgets, so when a long name wraps them to the full width their text turns
   left-aligned, while the Specialties heading (1.1.11 rule above) stays centered. Same fix. */
.elementor-348 #testimonials>.e-con-inner>.elementor-widget-shortcode,
.elementor-348 #team>.e-con-inner>.elementor-widget-shortcode{width:100%;text-align:center}

/* PRO-07. Provider quotes were centered or left-aligned depending on what the editor pasted;
   left-aligned ones looked lopsided under the centered quote mark. The approved band is centered.
   CSS only, no ACF edits (none of the 84 quotes carries an inline left, right or justify). */
.elementor-348 .provider-quote p{text-align:center}

/* PRO-04. The location photo is an inline <img> on the text baseline, so an 8 px strip of the
   slate .location-image background showed under every photo (staging has it too). */
.elementor-348 .location-image img{display:block}

/* PRO-R2. Quote card (container fa9c346). Without a Schedule Appointment button the text editor
   is the last child and its 30 px bottom margin made the card 30 px deeper at the bottom than at
   the top. On phones the 60 px inner padding left a 250 px text column: 40 px 24 px instead
   (Elementor holds container padding in --padding-* variables, so those are what is set).
   EDITOR NOTE: this phone padding now lives HERE. The rule (0,4,0) outranks Elementor's own
   per-element CSS (0,3,0), so a mobile padding set on fa9c346 in the Elementor editor is silently
   ignored. Change it in this file, or move it into template 348's padding_mobile and delete it. */
.elementor-348 .provider-quote .elementor-widget-text-editor:last-child{margin-bottom:0}
@media (max-width:767px){
  .elementor-348 .provider-quote .elementor-element.elementor-element-fa9c346{--padding-top:40px;--padding-right:24px;--padding-bottom:40px;--padding-left:24px}
}

/* PRO-R4. The review score box (Swell, inline-flex) hugged the left edge of the navy band under
   the centered Testimonials heading. Auto margins need a block-level box, so it becomes a flex box
   at its own width; it looks the same, centered. */
.elementor-348 #testimonials .swell-score{display:flex;width:fit-content;max-width:100%;margin-left:auto;margin-right:auto}

/* PIL-01. "Meet Our Specialists" subtitle: `.otx-pillar .otx-sec-head p` (0,2,1) outranked
   `.otx-pillar .otx-navy-sub` (0,2,0), so it rendered #495057 on navy at 2.0:1. One more class
   restores the intended 82% white (about 11:1 on #041E42).
   This is a new rule rather than the audit's selector change on line 42, on purpose: line 42 also
   styles the .otx-navy-sub of the [otx_pillar_body] and [otx_pillar_page] shortcodes
   (pillar-render.php), which sits in .otx-in.otx-center with no .otx-sec-head. Narrowing line 42
   would strip its color, margins and max-width there. Line 42 stays as is. */
.otx-pillar .otx-sec-head .otx-navy-sub{color:rgba(255,255,255,.82)}

/* PIL-05. Pillar template 7099 on tablets and phones: sections kept 100 px top and bottom padding
   (about 1,600 px of white per page on a phone) and 36 px H2s (six lines on Imaging). Tablet:
   80 px and 32 px; phone: 60 px and 28 px, the size the rest of the site uses. Side padding is
   untouched. The `.otx-band` rule in the max-width:900px block above was meant for this but never
   applies: 7099 is built from Elementor sections, not .otx-band.
   EDITOR NOTE: the tablet and phone section padding and H2 sizes of template 7099 now live HERE.
   These rules (0,4,0 and 0,4,1) outrank Elementor's own per-element CSS (0,3,0), so a tablet or
   mobile padding or H2 size set in the Elementor editor for 7099 is silently ignored. Change the
   values in this file, or move them into template 7099's settings and delete these rules. Nothing
   is overridden today: post-7099.css sets no tablet or mobile padding or H2 size. */
@media (min-width:768px) and (max-width:1024px){
  .elementor-7099 .elementor-section.elementor-top-section.elementor-element{padding-top:80px;padding-bottom:80px}
  .elementor-7099 .elementor-element.elementor-widget-heading h2.elementor-heading-title,
  .elementor-7099 .otx-pillar .otx-h2{font-size:32px}
}
@media (max-width:767px){
  .elementor-7099 .elementor-section.elementor-top-section.elementor-element{padding-top:60px;padding-bottom:60px}
  .elementor-7099 .elementor-element.elementor-widget-heading h2.elementor-heading-title,
  .elementor-7099 .otx-pillar .otx-h2{font-size:28px}
}

/* PIL-06. The white Non-Surgical panel stretched to the height of the navy Surgical panel beside
   it (grid stretch), leaving up to 800 px of blank card. Each panel keeps its own height. */
.otx-pillar .otx-tx{align-items:start}

/* PIL-07. Treatment descriptions (14 px <small>) sat inline in the 18 px / 1.58 line box, so they
   ran on 28 px lines and looked double-spaced; two-line card and treatment titles looked loose. */
.otx-pillar .otx-tx-item small{display:block;margin-top:4px;line-height:1.55}
.otx-pillar .otx-info-card b,.otx-pillar .otx-tx-item b{line-height:1.25}

/* PIL-08. The Advanced Imaging and Rehabilitation cards (columns otxp0033 and otxp0036 of section
   otxp0037) touched, with their corners meeting in a notch, overhung the 10 px content edge of
   the sections around them by 10 px, and fused into one block on phones. From 768 px up the row
   must not wrap: Elementor wraps section rows at 1024 px and below, and with the gap two 50%
   columns no longer fit, so tablets would stack two half-width cards; nowrap lets them shrink. */
.elementor-7099 .elementor-element.elementor-element-otxp0037>.elementor-container{gap:24px;padding:0 10px}
@media (min-width:768px){
  .elementor-7099 .elementor-element.elementor-element-otxp0037>.elementor-container{flex-wrap:nowrap}
}
@media (max-width:767px){
  .elementor-7099 .elementor-element.elementor-element-otxp0037>.elementor-container{row-gap:16px}
}

/* PIL-16. Learn More sat wherever each condition card's text ended, so the links floated at
   different heights across a row (the cards already share the row height). A flex column pins
   the link to the bottom; padding keeps the old 14 px minimum gap above it. */
.otx-pillar .otx-info-card{display:flex;flex-direction:column}
.otx-pillar .otx-info-card-more{margin-top:auto;padding-top:14px;align-self:flex-start}

/* ============================================================
   Template design audit, Oct. 8, 2026: batch 2, profile and pillar fixes (profiles-pillars builder).
   Source: OTX audit/02-design/2026-10-08-template-design-audit.md, findings PRO-03, PRO-10, PRO-14,
   PIL-04, PIL-09, PIL-12, PIL-13, PIL-14, PIL-16, PIL-17 and PIL-R3 (PIL-05's phone button order was
   held for Blake; it is live since batch 3 under decision D2, see below). Defects only: each rule
   keeps the client-approved look and changes nothing beyond its finding. Builds on the batch 1 block
   above and on the PIL-07 and PIL-16 rules; nothing here restates or undoes them.
   pillar.css loads BEFORE Elementor's post-<id>.css and the inline loop CSS, so every rule here wins
   on specificity (element-ID selectors), never on source order. Markup changes that go with these
   rules: OTX Treatment Split and OTX Repeater Grid (PIL-12, PIL-13, PIL-17), pillar-render.php
   (PIL-09), [provider_locations] in shortcodes.php (PRO-14) and Swell's score.php (PRO-10).
   ============================================================ */

/* PRO-03. Specialty icons (loop templates 2671 and 6959, images 9112d7f and ta0c002) only had a
   55 px width, so their heights ran from 45 to 84 px and the card titles in a row landed at
   different heights (Hand & Wrist 28 px low on Atkinson). A fixed 64 px tall box, still 55 px wide
   as approved, with the icon contained in it: every title in a row starts at the same height.
   The Learn More buttons stay floating, as approved. From 768 px only, where cards share a row;
   phones stack one card per row, so there is nothing to align and the box would only add height. */
@media (min-width:768px){
  .elementor-348 #specialties .elementor-element-9112d7f img,
  .elementor-348 #specialties .elementor-element-ta0c002 img{width:55px;height:64px;max-width:100%;object-fit:contain;object-position:left center}
}

/* PRO-10. Review cards on the navy testimonials band (template 348, widget 625e7e60) and any other
   Swell grid. OTX colors live here, not in Swell's shared defaults.
   - The SURVEY and WEBSITE chips were accent orange #FE8C42 on #EEF6FA (2.1:1). Batch 2 made them
     navy while a text-safe orange was Blake's call. Decision D6 (Blake, Oct. 9: follow A4): the A4
     text-safe orange #C2410C, because it passes on the chip: measured 4.73:1 on the chip's own
     #EEF6FA background (11.5 px text, so the 4.5:1 minimum applies). Navy was the fallback had it failed.
   - Dates were #888 (3.2:1 on the card); #666 passes.
   - In sample mode the grid's own "Sample reviews shown for layout review." line inherited ink
     #222E3F on navy and was invisible. It is a safety label, so it is made readable, not hidden. The
     copy in the white score box is unchanged. It is centered under the centered heading and score
     box (it ran from the left edge of the 1,290 px band). It disappears at launch with sample mode.
   The half stars are Swell's score.php (stars to the nearest half instead of round()). */
.elementor-348 #testimonials .swell-review-card .swell-review-card__platform,
.elementor-widget-swell_reviews .swell-review-card .swell-review-card__platform{color:#C2410C} /* D6, PRO-10 */
.elementor-348 #testimonials .swell-review-card .swell-review-card__date,
.elementor-widget-swell_reviews .swell-review-card .swell-review-card__date{color:#666}
.elementor-348 #testimonials .swell-reviews-grid>.swell-sample-notice,
.elementor-348 #testimonials .swell-reviews-carousel__viewport>.swell-sample-notice{color:#495057;text-align:center} /* was 82% white on navy; the band is Light BG since Oct. 22 (below); #495057 is 7.6:1 on #F4F6FC */

/* PRO-14. Credential accordions (template 348: 7566cf1, a5ca1c7 and c3f0a01 in row 8e9d256). Each
   took an equal share of the row, so a lone accordion stretched 1,330 px and two ran 675 px each.
   Each takes the 450 px a third of the row is at 1440 (as when all three show), may shrink with the
   row and never grows; the row is centered. A fixed third made two accordions 341 px at 1024, so
   "Certifications & Memberships" wrapped and the pair had different heights (batch 2 review); with
   the 450 px basis two stay 450 px down to 1024 and three still split the row in thirds. Only from
   768 px, where they sit in a row; phones stack them full width as before.
   The one-location case (a one-tab switcher above a panel with the same name) is fixed in markup:
   [provider_locations] prints no tabs when there is one location. */
@media (min-width:768px){
  .elementor-348 .elementor-element.elementor-element-8e9d256>.e-con-inner{justify-content:center}
  .elementor-348 .elementor-element-8e9d256 .elementor-element.elementor-element-7566cf1,
  .elementor-348 .elementor-element-8e9d256 .elementor-element.elementor-element-a5ca1c7,
  .elementor-348 .elementor-element-8e9d256 .elementor-element.elementor-element-c3f0a01{flex:0 1 450px;min-width:0}
}

/* PIL-04. Pillar body text ran 1,290-1,330 px wide (about 180 characters a line). The text widgets
   of template 7099 get the 820 px measure .otx-prose already uses: left-aligned ones stay on the
   left edge (hero intro otxp0002, overview otxp0007, locations otxk0004), centered ones are centered
   (conditions intro otxp0011, treatments intro otxp0053, Why Choose otxp0028, appointment otxp0048).
   On phones Why Choose reads left-aligned: 13 to 23 centered lines are hard to read. */
.elementor-7099 .elementor-element.elementor-element-otxp0002.elementor-widget,
.elementor-7099 .elementor-element.elementor-element-otxp0007.elementor-widget,
.elementor-7099 .elementor-element.elementor-element-otxk0004.elementor-widget{max-width:820px;margin-left:0;margin-right:auto}
.elementor-7099 .elementor-element.elementor-element-otxp0011.elementor-widget,
.elementor-7099 .elementor-element.elementor-element-otxp0053.elementor-widget,
.elementor-7099 .elementor-element.elementor-element-otxp0028.elementor-widget,
.elementor-7099 .elementor-element.elementor-element-otxp0048.elementor-widget{max-width:820px;margin-left:auto;margin-right:auto}
@media (max-width:767px){
  .elementor-7099 .elementor-element.elementor-element-otxp0028.elementor-widget,
  .elementor-7099 .elementor-element.elementor-element-otxp0028.elementor-widget p{text-align:left}
}

/* PIL-05 (rest of it; padding and H2 sizes are in the batch 1 block), decision D2 (Blake, Oct. 9:
   "as recommended", option a). On a 390 x 844 phone the hero Book Appointment button sat below the
   first screen on every pillar (bottom edge 845-1,134 px), because the intro runs 75-128 words.
   Spacing alone cannot lift it that far. On phones only, the button (otxp0003) now comes right after
   the H1 and before the intro (otxp0002); the hero column (an Elementor widget-wrap) is a flex box, so
   `order` moves it without touching template 7099. Tablets and desktop keep H1, intro, button. */
@media (max-width:767px){
  .elementor-7099 .elementor-element.elementor-element-otxp0003.elementor-widget{order:1;margin-bottom:20px}
  .elementor-7099 .elementor-element.elementor-element-otxp0002.elementor-widget{order:2;margin-bottom:0}
}

/* PIL-09. "All Specialists" sat flush left under the centered specialists band. Centered under the
   cards; the link itself now opens the directory filtered to this pillar (pillar-render.php). */
.otx-pillar .otx-docs+.otx-btn{display:table;margin:8px auto 0}

/* PIL-12. A service with no surgery shows one panel. It ran 1,330 px wide with lines of about 200
   characters; it is capped at 900 px and centered, with the note under it. The widget also drops
   the "Step one" overline in single mode and takes the post's own panel heading (tx_cons_heading). */
.otx-pillar .otx-tx.otx-tx-single{max-width:900px;margin-left:auto;margin-right:auto}
.otx-pillar .otx-tx-single+.otx-tx-note{max-width:900px;margin-left:auto;margin-right:auto}

/* PIL-13. When the first non-surgical row only restated the panel heading ("Non-Surgical Treatments"
   twice), the widget now prints its text as an untitled lead paragraph: the size and color its
   description had, without the repeated title. It keeps the row's divider and 12 px padding, so the
   rule under the heading and the first line of text sit where they do in the surgical panel beside
   it (batch 2 review: the lead had dropped the divider). */
.otx-pillar .otx-tx-col .otx-tx-lead{margin:0;padding:12px 0;border-top:1px solid rgba(4,30,66,.09);font-size:14px;line-height:1.55;color:var(--muted)}
.otx-pillar .otx-tx-surg .otx-tx-lead{border-top-color:rgba(255,255,255,.14);color:rgba(255,255,255,.66)}

/* PIL-17. Condition names (OTX Repeater Grid) are h3 and treatment names (OTX Treatment Split) are
   h4, so screen-reader users can jump between them. Same look as the <b> they replace (base rules
   above plus PIL-07's 1.25 line height); the kit and theme heading sizes, colors, weights and margins
   are neutralized. */
.otx-pillar .otx-info-card .otx-info-card-title{display:block;margin:0 0 6px;padding:0;font-family:inherit;font-size:22px;font-weight:600;font-style:normal;line-height:1.25;letter-spacing:-.01em;text-transform:none;color:var(--navy)}
.otx-pillar .otx-tx-item .otx-tx-item-title{display:block;margin:0;padding:0;font-family:inherit;font-size:16px;font-weight:600;font-style:normal;line-height:1.25;letter-spacing:normal;text-transform:none;color:inherit}

/* PIL-16 (rest of it; the pinned Learn More is above). A 13-card conditions grid (otxp0012: three
   columns, two from 1024 px down, one on phones) left one card alone at the left of its last row,
   on four pillars. The lone last card is centered: the middle column on desktop, a centered
   half-width card on tablets. Nothing is hidden. */
@media (min-width:1025px){
  .elementor-7099 .elementor-element-otxp0012 .otx-grid>.otx-info-card:last-child:nth-child(3n+1){grid-column:2}
}
@media (min-width:768px) and (max-width:1024px){
  .elementor-7099 .elementor-element-otxp0012 .otx-grid>.otx-info-card:last-child:nth-child(2n+1){grid-column:1/-1;justify-self:center;width:calc((100% - 24px)/2)}
}

/* PIL-14. Hub pages /specialties/ (1094), /treatment-areas/ (7119) and /services/ (2663), and the
   treatment-area card loop 917. Style guide decisions 5, 6 and 11: Gibson everywhere, 600 buttons,
   kit ink instead of off-palette #1F2124. Sizes, colors and layout are untouched.
   - Nunito and Roboto text widgets: 1964adf, 7fe36b40, 2fd02ad3, 0896e37, 8aff798 and a8e57ea.
   - Flip-box titles (all 23 tiles) were Nunito.
   - Buttons fell back to the kit's accent weight 500 (flip boxes, 2b29bfaf, 26a37ce5, 6a345538,
     41add248); 32da47b6 was Roboto 700.
   - The /treatment-areas/ FAQ (24222684) titles are a div, so they took Elementor's #1F2124; the two
     other hubs print h3 and get kit ink #222E3F.
   - 32da47b6 sat 10 px right of and below the hero text: container 25aafd2b kept Elementor's default
     10 px padding (the /services/ hero button's container has none). */
.elementor-1094 .elementor-element.elementor-element-1964adf.elementor-widget,
.elementor-7119 .elementor-element.elementor-element-7fe36b40.elementor-widget,
.elementor-7119 .elementor-element.elementor-element-2fd02ad3.elementor-widget,
.elementor-2663 .elementor-element.elementor-element-0896e37.elementor-widget,
.elementor-2663 .elementor-element.elementor-element-8aff798.elementor-widget,
.elementor-917 .elementor-element.elementor-element-a8e57ea.elementor-widget{font-family:var(--e-global-typography-text-font-family),Sans-serif}
.elementor-1094 .elementor-widget-flip-box .elementor-flip-box__front .elementor-flip-box__layer__overlay .elementor-flip-box__layer__inner .elementor-flip-box__layer__title,
.elementor-7119 .elementor-widget-flip-box .elementor-flip-box__front .elementor-flip-box__layer__overlay .elementor-flip-box__layer__inner .elementor-flip-box__layer__title,
.elementor-2663 .elementor-widget-flip-box .elementor-flip-box__front .elementor-flip-box__layer__overlay .elementor-flip-box__layer__inner .elementor-flip-box__layer__title{font-family:var(--e-global-typography-primary-font-family),Sans-serif}
.elementor-1094 .elementor-widget-flip-box .elementor-flip-box__button,
.elementor-7119 .elementor-widget-flip-box .elementor-flip-box__button,
.elementor-2663 .elementor-widget-flip-box .elementor-flip-box__button,
.elementor-1094 .elementor-widget-button .elementor-button,
.elementor-7119 .elementor-widget-button .elementor-button,
.elementor-2663 .elementor-widget-button .elementor-button{font-weight:600}
.elementor-7119 .elementor-element.elementor-element-32da47b6 .elementor-button.elementor-button{font-family:var(--e-global-typography-accent-font-family),Sans-serif;font-weight:600}
.elementor-7119 .elementor-element.elementor-element-25aafd2b.e-con{--padding-top:0px;--padding-right:0px;--padding-bottom:0px;--padding-left:0px}
.elementor-7119 .elementor-element.elementor-element-24222684 .e-n-accordion-item-title .e-n-accordion-item-title-text{color:var(--e-global-color-text)}

/* PIL-R3. /specialties/ treatment-area cards (loop 917, container 4847efc) kept 80 px top and bottom
   padding on phones: seven 271 px cards. 32 px on phones. The lone last card (custom CSS on loop
   grid e257cfb: grid-column 1/-1 with max-width 33.333% of the whole row) was 20 px wider than the
   others on desktop, and a third of the row on tablets and from 601 to 767 px. It now gets exactly
   one column: (row - 2 gaps) / 3 on desktop, (row - 1 gap) / 2 on tablets, the full row on phones.
   It stays centered, as approved. */
.elementor-1094 .elementor-element-e257cfb .elementor-loop-container.elementor-grid .e-loop-item:last-child{max-width:calc((100% - 2 * var(--grid-column-gap, 30px)) / 3)}
@media (max-width:1024px){
  .elementor-1094 .elementor-element-e257cfb .elementor-loop-container.elementor-grid .e-loop-item:last-child{max-width:calc((100% - var(--grid-column-gap, 30px)) / 2)}
}
@media (max-width:767px){
  .elementor-1094 .elementor-element-e257cfb .elementor-loop-container.elementor-grid .e-loop-item:last-child{max-width:none}
  .elementor-917 .elementor-element.elementor-element-4847efc.e-con{--padding-top:32px;--padding-bottom:32px}
}

/* ============================================================
   Template design audit, Oct. 8, 2026: batch 3, styling and profiles (styling-profiles builder).
   Blake's Oct. 9 rulings on discovery/2026-10-09-design-decisions.md ("all as recommended"):
   A4 (PIL-R1), D2 (PIL-05, above, in place), D6 (PRO-10, above, in place), and the no-approval parts
   of PIL-03, PIL-15 and PRO-01. A6 (LST-12) is in fixes-listings.css. Builds on the batch 1 and
   batch 2 blocks above; nothing here restates or undoes them. pillar.css loads BEFORE Elementor's
   post-<id>.css, so every rule wins on specificity (element-ID selectors), never on source order.
   ============================================================ */

/* A4, PIL-R1. The orange eyebrow over the white Non-Surgical panel ("Step one — conservative care")
   was #FE8C42 on #FFFFFF, 2.32:1. On light backgrounds eyebrows take the text-safe orange #C2410C
   (5.18:1 on white, measured). The accent #FE8C42 stays on navy: the surgical panel's eyebrow is
   7.12:1 there and is not touched. A scan of 12 sample pages (pillars, the three hubs, a profile, a
   location, an article, a landing page, Home and About) found no other orange eyebrow on a light
   background. */
.otx-pillar .otx-tx-non .otx-overline{color:#C2410C}

/* PIL-03 (no-approval part). Hub flip tiles on /specialties/ (1094), /treatment-areas/ (7119) and
   /services/ (2663) were 350 px tall at every width, so 23 near-empty tiles cost about 3,000 px of
   phone scrolling. The front face (title only, blank by approved design) now rests at 150 px on
   phones and 260 px on tablets. The back face (description and button) needs 249-375 px at 390 and
   up to 605 px at 768, so a short tile cannot hold it: when the tile flips (Elementor flips on :hover
   and :focus-visible, and a tap counts as hover on touch screens) the back face goes into the flow
   and the tile grows to fit it, then returns to its resting height. This also ends the back-face
   overflow that 768-1024 px already had at 350 px (text and button ran up to 255 px past the blue face).
   Desktop (1025 px and up) keeps the fixed 350 px tile. From 1280 up every back face fits (at most
   312 px); from 1025 to about 1100 px the Spine back face still runs up to 11 px past the face (its
   button's bottom edge, at 1025 px), as before (not in the audit; not changed here).
   Gibson titles came with PIL-14 (batch 2). The "Click Here" to "Learn More" button text is Elementor
   data (each flip box's button_text), not CSS, and is not changed here. No icons (Blake, Oct. 9:
   option a).
   Review fix (Oct. 9): the three tile grids (fdac778, 21c45fbb, 3f4f4f9) carry Elementor's
   --e-con-grid-template-rows: repeat(2, 1fr), which ties the first two rows to one height. With
   growing tiles that made every tile in rows 1 and 2 grow with the flipped one, and at 768 the hovered
   tile's neighbors jumped under the cursor (a hover flicker). At 1024 px and below the rows are sized
   by their own tiles (none), so only the flipped tile's row grows. Desktop keeps the 2-row template.
   Keyboard (all widths, these three hubs only): Elementor flips a tile while the tile itself has
   :focus-visible, so the next Tab, onto the back face's button, turned the tile back and left the
   focused button out of sight. The tile now also stays flipped while anything inside it has keyboard
   focus (:has(:focus-visible); a mouse click on the button does not set it). Direction-left only, as
   all 23 tiles are; Elementor's own flip transform for that direction is repeated. */
.elementor-1094 .elementor-element.elementor-widget-flip-box.elementor-flip-box--effect-flip .elementor-flip-box:has(:focus-visible) .elementor-flip-box__back,
.elementor-7119 .elementor-element.elementor-widget-flip-box.elementor-flip-box--effect-flip .elementor-flip-box:has(:focus-visible) .elementor-flip-box__back,
.elementor-2663 .elementor-element.elementor-widget-flip-box.elementor-flip-box--effect-flip .elementor-flip-box:has(:focus-visible) .elementor-flip-box__back{transform:none}
.elementor-1094 .elementor-element.elementor-widget-flip-box.elementor-flip-box--effect-flip.elementor-flip-box--direction-left .elementor-flip-box:has(:focus-visible) .elementor-flip-box__front,
.elementor-7119 .elementor-element.elementor-widget-flip-box.elementor-flip-box--effect-flip.elementor-flip-box--direction-left .elementor-flip-box:has(:focus-visible) .elementor-flip-box__front,
.elementor-2663 .elementor-element.elementor-widget-flip-box.elementor-flip-box--effect-flip.elementor-flip-box--direction-left .elementor-flip-box:has(:focus-visible) .elementor-flip-box__front{transform:rotateX(0) rotateY(-180deg)}
@media (max-width:1024px){
  .elementor-1094 .elementor-element.elementor-element-fdac778.e-grid,
  .elementor-7119 .elementor-element.elementor-element-21c45fbb.e-grid,
  .elementor-2663 .elementor-element.elementor-element-3f4f4f9.e-grid{--e-con-grid-template-rows:none}
  .elementor-1094 .elementor-element.elementor-widget-flip-box.elementor-flip-box--effect-flip .elementor-flip-box,
  .elementor-7119 .elementor-element.elementor-widget-flip-box.elementor-flip-box--effect-flip .elementor-flip-box,
  .elementor-2663 .elementor-element.elementor-widget-flip-box.elementor-flip-box--effect-flip .elementor-flip-box{height:auto}
  .elementor-1094 .elementor-element.elementor-widget-flip-box.elementor-flip-box--effect-flip .elementor-flip-box__layer,
  .elementor-7119 .elementor-element.elementor-widget-flip-box.elementor-flip-box--effect-flip .elementor-flip-box__layer,
  .elementor-2663 .elementor-element.elementor-widget-flip-box.elementor-flip-box--effect-flip .elementor-flip-box__layer{top:0;left:0}
  .elementor-1094 .elementor-element.elementor-widget-flip-box.elementor-flip-box--effect-flip .elementor-flip-box__front,
  .elementor-7119 .elementor-element.elementor-widget-flip-box.elementor-flip-box--effect-flip .elementor-flip-box__front,
  .elementor-2663 .elementor-element.elementor-widget-flip-box.elementor-flip-box--effect-flip .elementor-flip-box__front{position:relative;height:auto}
  .elementor-1094 .elementor-element.elementor-widget-flip-box.elementor-flip-box--effect-flip .elementor-flip-box__layer__overlay,
  .elementor-7119 .elementor-element.elementor-widget-flip-box.elementor-flip-box--effect-flip .elementor-flip-box__layer__overlay,
  .elementor-2663 .elementor-element.elementor-widget-flip-box.elementor-flip-box--effect-flip .elementor-flip-box__layer__overlay{height:auto;min-height:260px}
  .elementor-1094 .elementor-element.elementor-widget-flip-box.elementor-flip-box--effect-flip .elementor-flip-box:hover .elementor-flip-box__front,
  .elementor-1094 .elementor-element.elementor-widget-flip-box.elementor-flip-box--effect-flip .elementor-flip-box:focus-visible .elementor-flip-box__front,
  .elementor-7119 .elementor-element.elementor-widget-flip-box.elementor-flip-box--effect-flip .elementor-flip-box:hover .elementor-flip-box__front,
  .elementor-7119 .elementor-element.elementor-widget-flip-box.elementor-flip-box--effect-flip .elementor-flip-box:focus-visible .elementor-flip-box__front,
  .elementor-2663 .elementor-element.elementor-widget-flip-box.elementor-flip-box--effect-flip .elementor-flip-box:hover .elementor-flip-box__front,
  .elementor-2663 .elementor-element.elementor-widget-flip-box.elementor-flip-box--effect-flip .elementor-flip-box:focus-visible .elementor-flip-box__front,
  .elementor-1094 .elementor-element.elementor-widget-flip-box.elementor-flip-box--effect-flip .elementor-flip-box:has(:focus-visible) .elementor-flip-box__front,
  .elementor-7119 .elementor-element.elementor-widget-flip-box.elementor-flip-box--effect-flip .elementor-flip-box:has(:focus-visible) .elementor-flip-box__front,
  .elementor-2663 .elementor-element.elementor-widget-flip-box.elementor-flip-box--effect-flip .elementor-flip-box:has(:focus-visible) .elementor-flip-box__front{position:absolute;height:100%}
  .elementor-1094 .elementor-element.elementor-widget-flip-box.elementor-flip-box--effect-flip .elementor-flip-box:hover .elementor-flip-box__back,
  .elementor-1094 .elementor-element.elementor-widget-flip-box.elementor-flip-box--effect-flip .elementor-flip-box:focus-visible .elementor-flip-box__back,
  .elementor-7119 .elementor-element.elementor-widget-flip-box.elementor-flip-box--effect-flip .elementor-flip-box:hover .elementor-flip-box__back,
  .elementor-7119 .elementor-element.elementor-widget-flip-box.elementor-flip-box--effect-flip .elementor-flip-box:focus-visible .elementor-flip-box__back,
  .elementor-2663 .elementor-element.elementor-widget-flip-box.elementor-flip-box--effect-flip .elementor-flip-box:hover .elementor-flip-box__back,
  .elementor-2663 .elementor-element.elementor-widget-flip-box.elementor-flip-box--effect-flip .elementor-flip-box:focus-visible .elementor-flip-box__back,
  .elementor-1094 .elementor-element.elementor-widget-flip-box.elementor-flip-box--effect-flip .elementor-flip-box:has(:focus-visible) .elementor-flip-box__back,
  .elementor-7119 .elementor-element.elementor-widget-flip-box.elementor-flip-box--effect-flip .elementor-flip-box:has(:focus-visible) .elementor-flip-box__back,
  .elementor-2663 .elementor-element.elementor-widget-flip-box.elementor-flip-box--effect-flip .elementor-flip-box:has(:focus-visible) .elementor-flip-box__back{position:relative;height:auto}
}
@media (max-width:767px){
  .elementor-1094 .elementor-element.elementor-widget-flip-box.elementor-flip-box--effect-flip .elementor-flip-box__layer__overlay,
  .elementor-7119 .elementor-element.elementor-widget-flip-box.elementor-flip-box--effect-flip .elementor-flip-box__layer__overlay,
  .elementor-2663 .elementor-element.elementor-widget-flip-box.elementor-flip-box--effect-flip .elementor-flip-box__layer__overlay{min-height:150px}
}

/* PIL-15 (no-approval part: gutters). Style guide decision 12 (one 1,350 px container). The hub pages'
   text sat at three different content edges, 55, 75 and 85 px from the left at 1440 (30, 40 at 390),
   because the theme's .container-padding adds 30 px inside the 1,350 px box and some columns add
   10 px more. The pillars (template 7099) and the hubs' own flip-tile and intro sections use one
   edge: 55 px at 1440, 40 px wherever the 1,350 px box no longer fits (1280, 1024 and phones).
   Every .container-padding section of the three hubs now lands on that edge, by element ID:
   - sections whose columns add 10 px: 30 px outside, 0 inside;
   - sections whose widgets sit on the inner box: 30 px outside, 10 px inside.
   Only the side padding changes; the theme's 100 px top and bottom stay. The /specialties/ treatment-
   area cards (9d62dcc) get the same 10 px, so their edges meet the flip tiles' (55 and 1385 at 1440).
   The two full-bleed photo and navy panels keep their split layout; on phones their text moves from
   30 to 40 px. Headings keep their approved color and alignment (that part needs UMP).
   EDITOR NOTE: these side paddings now live HERE for 1094, 7119 and 2663; a side padding set on these
   containers in the Elementor editor is outranked (0,4,0 and 0,5,1 against Elementor's 0,3,0 and the
   theme's 0,2,1). */
.elementor-1094 .elementor-element.elementor-element-d57780b.e-con,
.elementor-1094 .elementor-element.elementor-element-c07b9dc.e-con,
.elementor-1094 .elementor-element.elementor-element-8daec4d.e-con,
.elementor-7119 .elementor-element.elementor-element-9fab880.e-con,
.elementor-7119 .elementor-element.elementor-element-52c63aea.e-con,
.elementor-7119 .elementor-element.elementor-element-56e92302.e-con,
.elementor-2663 .elementor-element.elementor-element-c157d67.e-con,
.elementor-2663 .elementor-element.elementor-element-bdfaf42.e-con,
.elementor-2663 .elementor-element.elementor-element-947c253.e-con,
.elementor-1094 .elementor-element.elementor-element-8b797ec.e-con,
.elementor-1094 .elementor-element.elementor-element-758036d.e-con,
.elementor-1094 .elementor-element.elementor-element-2d049fa.e-con,
.elementor-1094 .elementor-element.elementor-element-1c0c880.e-con,
.elementor-7119 .elementor-element.elementor-element-57c59c2a.e-con,
.elementor-7119 .elementor-element.elementor-element-2adccc3d.e-con,
.elementor-7119 .elementor-element.elementor-element-1ed94f35.e-con,
.elementor-7119 .elementor-element.elementor-element-205cfc8b.e-con,
.elementor-7119 .elementor-element.elementor-element-704a15bf.e-con,
.elementor-2663 .elementor-element.elementor-element-d16a0b2.e-con,
.elementor-2663 .elementor-element.elementor-element-137cf4a.e-con,
.elementor-2663 .elementor-element.elementor-element-879b9a2.e-con,
.elementor-2663 .elementor-element.elementor-element-4ee677a.e-con,
.elementor-2663 .elementor-element.elementor-element-c052815.e-con{--padding-left:30px;--padding-right:30px}
body .elementor-1094 .elementor-element.elementor-element-d57780b.container-padding>.e-con-inner,
body .elementor-1094 .elementor-element.elementor-element-c07b9dc.container-padding>.e-con-inner,
body .elementor-1094 .elementor-element.elementor-element-8daec4d.container-padding>.e-con-inner,
body .elementor-7119 .elementor-element.elementor-element-9fab880.container-padding>.e-con-inner,
body .elementor-7119 .elementor-element.elementor-element-52c63aea.container-padding>.e-con-inner,
body .elementor-7119 .elementor-element.elementor-element-56e92302.container-padding>.e-con-inner,
body .elementor-2663 .elementor-element.elementor-element-c157d67.container-padding>.e-con-inner,
body .elementor-2663 .elementor-element.elementor-element-bdfaf42.container-padding>.e-con-inner,
body .elementor-2663 .elementor-element.elementor-element-947c253.container-padding>.e-con-inner{padding-left:0;padding-right:0}
body .elementor-1094 .elementor-element.elementor-element-8b797ec.container-padding>.e-con-inner,
body .elementor-1094 .elementor-element.elementor-element-758036d.container-padding>.e-con-inner,
body .elementor-1094 .elementor-element.elementor-element-2d049fa.container-padding>.e-con-inner,
body .elementor-1094 .elementor-element.elementor-element-1c0c880.container-padding>.e-con-inner,
body .elementor-7119 .elementor-element.elementor-element-57c59c2a.container-padding>.e-con-inner,
body .elementor-7119 .elementor-element.elementor-element-2adccc3d.container-padding>.e-con-inner,
body .elementor-7119 .elementor-element.elementor-element-1ed94f35.container-padding>.e-con-inner,
body .elementor-7119 .elementor-element.elementor-element-205cfc8b.container-padding>.e-con-inner,
body .elementor-7119 .elementor-element.elementor-element-704a15bf.container-padding>.e-con-inner,
body .elementor-2663 .elementor-element.elementor-element-d16a0b2.container-padding>.e-con-inner,
body .elementor-2663 .elementor-element.elementor-element-137cf4a.container-padding>.e-con-inner,
body .elementor-2663 .elementor-element.elementor-element-879b9a2.container-padding>.e-con-inner,
body .elementor-2663 .elementor-element.elementor-element-4ee677a.container-padding>.e-con-inner,
body .elementor-2663 .elementor-element.elementor-element-c052815.container-padding>.e-con-inner,
.elementor-1094 .elementor-element.elementor-element-9d62dcc.e-con>.e-con-inner{padding-left:10px;padding-right:10px}
@media (max-width:767px){
  .elementor-7119 .elementor-element.elementor-element-5c191b48.e-con,
  .elementor-2663 .elementor-element.elementor-element-07efd0f.e-con{--padding-left:40px;--padding-right:40px}
}

/* PIL-15 (no-approval part: FAQ). Style guide decision 8: one FAQ accordion, the approved "white"
   variant every client page uses (.faq-accordion.white on /specialties/, /treatment-areas/,
   /services/, Preparing for My Appointment and No Surprise Act): a pill per question (8 px radius,
   20 px padding, 12 px apart, title 20 px/600 on a 24 px line in kit ink), a small solid triangle in
   #495057 at the right, and, when open, the answer under the pill on the band itself (20 px below it
   and 20 px in, 18 px kit ink). The pillar FAQ (OTX FAQ widget in template 7099) was a different
   component: the answer inside a white card with a #EEE ring, a 16 px gray answer and a thin orange
   chevron. It now has the approved anatomy. Its pills are cloud #F4F6FC rather than white because the
   pillar FAQ band is white, and the approved pills are white on cloud bands (style guide page grammar
   4: white cards on cloud bands, tinted cards on white bands). The band stays white: on Imaging,
   Workers' Compensation and Hand & Wrist it follows a cloud band, so a cloud FAQ band would put two
   cloud bands together. The FAQ heading keeps its pillar color. Scoped to 7099; the [otx_pillar_*]
   shortcodes and article FAQs (otx-content.css) are untouched. */
.elementor-7099 .otx-pillar .otx-faq details{background:transparent;border-radius:0;box-shadow:none;margin-bottom:12px}
.elementor-7099 .otx-pillar .otx-faq summary{background:var(--cloud);border-radius:8px;padding:20px;font-size:20px;font-weight:600;line-height:1.2;color:var(--ink);gap:10px}
.elementor-7099 .otx-pillar .otx-faq summary::after{width:13px;height:12px;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 11'><path d='M10.811,0L0.502,0C0.121,0 -0.12,0.408 0.064,0.741L5.218,10.117C5.408,10.462 5.904,10.462 6.094,10.117L11.249,0.741C11.432,0.408 11.191,0 10.811,0Z' fill='%23495057'/></svg>")}
.elementor-7099 .otx-pillar .otx-faq details p{margin:0;padding:20px 20px 22px;font-size:18px;line-height:1.5;color:var(--ink)}
.elementor-7099 .otx-pillar .otx-faq details p:not(:last-child){padding-bottom:14px}
.elementor-7099 .otx-pillar .otx-faq details p+p{padding-top:0}

/* PRO-01 (no-approval part: order; the cap of three cards per loop stays as approved). No CSS here
   on purpose. The ranking is done in the query (includes/elementor-queries.php): the services loop
   (858fdc3) lists ranked services (General Orthopedics, Sports Medicine) first, so its three cards are
   the top-ranked ones, and the treatment-area loop (ta0d001) follows it as in the approved build. The
   cards are not interleaved with CSS `order` to match the pills (ranked services, areas, other
   services): that made the visual order differ from the reading and Tab order on 72 profiles (review,
   Oct. 9; WCAG 1.3.2 and 2.4.3), so markup order and visual order stay the same. */

/* Daniel's feedback item 18 (Monday 13248031437; Blake, Oct. 12, 2026). The specialists band lists
   nobody: under its heading and intro there is one button, "Find a <pillar> Specialist", the same
   orange .otx-btn-primary as the "All Specialists" button it replaces (pillar-render.php,
   otx_pillar_find_button). Centered like that button was (PIL-09), and the same 54 px tall on desktop
   and tablet (.otx-btn's line height of 1). The label runs up to 49 characters ("Find an
   Interventional Pain Management Specialist"), so on phones it wraps inside the column, centered,
   and there the line height is 1.2 so the wrapped lines do not touch. */
.otx-pillar .otx-btn.otx-btn-find{display:table;margin:0 auto;max-width:100%;text-align:center}
@media (max-width:767px){.otx-pillar .otx-btn.otx-btn-find{line-height:1.2}}

/* Andrew Foreman's three profile changes (email of Oct. 13, 2026, cc Daniel Goldberg; Blake's yes the
   same evening). OTX tools/staged/v-profile-globals.php puts the elements in template 348; the link
   comes from [provider_booking_url] and the hide rules from booking:open and booking:reviews.
   1. The scheduling callout: badge otxs001 (.otx-sched-badge) after the hero's Schedule Appointment
   button in container 03af0ad, which the script makes a wrapping row (direction, wrap, centering and
   gap are in the container's own settings, so the editor shows them). Daniel's words in a white
   rounded rectangle (12 px, not the kit's 100 px pill, so it reads as neither a second button nor a
   specialty pill), navy Gibson 600 (16.5:1), with an orange disc holding a navy clock (7.1:1). Two
   balanced lines make it about as tall as the 54 px button. It sits beside the button where the hero
   column has room and wraps under it elsewhere; on phones it is as wide as the 260 px button, so their
   edges line up. */
.elementor-348 .elementor-element-03af0ad>.elementor-widget{width:auto;max-width:100%;margin:0}
.elementor-348 .otx-sched-badge p{display:inline-flex;align-items:center;gap:10px;margin:0;max-width:280px;padding:8px 18px 8px 10px;background:#fff;color:#041E42;border-radius:12px;font-size:16px;font-weight:600;line-height:1.25;text-wrap:balance}
.elementor-348 .otx-sched-badge p::before{content:"";flex:0 0 32px;width:32px;height:32px;border-radius:50%;background:#FE8C42 url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23041E42' stroke-width='2.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='8.5'/%3E%3Cpath d='M12 7.5V12l3 2'/%3E%3C/svg%3E") center/19px no-repeat}
@media (max-width:767px){.elementor-348 .otx-sched-badge p{box-sizing:border-box;width:260px;max-width:100%}}
/* 3. "Are you ready to schedule?": container otxs010 (.otx-ready), the pillar appointment band's look
   (template 7099 otxp0051: navy, 36 px white H2, the orange button), with its padding, colors and type
   in its own settings. It renders only where the page has reviews and always right after them.
   Until Oct. 22 both bands were navy and read as one, so their facing padding was tightened and a
   white hairline set the button off. The reviews band is Light BG now (below), so the navy band
   stands on its own with its full padding (100 px, 60 px on phones) and no hairline. */

/* Testimonials band on Light BG (template 348, container 356851d0 #testimonials). Blake, Oct. 22:
   with the reviews directly under the hero (Andrew's Oct. 13 change), the navy hero and the navy
   reviews band ran together into one tall navy block; the band needed "a light grey or light blue",
   whichever the style guide has. The kit's Light BG (global af718e8, #F4F6FC) is the site's light
   band: the section menu right below and Team on this template, and 17 pages. Light Grey BG
   (#F8F9FA) is the rarer second.
   - Background: the global, with its value as a fallback. The ID outranks Elementor's own
     background rule (0,4,0); the container's navy stays in its settings.
   - Heading: the shortcode's white-text class gives way to the profile's light-band heading color,
     Headings #222E3F, as on "Dr. ___ Specialties" (12.7:1 on #F4F6FC, measured).
   - Review cards: Swell's #F4F4F4 cards nearly matched the band, so they turn white with a pale
     blue-grey edge. The white score box keeps its shadow. Dates #666 (5.7:1 on white) and the
     #C2410C chips are unchanged.
   EDITOR NOTE: this band's background now lives HERE; a color set on 356851d0 in the Elementor editor
   is ignored. */
.elementor-348 #testimonials.e-con{background-color:var(--e-global-color-af718e8,#F4F6FC)}
.elementor-348 #testimonials .white-text,
.elementor-348 #testimonials .white-text :is(h1,h2,h3,h4,strong){color:#222E3F}
.elementor-348 #testimonials .swell-review-card{background-color:#fff;border-color:#DFE5F0}

/* ==========================================================================
   Providers Single (template 348) hero: provider photo, Specialties and Areas of Expertise.
   Combined proposal, Oct. 14, 2026 (Blake). Proposed home: orthotexas-core
   assets/css/pillar.css, after the existing .elementor-348 rules. Plugin 1.1.18 -> 1.1.19.

   PART 1, the photo (CSS only). Base design "photo-lock45", with the header-grid alignment from
   "photo-fluid" and the reviewers' fixes.
   - Blake (Oct. 14): "We need to have the full height of the image presented, not the full
     width." Every headshot the hero loads is a 4:5 portrait (Oct. 14 sweep of all 170), so the
     photo panel is never wider than 4:5 and background-size: cover (the template's own
     setting) can only ever trim the sides, never the top or bottom.
   - Side by side from 1025 px, Elementor's own desktop breakpoint (no new breakpoint). The
     hero's minimum height H comes from the window width: clamp(620px, 440px + 18.75vw, 860px)
     = 632 at 1025, 680 at 1280, 710 at 1440, 755 at 1680, 800 at 1920, 860 from 2240 up.
     The photo is pinned to the hero's right edge at the hero's full height and 4:5 of it, so
     a taller hero gets a wider photo instead of a cropped one. It may widen until it is 40 px
     from the text; only past that are the sides trimmed.
   - The text starts under the header logo: the header's own gutter (4% to 1280, 5% to 1600,
     8% above; fixes-chrome.css GLB-01) plus 10 px; the name block's own 10 px inset then puts
     the H1 where the logo's lettering starts (gutter + 20). The text block is at most 880 px
     wide, left-aligned and centered vertically.
   - 1024 px and below (Elementor's tablet and phone range, already stacked today) the photo is
     an exact 4:5 portrait on top: full width on phones, 520 x 650 from 520 px up (centered to
     899 px, lined up with the text from 900 px). Option H3 in
     discovery/2026-10-14-provider-hero-photo-and-expertise-proposal.md stacks 1025 to 1199 too.

   Load order and the editor. pillar.css loads BEFORE Elementor's post-348.css, so every hero
   selector below is more specific than Elementor's (0,3,0) and (0,4,0) rules. The layout rules
   are scoped to body:not(.elementor-editor-active), so in edit mode the Elementor editor keeps
   showing the template's own layout (the photo is position:absolute here, which the editor's handles were
   not built for). These template-348 settings are overridden on the front end and do nothing
   there until they are cleaned up in the template after the Nov. 1 cutover:
     hero ecc8059       min-height 650
     text column 03bd523 width 120% (desktop) / 100% (tablet), padding 120/60/40/60 (desktop)
                         and 80/30/80/30 (tablet, mobile), justify space-between
     name block f958002 bottom padding 130 (desktop) / 30 (tablet), align-self center
     photo d4b35f7      width 47%, min-height 650 (desktop, tablet) / 500 (mobile)

   PART 2, Specialties and Areas of Expertise. Base design "pills-nav". Needs the markup change
   in includes/shortcodes.php (display_linked_buttons) and the widget 2d8b481 settings
   (row_format %expertise%, list_markup ul, _css_classes otx-aoe). The Oct. 8 Areas-pill rules
   (.specialties-buttons .otx-repeater-format ...) stay in pillar.css for this release: they
   match nothing once the widget settings land, and they keep today's pills if the code ships
   before the template edit. Remove them in a later cleanup.
   ========================================================================== */

/* ---------- Part 1: photo, side by side (1025 px and up) ---------- */
@media (min-width:1025px){
  body:not(.elementor-editor-active) .elementor-348 .elementor-element.elementor-element-ecc8059.e-con{
    --otx-hero-h:clamp(620px, calc(440px + 18.75vw), 860px);
    --otx-photo-w:calc(var(--otx-hero-h) * .8);
    --otx-gutter:calc(4% + 10px);
    --otx-pad-r:60px;
    --otx-content-max:880px;
    --min-height:var(--otx-hero-h);
    position:relative;
  }
  /* Text column: everything left of the photo's base width. */
  body:not(.elementor-editor-active) .elementor-348 .elementor-element-ecc8059>.elementor-element.elementor-element-03bd523{
    --padding-top:64px;--padding-bottom:64px;
    --padding-left:var(--otx-gutter);--padding-right:var(--otx-pad-r);
    --justify-content:center;--align-items:flex-start;
    flex:0 0 auto;
    width:calc(100% - var(--otx-photo-w));
    max-width:calc(100% - var(--otx-photo-w));
  }
  /* Name block and pills block: at most 880 px wide, left-aligned under the logo. */
  body:not(.elementor-editor-active) .elementor-348 .elementor-element-03bd523>.elementor-element.e-con{
    --align-self:flex-start;
    width:100%;
    max-width:var(--otx-content-max);
  }
  /* The 130 px under the Schedule row pushed the pills to the bottom of a tall column. */
  body:not(.elementor-editor-active) .elementor-348 .elementor-element-03bd523>.elementor-element.elementor-element-f958002{--padding-bottom:48px}
  /* The photo: pinned right at the hero's full height, 4:5 of it, never closer than 40 px to
     the text block. Height is never trimmed. */
  body:not(.elementor-editor-active) .elementor-348 .elementor-element-ecc8059>.elementor-element.elementor-element-d4b35f7{
    --min-height:0px;
    min-height:0;
    position:absolute;
    top:0;right:0;
    height:100%;
    width:auto;
    aspect-ratio:4/5;
    max-width:calc(100% - var(--otx-gutter) - min(var(--otx-content-max), 100% - var(--otx-photo-w) - var(--otx-gutter) - var(--otx-pad-r)) - 40px);
  }
}
/* The header's gutter steps (fixes-chrome.css GLB-01 and the approved header above 1600). */
@media (min-width:1281px){
  body:not(.elementor-editor-active) .elementor-348 .elementor-element.elementor-element-ecc8059.e-con{--otx-gutter:calc(5% + 10px)}
}
@media (min-width:1601px){
  body:not(.elementor-editor-active) .elementor-348 .elementor-element.elementor-element-ecc8059.e-con{--otx-gutter:calc(8% + 10px)}
}

/* ---------- Part 1: photo, stacked (1024 px and down) ---------- */
/* The photo is an exact 4:5 portrait: full width on phones (390 x 488), 520 x 650 from 520 px
   (today's tablet band is also 650 tall), with 40 px of navy above. The name starts 48 px
   under the photo instead of 80. */
@media (max-width:1024px){
  body:not(.elementor-editor-active) .elementor-348 .elementor-element-ecc8059>.elementor-element.elementor-element-d4b35f7{
    --min-height:0px;
    min-height:0;
    flex:0 0 auto;
    width:min(100%, 520px);
    height:auto;
    aspect-ratio:4/5;
    align-self:center;
  }
  body:not(.elementor-editor-active) .elementor-348 .elementor-element-ecc8059>.elementor-element.elementor-element-03bd523{--padding-top:48px}
}
@media (min-width:520px) and (max-width:1024px){
  body:not(.elementor-editor-active) .elementor-348 .elementor-element-ecc8059>.elementor-element.elementor-element-d4b35f7{margin-top:40px}
}
/* From 900 px the portrait lines up with the text's left edge (40 px: 30 padding plus the
   10 px inset) instead of floating in the middle of a wide band. */
@media (min-width:900px) and (max-width:1024px){
  body:not(.elementor-editor-active) .elementor-348 .elementor-element-ecc8059>.elementor-element.elementor-element-d4b35f7{align-self:flex-start;margin-left:40px}
}

/* ---------- Part 2: labels ---------- */
/* "Specialties" and "Areas of Expertise" become small uppercase labels, so the links and the
   list carry the weight. Same words; CSS only. */
.elementor-348 .elementor-element-748f307 p,
.elementor-348 .elementor-element-0d2f7ba p{margin:0;font-family:Gibson,sans-serif;font-size:14px;line-height:1.3;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:rgba(255,255,255,.78)}
.elementor-348 .elementor-element-748f307 p b,
.elementor-348 .elementor-element-0d2f7ba p b{font-weight:inherit}

/* ---------- Part 2: Specialties, the featured navigation ---------- */
/* Links to the specialty and treatment-area pages: brand-blue tags (blue is the kit's link
   color; the orange pill stays the one action, Schedule Appointment). 8 px corners so they do
   not read as copies of the 100 px button pills. The 40% white edge carries the tag's shape
   against the navy; white text on the blue is 5.4:1. 48 px tall (44 on phones). */
.elementor-348 .otx-spec-links{display:flex;flex-wrap:wrap;gap:12px;list-style:none;margin:0;padding:0}
.elementor-348 .otx-spec-links>li{margin:0;padding:0;max-width:100%}
.elementor-348 .otx-spec-link{display:inline-block;max-width:100%;box-sizing:border-box;min-height:48px;padding:12px 16px 12px 18px;border:1px solid rgba(255,255,255,.4);border-radius:8px;background:#2D68C4;color:#fff;font-family:Gibson,sans-serif;font-size:18px;font-weight:600;line-height:22px;text-decoration:none;transition:box-shadow .2s,border-color .2s}
/* The arrow is drawn in CSS as an empty inline box after the name (no characters), so a line
   can never break between the last word and the arrow: "Interventional Pain Management" on a
   phone wraps as "... Management ->", never with the arrow alone or at the far edge. It takes
   the link's text color, including Windows high-contrast colors. */
/* 1.1.28 (D3, Oct. 23, 2026): a specialty label with no page behind it ("Spine Surgery",
   "Interventional & Non-Operative Spine Care") is an unlinked chip, <span class="otx-spec-link
   otx-spec-link--label">: the same tag, without the arrow, the hover edge or the underline. The
   arrow, hover, focus and forced-colors rules below leave the modifier out. */
.elementor-348 .otx-spec-link:not(.otx-spec-link--label) .otx-spec-link__text::after{content:"";padding-left:26px;background-color:currentColor;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M3 8h9M8.5 4l4 4-4 4' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") no-repeat 10px 50%/16px 16px;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M3 8h9M8.5 4l4 4-4 4' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") no-repeat 10px 50%/16px 16px;transition:-webkit-mask-position .2s,mask-position .2s}
/* Hover and keyboard focus: a white edge, an underline and the arrow nudges 3 px. No white
   fill, which would match the white "Appointments Available" badge. */
.elementor-348 .otx-spec-link:not(.otx-spec-link--label):hover,
.elementor-348 .otx-spec-link:not(.otx-spec-link--label):focus-visible{color:#fff;background:#2D68C4;border-color:#fff;box-shadow:inset 0 0 0 1px #fff;text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:4px}
.elementor-348 .otx-spec-link:not(.otx-spec-link--label):hover .otx-spec-link__text::after,
.elementor-348 .otx-spec-link:not(.otx-spec-link--label):focus-visible .otx-spec-link__text::after{-webkit-mask-position:13px 50%;mask-position:13px 50%}
.elementor-348 .otx-spec-link:not(.otx-spec-link--label):focus-visible{outline:3px solid #FE8C42;outline-offset:3px}
@media (max-width:767px){
  .elementor-348 .otx-spec-links{gap:10px}
  .elementor-348 .otx-spec-link{min-height:44px;padding:10px 14px 10px 16px;font-size:17px}
}

/* ---------- Part 2: Areas of Expertise, descriptive text ---------- */
/* Not links and not buttons: a list with orange check marks. Two columns when the text column
   has room for two 306 px columns (652 px), else one; capped at 760 px so short items do not
   drift apart on wide screens. The stored text is shown as entered. */
.elementor-348 .otx-aoe .otx-list{display:block;list-style:none;margin:0 0 -10px;padding:0;font-size:18px;columns:2 17em;column-gap:40px;max-width:760px}
.elementor-348 .otx-aoe .otx-list>li{position:relative;display:block;margin:0;padding:0 0 10px 28px;break-inside:avoid;color:#fff;font-family:Gibson,sans-serif;font-size:18px;font-weight:400;line-height:1.4}
.elementor-348 .otx-aoe .otx-list>li::before{content:"";position:absolute;left:0;top:.22em;width:17px;height:17px;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M2.5 8.5l3.5 3.5 7.5-8' fill='none' stroke='%23FE8C42' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") no-repeat center/17px 17px}

/* High contrast (Windows forced colors): backgrounds and shadows are dropped, so the tag keeps
   a visible border. */
@media (forced-colors:active){
  .elementor-348 .otx-spec-link:not(.otx-spec-link--label),
  .elementor-348 .otx-spec-link:not(.otx-spec-link--label):hover,
  .elementor-348 .otx-spec-link:not(.otx-spec-link--label):focus-visible{border-color:LinkText}
  .elementor-348 .otx-spec-link:not(.otx-spec-link--label) .otx-spec-link__text::after{forced-color-adjust:none;background-color:LinkText}
  /* 1.1.28: the unlinked label chip keeps a visible edge in the text color, not the link color. */
  .elementor-348 .otx-spec-link--label{border-color:CanvasText}
}
@media (prefers-reduced-motion:reduce){
  .elementor-348 .otx-spec-link,.elementor-348 .otx-spec-link:not(.otx-spec-link--label) .otx-spec-link__text::after{transition:none}
  .elementor-348 .otx-spec-link:not(.otx-spec-link--label):hover .otx-spec-link__text::after,
  .elementor-348 .otx-spec-link:not(.otx-spec-link--label):focus-visible .otx-spec-link__text::after{-webkit-mask-position:10px 50%;mask-position:10px 50%}
}

/* "Dr. ___ is now part of OrthoTexas." Daniel Goldberg, Oct. 22, 2026 (the call): at the top of every
   physician's profile for about 30 days after launch (includes/now-part-of.php; the line stops printing
   on Dec. 1 by itself). Heading widget otxn001 (.otx-now-part-of, a <p>), the first item of the hero's
   name block 79bf539, just above the H1. A notice, not a button or a specialty tag: white Gibson 600 on a
   10% white tint of the navy hero (12.5:1, computed), with an accent orange edge on the left (5.4:1
   against the tint; decoration only). 18 px from 768 px up, 16 px on phones, where the longest names wrap
   to a second line. The 10 px under it adds to the name block's own 10 px gap. Only physicians get the
   widget's text; for everyone else, and after the end, Elementor prints nothing, so no rule here is left
   holding an empty box. */
.elementor-348 .elementor-element.otx-now-part-of.elementor-widget{width:auto;max-width:100%;margin:0 0 10px}
.elementor-348 .elementor-element.otx-now-part-of .elementor-heading-title{display:inline-block;max-width:100%;box-sizing:border-box;margin:0;padding:8px 16px 8px 12px;border-left:4px solid var(--e-global-color-accent,#FE8C42);border-radius:0 8px 8px 0;background:rgba(255,255,255,.1);color:#fff;font-family:Gibson,sans-serif;font-size:18px;font-weight:600;line-height:1.35;text-wrap:pretty}
@media (max-width:767px){
  .elementor-348 .elementor-element.otx-now-part-of .elementor-heading-title{font-size:16px;padding:7px 14px 7px 10px}
}
@media (forced-colors:active){
  .elementor-348 .elementor-element.otx-now-part-of .elementor-heading-title{border:1px solid CanvasText;border-left-width:4px}
}
