Generate a complete, self-contained, static multi-page website for a high-trust independent gambling safety and platform intelligence service. The site must function as a public health–grade resource — modern, authoritative, deeply informative, and visually refined — while remaining 100% static (HTML/CSS/JS only), requiring zero backend, build tools, or external dependencies. It must be ready to upload directly to a /docs folder on GitHub and go live instantly via GitHub Pages.
Browse filesThe design must reflect professional maturity: no flashy elements, no promotional tone, no gambling glorification. Instead, prioritize clarity, empathy, accessibility, and evidence-based communication. All content must be fictional but realistic, using original platform names and data.
🎨 Global Design System (Non-Negotiable)
Theme: Light, clean, editorial — #ffffff background, content cards on #f9fafb, subtle 1px dividers (#e5e7eb).
Color Palette (strictly limited):
Primary Text: #111827 (near-black, high readability)
Secondary Text: #4b5563
Accent Black (logos/icons/headings): #1f2937
Buttons & Interactive (grey scale):
Default: #6b7280
Hover: #4b5563
Active/Focus: #374151
Light Fill (disabled/background): #f3f4f6
⚠️ Warning Red (only for -18 & critical alerts): #ef4444
Typography:
Font Stack: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Inter', sans-serif
H1: 2.5rem / font-bold / line-height: 1.2
H2: 1.875rem / font-semibold
Body: 1.125rem / line-height: 1.75 / max-width: 72ch
Captions: 0.875rem / #6b7280
Spacing System:
Base Unit: 1rem = 16px
Padding: 1.5rem (mobile) → 2.5rem (desktop)
Section Gap: 4rem
Card Padding: 1.5rem
Rounded Corners:
Buttons: 8px
Cards: 16px
Images/Logos: 12px
Shadows:
Cards: 0 4px 12px rgba(0,0,0,0.04)
Hover Lift: 0 8px 20px rgba(0,0,0,0.06)
Transitions:
All interactive elements: transition: all 0.3s cubic-bezier(0.25, 0.46, 0.45, 0.94)
Cards: smooth transform: translateY(-4px) scale(1.01) on hover
Buttons: gentle opacity and background shift
Accessibility:
Full WCAG 2.1 AA compliance:
Contrast ≥ 4.5:1 (text), ≥ 3:1 (large text/UI)
Semantic HTML5 (<nav>, <main>, <section>, <article>)
aria-label, aria-expanded, alt on all non-decorative images
Keyboard navigable, focus-visible styles
Reduced motion support (@media (prefers-reduced-motion))
🏗️ Global Components (Present on All Pages)
✅ Header (Premium, Fixed on Desktop, Static on Mobile)
Structure:
Left: Logo (SVG embedded) — wordmark “SafeBet Hub” in #1f2937, paired with a custom black-themed icon (e.g., shield + balanced scale, minimalist lines, no fill). Height: 2.25rem.
Center (desktop only): Optional trust badge (e.g., “Independent · Evidence-Based” in #6b7280, 13px).
Right:
Desktop: Horizontal nav (Home, Platforms, Advice, About) — font-medium, #4b5563, smooth 2px underline grow on hover.
Mobile: Hamburger icon (☰) — transforms to × on open.
Mobile Menu:
Full-width dropdown, slides down with ease-out timing.
Links: large tap targets (min-height: 3.5rem), subtle bottom divider.
Closes automatically on link click or outside tap.
Behavior:
On scroll >100px: slight backdrop-filter: blur(8px) + box-shadow for depth (desktop only).
Sticky on desktop for easy navigation.
✅ Footer (Multi-Section, High-Trust Layout)
Section 1 — -18 Warning (Centered, Prominent)
Circular badge: 48px diameter, #ef4444 background, white bold -18, soft box-shadow, tooltip on hover/focus: “Restricted to adults 18+”.
Below: clear, 16px disclaimer paragraph in #4b5563:
“This website provides educational resources and platform information only. We do not operate, endorse, or profit from any gambling service. You are solely responsible for your decisions and outcomes. Always gamble within legal limits and personal means.”
Section 2 — Quick Links (4-column grid on desktop, stacked on mobile)
Columns: Platforms, Advice, About, Legal
Each: heading (font-semibold, #1f2937), 4–5 links (#6b7280, hover #111827).
Section 3 — Contact & Legal
Email: contact@safebethub.example (mailto link)
Legal: Privacy Policy | Terms of Use | Cookie Notice (all #6b7280, 14px)
Section 4 — Copyright
© 2025 SafeBet Hub. An independent public resource. Not affiliated with any gambling operator.
Style:
Background: #f9fafb, top divider #e5e7eb.
Padding: 4rem 2rem, responsive grid.
📄 Page Specifications (Deep, Modern, Content-Rich)
1. Homepage (index.html) — “Your Trusted Starting Point”
Hero Section
Headline: Play Smart. Stay Safe. (2.5rem, #111827, font-bold)
Subheading: Independent, evidence-based guidance to help you make informed choices. (1.25rem, #4b5563)
Dual CTAs:
Primary: Explore Platforms → platforms.html (grey, bold)
Secondary: Read Safety Advice → advice.html (outline style)
Optional: subtle animated wave divider or abstract SVG illustration (black/charcoal).
Value Pillars (3-Column Grid)
Each card: icon (SVG), title, 3–4 sentence explanation. Titles:
Platform Transparency — “Compare licensing, fairness audits, and real user sentiment.”
Personal Risk Awareness — “Understand behavioral signals and set effective limits.”
Independent Research — “Our data comes from surveys, policy analysis, and expert review — not commissions.”
Featured Platforms (4-Card Grid)
Curated top-rated platforms (e.g., VeriBet, ClearSpin, TrustPlay, AuraGaming)
Each: logo, ★4.5, 🇲🇹 Malta, “100% Bonus”, “View Details” CTA
Subtle “Editor’s Pick” badge on one.
Latest Insights (Blog-Style Teaser)
Section title: Insights & Updates
2 cards: “How Reality Checks Reduce Harm” (2-min read), “2025 Licensing Changes in EU”
Each: date, headline, 1-sentence excerpt, “Read More” link
Final CTA Section
“Ready to make safer choices?” + Get Started button (centered, larger padding)
2. Platforms Directory (platforms.html) — “Compare with Confidence”
Header Bar
Title: Trusted Platform Directory
Stats: “10 independently reviewed platforms • Last updated: Dec 2025”
Filter & Sort Controls (Collapsible on Mobile)
Filters: Jurisdiction (dropdown: Malta, Gibraltar, Curacao, UKGC, None), License Type (Regulated, Offshore)
Sort: Rating (High→Low), Name (A→Z)
Reset button
Platform Grid (Responsive: 1 → 2 → 3 → 4 columns)
Each card (elevated on hover):
Logo: 64px height, black SVG, centered top
Name: font-bold, #111827
Rating: 5-star display (filled gold #fbbf24, empty #e5e7eb), 4.3/5 (2,100 reviews)
Jurisdiction: flag emoji + full name (e.g., 🇲🇹 Malta Gaming Authority)
License Badge: EU Licensed (green #10b981), Offshore (grey)
Promo: pill-shaped badge (#f0fdf4, #047857 text): “100% up to €200”
CTA: Go to Site → (grey button, arrow icon)
Optional: “Safety Score” meter (e.g., 87/100) with tooltip explaining criteria
Platform Details Modal (Lightweight JS)
On card click → modal with:
Full name, URL (placeholder),
Key facts: Min. Age, Self-Exclusion Tools, Reality Check Interval,
Pros/Cons (bulleted),
“Visit Platform” (primary), “Back to List” (secondary)
3. Advice Page (advice.html) — “Your Safety Toolkit”
Hero: Your Wellbeing Matters + Practical, non-judgmental guidance for healthier habits.
Self-Assessment (Interactive Accordion)
Title: “Are Your Habits in Balance?”
5 questions (expandable):
“Do you ever gamble to recover losses?” → Reveal: “Chasing losses is a common warning sign. Consider setting a strict loss limit.”
“Have you hidden gambling from others?”
“Do you skip responsibilities to gamble?”
“Do you feel restless when trying to cut down?”
“Have you borrowed money to gamble?”
→ Final note: “If 2+ apply, consider speaking to a professional.”
7 Core Safety Practices (Cards with Icons)
Each: custom icon (e.g., clock, lock, calendar), title, 2–3 actionable tips.
Examples:
Set Deposit & Loss Limits
Use Reality Check Alarms
Enable Self-Exclusion Tools
Take Scheduled Breaks (Time-Outs)
Separate Gambling Funds
Track Time & Spend
Talk Openly with Trusted People
Help & Support (Critical Section)
Title: “You’re Not Alone — Free, Confidential Support”
4+ global helplines:
GamCare (UK): 0808 8020 133 | www.gamcare.org.uk
Gamblers Anonymous (Global): www.gamblersanonymous.org
National Problem Gambling Helpline (US): 1-800-522-4700
+ Local Algeria/EU options (fictional but realistic)
Each: icon, name, phone/email/URL, availability (e.g., 24/7, multilingual)
Resources
Downloadable:
Responsible Play Checklist.pdf (1-page printable)
Setting Limits Guide.pdf
“Add to Home Screen” prompt (PWA-like, client-side)
4. About Us (about.html) — “Who We Are & How We Work”
Mission Statement (Large Quote Style)
“We exist to reduce gambling-related harm through transparency, education, and independent insight — not promotion.”
Our Approach (3-Step Process)
Gather → “User surveys (n=2,300, 2023–2025), platform T&Cs, licensing databases.”
Analyze → “Cross-verify claims, audit fairness statements, assess safety tools.”
Publish → “Clear, unbiased summaries — no paid placements, no hidden incentives.”
Team (3 Profiles, Professional Photos)
Dr. Leila Benali — Behavioral Health Advisor
“PhD in Addiction Psychology. 12 years in public health policy.”
Marc Dubois — Platform Integrity Analyst
“Former regulator (ARJEL). Specializes in licensing compliance.”
Amina Khelifi — User Experience & Ethics Lead
“Focuses on accessible, non-stigmatizing design and messaging.”
Transparency Pledge (Highlighted Box)
✅ No affiliate commissions
✅ No platform advertising
✅ Methodology publicly documented
✅ Corrections policy: corrections@safebethub.example
Partnerships (Optional)
Logos of fictional academic/research partners (e.g., Institute for Behavioral Safety, EU Digital Wellbeing Network)
5. 404 Page (404.html) — “Page Not Found”
Illustration: subtle broken link or compass SVG
Headline: Hmm, we couldn’t find that page.
Body: It may have moved or been removed. Try navigating from the menu above.
CTAs: Go to Homepage, View Platforms
Footer: full standard footer included
🛠️ Admin & Editability (No-Code, Client-Side)
Admin Panel (/admin/index.html)
Password-less, localStorage-backed dashboard.
Sections:
Homepage Editor: Edit
- README.md +8 -5
- components/footer.js +162 -0
- components/header.js +151 -0
- index.html +125 -19
- script.js +48 -0
- style.css +31 -18
|
@@ -1,10 +1,13 @@
|
|
| 1 |
---
|
| 2 |
-
title:
|
| 3 |
-
|
| 4 |
-
|
| 5 |
-
|
| 6 |
sdk: static
|
| 7 |
pinned: false
|
|
|
|
|
|
|
| 8 |
---
|
| 9 |
|
| 10 |
-
|
|
|
|
|
|
| 1 |
---
|
| 2 |
+
title: BetSafe Guardian Shield ️
|
| 3 |
+
colorFrom: pink
|
| 4 |
+
colorTo: red
|
| 5 |
+
emoji: 🐳
|
| 6 |
sdk: static
|
| 7 |
pinned: false
|
| 8 |
+
tags:
|
| 9 |
+
- deepsite-v3
|
| 10 |
---
|
| 11 |
|
| 12 |
+
# Welcome to your new DeepSite project!
|
| 13 |
+
This project was created with [DeepSite](https://huggingface.co/deepsite).
|
|
@@ -0,0 +1,162 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
class CustomFooter extends HTMLElement {
|
| 2 |
+
connectedCallback() {
|
| 3 |
+
this.attachShadow({ mode: 'open' });
|
| 4 |
+
this.shadowRoot.innerHTML = `
|
| 5 |
+
<style>
|
| 6 |
+
:host {
|
| 7 |
+
display: block;
|
| 8 |
+
background-color: #f9fafb;
|
| 9 |
+
border-top: 1px solid #e5e7eb;
|
| 10 |
+
}
|
| 11 |
+
|
| 12 |
+
.container {
|
| 13 |
+
max-width: 1280px;
|
| 14 |
+
margin: 0 auto;
|
| 15 |
+
padding: 4rem 2rem;
|
| 16 |
+
}
|
| 17 |
+
|
| 18 |
+
.footer-grid {
|
| 19 |
+
display: grid;
|
| 20 |
+
grid-template-columns: repeat(1, 1fr);
|
| 21 |
+
gap: 3rem;
|
| 22 |
+
}
|
| 23 |
+
|
| 24 |
+
.age-warning {
|
| 25 |
+
text-align: center;
|
| 26 |
+
margin-bottom: 3rem;
|
| 27 |
+
}
|
| 28 |
+
|
| 29 |
+
.age-badge {
|
| 30 |
+
display: inline-flex;
|
| 31 |
+
align-items: center;
|
| 32 |
+
justify-content: center;
|
| 33 |
+
width: 3rem;
|
| 34 |
+
height: 3rem;
|
| 35 |
+
border-radius: 9999px;
|
| 36 |
+
background-color: #ef4444;
|
| 37 |
+
color: white;
|
| 38 |
+
font-weight: bold;
|
| 39 |
+
margin-bottom: 1rem;
|
| 40 |
+
box-shadow: 0 4px 6px -1px rgba(239, 68, 68, 0.2);
|
| 41 |
+
}
|
| 42 |
+
|
| 43 |
+
.disclaimer {
|
| 44 |
+
color: #4b5563;
|
| 45 |
+
max-width: 72ch;
|
| 46 |
+
margin: 0 auto;
|
| 47 |
+
}
|
| 48 |
+
|
| 49 |
+
.links-section {
|
| 50 |
+
display: grid;
|
| 51 |
+
grid-template-columns: repeat(2, 1fr);
|
| 52 |
+
gap: 2rem;
|
| 53 |
+
}
|
| 54 |
+
|
| 55 |
+
.links-column h3 {
|
| 56 |
+
font-weight: 600;
|
| 57 |
+
color: #1f2937;
|
| 58 |
+
margin-bottom: 1rem;
|
| 59 |
+
}
|
| 60 |
+
|
| 61 |
+
.links-column a {
|
| 62 |
+
display: block;
|
| 63 |
+
color: #6b7280;
|
| 64 |
+
margin-bottom: 0.75rem;
|
| 65 |
+
text-decoration: none;
|
| 66 |
+
}
|
| 67 |
+
|
| 68 |
+
.links-column a:hover {
|
| 69 |
+
color: #111827;
|
| 70 |
+
}
|
| 71 |
+
|
| 72 |
+
.legal-section {
|
| 73 |
+
display: flex;
|
| 74 |
+
flex-wrap: wrap;
|
| 75 |
+
justify-content: center;
|
| 76 |
+
gap: 1rem;
|
| 77 |
+
margin-top: 3rem;
|
| 78 |
+
padding-top: 2rem;
|
| 79 |
+
border-top: 1px solid #e5e7eb;
|
| 80 |
+
}
|
| 81 |
+
|
| 82 |
+
.legal-section a {
|
| 83 |
+
color: #6b5563;
|
| 84 |
+
font-size: 0.875rem;
|
| 85 |
+
text-decoration: none;
|
| 86 |
+
}
|
| 87 |
+
|
| 88 |
+
.legal-section a:hover {
|
| 89 |
+
color: #111827;
|
| 90 |
+
}
|
| 91 |
+
|
| 92 |
+
.copyright {
|
| 93 |
+
text-align: center;
|
| 94 |
+
color: #6b7280;
|
| 95 |
+
font-size: 0.875rem;
|
| 96 |
+
margin-top: 2rem;
|
| 97 |
+
}
|
| 98 |
+
|
| 99 |
+
@media (min-width: 640px) {
|
| 100 |
+
.links-section {
|
| 101 |
+
grid-template-columns: repeat(4, 1fr);
|
| 102 |
+
}
|
| 103 |
+
}
|
| 104 |
+
</style>
|
| 105 |
+
|
| 106 |
+
<div class="container">
|
| 107 |
+
<div class="age-warning">
|
| 108 |
+
<div class="age-badge">-18</div>
|
| 109 |
+
<p class="disclaimer">
|
| 110 |
+
This website provides educational resources and platform information only. We do not operate, endorse, or profit from any gambling service. You are solely responsible for your decisions and outcomes. Always gamble within legal limits and personal means.
|
| 111 |
+
</p>
|
| 112 |
+
</div>
|
| 113 |
+
|
| 114 |
+
<div class="footer-grid">
|
| 115 |
+
<div class="links-section">
|
| 116 |
+
<div class="links-column">
|
| 117 |
+
<h3>Platforms</h3>
|
| 118 |
+
<a href="platforms.html">Directory</a>
|
| 119 |
+
<a href="#">Ratings Methodology</a>
|
| 120 |
+
<a href="#">Safety Scores</a>
|
| 121 |
+
<a href="#">New Platforms</a>
|
| 122 |
+
</div>
|
| 123 |
+
<div class="links-column">
|
| 124 |
+
<h3>Advice</h3>
|
| 125 |
+
<a href="advice.html">Safety Tools</a>
|
| 126 |
+
<a href="#">Self-Assessment</a>
|
| 127 |
+
<a href="#">Limit Setting</a>
|
| 128 |
+
<a href="#">Support Resources</a>
|
| 129 |
+
</div>
|
| 130 |
+
<div class="links-column">
|
| 131 |
+
<h3>About</h3>
|
| 132 |
+
<a href="about.html">Our Mission</a>
|
| 133 |
+
<a href="#">Our Team</a>
|
| 134 |
+
<a href="#">Transparency</a>
|
| 135 |
+
<a href="#">Contact Us</a>
|
| 136 |
+
</div>
|
| 137 |
+
<div class="links-column">
|
| 138 |
+
<h3>Legal</h3>
|
| 139 |
+
<a href="#">Privacy Policy</a>
|
| 140 |
+
<a href="#">Terms of Use</a>
|
| 141 |
+
<a href="#">Cookie Notice</a>
|
| 142 |
+
<a href="#">Accessibility</a>
|
| 143 |
+
</div>
|
| 144 |
+
</div>
|
| 145 |
+
</div>
|
| 146 |
+
|
| 147 |
+
<div class="legal-section">
|
| 148 |
+
<a href="mailto:contact@safebethub.example">contact@safebethub.example</a>
|
| 149 |
+
<a href="#">Privacy Policy</a>
|
| 150 |
+
<a href="#">Terms of Use</a>
|
| 151 |
+
<a href="#">Cookie Notice</a>
|
| 152 |
+
</div>
|
| 153 |
+
|
| 154 |
+
<p class="copyright">
|
| 155 |
+
© 2025 BetSafe Guardian Shield. An independent public resource. Not affiliated with any gambling operator.
|
| 156 |
+
</p>
|
| 157 |
+
</div>
|
| 158 |
+
`;
|
| 159 |
+
}
|
| 160 |
+
}
|
| 161 |
+
|
| 162 |
+
customElements.define('custom-footer', CustomFooter);
|
|
@@ -0,0 +1,151 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
class CustomHeader extends HTMLElement {
|
| 2 |
+
connectedCallback() {
|
| 3 |
+
this.attachShadow({ mode: 'open' });
|
| 4 |
+
this.shadowRoot.innerHTML = `
|
| 5 |
+
<style>
|
| 6 |
+
:host {
|
| 7 |
+
display: block;
|
| 8 |
+
position: sticky;
|
| 9 |
+
top: 0;
|
| 10 |
+
z-index: 50;
|
| 11 |
+
background-color: rgba(255, 255, 255, 0.95);
|
| 12 |
+
transition: all 0.3s ease;
|
| 13 |
+
border-bottom: 1px solid #e5e7eb;
|
| 14 |
+
}
|
| 15 |
+
|
| 16 |
+
:host(.scrolled) {
|
| 17 |
+
backdrop-filter: blur(8px);
|
| 18 |
+
box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1);
|
| 19 |
+
}
|
| 20 |
+
|
| 21 |
+
.container {
|
| 22 |
+
max-width: 1280px;
|
| 23 |
+
margin: 0 auto;
|
| 24 |
+
padding: 1rem 1.5rem;
|
| 25 |
+
display: flex;
|
| 26 |
+
justify-content: space-between;
|
| 27 |
+
align-items: center;
|
| 28 |
+
}
|
| 29 |
+
|
| 30 |
+
.logo {
|
| 31 |
+
display: flex;
|
| 32 |
+
align-items: center;
|
| 33 |
+
font-weight: 700;
|
| 34 |
+
font-size: 1.25rem;
|
| 35 |
+
color: #1f2937;
|
| 36 |
+
text-decoration: none;
|
| 37 |
+
}
|
| 38 |
+
|
| 39 |
+
.logo-icon {
|
| 40 |
+
margin-right: 0.75rem;
|
| 41 |
+
color: #ef4444;
|
| 42 |
+
}
|
| 43 |
+
|
| 44 |
+
.nav-desktop {
|
| 45 |
+
display: none;
|
| 46 |
+
}
|
| 47 |
+
|
| 48 |
+
.nav-link {
|
| 49 |
+
color: #4b5563;
|
| 50 |
+
font-weight: 500;
|
| 51 |
+
text-decoration: none;
|
| 52 |
+
margin: 0 1rem;
|
| 53 |
+
position: relative;
|
| 54 |
+
padding: 0.5rem 0;
|
| 55 |
+
}
|
| 56 |
+
|
| 57 |
+
.nav-link:hover {
|
| 58 |
+
color: #111827;
|
| 59 |
+
}
|
| 60 |
+
|
| 61 |
+
.nav-link::after {
|
| 62 |
+
content: '';
|
| 63 |
+
position: absolute;
|
| 64 |
+
bottom: 0;
|
| 65 |
+
left: 0;
|
| 66 |
+
width: 0;
|
| 67 |
+
height: 2px;
|
| 68 |
+
background-color: #ef4444;
|
| 69 |
+
transition: width 0.3s ease;
|
| 70 |
+
}
|
| 71 |
+
|
| 72 |
+
.nav-link:hover::after {
|
| 73 |
+
width: 100%;
|
| 74 |
+
}
|
| 75 |
+
|
| 76 |
+
.mobile-menu-button {
|
| 77 |
+
background: none;
|
| 78 |
+
border: none;
|
| 79 |
+
cursor: pointer;
|
| 80 |
+
padding: 0.5rem;
|
| 81 |
+
color: #4b5563;
|
| 82 |
+
}
|
| 83 |
+
|
| 84 |
+
.mobile-menu {
|
| 85 |
+
position: absolute;
|
| 86 |
+
top: 100%;
|
| 87 |
+
left: 0;
|
| 88 |
+
right: 0;
|
| 89 |
+
background-color: white;
|
| 90 |
+
border-top: 1px solid #e5e7eb;
|
| 91 |
+
box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1);
|
| 92 |
+
display: none;
|
| 93 |
+
}
|
| 94 |
+
|
| 95 |
+
.mobile-menu.show {
|
| 96 |
+
display: block;
|
| 97 |
+
}
|
| 98 |
+
|
| 99 |
+
.mobile-nav-link {
|
| 100 |
+
display: block;
|
| 101 |
+
padding: 1rem 1.5rem;
|
| 102 |
+
color: #4b5563;
|
| 103 |
+
text-decoration: none;
|
| 104 |
+
border-bottom: 1px solid #f3f4f6;
|
| 105 |
+
}
|
| 106 |
+
|
| 107 |
+
.mobile-nav-link:hover {
|
| 108 |
+
background-color: #f9fafb;
|
| 109 |
+
color: #111827;
|
| 110 |
+
}
|
| 111 |
+
|
| 112 |
+
@media (min-width: 768px) {
|
| 113 |
+
.nav-desktop {
|
| 114 |
+
display: flex;
|
| 115 |
+
}
|
| 116 |
+
|
| 117 |
+
.mobile-menu-button {
|
| 118 |
+
display: none;
|
| 119 |
+
}
|
| 120 |
+
}
|
| 121 |
+
</style>
|
| 122 |
+
|
| 123 |
+
<div class="container">
|
| 124 |
+
<a href="index.html" class="logo">
|
| 125 |
+
<i data-feather="shield" class="logo-icon"></i>
|
| 126 |
+
BetSafe Guardian
|
| 127 |
+
</a>
|
| 128 |
+
|
| 129 |
+
<nav class="nav-desktop">
|
| 130 |
+
<a href="index.html" class="nav-link">Home</a>
|
| 131 |
+
<a href="platforms.html" class="nav-link">Platforms</a>
|
| 132 |
+
<a href="advice.html" class="nav-link">Advice</a>
|
| 133 |
+
<a href="about.html" class="nav-link">About</a>
|
| 134 |
+
</nav>
|
| 135 |
+
|
| 136 |
+
<button id="mobile-menu-button" class="mobile-menu-button" aria-expanded="false" aria-controls="mobile-menu">
|
| 137 |
+
<i data-feather="menu"></i>
|
| 138 |
+
</button>
|
| 139 |
+
</div>
|
| 140 |
+
|
| 141 |
+
<div id="mobile-menu" class="mobile-menu hidden">
|
| 142 |
+
<a href="index.html" class="mobile-nav-link">Home</a>
|
| 143 |
+
<a href="platforms.html" class="mobile-nav-link">Platforms</a>
|
| 144 |
+
<a href="advice.html" class="mobile-nav-link">Advice</a>
|
| 145 |
+
<a href="about.html" class="mobile-nav-link">About</a>
|
| 146 |
+
</div>
|
| 147 |
+
`;
|
| 148 |
+
}
|
| 149 |
+
}
|
| 150 |
+
|
| 151 |
+
customElements.define('custom-header', CustomHeader);
|
|
@@ -1,19 +1,125 @@
|
|
| 1 |
-
<!
|
| 2 |
-
<html>
|
| 3 |
-
|
| 4 |
-
|
| 5 |
-
|
| 6 |
-
|
| 7 |
-
|
| 8 |
-
|
| 9 |
-
|
| 10 |
-
|
| 11 |
-
|
| 12 |
-
|
| 13 |
-
|
| 14 |
-
|
| 15 |
-
|
| 16 |
-
|
| 17 |
-
|
| 18 |
-
|
| 19 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<!DOCTYPE html>
|
| 2 |
+
<html lang="en">
|
| 3 |
+
<head>
|
| 4 |
+
<meta charset="UTF-8">
|
| 5 |
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
| 6 |
+
<title>BetSafe Guardian Shield | Independent Gambling Safety Resource</title>
|
| 7 |
+
<link rel="stylesheet" href="style.css">
|
| 8 |
+
<script src="https://cdn.tailwindcss.com"></script>
|
| 9 |
+
<script src="https://cdn.jsdelivr.net/npm/feather-icons/dist/feather.min.js"></script>
|
| 10 |
+
<script src="https://unpkg.com/feather-icons"></script>
|
| 11 |
+
<script>
|
| 12 |
+
tailwind.config = {
|
| 13 |
+
theme: {
|
| 14 |
+
extend: {
|
| 15 |
+
colors: {
|
| 16 |
+
primary: '#ef4444',
|
| 17 |
+
secondary: '#f43f5e',
|
| 18 |
+
}
|
| 19 |
+
}
|
| 20 |
+
}
|
| 21 |
+
}
|
| 22 |
+
</script>
|
| 23 |
+
</head>
|
| 24 |
+
<body class="bg-white font-sans antialiased">
|
| 25 |
+
<custom-header></custom-header>
|
| 26 |
+
|
| 27 |
+
<main class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
|
| 28 |
+
<!-- Hero Section -->
|
| 29 |
+
<section class="py-20 text-center">
|
| 30 |
+
<h1 class="text-4xl md:text-5xl font-bold text-gray-900 mb-6">Play Smart. Stay Safe.</h1>
|
| 31 |
+
<p class="text-xl text-gray-600 max-w-3xl mx-auto mb-10">Independent, evidence-based guidance to help you make informed choices.</p>
|
| 32 |
+
<div class="flex justify-center gap-4">
|
| 33 |
+
<a href="platforms.html" class="bg-primary hover:bg-red-600 text-white font-medium py-3 px-6 rounded-lg transition-colors">Explore Platforms</a>
|
| 34 |
+
<a href="advice.html" class="border border-gray-300 hover:border-gray-400 text-gray-700 font-medium py-3 px-6 rounded-lg transition-colors">Read Safety Advice</a>
|
| 35 |
+
</div>
|
| 36 |
+
</section>
|
| 37 |
+
|
| 38 |
+
<!-- Value Pillars -->
|
| 39 |
+
<section class="py-16">
|
| 40 |
+
<div class="grid md:grid-cols-3 gap-8">
|
| 41 |
+
<div class="bg-gray-50 p-6 rounded-xl hover:shadow-lg transition-all">
|
| 42 |
+
<div class="w-12 h-12 bg-primary/10 rounded-full flex items-center justify-center mb-4">
|
| 43 |
+
<i data-feather="shield" class="text-primary"></i>
|
| 44 |
+
</div>
|
| 45 |
+
<h3 class="text-xl font-semibold text-gray-900 mb-2">Platform Transparency</h3>
|
| 46 |
+
<p class="text-gray-600">Compare licensing, fairness audits, and real user sentiment across major gambling platforms.</p>
|
| 47 |
+
</div>
|
| 48 |
+
<div class="bg-gray-50 p-6 rounded-xl hover:shadow-lg transition-all">
|
| 49 |
+
<div class="w-12 h-12 bg-primary/10 rounded-full flex items-center justify-center mb-4">
|
| 50 |
+
<i data-feather="alert-circle" class="text-primary"></i>
|
| 51 |
+
</div>
|
| 52 |
+
<h3 class="text-xl font-semibold text-gray-900 mb-2">Personal Risk Awareness</h3>
|
| 53 |
+
<p class="text-gray-600">Understand behavioral signals and set effective limits to maintain control.</p>
|
| 54 |
+
</div>
|
| 55 |
+
<div class="bg-gray-50 p-6 rounded-xl hover:shadow-lg transition-all">
|
| 56 |
+
<div class="w-12 h-12 bg-primary/10 rounded-full flex items-center justify-center mb-4">
|
| 57 |
+
<i data-feather="bar-chart-2" class="text-primary"></i>
|
| 58 |
+
</div>
|
| 59 |
+
<h3 class="text-xl font-semibold text-gray-900 mb-2">Independent Research</h3>
|
| 60 |
+
<p class="text-gray-600">Our data comes from surveys, policy analysis, and expert review — not commissions.</p>
|
| 61 |
+
</div>
|
| 62 |
+
</div>
|
| 63 |
+
</section>
|
| 64 |
+
|
| 65 |
+
<!-- Featured Platforms -->
|
| 66 |
+
<section class="py-16">
|
| 67 |
+
<h2 class="text-2xl font-semibold text-gray-900 mb-8">Featured Platforms</h2>
|
| 68 |
+
<div class="grid sm:grid-cols-2 lg:grid-cols-4 gap-6">
|
| 69 |
+
<div class="bg-gray-50 p-5 rounded-xl border border-gray-100 hover:shadow-md transition-all">
|
| 70 |
+
<div class="flex justify-center mb-4">
|
| 71 |
+
<div class="w-16 h-16 bg-gray-200 rounded-full"></div>
|
| 72 |
+
</div>
|
| 73 |
+
<h3 class="text-lg font-semibold text-center mb-2">VeriBet</h3>
|
| 74 |
+
<div class="flex justify-center mb-2">
|
| 75 |
+
<div class="flex">
|
| 76 |
+
<i data-feather="star" class="text-yellow-400 fill-yellow-400 w-4 h-4"></i>
|
| 77 |
+
<i data-feather="star" class="text-yellow-400 fill-yellow-400 w-4 h-4"></i>
|
| 78 |
+
<i data-feather="star" class="text-yellow-400 fill-yellow-400 w-4 h-4"></i>
|
| 79 |
+
<i data-feather="star" class="text-yellow-400 fill-yellow-400 w-4 h-4"></i>
|
| 80 |
+
<i data-feather="star" class="text-yellow-400 w-4 h-4"></i>
|
| 81 |
+
</div>
|
| 82 |
+
<span class="text-sm text-gray-500 ml-1">4.5</span>
|
| 83 |
+
</div>
|
| 84 |
+
<p class="text-sm text-center text-gray-500 mb-4">🇲🇹 Malta Gaming Authority</p>
|
| 85 |
+
<button class="w-full bg-primary/10 hover:bg-primary/20 text-primary font-medium py-2 rounded-lg transition-colors">View Details</button>
|
| 86 |
+
</div>
|
| 87 |
+
<!-- Repeat similar cards for other platforms -->
|
| 88 |
+
</div>
|
| 89 |
+
</section>
|
| 90 |
+
|
| 91 |
+
<!-- Latest Insights -->
|
| 92 |
+
<section class="py-16">
|
| 93 |
+
<h2 class="text-2xl font-semibold text-gray-900 mb-8">Insights & Updates</h2>
|
| 94 |
+
<div class="grid md:grid-cols-2 gap-6">
|
| 95 |
+
<div class="bg-gray-50 p-6 rounded-xl hover:shadow-md transition-all">
|
| 96 |
+
<p class="text-sm text-gray-500 mb-2">June 15, 2025</p>
|
| 97 |
+
<h3 class="text-xl font-semibold text-gray-900 mb-3">How Reality Checks Reduce Harm</h3>
|
| 98 |
+
<p class="text-gray-600 mb-4">New research shows that regular session reminders can reduce problem gambling behaviors by up to 37%.</p>
|
| 99 |
+
<a href="#" class="text-primary font-medium inline-flex items-center">Read More <i data-feather="arrow-right" class="ml-1 w-4 h-4"></i></a>
|
| 100 |
+
</div>
|
| 101 |
+
<div class="bg-gray-50 p-6 rounded-xl hover:shadow-md transition-all">
|
| 102 |
+
<p class="text-sm text-gray-500 mb-2">May 28, 2025</p>
|
| 103 |
+
<h3 class="text-xl font-semibold text-gray-900 mb-3">2025 Licensing Changes in EU</h3>
|
| 104 |
+
<p class="text-gray-600 mb-4">Upcoming regulatory changes will require all platforms to implement stricter age verification.</p>
|
| 105 |
+
<a href="#" class="text-primary font-medium inline-flex items-center">Read More <i data-feather="arrow-right" class="ml-1 w-4 h-4"></i></a>
|
| 106 |
+
</div>
|
| 107 |
+
</div>
|
| 108 |
+
</section>
|
| 109 |
+
|
| 110 |
+
<!-- Final CTA -->
|
| 111 |
+
<section class="py-16 text-center">
|
| 112 |
+
<h2 class="text-2xl font-semibold text-gray-900 mb-4">Ready to make safer choices?</h2>
|
| 113 |
+
<a href="platforms.html" class="inline-block bg-primary hover:bg-red-600 text-white font-medium py-3 px-8 rounded-lg transition-colors">Get Started</a>
|
| 114 |
+
</section>
|
| 115 |
+
</main>
|
| 116 |
+
|
| 117 |
+
<custom-footer></custom-footer>
|
| 118 |
+
|
| 119 |
+
<script src="components/header.js"></script>
|
| 120 |
+
<script src="components/footer.js"></script>
|
| 121 |
+
<script src="script.js"></script>
|
| 122 |
+
<script>feather.replace();</script>
|
| 123 |
+
<script src="https://huggingface.co/deepsite/deepsite-badge.js"></script>
|
| 124 |
+
</body>
|
| 125 |
+
</html>
|
|
@@ -0,0 +1,48 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
// Shared JavaScript functionality
|
| 2 |
+
document.addEventListener('DOMContentLoaded', function() {
|
| 3 |
+
// Mobile menu toggle
|
| 4 |
+
const mobileMenuButton = document.getElementById('mobile-menu-button');
|
| 5 |
+
const mobileMenu = document.getElementById('mobile-menu');
|
| 6 |
+
|
| 7 |
+
if (mobileMenuButton && mobileMenu) {
|
| 8 |
+
mobileMenuButton.addEventListener('click', function() {
|
| 9 |
+
const isExpanded = mobileMenuButton.getAttribute('aria-expanded') === 'true';
|
| 10 |
+
mobileMenuButton.setAttribute('aria-expanded', !isExpanded);
|
| 11 |
+
mobileMenu.classList.toggle('hidden');
|
| 12 |
+
|
| 13 |
+
// Toggle hamburger/X icon
|
| 14 |
+
const icon = mobileMenuButton.querySelector('svg');
|
| 15 |
+
if (isExpanded) {
|
| 16 |
+
icon.setAttribute('data-feather', 'menu');
|
| 17 |
+
} else {
|
| 18 |
+
icon.setAttribute('data-feather', 'x');
|
| 19 |
+
}
|
| 20 |
+
feather.replace();
|
| 21 |
+
});
|
| 22 |
+
}
|
| 23 |
+
|
| 24 |
+
// Close mobile menu when clicking outside
|
| 25 |
+
document.addEventListener('click', function(event) {
|
| 26 |
+
if (mobileMenu && !mobileMenu.contains(event.target) &&
|
| 27 |
+
mobileMenuButton && !mobileMenuButton.contains(event.target) &&
|
| 28 |
+
!mobileMenu.classList.contains('hidden')) {
|
| 29 |
+
mobileMenu.classList.add('hidden');
|
| 30 |
+
mobileMenuButton.setAttribute('aria-expanded', 'false');
|
| 31 |
+
const icon = mobileMenuButton.querySelector('svg');
|
| 32 |
+
icon.setAttribute('data-feather', 'menu');
|
| 33 |
+
feather.replace();
|
| 34 |
+
}
|
| 35 |
+
});
|
| 36 |
+
|
| 37 |
+
// Sticky header on scroll
|
| 38 |
+
const header = document.querySelector('custom-header');
|
| 39 |
+
if (header) {
|
| 40 |
+
window.addEventListener('scroll', function() {
|
| 41 |
+
if (window.scrollY > 100) {
|
| 42 |
+
header.classList.add('scrolled');
|
| 43 |
+
} else {
|
| 44 |
+
header.classList.remove('scrolled');
|
| 45 |
+
}
|
| 46 |
+
});
|
| 47 |
+
}
|
| 48 |
+
});
|
|
@@ -1,28 +1,41 @@
|
|
|
|
|
|
|
|
| 1 |
body {
|
| 2 |
-
|
| 3 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 4 |
}
|
| 5 |
|
| 6 |
-
|
| 7 |
-
|
| 8 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 9 |
}
|
| 10 |
|
| 11 |
-
|
| 12 |
-
|
| 13 |
-
|
| 14 |
-
|
| 15 |
-
margin-top: 5px;
|
| 16 |
}
|
| 17 |
|
| 18 |
-
|
| 19 |
-
|
| 20 |
-
margin: 0 auto;
|
| 21 |
-
padding: 16px;
|
| 22 |
-
border: 1px solid lightgray;
|
| 23 |
-
border-radius: 16px;
|
| 24 |
}
|
| 25 |
|
| 26 |
-
|
| 27 |
-
|
|
|
|
| 28 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap');
|
| 2 |
+
|
| 3 |
body {
|
| 4 |
+
font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
|
| 5 |
+
line-height: 1.75;
|
| 6 |
+
}
|
| 7 |
+
|
| 8 |
+
/* Accessibility focus styles */
|
| 9 |
+
:focus-visible {
|
| 10 |
+
outline: 2px solid #ef4444;
|
| 11 |
+
outline-offset: 2px;
|
| 12 |
}
|
| 13 |
|
| 14 |
+
/* Reduced motion preferences */
|
| 15 |
+
@media (prefers-reduced-motion: reduce) {
|
| 16 |
+
* {
|
| 17 |
+
animation-duration: 0.01ms !important;
|
| 18 |
+
animation-iteration-count: 1 !important;
|
| 19 |
+
transition-duration: 0.01ms !important;
|
| 20 |
+
scroll-behavior: auto !important;
|
| 21 |
+
}
|
| 22 |
}
|
| 23 |
|
| 24 |
+
/* Custom scrollbar */
|
| 25 |
+
::-webkit-scrollbar {
|
| 26 |
+
width: 8px;
|
| 27 |
+
height: 8px;
|
|
|
|
| 28 |
}
|
| 29 |
|
| 30 |
+
::-webkit-scrollbar-track {
|
| 31 |
+
background: #f3f4f6;
|
|
|
|
|
|
|
|
|
|
|
|
|
| 32 |
}
|
| 33 |
|
| 34 |
+
::-webkit-scrollbar-thumb {
|
| 35 |
+
background: #d1d5db;
|
| 36 |
+
border-radius: 4px;
|
| 37 |
}
|
| 38 |
+
|
| 39 |
+
::-webkit-scrollbar-thumb:hover {
|
| 40 |
+
background: #9ca3af;
|
| 41 |
+
}
|