Project

CIAS.io: a clearer route from visit to enquiry

A bilingual site rebuild that made the mobile menu usable, made the email address something you can act on, and retired duplicate app-policy URLs.

Project
CIAS.io, built and owned by CIAS
Languages
English and Brazilian Portuguese
Scope
Navigation, contact actions, scope wording, legacy redirects, release process
Release checked
10 September 2026

This is the CIAS website, not client work. There is no client, no testimonial and no client-reported result on this page. The numbers below are counts of automated checks, and nothing more.

Screenshot of the CIAS.io website in a desktop browser.
The CIAS.io desktop layout, captured at a 1440 × 1100 viewport.

What needed fixing

Three problems got in the way of the one thing the site is for: letting someone read enough, then get in touch.

  • Navigation hidden on phones

    On small screens the navigation was effectively hidden, so a visitor on a phone could not reliably reach the rest of the site.

  • No dedicated email action

    The address appeared as selectable plain text, but there was no dedicated email or copy action and no obvious next step.

  • Duplicate legacy policy URLs

    The app policy was reachable at more than one legacy address, which split the canonical page and left entry points in the wrong language.

What was delivered

  • An accessible mobile menu

    Opens and closes from the keyboard, closes on Escape, moves focus predictably, and still lists every link when JavaScript does not run.

  • Contact actions in context

    The email address now offers the action that fits the context, including copying it, instead of leaving the reader to select text by hand.

  • Scope written in plain words

    Quoted scope, what the customer owns, and where care and responsibility end are stated on the page rather than left to be assumed.

  • Real English and Portuguese pairs

    Each page has a counterpart in the other language, so a reader can switch without landing on a partial translation or a dead end.

  • Permanent, language-correct redirects

    Old app-policy URLs redirect permanently to the current page, in the language the reader was already using.

  • Staged release with a way back

    The change went out in stages, with a rollback path in place if a check did not pass.

How it was checked

  • 58 public HTTP assertions
  • 272 public browser assertions
  • 10 Sep 2026 release these counts refer to

For the earlier release on 10 September 2026, the public site was exercised by two automated suites: 58 HTTP assertions and 272 browser assertions, all run against public URLs.

These are regression checks. They confirm that pages, redirects and interactions still behave as expected. They are not performance figures, conversion figures or client outcomes, and they are not a security, legal or accessibility certification.

What this demonstrates, and what it does not

What it demonstrates

  • Bilingual delivery where each language is a real equivalent, not a partial translation.
  • Navigation and contact patterns that keep working with a keyboard and without JavaScript.
  • Legacy URLs retired without dead ends, using permanent and language-correct redirects.
  • A release process with staging, a rollback path and automated checks against public URLs.

What it does not show

  • This is first-party work: there is no client brief, no client sign-off and no testimonial.
  • No sales, conversion or uptime result is measured or claimed anywhere on this page.
  • The assertion counts are regression coverage, not proof of security, legal or accessibility compliance.
  • The screenshot shows one desktop viewport on one date, not every page or breakpoint.

Talk about similar work

If your own site has a menu that hides on phones, contact details nobody can act on, or old URLs still floating around, that is the kind of work this was.

Prefer email? Write to hello at cias.io.