/*
Theme Name: Astra Child
Theme URI: https://tinashah.org
Description: Child theme for tinashah.org. Exists so CSS survives Astra updates.
Author: DTI
Template: astra
Version: 1.0.0
Text Domain: astra-child
*/

/* ------------------------------------------------------------------------
   W19 · 2026-09-21 · RESTORE THE ANIMATED-HEADLINE LINE HEIGHT

   MEASURED, not guessed. On the live site the rotating/highlighted text inside an
   Animated Headline computes to 18px line-height - it inherits from its own heading.
   On Box A it computes to 80px, because a NEWER Elementor generates an extra rule:

       .elementor-widget-animated-headline .elementor-headline-dynamic-text
           { line-height: var( --e-global-typography-primary-line-height ); }

   and the Primary global typography's line height is 80px, meant for the big hero
   headline. Live's stylesheet does NOT contain that rule at all (it was generated on
   2026-09-08 under Elementor 4.1.1 / Pro 4.0.4; live now runs 4.2.3 / 4.2.1, so live is
   rendering from stylesheets its own plugin version no longer produces).
   ⛔ CORRECTED 2026-10-10 (CHANGES-MADE.md §107): the version explanation in the sentence above is
   WRONG - see the correction in the next block. Live's stylesheets were regenerated by its own
   Elementor 4.2.3 on 2026-10-06 and still lack this rule; the cause was ONE setting Box A lacked.

   Effect on the rebuilt page: nine card headings became 3-4x taller, words spread down
   the card, and the section grew by 237-605px depending on screen width.

   This restores the inherited value, which is what live shows.
   ⚠ NARROWED 2026-09-21: .elementor-widget-animated-headline .elementor-headline was REMOVED from
   this list. Neutralising it flattened the hero headline from its own 72px to an inherited
   111.43px and made the hero 39px too tall. Only the DYNAMIC TEXT inside it needs the earlier fix.
   REVERSAL: delete this block from the child theme's style.css.
   ------------------------------------------------------------------------ */
/* ⛔ RETIRED 2026-10-10 (queue step 3, agent SW, CHANGES-MADE.md §107) - COMMENTED OUT, NOT DELETED.
   Box A got Elementor's "Disable Default Fonts" on 2026-10-10 (§106), so Elementor no longer writes
   the 80px rule this countered. To switch it back on, remove this comment's opening and closing marks.
body .elementor-widget-animated-headline .elementor-headline-dynamic-text {
    line-height: inherit;
}
   END OF RETIRED RULE */

/* ------------------------------------------------------------------------
   W19 · 2026-09-21 · NEUTRALISE ELEMENTOR'S WIDGET-LEVEL GLOBAL TYPOGRAPHY

   MEASURED. Today's Elementor writes widget-wide rules that push the "Primary" global typography
   (Playfair, weight 900, line-height 80px - meant for the big hero headline) onto every heading,
   animated headline, icon-box title AND NAVIGATION MENU LINK that does not set its own.
   ⛔ THE FULL LIST, read off the generated CSS rather than guessed - the first version of this
   block named only four of them and MISSED THE MENU, which is why the footer came out 1,275px
   tall on a phone with its links 100px apart:

       .elementor-widget-heading .elementor-heading-title
       .elementor-widget-animated-headline .elementor-headline
       .elementor-widget-animated-headline .elementor-headline-dynamic-text
       .elementor-widget-icon-box .elementor-icon-box-title
       .elementor-widget-icon-box .elementor-icon-box-title a
       .elementor-widget-navigation-menu a.hfe-menu-item
       .elementor-widget-navigation-menu a.hfe-sub-menu-item

   MEASURED ON THE FOOTER MENU: Box A 80px line-height / 100px per item.
                                LIVE    18px line-height /  38px per item.
   Same font, same size, same padding. Live's stylesheet sets NO line-height on those links at
   all - it inherits - which is exactly what restoring `inherit` reproduces.

   The approved page's stylesheet contains ZERO of them, and so does the live site's - both were
   generated by Elementor 4.1.1 and have never been regenerated (live still runs stylesheets
   dated 2026-09-08 while its plugin is 4.2.3).
   ⚠ SO THIS IS NOT A BOX A FAULT. It is what the live page will ALSO look like the next time
   anything regenerates its CSS. Tested and ruled out: it is NOT the 4.2.3 -> 4.2.4 step;
   4.2.3 on Box A produces the same rules. The change happened between 4.1.1 and 4.2.x.

   ⛔⛔ CORRECTED 2026-10-10 (queue step 3, agent SW; CHANGES-MADE.md §106 and §107; evidence:
   research/W19-AGENT-REPORTS/ppcc-standard-20261010/LR-live-regen-risk.md). THE TWO CLAIMS ABOVE ARE
   WRONG. They are kept, not deleted, so the record of the mistake survives:
   (1) ~~"both were generated by Elementor 4.1.1 and have never been regenerated"~~ - 4.1.1 is the
       version the PPCC page was last SAVED with, not the one that wrote its stylesheet. Live's
       stylesheets were regenerated by its own Elementor 4.2.3 on 2026-10-06 (18:45-19:52 UTC) and they
       STILL contain none of these rules.
   (2) ~~"THIS IS NOT A BOX A FAULT ... what the live page will ALSO look like the next time anything
       regenerates its CSS ... The change happened between 4.1.1 and 4.2.x"~~ - it WAS a Box A fault:
       ONE site setting, Elementor's "Disable Default Fonts" (option
       elementor_disable_typography_schemes = yes), which live has and Box A never got (§41 carried the
       kit, the experiments and Astra's settings - not Elementor's site options). With it on, Elementor
       does not write these widget-wide "Primary" rules at all (core/files/css/post.php,
       build_global_controls_and_values). The 4.2.3 test could not tell version from setting because Box
       A lacked the setting on every version. Live after its regeneration, measured 2026-10-10: headings
       1.0 x / 1.25 x their size, none at 80px.
   Box A got the setting on 2026-10-10 (§106) and the rules below were RETIRED the same day (§107) -
   commented out, not deleted.

   Elements that set their own typography are scoped per element and outrank these, so they are
   untouched. Only the ones that were meant to inherit are restored.

   REVERSAL: delete this block from the child theme's style.css.
   ------------------------------------------------------------------------ */
/* ⛔ THE `body` PREFIX IS LOAD-BEARING, NOT DECORATION.
   Elementor's rules have the SAME specificity as these and are enqueued AFTER the child theme, so
   a plain copy of the selector LOSES the tie and changes nothing. The first attempt at the menu fix
   did exactly that: the CSS was on the box, the file was loaded, and the footer was still 1,275px
   tall. `body` adds one element to the selector and wins by specificity rather than by order. */
/* ⛔ RETIRED 2026-10-10 (CHANGES-MADE.md §107) - COMMENTED OUT, NOT DELETED. With "Disable Default
   Fonts" on (§106) the rules it countered are no longer written, and this `inherit` was itself
   the cause of the loose headings measured on every page (1.857 x the font size instead of live's
   1.0 / 1.25). To switch it back on, remove this comment's opening and closing marks.
body .elementor-widget-heading .elementor-heading-title,
body .elementor-widget-icon-box .elementor-icon-box-title,
body .elementor-widget-icon-box .elementor-icon-box-title a {
    font-weight: inherit;
    line-height: inherit;
    font-family: inherit;
}
   END OF RETIRED RULE */
/* W19 · 2026-10-10 (CHANGES-MADE.md §108) - THE ONE HEADING THE RETIREMENT ABOVE LEFT WRONG.
   PPCC's "Build Confidence" was an h2 on the approved page (Astra gives h1-h6 `line-height: 1em`) and was
   promoted to the page's <h1> on 2026-09-23 (§56). Without the `inherit` rule it took Astra's h1 setting, a
   FIXED 40px (`.elementor-widget-heading h1.elementor-heading-title{line-height:40px}`): a 90px heading in a
   40px line at 1920, crowding the header and the line below. This gives an Elementor h1 heading that sets NO
   line height of its own the same 1 x its size as every other heading level - the approved look.
   `body` makes it outrank Astra's rule; Elementor's own per-element setting still outranks this one
   (Executive's h1 sets its own line height at every width and is unchanged). */
body .elementor-widget-heading h1.elementor-heading-title {
    line-height: 1em;
}

/* ⛔ THE MENU NEEDS A VALUE, NOT `inherit`.
   MEASURED on LIVE: the footer link computes line-height 18px against font-size 18px - exactly 1.
   Its parent list item computes 25.4px on BOTH sites, so the link is NOT inheriting on live either;
   the menu plugin's own styling gives it 1. `inherit` here would produce 25.4px and leave the
   footer too tall - which is why this one is set explicitly and the others are not. */
/* ⛔ RETIRED 2026-10-10 (CHANGES-MADE.md §107) - COMMENTED OUT, NOT DELETED. With "Disable Default
   Fonts" on (§106) Elementor no longer gives menu links the 80px Primary line height; the menu
   plugin's own styling gives them 1, as on live. To switch it back on, remove this comment's marks.
body .elementor-widget-navigation-menu a.hfe-menu-item,
body .elementor-widget-navigation-menu a.hfe-sub-menu-item {
    font-weight: inherit;
    font-family: inherit;
    line-height: 1;
}
   END OF RETIRED RULE */


/* ========================================================================
   W19 · 2026-09-23 · FAULT 1 — HALF A MEGABYTE OF ICON FONT FOR EIGHT SMALL SHAPES

   MEASURED on the rebuilt PPCC page, twice (2026-09-21 audit, re-measured 2026-09-23):

       elementskit.woff      464,672 b   drawing  3 glyphs
       fa-solid-900.woff2    156,496 b   drawing  4 glyphs
       eicons.woff2          108,000 b   drawing  1 glyph
       ------------------------------------------------------
                             729,168 b   for EIGHT small shapes

   The 464 KB file is the single heaviest thing a visitor downloads on this page — 3.5x heavier
   than the video — and it is there to draw an 11x20px submenu chevron seventeen times.

   ⛔⛔ WHAT MUST NOT BE DONE ABOUT IT, AND IT IS WRITTEN DOWN BECAUSE IT LOOKS OBVIOUS:
   DO NOT UNINSTALL OR DEACTIVATE ElementsKit. research/W19-MIGRATE-CLEAN.md records that W1
   established removing it BREAKS THE SITE NAVIGATION ON EVERY PAGE — it supplies an icon font
   used INSIDE core widgets, which a widget-type census structurally cannot see. Both things are
   true at once: the plugin is load-bearing, AND 600 KB is being spent on one arrow.

   ★ WHAT THIS DOES: research/W19-REBUILD/subset_icon_fonts.py cuts each REAL font file down to
   the glyphs actually drawn, renames the family, and writes the result into this theme:

       elementskit.woff   464,672 b  ->  fonts/elementskit-subset.woff2     592 b
       fa-solid-900.woff2 156,496 b  ->  fonts/fa6-subset.woff2             892 b
       eicons.woff2       108,000 b  ->  fonts/eicons-subset.woff2        2,348 b
       ------------------------------------------------------------------------
                          729,168 b  ->                                   3,832 b      (-725,336)

   ★★ AND THE REASON THIS CANNOT BREAK A PAGE NOBODY HAS BUILT YET — read it before "tidying":
   ONLY THE CLASSES NAMED BELOW ARE POINTED AT THE SUBSET. Any other ElementsKit / Font Awesome /
   eicon glyph still asks for its ORIGINAL family, so the original font still downloads on the
   page that needs it and that icon still draws correctly. The worst case of a glyph this list
   forgot is that ONE PAGE KEEPS TODAY'S WEIGHT. The worst case is NOT an empty square.

   ⚠ WHEN A NEW PAGE IS BUILT: run the icon census (eleven_probe.py reports it), and if it names
   a glyph that is not below, add it to subset_icon_fonts.py and re-run. Missing one costs bytes,
   never correctness.

   ⚠ `font-weight: 100 1000` is load-bearing, not tidiness. Font Awesome's own CSS asks for
   weight 900. A single face declared at the default weight 400 would be SYNTHETICALLY EMBOLDENED
   by the browser and the icon would come out fatter than it is today. A weight RANGE matches
   exactly and switches synthesis off.

   REVERSAL: delete this block, the w19_subset_fonts() array in functions.php, and the three files
   in fonts/. The original fonts are untouched inside their plugins and come straight back.
   ======================================================================== */

/* ⛔ W19 · 2026-09-25 · SPEED STEP 1, F11 - THE THREE @font-face RULES THAT STOOD HERE NOW LIVE
   IN functions.php (w19_subset_fonts / w19_subset_fontface_css) AND ARE PRINTED AS INLINE CSS
   RIGHT AFTER THIS STYLESHEET, with the same families, weights and font-display.
   WHY: a relative `url('fonts/x.woff2')` in this file carries NO version - this stylesheet's own
   `?ver=` does not travel to it - so a re-cut subset reached a returning visitor only after the
   30-day browser cache ran out. From PHP, each font URL carries a hash of its own content.
   ⛔ Do not add an @font-face for a child-theme font back into this file. Add a line to the array. */

