/* ef-legacy-w53.css: the hub's fix card W53 (gate 6 of ONE PASS, the HUB posts ts 1789739537.254579 and
   1789739551.371989), the template-class fixes on the LEGACY pages of the Treatment template: every page on
   page-templates/wireframe-page.php that is not one of the nine hubs, the reference /phoenix-botox/, the lip filler
   hub /lip-filler-scottsdale/ or /offer/ (inc/enqueue.php, the ef-legacy-w53 block, by page id). Enqueued after the
   template's wireframe.min.css so it wins the cascade at equal specificity; wireframe.css and wireframe.min.css are
   not touched (their bytes are the /lp-home/ walled row). Brand tokens only. Every rule is commented with its card
   item; the reference rule each one ports is named. Record: evidence/w53/README.md.
   Revision W62 (W62 legacy polish, the hub's W60 chain step 4, HUB post ts 1789847238.071419, 2026-09-19; record:
   evidence/w62/README.md): two declaration changes, item 4 (the A2 selector widened to both top-level rows) and
   item 1 (the credit line's 80px clearance at 880 and below, the W62 block after B4). The enqueue's version string is
   the file's mtime (inc/enqueue.php, filemtime), which the CI deploy's fresh checkout sets, so the edge serves the new
   bytes under a new ?ver= value once this revision deploys. */

/* A2  /lumpy-lip-filler/ (12999): the two-card row "How to Fix Lumpy Lip Filler" / "Lip Filler Aftercare and Results"
   is a div.split that sits directly under section.ef-page, outside any .section container, so it runs edge to edge
   (0 to 1440 at 1440 against the container's 174 to 1266). The container it takes is the .section's own
   (wireframe.css line 27: max-width 1180px, margin 0 auto, padding 84px 44px; line 70: 54px 22px at 880 and below),
   horizontal only, so the row's own margin-top stays.
   W62 item 4 (W53 reading 2, the hub's word): the W53 selector reached only that row, the .split right before the
   comparison band (:has(+ .efw-t-cmp)); the page carries a second, structurally identical top-level .split above it
   ("The Short Answer" / "Not sure if your results are normal?") with the same edge-to-edge box, so the selector is
   widened to every .split that is a direct child of section.ef-page on this page (both rows), same declarations. */
body.page-id-12999 .ef-page > .split{max-width:1180px;margin-left:auto;margin-right:auto;padding-left:44px;padding-right:44px}
@media(max-width:880px){
  body.page-id-12999 .ef-page > .split{padding-left:22px;padding-right:22px}
}

/* A4  /xeomin-daxxify-guide/ (13032) at 390: the hero paragraph (p.hero-sub) vanishes because wireframe.css line 1597
   (@media max-width:880px .efw-t-hero .hero-sub{display:none}) hides the desktop sub in favour of a mobile rewrite
   p.hero-sub.hs-mob that the reference /phoenix-botox/ carries; the nine hubs and the lip filler hub carry no .hs-mob
   either and show their sub at 390 by their own page-scoped rule, so this rule would reach their heroes if it were
   enqueued there, and the enqueue's id exclusion (inc/enqueue.php) is what keeps it off them; a legacy efw-t-hero with
   no .hs-mob twin and no page-scoped rule is left with no paragraph. The rule is scoped to the exact cause: an
   efw-t-hero whose .hero-in carries no .hs-mob shows its one .hero-sub at every width. (The page's h1.seo-h1 is the
   Treatment hero's screen-reader sentence at EVERY width, wireframe.css line 747, on 1440 as on 390; it is not
   touched.) Comment corrected in the PR #344 fix round (D2); no declaration moved. */
@media(max-width:880px){
  .ef-page .efw-t-hero .hero-in:not(:has(.hs-mob)) .hero-sub{display:block}
}

/* B1  tables at 390 (proof /phoenix-tear-trough-filler/, 6449): the legacy table.cost has no mobile rule (its mobile
   rule on the reference lives in the hub pages' page-scoped efw-t-plain block, not in the theme), so at 390 the table
   is 400px wide in a 346px column with overflow hidden and the third column is cut 31.5px past the viewport. The
   template's own table.tbl mobile rules are ported to table.cost: the compaction of wireframe.css line 70 (12.5px,
   cells 9px 10px at 880 and below) and the scroller of line 522 (display:block; overflow-x:auto at 640 and below),
   so a table that still cannot fit scrolls in place instead of clipping. table.tbl already carries both rules. */
