/* ============================================================
   PRIME ACADEMY GROUP — v6 · REGISTER
   pag-v6-register-elementor.css — Register's own bridge.

   Loads after pag-v6-elementor.css and only on Register.

   Everything here re-points a v6 rule that Elementor's markup stopped
   matching. Nothing changes the design and nothing restates a v6 value. Every
   rule was written from a measurement, and the numbers it closes are recorded
   against it.

   NOT HERE, DELIBERATELY: the form vocabulary. `.form`, `.field`,
   `.field--wide`, `.field-hint`, `.consent`, `.form-actions`, `.form-error`,
   `.select` and `.ilink` moved out of page-contact.css into shared.css on
   26 August precisely so this page could use them, and page-register.css says
   so in its own header — "a second private copy of a form vocabulary is the
   exact drift the parallel-session rules exist to prevent". What CF7's markup
   needs to MEET that vocabulary is in §3 below; the vocabulary itself is not
   repeated.

   ALSO NOT HERE ANY MORE: the parent theme's `button:hover`/`:focus` fill. That
   was found on this page — `.pick` turned magenta on hover, #CC3366 with white
   text, from Hello Elementor's reset — and lived here as §8 until it was
   answered site-wide as §32 of the shared bridge. §32 now writes the undo across
   BOTH states, because the theme fires on both, and the restatement across
   `:hover` and `:focus:not(:hover)` separately, because v6 draws a colour on
   hover and only an outline on focus. Removed after disabling this file's rules
   in the browser and re-reading `.pick` and `.back` at rest, on focus and on
   hover against the design: identical in all three, so the local copy was doing
   nothing.
   ============================================================ */


/* ------------------------------------------------------------
   1. THE COURSE BUTTONS
   `.pick` is a two-column grid — `minmax(0,1fr) 24px` — and v6 places the name
   and the note in the first column with the arrow spanning both rows of the
   second: `.pick-go{grid-column:2;grid-row:1/3}`.

   Each of the three is a widget, so the WRAPPERS were the grid items and
   auto-placement put them wherever they fell. The note's wrapper landed in the
   24px arrow column and wrapped the sentence to 270px tall, against v6's 45,
   and the arrow sat in the text column because the rule that moves it was
   matching the span inside a wrapper that had already been placed.

       .pick     336px -> 120     ·  step one  1176px -> 482

   The wrappers step out of the box tree so the three elements v6 wrote the
   grid for are the grid items again.
   ------------------------------------------------------------ */
body.pag-v6 .pick > .elementor-widget,
body.pag-v6 .pick > .elementor-widget > .elementor-widget-container{ display:contents; }


/* ------------------------------------------------------------
   2. THE PROGRESS RAIL
   `.rail-item` is a flex row of exactly two spans — the number chip and the
   label — with `align-items:center` and a gap between them. Both spans are in
   one Text Editor, which is what keeps them siblings, but that editor's wrapper
   was the flex child: the two spans became block-level inside it and stacked.

       .rail-item  52px -> 28

   One widget, one rule. The alternative — a widget per span — would have put
   two boxes between the row and the things it is spacing, and `.rail-item +
   .rail-item::before`, which draws the hairline between the steps, is written
   against the ITEMS and would have been unaffected either way.
   ------------------------------------------------------------ */
body.pag-v6 .rail-item > .elementor-widget-text-editor,
body.pag-v6 .rail-item > .elementor-widget-text-editor > .elementor-widget-container{ display:contents; }


/* ------------------------------------------------------------
   3. THE RAIL RUNS ACROSS, AND SO DOES EACH STEP IN IT
   Two of them, one inside the other. v6 writes `<ol class="rail">` and
   `<li class="rail-item">` and gives both `display:flex` with no direction, so
   both take the initial `row`. An Elementor container is a flex COLUMN, so the
   two steps stacked and inside each the number chip stacked above its label.

       .rail-item  28px -> 62   ·   .rail  28px -> 136

   This is the general rule, and it is the third page it has appeared on — the
   homepage's `.foot-end`, Contact's `.open-cta`, About's `.rel-links`. Any v6
   element that is a flex ROW and becomes a container needs it. Worth checking
   for by grepping the page's stylesheet for `display:flex` with no
   `flex-direction` beside it, rather than waiting for a measurement.
   ------------------------------------------------------------ */
body.pag-v6 .rail,
body.pag-v6 .rail-item{ flex-direction:row; }

/* AND THE ROW MUST NOT WRAP, AND ITS ITEMS MUST NOT BE FULL WIDTH.
   Two more defaults of the same kind, and they only showed below 1180 where
   the panel goes one column. An Elementor container is `flex-wrap:wrap` and
   gives its children `width:var(--width)` with `--width:100%` — the same shape
   as §12's `.foot-col` — so each step took the whole row and the second wrapped
   under the first. v6's `<ol>` declares neither: it takes the initial `nowrap`,
   and its `<li>`s size to their content.

       .rail at 600  28px -> 68     ·   at 390  28px -> 72

   Every height above it still matched, because the rail is one row in a block
   and a taller row just moves what follows. The ladder saw it — +56 and +60
   against an expected +16 — and nothing else did. */