/* ⛔⛔ THE SELECTORS BELOW LOOK ABSURD AND THE REPETITION IS THE WHOLE POINT. MEASURED, TWICE.
   The first version was `body .icon-down-arrow1::before { font-family:'ek-subset' !important }`
   and it CHANGED NOTHING. `!important` was not enough: ElementsKit ships

       .ekit-wid-con .icon::before { font-family: elementskit !important; }

   which is TWO CLASSES and also !important. Against it, `body .icon-down-arrow1::before` is one
   element + one class, and CLASSES OUTRANK ELEMENTS - so the plugin won and the 464 KB font kept
   downloading while every automated check said the rule was present and parsed.
   ★ Chrome's own devtools protocol settled it: CSS.getMatchedStylesForNode listed BOTH rules as
   `important=true` and the plugin's on top. ⚠ A rule being IN the stylesheet, PARSED, and
   !important still does not mean it WINS. Ask the browser which one applies.
   Repeating the class (`.x.x`) raises specificity to two classes without depending on the element
   carrying any other class, and `html body` puts it ahead on top of that. */
html body .icon-down-arrow1.icon-down-arrow1::before,
html body .icon-right-arrow.icon-right-arrow::before,
html body .icon-menu-button-of-three-horizontal-lines.icon-menu-button-of-three-horizontal-lines::before,
html body .icon-arrow-right.icon-arrow-right::before,
html body .icon-management.icon-management::before,
html body .icon-business.icon-business::before,
html body .icon-Target.icon-Target::before,
html body .icon-brain.icon-brain::before,
html body .icon-tick.icon-tick::before,
html body .icon-graph-2.icon-graph-2::before,
html body .icon-laptop.icon-laptop::before,
html body .icon-consult.icon-consult::before {
    font-family: 'ek-subset' !important;
}
/* ⛔ W19 · 2026-10-10 (CHANGES-MADE.md §109) - `.icon-arrow-right` ADDED above. The glyph list was cut
   from PPCC's icons only; the census of every published page, pop-up and template on Box A found Home's
   icon list drawing it three times, so Home downloaded the whole 464,672-byte elementskit.woff for three
   arrows. elementskit-subset.woff2 re-cut with it: 592 -> 636 bytes. */
/* ⛔ W19 · 2026-10-13 (agent SITE, CHANGES-MADE.md - the SITE icon-font section) - EIGHT MORE ElementsKit glyphs
   ADDED above (management, business, Target, brain, tick, graph-2, laptop, consult): the census of every published
   page after the remaining-pages wave found About (365) and Corporate Training (459) drawing them as font glyphs, so
   both pages downloaded the whole 465,370-byte elementskit.woff. Codepoints read from the plugin's own ekiticons.css.
   elementskit-subset.woff2 re-cut with them: 636 -> 3,712 bytes. ElementsKit names its family on ::before only
   (.elementor-widget .icon::before), so no element rule is needed - the same as the four above. */
html body .fa-rocket.fa-rocket::before,
html body .fa-plus.fa-plus::before,
html body .fa-minus.fa-minus::before,
html body .fa-arrow-right.fa-arrow-right::before {
    font-family: 'fa6-subset' !important;
}
html body .eicon-close.eicon-close::before,
html body .eicon-play.eicon-play::before,
html body .eicon-chevron-left.eicon-chevron-left::before,
html body .eicon-chevron-right.eicon-chevron-right::before,
html body .eicon-caret-down.eicon-caret-down::before {
    font-family: 'eicons-subset' !important;
}

/* ⛔ AND THE ELEMENT ITSELF, NOT ONLY ITS ::before - MEASURED, BECAUSE THE FIRST ROUND MISSED IT.
   After the ::before overrides landed, `elementskit.woff` stopped downloading (464,972 bytes
   saved, confirmed on the network) but `fa-solid-900.woff2` and `eicons.woff2` kept coming down.
   The reason: Font Awesome's `.fas` and Elementor's `.eicon-close` declare the family on the
   <i> / <svg> ELEMENT as well, and Chrome still fetches a face that any laid-out element claims.
   These elements carry NO TEXT - the glyph is drawn by the ::before, which is already on the
   subset - so pointing the element at the subset too cannot change a single pixel. */
html body i.fa-rocket,
html body i.fa-plus,
html body i.fa-minus,
html body i.fa-arrow-right {
    font-family: 'fa6-subset' !important;
}
/* ⛔ W19 · 2026-10-10 (CHANGES-MADE.md §109) - A FOURTH SUBSET, found by the all-pages census:
   every Thank You page carries the Header Footer Elementor scroll-to-top button, an <i class="fas
   fa-chevron-up"> drawn from ELEMENTOR'S OWN Font Awesome 5 - the whole 78,196-byte fa-solid-900.woff2
   for one chevron. fonts/fa5-subset.woff2 (572 bytes) holds exactly that FA5 glyph, so nothing changes
   shape. The element rule is there for the same reason as the Font Awesome 6 one above. */
/* ⛔ W19 · 2026-10-13 (agent SITE) - `fa-quote-left` ADDED: Testimonials (386) draws 16 quote marks as
   <i class="fa fa-quote-left"> - Elementor icon widgets holding the old Font Awesome 4 value, drawn from this same
   FA5 solid font (`.fa,.fas { font-family: 'Font Awesome 5 Free' }` on the ELEMENT, hence the element rule) - so the
   whole 78 KB fa-solid-900.woff2 downloaded there for one shape. fa5-subset.woff2 re-cut: 572 -> 644 bytes.
   ⚠ Elementor's inline-SVG icons (class e-fas-quote-left) are not <i> elements and are not touched. */
html body .fa-chevron-up.fa-chevron-up::before,
html body i.fa-chevron-up,
html body .fa-quote-left.fa-quote-left::before,
html body i.fa-quote-left {
    font-family: 'fa5-subset' !important;
}
html body .eicon-close.eicon-close,
html body .eicon-close.eicon-close use,
html body .eicon-play.eicon-play,
html body .eicon-play.eicon-play use,
html body .eicon-chevron-left.eicon-chevron-left,
html body .eicon-chevron-right.eicon-chevron-right,
html body .eicon-caret-down.eicon-caret-down {
    font-family: 'eicons-subset' !important;
}


/* ========================================================================
   W19 · 2026-09-23 · FAULT 10 — "EIGHTEEN COLOUR-CONTRAST FAILURES"

   ⛔⛔ MOST OF THEM WERE NOT REAL, AND THIS IS WRITTEN DOWN RATHER THAN QUIETLY DROPPED.

   The audit of 2026-09-21 listed eighteen. On 2026-09-23 each named row was re-measured against
   the PIXELS THE BROWSER ACTUALLY PAINTS instead of against computed CSS, and the majority
   dissolved. Three separate instrument faults, all of the same family:

   1 · THE GREY SOCIAL ICONS — "Elementor's default grey #69727D on brand-coloured circles,
       reading as blank discs", five of them, one at a ratio of exactly 1.00.
       ⛔ NOT REAL. The first child of each social button is
       `<span class="elementor-screen-only">Facebook</span>` — invisible text for screen readers.
       THAT is what carries the grey. The glyph a person sees is a sibling `<svg>` whose computed
       `fill` is `rgb(255,255,255)` — white, and always was.
       ★ PROVEN TWICE, INDEPENDENTLY: (a) `fill` reads white before any change was made, and
       (b) a screenshot of the footer taken with the PRE-SESSION stylesheet injected back in came
       out BYTE-IDENTICAL to the current one — md5 3e8fb5a6ab31d690, 326,545 bytes, both.
       A change that alters nothing on screen cannot have fixed a visible fault.

   2 · THE FOOTER'S CONTACT ICONS — "salmon rgb(252,121,120) on blue, 1.46".
       ⛔ NOT REAL, same cause. They are `<svg class="e-font-icon-svg">` painting with
       `fill: rgb(255,255,255)`. `color` is inherited and never used.

   3 · "ALL FOOTER TEXT — white on rgb(41,130,244), 3.75, needs 4.5".
       ⛔ NOT REAL. rgb(41,130,244) is the footer section's `background-color`, but Elementor
       paints `> .elementor-background-overlay { background-color:#070101; opacity:0.7 }` on top
       of it. The colour a visitor actually sees, sampled from the screenshot, is rgb(17,40,74):
           0.3 × (41,130,244) + 0.7 × (7,1,1) = (17.2, 39.7, 73.9)   ✓ to the pixel
       White on rgb(17,40,74) is 14.7:1. It is one of the best-contrasted things on the page.
       ⚠ An earlier version of this file changed that blue to #2170DB to "fix" the 3.75. It was
       removed: it fixed nothing, it was a visible design change nobody asked for, and it did not
       even apply — Elementor's own selector `.elementor-element.elementor-element-f401a42`
       carries three classes and outranked it.

   ★ THE LESSON, because it will happen again on the other seventeen pages: A CONTRAST CHECKER
   THAT READS CSS IS READING WHAT THE PAGE DECLARES, NOT WHAT THE PAGE SHOWS. It cannot see that
   a colour belongs to invisible text, that an SVG paints with `fill` and ignores `color`, or that
   a 70%-black overlay sits between the text and the background it was compared against.
   `research/W19-REBUILD/eleven_probe.py` has been corrected for all three.

   ✅ WHAT WAS REAL, AND IS FIXED:
     · the hidden H1 at ratio 1.00 — dealt with by making it stop being an H1 (fault 2), not by
       recolouring invisible text;
     · "Skip to content" at 2.58 — salmon rgb(252,121,120) on white. This one is genuine: it is
       the FIRST thing a keyboard user meets, it is invisible until focused, and when it appears
       it is unreadable. Fixed below.
   ======================================================================== */
body .skip-link,
body .skip-link:focus,
body a.skip-link.screen-reader-text:focus,
body a.screen-reader-text:focus {
    background-color: var(--e-global-color-tffffff) !important;
    color: var(--e-global-color-t10233f) !important;
    outline: 3px solid var(--e-global-color-t2170db);
    outline-offset: 2px;
}


/* ========================================================================
   W19 · 2026-09-23 · FAULT 9 / FAULT 8 — CONTROLS TOO SMALL TO TAP

   MEASURED 2026-09-23 (with the instrument corrected first — its first version counted eight
   1x1 `.elementor-screen-only` spans, which are screen-reader text nobody taps, and chevrons
   inside menu links, where the finger hits the link):

       10 real failures — carousel pagination dots at 11x11 and 7x7.
       the popup's close button at 15x15 (27x27 on a phone).

   WCAG 2.2 wants 24px; 44px is comfortable on a phone. The before/after carousel is this page's
   strongest proof — if people cannot drive it on a phone they see slide one and leave.

   ★ THE DOT STAYS THE SIZE IT IS. What grows is the INVISIBLE AREA AROUND IT, via ::after. A
   bigger dot would be a design change; a bigger target is an accessibility fix.

   ⚠ AND THE HALF THAT IS EASY TO MISS: WCAG's own exception says an undersized target passes if
   a 24px circle around it does not touch the next one. Enlarging the hit areas WITHOUT spacing
   the dots would simply make neighbouring targets overlap and the wrong slide would open. So the
   spacing goes up too — and that IS a small visible change: the dots sit further apart.
   ======================================================================== */
/* ⚠ MEASURED, AND THE FIRST ATTEMPT ONLY DID HALF THE JOB.
   `body .swiper-pagination-bullet { margin: 0 7px }` left the dots 13px and 23px apart centre to
   centre, so the 24px tap areas OVERLAPPED and a thumb could open the wrong slide. WCAG 2.5.8's
   own spacing exception is the standard here: a 24px circle round one target must not reach the
   next one. 9px each side puts the 7px dots 25px apart and the 11px dots 29px apart.
   ⚠ It is a visible change: the dots sit further apart than they did. */
html body .swiper-pagination-bullet,
html body .elementor-swiper .swiper-pagination-bullet {
    position: relative;
    margin-left: 9px !important;
    margin-right: 9px !important;
}
html body .swiper-pagination-bullet::after {
    content: "";
    position: absolute;
    left: 50%;
    top: 50%;
    width: 26px;
    height: 26px;
    transform: translate(-50%, -50%);
    border-radius: 50%;
    /* invisible, but it is what the finger lands on */
    background: transparent;
}

/* The only lead form on the page is inside a popup, and the popup was closed by a 15px button. */
body .dialog-widget .dialog-close-button,
body .elementor-popup-modal .dialog-close-button {
    min-width: 32px;
    min-height: 32px;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-align: center;
    -ms-flex-align: center;
    align-items: center;
    -webkit-box-pack: center;
    -ms-flex-pack: center;
    justify-content: center;
    cursor: pointer;
}
body .dialog-widget .dialog-close-button:focus-visible,
body .elementor-popup-modal .dialog-close-button:focus-visible {
    outline: 3px solid var(--e-global-color-t2170db);
    outline-offset: 2px;
}

