Request · quote · pickup
Found a barrier?
Tell us in the message field. Accessibility reports go straight to the person who maintains the site.
What we have done
- Every link on this site is a real anchor element with a working href. Navigation does not depend on JavaScript.
- The slide-out main menu is driven by a checkbox and CSS, so it opens and closes with JavaScript disabled. Its submenus are native <details> elements.
- Every form submits to a server endpoint (/api/leads) with a standard POST, so the contact forms work without JavaScript — invalid submissions come back to the contact page naming the fields that need fixing. With JavaScript they validate inline and submit without a page change.
- All accordions are native <details> elements — keyboard operable and announced correctly by screen readers.
- Form fields have persistent visible labels, not placeholder-only labels, and required fields are marked visually, with the required attribute, and with a format hint. Validation errors are announced with role=alert, linked to their field with aria-describedby and aria-invalid, and summarised at the top of the form with in-page links to each problem field.
- Focus is visible throughout with a 2px outline and 3px offset. The skip link is the first focusable element on every page.
- The full-screen request dialog traps nothing it should not, closes on Escape, moves focus to its close button, restores focus on exit and locks background scrolling.
- Body text sits above 4.5:1 contrast on both the bone and ink grounds; interface text above 3:1.
- All motion respects prefers-reduced-motion, including the hero assembly animation, the marquee and the rotating stamp.
- Wide specification tables scroll inside their own container rather than forcing the page sideways, and use proper <th scope> headers with captions.
What we know is imperfect
- The menu toggle is a label bound to a hidden checkbox so it can work without JavaScript. That is a deliberate trade: it is keyboard reachable via the checkbox, but it is not a native button, and some screen readers announce it less cleanly than a button would.
- The interactive calculators — the Loop Ledger, the footprint comparator and the Pallet Passport lookup — require JavaScript. They render their default state as readable text without it, and each carries a <noscript> note telling you to email us for the same figures.
- The footprint comparator conveys its primary comparison visually. The table underneath it carries the same information in text, which is why the table is there.
- The yard plan on the 'inside the yard' page is decorative schematic and is not a substitute for directions.
Tell us
If something here does not work for you, email hello@pallets-recycle.com and describe what happened, including the assistive technology you were using. We will fix it and tell you when we have. We would rather know.