@media(max-width:880px){
  .ef-page table.cost{font-size:12.5px}
  .ef-page table.cost th,.ef-page table.cost td{padding:9px 10px}
}
@media(max-width:640px){
  .ef-page table.cost{display:block;overflow-x:auto;-webkit-overflow-scrolling:touch;max-width:100%}
}

/* B2  the "Keep Exploring" and "Where to Go Next" grids at 1440 (proof /masseter-botox-scottsdale/, 7990): the base
   .grid (wireframe.css line 46: grid, repeat(3,1fr), gap 20px) lays four cards as 3 + 1 and the last card sits left
   with two empty tracks. The reference centres its last row as a wrapping flex row (the hub pages' page-scoped
   .efw-t-next .next-grid{display:flex;flex-wrap:wrap;justify-content:center} with each card a fixed fraction of the
   row). Ported to a legacy .grid that carries a fourth .gcard, above the 880 mobile band only (the 390 and 768
   stacking of line 70 is untouched); each card keeps the three-column width, (100% - 2 x 20px) / 3, so full rows
   render exactly as the grid did and only a short last row moves, to the centre. The W49 two-card rule
   (.grid:has(> .gcard:nth-child(2):last-child)) never matches a four-card grid, and this never matches a two-card one. */
@media(min-width:880.02px){
  .ef-page .grid:has(> .gcard:nth-child(4)){display:flex;flex-wrap:wrap;justify-content:center}
  .ef-page .grid:has(> .gcard:nth-child(4)) > .gcard{flex:0 0 calc((100% - 40px) / 3);max-width:calc((100% - 40px) / 3)}
}

/* B3  the closing band's button (proof /membership/ 5257 at 1440, /pdgf-microneedling-scottsdale/ 9585 at 390): the
   legacy closing band is section.markband, whose button wireframe.css paints graphite (.markband .btn{background:
   var(--graphite)} at lines 66, 125 and 265, with the graphite press .markband .btn:active{background:#4a423d} at
   line 2071). The reference's closing band is section.markband.efw-t-cta and its button is the rose primary
   (.efw-t-cta .btn{background:var(--rosewood)} at lines 1303 and 1656). The legacy button takes the same primary;
   its hover and press take the Treatment template's own button hover (var(--rose), the .efw-t-hero, .fhm-cta,
   .visit-cta and .ba-ctas buttons at lines 784, 1014, 1070 and 1221), so the rosewood button never flashes graphite.
   A band that already carries .efw-t-cta reads the same value it has today. Tokens only.
   W56b item (2) (Loren HUB RULING at ts 1789777341.033209): the hover and press text of this pair turns Graphite,
   Lulu's value being the pair Dusty Rose fill with Graphite text wherever the fill is Dusty Rose; the fills stand. */