/* ========================================================================
   W19 · 2026-09-23 · FAULT 7 — the FAQ is now keyboard-operable (assets/w19-a11y.js).
   Focus has to be VISIBLE or "you can reach it with Tab" is a claim nobody can act on.
   ======================================================================== */
body .uc_ac_box > .uc-heading[role="button"] {
    cursor: pointer;
}
body .uc_ac_box > .uc-heading[role="button"]:focus-visible {
    outline: 3px solid var(--e-global-color-t2170db);
    outline-offset: 2px;
}


/* ========================================================================
   W19 · 2026-09-23 · FAULT 4 + 5 — CSS BACKGROUNDS BECOME REAL PICTURES.
   inc/w19-photos.php puts a real <img> where an inline background-image was.
   ⛔ THE BACKGROUND IS NOT JUST HIDDEN, IT IS GONE FROM THE HTML. If it were
   only covered, the browser would still download both files and this would
   COST weight instead of saving it.
   ======================================================================== */
.elementor-carousel-image.w19-imgified {
    position: relative;
    background-image: none !important;
    overflow: hidden;
}
.elementor-carousel-image.w19-imgified > img.w19-cimg {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    display: block;
    border-radius: inherit;
}
/* the play button and anything else in the slide stays ABOVE the picture */
.elementor-carousel-image.w19-imgified > *:not(img.w19-cimg) {
    position: relative;
    z-index: 1;
}

/* ------------------------------------------------------------------------
   The nine card photographs. The container used to BE the picture; now it
   holds one.

   ⛔⛔ THE CONTAINER HAS NO CLASS OF MINE ON IT, AND THAT IS NOT AN OVERSIGHT.
   `_css_classes` was written into the container's settings and Elementor 4.2.4
   DID NOT PRINT IT - the container renders as
       class="elementor-element elementor-element-bddba2b e-con-full e-flex e-con e-child"
   and nothing else. Measured in the served HTML: `w19-cardbox` appears 0 times.
   Without it the absolute positioning never applied, the picture fell into the
   flow, and the cards on a 1440 desktop DOUBLED IN HEIGHT with the photograph
   shrunk to a thumbnail in the corner. `look.py` reported 0 faults for that
   page - it measures crop and weight, not "does this card still look right".
   ★ ONLY THE SCREENSHOT CAUGHT IT. Again.

   So the container is reached through `:has()`, from the one class Elementor
   DOES print - the one on the image widget's own wrapper.
   ⚠ `:has()` needs Chrome 105+/Safari 15.4+/Firefox 121+ (all 2022-2023). The
   fallback below keeps the picture sane if a browser ignores the rule.
   ------------------------------------------------------------------------ */
.e-con:has( > .w19-card-photo ),
.elementor-element:has( > .w19-card-photo ) {
    position: relative;
    overflow: hidden;
}
.elementor-widget-image.w19-card-photo {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    width: 100%;
    height: 100%;
    margin: 0;
    padding: 0;
    z-index: 0;
}
.w19-card-photo .elementor-widget-container,
.w19-card-photo figure,
.w19-card-photo picture.w19-cardpic {
    display: block;
    width: 100%;
    height: 100%;
    margin: 0;
}
.w19-card-photo img {
    width: 100%;
    height: 100%;
    display: block;
    object-fit: cover;
    /* The desktop slot is near-square and the picture is square, so centre is
       right. On a phone a DIFFERENT, already letterbox-shaped file is served by
       <picture>, so there is nothing left to crop there. */
    object-position: 50% 50%;
}
/* Everything else in the card - the spacer that gives it height - stays above. */
.e-con:has( > .w19-card-photo ) > .elementor-element:not( .w19-card-photo ) {
    position: relative;
    z-index: 1;
}


/* ========================================================================
   W19 · 2026-09-23 (second pass) · THE LAST 108,300 BYTES OF ICON FONT.

   ⛔⛔ `eicons.woff2` KEPT DOWNLOADING AFTER FIVE GLYPHS WERE SUBSET, and the
   previous session recorded the cause as UNRESOLVED. It is resolved now, and
   the reason it hid is worth more than the bytes:

     THE ELEMENT THAT PULLS IT HAS NO `eicon-` CLASS ON IT.
     Elementor Pro's own custom-frontend.min.css says, on a SELECTOR:
         .elementor-field-group .elementor-select-wrapper::before
             { content:"\e92a"; font-family: eicons }
         .elementor-message::before
             { content:"\e90e"; font-family: eicons }
     Every override written so far was class-based
     (`html body .eicon-caret-down.eicon-caret-down::before { … }`), so it could
     never reach a rule that names the family directly on a different selector.
     ★ An override keyed on a CLASS cannot see a rule keyed on a SELECTOR.

   ⛔ AND WHY THREE SESSIONS MEASURED ZERO AND BELIEVED IT: the one <select> on
   this page is inside the lead-capture popup, which opens ON SCROLL. A browser
   fetches a font only when something that needs it is actually painted. A probe
   that loaded the page and did not scroll reported "no element claims eicons",
   which reads exactly like "there is nothing here".
   ★ AT 1440 WITHOUT SCROLLING: 0 requests. AFTER SCROLLING: 1, 108,300 bytes.

   ⚠ The glyph is NOT removed - it is pointed at the 2,828-byte subset, which
   contains caret-down, the message tick and the danger cross. Nothing visible
   changes; a form message and a dropdown arrow still draw.
   ======================================================================== */
html body .elementor-field-group .elementor-select-wrapper::before,
html body .elementor-message::before,
html body .elementor-message.elementor-message-danger::before {
    font-family: 'eicons-subset' !important;
}


/* ========================================================================
   W19 · 2026-09-26 · IN-PAGE LINKS LAND BELOW THE STICKY HEADER (CHANGES-MADE.md §78)

   THE FAULT: "See Transformations" and every page-guide link in popup 69 scrolled to the right
   section, but on a laptop or desktop the section's top landed UNDER the sticky header, hiding
   the top of its heading. MEASURED in real Chrome before this rule: at 1920 the "Before & After"
   heading sat 56 px under the header; at 1440, 86 px. Of the 9 page-guide targets, 5 were
   hidden at 1920 (3 more cleared the header by only 3-4 px) and 8 were hidden at 1440.

   WHY THIS WORKS HERE: this Elementor version scrolls to a same-page #link NATIVELY (the browser
   does the jump, with `scroll-behavior: smooth`), and `scroll-padding-top` on <html> is the
   browser's own "leave this much room at the top" for exactly that jump. Nothing on the page
   moves; only where an in-page jump stops changes.

   ⛔ THE NUMBERS ARE MEASURED, NOT ASSUMED - and one value would have been wrong:
      - this site's breakpoints are CUSTOM: phone <= 800, tablet <= 1100, laptop <= 1450
        (read from Elementor's own frontend config, not the defaults)
      - the sticky bar (header template 112, container b47745b) exists only at 1101 px and wider;
        phones and tablets have a header that does not stick, so NO rule applies below 1101
      - its height WHILE STUCK is 126.53 px at 1101-1450 (measured at 1101, 1280, 1440, 1450)
        and 96.53 px at 1451+ (measured at 1451 and 1920). Rounded UP.
      - a LOGGED-IN viewer (the owner previewing) has WordPress's 32 px admin bar on top, and
        Elementor Pro's own sticky code parks the bar under it - so +32 px for them only.
        (`:has()` is ignored by very old browsers; they simply get the visitor value.)

   ⚠ IF THE HEADER'S HEIGHT CHANGES, THESE NUMBERS MUST CHANGE WITH IT. Re-measure with
     research/W19-REBUILD/anchor_offset_probe.py (it prints the stuck header's real height and
     where each in-page link lands, per width).
   ⚠ DO NOT ALSO SET ELEMENTOR'S OWN "Anchor Offset" on the sticky header container
     (setting `sticky_anchor_link_offset`). It adds a scroll-margin to each target, and the two
     offsets ADD UP - the heading would land twice as far down.

   REVERSAL: delete this block from the child theme's style.css and deploy.
   ======================================================================== */
/* ⛔ W19 · 2026-10-12 (CHANGES-MADE.md §117) - RE-MEASURED AFTER §106-§108 TIGHTENED THE HEADER.
   The values below were ~~127px (1101-1450) / 97px (1451+), +32 logged in~~, measured 2026-09-26 for a stuck
   header 126.53 / 96.53 px tall. After the heading fix the stuck header measures 88 px at 1101-1450 and 93 px at 1451+ (measured 2026-10-12 at 1101/1280/1440/1450 and 1451/1920 on PPCC, Home and Executive),
   so at laptop width every in-page jump landed ~38 px lower than it needed to. Same rule: the stuck header's
   height rounded UP, +32 px for a logged-in viewer (WordPress's admin bar). Re-measure with
   research/W19-AGENT-REPORTS/ppcc-standard-20261010/SW-work/jump_probe.py if the header changes again. */
@media (min-width: 1101px) and (max-width: 1450px) {
    html { scroll-padding-top: 88px; }
    html:has(> body.admin-bar) { scroll-padding-top: 120px; }
}
@media (min-width: 1451px) {
    html { scroll-padding-top: 93px; }
    html:has(> body.admin-bar) { scroll-padding-top: 125px; }
}

/* ========================================================================
   W19 · 2026-10-09 · THE ROTATING HEADLINE MADE THE PAGE WIDER THAN A PHONE (CHANGES-MADE.md §100)

   THE FAULT (blind check of 2026-10-09, finding 2): Executive Leadership measured up to 745 px wide on a
   390 px phone and 913-922 px on a 768 px one, so the page could be dragged sideways and some phones
   shrink it to fit. Measured with real fonts in phone emulation.
   THE CAUSE, read in Elementor Pro's own stylesheet (widget-animated-headline.min.css) and measured:
   every rotating word is `position:absolute; inset-inline-start:0` - parked at the LEFT edge of the
   visible word, with non-breaking spaces - and the "slide" animation pushes the outgoing word out to the
   RIGHT. So a hidden word longer than the visible one, and every word on its way out, hangs past the
   right edge of the screen (Executive: "Articulate Thoughts" parked to 745 px at 390).
   THE FIX: clip SIDEWAYS ONLY, at the page's top-level band that holds a rotating headline. Measured on
   Home, Executive Leadership and PPCC at 390, 768, 1024, 1440 and 1920: that band is exactly as wide as
   the screen (left 0, right = screen width), so it cuts only what the screen already cut - nothing a
   visitor can see changes. NOT at the headline's own box: Home's headline box is narrower than the screen
   (30-370 px at 390) and its words slide in from beyond that box, so clipping there WOULD change Home.
   `overflow-x: clip` does not make a scroll box (unlike `hidden`), so up/down, sticky elements and margins
   are untouched. Home's band already has `overflow: hidden` from its own class; there `clip` computes to
   `hidden`, i.e. no change.
   ⚠ `:has()` needs Chrome/Edge 105+, Safari 15.4+, Firefox 121+, and `overflow: clip` Safari 16+; an older
     browser ignores the rule and behaves exactly as before.
   ⚠ Inherited by every page with a rotating ("rotate" style) headline, including the pages still to be
     built. A rotating headline inside an embedded template or a pop-up is clipped at THAT document's
     top-level band (none exist today).
   REVERSAL: delete this block from the child theme's style.css and deploy (or restore
   _reversals/2026-10-09/layout-fixes/astra-child/style.css).
   ======================================================================== */
.elementor > .elementor-element:has(.elementor-headline--style-rotate) {
    overflow-x: clip;
}

/* ========================================================================
   W19 · 2026-10-14 · agent SITE · the lead's fix round (10-FIX-ROUND.md, SITE 3 and 4)
   FLOATING WHATSAPP: the button inc/w19-whatsapp.php prints on pages that lack one. Every number below was MEASURED on
   PPCC's own button (b81f4df) at 1920 / 1440 / 1024 / 768 / 390 (SITE-work/wa/ppcc-wa.json); a browser preview of About
   with this block matched PPCC's button exactly at all five widths. Change PPCC's button, re-run SITE-work/wa/gen_css.py.
   POP-UP 67: at <= 800 px its close x sat on the fixed round menu button (30 x 32 px overlap at 390); moved to the box's
   top-left corner (0 overlap measured). Desktop unchanged.
   ======================================================================== */