body.pag-v6 .rail{ flex-wrap:nowrap; }
body.pag-v6 .rail-item{ width:auto; }


/* ------------------------------------------------------------
   4. A COURSE NAME HAS TO BE ALLOWED TO WRAP
   `.pick` is a real `<button>` — `button` is in ALLOWED_HTML_WRAPPER_TAGS, so
   the element v6 wrote its grid against is the element that renders. What comes
   with it is a reset the static does not carry:

       [type="button"], [type="submit"], button{ white-space:nowrap }

   v6.1.2's `.pick` computes `white-space:normal`; ours computed `nowrap`, and
   it inherits, so `.pick-name` refused to wrap. At 390 the longest course name
   — "Aboriginal and Torres Strait Islander Cultural Awareness" — measured 441px
   of text in a 228px column and pushed the document to 502px against a 390px
   viewport. `widths.mjs` was the only thing that saw it: `hOverflow wp=true`.
   Every height still matched, because the row it overflows out of is a grid
   track that keeps its own size.

   Not a restated value. v6 declares no `white-space` on `.pick` at all; this
   puts back the initial the design gets for free and the reset takes away, and
   it is scoped to this one class rather than lifting the reset generally —
   every other button on the site is one line and wants nowrap.

   `min-width` is the other half of the same measurement and is left alone
   deliberately: `.pag-flow{min-width:auto}` overrides Elementor's
   `.e-con{min-width:0}` on every v6 container, so `.pick`'s automatic minimum
   is its min-content width. With wrapping restored that is the longest WORD
   rather than the longest sentence, which fits, so there is nothing left to
   fix and nothing to override in a shared class.
   ------------------------------------------------------------ */
body.pag-v6 .pick{ white-space:normal; }


/* ------------------------------------------------------------
   5. STEP TWO'S HEADER ROW
   `.step-top` holds the "Change course" button and the chosen-course line side
   by side — `display:flex;flex-wrap:wrap;align-items:center`. Another container,
   another flex column: the two stacked and the row doubled.

       .step-top  63px -> 120   ·   step two  510px -> 644

   Fourth instance of the same default on this page alone, after `.rail`,
   `.rail-item` and (in the shared bridge) `.open-cta`.
   ------------------------------------------------------------ */
body.pag-v6 .step-top{ flex-direction:row; }


/* ------------------------------------------------------------
   6. THE COURSE FIELD IS SUPPOSED TO BE INVISIBLE
   v6.1.2 writes `<input type="hidden" name="course">`. Contact Form 7 has no
   hidden-field tag, so it is a `[text]` and the stylesheet has to do what the
   `type` would have done — exactly as v4.7 does it, where
   `pag-elementor-register.css` hides `.c-field--course`.

   Left visible it is a labelled empty text box between "Mobile number" and the
   consent line, holding the course name the visitor already chose:

       .form  363px -> 440   ·   an extra 276x49 field in the grid

   `display:none` rather than a visually-hidden clip, because this is not
   content that a screen reader should reach either — v6's element is a hidden
   input and announces nothing. The value still posts: a `display:none` input is
   still submitted with the form, which is the whole reason CF7's own approach
   works at all.
   ------------------------------------------------------------ */
body.pag-v6 .field--course{ display:none; }


/* ------------------------------------------------------------
   7. THE "CHANGE COURSE" BUTTON
   `.back` is a real `<button>` again, and again a container: flex column and
   `width:100%`, so its arrow sat above its label and the control spanned the
   whole panel instead of sizing to its text.

       .back  123x16 -> 576x42

   Fifth and last of the flex-direction defaults on this page. Grepping
   page-register.css for `display:flex` with no `flex-direction` beside it finds
   all five in one pass — `.rail`, `.rail-item`, `.step-top`, `.back`, and
   `.picks`, which is a column and so needed nothing.
   ------------------------------------------------------------ */
body.pag-v6 .back{ flex-direction:row; width:auto; }


/* ------------------------------------------------------------
   THE PROGRESS RAIL'S CONNECTOR — client item 5

   "The connecting line sits above '2 Your details' instead of between the two
   steps."

   v6 draws it as `.rail-item + .rail-item::before` — a 64x1 block that is a
   FLEX ITEM of the second step, so it takes its place in the row ahead of the
   number and pushes the pair apart. No element in the markup for something
   purely visual, which is the right call.

   `.rail-item` is an Elementor container here, so Elementor's own
   `.e-con::before` reaches the same pseudo-element and sets `position:absolute`.
   An absolutely-positioned box is not a flex item: it stops occupying width in
   the row and paints from wherever its containing block puts it.

   Measured, and it is the whole of the fault:

       design  ::before position=static    2nd step 205px wide
       live    ::before position=absolute  2nd step 117px wide

   The missing 88px is the connector and its margin, which is why the row looks
   short and the line appears adrift above it.

   Same cause as the homepage timeline's track, which Elementor's container
   `::before` also reached — there by setting a width, here by setting a
   position. Worth expecting on any v6 rule that draws with `::before` on
   something the builder turned into a container.
   ------------------------------------------------------------ */
body.pag-v6 .rail-item + .rail-item::before{ position:static; }
