/* edumusik-child.css — Astra-cascade overrides ONLY, enqueued by
   functions.php. Everything keys off theme.json preset variables
   (--wp--preset--color--*, --wp--preset--font-family--*) — no raw hex/px
   here. Every rule documents the exact selector that was winning and why,
   root-caused via live getComputedStyle/cssRules enumeration, not guessed.

   REBUILT 2026-07-18: this file used to also hold a second category,
   reusable "design-system classes" (.eyebrow, .num/.num-odd/.num-even,
   .pillar-dot, .soft-panel) hand-attached to blocks via `className` — a
   real improvement over inline styles, but still CSS the user had no UI
   access to. Per explicit instruction ("no hardcoded overrides... create
   custom styles so I have access to them from the UI"), every one of those
   was individually re-verified against Astra's live Customizer + WordPress
   core's native block controls first (page-title toggle, site-title
   font-size, header button colours, Group/Image border-radius, paragraph
   typography toggles all turned out to already be native, unset controls —
   see functions.php and git history for the per-item verification). The two
   genuine holdouts (Number Badge, Pillar Dot — no native control or Spectra
   block can express a plain numeral-in-a-circle) became registered
   `core/paragraph` block styles instead (assets/block-styles.css,
   registered via `register_block_style()` in functions.php) — a real,
   named, clickable option in that block's own Style panel, not a className
   typed from memory. What remains below is ONLY Astra-cascade overrides and
   one raw wp:html block (the video play-button overlay) that has no block
   type to register a style against. Before adding anything here: check the
   live Customizer/native block control first, and if a new class is ever
   needed, register it as a block style, don't add a bare CSS class. */

/* SUPERSEDED 2026-07-18: body background was fixed here twice (a plain
   `body{}` rule, then a `body.ast-plain-container{}` override to win
   Astra's own higher-specificity rule) before checking whether Astra's own
   Customizer already had the real control. It did: Global -> Colours sets
   Astra's --ast-global-color-4 CSS variable, which IS what
   .ast-plain-container reads. Set that variable to the ground colour
   (#f5ead8) via Customizer -> Colours -> Global Palette instead of fighting
   it in CSS — both rules above are now dead and removed. Lesson: check the
   native Customizer control before writing a cascade override, not after.
   See Global -> Colours -> Global Palette for the live palette mapping
   (slot 0=accent, 1=accent-hover, 2/3/6=text, 4=ground/surface bg,
   5=surface, 7=border, 8=text). */

/* Outline buttons (is-style-outline, e.g. "See the six sections") were
   rendering near-invisible: WordPress's own generated global-styles CSS
   defines `.has-border-color { color: var(--wp--preset--color--border) }`
   -- yes, that class sets text `color`, not just `border-color` -- and it
   is emitted after `.has-accent-color { color: var(--wp--preset--color--
   accent) }` in the same stylesheet. Both classes sit on the same button
   (has-accent-color has-text-color has-border-color) at equal specificity,
   so has-border-color's later position wins and the button text renders
   in the pale border colour instead of the intended accent colour.
   Root-caused 2026-07-18 by diffing every stylesheet rule matching the
   live button element for a `color` declaration. */
.wp-block-button.is-style-outline .wp-block-button__link.has-accent-color.has-border-color {
  color: var(--wp--preset--color--accent) !important;
}

/* REMOVED 2026-07-19: H1/H2/H3 font-size and button-padding CSS overrides.
   Root cause was never "Astra beats theme.json" in principle -- Astra's own
   Customizer has native Global Typography (font-size-h1/h2/h3) and Buttons
   (theme-button-padding) controls; they were simply never set, so Astra
   fell back to its hardcoded legacy CSS defaults (2em headings, 15px 30px
   padding), which won the cascade over WordPress's :where()-wrapped
   global-styles regardless of load order. Fixed at the actual source: set
   font-size-h1/h2/h3 and theme-button-padding in the astra-settings option
   (same update_option() mechanism already used for the header button, since
   this install's Customizer Publish is broken -- see functions.php) to the
   same values theme.json already declares. Confirmed live 2026-07-19 by
   disabling this stylesheet entirely and reading computed styles -- H1/H2/H3
   and button padding are correct with zero CSS. Astra's native Typography/
   Buttons Customizer panels are now the live source for these values (Site
   Editor's own Styles panel remains theme.json's own front door for
   anything that reads from CSS presets, e.g. per-block colour/fontSize
   choices) -- don't re-add a CSS override here if this drifts again; check
   astra-settings first. */