/* FLOATING WHATSAPP - generated by SITE-work/wa/gen_css.py from PPCC's measured button (b81f4df) */
.w19-wa-float{position:fixed;z-index:99;line-height:0;margin:0;padding:0}
.w19-wa-float__a{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;border-radius:100px;background-color:rgb(37, 211, 102);text-decoration:none}
.w19-wa-float__a svg{fill:var(--e-global-color-tffffff);display:block}
.w19-wa-float{right:43px;bottom:106px}.w19-wa-float__a{width:56px;height:56px}.w19-wa-float__a svg{width:28px;height:28px}
@media (max-width:1450px){.w19-wa-float{right:61px;bottom:99px}.w19-wa-float__a{width:50px;height:50px}.w19-wa-float__a svg{width:25px;height:25px}}
@media (max-width:1100px){.w19-wa-float{right:41px;bottom:97px}.w19-wa-float__a{width:48px;height:48px}.w19-wa-float__a svg{width:24px;height:24px}}
@media (max-width:800px){.w19-wa-float{right:2px;bottom:95px}.w19-wa-float__a{width:46px;height:46px}.w19-wa-float__a svg{width:23px;height:23px}}
/* POP-UP 67 CLOSE BUTTON - phones only: from the top-right corner (where it lands on the fixed round menu button) to the top-left corner */
@media (max-width:800px){#elementor-popup-modal-67 .dialog-close-button{right:auto !important;inset-inline-end:auto !important;left:6px !important;inset-inline-start:6px !important}}

/* ------------------------------------------------------------------------
   W19 · 2026-10-21 · agent SPAM's request (CHANGES-MADE.md, the honeypot section): the honeypot field's empty
   wrapper kept Elementor's 10 px row gap, so every form was 8-11 px taller. Hidden the way Elementor hides its
   own hidden fields (.elementor-field-type-hidden{display:none}). The field still exists and still submits.
   ------------------------------------------------------------------------ */
.elementor-field-type-honeypot{display:none !important}

/* ========================================================================================================
   W19 · 2026-10-21 · agent DESIGN · THE DETAIL FIXES THAT LIVE IN THE THEME (CHANGES-MADE.md, DESIGN's
   step-2 section). Every colour here is a design token (an Elementor Global Colour of kit post 13), so a
   colour change made with research/W19-REBUILD/design_tokens.py --set reaches these rules too.
   ======================================================================================================== */

/* 1. NO LONE LAST WORD. Agent DETAIL counted 163 headings ending with one word alone on its last line,
      mostly on phones. Headings balance their lines; paragraphs avoid an orphan. A browser that does not
      know text-wrap simply ignores it (nothing breaks). The rotating Animated Headline is left alone: its
      words change width while it runs. */
.elementor-widget-heading .elementor-heading-title,
.elementor-widget-text-editor h1, .elementor-widget-text-editor h2,
.elementor-widget-text-editor h3, .elementor-widget-text-editor h4,
.elementor-widget-icon-box .elementor-icon-box-title,
.elementor-widget-image-box .elementor-image-box-title,
.elementor-widget-call-to-action .elementor-cta__title {
    text-wrap: balance;
}
.elementor-widget-text-editor p, .elementor-widget-text-editor li,
.elementor-icon-box-description, .elementor-image-box-description {
    text-wrap: pretty;
}

/* 2. THE MENU MARKS THE PAGE YOU ARE ON - also for a page reached through a drop-down. WordPress marks a
      menu item only when its own link IS the page (Contact, About, Corporate, Home). The programme pages sit
      inside the drop-downs' panels, so nothing was marked there; their drop-down is now drawn the way
      ElementsKit draws the current item (black words). Menu items 79 Professionals & Business Owners
      (Executive Leadership, PPCC) · 80 Student Programs (Personality Development). */
body.page-id-312 .elementskit-navbar-nav > li.menu-item-79 > a,
body.page-id-65  .elementskit-navbar-nav > li.menu-item-79 > a,
body.page-id-424 .elementskit-navbar-nav > li.menu-item-80 > a {
    color: var(--e-global-color-t000000) !important;
}

/* 3. THE POP-UP CLOSE X NEVER SITS OVER A FIELD. On a short screen a form pop-up scrolls INSIDE itself and
      the X stayed put, so the fields slid under it (lead's finding; measured at 1536x639: the X covered a
      field after ~450 px of scrolling). The X now has its own band in the pop-up's own navy, and the
      scrolling part starts below it. Only pop-ups that hold a form are touched. */
.elementor-popup-modal .dialog-widget-content:has(.elementor-field-group) {
    max-height: 100vh;
    background-color: var(--e-global-color-t003366);
}
.elementor-popup-modal .dialog-widget-content:has(.elementor-field-group) > .dialog-message {
    margin-top: 56px;
    max-height: calc(100vh - 56px);
}

/* 4. THE HERO'S BUTTONS ON THE FIRST SCREEN OF A SHORT LAPTOP (1536x639 = a 1080p laptop at 125 %;
      1366x657). The hero is SHORTENED there - smaller gaps and a smaller headline - and nothing is hidden.
      Measured before: Executive's buttons 88 px (1536x639) and 18 px (1366x657) below the fold; Home's
      6 px below at 1536x639. Taller screens are untouched (max-height). */
@media (min-width: 1451px) and (max-height: 760px) {
    [data-id="622b572"] { padding-top: 50px !important; }
}
@media (min-width: 1101px) and (max-height: 760px) {
    .elementor-312 .elementor-element.elementor-element-d98f8cf { padding-top: 6px !important; }
    .elementor-312 .elementor-element.elementor-element-6f5bfd8 { margin-bottom: 6px !important; }
    .elementor-312 .elementor-element.elementor-element-056b747 { margin-top: 0 !important; }
    .elementor-312 .elementor-element.elementor-element-056b747 .elementor-heading-title { font-size: min(70px, 10.5vh) !important; }
    .elementor-312 .elementor-element.elementor-element-c1dd60f .elementor-headline { font-size: min(56px, 8.4vh) !important; }
    .elementor-312 .elementor-element.elementor-element-592c882 { margin-bottom: 10px !important; }
    .elementor-312 .elementor-element.elementor-element-3dbaa15 { margin-top: 4px !important; }
}

/* 5. READING PAGES (Privacy, Terms, Cookie, Refund, Leadership Weekly Exercise). Their body text is in
      PPCC's body face (set on the widget, class w19-reading); a line holds about 70 characters (DETAIL
      measured 100-138), and their section headings are drawn in the site's sub-heading face. */
.w19-reading > .elementor-widget-container { max-width: 70ch; }
.w19-reading h1, .w19-reading h2, .w19-reading h3, .w19-reading h4 {
    font-family: var(--e-global-typography-f0cc4bd-font-family), Sans-serif;
    font-weight: 700;
    line-height: 1.3;
}

/* 6. THE HOME HERO'S V4 BUTTONS carry the site's arrow like every other button (the arrow is the same
      ekiticons glyph, drawn by the theme's own icon subset - no new download). Elementor prints a V4
      global class by its LABEL (Btn-Primary = g-db42e86), not by its id. */
.e-button-base.Btn-Primary::after {
    content: "\e9c5";
    font-family: 'ek-subset';
    font-weight: normal;
    font-style: normal;
    display: inline-block;
    margin-left: 15px;
    font-size: .95em;
    line-height: 1;
}

/* 7. COLOURS DRAWN INSIDE UPLOADED ICON FILES follow the design tokens too. Two icons uploaded on 2026-10-13 carry
      their yellow INSIDE the file (Yellow-Star.svg #FEE600; Circle-Tick-Mark.svg's tick #F8C029 - its grey circle
      #4B4A43 is the icon's own drawing and is left). Elementor draws them inline, so the yellow parts are pointed at
      their tokens here: the same colour today, and a colour change made in the kit or with design_tokens.py --set
      reaches them. (Found by agent DESIGN's yellow check: they were the only yellows a kit change would not move.) */
svg path[fill="#fee600" i] { fill: var(--e-global-color-tfee600); }
svg path[fill="#f8c029" i] { fill: var(--e-global-color-tf8c029); }

/* ========================================================================================================
   W19 · 2026-10-21 · agent FIX-LOOK · THE BLIND LOOK CHECK'S FAULTS THAT LIVE IN THE THEME
   (research/W19-AGENT-REPORTS/verify-20261021/V-LOOK.md; CHANGES-MADE.md, FIX-LOOK's section). Every colour is a
   design token (an Elementor Global Colour of kit post 13), so design_tokens.py --set reaches these rules too.
   ======================================================================================================== */

/* F1. THE READING-PROGRESS BAR (template 165 inside a sticky box on Home, PPCC, Executive, Personality Development,
       Corporate and About) was a 20 px grey band pinned to the BOTTOM of the screen, over the page's words. It is now a
       4 px line in Accent Yellow at the very TOP edge, drawn over the header's own white padding - never over
       content - and with no grey track, so on arrival there is nothing at all, not an empty strip. */
.e-con:has(> .elementor-widget-template .elementor-widget-progress-tracker) {
    position: fixed !important;
    top: 0 !important;
    bottom: auto !important;
    left: 0 !important;
    right: auto !important;
    width: 100% !important;
    height: 4px !important;
    min-height: 0 !important;
    margin: 0 !important;
    padding: 0 !important;
    z-index: 1000 !important;
    pointer-events: none;
    background: transparent !important;
}
.elementor-sticky__spacer:has(.elementor-widget-progress-tracker) { display: none !important; }
.elementor-widget-progress-tracker .elementor-scrolling-tracker {
    height: 4px !important;
    background-color: transparent !important;
    border: 0 !important;
    border-radius: 0 !important;
    box-shadow: none !important;
    padding: 0 !important;
}
.elementor-widget-progress-tracker .elementor-scrolling-tracker .current-progress {
    height: 4px !important;
    background-color: var(--e-global-color-accent) !important;
    border-radius: 0 !important;
}
.elementor-widget-progress-tracker .current-progress-percentage { display: none !important; }

/* F2. THE PHONE AND TABLET HEADER (up to 1100 px; the laptop header above that is untouched): the institute's logo
       and name on the left (a container w19-mlogo added to the header's phone row, header template 112), the phone
       number, and the menu button against the right edge (it floated ~170 px short of it at 768). The header now
       stays at the top while the page scrolls: position sticky keeps its own place in the page, so nothing jumps and
       nothing below it is covered. */
@media (max-width: 1100px) {
    .elementor-location-header {
        position: sticky;
        top: 0;
        z-index: 990;
    }
    .elementor-location-header .elementor-element-dc1b6e0,
    .elementor-location-header .elementor-element-dc1b6e0 > .e-con-inner {
        flex-wrap: nowrap !important;
        align-items: center !important;
    }
    .elementor-location-header .w19-mlogo {
        width: auto !important;
        flex: 0 0 auto !important;
        flex-direction: row !important;
        flex-wrap: nowrap !important;
        align-items: center !important;
        gap: 6px !important;
        margin: 0 !important;
        padding: 0 !important;
    }
    .elementor-location-header .w19-mlogo .elementor-widget-image { width: 40px !important; max-width: 40px !important; margin: 0 !important; }
    .elementor-location-header .w19-mlogo .elementor-widget-image img { width: 40px !important; height: auto !important; display: block; }
    .elementor-location-header .w19-mlogo .elementor-widget-heading { width: auto !important; margin: 0 !important; }
    .elementor-location-header .w19-mlogo .elementor-heading-title { font-size: 12px !important; line-height: 1.15 !important; }
    .elementor-location-header .elementor-element-f5f86d3 {
        width: auto !important;
        flex: 1 1 auto !important;
        min-width: 0;
        margin: 0 0 0 4px !important;
        padding: 0 !important;
        align-self: center !important;
    }
    .elementor-location-header .elementor-element-f5f86d3 .elementor-icon-list-items { justify-content: flex-end; }
    .elementor-location-header .elementor-element-2a3ae2e {
        margin: 0 0 0 8px !important;
        flex: 0 0 auto !important;
    }
}
@media (max-width: 400px) {
    .elementor-location-header .elementor-element-f5f86d3 .elementor-icon-list-icon { display: none !important; }
}

/* F3. A BUTTON NEVER RUNS PAST ITS OWN BOX. On a phone a button's box could be wider than the space its widget was given,
       and ran past the screen's edge (PPCC 390: "See Transformations" ended at x = 406 of 390; PPCC's two hero buttons
       now stack on a phone, in the page data). A safety net for every page built later: a button is never wider
       than its widget. */
@media (max-width: 800px) {
    .elementor-widget-button .elementor-button { max-width: 100%; }
}

/* F4. ENQUIRY POP-UPS (every pop-up that holds a form: the six form pop-ups and the four exit pop-ups).
       (a) The page behind is dimmed - the same wash the exit pop-ups already used (token tb0b6b6b2), so both kinds
           now behave alike. The floating WhatsApp button and Home's guide bar go UNDER the wash.
       (b) On a laptop the form starts BELOW the menu bar (it covered the menu's words at 1440) and scrolls inside
           itself if the screen is short (DESIGN's rule 3 keeps the close X in its own band).
       (c) On a phone the pop-up uses the screen's width (it was 323 px of 390, and 323 px of 768): the submit button
           stays on one line and the e-mail example fits in its box. */
.elementor-popup-modal:has(.elementor-field-group) {
    background-color: var(--e-global-color-tb0b6b6b2) !important;
}
.w19-wa-float { z-index: 98 !important; }
@media (min-width: 1101px) {
    .elementor-popup-modal:has(.elementor-field-group) {
        padding-top: var(--w19-head-h, 96px);
        padding-bottom: 8px;
        box-sizing: border-box;
    }
    .elementor-popup-modal .dialog-widget-content:has(.elementor-field-group) {
        max-height: calc(100vh - var(--w19-head-h, 96px) - 8px) !important;
    }
    .elementor-popup-modal .dialog-widget-content:has(.elementor-field-group) > .dialog-message {
        max-height: calc(100vh - var(--w19-head-h, 96px) - 8px - 56px) !important;
    }
}
@media (max-width: 800px) {
    .elementor-popup-modal .dialog-widget-content:has(.elementor-field-group) {
        width: min(calc(100vw - 24px), 520px) !important;
    }
    .elementor-popup-modal .dialog-widget-content:has(.elementor-field-group) > .dialog-message { width: 100% !important; }
    .elementor-popup-modal .elementor-widget-form { width: 100% !important; max-width: 100% !important; }
    .elementor-popup-modal .elementor-field-group .elementor-button[type="submit"] {
        padding-left: 16px !important;
        padding-right: 16px !important;
    }
    .elementor-popup-modal .elementor-field-group .elementor-button[type="submit"] .elementor-button-text {
        white-space: nowrap;
    }
    .elementor-popup-modal .elementor-field-group input[type="email"] {
        padding-left: 10px !important;
        padding-right: 10px !important;
    }
}
/* (d) An e-mail address is never drawn with capital letters: the exit pop-ups capitalised every field, so the example
       read "John@Gmail.Com" and an address being typed looked wrong too (what is SENT was never changed - this is
       only how it is drawn). */
.elementor-popup-modal .elementor-field-group input[type="email"],
.elementor-popup-modal .elementor-field-group input[type="email"]::placeholder { text-transform: none !important; }

/* F5. THE PAGE-GUIDE POP-UPS (298 Home, 69 PPCC, 309 Executive, 421 Personality Development, 409 Corporate):
       on a phone they were 169 px wide and the close X sat on the end of the first line ("Before & Afte X").
       They are wider there and the X has its own row above the list. */
@media (max-width: 800px) {
    #elementor-popup-modal-298 .dialog-widget-content, #elementor-popup-modal-69 .dialog-widget-content,
    #elementor-popup-modal-309 .dialog-widget-content, #elementor-popup-modal-421 .dialog-widget-content,
    #elementor-popup-modal-409 .dialog-widget-content {
        width: min(240px, calc(100vw - 40px)) !important;
    }
}
#elementor-popup-modal-298 .dialog-message, #elementor-popup-modal-69 .dialog-message,
#elementor-popup-modal-309 .dialog-message, #elementor-popup-modal-421 .dialog-message,
#elementor-popup-modal-409 .dialog-message {
    padding-top: 30px;
}