.ef-page .markband .btn{background:var(--rosewood);color:#fff}
@media(hover:hover){.ef-page .markband .btn:hover{background:var(--rose);color:#2E2926}}
.ef-page .markband .btn:active{background:var(--rose);color:#2E2926}

/* B4  at 390 the quick-actions rail (.ef-stack, fixed at right 14px, 48px wide, so its left edge is 328 of 390) and
   the avatar (.ef-textus-launch, fixed at right 20px, 56px wide, left edge 314) sit over the hero paragraph and the
   credit line, whose boxes end at 368 (proof /pricing/ 1578; also /med-spa-scottsdale/, /botox-scottsdale/,
   /daxxify-scottsdale/, /kybella-phoenix/ and the class). The W39 M1 remedy on the nine is the S6 inset, the hub
   pages' page-scoped @media(max-width:880px){.efw-t-hero .hero-in{padding-right:62px}}, ported here to the legacy
   hero's .hero-in at 880 and below: with the hero's own 22px gutter (line 70) the hero text ends at 306, left of
   the avatar (314) and the rail (328). */
@media(max-width:880px){
  .ef-page .hero .hero-in{padding-right:62px}
}

/* W62 item 1 (W53 reading 6, the hub's W60 chain step 4): on every legacy hero at 390 whose content is taller than the
   hero's 78vh minimum (wireframe.css line 70: .hero{padding:0 22px;min-height:78vh} at 880 and below, align-items
   center, no vertical padding anywhere), the hero is exactly its content's height and the credit line's box bottom
   sits on the hero's bottom edge with 0px clearance. The reference /phoenix-botox/ keeps 80px (W39 M1 clause three,
   evidence/w39/README.md: 80.0 on the reference and on all nine hubs) by the Treatment mobile sheet's hero rule,
   ef-t-mobile.css lines 65 and 66 under @media(max-width:880px): .efw-t-hero{padding:0} and
   .efw-t-hero .hero-in{padding:80px 30px}, a sheet the reference and the eleven hubs load by page id and the legacy
   set never does (inc/enqueue.php). The vertical 80px is ported here to the legacy hero's .hero-in under the same
   media query; the horizontal values stay the legacy hero's own (the 22px gutter of line 70 on .hero plus B4's 62px
   inset above), so no horizontal number of B4 moves. A hero whose content plus 160px exceeds the minimum grows to that
   and reads 80px above and below its content, as the reference's own hero does (its content 500.2 plus 160 = 660.2
   at 390); a hero whose content plus 160px fits inside the minimum keeps its height and its centred content does not
   move. Tokens: none (a length only). */
@media(max-width:880px){
  .ef-page .hero .hero-in{padding-top:80px;padding-bottom:80px}
}

/* B5  the reviews band under the hero at 390 (/botox-for-sweating-scottsdale/, /botox-north-scottsdale/,
   /hand-fillers-in-scottsdale/, /forehead-wrinkle-injections/, /gummy-smile-botox-near-me/,
   /jawline-contouring-phoenix/): see evidence/w53/README.md, item B5, for the live 390 read of each page after the
   scroll-through; a rule is written here only where the read found the band real. */

/* ═══ W56b (Loren HUB RULING at ts 1789777341.033209, items (2) and (4); record: evidence/w56b/README.md). This sheet
   loads on the legacy pages of the Treatment template (the 83 enqueued rows, inc/enqueue.php) after wireframe.min.css,
   and the legacy pages carry the same wireframe.css button families wherever their markup uses the Treatment bands
   (efw-t-hero on /daxxify-vs-xeomin/, /lumpy-lip-filler/ and /xeomin-daxxify-guide/) and the About page's eft buttons.
   Item (2): Graphite #2E2926 text on every Dusty Rose hover fill ("Lulu's value is the pair, Dusty Rose fill with
   Graphite text, wherever the fill is Dusty Rose"); every rule names the rule that paints the fill today with its sheet
   and line, restates that selector at the same specificity later in the cascade and sets the text colour only; the
   fill, the border and the media context of the painting rule are untouched; :hover under @media (hover:hover) as the
   theme does, :active where the painting family paints the fill on :active (the B3 pair above is this sheet's own and
   is edited in place). Item (4): the .btn inside an .ef-page paragraph takes its white text back. wireframe.css is not
   touched (its bytes are the /lp-home/ walled row). ═══ */
/* the Treatment hero (wireframe.css 784 and 785; the ghost 787 and 788): inside @media(min-width:880.02px), restated so */
@media(min-width:880.02px){
  @media (hover:hover){.efw-t-hero .btn:hover{color:#2E2926}}
  .efw-t-hero .btn:active{color:#2E2926}
  @media (hover:hover){.efw-t-hero .btn.ghost:hover{color:#2E2926}}
  .efw-t-hero .btn.ghost:active{color:#2E2926}
}
/* the essentials ghost (wireframe.css 803 and 804) */
@media (hover:hover){.efw-t-ess .btn.ghost-rose:hover{color:#2E2926}}
.efw-t-ess .btn.ghost-rose:active{color:#2E2926}
/* the Is-Right ghost (wireframe.css 931 and 932) */
@media (hover:hover){.efw-t-right .btn.ghost-rose:hover{color:#2E2926}}
.efw-t-right .btn.ghost-rose:active{color:#2E2926}
/* the Method band button (wireframe.css 1014 and 1015) */
@media (hover:hover){.efw-t-fhm .fhm-cta .btn:hover{color:#2E2926}}
.efw-t-fhm .fhm-cta .btn:active{color:#2E2926}
/* the diff band ghost (wireframe.css 1039 and 1040) */
@media (hover:hover){.efw-t-diff .btn.ghost-rose:hover{color:#2E2926}}
.efw-t-diff .btn.ghost-rose:active{color:#2E2926}
/* the visit band button (wireframe.css 1070 and 1071) */
@media (hover:hover){.efw-t-visit .visit-cta .btn:hover{color:#2E2926}}
.efw-t-visit .visit-cta .btn:active{color:#2E2926}
/* the before-and-after band button (wireframe.css 1221 and 1222) */
@media (hover:hover){.efw-t-ba .ba-ctas .btn:hover{color:#2E2926}}
.efw-t-ba .ba-ctas .btn:active{color:#2E2926}
/* the before-and-after ghost (wireframe.css 1224 and 1225), above 880 only: at 880 and below the same selector is a Clay
   text link with no fill (wireframe.css 1457 and 1458) and is left as it is */
@media(min-width:880.02px){
  @media (hover:hover){.efw-t-ba .ba-ctas .btn.ghost-rose:hover{color:#2E2926}}
  .efw-t-ba .ba-ctas .btn.ghost-rose:active{color:#2E2926}
}
/* the FAQ band button and ghost (wireframe.css 1277, 1278, 1280 and 1281) */
@media (hover:hover){.efw-t-faq .r1-btn:hover{color:#2E2926}}
.efw-t-faq .r1-btn:active{color:#2E2926}
@media (hover:hover){.efw-t-faq .r1-btn--ghost-rose:hover{color:#2E2926}}
.efw-t-faq .r1-btn--ghost-rose:active{color:#2E2926}
/* the About page's buttons (wireframe.css 1955 and 1956; the filled variant 2032 and 2033) */
@media (hover:hover){.eft-btn:hover{color:#2E2926}}
.eft-btn:active{color:#2E2926}
@media (hover:hover){.eft-btn--fill:hover{color:#2E2926}}
.eft-btn--fill:active{color:#2E2926}
/* the ghost and dark variants' press (wireframe.css 178; the pair has no hover of its own) */
.btn.dark:active,.btn.ghost:active{color:#2E2926}
/* the drawer on the legacy pages carries no Dusty Rose hover or press (wireframe.css 365 to 368: the Book Now has no
   hover rule of its own, the Call hovers to Clay text with no fill), so nothing is restated for it here. */
/* the ORGANIC sticky bar's W9 A6 press (inc/book-bar.php, the <style id="ef-book-bar-css"> block, printed after the
   sheets, at (1,3,1): body:not(.ef-bar-always) #ef-book-bar .ef-book-bar-btn:hover, .ef-book-bar-call:hover and their
   :active, Dusty Rose fill with white text). One type selector more, (1,3,2), so a sheet rule wins over the later inline
   block. The PAID bar (body.ef-bar-always) already carries the W56 1b pair and is not matched. */
@media(max-width:880px){
  @media (hover:hover){
    body:not(.ef-bar-always) #ef-book-bar a.ef-book-bar-btn:hover{color:#2E2926}
    body:not(.ef-bar-always) #ef-book-bar a.ef-book-bar-call:hover{color:#2E2926}
  }
  body:not(.ef-bar-always) #ef-book-bar a.ef-book-bar-btn:active{color:#2E2926}
  body:not(.ef-bar-always) #ef-book-bar a.ef-book-bar-call:active{color:#2E2926}
}
/* Item (4): a .btn inside an .ef-page paragraph (seven legacy pages: /how-often-should-you-get-botox-in-your-40s/,
   /needle-vs-hyaluronic-pen/, /careers/, /earlobe-filler-cost-guide/, /fillers-for-smokers-lines/, /policies/,
   /botox-bruising/; the census read Graphite on Rosewood 3.05 on 119 rows) loses its white text to the theme's
   .ef-page p a{color:var(--graphite)} (wireframe.css 548, (0,1,2)) over .btn{color:#fff} (0,1,0), a pre-existing
   cascade defect. The filled primary takes its white text back at (0,5,2); the variants whose text is not white by
   design (.ghost white already, .ghost-rose Rosewood, .dark Graphite: the three .btn variants wireframe.css defines) are
   excluded, so no ghost or dark variant is re-coloured. The hover and press pair is restated at (0,6,2) so the item (2)
   value (Graphite on the Dusty Rose fill of .btn:hover and :active, wireframe.css 24, 25, 84, 85, 173 and 174) still wins
   over both the rest rule and the paragraph link's own Clay hover (wireframe.css 549 and 550, (0,2,2)). */
.ef-page p a.btn:not(.ghost):not(.ghost-rose):not(.dark){color:#fff}
@media (hover:hover){.ef-page p a.btn:not(.ghost):not(.ghost-rose):not(.dark):hover{color:#2E2926}}
.ef-page p a.btn:not(.ghost):not(.ghost-rose):not(.dark):active{color:#2E2926}
