Compare commits

..

6 Commits

Author SHA1 Message Date
Peter Foster
1642219609 seo: auto-optimize titles and descriptions (2026-03-24) 2026-03-24 02:29:59 +00:00
Peter Foster
6819689ebd fix: blog/index.php missing DOCTYPE, head and CSS — page was completely unstyled
meta-tags.php only defines PHP functions, outputs nothing. The page had no
<!DOCTYPE html>, <html>, <head>, or CSS link — browser rendered it as an
unstyled text document. Replaced with a proper HTML head section.
2026-03-22 19:34:54 +00:00
Peter Foster
76abfc23da remove: skip-to-content accessibility links from all pages 2026-03-22 19:31:32 +00:00
Peter Foster
683b701655 fix: add unsafe-inline back to style-src CSP
style-src without unsafe-inline blocks all inline style= attributes,
breaking logo sizing, section layouts, and any element with inline CSS.
script-src retains nonces for actual XSS protection — style-src unsafe-inline
is safe and necessary for the sites inline styling patterns.
2026-03-22 19:26:22 +00:00
Peter Foster
5d490ac91e fix: CSS not loading due to CSP blocking onload inline event handler
The media=print onload deferred CSS pattern requires unsafe-inline in
script-src. When nonces replaced unsafe-inline in 14f1e53, the onload
attribute was blocked by CSP, leaving main.min.css as media=print only
so all below-fold styles were invisible.

Fix: replace onload attribute with a nonce-tagged inline script that
does the same media switch — CSP-safe.
2026-03-22 19:21:45 +00:00
Peter Foster
6cff10baba fix: formatting errors on home and quote pages
- index.php: add .hero-eyebrow CSS (uppercase eyebrow label above H1)
- index.php: fix unquoted class=section-label attribute
- quote.php: fix hero background from grey to purple gradient (consistent with all other pages)
2026-03-22 19:13:56 +00:00
5 changed files with 41 additions and 18 deletions

View File