/* F6. HOME, "How Do I Start My / TRANSFORMATION": the yellow box's top padding covered the tail of the "y" above it
       (it read "Start Mv" at 1440). The highlighted word now starts a little lower; nothing else moves. */
.elementor-301 .elementor-element-bc70dc2 .elementor-heading-title > span {
    display: inline-block;
    margin-top: .18em;
    line-height: 1.1;
}

/* F7. UNLIMITED ELEMENTS CARD CAROUSELS (Corporate's four hero cards): every card in a row is as tall as the tallest,
       so the cards line up instead of ending at four different heights. */
.uc_classic_carousel .owl-stage { display: flex; }
.uc_classic_carousel .owl-item { display: flex; float: none; }
.uc_classic_carousel .owl-item > .uc_classic_carousel_container_holder { display: flex !important; width: 100%; }
.uc_classic_carousel .owl-item .ue-carousel-item { width: 100%; height: 100%; }

/* F8. READING PAGES: DESIGN's 70-character line (rule 5) never reached Leadership Weekly Exercise or Privacy - their
       text sits directly in the widget (Elementor's lean markup prints no widget-container box), so lines ran to
       ~128 characters. The width now applies to the widget itself, centred in its column. Two "Date of Exercise" values were set by hand at
       16 px inside 18 px text; they follow the text now. */
.elementor-widget.w19-reading { max-width: 70ch !important; margin-left: auto !important; margin-right: auto !important; }
/* Leadership Weekly Exercise: the two class tabs (~555 px) sat over a box 1,180 px wide. The tabs and their box now
   share one readable width, and the two tabs share it equally, so their edges line up with the box. */
@media (min-width: 801px) {
    .elementor-396 .elementor-element-cf4c316 { max-width: 960px; margin-left: auto; margin-right: auto; }
    .elementor-396 .elementor-element-cf4c316 .e-n-tabs-heading { justify-content: stretch; }
    .elementor-396 .elementor-element-cf4c316 .e-n-tab-title { flex: 1 1 auto; justify-content: center; white-space: nowrap; }
}
.w19-reading span[style*="font-size: 16px"] { font-size: inherit !important; }

/* F9. A CALL-TO-ACTION BUTTON'S WORDS STAY ON ONE LINE ON A LAPTOP (Corporate's "Book Your Free Consultation" wrapped
       onto two lines at 1440 while the button beside it did not). Phones may still wrap a long button. */
@media (min-width: 801px) {
    .elementor-widget-ucaddon_creative_buttons .uc_button,
    .elementor-widget-ucaddon_creative_buttons .uc_button span { white-space: nowrap; }
}

/* F10. FOOTER: the Instagram mark is drawn from an uploaded picture that has its own empty margin, so it looked
        smaller than the three Font Awesome marks beside it. It is drawn at the same visible size now. */
.elementor-element-bced3bf .elementor-repeater-item-1da635e svg { transform: scale(1.35); }

/* F11. A BUTTON THAT OPENS WHATSAPP (the five Thank You pages' "Chat With Us") shows the WhatsApp mark at the height
        of its words - the uploaded mark has wide empty margins and drew as a 15 x 10 px dot. */
.elementor-button[href*="wa.me"] .elementor-button-icon svg { width: 2.6em; height: auto; margin: -0.6em -0.4em; }

/* F12. A BUTTON'S WORDS BREAK INTO EVEN LINES when they must break on a phone - never one word alone on the last line
        ("See The Difference That We / Make" on the Thank You pages). */
.elementor-button-text, .uc_button span { text-wrap: balance; }

/* F13. HOME'S TWO HERO BUTTONS (Elementor V4 buttons) stay on one line on a phone; the arrow of "Explore The Right
        Program For You" used to drop to a line of its own. Slightly narrower side padding and letter spacing there. */
@media (max-width: 800px) {
    .e-button-base { white-space: nowrap; padding-left: 16px !important; padding-right: 16px !important; letter-spacing: .5px !important; }
}

/* F14. (agent FINISH-LOOK, 2026-10-22) CORPORATE'S HERO CARDS ON A WIDE PHONE OR SMALL TABLET (600-800 px). Once the
        hero stacks there (F7's section, CHANGES-MADE.md §229 #7) the four cards stretched to ~315 px wide but kept
        their 104 px photo, so look.py measured 18 photos 40-67 % cut away (faults at 768: 15 -> 33). The cards now sit
        in a 500 px column, like the phone layout, with a 150 px photo: every photo is under 35 % hidden. */
@media (min-width: 600px) and (max-width: 800px) {
    .elementor-459 .elementor-element-2679320 { max-width: 500px; }
    .elementor-459 .elementor-element-9935010 .uc_classic_carousel_placeholder img,
    .elementor-459 .elementor-element-4c1684c .uc_classic_carousel_placeholder img { height: 150px !important; }
}

/* F15. (FINISH-LOOK) EXECUTIVE'S FOUR HERO BULLETS: on a 600-800 px screen they were pinned to the left under a centred
        hero - they now sit in a centred 380 px column; on a laptop the first bullet broke into three lines with
        "meetings" alone - the block is 940 px wide there and every bullet's lines are balanced, so all four take two. */
.elementor-312 .elementor-element-fae6985 .elementor-icon-list-text { text-wrap: balance; }
@media (min-width: 1101px) { .elementor-312 .elementor-element-fae6985 > .e-con-inner { max-width: 940px; } }
@media (max-width: 800px) { .elementor-312 .elementor-element-fae6985 > .e-con-inner { max-width: 380px; margin-left: auto; margin-right: auto; } }

/* F16. (FINISH-LOOK) THE PHONE AND TABLET MENU in the site's colours: a Navy Ink panel, Cream words, the page you are on
        in Accent Yellow (it was grey, so it looked switched off), sub-menus on Navy Deep, thin dividers, and the arrows
        and the close box outlined in Cream - it was a plain light-grey panel with none of the site's colours. */
.elementor-element-2a3ae2e .elementskit-menu-offcanvas-elements { background-color: var(--e-global-color-primary) !important; }
.elementor-element-2a3ae2e .elementskit-menu-offcanvas-elements .elementskit-navbar-nav > li > a { color: var(--e-global-color-text) !important; }
.elementor-element-2a3ae2e .elementskit-menu-offcanvas-elements .elementskit-navbar-nav > li.current-menu-item > a,
.elementor-element-2a3ae2e .elementskit-menu-offcanvas-elements .elementskit-navbar-nav > li.current-menu-ancestor > a,
.elementor-element-2a3ae2e .elementskit-menu-offcanvas-elements .elementskit-dropdown li.current-menu-item > a { color: var(--e-global-color-accent) !important; }
.elementor-element-2a3ae2e .elementskit-menu-offcanvas-elements .elementskit-submenu-indicator { color: var(--e-global-color-text) !important; border-color: color-mix(in srgb, var(--e-global-color-text) 55%, transparent) !important; }
.elementor-element-2a3ae2e .elementskit-menu-offcanvas-elements .elementskit-dropdown { background-color: var(--e-global-color-t00114b) !important; }
.elementor-element-2a3ae2e .elementskit-menu-offcanvas-elements .elementskit-dropdown a { color: var(--e-global-color-text) !important; font-size: 15px !important; }
.elementor-element-2a3ae2e .elementskit-menu-offcanvas-elements .elementskit-menu-close { color: var(--e-global-color-text) !important; border-color: color-mix(in srgb, var(--e-global-color-text) 55%, transparent) !important; border-radius: 6px; }
.elementor-element-2a3ae2e .elementskit-menu-offcanvas-elements .elementskit-navbar-nav > li + li { border-top: 1px solid color-mix(in srgb, var(--e-global-color-text) 12%, transparent); }

/* F17. (FINISH-LOOK) ABOUT AND CORPORATE, "WE SPECIALIZE IN": on a 600-800 px screen the 14 cards stood in one 320 px
        column with wide empty sides; they now sit three to a row in a 740 px block, as on a tablet. */
@media (min-width: 600px) and (max-width: 800px) {
    .elementor-365 .elementor-element-3d62320, .elementor-365 .elementor-element-b765ee1,
    .elementor-365 .elementor-element-61b63f2, .elementor-365 .elementor-element-fb5cd62,
    .elementor-459 .elementor-element-b02371f, .elementor-459 .elementor-element-619bc93,
    .elementor-459 .elementor-element-206e2b7, .elementor-459 .elementor-element-5e6c2af { --content-width: 740px !important; }
    .elementor-365 .elementor-element-3d62320 > .e-con-inner > .e-con, .elementor-365 .elementor-element-b765ee1 > .e-con-inner > .e-con,
    .elementor-365 .elementor-element-61b63f2 > .e-con-inner > .e-con, .elementor-365 .elementor-element-fb5cd62 > .e-con-inner > .e-con,
    .elementor-459 .elementor-element-b02371f > .e-con-inner > .e-con, .elementor-459 .elementor-element-619bc93 > .e-con-inner > .e-con,
    .elementor-459 .elementor-element-206e2b7 > .e-con-inner > .e-con, .elementor-459 .elementor-element-5e6c2af > .e-con-inner > .e-con { --width: 30% !important; }
}

/* F18. (FINISH-LOOK) HOME, "HOW DO I START MY TRANSFORMATION": the first step box was pale blue on pale lavender and
        barely showed as a box; all four get a thin Navy Ink edge (16 %). (Their laptop width is page data, 301 a75219a.) */
.elementor-301 .elementor-element-9ee89b0 .elementor-heading-title, .elementor-301 .elementor-element-40a4478 .elementor-heading-title,
.elementor-301 .elementor-element-c3c897a .elementor-heading-title, .elementor-301 .elementor-element-25a91dc .elementor-heading-title {
    border: 1px solid color-mix(in srgb, var(--e-global-color-primary) 16%, transparent);
}

/* F19. (FINISH-LOOK) THE THANK YOU PAGES' SCROLL-TO-TOP BUTTON (Header Footer Elementor's) was plain black, the only
        black button on the site; it is Navy Ink with a Cream arrow, like the round page-guide button. */
.hfe-scroll-to-top-button { background-color: var(--e-global-color-primary) !important; color: var(--e-global-color-text) !important; border: 2px solid color-mix(in srgb, var(--e-global-color-text) 35%, transparent); }
.hfe-scroll-to-top-button i, .hfe-scroll-to-top-button svg { color: var(--e-global-color-text) !important; fill: var(--e-global-color-text) !important; }

