Summary
When an Atomic Wind Box uses the flex utility, Otter’s responsive visibility setting does not hide that block at the selected device breakpoints. The block is expected to remain hidden on the frontend wherever desktop, tablet, or mobile visibility is disabled, but it remains visible. This can expose content that an editor intentionally removed from the published layout.
Customer context
- Product / area: Otter Pro block conditions with an Atomic Wind Box
- Version: Customer version not provided; inspected repository version is 3.2.1
- Environment: WordPress site using Neve Pro; WordPress and PHP versions were not provided
- Integration / third party: Atomic Wind
- Reported error / symptom: Three event cards configured as hidden on desktop, tablet, and mobile remain visible on the frontend
- Impact: Content intended to be hidden remains published across the reported device sizes
Reproduction notes
Reported reproduction:
- Create or edit an event card built as an Atomic Wind Box with the
flex utility.
- Configure Otter responsive visibility to hide the card on desktop, tablet, and mobile.
- Publish or update the page and view the frontend at each device size.
- Observe that the hide classes are present but the card remains visible.
The customer reports three affected cards. The live site was not accessed and the failed attachment was unavailable, so the behavior was not independently reproduced in a browser; the source confirms the conflicting declarations and output path.
Diagnosis
Conclusion
The defect is confirmed from repository inspection. Otter adds responsive hide classes to the Atomic Wind Box root and defines them with display:none!important, while Atomic Wind compiles the coexisting flex utility through Tailwind’s important mode. For late-rendered CSS, Atomic Wind output is also attached after the visibility CSS. This creates a reachable cascade conflict consistent with the reported cards remaining visible.
Where this likely occurs
inc/plugins/class-block-conditions.php — Block_Conditions::render_blocks() and Block_Conditions::should_add_hide_css_class() lines 45–61 and 285–340: the frontend render path adds o-hide-on-mobile, o-hide-on-tablet, and o-hide-on-desktop to the block’s root element.
inc/class-registration.php — Registration::load_condition_hide_on_styles() and Registration::condition_hide_on_style() lines 1157–1200: screen-size conditions register footer CSS whose hide declarations use display:none!important.
src/atomic-wind/blocks/box/save.js — save() lines 3–10: saved Box markup receives block properties, allowing Atomic Wind utility classes and Otter’s render-time visibility classes to coexist on the same root element.
src/atomic-wind/tailwind/generator.js — createCompiler() and build() lines 340–375: editor generation compiles scanned classes with Tailwind important mode.
src/atomic-wind/tailwind/generator-frontend.js — createCompiler(), build(), and the DOMContentLoaded handler lines 46–75 and 117–125: frontend fallback generation also uses important mode and emits styles for classes found in the document.
inc/plugins/class-atomic-wind-blocks.php — Atomic_Wind_Blocks::run() lines 60–83 and Atomic_Wind_Blocks::output_late_css() lines 427–467: late Atomic Wind CSS is attached to wp_footer at priority 19, while visibility CSS uses the default priority 10.
- Git history identifies
75d2c9a2 as the Atomic Wind introduction on 2026-03-19, 477e3141 as the important frontend generator introduction on 2026-04-21, and 6ea09d60 as the late CSS loading path on 2026-07-15. The inspected evidence supports a regression boundary beginning with Atomic Wind’s introduction, with later commits affecting the conflicting output paths.
Engineering notes
The inspected failure path is limited to Atomic Wind blocks carrying a display utility such as flex while Otter screen-size conditions add hide classes to the same root element. The report covers all three configured breakpoints. The cached singular CSS path can emit Atomic Wind CSS in the head, while queried or late-rendered blocks can emit it from the footer; both paths derive CSS from the important Tailwind compiler. Tailwind cascade-layer precedence was not independently runtime-tested in this investigation, but the footer ordering provides an additional directly observed conflict path for late output.
Test coverage status
tests/test-block-conditions.php — test_hide_css_desktop_condition(), test_hide_css_tablet_condition(), test_hide_css_mobile_condition(), test_hide_css_all_condition(), and test_load_condition_hide_on_styles() lines 489–633 verify class insertion and style registration without asserting computed frontend display or Atomic Wind interaction. tests/test-atomic-wind-blocks.php — test_output_late_css_inlines_multiple_rendered_posts() and related late-style tests from lines 1285–1495 exercise synthetic display CSS without important declarations or responsive visibility classes. No relevant end-to-end coverage for an Atomic Wind Box using flex with screen-size conditions was found during inspection.
What to verify or explore next
- Reproduce with an Atomic Wind Box carrying
flex and screen-size visibility disabled separately for desktop, tablet, and mobile.
- Compare computed
display and winning declarations for cached singular CSS, frontend fallback generation, and late-rendered/query output.
- Run the block-condition PHPUnit suite, Atomic Wind PHPUnit suite, and relevant Playwright frontend checks after establishing a regression test.
- Check the release tags containing commits
75d2c9a2, 477e3141, and 6ea09d60 to narrow the first affected public version.
Unknowns / follow-up
The customer’s exact Otter, Otter Pro, Atomic Wind, WordPress, and PHP versions were not provided. The attachment failed in HelpScout and no ticket image was available. The customer site was not accessed, so computed-style evidence comes from the transcript rather than an independent live reproduction.
Confidence
Confidence: 94/100
Repository inspection confirms that Otter’s responsive visibility classes and Atomic Wind display utilities can compete as important declarations on the same block element. The reported flex path is generated by current frontend code, existing tests do not cover this interaction, and no matching GitHub issue was found.
Source: HelpScout #3404675628
Generated by bug-report-triage (ID: bug-report-triage_6a6d2908efacf8.99064621)
Summary
When an Atomic Wind Box uses the
flexutility, Otter’s responsive visibility setting does not hide that block at the selected device breakpoints. The block is expected to remain hidden on the frontend wherever desktop, tablet, or mobile visibility is disabled, but it remains visible. This can expose content that an editor intentionally removed from the published layout.Customer context
Reproduction notes
Reported reproduction:
flexutility.The customer reports three affected cards. The live site was not accessed and the failed attachment was unavailable, so the behavior was not independently reproduced in a browser; the source confirms the conflicting declarations and output path.
Diagnosis
Conclusion
The defect is confirmed from repository inspection. Otter adds responsive hide classes to the Atomic Wind Box root and defines them with
display:none!important, while Atomic Wind compiles the coexistingflexutility through Tailwind’s important mode. For late-rendered CSS, Atomic Wind output is also attached after the visibility CSS. This creates a reachable cascade conflict consistent with the reported cards remaining visible.Where this likely occurs
inc/plugins/class-block-conditions.php—Block_Conditions::render_blocks()andBlock_Conditions::should_add_hide_css_class()lines 45–61 and 285–340: the frontend render path addso-hide-on-mobile,o-hide-on-tablet, ando-hide-on-desktopto the block’s root element.inc/class-registration.php—Registration::load_condition_hide_on_styles()andRegistration::condition_hide_on_style()lines 1157–1200: screen-size conditions register footer CSS whose hide declarations usedisplay:none!important.src/atomic-wind/blocks/box/save.js—save()lines 3–10: saved Box markup receives block properties, allowing Atomic Wind utility classes and Otter’s render-time visibility classes to coexist on the same root element.src/atomic-wind/tailwind/generator.js—createCompiler()andbuild()lines 340–375: editor generation compiles scanned classes with Tailwind important mode.src/atomic-wind/tailwind/generator-frontend.js—createCompiler(),build(), and theDOMContentLoadedhandler lines 46–75 and 117–125: frontend fallback generation also uses important mode and emits styles for classes found in the document.inc/plugins/class-atomic-wind-blocks.php—Atomic_Wind_Blocks::run()lines 60–83 andAtomic_Wind_Blocks::output_late_css()lines 427–467: late Atomic Wind CSS is attached towp_footerat priority 19, while visibility CSS uses the default priority 10.75d2c9a2as the Atomic Wind introduction on 2026-03-19,477e3141as the important frontend generator introduction on 2026-04-21, and6ea09d60as the late CSS loading path on 2026-07-15. The inspected evidence supports a regression boundary beginning with Atomic Wind’s introduction, with later commits affecting the conflicting output paths.Engineering notes
The inspected failure path is limited to Atomic Wind blocks carrying a display utility such as
flexwhile Otter screen-size conditions add hide classes to the same root element. The report covers all three configured breakpoints. The cached singular CSS path can emit Atomic Wind CSS in the head, while queried or late-rendered blocks can emit it from the footer; both paths derive CSS from the important Tailwind compiler. Tailwind cascade-layer precedence was not independently runtime-tested in this investigation, but the footer ordering provides an additional directly observed conflict path for late output.Test coverage status
tests/test-block-conditions.php—test_hide_css_desktop_condition(),test_hide_css_tablet_condition(),test_hide_css_mobile_condition(),test_hide_css_all_condition(), andtest_load_condition_hide_on_styles()lines 489–633 verify class insertion and style registration without asserting computed frontend display or Atomic Wind interaction.tests/test-atomic-wind-blocks.php—test_output_late_css_inlines_multiple_rendered_posts()and related late-style tests from lines 1285–1495 exercise synthetic display CSS without important declarations or responsive visibility classes. No relevant end-to-end coverage for an Atomic Wind Box usingflexwith screen-size conditions was found during inspection.What to verify or explore next
flexand screen-size visibility disabled separately for desktop, tablet, and mobile.displayand winning declarations for cached singular CSS, frontend fallback generation, and late-rendered/query output.75d2c9a2,477e3141, and6ea09d60to narrow the first affected public version.Unknowns / follow-up
The customer’s exact Otter, Otter Pro, Atomic Wind, WordPress, and PHP versions were not provided. The attachment failed in HelpScout and no ticket image was available. The customer site was not accessed, so computed-style evidence comes from the transcript rather than an independent live reproduction.
Confidence
Confidence: 94/100
Repository inspection confirms that Otter’s responsive visibility classes and Atomic Wind display utilities can compete as important declarations on the same block element. The reported
flexpath is generated by current frontend code, existing tests do not cover this interaction, and no matching GitHub issue was found.Source: HelpScout #3404675628
Generated by bug-report-triage (ID: bug-report-triage_6a6d2908efacf8.99064621)