Atorni is a website template for law firms, attorneys and legal practices, built on Bootstrap 5. It has a dark, classic look with gold accents, and the layout is responsive and mobile-ready. There are eight pages: home, about, attorneys, practice areas, case studies, news, a blog post and contact.
The home page has a hero slider, animated counters, an about section with a video, practice-area cards, a case evaluation form, case studies, a testimonial slider and the latest blog posts. You will also find attorney cards with social media links, a blog post with comments and a sidebar, a contact page with a working contact form and a map that loads on click, and call-to-action bands on every page. Atorni gives you a ready-made site to present your firm, its attorneys and its practice areas.
What’s new in 3.0
Bootstrap 5.3.8 (the earlier release used a Bootstrap 5.0 alpha, a cut-down pre-release build), compiled from Sass, and plain JavaScript. Swiper 14 replaces tiny-slider on the hero and testimonial sliders, and small built-in modules replace AOS, animate.css and the counter script. npm run build (Dart Sass and esbuild) compiles one minified stylesheet and one script.
Lighter pages: the home page went from 4.1 MB and 46 requests to 1.7 MB and 33 requests, and the download from 10.6 MB to 7.7 MB. Every photo has an AVIF version with the JPEG as the fallback, each page preloads its hero photo, and 44 unused WebP copies, five unused photos and the unused Bootstrap files are gone.
No third-party requests: Poppins and Cormorant Garamond are self-hosted, the Font Awesome 4.7, Ionicons and Flaticon icon fonts are replaced by Lucide SVG icons and a 1.2 KB social-logo subset, and a Google Analytics 4 snippet stays commented out until you add your own ID. Before, the pages loaded files from nine other hosts.
Working forms: the case evaluation form on the home and about pages, the contact form and the blog comment form send through includes/send-email.php, with validation, a spam trap and an in-page message. Before, none of the four had a mail handler, so nothing could be sent. The search fields now lead to the news page.
Click-to-load map: the contact page shows the address with a “Show map” button, and an OpenStreetMap map (no API key needed) loads only when a visitor clicks it. Before, every page loaded the Google Maps script with a sample key, and the contact page showed a map error.
Accessibility: a skip link and a main landmark on every page, a menu button that reports whether the menu is open, names on icon-only links, labelled form fields, visible keyboard focus, reduced-motion support and WCAG AA text contrast, with a darker gold for gold text on light backgrounds, darker grey body text, and dark text on the gold buttons, tags, date badges and call-to-action bands.
Fixed: the map on the contact page was 0 px tall at tablet widths (768 to 991 px), the play buttons linked nowhere (they now open a stock conference-room clip in a dialog), and the top bar’s phone and location boxes showed a map and a paper plane (now a phone and a map pin). The demo copy now makes no claims about case results, and the hero no longer advertises a Bootstrap pre-release.