/* F20. (FINISH-LOOK) HOME'S HERO LINE "With Tina Shah & Dynamic Training Institute" sits over the moving video and was
        hard to read where the footage is bright; a soft Navy Ink shadow behind its letters. (Moving the line was
        measured and rejected: it pushed the hero buttons 76 px down, below the first screen of a 1536 x 639 laptop.) */
.elementor-301 [data-id="ce729e0"] { text-shadow: 0 1px 10px color-mix(in srgb, var(--e-global-color-primary) 85%, transparent); }

/* F21. (FINISH-LOOK) THE FOUR LEGAL PAGES' TITLES line up with their text. The text column is 70 characters of the body
        face (F8); the title's box was 800 px, so it began 36-56 px to the left of the words below it. The title's box
        now measures 70 characters of the SAME face and size as the text (the title's own lettering is unchanged). */
.elementor-3 .elementor-element-f4a32fc, .elementor-390 .elementor-element-b4d66c5,
.elementor-392 .elementor-element-405c6b3, .elementor-394 .elementor-element-2340820 {
    font-family: var(--e-global-typography-21d51e8-font-family), sans-serif; font-size: 18px;
    max-width: 70ch !important; margin-left: auto !important; margin-right: auto !important;
}
@media (max-width: 1100px) {
    .elementor-3 .elementor-element-f4a32fc, .elementor-390 .elementor-element-b4d66c5,
    .elementor-392 .elementor-element-405c6b3, .elementor-394 .elementor-element-2340820 { font-size: 17px; }
}
@media (max-width: 800px) {
    .elementor-3 .elementor-element-f4a32fc, .elementor-390 .elementor-element-b4d66c5,
    .elementor-392 .elementor-element-405c6b3, .elementor-394 .elementor-element-2340820 { font-size: 16px; }
}

/* F22. (FINISH-LOOK) FOOTER: the "About Us" sentence ran to the very edge of its column, so on a laptop "her" touched
        "Trusted By" in the next column; 28 px of room on its right. */
@media (min-width: 801px) { .elementor-113 .elementor-element-67b3ff1 { padding-right: 28px; } }

/* =====================================================================================================================
   W19 · 2026-10-22 · agent FIX1024 · THE TABLET RANGE (801-1100 px: a small laptop or a landscape tablet).
   research/W19-AGENT-REPORTS/build-20261021/FIX1024.md; CHANGES-MADE.md, FIX1024's section. Nothing here reaches a
   phone (<= 800 px) or a laptop (>= 1101 px).
   ===================================================================================================================== */

/* F23. (agent FIX1024) ABOUT, CORPORATE AND PERSONALITY DEVELOPMENT - THE CARD PHOTOS WERE THIN SLIVERS ON A TABLET.
        The card rows were held to a narrow block (760 px; PD 700 px) even on a 1024 px screen, so each square photo
        was squeezed into a 77-93 px wide strip, 32-45 % of it cut away. The rows now use the room there is (up to
        the laptop's 1000 px). From 801 to 950 px About's and Corporate's text is too long to sit beside the photo, so
        each card shows its words with the photo underneath (as on a 768 px tablet), the photo 4:3 and all cards in a
        row the same height. PD's cards (a short heading only) keep the photo beside the words; from 801 to 950 px each
        card is a third of the row and the photo column 48 %. Measured: at most 26 % of any card photo hidden
        anywhere from 801 to 1100 px (it was up to 45 %). */
@media (min-width: 801px) and (max-width: 1100px) {
    .elementor-365 .elementor-element-3d62320,
    .elementor-365 .elementor-element-b765ee1,
    .elementor-365 .elementor-element-61b63f2,
    .elementor-365 .elementor-element-fb5cd62,
    .elementor-459 .elementor-element-b02371f,
    .elementor-459 .elementor-element-619bc93,
    .elementor-459 .elementor-element-206e2b7,
    .elementor-459 .elementor-element-5e6c2af,
    .elementor-424 .elementor-element-f223f7a { --content-width: min(1000px, calc(100% - 40px)) !important; }
}
@media (min-width: 801px) and (max-width: 950px) {
    .elementor-365 .elementor-element-3d62320 > .e-con-inner,
    .elementor-365 .elementor-element-b765ee1 > .e-con-inner,
    .elementor-365 .elementor-element-61b63f2 > .e-con-inner,
    .elementor-365 .elementor-element-fb5cd62 > .e-con-inner,
    .elementor-459 .elementor-element-b02371f > .e-con-inner,
    .elementor-459 .elementor-element-619bc93 > .e-con-inner,
    .elementor-459 .elementor-element-206e2b7 > .e-con-inner,
    .elementor-459 .elementor-element-5e6c2af > .e-con-inner { align-items: stretch !important; }
    .elementor-365 .elementor-element-3d62320 > .e-con-inner > .e-con,
    .elementor-365 .elementor-element-b765ee1 > .e-con-inner > .e-con,
    .elementor-365 .elementor-element-61b63f2 > .e-con-inner > .e-con,
    .elementor-365 .elementor-element-fb5cd62 > .e-con-inner > .e-con,
    .elementor-459 .elementor-element-b02371f > .e-con-inner > .e-con,
    .elementor-459 .elementor-element-619bc93 > .e-con-inner > .e-con,
    .elementor-459 .elementor-element-206e2b7 > .e-con-inner > .e-con,
    .elementor-459 .elementor-element-5e6c2af > .e-con-inner > .e-con { flex-wrap: wrap !important; }
    .elementor-365 .elementor-element-3d62320 > .e-con-inner > .e-con > .e-con,
    .elementor-365 .elementor-element-b765ee1 > .e-con-inner > .e-con > .e-con,
    .elementor-365 .elementor-element-61b63f2 > .e-con-inner > .e-con > .e-con,
    .elementor-365 .elementor-element-fb5cd62 > .e-con-inner > .e-con > .e-con,
    .elementor-459 .elementor-element-b02371f > .e-con-inner > .e-con > .e-con,
    .elementor-459 .elementor-element-619bc93 > .e-con-inner > .e-con > .e-con,
    .elementor-459 .elementor-element-206e2b7 > .e-con-inner > .e-con > .e-con,
    .elementor-459 .elementor-element-5e6c2af > .e-con-inner > .e-con > .e-con { --width: 100% !important; }
    .elementor-365 .elementor-element-3d62320 > .e-con-inner > .e-con > .e-con:has(> .w19-card-photo),
    .elementor-365 .elementor-element-b765ee1 > .e-con-inner > .e-con > .e-con:has(> .w19-card-photo),
    .elementor-365 .elementor-element-61b63f2 > .e-con-inner > .e-con > .e-con:has(> .w19-card-photo),
    .elementor-365 .elementor-element-fb5cd62 > .e-con-inner > .e-con > .e-con:has(> .w19-card-photo),
    .elementor-459 .elementor-element-b02371f > .e-con-inner > .e-con > .e-con:has(> .w19-card-photo),
    .elementor-459 .elementor-element-619bc93 > .e-con-inner > .e-con > .e-con:has(> .w19-card-photo),
    .elementor-459 .elementor-element-206e2b7 > .e-con-inner > .e-con > .e-con:has(> .w19-card-photo),
    .elementor-459 .elementor-element-5e6c2af > .e-con-inner > .e-con > .e-con:has(> .w19-card-photo) { margin-top: auto; aspect-ratio: 4 / 3; height: auto !important; }
    .elementor-365 .elementor-element-3d62320 > .e-con-inner > .e-con > .e-con > .w19-card-photo,
    .elementor-365 .elementor-element-b765ee1 > .e-con-inner > .e-con > .e-con > .w19-card-photo,
    .elementor-365 .elementor-element-61b63f2 > .e-con-inner > .e-con > .e-con > .w19-card-photo,
    .elementor-365 .elementor-element-fb5cd62 > .e-con-inner > .e-con > .e-con > .w19-card-photo,
    .elementor-459 .elementor-element-b02371f > .e-con-inner > .e-con > .e-con > .w19-card-photo,
    .elementor-459 .elementor-element-619bc93 > .e-con-inner > .e-con > .e-con > .w19-card-photo,
    .elementor-459 .elementor-element-206e2b7 > .e-con-inner > .e-con > .e-con > .w19-card-photo,
    .elementor-459 .elementor-element-5e6c2af > .e-con-inner > .e-con > .e-con > .w19-card-photo,
    .elementor-365 .elementor-element-3d62320 > .e-con-inner > .e-con > .e-con > .w19-card-photo img,
    .elementor-365 .elementor-element-b765ee1 > .e-con-inner > .e-con > .e-con > .w19-card-photo img,
    .elementor-365 .elementor-element-61b63f2 > .e-con-inner > .e-con > .e-con > .w19-card-photo img,
    .elementor-365 .elementor-element-fb5cd62 > .e-con-inner > .e-con > .e-con > .w19-card-photo img,
    .elementor-459 .elementor-element-b02371f > .e-con-inner > .e-con > .e-con > .w19-card-photo img,
    .elementor-459 .elementor-element-619bc93 > .e-con-inner > .e-con > .e-con > .w19-card-photo img,
    .elementor-459 .elementor-element-206e2b7 > .e-con-inner > .e-con > .e-con > .w19-card-photo img,
    .elementor-459 .elementor-element-5e6c2af > .e-con-inner > .e-con > .e-con > .w19-card-photo img { width: 100% !important; height: 100% !important; }
}
@media (min-width: 801px) and (max-width: 950px) {
    .elementor-424 .elementor-element-0f97945 > .e-con { --width: calc((100% - 70px) / 3) !important; }
    .elementor-424 .elementor-element-0f97945 > .e-con > .e-con:has(> .w19-card-photo) { --width: 48% !important; }
}

/* F24. (FIX1024) THE HEADER MENU BROKE FROM 1025 TO 1100 px ON EVERY PAGE. The phone/tablet header (shown up to
        1100 px) uses ElementsKit's menu, which switches from the menu button to the full menu at its own fixed
        1024 px. So at 1025-1100 the full menu wrapped into three rows over the page, and its hidden drop-down lists
        made every page 67 px wider than the screen. Below: ElementsKit's OWN <=1024 px rules (copied by
        FIX1024-work/gen_menu_css.py from its nav-menu.css, version 4.0.5), kept to this one menu (2a3ae2e) and to
        1025-1100 px, plus a reset of its three desktop drop-down rules. Proven: closed, opened and with a sub-menu
        open, every element of the menu at 1051 and 1100 px has the same computed style as at 1024 px.
        ⚠ If ElementsKit is updated, re-run gen_menu_css.py against its new nav-menu.css. */