@@ -2,8 +2,8 @@
// Enhanced security headers
header('Strict-Transport-Security: max-age=31536000; includeSubDomains');
$page_title = "About Us | AI Automation for Legal & Consulting Firms";
$page_description = "Bespoke AI automation consultancy helping UK legal & consulting firms automate data, documents & research workflows. 10+ years experience. Free consultation.";
$page_title = "Bespoke AI Automation Consultants | UK Legal & Consulting";
$page_description = "Meet the UK AI automation experts helping legal & consulting firms save hours on data, documents & research. 10+ years experience. Book a free consultation.";
$canonical_url = "https://ukaiautomation.co.uk/about";
// Breadcrumb navigation
@@ -154,7 +154,6 @@ $breadcrumbs = [
</head>
<body>
<!-- Skip to content link for accessibility -->
<a href="#main-content" class="skip-to-content">Skip to main content</a>
<!-- Navigation -->
<?php include($_SERVER["DOCUMENT_ROOT"] . "/includes/nav.php"); ?>

View File

@@ -1,9 +1,30 @@
<?php
$page_title = "AI Automation Blog | Practical Guides for Legal and Consultancy Firms | UK AI Automation";
$page_description = "Practical articles on AI automation for UK law firms and management consultancies — document extraction, research automation, AI agents, GDPR compliance, and ROI analysis.";
$page_title = "AI Automation Blog | UK AI Automation";
$page_description = "Practical articles on AI automation for UK law firms and management consultancies.";
$canonical_url = "https://ukaiautomation.co.uk/blog/";
include($_SERVER['DOCUMENT_ROOT'] . '/includes/meta-tags.php');
include($_SERVER['DOCUMENT_ROOT'] . '/includes/nav.php');
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title><?php echo htmlspecialchars($page_title); ?></title>
<meta name="description" content="<?php echo htmlspecialchars($page_description); ?>">
<meta name="robots" content="index, follow">
<link rel="canonical" href="<?php echo htmlspecialchars($canonical_url); ?>">
<meta property="og:type" content="website">
<meta property="og:url" content="<?php echo htmlspecialchars($canonical_url); ?>">
<meta property="og:title" content="<?php echo htmlspecialchars($page_title); ?>">
<meta property="og:description" content="<?php echo htmlspecialchars($page_description); ?>">
<meta property="og:site_name" content="UK AI Automation">
<link rel="icon" type="image/x-icon" href="/assets/images/favicon.ico">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Roboto+Slab:wght@300;400;500;600;700&family=Lato:wght@300;400;500;600;700&display=swap" rel="stylesheet">
<link rel="stylesheet" href="/assets/css/main.css?v=20260322">
</head>
<body>
<?php include($_SERVER['DOCUMENT_ROOT'] . '/includes/nav.php');
$articles = [
[
@@ -115,3 +136,5 @@ $articles = [
</section>
</main>
<?php include($_SERVER['DOCUMENT_ROOT'] . '/includes/footer.php'); ?>
</body>
</html>

View File

@@ -3,7 +3,7 @@
header('Strict-Transport-Security: max-age=31536000; includeSubDomains');
$page_title = "AI Automation FAQ | Legal & Consultancy Firms UK";
$page_description = "Discover how AI automation helps UK legal & consultancy firms. Answers on workflows, document processing, research automation & ROI. Book a free consultation.";
$page_description = "Everything you need to know about AI automation for UK legal & consultancy firms. Workflows, document processing, research automation & ROI. Free consultation.";
$canonical_url = "https://ukaiautomation.co.uk/faq";
// Breadcrumb navigation

View File

@@ -13,11 +13,11 @@ if (!isset($_SESSION['csrf_token'])) {
$_SESSION['csrf_token'] = bin2hex(random_bytes(32));
}
header('Strict-Transport-Security: max-age=31536000; includeSubDomains');
header("Content-Security-Policy: default-src 'self'; script-src 'self' 'nonce-{$nonce}' https://cdnjs.cloudflare.com https://www.googletagmanager.com https://www.google-analytics.com https://www.clarity.ms https://www.google.com https://www.gstatic.com; style-src 'self' 'nonce-{$nonce}' https://fonts.googleapis.com; font-src 'self' https://fonts.gstatic.com; img-src 'self' data: https://www.google-analytics.com; connect-src 'self' https://www.google-analytics.com https://analytics.google.com https://region1.google-analytics.com https://www.google.com; frame-src https://www.google.com;");
header("Content-Security-Policy: default-src 'self'; script-src 'self' 'nonce-{$nonce}' https://cdnjs.cloudflare.com https://www.googletagmanager.com https://www.google-analytics.com https://www.clarity.ms https://www.google.com https://www.gstatic.com; style-src 'self' 'unsafe-inline' https://fonts.googleapis.com; font-src 'self' https://fonts.gstatic.com; img-src 'self' data: https://www.google-analytics.com; connect-src 'self' https://www.google-analytics.com https://analytics.google.com https://region1.google-analytics.com https://www.google.com; frame-src https://www.google.com;");
// SEO and performance optimizations
$page_title = "AI Automation for Legal Firms UK | Cut Research Time 80%";
$page_description = "Bespoke AI workflows for UK legal & consultancy firms. Automate document processing, research & data work. Cut manual hours by 80%. Free consultation.";
$page_title = "UK AI Automation Consulting | Legal & Consultancy Firms";
$page_description = "Specialised AI automation for UK legal & consultancy firms. Bespoke workflows for document processing & research. Cut manual work by 80%. Book a free call.";
$canonical_url = "https://ukaiautomation.co.uk/";
$keywords = "AI automation consulting UK, AI automation, document data extraction, legal AI automation, research automation, data pipeline consulting, AI agents UK";
$author = "UK AI Automation";
@@ -133,6 +133,7 @@ $twitter_card_image = "https://ukaiautomation.co.uk/assets/images/ukaiautomation
.hero-container{position:relative;z-index:2;width:100%}
.hero-content{text-align:center;max-width:800px;margin:0 auto}
.hero-title{font-size:3.5rem;font-weight:700;margin-bottom:24px;line-height:1.2}
.hero-eyebrow{font-size:0.85rem;font-weight:600;text-transform:uppercase;letter-spacing:0.12em;opacity:0.75;margin-bottom:16px}
.hero-subtitle{font-size:1.3rem;margin-bottom:40px;opacity:0.95;line-height:1.5}
.btn{display:inline-flex;align-items:center;justify-content:center;padding:14px 28px;border:none;border-radius:8px;text-decoration:none;font-weight:500;font-size:16px;cursor:pointer;transition:all 0.3s ease;box-shadow:0 2px 8px rgba(0,0,0,0.1);min-height:48px}
.btn-primary{background:#4f46e5;color:white!important}
@@ -141,8 +142,9 @@ $twitter_card_image = "https://ukaiautomation.co.uk/assets/images/ukaiautomation
</style>
<!-- Styles -->
<link rel="stylesheet" href="/assets/css/main.min.css?v=1.1.4" media="print" onload="this.media='all'">
<noscript><link rel="stylesheet" href="assets/css/main.min.css?v=1.1.4"></noscript>
<link rel="stylesheet" id="main-css" href="/assets/css/main.min.css?v=1.1.4" media="print">
<noscript><link rel="stylesheet" href="/assets/css/main.min.css?v=1.1.4"></noscript>
<script nonce="<?php echo $nonce; ?>">(function(){var l=document.getElementById('main-css');if(l.sheet){l.media='all';}else{l.addEventListener('load',function(){this.media='all';});}})();</script>
<!-- Enhanced Local SEO Schema -->
<script type="application/ld+json" nonce="<?php echo $nonce; ?>">
@@ -403,7 +405,6 @@ $twitter_card_image = "https://ukaiautomation.co.uk/assets/images/ukaiautomation
</head>
<body>
<!-- Skip to content link for accessibility -->
<a href="#main-content" class="skip-to-content">Skip to main content</a>
<!-- Google Tag Manager (noscript) -->
<!-- TODO: Replace GTM-XXXXXXX with your Google Tag Manager container ID -->
@@ -550,7 +551,7 @@ $twitter_card_image = "https://ukaiautomation.co.uk/assets/images/ukaiautomation
<section id="services" class="services">
<div class="container">
<div class="section-header">
<p class=section-label>Our Services</p>
<p class="section-label">Our Services</p>
<p>We automate the manual data and research work that costs UK legal and consultancy firms hours every week. Delivered as working, fully-tested systems.</p>
</div>
<div class="services-grid">

View File

@@ -9,7 +9,7 @@ session_start();
header('Strict-Transport-Security: max-age=31536000; includeSubDomains');
$page_title = "Free AI Automation Quote | Legal & Consultancy Firms UK";
$page_description = "Book a free AI automation assessment for your law firm or consultancy. We identify document processing and research workflows AI can automate. No commitment.";
$page_description = "Get a free AI automation quote for your law firm or consultancy. We scope document processing & research workflows. No commitment required.";
$canonical_url = "https://ukaiautomation.co.uk/quote";
// Breadcrumb navigation
@@ -194,7 +194,8 @@ $breadcrumbs = [
<style>
.quote-hero {
padding: 100px 0 30px; /* padding-top overridden by main.css */
background: linear-gradient(135deg, #f5f7fa 0%, #c3cfe2 100%);
background: linear-gradient(135deg, #1e1b4b 0%, #7c3aed 100%);
color: white;
text-align: center;
}
@@ -459,7 +460,6 @@ $breadcrumbs = [
</head>
<body>
<!-- Skip to content link for accessibility -->
<a href="#main-content" class="skip-to-content">Skip to main content</a>
<!-- Navigation -->
<?php include($_SERVER["DOCUMENT_ROOT"] . "/includes/nav.php"); ?>