/* Header Builder CTA button ("Watch the intro") play-triangle only.
   Background/text colour and hover now come from Astra's own native
   Header Builder Button 1 Design-tab controls (header-button1-back-color,
   header-button1-back-h-color, header-button1-text-color,
   header-button1-text-h-color in the astra-settings option) -- confirmed
   live 2026-07-18 these controls exist and were simply never set; set
   directly via update_option() since Customizer Publish is broken on this
   install (see functions.php). Only the decorative triangle pseudo-element
   has no native Astra equivalent and stays here. */
.ast-custom-button-link .ast-custom-button::before {
  content: '';
  display: inline-block;
  width: 0; height: 0; border-style: solid;
  border-width: 7px 0 7px 12px;
  border-color: transparent transparent transparent currentColor;
  margin-right: 8px;
}

/* REMOVED 2026-07-18: .soft-panel. core/group and core/image both have a
   NATIVE border-radius control (Block sidebar -> Border) that reaches the
   same 56px over-rounding with zero custom CSS -- confirmed live via
   wp.blocks.getBlockType('core/group').supports.__experimentalBorder.radius.
   Home's own soft-panel instances were converted to
   `"style":{"border":{"radius":"56px"}}` (a native per-block value, not a
   preset -- theme.json declares no radius preset scale, only
   `"border":{"radius":true}` to enable the control itself). */

/* REMOVED 2026-07-24: .video-figure / .play-btn / .play-tri (hero
   play-button overlay, a raw wp:html block). Replaced with Spectra's
   native `uagb/icon` block (Circle Play icon, colour/size/link all in the
   block's own sidebar) on the "Who this course is for" image -- confirmed
   live 0 remaining uses of .video-figure's actual visual effect (the
   className itself was already dead on the "Is it possible to trust AI?"
   column; no .play-btn element existed there or anywhere else). Small
   button play-triangle below is unrelated and stays -- it's a real
   pseudo-element on live nav/CTA buttons, not this overlay. */

/* REMOVED 2026-07-18: .num/.num-odd/.num-even, .pillar-dot, .eyebrow.
   Number Badge and Pillar Dot are now registered core/paragraph block
   styles (assets/block-styles.css, registered in functions.php) --
   selectable from the block's own Style panel, not a hand-typed className.
   Eyebrow needed no style of any kind: core/paragraph already supports
   letterSpacing/textTransform/fontWeight/fontFamily natively (confirmed via
   wp.blocks.getBlockType('core/paragraph').supports.typography), and
   theme.json doesn't disable those toggles, so Home's eyebrows now use
   plain native per-block typography controls -- see Home's post_content.
   FURTHER REMOVED 2026-07-24: block-styles.css itself (Number Badge,
   Pillar Dot, Eyebrow, Dot Row registrations) is now deleted entirely --
   see functions.php's own note on the native Spectra-block replacements. */

/* Reduced-opacity body tiers (match the prototype, don't invent greys) --
   NOT currently referenced by Home (post 2); still used by the
   course-landing.php reference pattern, which is stale relative to Home's
   own rebuild and wasn't updated in this pass (separate, larger task -- it
   predates the header-builder migration too). Keeping until that pattern
   file itself is reconciled, not "for later" scope creep. */
.copy-lead { color: color-mix(in srgb, var(--wp--preset--color--text) 82%, transparent); }
.copy-soft { color: color-mix(in srgb, var(--wp--preset--color--text) 76%, transparent); }
.copy-mute { color: color-mix(in srgb, var(--wp--preset--color--text) 60%, transparent); }

/* REMOVED 2026-07-18: the hero/curriculum columns-stacking media query.
   WordPress core already stacks .wp-block-columns below 781px natively
   (via `flex-basis: 100%` on .wp-block-column, not flex-direction) —
   confirmed live via document.styleSheets enumeration. This rule achieved
   nothing different from the default and was dead weight, not a fix. */