@media (min-width: 1025px) and (max-width: 1100px) {
.elementor-element-2a3ae2e .elementskit-navbar-nav-default .elementskit-dropdown-has>a .elementskit-submenu-indicator.ekit-spinner{padding:4px 4px;margin-right:10px}
.elementor-element-2a3ae2e .elementskit-navbar-nav-default .elementskit-dropdown-has>a .elementskit-submenu-indicator{padding:4px 15px}
.elementor-element-2a3ae2e .elementskit-navbar-nav-default .elementskit-dropdown-has>a svg.elementskit-submenu-indicator{width:auto;height:auto;max-width:42px;max-height:42px}
.elementor-element-2a3ae2e .ekit_menu_responsive_tablet>.elementskit-navbar-nav-default{background-color:#f7f7f7}
.elementor-element-2a3ae2e .elementskit-navbar-nav-default.elementskit-menu-offcanvas-elements{width:100%;position:fixed;top:0;left:-100vw;height:100%;-webkit-box-shadow:0 10px 30px 0 rgba(255,165,0,0);box-shadow:0 10px 30px 0 rgba(255,165,0,0);overflow-y:auto;overflow-x:hidden;padding-top:0;padding-left:0;padding-right:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;-webkit-transition:left .6s cubic-bezier(.6,.1,.68,.53);transition:left .6s cubic-bezier(.6,.1,.68,.53)}
.elementor-element-2a3ae2e .elementskit-navbar-nav-default .no-scroller{overflow:hidden}
.elementor-element-2a3ae2e .elementskit-navbar-nav-default .elementskit-nav-identity-panel{display:block;position:relative;z-index:5;width:100%}
.elementor-element-2a3ae2e .elementskit-navbar-nav-default .elementskit-nav-identity-panel .elementskit-site-title{float:left}
.elementor-element-2a3ae2e .elementskit-navbar-nav-default .elementskit-nav-identity-panel button.elementskit-menu-close{float:right}
.elementor-element-2a3ae2e .elementskit-navbar-nav-default .elementskit-navbar-nav>li>a{color:#000;font-size:12px;-webkit-transition:all .4s ease;transition:all .4s ease;padding-top:5px;padding-left:10px;padding-right:5px;padding-bottom:5px}
.elementor-element-2a3ae2e .elementskit-navbar-nav-default .elementskit-navbar-nav>li>a:hover{color:#0d3a4f}
.elementor-element-2a3ae2e .elementskit-navbar-nav-default .elementskit-navbar-nav>li:hover>a{color:#0d3a4f}
.elementor-element-2a3ae2e .elementskit-navbar-nav-default .elementskit-submenu-panel>li>a{color:#000;font-size:12px;padding-top:7px;padding-left:7px;padding-right:7px;padding-bottom:7px}
.elementor-element-2a3ae2e .elementskit-navbar-nav-default .elementskit-dropdown{display:block;border:0;margin-left:0}
.elementor-element-2a3ae2e .elementskit-navbar-nav-default .elementskit-megamenu-panel{display:none}
.elementor-element-2a3ae2e .elementskit-navbar-nav-default .elementskit-navbar-nav>.elementskit-dropdown-has>.elementskit-dropdown li a{padding-left:15px}
.elementor-element-2a3ae2e .ekit_menu_responsive_tablet .elementskit-navbar-nav-default .elementskit-megamenu-has.elementskit-mobile-builder-content .elementskit-dropdown{display:none}
.elementor-element-2a3ae2e .ekit_menu_responsive_tablet .elementskit-navbar-nav-default .elementskit-megamenu-has.elementskit-mobile-builder-content .elementskit-megamenu-panel.elementskit-dropdown-open{display:block}
.elementor-element-2a3ae2e .ekit_menu_responsive_tablet .elementskit-navbar-nav-default .elementskit-megamenu-panel.elementskit-dropdown-open{display:block}
.elementor-element-2a3ae2e .ekit_menu_responsive_tablet .elementskit-navbar-nav-default .elementskit-dropdown{display:none}
.elementor-element-2a3ae2e .ekit_menu_responsive_tablet .elementskit-navbar-nav-default .elementskit-dropdown~.elementskit-megamenu-panel{display:none}
.elementor-element-2a3ae2e .ekit_menu_responsive_tablet .elementskit-navbar-nav-default .elementskit-dropdown.elementskit-dropdown-open{display:block;max-height:2500px;opacity:1;visibility:visible;-webkit-transition:max-height 5s ease-out;transition:max-height 5s ease-out}
.elementor-element-2a3ae2e .ekit_menu_responsive_tablet .elementskit-navbar-nav-default .elementskit-navbar-nav{overflow-y:auto}
.elementor-element-2a3ae2e .ekit_menu_responsive_tablet .elementskit-navbar-nav-default .elementskit-dropdown>li>.elementskit-dropdown{left:0}
.elementor-element-2a3ae2e .elementskit-menu-overlay{display:block;position:fixed;z-index:14;top:0;left:-100%;height:100%;width:100%;background-color:rgba(51,51,51,.5);-webkit-transition:all .4s ease;transition:all .4s ease;opacity:1;visibility:visible;-webkit-transition:all .6s cubic-bezier(.6,.1,.68,.53) .4s;transition:all .6s cubic-bezier(.6,.1,.68,.53) .4s}
.elementor-element-2a3ae2e button.elementskit-menu-hamburger{border:1px solid rgba(0,0,0,.2);float:right}
.elementor-element-2a3ae2e button.elementskit-menu-hamburger .elementskit-menu-hamburger-icon{background-color:rgba(0,0,0,.5)}
.elementor-element-2a3ae2e button.elementskit-menu-close,.elementor-element-2a3ae2e button.elementskit-menu-hamburger{padding:8px;background-color:transparent;border-radius:.25rem;position:relative;z-index:10;cursor:pointer;width:45px;-webkit-transition:all .4s ease-in;transition:all .4s ease-in}
.elementor-element-2a3ae2e button.elementskit-menu-close .elementskit-menu-hamburger-icon,.elementor-element-2a3ae2e button.elementskit-menu-hamburger .elementskit-menu-hamburger-icon{height:1px;width:100%;display:block;margin-bottom:4px}
.elementor-element-2a3ae2e button.elementskit-menu-close .elementskit-menu-hamburger-icon:last-child,.elementor-element-2a3ae2e button.elementskit-menu-hamburger .elementskit-menu-hamburger-icon:last-child{margin-bottom:0}
.elementor-element-2a3ae2e .elementskit-navbar-nav .ekit-menu-badge{font-size:7px}
.elementor-widget-ekit-nav-menu.elementor-element-2a3ae2e{-webkit-animation:none!important;animation:none!important}
.elementor-element-2a3ae2e .ekit-wid-con:not(.ekit_menu_responsive_mobile) .elementskit-navbar-nav{display:block}
.elementor-element-2a3ae2e button.elementskit-menu-close,.elementor-element-2a3ae2e button.elementskit-menu-hamburger{display:block}
.elementor-element-2a3ae2e .elementskit-menu-container{max-width:350px}
.elementor-element-2a3ae2e .elementskit-menu-overlay.active{left:0;-webkit-transition:all .6s cubic-bezier(.22,.61,.24,1) 0s;transition:all .6s cubic-bezier(.22,.61,.24,1) 0s}
.elementor-element-2a3ae2e .elementskit-menu-offcanvas-elements{height:100%!important}
.elementor-element-2a3ae2e .elementskit-menu-offcanvas-elements.active{left:0}
.elementor-element-2a3ae2e .elementskit-menu-offcanvas-elements{padding-bottom:10px}
.elementor-element-2a3ae2e .elementskit-dropdown{position:relative;max-height:0;-webkit-box-shadow:none;box-shadow:none;-webkit-transition:max-height 2s cubic-bezier(0,1,0,1);transition:max-height 2s cubic-bezier(0,1,0,1)}
.elementor-element-2a3ae2e .ekit_menu_responsive_tablet .ekit-menu-badge{position:static;margin-left:10px;-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1;-webkit-transform:none;transform:none}
.elementor-element-2a3ae2e .ekit_menu_responsive_tablet .ekit-menu-badge>.ekit-menu-badge-arrow{display:none}
.elementor-element-2a3ae2e .ekit_menu_responsive_tablet .elementskit-navbar-nav-default .elementskit-dropdown-has>a .elementskit-submenu-indicator{margin-left:auto}
.elementor-element-2a3ae2e .ekit_menu_responsive_tablet .elementskit-submenu-indicator{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2;border:1px solid;border-radius:30px}
.elementor-element-2a3ae2e .elementskit-navbar-nav-default .elementskit-dropdown,.elementor-element-2a3ae2e .ekit-nav-dropdown-hover .elementskit-dropdown-has .elementskit-dropdown{position:relative;top:auto;-webkit-transform:none;transform:none;pointer-events:auto;max-height:0;z-index:auto;-webkit-box-shadow:none;box-shadow:none}

}

/* F25. (FIX1024) ABOUT, "WE'VE SEEN IT HAPPEN THOUSANDS OF TIMES": the three columns were a fixed 430 + 50 + 430 px,
        wider than the tablet's box, so at 801-860 px the yellow boxes ran off the screen ("Teams" cut) and up to
        1100 px the block sat right of centre. The two outer columns now share the room equally. */
@media (min-width: 801px) and (max-width: 1100px) {
    .elementor-365 .elementor-element-9b2a397 { grid-template-columns: minmax(0, 1fr) 50px minmax(0, 1fr) !important; }
}


/* ============================================================================================================
   W19 · 2026-10-22 · agent FIXR2-POP · THE ENQUIRY POP-UPS FIT THE WINDOW ON A LAPTOP OR DESKTOP (1101 px and up).
   Blind check R2-LOOK, fault 1: on a 1920-wide screen the logo inside the six form pop-ups (Home 296, PPCC 68,
   Executive 308, Personality Development 419, Contact 367, Corporate 408) drew 354 x 354 px, so the submit button sat
   below the pop-up's edge (300-378 px of the form hidden at 1920 x 900; 31-79 px at 1101-1440 x 900, where the 786 px
   photo set the height). Only those six two-column pop-ups are reached (`.elementor-top-column` = a section's column);
   the exit pop-ups (297, 66, 318, 420) are single containers with no such column. Phones and tablets (<= 1100 px) are
   untouched. Words, fields, form settings, triggers and tracking are untouched - this is drawing only.
   PPCC 68 and Executive 308 carry one field more (8 rows of 64 px) than the other four, so the tiers are set by them.
   ============================================================================================================ */
/* F26. (FIXR2-POP) The logo takes the laptop size (86 px, Elementor's own 20 %) on every wide screen; the photo is
        never taller than the room the pop-up has and shrinks WHOLE (contain - it is a collage of three photos, so it
        is never cropped); when the form must scroll, a column starts at its top instead of being centred above the
        scroll start, where the logo could not be reached (`safe center` = exactly today's centring whenever it fits). */
@media (min-width: 1101px) {
    .elementor-popup-modal .dialog-widget-content:has(.elementor-field-group) .elementor-top-column:has(.elementor-widget-form) .elementor-widget-image img {
        max-width: 86px !important;
        height: auto !important;
    }
    .elementor-popup-modal .dialog-widget-content:has(.elementor-field-group) .elementor-top-column:not(:has(.elementor-widget-form)) .elementor-widget-image img {
        max-height: calc(100vh - var(--w19-head-h, 96px) - 8px - 56px + 15px);
        object-fit: contain;
    }
    .elementor-popup-modal .dialog-widget-content:has(.elementor-field-group) .elementor-top-column > .elementor-widget-wrap {
        align-content: safe center !important;
    }
}
/* F27. (FIXR2-POP) A window up to 1040 px tall: the form column's empty 10 % bands above and below (~47 px each) become
        32 / 10 px - the close X already has its own 56 px band above (DESIGN rule 3), and the section's own -25 px top
        margin takes 25 of the 32, so the logo starts ~7 px below that band and is never cut by it. */
@media (min-width: 1101px) and (max-height: 1040px) {
    .elementor-popup-modal .dialog-widget-content:has(.elementor-field-group) .elementor-top-column:has(.elementor-widget-form) > .elementor-widget-wrap {
        padding-top: 32px !important;
        padding-bottom: 10px !important;
    }
}
/* F28. (FIXR2-POP) A window up to 960 px tall: the logo is 56 px and the gap between the form's rows is 6 px (was 10),
        so the whole form, its button and the social icons fit at 900 px tall. */
@media (min-width: 1101px) and (max-height: 960px) {
    .elementor-popup-modal .dialog-widget-content:has(.elementor-field-group) .elementor-top-column:has(.elementor-widget-form) .elementor-widget-image img {
        max-width: 56px !important;
    }
    .elementor-popup-modal .dialog-widget-content:has(.elementor-field-group) .elementor-top-column:has(.elementor-widget-form) .elementor-field-group {
        margin-bottom: 6px !important;
    }
    .elementor-popup-modal .dialog-widget-content:has(.elementor-field-group) .elementor-top-column:has(.elementor-widget-form) .elementor-form-fields-wrapper {
        margin-bottom: -6px !important; /* Elementor offsets the last row's gap with -10 px; it must follow the gap */
    }
}
/* F29. (FIXR2-POP) A window under 900 px tall (a 1366 x 768 laptop, a 1080p laptop at 125 %): the logo is 44 px, the
        gap between the form's rows 4 px, and the Instagram / Facebook / LinkedIn row is left out of the pop-up - exactly
        as the pop-up itself already does on tablets and phones - so the whole form and its button fit at 800 px tall. Below that the form scrolls inside the
        pop-up, under the close X's band, and the button is reached by scrolling. */
@media (min-width: 1101px) and (max-height: 899px) {
    .elementor-popup-modal .dialog-widget-content:has(.elementor-field-group) .elementor-top-column:has(.elementor-widget-form) .elementor-widget-image img {
        max-width: 44px !important;
    }
    .elementor-popup-modal .dialog-widget-content:has(.elementor-field-group) .elementor-top-column:has(.elementor-widget-form) .elementor-widget-icon-box {
        display: none !important;
    }
    .elementor-popup-modal .dialog-widget-content:has(.elementor-field-group) .elementor-top-column:has(.elementor-widget-form) .elementor-field-group {
        margin-bottom: 4px !important;
    }
    .elementor-popup-modal .dialog-widget-content:has(.elementor-field-group) .elementor-top-column:has(.elementor-widget-form) .elementor-form-fields-wrapper {
        margin-bottom: -4px !important;
    }
    .elementor-popup-modal .dialog-widget-content:has(.elementor-field-group) .elementor-top-column:has(.elementor-widget-form) > .elementor-widget-wrap {
        padding-bottom: 4px !important;
    }
}


/* ============================================================================================================
   W19 · 2026-10-24 · agent REVIEW-SITE · NIMIT'S REVIEW OF 2026-10-24 (research/W19-AGENT-REPORTS/build-20261021/
   NIMIT-REVIEW-20261024.md): R13 the enquiry pop-ups fit the window, R15 phones get the small card photo, R16 the
   page-guide box can never cover the BE MORE strip. Repository copy first; pushed alone (this one file).
   ============================================================================================================ */

/* R13. EVERY ENQUIRY POP-UP SHOWS WHOLE, IN ONE VIEW, AND FILLS A BIG SCREEN SENSIBLY.
        Nimit, 2026-10-24: "You just reduced the size but the goal was that popup must be visible in one go right and not
        logo size?" Measured before (the lead's Chrome and agent REVIEW-SITE's probe, 1536 x 639 = a 1080p laptop at
        125 %): PPCC's pop-up 68 was pushed 96 px down below the menu bar, then lost a 56 px band to the close X, so 7 field
        rows of 72 px and a 70 px button needed 774 px in a 639 px window - the submit button sat 135 px below the screen -
        while half the window was empty. F26-F29 above only shrank the LOGO in steps.
        NOW, on a laptop or desktop (1101 px wide and up, at least 520 px tall): the pop-up is centred in the WHOLE window
        with a 2 % margin (it covers the menu like any dialog; the page behind stays dimmed), the close X sits in the box's
        corner over empty space (no band), and EVERY size - box width, label and field text, field height, row gaps, button,
        logo, the exit pop-ups' heading - grows and shrinks with the window's HEIGHT between a readable floor (13 px field
        text at 639 tall) and a ceiling for a 2560 x 1440 monitor. The photo column is laid over its column and shrinks
        WHOLE (contain - never cropped), so it can never make the pop-up taller. Measured with these rules (all ten pop-ups,
        12 window sizes): no pop-up scrolls and every submit button is inside the window. Below 520 px tall the earlier
        rules (rule 3, F4, F26-F29) still apply: the form scrolls inside the pop-up under the X's band.
        ⛔ Words, fields, form settings, triggers, tracking and the failure message (w19-form-fail-message.php, which scrolls
        a message into view INSIDE .dialog-message) are untouched - .dialog-message still scrolls if a message makes the
        form taller than the window. */
@media (min-width: 1101px) and (min-height: 520px) {
    .elementor-popup-modal:has(.elementor-field-group) {
        padding-top: 2vh !important;
        padding-bottom: 2vh !important;
        align-items: center !important;
    }
    .elementor-popup-modal .dialog-widget-content:has(.elementor-field-group) {
        max-height: 96vh !important;
        height: auto !important;
    }
    .elementor-popup-modal .dialog-widget-content:has(.elementor-field-group) > .dialog-message {
        margin-top: 0 !important;
        max-height: 96vh !important;
        height: auto !important;
        width: 100% !important;
    }
    .elementor-popup-modal .dialog-widget-content:has(.elementor-field-group) .dialog-close-button {
        top: clamp(8px, 1.6vh, 22px) !important;
    }
    /* the fields, in both kinds of pop-up */
    .elementor-popup-modal .dialog-widget-content:has(.elementor-field-group) .elementor-field-label {
        font-size: clamp(13px, calc(1.1vh + 6px), 22px) !important;
        line-height: 1.3 !important;
        padding-bottom: 2px !important;
    }
    .elementor-popup-modal .dialog-widget-content:has(.elementor-field-group) .elementor-field-textual {
        font-size: clamp(13px, calc(0.9vh + 7px), 20px) !important;
        line-height: 1.4 !important;
        padding-top: clamp(6px, calc(1.3vh - 1px), 15px) !important;
        padding-bottom: clamp(6px, calc(1.3vh - 1px), 15px) !important;
        min-height: 0 !important;
    }
    .elementor-popup-modal .dialog-widget-content:has(.elementor-field-group) .elementor-select-wrapper select {
        height: auto !important;
    }
    .elementor-popup-modal .dialog-widget-content:has(.elementor-field-group) .elementor-field-group {
        margin-bottom: clamp(4px, calc(1.2vh - 2px), 16px) !important;
    }
    .elementor-popup-modal .dialog-widget-content:has(.elementor-field-group) .elementor-form-fields-wrapper {
        margin-bottom: calc(-1 * clamp(4px, calc(1.2vh - 2px), 16px)) !important;
    }
    .elementor-popup-modal .dialog-widget-content:has(.elementor-field-group) .elementor-button[type="submit"] {
        font-size: clamp(15px, calc(1.5vh + 6px), 26px) !important;
        padding-top: clamp(8px, 1.3vh, 20px) !important;
        padding-bottom: clamp(8px, 1.3vh, 20px) !important;
        margin-top: clamp(2px, 0.6vh, 10px) !important;
    }
    /* the six two-column form pop-ups (photo | logo + form): 296 Home, 68 PPCC, 308 Executive, 367 Contact,
       408 Corporate, 419 Personality Development */
    .elementor-popup-modal .dialog-widget-content:has(.elementor-top-column .elementor-widget-form) {
        width: min(94vw, clamp(780px, calc(96vh + 90px), 1500px)) !important;
    }
    .elementor-popup-modal .dialog-widget-content:has(.elementor-top-column .elementor-widget-form) .elementor-top-section {
        margin-top: 0 !important; /* its own -25 px pulled the logo out of the box once the band was gone */
    }
    .elementor-popup-modal .dialog-widget-content:has(.elementor-top-column .elementor-widget-form) .elementor-section > .elementor-container {
        max-width: none !important;
    }
    .elementor-popup-modal .dialog-widget-content:has(.elementor-field-group) .elementor-top-column:not(:has(.elementor-widget-form)) {
        width: 42% !important;
    }
    .elementor-popup-modal .dialog-widget-content:has(.elementor-field-group) .elementor-top-column:has(.elementor-widget-form) {
        width: 58% !important;
    }
    .elementor-popup-modal .dialog-widget-content:has(.elementor-field-group) .elementor-top-column:not(:has(.elementor-widget-form)) > .elementor-widget-wrap {
        position: relative !important;
        min-height: 0 !important;
    }
    .elementor-popup-modal .dialog-widget-content:has(.elementor-field-group) .elementor-top-column:not(:has(.elementor-widget-form)) .elementor-widget-image {
        position: absolute !important;
        inset: 2.5vh 1.2vw !important;
        width: auto !important;
        max-width: none !important;
        margin: 0 !important;
    }
    .elementor-popup-modal .dialog-widget-content:has(.elementor-field-group) .elementor-top-column:not(:has(.elementor-widget-form)) .elementor-widget-image img {
        width: 100% !important;
        height: 100% !important;
        max-width: 100% !important;
        max-height: 100% !important;
        object-fit: contain !important;
    }
    .elementor-popup-modal .dialog-widget-content:has(.elementor-field-group) .elementor-top-column:has(.elementor-widget-form) > .elementor-widget-wrap {
        padding: clamp(10px, 2vh, 40px) clamp(16px, 2.2vw, 48px) clamp(10px, 2vh, 40px) !important;
    }
    .elementor-popup-modal .dialog-widget-content:has(.elementor-top-column .elementor-widget-form) .elementor-top-column:has(.elementor-widget-form) .elementor-widget-form,
    .elementor-popup-modal .dialog-widget-content:has(.elementor-top-column .elementor-widget-form) .elementor-top-column:has(.elementor-widget-form) .elementor-widget-image {
        width: 100% !important;
        max-width: 100% !important;
        --container-widget-width: 100%;
    }
    .elementor-popup-modal .dialog-widget-content:has(.elementor-field-group) .elementor-top-column:has(.elementor-widget-form) .elementor-widget-image img {
        max-width: clamp(42px, calc(7vh - 2px), 120px) !important;
        height: auto !important;
    }
    .elementor-popup-modal .dialog-widget-content:has(.elementor-field-group) .elementor-top-column:has(.elementor-widget-form) .elementor-widget-image {
        margin-bottom: clamp(4px, 1vh, 16px) !important;
    }
    /* the four exit pop-ups (one block: heading, words, form): 297 Home, 66 PPCC, 318 Executive, 420 Personality Development */
    .elementor-popup-modal .dialog-widget-content:has(.elementor-field-group):not(:has(.elementor-top-column)) {
        width: min(94vw, clamp(700px, calc(80vh + 150px), 1300px)) !important;
    }
    .elementor-popup-modal .dialog-widget-content:has(.elementor-field-group):not(:has(.elementor-top-column)) .e-con-inner {
        width: auto !important;
        max-width: none !important;
        margin: 0 clamp(24px, 3vw, 70px) !important;
        padding-top: clamp(40px, 6.5vh, 80px) !important;
        padding-bottom: clamp(16px, 3vh, 48px) !important;
        gap: clamp(10px, 2.2vh, 34px) !important;
    }
    .elementor-popup-modal .dialog-widget-content:has(.elementor-field-group):not(:has(.elementor-top-column)) .elementor-heading-title {
        font-size: clamp(30px, calc(4.5vh + 6px), 72px) !important;
        line-height: 1.05 !important;
    }
    .elementor-popup-modal .dialog-widget-content:has(.elementor-field-group):not(:has(.elementor-top-column)) .elementor-widget-text-editor {
        font-size: clamp(15px, calc(1.4vh + 6px), 26px) !important;
        line-height: 1.3 !important;
    }
    .elementor-popup-modal .dialog-widget-content:has(.elementor-field-group):not(:has(.elementor-top-column)) .elementor-widget-text-editor p {
        margin-bottom: clamp(6px, 1.4vh, 20px) !important;
    }
}
/* R13 (phones). Today's phone layout stays - EXCEPT on phones no taller than 760 px, where PPCC's and Executive's 7-field
   form needed scrolling (submit 33 px below a 640 px screen, measured). There the band above the first field (the X, the
   logo, their margins) and the row gaps are tighter; the 40 px fields and the text sizes are unchanged. */
@media (max-width: 800px) and (max-height: 760px) {
    .elementor-popup-modal .dialog-widget-content:has(.elementor-top-column .elementor-widget-form) .dialog-close-button {
        top: 6px !important;
    }
    .elementor-popup-modal .dialog-widget-content:has(.elementor-top-column .elementor-widget-form) > .dialog-message {
        margin-top: 42px !important;
        max-height: calc(100vh - 42px) !important;
    }
    .elementor-popup-modal .dialog-widget-content:has(.elementor-top-column .elementor-widget-form) .elementor-top-column:has(.elementor-widget-form) > .elementor-widget-wrap {
        padding-top: 4px !important;
        padding-bottom: 10px !important;
    }
    .elementor-popup-modal .dialog-widget-content:has(.elementor-top-column .elementor-widget-form) .elementor-top-column:has(.elementor-widget-form) .elementor-widget-image {
        margin: 0 0 6px !important;
    }
    .elementor-popup-modal .dialog-widget-content:has(.elementor-top-column .elementor-widget-form) .elementor-top-column:has(.elementor-widget-form) .elementor-widget-image img {
        max-width: 36px !important;
        height: auto !important;
    }
    .elementor-popup-modal .dialog-widget-content:has(.elementor-top-column .elementor-widget-form) .elementor-field-group {
        margin-bottom: 6px !important;
    }
    .elementor-popup-modal .dialog-widget-content:has(.elementor-top-column .elementor-widget-form) .elementor-form-fields-wrapper {
        margin-bottom: -6px !important;
    }
}

/* R15. The <picture> that inc/w19-photos.php section 5 puts around a carousel photo (phones get the 300 px copy) must not
        change the slide's layout: it lays out as if only the <img> were there. */
picture.w19-phonepic { display: contents; }

/* R16. THE PAGE-GUIDE BOX CAN NEVER COVER THE BE MORE STRIP, ON ANY PAGE, AT ANY WIDTH.
        The box (class guide-container: the floating page-guide and WhatsApp buttons) sits right after the strip and floats
        over it by pulling itself up by its own height. Each page set that pull itself, in mixed units: on PPCC, Executive,
        Corporate and Personality Development the laptop band (1101-1450 px) pulled -10.6 % of the WIDTH (152.6 px at
        1440) for a 119 px box, so the footer rode up over the strip - 26 px of "MORE" covered at 1366, 34 px at 1440
        (measured 2026-10-24; Home's own setting was fixed by REVIEW-HOME, §269). Now one rule for every page: the box's
        height is fixed per band at its measured content height (two buttons: 111 / 115 / 119 / 162 px) and the pull is
        exactly that height, from the same number - so the pull can never be larger than the box. */
body .elementor .elementor-element.guide-container.e-con { --w19-guide-h: 111px; }
@media (min-width: 801px) { body .elementor .elementor-element.guide-container.e-con { --w19-guide-h: 115px; } }
@media (min-width: 1101px) { body .elementor .elementor-element.guide-container.e-con { --w19-guide-h: 119px; } }
@media (min-width: 1451px) { body .elementor .elementor-element.guide-container.e-con { --w19-guide-h: 162px; } }
/* (2026-10-24, R16 v2) NO forced height: with height fixed the two stacked buttons wrapped into a second column to
   the right, and five pages scrolled sideways by 48 px at 390 (measured). The pull alone, equal to the measured height. */
body .elementor .elementor-element.guide-container.e-con:not(.elementor-sticky--active) {
    --margin-top: calc(-1 * var(--w19-guide-h)) !important;
    margin-top: calc(-1 * var(--w19-guide-h)) !important;
}
