Skip to content

Fit, Results and FAQ #26

Closed
Closed

Description

@Abuubkar

Parent

Spec: #20

What to build

The Fit section (who Execile is and is not for), the Results section, and the FAQ.

The FAQ is an exclusive accordion built on <details name="faq"> — opening one closes the others natively, with no JavaScript. Where the name grouping is unsupported, panels simply open independently: it degrades, it never breaks.

FAQ questions carry no heading element. Some browsers give <summary> a button role that strips its children's roles, so a heading inside it is unreliable. The section keeps its own heading. The consequence — FAQ questions absent from a screen reader's heading outline — is accepted, not overlooked.

Results launches in "coming soon" mode. Placeholder case studies must not read as real client outcomes.

The reveal animates via ::details-content; Firefox opens instantly and that is fine.

Acceptance criteria

  • Disclosure renders details/summary; opening one FAQ closes the others with no JavaScript
  • With name grouping unsupported, panels open independently and nothing breaks
  • No heading element inside summary; no role added to details or its panel
  • The + / × marker rotates on open, expressed with stylex.when.ancestor — StyleX has no descendant combinators
  • The reveal animates where ::details-content is supported and opens instantly where it is not
  • With reduced motion requested, the accordion does not animate
  • Results renders in "coming soon" mode; a flag selects between that and case studies
  • Fit renders both the good-fit and not-a-fit lists with distinct markers
  • Keyboard: Tab reaches each summary, Enter and Space toggle
  • All copy from Messages, with each FAQ carrying a stable slug as its identifier

Blocked by

Activity

  1. changed the title [-]Specialties, Systems and the comparison Table[/-] [+]Fit, Results and FAQ[/+] on Sep 5, 2026
  2. marked this as blocking on Sep 5, 2026
  3. self-assigned this
    on Sep 5, 2026
  4. Abuubkar commented on Sep 5, 2026

    @Abuubkar
    OwnerAuthor

    Done on branch ticket/26-faq. Fit, Results and the FAQ accordion.

    The finding: when.ancestor needs the ancestor to opt in

    stylex.when.ancestor('[open]') compiles to:

    .x17m6w0p:where(.x-default-marker[open] *) { rotate: 45deg }

    The .x-default-marker class is required on the ancestor. Without stylex.defaultMarker() applied to the <details> element, the rule is emitted, matches nothing, and the marker silently fails to rotate — no build error, no console warning, no visible sign anything is wrong.

    Caught only by reading the computed rotate back out of the browser. "The selector compiled" is not the same as "the rule matches", and this is a good argument for verifying CSS behaviour rather than CSS output. Documented in the component.

    After the fix: none → 45deg on open.

    Exclusive accordion, zero JavaScript

    Six <details> sharing name="faq". Verified by driving it:

    exclusive: true. Opening one closes the others natively.

    Also verified: no heading inside <summary> and no role on <details> or the panel — both #10 decisions, since browsers vary on whether summary strips its children's roles.

    Results ships in "coming soon" mode

    Behind an explicit SHOW_CASE_STUDIES = false flag with a comment explaining why: Execile has no measured outcomes, and placeholder case studies would read as real ones. The dashed-outline notice says outcomes are published "only once they're measured and approved for sharing".

    The [PLACEHOLDER — replace with real client results] string stays in messages.json so pnpm placeholders keeps reporting it — now 5 placeholders across specialties, services and results.

    Global CSS

    The ::details-content reveal is in app.css: StyleX cannot target that pseudo-element, and the property that must transition is content-visibility (which the UA sets on the slot), not display. Firefox has no discrete content-visibility transition and opens instantly — accepted in #10, and noted in the CSS.

    Verified

    10 sections, vp check passes on 43 files. CSS 18.41 kB raw / 4.87 kB gzip.

  5. Abuubkar commented on Sep 5, 2026

    @Abuubkar
    OwnerAuthor

    Done. Exclusive accordion with zero JS. One finding: when.ancestor needs stylex.defaultMarker() on the ancestor or it silently never matches.

  6. added a commit that references this issue on Sep 5, 2026
    fbad801
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

ready-for-agentSpec is complete and ready for an agent to implement

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions