Site improvements: nav refactor, CSS readability, hover fixes, remove unverified badges

- Refactored navigation: all 44 pages now use shared includes/nav.php
- Added Free Tools link to navigation (was missing from 29+ pages)
- CSS readability: darker body text (#333), secondary text (#555), bolder hero subtitle
- CSS: darkened link colour (#148a72) for WCAG AA compliance
- CSS: increased stat label font size to 1rem
- Fixed industry-card hover white-on-white text bug
- Removed ICO Registered and Cyber Essentials claims (not yet registered)
- Cache version bumped to v1.1.2
This commit is contained in:
root
2026-02-10 22:21:16 +00:00
parent 0598088a86
commit 1a8d9b4f9d
82 changed files with 11381 additions and 2716 deletions

View File

@@ -0,0 +1,218 @@
<?php
/**
* Author Bio Component
* Include this in blog articles to display author information with E-E-A-T signals
*
* Required variables:
* - $article_author (string): Author name
*
* Optional variables:
* - $author_role (string): Author's job title
* - $author_bio (string): Short bio description
* - $author_linkedin (string): LinkedIn URL
*/
// Author database with credentials and bios
$authors = [
'UK Data Services Editorial Team' => [
'role' => 'Data Intelligence Experts',
'bio' => 'Our editorial team comprises data scientists, engineers, and industry analysts with over 50 combined years of experience in web scraping, data analytics, and business intelligence across UK industries.',
'linkedin' => null,
'expertise' => ['Web Scraping', 'Data Analytics', 'Business Intelligence', 'GDPR Compliance'],
'image' => '/assets/images/authors/team-avatar.svg'
],
'James Wilson' => [
'role' => 'Senior Data Architect',
'bio' => 'James is a Senior Data Architect with 12+ years of experience in enterprise web scraping and business intelligence. He holds a Master\'s degree in Computer Science from Imperial College London and is an AWS Solutions Architect Professional.',
'linkedin' => 'https://linkedin.com/company/ukdataservices',
'expertise' => ['Enterprise Architecture', 'Web Scraping', 'Cloud Solutions', 'Data Pipelines'],
'image' => '/assets/images/authors/james-wilson.svg'
],
'Dr. Rachel Singh' => [
'role' => 'Lead Data Scientist',
'bio' => 'Dr. Rachel Singh leads our data science team with expertise in machine learning and AI-powered data extraction. She holds a PhD in Computer Science from University of Cambridge and has published research on NLP and intelligent document processing.',
'linkedin' => 'https://linkedin.com/company/ukdataservices',
'expertise' => ['Machine Learning', 'NLP', 'AI', 'Computer Vision'],
'image' => '/assets/images/authors/rachel-singh.svg'
],
'Michael Thompson' => [
'role' => 'Technical Lead - Web Scraping',
'bio' => 'Michael specializes in large-scale web scraping infrastructure and has designed data collection systems for FTSE 100 companies. He has 10+ years of experience in Python, Scrapy, and distributed systems.',
'linkedin' => 'https://linkedin.com/company/ukdataservices',
'expertise' => ['Python', 'Scrapy', 'Distributed Systems', 'Web Scraping'],
'image' => '/assets/images/authors/michael-thompson.svg'
],
'Sarah Chen' => [
'role' => 'Compliance & Data Protection Officer',
'bio' => 'Sarah is a certified Data Protection Officer (GDPR-P) with extensive experience in UK and EU data regulations. She ensures all our data collection practices meet the highest compliance standards.',
'linkedin' => 'https://linkedin.com/company/ukdataservices',
'expertise' => ['GDPR', 'Data Protection', 'Compliance', 'Privacy'],
'image' => '/assets/images/authors/sarah-chen.svg'
],
'David Martinez' => [
'role' => 'Business Intelligence Consultant',
'bio' => 'David is a certified Tableau and Power BI consultant with 8+ years of experience helping UK businesses transform raw data into actionable insights. He specializes in dashboard design and data visualization.',
'linkedin' => 'https://linkedin.com/company/ukdataservices',
'expertise' => ['Tableau', 'Power BI', 'Data Visualization', 'BI Strategy'],
'image' => '/assets/images/authors/david-martinez.svg'
],
'Emma Richardson' => [
'role' => 'Industry Analyst',
'bio' => 'Emma covers UK market trends and industry analysis with a focus on retail, property, and e-commerce sectors. She has over 6 years of experience in competitive intelligence and market research.',
'linkedin' => 'https://linkedin.com/company/ukdataservices',
'expertise' => ['Market Research', 'Competitive Intelligence', 'E-commerce', 'Retail Analytics'],
'image' => '/assets/images/authors/emma-richardson.svg'
]
];
// Get author info
$author_name = isset($article_author) ? $article_author : 'UK Data Services Editorial Team';
$author_info = isset($authors[$author_name]) ? $authors[$author_name] : $authors['UK Data Services Editorial Team'];
?>
<div class="author-bio" itemscope itemtype="https://schema.org/Person">
<div class="author-avatar">
<img src="<?php echo htmlspecialchars($author_info['image']); ?>"
alt="<?php echo htmlspecialchars($author_name); ?>"
loading="lazy"
width="80"
height="80"
itemprop="image">
</div>
<div class="author-info">
<h4 class="author-header">About the Author</h4>
<p class="author-name" itemprop="name"><?php echo htmlspecialchars($author_name); ?></p>
<p class="author-role" itemprop="jobTitle"><?php echo htmlspecialchars($author_info['role']); ?></p>
<p class="author-description" itemprop="description"><?php echo htmlspecialchars($author_info['bio']); ?></p>
<div class="author-expertise">
<span class="expertise-label">Expertise:</span>
<?php foreach ($author_info['expertise'] as $skill): ?>
<span class="expertise-tag"><?php echo htmlspecialchars($skill); ?></span>
<?php endforeach; ?>
</div>
<?php if ($author_info['linkedin']): ?>
<div class="author-social">
<a href="<?php echo htmlspecialchars($author_info['linkedin']); ?>"
target="_blank"
rel="noopener noreferrer"
itemprop="sameAs"
class="linkedin-link">
<svg width="16" height="16" viewBox="0 0 24 24" fill="currentColor">
<path d="M19 0h-14c-2.761 0-5 2.239-5 5v14c0 2.761 2.239 5 5 5h14c2.762 0 5-2.239 5-5v-14c0-2.761-2.238-5-5-5zm-11 19h-3v-11h3v11zm-1.5-12.268c-.966 0-1.75-.79-1.75-1.764s.784-1.764 1.75-1.764 1.75.79 1.75 1.764-.783 1.764-1.75 1.764zm13.5 12.268h-3v-5.604c0-3.368-4-3.113-4 0v5.604h-3v-11h3v1.765c1.396-2.586 7-2.777 7 2.476v6.759z"/>
</svg>
Connect on LinkedIn
</a>
</div>
<?php endif; ?>
</div>
</div>
<style>
.author-bio {
display: flex;
gap: 20px;
padding: 24px;
background: linear-gradient(135deg, #f8f9fa 0%, #e9ecef 100%);
border-radius: 12px;
margin: 40px 0;
border-left: 4px solid #179e83;
}
.author-avatar img {
width: 80px;
height: 80px;
border-radius: 50%;
object-fit: cover;
border: 3px solid #179e83;
}
.author-info {
flex: 1;
}
.author-header {
font-size: 0.85rem;
text-transform: uppercase;
letter-spacing: 0.5px;
color: #144784;
margin: 0 0 8px 0;
font-weight: 600;
}
.author-name {
font-size: 1.25rem;
font-weight: 700;
color: #1a1a1a;
margin: 0 0 4px 0;
}
.author-role {
font-size: 0.95rem;
color: #666;
margin: 0 0 12px 0;
font-weight: 500;
}
.author-description {
font-size: 0.95rem;
color: #444;
line-height: 1.6;
margin: 0 0 16px 0;
}
.author-expertise {
display: flex;
flex-wrap: wrap;
gap: 8px;
align-items: center;
margin-bottom: 12px;
}
.expertise-label {
font-size: 0.85rem;
font-weight: 600;
color: #555;
}
.expertise-tag {
font-size: 0.8rem;
padding: 4px 10px;
background: #fff;
border: 1px solid #ddd;
border-radius: 16px;
color: #555;
}
.author-social .linkedin-link {
display: inline-flex;
align-items: center;
gap: 6px;
color: #0077b5;
text-decoration: none;
font-size: 0.9rem;
font-weight: 500;
transition: color 0.2s;
}
.author-social .linkedin-link:hover {
color: #005885;
text-decoration: underline;
}
@media (max-width: 600px) {
.author-bio {
flex-direction: column;
text-align: center;
}
.author-avatar {
margin: 0 auto;
}
.author-expertise {
justify-content: center;
}
}
</style>