MAKE WEBSITE AIDOCTORSCLINIC.COM AND LINK WITH MY DOMAIN
mkdir -p /home/daytona/workspace/aidoctorsclinic/assets/css /home/daytona/workspace/aidoctorsclinic/assets/js /home/daytona/workspace/aidoctorsclinic/assets/images && echo "Directories created"
~/aidoctorsclinic/assets/css/styles.css
/* ============================================
AIDoctorsClinic.com - Main Stylesheet
============================================ */
/* ---------- CSS Variables ---------- */
:root {
--primary: #0d6efd;
--primary-dark: #0a58ca;
--accent: #00c9a7;
--dark: #0f1b2d;
--text: #2d3748;
--light-bg: #f0f6ff;
--white: #ffffff;
--border: #dee2e6;
--shadow: 0 4px 24px rgba(13,110,253,.12);
--radius: 12px;
--transition: 0.3s ease;
--font: 'Inter', 'Segoe UI', Arial, sans-serif;
}
/* ---------- Reset ---------- */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
html { scroll-behavior: smooth; font-size: 16px; }
body { font-family: var(--font); color: var(--text); background: var(--white); line-height: 1.7; }
img { max-width: 100%; display: block; }
a { text-decoration: none; color: inherit; }
ul { list-style: none; }
/* ---------- Typography ---------- */
h1, h2, h3, h4 { line-height: 1.25; font-weight: 700; color: var(--dark); }
h1 { font-size: clamp(2rem, 5vw, 3.2rem); }
h2 { font-size: clamp(1.6rem, 3.5vw, 2.4rem); }
h3 { font-size: 1.25rem; }
p { margin-bottom: 1rem; }
/* ---------- Utility ---------- */
.container { max-width: 1180px; margin: 0 auto; padding: 0 1.5rem; }
.section { padding: 5rem 0; }
.section--grey { background: var(--light-bg); }
.text-center { text-align: center; }
.tag { display: inline-block; background: rgba(13,110,253,.1); color: var(--primary); font-size: .8rem; font-weight: 600; padding: .25rem .75rem; border-radius: 999px; text-transform: uppercase; letter-spacing: .06em; margin-bottom: .75rem; }
.badge-ai { background: linear-gradient(135deg,#0d6efd,#00c9a7); color: #fff; padding: .2rem .65rem; border-radius: 6px; font-size: .75rem; font-weight: 700; letter-spacing: .04em; }
/* ---------- Buttons ---------- */
.btn {
display: inline-flex; align-items: center; gap: .5rem;
padding: .75rem 1.75rem; border-radius: var(--radius);
font-weight: 600; font-size: 1rem; cursor: pointer;
border: 2px solid transparent; transition: var(--transition);
}
.btn-primary { background: var(--primary); color: #fff; }
.btn-primary:hover { background: var(--primary-dark); transform: translateY(-2px); box-shadow: 0 6px 20px rgba(13,110,253,.35); }
.btn-outline { border-color: var(--white); color: var(--white); }
.btn-outline:hover { background: var(--white); color: var(--primary); }
.btn-accent { background: var(--accent); color: #fff; }
.btn-accent:hover { filter: brightness(1.1); transform: translateY(-2px); }
/* ---------- Navbar ---------- */
.navbar {
position: sticky; top: 0; z-index: 1000;
background: rgba(255,255,255,.97);
backdrop-filter: blur(12px);
border-bottom: 1px solid var(--border);
box-shadow: 0 2px 12px rgba(0,0,0,.06);
}
.navbar__inner {
display: flex; align-items: center; justify-content: space-between;
height: 70px;
}
.navbar__brand {
display: flex; align-items: center; gap: .6rem; font-size: 1.3rem; font-weight: 800; color: var(--primary);
}
.navbar__brand .brand-icon { font-size: 1.6rem; }
.navbar__links { display: flex; gap: 2rem; align-items: center; }
.navbar__links a { font-weight: 500; color: var(--text); transition: color var(--transition); }
.navbar__links a:hover, .navbar__links a.active { color: var(--primary); }
.navbar__cta { display: flex; gap: .75rem; align-items: center; }
.burger { display: none; flex-direction: column; gap: 5px; cursor: pointer; }
.burger span { width: 26px; height: 2px; background: var(--dark); border-radius: 2px; transition: var(--transition); }
/* ---------- Hero ---------- */
.hero {
background: linear-gradient(135deg, var(--dark) 0%, #1a3a5c 60%, #0d6efd 100%);
color: var(--white); padding: 6rem 0 5rem;
position: relative; overflow: hidden;
}
.hero::after {
content: ''; position: absolute; inset: 0;
background: url("data:image/svg+xml,%3Csvg width='60' height='60' viewBox='0 0 60 60' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Cg fill='%23ffffff' fill-opacity='0.03'%3E%3Cpath d='M36 34v-4h-2v4h-4v2h4v4h2v-4h4v-2h-4zm0-30V0h-2v4h-4v2h4v4h2V6h4V4h-4zM6 34v-4H4v4H0v2h4v4h2v-4h4v-2H6zM6 4V0H4v4H0v2h4v4h2V6h4V4H6z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E");
pointer-events: none;
}
.hero__inner { display: grid; grid-template-columns: 1fr 1fr; gap: 4rem; align-items: center; position: relative; z-index: 1; }
.hero__tag { display: inline-block; background: rgba(0,201,167,.2); color: var(--accent); border: 1px solid rgba(0,201,167,.4); padding: .3rem 1rem; border-radius: 999px; font-size: .85rem; font-weight: 600; margin-bottom: 1.25rem; }
.hero h1 { color: var(--white); margin-bottom: 1.25rem; }
.hero h1 span { color: var(--accent); }
.hero p { font-size: 1.15rem; opacity: .9; margin-bottom: 2rem; }
.hero__btns { display: flex; gap: 1rem; flex-wrap: wrap; }
.hero__stats { display: flex; gap: 2rem; margin-top: 2.5rem; }
.hero__stat strong { display: block; font-size: 1.75rem; font-weight: 800; color: var(--accent); }
.hero__stat span { font-size: .85rem; opacity: .8; }
.hero__visual { display: flex; justify-content: center; align-items: center; }
.hero__card-wrap { position: relative; width: 340px; height: 420px; }
.ai-card {
background: rgba(255,255,255,.1); backdrop-filter: blur(16px);
border: 1px solid rgba(255,255,255,.2); border-radius: 20px;
padding: 2rem; color: var(--white); width: 100%;
box-shadow: 0 20px 60px rgba(0,0,0,.3);
}
.ai-card__pulse { width: 60px; height: 60px; background: var(--accent); border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 1.75rem; margin-bottom: 1rem; animation: pulse 2.5s infinite; }
@keyframes pulse { 0%,100%{ box-shadow: 0 0 0 0 rgba(0,201,167,.4); } 50%{ box-shadow: 0 0 0 18px rgba(0,201,167,0); } }
.ai-card h3 { font-size: 1.3rem; margin-bottom: .5rem; color: #fff; }
.ai-card p { opacity: .8; font-size: .95rem; margin-bottom: 1.25rem; }
.ai-card__dots { display: flex; gap: .5rem; }
.ai-card__dots span { width: 10px; height: 10px; border-radius: 50%; background: var(--accent); opacity: .4; animation: blink 1.4s infinite; }
.ai-card__dots span:nth-child(2) { animation-delay: .2s; }
.ai-card__dots span:nth-child(3) { animation-delay: .4s; }
@keyframes blink { 0%,100%{ opacity:.4; } 50%{ opacity:1; } }
.floating-badge {
position: absolute; background: var(--white); color: var(--dark);
border-radius: 12px; padding: .65rem 1rem; font-size: .85rem; font-weight: 600;
box-shadow: 0 8px 24px rgba(0,0,0,.15); display: flex; align-items: center; gap: .5rem;
}
.floating-badge--tl { top: -18px; left: -28px; animation: float1 3s ease-in-out infinite; }
.floating-badge--br { bottom: 20px; right: -28px; animation: float2 3.5s ease-in-out infinite; }
@keyframes float1 { 0%,100%{ transform:translateY(0); } 50%{ transform:translateY(-10px); } }
@keyframes float2 { 0%,100%{ transform:translateY(0); } 50%{ transform:translateY(8px); } }
/* ---------- Services ---------- */
.services-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 1.75rem; margin-top: 3rem; }
.service-card {
background: var(--white); border: 1px solid var(--border); border-radius: var(--radius);
padding: 2rem 1.5rem; text-align: center; transition: var(--transition);
box-shadow: 0 2px 8px rgba(0,0,0,.04);
}
.service-card:hover { transform: translateY(-6px); box-shadow: var(--shadow); border-color: var(--primary); }
.service-card__icon { font-size: 2.5rem; margin-bottom: 1rem; }
.service-card h3 { margin-bottom: .5rem; }
.service-card p { font-size: .95rem; color: #6b7280; margin: 0; }
/* ---------- Section Heading ---------- */
.section-heading { text-align: center; margin-bottom: 1rem; }
.section-heading p { color: #6b7280; max-width: 560px; margin: .75rem auto 0; }
/* ---------- Doctors ---------- */
.doctors-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 2rem; margin-top: 3rem; }
.doctor-card {
background: var(--white); border-radius: var(--radius); overflow: hidden;
border: 1px solid var(--border); transition: var(--transition); box-shadow: 0 2px 8px rgba(0,0,0,.04);
}
.doctor-card:hover { transform: translateY(-5px); box-shadow: var(--shadow); }
.doctor-card__img {
height: 220px; background: linear-gradient(135deg, #e0eeff, #c3d9ff);
display: flex; align-items: center; justify-content: center; font-size: 5rem;
}
.doctor-card__body { padding: 1.5rem; }
.doctor-card__body h3 { margin-bottom: .25rem; }
.doctor-card__spec { color: var(--primary); font-size: .9rem; font-weight: 600; margin-bottom: .75rem; }
.doctor-card__info { font-size: .88rem; color: #6b7280; display: flex; flex-direction: column; gap: .3rem; }
.doctor-card__info span { display: flex; align-items: center; gap: .4rem; }
.doctor-card__actions { display: flex; gap: .75rem; margin-top: 1.25rem; }
.doctor-card__actions .btn { flex: 1; justify-content: center; font-size: .9rem; padding: .6rem 1rem; }
.stars { color: #f59e0b; font-size: .9rem; margin-bottom: .3rem; }
/* ---------- Why AI ---------- */
.why-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 4rem; align-items: center; }
.why-grid__list { display: flex; flex-direction: column; gap: 1.5rem; margin-top: 2rem; }
.why-item { display: flex; gap: 1rem; align-items: flex-start; }
.why-item__icon { width: 48px; height: 48px; border-radius: 12px; background: rgba(13,110,253,.1); color: var(--primary); display: flex; align-items: center; justify-content: center; font-size: 1.4rem; flex-shrink: 0; }
.why-item h4 { margin-bottom: .25rem; font-size: 1rem; }
.why-item p { font-size: .9rem; color: #6b7280; margin: 0; }
.why-visual { position: relative; display: flex; justify-content: center; }
.why-visual__circle {
width: 320px; height: 320px; border-radius: 50%;
background: linear-gradient(135deg, #0d6efd 0%, #00c9a7 100%);
display: flex; align-items: center; justify-content: center;
font-size: 7rem; box-shadow: 0 20px 60px rgba(13,110,253,.35);
animation: spin-slow 20s linear infinite;
}
@keyframes spin-slow { from{ transform: rotate(0deg); } to{ transform: rotate(360deg); } }
.why-visual__inner { animation: spin-slow 20s linear infinite reverse; font-size: 6rem; }
/* ---------- Appointment Form ---------- */
.appt-form {
background: var(--white); border-radius: var(--radius); padding: 2.5rem;
box-shadow: var(--shadow); max-width: 680px; margin: 2.5rem auto 0;
border: 1px solid var(--border);
}
.form-row { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; margin-bottom: 1rem; }
.form-group { display: flex; flex-direction: column; gap: .4rem; margin-bottom: 1rem; }
.form-group label { font-weight: 600; font-size: .9rem; color: var(--dark); }
.form-group input,
.form-group select,
.form-group textarea {
padding: .75rem 1rem; border: 1.5px solid var(--border); border-radius: 8px;
font-size: 1rem; font-family: var(--font); color: var(--text); transition: border-color var(--transition);
}
.form-group input:focus,
.form-group select:focus,
.form-group textarea:focus { outline: none; border-color: var(--primary); box-shadow: 0 0 0 3px rgba(13,110,253,.12); }
.form-group textarea { resize: vertical; min-height: 100px; }
.form-submit { text-align: center; margin-top: .5rem; }
.form-success { display: none; text-align: center; padding: 1.5rem; background: #d1fae5; border-radius: 10px; color: #065f46; font-weight: 600; margin-top: 1rem; }
/* ---------- Contact ---------- */
.contact-grid { display: grid; grid-template-columns: 1fr 1.2fr; gap: 3rem; margin-top: 3rem; align-items: start; }
.contact-info { display: flex; flex-direction: column; gap: 1.5rem; }
.contact-item { display: flex; gap: 1rem; align-items: flex-start; }
.contact-item__icon { width: 48px; height: 48px; background: rgba(13,110,253,.1); border-radius: 12px; display: flex; align-items: center; justify-content: center; font-size: 1.3rem; flex-shrink: 0; }
.contact-item h4 { margin-bottom: .2rem; font-size: .95rem; }
.contact-item p { font-size: .9rem; color: #6b7280; margin: 0; }
.contact-form { background: var(--white); border: 1px solid var(--border); border-radius: var(--radius); padding: 2rem; box-shadow: var(--shadow); }
.contact-form h3 { margin-bottom: 1.5rem; }
/* ---------- Stats Banner ---------- */
.stats-banner { background: var(--primary); color: var(--white); padding: 3.5rem 0; }
.stats-inner { display: flex; justify-content: space-around; flex-wrap: wrap; gap: 2rem; text-align: center; }
.stat-item strong { display: block; font-size: 2.5rem; font-weight: 800; }
.stat-item span { font-size: .95rem; opacity: .85; }
/* ---------- Testimonials ---------- */
.testimonials-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 1.75rem; margin-top: 3rem; }
.testimonial-card {
background: var(--white); border: 1px solid var(--border); border-radius: var(--radius);
padding: 1.75rem; box-shadow: 0 2px 8px rgba(0,0,0,.04);
}
.testimonial-card .stars { font-size: 1rem; margin-bottom: .75rem; }
.testimonial-card p { font-style: italic; color: #374151; margin-bottom: 1.25rem; }
.testimonial-card__author { display: flex; align-items: center; gap: .75rem; }
.testimonial-card__avatar { width: 42px; height: 42px; border-radius: 50%; background: var(--light-bg); display: flex; align-items: center; justify-content: center; font-size: 1.2rem; }
.testimonial-card__name { font-weight: 700; font-size: .92rem; }
.testimonial-card__role { font-size: .8rem; color: #9ca3af; }
/* ---------- Footer ---------- */
.footer { background: var(--dark); color: rgba(255,255,255,.8); padding: 4rem 0 0; }
.footer__grid { display: grid; grid-template-columns: 2fr 1fr 1fr 1fr; gap: 3rem; padding-bottom: 3rem; border-bottom: 1px solid rgba(255,255,255,.1); }
.footer__brand { font-size: 1.2rem; font-weight: 800; color: var(--white); margin-bottom: .75rem; display: flex; align-items: center; gap: .5rem; }
.footer__desc { font-size: .9rem; opacity: .7; margin-bottom: 1.25rem; }
.footer__social { display: flex; gap: .75rem; }
.footer__social a { width: 36px; height: 36px; border-radius: 50%; background: rgba(255,255,255,.1); display: flex; align-items: center; justify-content: center; transition: var(--transition); font-size: .95rem; }
.footer__social a:hover { background: var(--primary); }
.footer__col h4 { color: var(--white); margin-bottom: 1rem; font-size: 1rem; }
.footer__col ul { display: flex; flex-direction: column; gap: .6rem; }
.footer__col ul a { font-size: .9rem; opacity: .7; transition: opacity var(--transition); }
.footer__col ul a:hover { opacity: 1; color: var(--accent); }
.footer__bottom { text-align: center; padding: 1.25rem 0; font-size: .85rem; opacity: .5; }
/* ---------- Page Hero (inner pages) ---------- */
.page-hero {
background: linear-gradient(135deg, var(--dark), #1a3a5c);
color: var(--white); text-align: center; padding: 4rem 0;
}
.page-hero h1 { color: var(--white); font-size: clamp(1.8rem, 4vw, 2.8rem); margin-bottom: .75rem; }
.page-hero p { opacity: .85; max-width: 550px; margin: 0 auto; }
.breadcrumb { display: flex; justify-content: center; gap: .5rem; font-size: .9rem; opacity: .65; margin-top: .75rem; }
.breadcrumb a:hover { color: var(--accent); }
/* ---------- Filter Bar ---------- */
.filter-bar { display: flex; gap: .75rem; flex-wrap: wrap; justify-content: center; margin-bottom: 2.5rem; }
.filter-btn { padding: .5rem 1.25rem; border: 1.5px solid var(--border); border-radius: 999px; cursor: pointer; font-size: .9rem; font-weight: 500; background: var(--white); transition: var(--transition); }
.filter-btn:hover, .filter-btn.active { background: var(--primary); color: var(--white); border-color: var(--primary); }
/* ---------- Mobile Nav ---------- */
@media (max-width: 900px) {
.navbar__links, .navbar__cta { display: none; flex-direction: column; background: var(--white); position: absolute; top: 70px; left: 0; right: 0; padding: 1.5rem; border-bottom: 1px solid var(--border); box-shadow: 0 8px 20px rgba(0,0,0,.08); z-index: 999; }
.navbar__links.open, .navbar__cta.open { display: flex; }
.burger { display: flex; }
.hero__inner { grid-template-columns: 1fr; }
.hero__visual { display: none; }
.why-grid { grid-template-columns: 1fr; }
.why-visual { display: none; }
.contact-grid { grid-template-columns: 1fr; }
.footer__grid { grid-template-columns: 1fr 1fr; }
.form-row { grid-template-columns: 1fr; }
}
@media (max-width: 560px) {
.stats-inner { flex-direction: column; gap: 1.5rem; }
.footer__grid { grid-template-columns: 1fr; }
.hero__stats { flex-direction: column; gap: 1rem; }
}
~/aidoctorsclinic/assets/js/main.js
// ============================================
// AIDoctorsClinic.com - Main JavaScript
// ============================================
document.addEventListener('DOMContentLoaded', () => {
/* ---- Mobile Burger Menu ---- */
const burger = document.querySelector('.burger');
const navLinks = document.querySelector('.navbar__links');
const navCta = document.querySelector('.navbar__cta');
if (burger) {
burger.addEventListener('click', () => {
navLinks && navLinks.classList.toggle('open');
navCta && navCta.classList.toggle('open');
burger.classList.toggle('open');
});
}
// Close nav on link click (mobile)
document.querySelectorAll('.navbar__links a').forEach(link => {
link.addEventListener('click', () => {
navLinks && navLinks.classList.remove('open');
navCta && navCta.classList.remove('open');
burger && burger.classList.remove('open');
});
});
/* ---- Active Nav Link ---- */
const currentPage = window.location.pathname.split('/').pop() || 'index.html';
document.querySelectorAll('.navbar__links a').forEach(link => {
const href = link.getAttribute('href');
if (href === currentPage || (currentPage === '' && href === 'index.html')) {
link.classList.add('active');
}
});
/* ---- Doctor Filter ---- */
const filterBtns = document.querySelectorAll('.filter-btn');
const doctorCards = document.querySelectorAll('.doctor-card');
filterBtns.forEach(btn => {
btn.addEventListener('click', () => {
filterBtns.forEach(b => b.classList.remove('active'));
btn.classList.add('active');
const filter = btn.dataset.filter;
doctorCards.forEach(card => {
if (filter === 'all' || card.dataset.specialty === filter) {
card.style.display = '';
card.style.animation = 'fadeIn .3s ease';
} else {
card.style.display = 'none';
}
});
});
});
/* ---- Appointment Form ---- */
const apptForm = document.getElementById('appointmentForm');
if (apptForm) {
// Set min date to today
const dateInput = apptForm.querySelector('input[type="date"]');
if (dateInput) {
const today = new Date().toISOString().split('T')[0];
dateInput.setAttribute('min', today);
}
apptForm.addEventListener('submit', (e) => {
e.preventDefault();
const btn = apptForm.querySelector('.btn-primary');
btn.textContent = 'Booking...';
btn.disabled = true;
setTimeout(() => {
apptForm.style.display = 'none';
const success = document.getElementById('apptSuccess');
if (success) success.style.display = 'block';
}, 1500);
});
}
/* ---- Contact Form ---- */
const contactForm = document.getElementById('contactForm');
if (contactForm) {
contactForm.addEventListener('submit', (e) => {
e.preventDefault();
const btn = contactForm.querySelector('.btn-primary');
btn.textContent = 'Sending...';
btn.disabled = true;
setTimeout(() => {
contactForm.style.display = 'none';
const success = document.getElementById('contactSuccess');
if (success) success.style.display = 'block';
}, 1200);
});
}
/* ---- Scroll Reveal (Intersection Observer) ---- */
const revealEls = document.querySelectorAll('.service-card, .doctor-card, .testimonial-card, .why-item');
const revealObserver = new IntersectionObserver((entries) => {
entries.forEach(entry => {
if (entry.isIntersecting) {
entry.target.style.opacity = '1';
entry.target.style.transform = 'translateY(0)';
revealObserver.unobserve(entry.target);
}
});
}, { threshold: 0.12 });
revealEls.forEach((el, i) => {
el.style.opacity = '0';
el.style.transform = 'translateY(24px)';
el.style.transition = `opacity .5s ease ${i * 0.07}s, transform .5s ease ${i * 0.07}s`;
revealObserver.observe(el);
});
/* ---- Counter Animation ---- */
const counters = document.querySelectorAll('[data-count]');
const countObserver = new IntersectionObserver((entries) => {
entries.forEach(entry => {
if (entry.isIntersecting) {
const el = entry.target;
const target = parseInt(el.dataset.count);
const suffix = el.dataset.suffix || '';
let current = 0;
const step = Math.ceil(target / 60);
const timer = setInterval(() => {
current += step;
if (current >= target) { current = target; clearInterval(timer); }
el.textContent = current.toLocaleString() + suffix;
}, 30);
countObserver.unobserve(el);
}
});
}, { threshold: 0.5 });
counters.forEach(c => countObserver.observe(c));
/* ---- Smooth back-to-top ---- */
const topBtn = document.getElementById('backToTop');
if (topBtn) {
window.addEventListener('scroll', () => {
topBtn.style.display = window.scrollY > 400 ? 'flex' : 'none';
});
topBtn.addEventListener('click', () => window.scrollTo({ top: 0, behavior: 'smooth' }));
}
});
~/aidoctorsclinic/index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="description" content="AIDoctorsClinic.com - AI-powered medical care. Book appointments with top doctors. Advanced diagnostics and personalized treatment plans." />
<title>AIDoctors Clinic | AI-Powered Healthcare</title>
<link rel="icon" href="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'><text y='.9em' font-size='90'>🏥</text></svg>" />
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&display=swap" rel="stylesheet" />
<link rel="stylesheet" href="assets/css/styles.css" />
</head>
<body>
<!-- ====== NAVBAR ====== -->
<nav class="navbar">
<div class="container navbar__inner">
<a href="index.html" class="navbar__brand">
<span class="brand-icon">🏥</span>
<span>AI<strong>Doctors</strong>Clinic</span>
</a>
<ul class="navbar__links">
<li><a href="index.html" class="active">Home</a></li>
<li><a href="doctors.html">Our Doctors</a></li>
<li><a href="appointments.html">Appointments</a></li>
<li><a href="contact.html">Contact</a></li>
</ul>
<div class="navbar__cta">
<a href="appointments.html" class="btn btn-primary">Book Now</a>
</div>
<div class="burger" id="burger" aria-label="Menu">
<span></span><span></span><span></span>
</div>
</div>
</nav>
<!-- ====== HERO ====== -->
<section class="hero">
<div class="container hero__inner">
<div class="hero__content">
<span class="hero__tag">✨ AI-Powered Healthcare 2026</span>
<h1>Smart Healthcare <span>Powered by AI</span></h1>
<p>Experience the future of medicine. Our AI-assisted platform connects you with world-class doctors, delivers instant diagnostics insights, and personalizes your care journey from day one.</p>
<div class="hero__btns">
<a href="appointments.html" class="btn btn-primary">📅 Book Appointment</a>
<a href="doctors.html" class="btn btn-outline">Meet Our Doctors</a>
</div>
<div class="hero__stats">
<div class="hero__stat">
<strong><span data-count="15000" data-suffix="+">15,000+</span></strong>
<span>Patients Served</span>
</div>
<div class="hero__stat">
<strong><span data-count="50" data-suffix="+">50+</span></strong>
<span>Specialist Doctors</span>
</div>
<div class="hero__stat">
<strong><span data-count="98" data-suffix="%">98%</span></strong>
<span>Satisfaction Rate</span>
</div>
</div>
</div>
<div class="hero__visual">
<div class="hero__card-wrap">
<div class="floating-badge floating-badge--tl">✅ Verified Doctors</div>
<div class="ai-card">
<div class="ai-card__pulse">🤖</div>
<h3>AI Diagnostics</h3>
<p>Real-time symptom analysis & health insights powered by advanced AI models.</p>
<div class="ai-card__dots">
<span></span><span></span><span></span>
</div>
</div>
<div class="floating-badge floating-badge--br">🔒 HIPAA Compliant</div>
</div>
</div>
</div>
</section>
<!-- ====== STATS BANNER ====== -->
<div class="stats-banner">
<div class="container stats-inner">
<div class="stat-item"><strong data-count="50" data-suffix="+">50+</strong><span>Specialties</span></div>
<div class="stat-item"><strong data-count="24" data-suffix="/7">24/7</strong><span>AI Support</span></div>
<div class="stat-item"><strong data-count="10" data-suffix=" min"><10 min</strong><span>Avg. Wait Time</span></div>
<div class="stat-item"><strong data-count="15000" data-suffix="+">15,000+</strong><span>Happy Patients</span></div>
</div>
</div>
<!-- ====== SERVICES ====== -->
<section class="section section--grey">
<div class="container">
<div class="section-heading">
<span class="tag">Our Services</span>
<h2>Comprehensive Medical Care</h2>
<p>From routine check-ups to specialized treatments, we offer a full spectrum of healthcare services enhanced by artificial intelligence.</p>
</div>
<div class="services-grid">
<div class="service-card">
<div class="service-card__icon">🧬</div>
<h3>AI Diagnostics</h3>
<p>Advanced AI algorithms analyze your symptoms and medical history to provide accurate, fast diagnostic insights.</p>
</div>
<div class="service-card">
<div class="service-card__icon">🩺</div>
<h3>General Medicine</h3>
<p>Comprehensive primary care for all ages, from routine check-ups to chronic disease management.</p>
</div>
<div class="service-card">
<div class="service-card__icon">🫀</div>
<h3>Cardiology</h3>
<p>Heart health monitoring, EKG analysis, and cardiac risk assessment powered by AI precision tools.</p>
</div>
<div class="service-card">
<div class="service-card__icon">🧠</div>
<h3>Neurology</h3>
<p>Brain and nervous system care with AI-assisted imaging interpretation and treatment planning.</p>
</div>
<div class="service-card">
<div class="service-card__icon">🦴</div>
<h3>Orthopedics</h3>
<p>Bone, joint, and musculoskeletal care with smart rehabilitation tracking and outcome prediction.</p>
</div>
<div class="service-card">
<div class="service-card__icon">📱</div>
<h3>Telemedicine</h3>
<p>Secure video consultations from anywhere. AI pre-screening ensures you see the right specialist.</p>
</div>
<div class="service-card">
<div class="service-card__icon">🔬</div>
<h3>Lab & Pathology</h3>
<p>In-house diagnostic lab with AI-powered report interpretation and trend monitoring.</p>
</div>
<div class="service-card">
<div class="service-card__icon">👁️</div>
<h3>Medical Imaging</h3>
<p>X-Ray, MRI, and CT scan analysis enhanced by deep learning for faster, more accurate reads.</p>
</div>
</div>
</div>
</section>
<!-- ====== WHY AI ====== -->
<section class="section">
<div class="container why-grid">
<div>
<span class="tag">Why Choose Us</span>
<h2>Medicine Meets Artificial Intelligence</h2>
<div class="why-grid__list">
<div class="why-item">
<div class="why-item__icon">⚡</div>
<div>
<h4>Faster Diagnoses</h4>
<p>Our AI pre-screens symptoms before your appointment, cutting diagnosis time by up to 60%.</p>
</div>
</div>
<div class="why-item">
<div class="why-item__icon">🎯</div>
<div>
<h4>Precision Treatment</h4>
<p>Personalized treatment plans built from your complete health profile and latest medical research.</p>
</div>
</div>
<div class="why-item">
<div class="why-item__icon">🔒</div>
<div>
<h4>Secure & Private</h4>
<p>Full HIPAA compliance, end-to-end encrypted health records, and transparent data policies.</p>
</div>
</div>
<div class="why-item">
<div class="why-item__icon">🌐</div>
<div>
<h4>24/7 AI Assistant</h4>
<p>Round-the-clock AI health assistant for symptom checking, medication reminders, and triage.</p>
</div>
</div>
</div>
</div>
<div class="why-visual">
<div class="why-visual__circle">
<span class="why-visual__inner">🏥</span>
</div>
</div>
</div>
</section>
<!-- ====== FEATURED DOCTORS ====== -->
<section class="section section--grey">
<div class="container">
<div class="section-heading">
<span class="tag">Top Specialists</span>
<h2>Meet Our Expert Doctors</h2>
<p>Board-certified specialists supported by AI tools that help them deliver better outcomes for every patient.</p>
</div>
<div class="doctors-grid">
<div class="doctor-card" data-specialty="cardiology">
<div class="doctor-card__img">👨⚕️</div>
<div class="doctor-card__body">
<div class="stars">★★★★★</div>
<h3>Dr. James Carter</h3>
<div class="doctor-card__spec">Cardiologist</div>
<div class="doctor-card__info">
<span>🎓 Harvard Medical School</span>
<span>📅 15 yrs experience</span>
<span>🏅 Board Certified</span>
</div>
<div class="doctor-card__actions">
<a href="doctors.html" class="btn btn-outline" style="border-color:var(--border);color:var(--text);">View Profile</a>
<a href="appointments.html" class="btn btn-primary">Book</a>
</div>
</div>
</div>
<div class="doctor-card" data-specialty="neurology">
<div class="doctor-card__img">👩⚕️</div>
<div class="doctor-card__body">
<div class="stars">★★★★★</div>
<h3>Dr. Priya Sharma</h3>
<div class="doctor-card__spec">Neurologist</div>
<div class="doctor-card__info">
<span>🎓 Johns Hopkins</span>
<span>📅 12 yrs experience</span>
<span>🏅 AI Research Lead</span>
</div>
<div class="doctor-card__actions">
<a href="doctors.html" class="btn btn-outline" style="border-color:var(--border);color:var(--text);">View Profile</a>
<a href="appointments.html" class="btn btn-primary">Book</a>
</div>
</div>
</div>
<div class="doctor-card" data-specialty="general">
<div class="doctor-card__img">👨⚕️</div>
<div class="doctor-card__body">
<div class="stars">★★★★☆</div>
<h3>Dr. Ali Hassan</h3>
<div class="doctor-card__spec">General Physician</div>
<div class="doctor-card__info">
<span>🎓 Oxford University</span>
<span>📅 10 yrs experience</span>
<span>🏅 Telemedicine Expert</span>
</div>
<div class="doctor-card__actions">
<a href="doctors.html" class="btn btn-outline" style="border-color:var(--border);color:var(--text);">View Profile</a>
<a href="appointments.html" class="btn btn-primary">Book</a>
</div>
</div>
</div>
</div>
<div style="text-align:center;margin-top:2.5rem;">
<a href="doctors.html" class="btn btn-primary">View All Doctors →</a>
</div>
</div>
</section>
<!-- ====== TESTIMONIALS ====== -->
<section class="section">
<div class="container">
<div class="section-heading">
<span class="tag">Patient Reviews</span>
<h2>What Our Patients Say</h2>
</div>
<div class="testimonials-grid">
<div class="testimonial-card">
<div class="stars">★★★★★</div>
<p>"The AI symptom checker caught an early warning sign my previous doctor missed. AIDoctorsClinic genuinely saved my life."</p>
<div class="testimonial-card__author">
<div class="testimonial-card__avatar">👤</div>
<div>
<div class="testimonial-card__name">Sarah M.</div>
<div class="testimonial-card__role">Patient since 2025</div>
</div>
</div>
</div>
<div class="testimonial-card">
<div class="stars">★★★★★</div>
<p>"Booking is so easy and the reminders are smart. My entire family uses this clinic now. The doctors are incredibly knowledgeable."</p>
<div class="testimonial-card__author">
<div class="testimonial-card__avatar">👤</div>
<div>
<div class="testimonial-card__name">David L.</div>
<div class="testimonial-card__role">Patient since 2024</div>
</div>
</div>
</div>
<div class="testimonial-card">
<div class="stars">★★★★★</div>
<p>"The telemedicine option is a lifesaver for my busy schedule. Same quality care, from the comfort of my home. 10/10 recommend."</p>
<div class="testimonial-card__author">
<div class="testimonial-card__avatar">👤</div>
<div>
<div class="testimonial-card__name">Aisha K.</div>
<div class="testimonial-card__role">Patient since 2026</div>
</div>
</div>
</div>
</div>
</div>
</section>
<!-- ====== CTA ====== -->
<section style="background:linear-gradient(135deg,#0d6efd,#00c9a7);padding:5rem 0;text-align:center;color:#fff;">
<div class="container">
<h2 style="color:#fff;margin-bottom:1rem;">Ready to Experience Smarter Healthcare?</h2>
<p style="opacity:.9;max-width:520px;margin:0 auto 2rem;">Join thousands of patients who trust AIDoctorsClinic for their health. Book your first appointment today - it's fast, easy, and often covered by insurance.</p>
<div style="display:flex;gap:1rem;justify-content:center;flex-wrap:wrap;">
<a href="appointments.html" class="btn btn-outline">📅 Book Appointment</a>
<a href="contact.html" class="btn" style="background:#fff;color:#0d6efd;">📞 Contact Us</a>
</div>
</div>
</section>
<!-- ====== FOOTER ====== -->
<footer class="footer">
<div class="container footer__grid">
<div>
<div class="footer__brand">🏥 AIDoctorsClinic</div>
<p class="footer__desc">AI-powered healthcare that puts patients first. World-class doctors, smart technology, and compassionate care - all in one platform.</p>
<div class="footer__social">
<a href="#" title="Facebook">📘</a>
<a href="#" title="Twitter">🐦</a>
<a href="#" title="LinkedIn">💼</a>
<a href="#" title="Instagram">📸</a>
</div>
</div>
<div class="footer__col">
<h4>Quick Links</h4>
<ul>
<li><a href="index.html">Home</a></li>
<li><a href="doctors.html">Our Doctors</a></li>
<li><a href="appointments.html">Appointments</a></li>
<li><a href="contact.html">Contact</a></li>
</ul>
</div>
<div class="footer__col">
<h4>Services</h4>
<ul>
<li><a href="#">AI Diagnostics</a></li>
<li><a href="#">Telemedicine</a></li>
<li><a href="#">General Medicine</a></li>
<li><a href="#">Lab & Imaging</a></li>
</ul>
</div>
<div class="footer__col">
<h4>Contact</h4>
<ul>
<li><a href="mailto:info@aidoctorsclinic.com">📧 info@aidoctorsclinic.com</a></li>
<li><a href="tel:+18005550199">📞 1-800-555-0199</a></li>
<li><a href="#">📍 123 MedTech Ave, Suite 100</a></li>
<li><a href="#">🕒 Mon-Fri 8am - 8pm</a></li>
</ul>
</div>
</div>
<div class="footer__bottom">
<div class="container">
© 2026 AIDoctorsClinic.com - All rights reserved. |
<a href="#" style="color:inherit;opacity:.8;">Privacy Policy</a> |
<a href="#" style="color:inherit;opacity:.8;">Terms of Service</a>
</div>
</div>
</footer>
<!-- Back to top -->
<button id="backToTop" style="display:none;position:fixed;bottom:2rem;right:2rem;width:44px;height:44px;border-radius:50%;background:var(--primary);color:#fff;border:none;cursor:pointer;font-size:1.2rem;align-items:center;justify-content:center;box-shadow:0 4px 16px rgba(13,110,253,.4);z-index:999;" title="Back to top">↑</button>
<script src="assets/js/main.js"></script>
</body>
</html>
~/aidoctorsclinic/doctors.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="description" content="Meet our team of expert doctors at AIDoctorsClinic. Board-certified specialists using AI tools to provide superior patient care." />
<title>Our Doctors | AIDoctorsClinic.com</title>
<link rel="icon" href="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'><text y='.9em' font-size='90'>🏥</text></svg>" />
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&display=swap" rel="stylesheet" />
<link rel="stylesheet" href="assets/css/styles.css" />
</head>
<body>
<!-- ====== NAVBAR ====== -->
<nav class="navbar">
<div class="container navbar__inner">
<a href="index.html" class="navbar__brand">
<span class="brand-icon">🏥</span>
<span>AI<strong>Doctors</strong>Clinic</span>
</a>
<ul class="navbar__links">
<li><a href="index.html">Home</a></li>
<li><a href="doctors.html" class="active">Our Doctors</a></li>
<li><a href="appointments.html">Appointments</a></li>
<li><a href="contact.html">Contact</a></li>
</ul>
<div class="navbar__cta">
<a href="appointments.html" class="btn btn-primary">Book Now</a>
</div>
<div class="burger" id="burger">
<span></span><span></span><span></span>
</div>
</div>
</nav>
<!-- ====== PAGE HERO ====== -->
<section class="page-hero">
<div class="container">
<span class="tag" style="background:rgba(0,201,167,.2);color:#00c9a7;border:1px solid rgba(0,201,167,.4);">Our Team</span>
<h1>Expert Doctors, AI-Enhanced Care</h1>
<p>Board-certified specialists from top medical institutions, equipped with cutting-edge AI diagnostic tools to give you the best possible outcomes.</p>
<div class="breadcrumb">
<a href="index.html">Home</a> <span>/</span> <span>Our Doctors</span>
</div>
</div>
</section>
<!-- ====== FILTER + DOCTORS ====== -->
<section class="section">
<div class="container">
<div class="filter-bar">
<button class="filter-btn active" data-filter="all">All Specialties</button>
<button class="filter-btn" data-filter="general">General Medicine</button>
<button class="filter-btn" data-filter="cardiology">Cardiology</button>
<button class="filter-btn" data-filter="neurology">Neurology</button>
<button class="filter-btn" data-filter="orthopedics">Orthopedics</button>
<button class="filter-btn" data-filter="dermatology">Dermatology</button>
<button class="filter-btn" data-filter="pediatrics">Pediatrics</button>
</div>
<div class="doctors-grid">
<!-- Dr. James Carter -->
<div class="doctor-card" data-specialty="cardiology">
<div class="doctor-card__img" style="background:linear-gradient(135deg,#dbeafe,#93c5fd);">👨⚕️</div>
<div class="doctor-card__body">
<div class="stars">★★★★★</div>
<h3>Dr. James Carter</h3>
<div class="doctor-card__spec">Cardiologist <span class="badge-ai">AI Certified</span></div>
<div class="doctor-card__info">
<span>🎓 Harvard Medical School</span>
<span>📅 15 yrs experience</span>
<span>🏅 Board Certified</span>
<span>🌍 English, Spanish</span>
</div>
<div class="doctor-card__actions">
<a href="appointments.html" class="btn btn-primary" style="flex:1;justify-content:center;">Book Now</a>
</div>
</div>
</div>
<!-- Dr. Priya Sharma -->
<div class="doctor-card" data-specialty="neurology">
<div class="doctor-card__img" style="background:linear-gradient(135deg,#fce7f3,#fbcfe8);">👩⚕️</div>
<div class="doctor-card__body">
<div class="stars">★★★★★</div>
<h3>Dr. Priya Sharma</h3>
<div class="doctor-card__spec">Neurologist <span class="badge-ai">AI Research Lead</span></div>
<div class="doctor-card__info">
<span>🎓 Johns Hopkins University</span>
<span>📅 12 yrs experience</span>
<span>🏅 Published Researcher</span>
<span>🌍 English, Hindi</span>
</div>
<div class="doctor-card__actions">
<a href="appointments.html" class="btn btn-primary" style="flex:1;justify-content:center;">Book Now</a>
</div>
</div>
</div>
<!-- Dr. Ali Hassan -->
<div class="doctor-card" data-specialty="general">
<div class="doctor-card__img" style="background:linear-gradient(135deg,#d1fae5,#6ee7b7);">👨⚕️</div>
<div class="doctor-card__body">
<div class="stars">★★★★☆</div>
<h3>Dr. Ali Hassan</h3>
<div class="doctor-card__spec">General Physician</div>
<div class="doctor-card__info">
<span>🎓 Oxford University</span>
<span>📅 10 yrs experience</span>
<span>🏅 Telemedicine Expert</span>
<span>🌍 English, Arabic</span>
</div>
<div class="doctor-card__actions">
<a href="appointments.html" class="btn btn-primary" style="flex:1;justify-content:center;">Book Now</a>
</div>
</div>
</div>
<!-- Dr. Sofia Reyes -->
<div class="doctor-card" data-specialty="dermatology">
<div class="doctor-card__img" style="background:linear-gradient(135deg,#fef9c3,#fde68a);">👩⚕️</div>
<div class="doctor-card__body">
<div class="stars">★★★★★</div>
<h3>Dr. Sofia Reyes</h3>
<div class="doctor-card__spec">Dermatologist <span class="badge-ai">AI Certified</span></div>
<div class="doctor-card__info">
<span>🎓 Stanford Medical</span>
<span>📅 9 yrs experience</span>
<span>🏅 Skin AI Specialist</span>
<span>🌍 English, Spanish</span>
</div>
<div class="doctor-card__actions">
<a href="appointments.html" class="btn btn-primary" style="flex:1;justify-content:center;">Book Now</a>
</div>
</div>
</div>
<!-- Dr. Marcus Lee -->
<div class="doctor-card" data-specialty="orthopedics">
<div class="doctor-card__img" style="background:linear-gradient(135deg,#ede9fe,#c4b5fd);">👨⚕️</div>
<div class="doctor-card__body">
<div class="stars">★★★★★</div>
<h3>Dr. Marcus Lee</h3>
<div class="doctor-card__spec">Orthopedic Surgeon</div>
<div class="doctor-card__info">
<span>🎓 Mayo Clinic</span>
<span>📅 18 yrs experience</span>
<span>🏅 Sports Medicine</span>
<span>🌍 English, Korean</span>
</div>
<div class="doctor-card__actions">
<a href="appointments.html" class="btn btn-primary" style="flex:1;justify-content:center;">Book Now</a>
</div>
</div>
</div>
<!-- Dr. Amina Osei -->
<div class="doctor-card" data-specialty="pediatrics">
<div class="doctor-card__img" style="background:linear-gradient(135deg,#fee2e2,#fca5a5);">👩⚕️</div>
<div class="doctor-card__body">
<div class="stars">★★★★★</div>
<h3>Dr. Amina Osei</h3>
<div class="doctor-card__spec">Pediatrician <span class="badge-ai">AI Certified</span></div>
<div class="doctor-card__info">
<span>🎓 Yale School of Medicine</span>
<span>📅 11 yrs experience</span>
<span>🏅 Child Development</span>
<span>🌍 English, French</span>
</div>
<div class="doctor-card__actions">
<a href="appointments.html" class="btn btn-primary" style="flex:1;justify-content:center;">Book Now</a>
</div>
</div>
</div>
<!-- Dr. Chen Wei -->
<div class="doctor-card" data-specialty="general">
<div class="doctor-card__img" style="background:linear-gradient(135deg,#cffafe,#67e8f9);">👨⚕️</div>
<div class="doctor-card__body">
<div class="stars">★★★★☆</div>
<h3>Dr. Chen Wei</h3>
<div class="doctor-card__spec">Internal Medicine</div>
<div class="doctor-card__info">
<span>🎓 UCSF Medical Center</span>
<span>📅 8 yrs experience</span>
<span>🏅 Preventive Care</span>
<span>🌍 English, Mandarin</span>
</div>
<div class="doctor-card__actions">
<a href="appointments.html" class="btn btn-primary" style="flex:1;justify-content:center;">Book Now</a>
</div>
</div>
</div>
<!-- Dr. Rachel Brooks -->
<div class="doctor-card" data-specialty="cardiology">
<div class="doctor-card__img" style="background:linear-gradient(135deg,#ecfdf5,#a7f3d0);">👩⚕️</div>
<div class="doctor-card__body">
<div class="stars">★★★★★</div>
<h3>Dr. Rachel Brooks</h3>
<div class="doctor-card__spec">Interventional Cardiologist <span class="badge-ai">AI Certified</span></div>
<div class="doctor-card__info">
<span>🎓 Cleveland Clinic</span>
<span>📅 14 yrs experience</span>
<span>🏅 Catheterization Expert</span>
<span>🌍 English</span>
</div>
<div class="doctor-card__actions">
<a href="appointments.html" class="btn btn-primary" style="flex:1;justify-content:center;">Book Now</a>
</div>
</div>
</div>
</div>
</div>
</section>
<!-- ====== JOIN CTA ====== -->
<section style="background:var(--light-bg);padding:4rem 0;text-align:center;">
<div class="container">
<span class="tag">Ready to See a Doctor?</span>
<h2 style="margin-bottom:1rem;">Book Your Appointment in Under 2 Minutes</h2>
<p style="color:#6b7280;max-width:480px;margin:0 auto 2rem;">Choose your specialist, pick a time that works, and receive instant confirmation by email or SMS.</p>
<a href="appointments.html" class="btn btn-primary" style="font-size:1.05rem;padding:.875rem 2rem;">📅 Schedule Now</a>
</div>
</section>
<!-- ====== FOOTER ====== -->
<footer class="footer">
<div class="container footer__grid">
<div>
<div class="footer__brand">🏥 AIDoctorsClinic</div>
<p class="footer__desc">AI-powered healthcare that puts patients first.</p>
<div class="footer__social">
<a href="#" title="Facebook">📘</a>
<a href="#" title="Twitter">🐦</a>
<a href="#" title="LinkedIn">💼</a>
<a href="#" title="Instagram">📸</a>
</div>
</div>
<div class="footer__col">
<h4>Quick Links</h4>
<ul>
<li><a href="index.html">Home</a></li>
<li><a href="doctors.html">Our Doctors</a></li>
<li><a href="appointments.html">Appointments</a></li>
<li><a href="contact.html">Contact</a></li>
</ul>
</div>
<div class="footer__col">
<h4>Services</h4>
<ul>
<li><a href="#">AI Diagnostics</a></li>
<li><a href="#">Telemedicine</a></li>
<li><a href="#">General Medicine</a></li>
<li><a href="#">Lab & Imaging</a></li>
</ul>
</div>
<div class="footer__col">
<h4>Contact</h4>
<ul>
<li><a href="mailto:info@aidoctorsclinic.com">📧 info@aidoctorsclinic.com</a></li>
<li><a href="tel:+18005550199">📞 1-800-555-0199</a></li>
<li><a href="#">📍 123 MedTech Ave, Suite 100</a></li>
</ul>
</div>
</div>
<div class="footer__bottom">
<div class="container">© 2026 AIDoctorsClinic.com - All rights reserved.</div>
</div>
</footer>
<button id="backToTop" style="display:none;position:fixed;bottom:2rem;right:2rem;width:44px;height:44px;border-radius:50%;background:var(--primary);color:#fff;border:none;cursor:pointer;font-size:1.2rem;align-items:center;justify-content:center;box-shadow:0 4px 16px rgba(13,110,253,.4);z-index:999;" title="Back to top">↑</button>
<script src="assets/js/main.js"></script>
</body>
</html>
~/aidoctorsclinic/appointments.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="description" content="Book an appointment at AIDoctorsClinic. Fast, easy online scheduling with our team of specialists. Confirmation in seconds." />
<title>Book Appointment | AIDoctorsClinic.com</title>
<link rel="icon" href="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'><text y='.9em' font-size='90'>🏥</text></svg>" />
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&display=swap" rel="stylesheet" />
<link rel="stylesheet" href="assets/css/styles.css" />
</head>
<body>
<!-- ====== NAVBAR ====== -->
<nav class="navbar">
<div class="container navbar__inner">
<a href="index.html" class="navbar__brand">
<span class="brand-icon">🏥</span>
<span>AI<strong>Doctors</strong>Clinic</span>
</a>
<ul class="navbar__links">
<li><a href="index.html">Home</a></li>
<li><a href="doctors.html">Our Doctors</a></li>
<li><a href="appointments.html" class="active">Appointments</a></li>
<li><a href="contact.html">Contact</a></li>
</ul>
<div class="navbar__cta">
<a href="appointments.html" class="btn btn-primary">Book Now</a>
</div>
<div class="burger" id="burger">
<span></span><span></span><span></span>
</div>
</div>
</nav>
<!-- ====== PAGE HERO ====== -->
<section class="page-hero">
<div class="container">
<span class="tag" style="background:rgba(0,201,167,.2);color:#00c9a7;border:1px solid rgba(0,201,167,.4);">Easy Booking</span>
<h1>Book Your Appointment</h1>
<p>Schedule in under 2 minutes. Our AI matches you with the ideal doctor based on your symptoms and preferences.</p>
<div class="breadcrumb">
<a href="index.html">Home</a> <span>/</span> <span>Appointments</span>
</div>
</div>
</section>
<!-- ====== HOW IT WORKS ====== -->
<section class="section section--grey">
<div class="container">
<div class="section-heading">
<span class="tag">Simple Process</span>
<h2>How It Works</h2>
</div>
<div style="display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:2rem;margin-top:2.5rem;text-align:center;">
<div style="padding:2rem 1.5rem;background:var(--white);border-radius:var(--radius);border:1px solid var(--border);">
<div style="font-size:2.5rem;margin-bottom:1rem;">📋</div>
<div style="width:32px;height:32px;border-radius:50%;background:var(--primary);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700;margin:0 auto .75rem;">1</div>
<h3 style="font-size:1rem;margin-bottom:.5rem;">Fill the Form</h3>
<p style="font-size:.9rem;color:#6b7280;margin:0;">Enter your details, symptoms, and preferred doctor or specialty.</p>
</div>
<div style="padding:2rem 1.5rem;background:var(--white);border-radius:var(--radius);border:1px solid var(--border);">
<div style="font-size:2.5rem;margin-bottom:1rem;">🤖</div>
<div style="width:32px;height:32px;border-radius:50%;background:var(--primary);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700;margin:0 auto .75rem;">2</div>
<h3 style="font-size:1rem;margin-bottom:.5rem;">AI Matching</h3>
<p style="font-size:.9rem;color:#6b7280;margin:0;">Our AI finds the best-matched available doctor for your needs.</p>
</div>
<div style="padding:2rem 1.5rem;background:var(--white);border-radius:var(--radius);border:1px solid var(--border);">
<div style="font-size:2.5rem;margin-bottom:1rem;">✅</div>
<div style="width:32px;height:32px;border-radius:50%;background:var(--primary);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700;margin:0 auto .75rem;">3</div>
<h3 style="font-size:1rem;margin-bottom:.5rem;">Confirmation</h3>
<p style="font-size:.9rem;color:#6b7280;margin:0;">Receive instant SMS and email confirmation with all details.</p>
</div>
<div style="padding:2rem 1.5rem;background:var(--white);border-radius:var(--radius);border:1px solid var(--border);">
<div style="font-size:2.5rem;margin-bottom:1rem;">🩺</div>
<div style="width:32px;height:32px;border-radius:50%;background:var(--primary);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700;margin:0 auto .75rem;">4</div>
<h3 style="font-size:1rem;margin-bottom:.5rem;">See Your Doctor</h3>
<p style="font-size:.9rem;color:#6b7280;margin:0;">Attend in-person or via secure video telemedicine session.</p>
</div>
</div>
</div>
</section>
<!-- ====== BOOKING FORM ====== -->
<section class="section">
<div class="container">
<div class="section-heading">
<span class="tag">Schedule Now</span>
<h2>Request an Appointment</h2>
<p>All fields marked with * are required. Our team will confirm your booking within 30 minutes during office hours.</p>
</div>
<div class="appt-form" id="appointmentForm">
<div class="form-row">
<div class="form-group">
<label for="firstName">First Name *</label>
<input type="text" id="firstName" placeholder="John" required />
</div>
<div class="form-group">
<label for="lastName">Last Name *</label>
<input type="text" id="lastName" placeholder="Doe" required />
</div>
</div>
<div class="form-row">
<div class="form-group">
<label for="email">Email Address *</label>
<input type="email" id="email" placeholder="john@example.com" required />
</div>
<div class="form-group">
<label for="phone">Phone Number *</label>
<input type="tel" id="phone" placeholder="+1 (555) 000-0000" required />
</div>
</div>
<div class="form-row">
<div class="form-group">
<label for="dob">Date of Birth</label>
<input type="date" id="dob" />
</div>
<div class="form-group">
<label for="gender">Gender</label>
<select id="gender">
<option value="">Select...</option>
<option>Male</option>
<option>Female</option>
<option>Non-binary</option>
<option>Prefer not to say</option>
</select>
</div>
</div>
<div class="form-row">
<div class="form-group">
<label for="specialty">Specialty Needed *</label>
<select id="specialty" required>
<option value="">Select specialty...</option>
<option>General Medicine</option>
<option>Cardiology</option>
<option>Neurology</option>
<option>Orthopedics</option>
<option>Dermatology</option>
<option>Pediatrics</option>
<option>Internal Medicine</option>
<option>AI Diagnostics</option>
<option>Telemedicine Consult</option>
</select>
</div>
<div class="form-group">
<label for="doctor">Preferred Doctor</label>
<select id="doctor">
<option value="">No preference / AI Match</option>
<option>Dr. James Carter (Cardiology)</option>
<option>Dr. Priya Sharma (Neurology)</option>
<option>Dr. Ali Hassan (General)</option>
<option>Dr. Sofia Reyes (Dermatology)</option>
<option>Dr. Marcus Lee (Orthopedics)</option>
<option>Dr. Amina Osei (Pediatrics)</option>
<option>Dr. Chen Wei (Internal Medicine)</option>
<option>Dr. Rachel Brooks (Cardiology)</option>
</select>
</div>
</div>
<div class="form-row">
<div class="form-group">
<label for="apptDate">Preferred Date *</label>
<input type="date" id="apptDate" required />
</div>
<div class="form-group">
<label for="apptTime">Preferred Time *</label>
<select id="apptTime" required>
<option value="">Select time...</option>
<option>08:00 AM</option>
<option>09:00 AM</option>
<option>10:00 AM</option>
<option>11:00 AM</option>
<option>12:00 PM</option>
<option>01:00 PM</option>
<option>02:00 PM</option>
<option>03:00 PM</option>
<option>04:00 PM</option>
<option>05:00 PM</option>
<option>06:00 PM</option>
</select>
</div>
</div>
<div class="form-group">
<label for="visitType">Visit Type *</label>
<select id="visitType" required>
<option value="">Select...</option>
<option>In-Person Visit</option>
<option>Telemedicine (Video Call)</option>
<option>Phone Consultation</option>
</select>
</div>
<div class="form-group">
<label for="symptoms">Symptoms / Reason for Visit *</label>
<textarea id="symptoms" placeholder="Please briefly describe your symptoms or the reason for your appointment..." required></textarea>
</div>
<div class="form-group">
<label for="insurance">Insurance Provider (optional)</label>
<input type="text" id="insurance" placeholder="e.g. Blue Cross, Aetna, Medicare..." />
</div>
<div class="form-submit">
<button type="submit" class="btn btn-primary" style="font-size:1.05rem;padding:.875rem 2.5rem;">
🤖 AI-Match & Book Appointment
</button>
<p style="font-size:.82rem;color:#9ca3af;margin-top:.75rem;">Your data is encrypted and protected under HIPAA guidelines.</p>
</div>
</div>
<div class="form-success" id="apptSuccess">
<div style="font-size:3rem;margin-bottom:1rem;">✅</div>
<h3 style="color:#065f46;margin-bottom:.5rem;">Appointment Request Received!</h3>
<p style="margin:0;">Thank you! Our AI is matching you with the best available doctor. You will receive a confirmation email & SMS within 30 minutes. If urgent, please call <strong>1-800-555-0199</strong>.</p>
</div>
</div>
</section>
<!-- ====== FAQ ====== -->
<section class="section section--grey">
<div class="container">
<div class="section-heading">
<span class="tag">FAQ</span>
<h2>Appointment Questions</h2>
</div>
<div style="max-width:720px;margin:2.5rem auto 0;display:flex;flex-direction:column;gap:1rem;">
<details style="background:var(--white);border:1px solid var(--border);border-radius:var(--radius);padding:1.25rem 1.5rem;cursor:pointer;">
<summary style="font-weight:600;font-size:1rem;">How quickly will I get a confirmation?</summary>
<p style="margin-top:.75rem;color:#6b7280;font-size:.95rem;">During office hours (Mon-Fri 8am-8pm), confirmations are sent within 30 minutes. After hours, you will hear back the next business morning. Emergency slots are always available - call us directly.</p>
</details>
<details style="background:var(--white);border:1px solid var(--border);border-radius:var(--radius);padding:1.25rem 1.5rem;cursor:pointer;">
<summary style="font-weight:600;font-size:1rem;">Can I reschedule or cancel?</summary>
<p style="margin-top:.75rem;color:#6b7280;font-size:.95rem;">Yes. You can reschedule or cancel up to 2 hours before your appointment at no charge. Cancellations within 2 hours may incur a small fee. Contact us at 1-800-555-0199 or email appointments@aidoctorsclinic.com.</p>
</details>
<details style="background:var(--white);border:1px solid var(--border);border-radius:var(--radius);padding:1.25rem 1.5rem;cursor:pointer;">
<summary style="font-weight:600;font-size:1rem;">Do you accept insurance?</summary>
<p style="margin-top:.75rem;color:#6b7280;font-size:.95rem;">We accept most major insurance plans including Blue Cross Blue Shield, Aetna, Cigna, UnitedHealth, and Medicare. Self-pay options with flexible pricing are also available.</p>
</details>
<details style="background:var(--white);border:1px solid var(--border);border-radius:var(--radius);padding:1.25rem 1.5rem;cursor:pointer;">
<summary style="font-weight:600;font-size:1rem;">What is the AI matching feature?</summary>
<p style="margin-top:.75rem;color:#6b7280;font-size:.95rem;">Our AI analyzes your symptoms, medical history, location, and availability to recommend the most suitable doctor for your specific needs - so you always see the right specialist first.</p>
</details>
</div>
</div>
</section>
<!-- ====== FOOTER ====== -->
<footer class="footer">
<div class="container footer__grid">
<div>
<div class="footer__brand">🏥 AIDoctorsClinic</div>
<p class="footer__desc">AI-powered healthcare that puts patients first.</p>
<div class="footer__social">
<a href="#" title="Facebook">📘</a><a href="#" title="Twitter">🐦</a>
<a href="#" title="LinkedIn">💼</a><a href="#" title="Instagram">📸</a>
</div>
</div>
<div class="footer__col">
<h4>Quick Links</h4>
<ul>
<li><a href="index.html">Home</a></li>
<li><a href="doctors.html">Our Doctors</a></li>
<li><a href="appointments.html">Appointments</a></li>
<li><a href="contact.html">Contact</a></li>
</ul>
</div>
<div class="footer__col">
<h4>Services</h4>
<ul>
<li><a href="#">AI Diagnostics</a></li>
<li><a href="#">Telemedicine</a></li>
<li><a href="#">General Medicine</a></li>
<li><a href="#">Lab & Imaging</a></li>
</ul>
</div>
<div class="footer__col">
<h4>Contact</h4>
<ul>
<li><a href="mailto:info@aidoctorsclinic.com">📧 info@aidoctorsclinic.com</a></li>
<li><a href="tel:+18005550199">📞 1-800-555-0199</a></li>
<li><a href="#">📍 123 MedTech Ave, Suite 100</a></li>
</ul>
</div>
</div>
<div class="footer__bottom">
<div class="container">© 2026 AIDoctorsClinic.com - All rights reserved.</div>
</div>
</footer>
<button id="backToTop" style="display:none;position:fixed;bottom:2rem;right:2rem;width:44px;height:44px;border-radius:50%;background:var(--primary);color:#fff;border:none;cursor:pointer;font-size:1.2rem;align-items:center;justify-content:center;box-shadow:0 4px 16px rgba(13,110,253,.4);z-index:999;" title="Back to top">↑</button>
<script src="assets/js/main.js"></script>
</body>
</html>
~/aidoctorsclinic/contact.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="description" content="Contact AIDoctorsClinic. Reach our team for appointments, questions, partnerships, or medical emergencies. We're here 24/7." />
<title>Contact Us | AIDoctorsClinic.com</title>
<link rel="icon" href="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'><text y='.9em' font-size='90'>🏥</text></svg>" />
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&display=swap" rel="stylesheet" />
<link rel="stylesheet" href="assets/css/styles.css" />
</head>
<body>
<!-- ====== NAVBAR ====== -->
<nav class="navbar">
<div class="container navbar__inner">
<a href="index.html" class="navbar__brand">
<span class="brand-icon">🏥</span>
<span>AI<strong>Doctors</strong>Clinic</span>
</a>
<ul class="navbar__links">
<li><a href="index.html">Home</a></li>
<li><a href="doctors.html">Our Doctors</a></li>
<li><a href="appointments.html">Appointments</a></li>
<li><a href="contact.html" class="active">Contact</a></li>
</ul>
<div class="navbar__cta">
<a href="appointments.html" class="btn btn-primary">Book Now</a>
</div>
<div class="burger" id="burger">
<span></span><span></span><span></span>
</div>
</div>
</nav>
<!-- ====== PAGE HERO ====== -->
<section class="page-hero">
<div class="container">
<span class="tag" style="background:rgba(0,201,167,.2);color:#00c9a7;border:1px solid rgba(0,201,167,.4);">Get in Touch</span>
<h1>Contact AIDoctorsClinic</h1>
<p>Have a question, need support, or want to learn more? Our team and AI assistant are here to help around the clock.</p>
<div class="breadcrumb">
<a href="index.html">Home</a> <span>/</span> <span>Contact</span>
</div>
</div>
</section>
<!-- ====== CONTACT MAIN ====== -->
<section class="section">
<div class="container contact-grid">
<!-- Contact Info -->
<div class="contact-info">
<h2 style="margin-bottom:1.5rem;">We'd Love to Hear From You</h2>
<div class="contact-item">
<div class="contact-item__icon">📍</div>
<div>
<h4>Our Location</h4>
<p>123 MedTech Avenue, Suite 100<br>San Francisco, CA 94102, USA</p>
</div>
</div>
<div class="contact-item">
<div class="contact-item__icon">📞</div>
<div>
<h4>Phone</h4>
<p>General: <a href="tel:+18005550199" style="color:var(--primary);">1-800-555-0199</a><br>Emergency: <a href="tel:+18005550911" style="color:#ef4444;">1-800-555-0911</a></p>
</div>
</div>
<div class="contact-item">
<div class="contact-item__icon">📧</div>
<div>
<h4>Email</h4>
<p>General: <a href="mailto:info@aidoctorsclinic.com" style="color:var(--primary);">info@aidoctorsclinic.com</a><br>Appointments: <a href="mailto:appointments@aidoctorsclinic.com" style="color:var(--primary);">appointments@aidoctorsclinic.com</a></p>
</div>
</div>
<div class="contact-item">
<div class="contact-item__icon">🕒</div>
<div>
<h4>Office Hours</h4>
<p>Monday - Friday: 8:00 AM - 8:00 PM<br>Saturday: 9:00 AM - 4:00 PM<br>Sunday: Emergency Only<br><strong style="color:var(--accent);">AI Chat: 24/7 Always On</strong></p>
</div>
</div>
<!-- Emergency Banner -->
<div style="background:#fef2f2;border:1px solid #fecaca;border-radius:var(--radius);padding:1.25rem 1.5rem;display:flex;gap:.75rem;align-items:flex-start;">
<span style="font-size:1.5rem;">🚨</span>
<div>
<strong style="color:#b91c1c;display:block;margin-bottom:.3rem;">Medical Emergency?</strong>
<p style="font-size:.9rem;color:#7f1d1d;margin:0;">If you are experiencing a life-threatening emergency, call <strong>911</strong> immediately. For urgent (non-911) care, call our emergency line: <a href="tel:+18005550911" style="color:#b91c1c;font-weight:700;">1-800-555-0911</a></p>
</div>
</div>
<!-- Map placeholder -->
<div style="background:var(--light-bg);border-radius:var(--radius);height:200px;display:flex;align-items:center;justify-content:center;border:1px solid var(--border);font-size:.95rem;color:#6b7280;flex-direction:column;gap:.75rem;">
<span style="font-size:2.5rem;">🗺️</span>
<span>123 MedTech Ave, San Francisco, CA</span>
<a href="https://maps.google.com/?q=San+Francisco,+CA" target="_blank" class="btn btn-primary" style="font-size:.85rem;padding:.45rem 1.2rem;">Open in Google Maps</a>
</div>
</div>
<!-- Contact Form -->
<div class="contact-form">
<h3>Send Us a Message</h3>
<form id="contactForm">
<div class="form-row">
<div class="form-group">
<label for="cFirstName">First Name *</label>
<input type="text" id="cFirstName" placeholder="John" required />
</div>
<div class="form-group">
<label for="cLastName">Last Name *</label>
<input type="text" id="cLastName" placeholder="Doe" required />
</div>
</div>
<div class="form-group">
<label for="cEmail">Email *</label>
<input type="email" id="cEmail" placeholder="john@example.com" required />
</div>
<div class="form-group">
<label for="cPhone">Phone</label>
<input type="tel" id="cPhone" placeholder="+1 (555) 000-0000" />
</div>
<div class="form-group">
<label for="cSubject">Subject *</label>
<select id="cSubject" required>
<option value="">Select a topic...</option>
<option>General Inquiry</option>
<option>Appointment Question</option>
<option>Billing & Insurance</option>
<option>Technical Support</option>
<option>Partnership Inquiry</option>
<option>Feedback / Complaint</option>
<option>Media / Press</option>
</select>
</div>
<div class="form-group">
<label for="cMessage">Message *</label>
<textarea id="cMessage" placeholder="How can we help you?" required style="min-height:130px;"></textarea>
</div>
<div class="form-group" style="flex-direction:row;align-items:center;gap:.75rem;">
<input type="checkbox" id="cConsent" required style="width:16px;height:16px;flex-shrink:0;" />
<label for="cConsent" style="font-size:.85rem;color:#6b7280;font-weight:400;">I agree to the <a href="#" style="color:var(--primary);">Privacy Policy</a> and consent to being contacted.</label>
</div>
<button type="submit" class="btn btn-primary" style="width:100%;justify-content:center;font-size:1rem;">Send Message →</button>
</form>
<div id="contactSuccess" style="display:none;text-align:center;padding:2rem;background:#d1fae5;border-radius:10px;color:#065f46;">
<div style="font-size:2.5rem;margin-bottom:.75rem;">✅</div>
<h3 style="color:#065f46;margin-bottom:.5rem;">Message Sent!</h3>
<p style="margin:0;">Thank you for reaching out. A member of our team will respond within 1 business hour during office hours.</p>
</div>
</div>
</div>
</section>
<!-- ====== DEPARTMENTS ====== -->
<section class="section section--grey">
<div class="container">
<div class="section-heading">
<span class="tag">Departments</span>
<h2>Direct Department Contacts</h2>
</div>
<div style="display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:1.5rem;margin-top:2.5rem;">
<div style="background:var(--white);border:1px solid var(--border);border-radius:var(--radius);padding:1.5rem;text-align:center;">
<div style="font-size:2rem;margin-bottom:.75rem;">📅</div>
<h4 style="margin-bottom:.4rem;">Appointments</h4>
<p style="font-size:.88rem;color:#6b7280;margin-bottom:.75rem;">Schedule, reschedule, cancel</p>
<a href="mailto:appointments@aidoctorsclinic.com" style="color:var(--primary);font-size:.88rem;font-weight:600;">appointments@aidoctorsclinic.com</a>
</div>
<div style="background:var(--white);border:1px solid var(--border);border-radius:var(--radius);padding:1.5rem;text-align:center;">
<div style="font-size:2rem;margin-bottom:.75rem;">💳</div>
<h4 style="margin-bottom:.4rem;">Billing</h4>
<p style="font-size:.88rem;color:#6b7280;margin-bottom:.75rem;">Insurance, invoices, payments</p>
<a href="mailto:billing@aidoctorsclinic.com" style="color:var(--primary);font-size:.88rem;font-weight:600;">billing@aidoctorsclinic.com</a>
</div>
<div style="background:var(--white);border:1px solid var(--border);border-radius:var(--radius);padding:1.5rem;text-align:center;">
<div style="font-size:2rem;margin-bottom:.75rem;">🤝</div>
<h4 style="margin-bottom:.4rem;">Partnerships</h4>
<p style="font-size:.88rem;color:#6b7280;margin-bottom:.75rem;">Business and clinical partners</p>
<a href="mailto:partners@aidoctorsclinic.com" style="color:var(--primary);font-size:.88rem;font-weight:600;">partners@aidoctorsclinic.com</a>
</div>
<div style="background:var(--white);border:1px solid var(--border);border-radius:var(--radius);padding:1.5rem;text-align:center;">
<div style="font-size:2rem;margin-bottom:.75rem;">📰</div>
<h4 style="margin-bottom:.4rem;">Press & Media</h4>
<p style="font-size:.88rem;color:#6b7280;margin-bottom:.75rem;">Interviews, press releases</p>
<a href="mailto:press@aidoctorsclinic.com" style="color:var(--primary);font-size:.88rem;font-weight:600;">press@aidoctorsclinic.com</a>
</div>
</div>
</div>
</section>
<!-- ====== FOOTER ====== -->
<footer class="footer">
<div class="container footer__grid">
<div>
<div class="footer__brand">🏥 AIDoctorsClinic</div>
<p class="footer__desc">AI-powered healthcare that puts patients first.</p>
<div class="footer__social">
<a href="#" title="Facebook">📘</a><a href="#" title="Twitter">🐦</a>
<a href="#" title="LinkedIn">💼</a><a href="#" title="Instagram">📸</a>
</div>
</div>
<div class="footer__col">
<h4>Quick Links</h4>
<ul>
<li><a href="index.html">Home</a></li>
<li><a href="doctors.html">Our Doctors</a></li>
<li><a href="appointments.html">Appointments</a></li>
<li><a href="contact.html">Contact</a></li>
</ul>
</div>
<div class="footer__col">
<h4>Services</h4>
<ul>
<li><a href="#">AI Diagnostics</a></li>
<li><a href="#">Telemedicine</a></li>
<li><a href="#">General Medicine</a></li>
<li><a href="#">Lab & Imaging</a></li>
</ul>
</div>
<div class="footer__col">
<h4>Contact</h4>
<ul>
<li><a href="mailto:info@aidoctorsclinic.com">📧 info@aidoctorsclinic.com</a></li>
<li><a href="tel:+18005550199">📞 1-800-555-0199</a></li>
<li><a href="#">📍 123 MedTech Ave, Suite 100</a></li>
</ul>
</div>
</div>
<div class="footer__bottom">
<div class="container">© 2026 AIDoctorsClinic.com - All rights reserved.</div>
</div>
</footer>
<button id="backToTop" style="display:none;position:fixed;bottom:2rem;right:2rem;width:44px;height:44px;border-radius:50%;background:var(--primary);color:#fff;border:none;cursor:pointer;font-size:1.2rem;align-items:center;justify-content:center;box-shadow:0 4px 16px rgba(13,110,253,.4);z-index:999;" title="Back to top">↑</button>
<script src="assets/js/main.js"></script>
</body>
</html>
cd /home/daytona/workspace && zip -r aidoctorsclinic-website.zip aidoctorsclinic/ && echo "ZIP created" && ls -lh aidoctorsclinic-website.zip
cd /home/daytona/workspace && python3 -c " import zipfile, os z = zipfile.ZipFile('aidoctorsclinic-website.zip', 'w', zipfile.ZIP_DEFLATED) for root, dirs, files in os.walk('aidoctorsclinic'): for f in files: path = os.path.join(root, f) z.write(path) print('Added:', path) z.close() print('ZIP done') " ls -lh aidoctorsclinic-website.zip
ls -lh /home/daytona/workspace/aidoctorsclinic/ && ls -lh /home/daytona/workspace/aidoctorsclinic/assets/css/ && ls -lh /home/daytona/workspace/aidoctorsclinic/assets/js/
| File | Description |
|---|---|
index HTML File · HTML | Homepage with hero, services, doctors preview, testimonials |
doctors HTML File · HTML | Doctors page with filter by specialty (8 doctors) |
appointments HTML File · HTML | Full booking form with AI matching, FAQ section |
contact HTML File · HTML | Contact form, map, department emails |
styles CSS File · CSS | Full responsive stylesheet |
main JavaScript File · JS | Interactive JS (nav, filters, forms, counters) |
aidoctorsclinic folder to netlify.com/drop - gets you a live URL in seconds.public_html folder via File Manager or FTP.aidoctorsclinic.comA record: @ → 75.2.60.5 (Netlify's IP)CNAME record: www → your-site-name.netlify.appaidoctorsclinic.comns1.bluehost.com).HTML sites what you provide it is not working properly and also won't feature to modify doctor's details and add other specialties according to myself.
~/aidoctorsclinic-v2/index.html
Structuring content...
This can take a few minutes — feel free to come back later.
TRY
mkdir -p /home/daytona/workspace/aidoctorsclinic-v2 && echo "ready"
~/aidoctorsclinic-v2/index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8"/>
<meta name="viewport" content="width=device-width,initial-scale=1.0"/>
<title>AIDoctorsClinic.com</title>
<script src="https://unpkg.com/react@18/umd/react.development.js"></script>
<script src="https://unpkg.com/react-dom@18/umd/react-dom.development.js"></script>
<script src="https://unpkg.com/@babel/standalone/babel.min.js"></script>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap" rel="stylesheet"/>
<style>
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{font-family:'Inter',sans-serif;color:#1e293b;background:#fff;line-height:1.6}
a{text-decoration:none;color:inherit}
button{cursor:pointer;font-family:inherit}
input,select,textarea{font-family:inherit}
:root{
--blue:#2563eb;--blue-dk:#1d4ed8;--blue-lt:#eff6ff;
--teal:#0d9488;--teal-lt:#f0fdfa;
--red:#dc2626;--red-lt:#fef2f2;
--green:#16a34a;--green-lt:#f0fdf4;
--yellow:#ca8a04;--yellow-lt:#fefce8;
--g50:#f8fafc;--g100:#f1f5f9;--g200:#e2e8f0;--g400:#94a3b8;--g500:#64748b;--g700:#334155;--g900:#0f172a;
--sh:0 4px 16px rgba(0,0,0,.10);--sh-lg:0 10px 40px rgba(0,0,0,.15);
--r:12px;--rs:8px;
}
.wrap{max-width:1200px;margin:0 auto;padding:0 24px}
.sec{padding:72px 0}
.sec-alt{background:var(--g50)}
.g2{display:grid;grid-template-columns:1fr 1fr;gap:40px;align-items:center}
.g3{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}
.g4{display:grid;grid-template-columns:repeat(4,1fr);gap:20px}
h1{font-size:clamp(1.9rem,4.5vw,3rem);font-weight:800;line-height:1.15;color:var(--g900)}
h2{font-size:clamp(1.4rem,3vw,2.1rem);font-weight:700;color:var(--g900)}
h3{font-size:1.05rem;font-weight:600;color:var(--g900)}
h4{font-size:.9rem;font-weight:600;color:var(--g900)}
p{color:var(--g500)}
.tc{text-align:center}
/* BUTTONS */
.btn{display:inline-flex;align-items:center;gap:8px;padding:11px 22px;border-radius:var(--rs);font-weight:600;font-size:.93rem;border:2px solid transparent;transition:all .18s;white-space:nowrap;line-height:1}
.btn-p{background:var(--blue);color:#fff}
.btn-p:hover{background:var(--blue-dk);transform:translateY(-1px);box-shadow:0 4px 16px rgba(37,99,235,.4)}
.btn-t{background:var(--teal);color:#fff}
.btn-t:hover{background:#0f766e;transform:translateY(-1px)}
.btn-o{border-color:var(--blue);color:var(--blue);background:transparent}
.btn-o:hover{background:var(--blue);color:#fff}
.btn-ow{border-color:#fff;color:#fff;background:transparent}
.btn-ow:hover{background:#fff;color:var(--blue)}
.btn-g{background:transparent;color:var(--g700);border-color:var(--g200)}
.btn-g:hover{background:var(--g100)}
.btn-d{background:var(--red);color:#fff;border-color:var(--red)}
.btn-d:hover{background:#b91c1c}
.btn-s{background:var(--green);color:#fff}
.btn-sm{padding:7px 14px;font-size:.82rem}
.btn-lg{padding:14px 28px;font-size:1rem}
.btn-fw{width:100%;justify-content:center}
/* BADGE */
.bdg{display:inline-flex;align-items:center;gap:4px;padding:3px 10px;border-radius:999px;font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em}
.bdg-b{background:var(--blue-lt);color:var(--blue)}
.bdg-t{background:var(--teal-lt);color:var(--teal)}
.bdg-g{background:var(--green-lt);color:var(--green)}
.bdg-r{background:var(--red-lt);color:var(--red)}
.bdg-y{background:var(--yellow-lt);color:var(--yellow)}
.bdg-gr{background:var(--g100);color:var(--g700)}
/* CARD */
.card{background:#fff;border:1px solid var(--g200);border-radius:var(--r);box-shadow:0 1px 4px rgba(0,0,0,.06)}
.card-h{transition:all .2s}
.card-h:hover{transform:translateY(-4px);box-shadow:var(--sh-lg);border-color:var(--blue)}
/* FORM */
.fg{display:flex;flex-direction:column;gap:5px;margin-bottom:14px}
.fg label{font-size:.82rem;font-weight:600;color:var(--g700)}
.fc{padding:9px 13px;border:1.5px solid var(--g200);border-radius:var(--rs);font-size:.92rem;transition:border-color .2s,box-shadow .2s;background:#fff;color:var(--g900)}
.fc:focus{outline:none;border-color:var(--blue);box-shadow:0 0 0 3px rgba(37,99,235,.12)}
.fc::placeholder{color:var(--g400)}
textarea.fc{resize:vertical;min-height:90px}
.fr{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.fe{font-size:.75rem;color:var(--red);margin-top:1px}
/* NAV */
.nav{position:sticky;top:0;z-index:100;background:rgba(255,255,255,.97);backdrop-filter:blur(12px);border-bottom:1px solid var(--g200);box-shadow:0 1px 4px rgba(0,0,0,.06)}
.nav-in{display:flex;align-items:center;justify-content:space-between;height:64px}
.nav-brand{display:flex;align-items:center;gap:9px;font-weight:800;font-size:1.15rem;color:var(--blue);cursor:pointer}
.nav-icon{width:34px;height:34px;background:linear-gradient(135deg,var(--blue),var(--teal));border-radius:9px;display:flex;align-items:center;justify-content:center;color:#fff;font-size:1rem}
.nav-links{display:flex;align-items:center;gap:4px}
.nl{padding:7px 13px;border-radius:var(--rs);font-weight:500;font-size:.9rem;color:var(--g700);transition:all .18s;cursor:pointer;border:none;background:transparent}
.nl:hover{background:var(--blue-lt);color:var(--blue)}
.nl.act{background:var(--blue-lt);color:var(--blue);font-weight:600}
.nav-act{display:flex;align-items:center;gap:8px}
.mob-btn{display:none;flex-direction:column;gap:5px;padding:8px;background:none;border:none}
.mob-btn span{display:block;width:22px;height:2px;background:var(--g700);border-radius:2px}
.mob-nav{background:#fff;border-top:1px solid var(--g200);padding:12px;display:flex;flex-direction:column;gap:4px}
/* HERO */
.hero{background:linear-gradient(135deg,#0f172a 0%,#1e3a5f 55%,#1d4ed8 100%);color:#fff;padding:80px 0 72px;position:relative;overflow:hidden}
.hero::before{content:'';position:absolute;top:-40%;right:-10%;width:600px;height:600px;border-radius:50%;background:radial-gradient(circle,rgba(37,99,235,.22),transparent 70%);pointer-events:none}
.hero h1{color:#fff;margin-bottom:18px}
.hero h1 span{background:linear-gradient(135deg,#60a5fa,#34d399);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}
.hero p{font-size:1.05rem;color:rgba(255,255,255,.8);max-width:500px;margin-bottom:28px}
.hero-btns{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:36px}
.hero-stats{display:flex;gap:28px;flex-wrap:wrap}
.hs strong{display:block;font-size:1.65rem;font-weight:800;color:#60a5fa}
.hs span{font-size:.82rem;color:rgba(255,255,255,.6)}
.orb{width:280px;height:280px;border-radius:50%;background:linear-gradient(135deg,rgba(37,99,235,.28),rgba(13,148,136,.28));border:1px solid rgba(255,255,255,.14);display:flex;align-items:center;justify-content:center;flex-direction:column;gap:14px;text-align:center;backdrop-filter:blur(8px);box-shadow:0 0 50px rgba(37,99,235,.28)}
.orb-icon{font-size:3.6rem;animation:fl 3s ease-in-out infinite}
@keyframes fl{0%,100%{transform:translateY(0)}50%{transform:translateY(-10px)}}
.orb p{color:rgba(255,255,255,.75);font-size:.85rem;padding:0 20px}
/* STATS BAR */
.sbar{background:var(--blue);padding:36px 0}
.sbar-in{display:flex;justify-content:space-around;flex-wrap:wrap;gap:20px;text-align:center}
.sbar strong{display:block;font-size:2rem;font-weight:800;color:#fff}
.sbar span{font-size:.82rem;color:rgba(255,255,255,.72)}
/* SERVICES */
.srv-g{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:18px;margin-top:44px}
.srv-card{padding:24px 20px;text-align:center;border-radius:var(--r)}
.srv-ico{width:56px;height:56px;border-radius:14px;background:var(--blue-lt);color:var(--blue);display:flex;align-items:center;justify-content:center;font-size:1.5rem;margin:0 auto 14px}
.srv-card h3{margin-bottom:6px;font-size:.95rem}
.srv-card p{font-size:.84rem}
/* DOCTORS */
.doc-g{display:grid;grid-template-columns:repeat(auto-fill,minmax(252px,1fr));gap:22px;margin-top:36px}
.doc-card{border-radius:var(--r);overflow:hidden}
.doc-av{height:190px;display:flex;align-items:center;justify-content:center;font-size:4.5rem;background:linear-gradient(135deg,#dbeafe,#bfdbfe)}
.doc-body{padding:18px}
.doc-name{font-size:1rem;font-weight:700;margin-bottom:3px}
.doc-spec{color:var(--blue);font-size:.84rem;font-weight:600;margin-bottom:10px}
.doc-meta{display:flex;flex-direction:column;gap:3px;margin-bottom:14px}
.doc-mi{display:flex;align-items:center;gap:7px;font-size:.79rem;color:var(--g500)}
.stars{color:#f59e0b;letter-spacing:1px;font-size:.82rem;margin-bottom:5px}
.doc-act{display:flex;gap:7px}
.doc-act .btn{flex:1;justify-content:center}
/* FILTER */
.fbar{display:flex;gap:7px;flex-wrap:wrap;justify-content:center;margin-bottom:28px}
.fbtn{padding:7px 18px;border-radius:999px;border:1.5px solid var(--g200);background:#fff;font-size:.84rem;font-weight:500;color:var(--g700);cursor:pointer;transition:all .18s}
.fbtn:hover,.fbtn.act{background:var(--blue);color:#fff;border-color:var(--blue)}
/* WHY */
.why-l{display:flex;flex-direction:column;gap:22px;margin-top:28px}
.why-i{display:flex;gap:14px}
.why-ico{width:46px;height:46px;border-radius:12px;background:var(--blue-lt);color:var(--blue);display:flex;align-items:center;justify-content:center;font-size:1.25rem;flex-shrink:0}
.why-t h4{margin-bottom:3px}
.why-t p{font-size:.88rem}
/* TESTI */
.tst-g{display:grid;grid-template-columns:repeat(auto-fill,minmax(270px,1fr));gap:22px;margin-top:36px}
.tst{padding:24px;border-radius:var(--r)}
.tst-txt{font-style:italic;color:var(--g700);margin-bottom:18px;font-size:.92rem;line-height:1.7}
.tst-au{display:flex;align-items:center;gap:10px}
.tst-av{width:40px;height:40px;border-radius:50%;background:var(--blue-lt);display:flex;align-items:center;justify-content:center;font-size:1.2rem}
.tst-nm{font-weight:700;font-size:.88rem}
.tst-rl{font-size:.77rem;color:var(--g400)}
/* PAGE HEADER */
.ph{background:linear-gradient(135deg,#0f172a,#1e3a5f);color:#fff;padding:52px 0 44px;text-align:center}
.ph h1{color:#fff;margin-bottom:10px;font-size:clamp(1.7rem,3.5vw,2.4rem)}
.ph p{color:rgba(255,255,255,.72);max-width:500px;margin:0 auto}
.bc{display:flex;justify-content:center;gap:7px;margin-top:10px;font-size:.82rem;color:rgba(255,255,255,.5)}
.bc a{color:rgba(255,255,255,.65);cursor:pointer}
.bc a:hover{color:#fff}
/* CTA */
.cta{background:linear-gradient(135deg,var(--blue),var(--teal));padding:68px 0;text-align:center}
.cta h2{color:#fff;margin-bottom:10px}
.cta p{color:rgba(255,255,255,.82);max-width:500px;margin:0 auto 28px}
.cta-bs{display:flex;gap:10px;justify-content:center;flex-wrap:wrap}
/* FOOTER */
.ft{background:#0f172a;color:rgba(255,255,255,.68);padding:52px 0 0}
.ft-g{display:grid;grid-template-columns:2fr 1fr 1fr 1fr;gap:36px;padding-bottom:36px;border-bottom:1px solid rgba(255,255,255,.08)}
.ft-brand{font-size:1.1rem;font-weight:800;color:#fff;display:flex;align-items:center;gap:9px;margin-bottom:10px}
.ft-bi{width:30px;height:30px;background:linear-gradient(135deg,var(--blue),var(--teal));border-radius:7px;display:flex;align-items:center;justify-content:center;font-size:.95rem}
.ft-desc{font-size:.84rem;margin-bottom:18px;line-height:1.7}
.ft-soc{display:flex;gap:7px}
.ft-soc a{width:34px;height:34px;border-radius:50%;background:rgba(255,255,255,.08);display:flex;align-items:center;justify-content:center;font-size:.88rem;transition:background .18s}
.ft-soc a:hover{background:var(--blue)}
.ft-col h4{color:#fff;margin-bottom:14px;font-size:.9rem}
.ft-col ul{display:flex;flex-direction:column;gap:7px}
.ft-col ul li a{font-size:.84rem;transition:color .18s;cursor:pointer}
.ft-col ul li a:hover{color:#fff}
.ft-bot{text-align:center;padding:18px;font-size:.79rem;opacity:.35}
/* CONTACT */
.ct-g{display:grid;grid-template-columns:1fr 1.3fr;gap:44px;align-items:start}
.ct-its{display:flex;flex-direction:column;gap:18px}
.ct-it{display:flex;gap:14px}
.ct-ico{width:46px;height:46px;background:var(--blue-lt);border-radius:12px;display:flex;align-items:center;justify-content:center;font-size:1.15rem;flex-shrink:0}
.ct-it h4{margin-bottom:3px}
.ct-it p{font-size:.85rem}
.emrg{background:var(--red-lt);border:1px solid #fca5a5;border-radius:var(--r);padding:14px 18px;display:flex;gap:10px;margin-top:8px}
.emrg strong{color:var(--red);display:block;margin-bottom:3px}
.emrg p{font-size:.84rem;color:#7f1d1d;margin:0}
.ct-form{background:#fff;border:1px solid var(--g200);border-radius:var(--r);padding:28px;box-shadow:var(--sh)}
/* ADMIN */
.adm-lay{display:flex;min-height:100vh;background:var(--g50)}
.adm-sb{width:252px;background:#0f172a;color:rgba(255,255,255,.78);display:flex;flex-direction:column;flex-shrink:0;position:fixed;top:0;left:0;height:100vh;overflow-y:auto;z-index:200}
.adm-sbh{padding:18px 20px;border-bottom:1px solid rgba(255,255,255,.09)}
.adm-brand{font-size:.95rem;font-weight:800;color:#fff;display:flex;align-items:center;gap:8px;margin-bottom:3px}
.adm-sub{font-size:.7rem;color:rgba(255,255,255,.35)}
.adm-nav{padding:10px 0;flex:1}
.adm-ns{padding:7px 20px;font-size:.68rem;font-weight:700;text-transform:uppercase;letter-spacing:.1em;color:rgba(255,255,255,.3);margin-top:6px}
.adm-ni{display:flex;align-items:center;gap:10px;padding:9px 20px;font-size:.87rem;color:rgba(255,255,255,.68);cursor:pointer;transition:all .14s;border-left:3px solid transparent}
.adm-ni:hover{background:rgba(255,255,255,.05);color:#fff}
.adm-ni.act{background:rgba(37,99,235,.18);color:#93c5fd;border-left-color:var(--blue)}
.adm-ni .ni{font-size:.95rem;width:18px;text-align:center}
.adm-main{margin-left:252px;flex:1;min-height:100vh;display:flex;flex-direction:column}
.adm-tb{background:#fff;border-bottom:1px solid var(--g200);padding:0 28px;height:58px;display:flex;align-items:center;justify-content:space-between;box-shadow:0 1px 3px rgba(0,0,0,.06);position:sticky;top:0;z-index:99}
.adm-tb-ttl{font-weight:700;font-size:.95rem;color:var(--g900)}
.adm-tb-r{display:flex;align-items:center;gap:10px}
.adm-con{padding:28px;flex:1}
.adm-pt{font-size:1.3rem;font-weight:800;color:var(--g900);margin-bottom:3px}
.adm-ps{font-size:.84rem;color:var(--g500);margin-bottom:22px}
.adm-card{background:#fff;border:1px solid var(--g200);border-radius:var(--r);padding:22px;box-shadow:0 1px 3px rgba(0,0,0,.05)}
.adm-sc{padding:22px;border-radius:var(--r);background:#fff;border:1px solid var(--g200)}
.adm-sico{width:46px;height:46px;border-radius:12px;display:flex;align-items:center;justify-content:center;font-size:1.3rem;margin-bottom:10px}
.adm-snum{font-size:1.75rem;font-weight:800;color:var(--g900)}
.adm-slbl{font-size:.82rem;color:var(--g500);margin-top:2px}
.tbl{width:100%;border-collapse:collapse}
.tbl th{text-align:left;padding:11px 14px;font-size:.76rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--g500);background:var(--g50);border-bottom:1px solid var(--g200)}
.tbl td{padding:13px 14px;border-bottom:1px solid var(--g100);font-size:.87rem;color:var(--g700);vertical-align:middle}
.tbl tr:hover td{background:var(--g50)}
.tbl tr:last-child td{border-bottom:none}
.tbl-av{width:34px;height:34px;border-radius:50%;background:var(--blue-lt);display:flex;align-items:center;justify-content:center;font-size:1.05rem}
.tbl-acts{display:flex;gap:6px}
/* MODAL */
.mo{position:fixed;inset:0;background:rgba(0,0,0,.48);z-index:1000;display:flex;align-items:center;justify-content:center;padding:16px;backdrop-filter:blur(4px)}
.mo-box{background:#fff;border-radius:16px;width:100%;max-width:540px;max-height:92vh;overflow-y:auto;box-shadow:var(--sh-lg)}
.mo-hd{display:flex;align-items:center;justify-content:space-between;padding:18px 22px;border-bottom:1px solid var(--g200)}
.mo-ttl{font-size:1.05rem;font-weight:700}
.mo-cls{width:30px;height:30px;border-radius:7px;border:none;background:var(--g100);cursor:pointer;font-size:1rem;display:flex;align-items:center;justify-content:center;color:var(--g700)}
.mo-cls:hover{background:var(--g200)}
.mo-body{padding:22px}
.mo-ft{padding:14px 22px;border-top:1px solid var(--g200);display:flex;gap:8px;justify-content:flex-end}
/* MISC */
.div{height:1px;background:var(--g200);margin:22px 0}
.suc{text-align:center;padding:36px 22px;background:var(--green-lt);border-radius:var(--r);border:1px solid #86efac}
.suc .ico{font-size:2.8rem;margin-bottom:10px}
.suc h3{color:var(--green);margin-bottom:7px}
.suc p{color:#166534;font-size:.88rem}
.alrt{padding:11px 14px;border-radius:var(--rs);font-size:.84rem;font-weight:500;margin-bottom:14px;display:flex;align-items:center;gap:7px}
.alrt-s{background:var(--green-lt);color:var(--green);border:1px solid #86efac}
.alrt-e{background:var(--red-lt);color:var(--red);border:1px solid #fca5a5}
.empty{text-align:center;padding:44px 22px;color:var(--g400)}
.empty .eico{font-size:2.8rem;margin-bottom:10px}
.faq-item{border:1px solid var(--g200);border-radius:var(--rs);overflow:hidden;margin-bottom:7px}
.faq-q{padding:14px 18px;font-weight:600;font-size:.92rem;cursor:pointer;background:#fff;display:flex;justify-content:space-between;user-select:none}
.faq-q:hover{background:var(--g50)}
.faq-a{padding:0 18px 14px;font-size:.88rem;color:var(--g500);line-height:1.7}
/* RESPONSIVE */
@media(max-width:1024px){.ft-g{grid-template-columns:1fr 1fr}.g4{grid-template-columns:1fr 1fr}}
@media(max-width:768px){
.nav-links,.nav-act{display:none}
.mob-btn{display:flex}
.g2,.ct-g{grid-template-columns:1fr}
.hero{padding:56px 0}
.hero-visual{display:none}
.sec{padding:52px 0}
.fr{grid-template-columns:1fr}
.adm-sb{transform:translateX(-252px);transition:transform .3s}
.adm-main{margin-left:0}
}
@media(max-width:560px){
.sbar-in{flex-direction:column}
.ft-g{grid-template-columns:1fr}
.g3,.g4{grid-template-columns:1fr}
.doc-g{grid-template-columns:1fr}
.mo-box{max-height:100vh;border-radius:var(--r)}
.hero-stats{gap:14px}
}
</style>
</head>
<body>
<div id="root"></div>
<script type="text/babel">
const {useState,useEffect,useCallback} = React;
/* ── DEFAULT DATA ─────────────────────────────────────── */
const DD = {
doctors:[
{id:1,name:"Dr. James Carter", spec:"Cardiology", exp:"15 years",uni:"Harvard Medical School",lang:"English, Spanish",rating:5,ai:true, av:true,avatar:"👨⚕️",bio:"Expert interventional cardiologist specialising in heart failure and complex coronary artery disease."},
{id:2,name:"Dr. Priya Sharma", spec:"Neurology", exp:"12 years",uni:"Johns Hopkins", lang:"English, Hindi", rating:5,ai:true, av:true,avatar:"👩⚕️",bio:"Leading neurologist and AI diagnostics researcher with published work in Nature Medicine."},
{id:3,name:"Dr. Ali Hassan", spec:"General Medicine",exp:"10 years",uni:"Oxford University", lang:"English, Arabic", rating:4,ai:false,av:true,avatar:"👨⚕️",bio:"Compassionate GP and telemedicine pioneer, serving patients across 3 continents."},
{id:4,name:"Dr. Sofia Reyes", spec:"Dermatology", exp:"9 years", uni:"Stanford Medical", lang:"English, Spanish",rating:5,ai:true, av:true,avatar:"👩⚕️",bio:"Board-certified dermatologist with expertise in AI-assisted skin cancer detection."},
{id:5,name:"Dr. Marcus Lee", spec:"Orthopedics", exp:"18 years",uni:"Mayo Clinic", lang:"English, Korean", rating:5,ai:false,av:true,avatar:"👨⚕️",bio:"Senior orthopedic surgeon and sports medicine specialist who has operated on Olympic athletes."},
{id:6,name:"Dr. Amina Osei", spec:"Pediatrics", exp:"11 years",uni:"Yale School of Medicine",lang:"English, French",rating:5,ai:true, av:true,avatar:"👩⚕️",bio:"Award-winning pediatrician focused on child development and preventive care programs."},
],
specialties:[
{id:1,name:"General Medicine",icon:"🩺",desc:"Primary care for all ages including chronic disease management and preventive health."},
{id:2,name:"Cardiology", icon:"🫀",desc:"Heart health monitoring, EKG analysis and cardiac risk assessment with AI precision."},
{id:3,name:"Neurology", icon:"🧠",desc:"Brain and nervous system care with AI-assisted imaging interpretation."},
{id:4,name:"Orthopedics", icon:"🦴",desc:"Bone, joint and musculoskeletal care with smart rehabilitation tracking."},
{id:5,name:"Dermatology", icon:"✨",desc:"Skin health including AI-powered lesion detection and cosmetic dermatology."},
{id:6,name:"Pediatrics", icon:"👶",desc:"Complete child healthcare from newborn care through adolescence."},
{id:7,name:"AI Diagnostics", icon:"🤖",desc:"Advanced AI algorithms analyse symptoms and history for fast, accurate insights."},
{id:8,name:"Telemedicine", icon:"📱",desc:"Secure video consultations from home. AI pre-screening for best specialist match."},
],
clinic:{
name:"AIDoctorsClinic",phone:"1-800-555-0199",emergency:"1-800-555-0911",
email:"info@aidoctorsclinic.com",
address:"123 MedTech Avenue, Suite 100, San Francisco, CA 94102",
hours:"Mon-Fri 8am-8pm | Sat 9am-4pm | Sun: Emergency Only",
fb:"#",tw:"#",li:"#",ig:"#"
}
};
function useStor(key,init){
const [v,sv]=useState(()=>{try{const s=localStorage.getItem(key);return s?JSON.parse(s):init;}catch{return init;}});
const set=useCallback(x=>{sv(x);try{localStorage.setItem(key,JSON.stringify(x));}catch{}},[key]);
return [v,set];
}
/* ── SHARED ──────────────────────────────────────────── */
function Stars({n}){return <div className="stars">{"★".repeat(n)}{"☆".repeat(5-n)}</div>;}
function Navbar({pg,go,clinic}){
const [mob,setMob]=useState(false);
const links=[{id:"home",label:"Home"},{id:"doctors",label:"Our Doctors"},{id:"appointments",label:"Appointments"},{id:"contact",label:"Contact"}];
return(
<nav className="nav">
<div className="wrap">
<div className="nav-in">
<div className="nav-brand" onClick={()=>{go("home");setMob(false);}}>
<div className="nav-icon">🏥</div>
<span>AI<strong>Doctors</strong>Clinic</span>
</div>
<div className="nav-links">
{links.map(l=><button key={l.id} className={"nl"+(pg===l.id?" act":"")} onClick={()=>go(l.id)}>{l.label}</button>)}
</div>
<div className="nav-act">
<button className="btn btn-p btn-sm" onClick={()=>go("appointments")}>📅 Book Now</button>
<button className="btn btn-g btn-sm" onClick={()=>go("admin_login")} title="Admin Panel">⚙️</button>
</div>
<button className="mob-btn" onClick={()=>setMob(!mob)}><span/><span/><span/></button>
</div>
{mob&&<div className="mob-nav">
{links.map(l=><button key={l.id} className={"nl"+(pg===l.id?" act":"")} onClick={()=>{go(l.id);setMob(false);}}>{l.label}</button>)}
<button className="btn btn-p btn-sm" style={{marginTop:8}} onClick={()=>{go("appointments");setMob(false);}}>📅 Book Now</button>
</div>}
</div>
</nav>
);
}
function Footer({clinic,go}){
return(
<footer className="ft">
<div className="wrap">
<div className="ft-g">
<div>
<div className="ft-brand"><div className="ft-bi">🏥</div>{clinic.name}</div>
<p className="ft-desc">AI-powered healthcare that puts patients first. World-class doctors, smart technology, and compassionate care.</p>
<div className="ft-soc">
<a href={clinic.fb}>📘</a><a href={clinic.tw}>🐦</a><a href={clinic.li}>💼</a><a href={clinic.ig}>📸</a>
</div>
</div>
<div className="ft-col"><h4>Navigate</h4><ul>{["home","doctors","appointments","contact"].map(p=><li key={p}><a onClick={()=>go(p)}>{p.charAt(0).toUpperCase()+p.slice(1)}</a></li>)}</ul></div>
<div className="ft-col"><h4>Services</h4><ul><li><a>AI Diagnostics</a></li><li><a>Telemedicine</a></li><li><a>General Medicine</a></li><li><a>Lab & Imaging</a></li></ul></div>
<div className="ft-col"><h4>Contact</h4><ul>
<li><a href={"mailto:"+clinic.email}>📧 {clinic.email}</a></li>
<li><a href={"tel:"+clinic.phone}>📞 {clinic.phone}</a></li>
<li><a>📍 {clinic.address.split(",")[0]}</a></li>
<li><a>🕒 Mon-Fri 8am-8pm</a></li>
</ul></div>
</div>
<div className="ft-bot">© 2026 {clinic.name}.com — All rights reserved.</div>
</div>
</footer>
);
}
/* ── HOME ────────────────────────────────────────────── */
function Home({doctors,specialties,clinic,go}){
const feat=doctors.filter(d=>d.av).slice(0,3);
return(<>
{/* HERO */}
<section className="hero">
<div className="wrap">
<div className="g2" style={{gap:48}}>
<div>
<span className="bdg bdg-t" style={{marginBottom:14}}>✨ AI-Powered Healthcare 2026</span>
<h1>Smart Healthcare<br/><span>Powered by AI</span></h1>
<p>Experience the future of medicine. Our AI platform connects you with world-class doctors, delivers instant diagnostic insights, and personalises your care journey.</p>
<div className="hero-btns">
<button className="btn btn-p btn-lg" onClick={()=>go("appointments")}>📅 Book Appointment</button>
<button className="btn btn-ow btn-lg" onClick={()=>go("doctors")}>Meet Our Doctors</button>
</div>
<div className="hero-stats">
<div className="hs"><strong>15,000+</strong><span>Patients Served</span></div>
<div className="hs"><strong>{doctors.length}+</strong><span>Specialist Doctors</span></div>
<div className="hs"><strong>98%</strong><span>Satisfaction Rate</span></div>
</div>
</div>
<div className="hero-visual" style={{display:"flex",justifyContent:"center"}}>
<div className="orb">
<div className="orb-icon">🤖</div>
<p>AI-Assisted Diagnostics & Smart Doctor Matching</p>
</div>
</div>
</div>
</div>
</section>
{/* STATS */}
<div className="sbar">
<div className="wrap"><div className="sbar-in">
<div><strong>{specialties.length}+</strong><span>Specialties</span></div>
<div><strong>24/7</strong><span>AI Support</span></div>
<div><strong><10 min</strong><span>Avg. Wait</span></div>
<div><strong>15,000+</strong><span>Happy Patients</span></div>
</div></div>
</div>
{/* SERVICES */}
<section className="sec sec-alt">
<div className="wrap">
<div className="tc">
<span className="bdg bdg-b" style={{marginBottom:10}}>Our Services</span>
<h2>Comprehensive Medical Care</h2>
<p style={{maxWidth:500,margin:"10px auto 0"}}>From routine check-ups to specialised treatments — every service enhanced by artificial intelligence.</p>
</div>
<div className="srv-g">
{specialties.map(s=>(
<div key={s.id} className="card card-h srv-card">
<div className="srv-ico">{s.icon}</div>
<h3>{s.name}</h3>
<p>{s.desc}</p>
</div>
))}
</div>
</div>
</section>
{/* WHY */}
<section className="sec">
<div className="wrap"><div className="g2">
<div>
<span className="bdg bdg-t" style={{marginBottom:10}}>Why Choose Us</span>
<h2>Medicine Meets Artificial Intelligence</h2>
<div className="why-l">
{[
{ico:"⚡",t:"Faster Diagnoses", d:"AI pre-screens your symptoms before the appointment, cutting diagnosis time by up to 60%."},
{ico:"🎯",t:"Precision Treatment", d:"Personalised treatment plans built from your complete health profile and latest medical research."},
{ico:"🔒",t:"Secure & Private", d:"Full HIPAA compliance, end-to-end encrypted health records and transparent data policies."},
{ico:"🌐",t:"24/7 AI Assistant", d:"Round-the-clock AI health assistant for symptom checking, medication reminders and triage."},
].map((w,i)=>(
<div key={i} className="why-i">
<div className="why-ico">{w.ico}</div>
<div className="why-t"><h4>{w.t}</h4><p>{w.d}</p></div>
</div>
))}
</div>
</div>
<div style={{display:"flex",justifyContent:"center",alignItems:"center"}}>
<div style={{width:260,height:260,borderRadius:"50%",background:"linear-gradient(135deg,var(--blue),var(--teal))",display:"flex",alignItems:"center",justifyContent:"center",fontSize:"5.5rem",boxShadow:"0 20px 60px rgba(37,99,235,.3)"}}>🏥</div>
</div>
</div></div>
</section>
{/* FEATURED DOCTORS */}
<section className="sec sec-alt">
<div className="wrap">
<div className="tc">
<span className="bdg bdg-b" style={{marginBottom:10}}>Top Specialists</span>
<h2>Meet Our Expert Doctors</h2>
<p style={{maxWidth:500,margin:"10px auto 0"}}>Board-certified specialists supported by AI tools to deliver better outcomes.</p>
</div>
<div className="doc-g">
{feat.map(d=>(
<div key={d.id} className="card card-h doc-card">
<div className="doc-av">{d.avatar}</div>
<div className="doc-body">
<Stars n={d.rating}/>
<div className="doc-name">{d.name}</div>
<div className="doc-spec">{d.spec} {d.ai&&<span className="bdg bdg-t" style={{fontSize:".65rem",marginLeft:4}}>AI</span>}</div>
<div className="doc-meta">
<div className="doc-mi">🎓 {d.uni}</div>
<div className="doc-mi">📅 {d.exp}</div>
<div className="doc-mi">🌍 {d.lang}</div>
</div>
<div className="doc-act">
<button className="btn btn-g btn-sm" onClick={()=>go("doctors")}>Profile</button>
<button className="btn btn-p btn-sm" onClick={()=>go("appointments")}>Book</button>
</div>
</div>
</div>
))}
</div>
<div className="tc" style={{marginTop:28}}><button className="btn btn-p" onClick={()=>go("doctors")}>View All Doctors →</button></div>
</div>
</section>
{/* TESTIMONIALS */}
<section className="sec">
<div className="wrap">
<div className="tc">
<span className="bdg bdg-b" style={{marginBottom:10}}>Patient Reviews</span>
<h2>What Our Patients Say</h2>
</div>
<div className="tst-g">
{[
{txt:"The AI symptom checker caught an early warning sign my previous doctor missed. AIDoctorsClinic genuinely saved my life.",nm:"Sarah M.",rl:"Patient since 2025"},
{txt:"Booking is so easy and the reminders are smart. My entire family uses this clinic now. The doctors are incredibly knowledgeable.",nm:"David L.",rl:"Patient since 2024"},
{txt:"The telemedicine option is a lifesaver for my busy schedule. Same quality care, from the comfort of my home. 10/10 recommend.",nm:"Aisha K.",rl:"Patient since 2026"},
].map((t,i)=>(
<div key={i} className="card tst">
<Stars n={5}/>
<p className="tst-txt">"{t.txt}"</p>
<div className="tst-au">
<div className="tst-av">👤</div>
<div><div className="tst-nm">{t.nm}</div><div className="tst-rl">{t.rl}</div></div>
</div>
</div>
))}
</div>
</div>
</section>
{/* CTA */}
<section className="cta">
<div className="wrap">
<h2>Ready to Experience Smarter Healthcare?</h2>
<p>Join thousands of patients who trust AIDoctorsClinic for their health.</p>
<div className="cta-bs">
<button className="btn btn-ow btn-lg" onClick={()=>go("appointments")}>📅 Book Appointment</button>
<button className="btn btn-lg" style={{background:"#fff",color:"var(--blue)"}} onClick={()=>go("contact")}>📞 Contact Us</button>
</div>
</div>
</section>
</>);
}
/* ── DOCTORS ─────────────────────────────────────────── */
function Doctors({doctors,specialties,go}){
const [fil,setFil]=useState("all");
const vis=fil==="all"?doctors.filter(d=>d.av):doctors.filter(d=>d.av&&d.spec===fil);
return(<>
<div className="ph">
<div className="wrap">
<span className="bdg bdg-t" style={{marginBottom:10}}>Our Team</span>
<h1>Expert Doctors, AI-Enhanced Care</h1>
<p>Board-certified specialists equipped with cutting-edge AI diagnostic tools.</p>
<div className="bc"><a onClick={()=>go("home")}>Home</a><span>/</span><span>Our Doctors</span></div>
</div>
</div>
<section className="sec">
<div className="wrap">
<div className="fbar">
<button className={"fbtn"+(fil==="all"?" act":"")} onClick={()=>setFil("all")}>All Specialties</button>
{specialties.map(s=><button key={s.id} className={"fbtn"+(fil===s.name?" act":"")} onClick={()=>setFil(s.name)}>{s.name}</button>)}
</div>
{vis.length===0
?<div className="empty"><div className="eico">👩⚕️</div><p>No doctors found for this specialty yet.</p></div>
:<div className="doc-g">
{vis.map(d=>(
<div key={d.id} className="card card-h doc-card">
<div className="doc-av">{d.avatar}</div>
<div className="doc-body">
<Stars n={d.rating}/>
<div className="doc-name">{d.name}</div>
<div className="doc-spec">{d.spec} {d.ai&&<span className="bdg bdg-t" style={{fontSize:".65rem",marginLeft:4}}>AI</span>}</div>
<div className="doc-meta">
<div className="doc-mi">🎓 {d.uni}</div>
<div className="doc-mi">📅 {d.exp}</div>
<div className="doc-mi">🌍 {d.lang}</div>
</div>
{d.bio&&<p style={{fontSize:".8rem",color:"var(--g500)",marginBottom:12,lineHeight:1.6}}>{d.bio}</p>}
<button className="btn btn-p btn-fw btn-sm" onClick={()=>go("appointments")}>📅 Book Appointment</button>
</div>
</div>
))}
</div>
}
</div>
</section>
</>);
}
/* ── APPOINTMENTS ────────────────────────────────────── */
function Appointments({doctors,specialties,clinic,go}){
const [f,sf]=useState({fn:"",ln:"",email:"",phone:"",spec:"",doc:"",date:"",time:"",type:"",symp:"",ins:""});
const [done,setDone]=useState(false);
const [err,setErr]=useState({});
const today=new Date().toISOString().split("T")[0];
const val=()=>{
const e={};
if(!f.fn.trim())e.fn="Required";
if(!f.ln.trim())e.ln="Required";
if(!f.email.trim()||!/\S+@\S+\.\S+/.test(f.email))e.email="Valid email required";
if(!f.phone.trim())e.phone="Required";
if(!f.spec)e.spec="Required";
if(!f.date)e.date="Required";
if(!f.time)e.time="Required";
if(!f.type)e.type="Required";
if(!f.symp.trim())e.symp="Required";
return e;
};
const sub=(e)=>{e.preventDefault();const e2=val();setErr(e2);if(!Object.keys(e2).length)setDone(true);};
if(done)return(
<div style={{minHeight:"60vh",display:"flex",alignItems:"center",justifyContent:"center",padding:"40px 24px"}}>
<div className="suc" style={{maxWidth:480,width:"100%"}}>
<div className="ico">✅</div>
<h3>Appointment Request Received!</h3>
<p>Thank you {f.fn}! Our AI is matching you with the best available doctor.<br/>Confirmation will be sent to <strong>{f.email}</strong> within 30 minutes.</p>
<p style={{marginTop:8}}>Urgent? Call <strong>{clinic.emergency}</strong></p>
<button className="btn btn-s" style={{marginTop:18}} onClick={()=>{setDone(false);sf({fn:"",ln:"",email:"",phone:"",spec:"",doc:"",date:"",time:"",type:"",symp:"",ins:""});}}>Book Another</button>
</div>
</div>
);
return(<>
<div className="ph">
<div className="wrap">
<span className="bdg bdg-t" style={{marginBottom:10}}>Easy Booking</span>
<h1>Book Your Appointment</h1>
<p>Schedule in under 2 minutes. AI matches you with the ideal specialist.</p>
<div className="bc"><a onClick={()=>go("home")}>Home</a><span>/</span><span>Appointments</span></div>
</div>
</div>
<section className="sec">
<div className="wrap">
{/* Steps */}
<div style={{display:"flex",justifyContent:"center",gap:0,marginBottom:48}}>
{[{n:1,ico:"📋",t:"Fill Form"},{n:2,ico:"🤖",t:"AI Match"},{n:3,ico:"✅",t:"Confirm"},{n:4,ico:"🩺",t:"See Doctor"}].map((s,i)=>(
<div key={i} style={{display:"flex",flexDirection:"column",alignItems:"center",gap:7,flex:1,maxWidth:140,textAlign:"center",position:"relative"}}>
{i<3&&<div style={{position:"absolute",top:16,left:"50%",width:"100%",height:2,background:"var(--g200)",zIndex:0}}/>}
<div style={{width:34,height:34,borderRadius:"50%",background:"var(--blue)",color:"#fff",display:"flex",alignItems:"center",justifyContent:"center",fontWeight:700,fontSize:".85rem",position:"relative",zIndex:1}}>{s.n}</div>
<div style={{fontSize:"1.3rem"}}>{s.ico}</div>
<span style={{fontSize:".76rem",color:"var(--g500)",fontWeight:500}}>{s.t}</span>
</div>
))}
</div>
{/* Form */}
<div style={{maxWidth:680,margin:"0 auto"}}>
<div className="adm-card">
<h2 style={{marginBottom:4}}>Request an Appointment</h2>
<p style={{marginBottom:22,fontSize:".88rem"}}>Fields marked * are required. Confirmation within 30 minutes during office hours.</p>
<form onSubmit={sub} noValidate>
<div className="fr">
<div className="fg"><label>First Name *</label><input className="fc" value={f.fn} onChange={e=>sf({...f,fn:e.target.value})} placeholder="John"/>{err.fn&&<span className="fe">⚠ {err.fn}</span>}</div>
<div className="fg"><label>Last Name *</label><input className="fc" value={f.ln} onChange={e=>sf({...f,ln:e.target.value})} placeholder="Doe"/>{err.ln&&<span className="fe">⚠ {err.ln}</span>}</div>
</div>
<div className="fr">
<div className="fg"><label>Email *</label><input type="email" className="fc" value={f.email} onChange={e=>sf({...f,email:e.target.value})} placeholder="john@email.com"/>{err.email&&<span className="fe">⚠ {err.email}</span>}</div>
<div className="fg"><label>Phone *</label><input className="fc" value={f.phone} onChange={e=>sf({...f,phone:e.target.value})} placeholder="+1 555 000 0000"/>{err.phone&&<span className="fe">⚠ {err.phone}</span>}</div>
</div>
<div className="fr">
<div className="fg">
<label>Specialty *</label>
<select className="fc" value={f.spec} onChange={e=>sf({...f,spec:e.target.value,doc:""})}>
<option value="">Select specialty...</option>
{specialties.map(s=><option key={s.id} value={s.name}>{s.name}</option>)}
</select>
{err.spec&&<span className="fe">⚠ {err.spec}</span>}
</div>
<div className="fg">
<label>Preferred Doctor</label>
<select className="fc" value={f.doc} onChange={e=>sf({...f,doc:e.target.value})}>
<option value="">No preference / AI Match</option>
{doctors.filter(d=>d.av&&(!f.spec||d.spec===f.spec)).map(d=><option key={d.id} value={d.name}>{d.name}</option>)}
</select>
</div>
</div>
<div className="fr">
<div className="fg"><label>Preferred Date *</label><input type="date" className="fc" min={today} value={f.date} onChange={e=>sf({...f,date:e.target.value})}/>{err.date&&<span className="fe">⚠ {err.date}</span>}</div>
<div className="fg">
<label>Preferred Time *</label>
<select className="fc" value={f.time} onChange={e=>sf({...f,time:e.target.value})}>
<option value="">Select time...</option>
{["08:00 AM","09:00 AM","10:00 AM","11:00 AM","12:00 PM","01:00 PM","02:00 PM","03:00 PM","04:00 PM","05:00 PM","06:00 PM"].map(t=><option key={t}>{t}</option>)}
</select>
{err.time&&<span className="fe">⚠ {err.time}</span>}
</div>
</div>
<div className="fg">
<label>Visit Type *</label>
<select className="fc" value={f.type} onChange={e=>sf({...f,type:e.target.value})}>
<option value="">Select...</option>
<option>In-Person Visit</option><option>Telemedicine (Video Call)</option><option>Phone Consultation</option>
</select>
{err.type&&<span className="fe">⚠ {err.type}</span>}
</div>
<div className="fg"><label>Symptoms / Reason *</label><textarea className="fc" value={f.symp} onChange={e=>sf({...f,symp:e.target.value})} placeholder="Briefly describe your symptoms..."/>{err.symp&&<span className="fe">⚠ {err.symp}</span>}</div>
<div className="fg"><label>Insurance (optional)</label><input className="fc" value={f.ins} onChange={e=>sf({...f,ins:e.target.value})} placeholder="e.g. Blue Cross, Aetna..."/></div>
<button type="submit" className="btn btn-p btn-fw btn-lg" style={{marginTop:4}}>🤖 AI-Match & Book Appointment</button>
<p style={{fontSize:".76rem",color:"var(--g400)",textAlign:"center",marginTop:8}}>Your data is encrypted and protected under HIPAA guidelines.</p>
</form>
</div>
{/* FAQ */}
<div style={{marginTop:36}}>
<h3 style={{marginBottom:14}}>Frequently Asked Questions</h3>
{[
{q:"How quickly will I get a confirmation?",a:"During office hours (Mon-Fri 8am-8pm), confirmations are sent within 30 minutes. After hours, you'll hear back next morning."},
{q:"Can I reschedule or cancel?",a:"Yes. Reschedule or cancel up to 2 hours before your appointment at no charge. Contact us at "+clinic.phone+"."},
{q:"Do you accept insurance?",a:"We accept most major plans including Blue Cross, Aetna, Cigna, UnitedHealth and Medicare. Self-pay options are available."},
{q:"What is AI matching?",a:"Our AI analyses your symptoms, medical history and availability to recommend the most suitable doctor for your specific needs."},
].map((fq,i)=><FaqItem key={i} q={fq.q} a={fq.a}/>)}
</div>
</div>
</div>
</section>
</>);
}
function FaqItem({q,a}){
const [o,so]=useState(false);
return(<div className="faq-item"><div className="faq-q" onClick={()=>so(!o)}>{q}<span>{o?"▲":"▼"}</span></div>{o&&<div className="faq-a">{a}</div>}</div>);
}
/* ── CONTACT ─────────────────────────────────────────── */
function Contact({clinic,go}){
const [f,sf]=useState({fn:"",ln:"",email:"",phone:"",sub:"",msg:"",ok:false});
const [done,setDone]=useState(false);
const [err,setErr]=useState({});
const submit=(e)=>{
e.preventDefault();
const er={};
if(!f.fn.trim())er.fn="Required";
if(!f.email.trim())er.email="Required";
if(!f.sub)er.sub="Required";
if(!f.msg.trim())er.msg="Required";
if(!f.ok)er.ok="Please agree to the privacy policy";
setErr(er);
if(!Object.keys(er).length)setDone(true);
};
return(<>
<div className="ph">
<div className="wrap">
<span className="bdg bdg-t" style={{marginBottom:10}}>Get in Touch</span>
<h1>Contact AIDoctorsClinic</h1>
<p>Have a question or need support? Our team and AI assistant are here 24/7.</p>
<div className="bc"><a onClick={()=>go("home")}>Home</a><span>/</span><span>Contact</span></div>
</div>
</div>
<section className="sec">
<div className="wrap ct-g">
<div>
<h2 style={{marginBottom:22}}>We'd Love to Hear From You</h2>
<div className="ct-its">
{[{ico:"📍",t:"Location",b:clinic.address},{ico:"📞",t:"Phone",b:clinic.phone},{ico:"📧",t:"Email",b:clinic.email},{ico:"🕒",t:"Hours",b:clinic.hours}].map((c,i)=>(
<div key={i} className="ct-it"><div className="ct-ico">{c.ico}</div><div><h4>{c.t}</h4><p>{c.b}</p></div></div>
))}
</div>
<div className="emrg" style={{marginTop:22}}>
<span style={{fontSize:"1.4rem"}}>🚨</span>
<div><strong>Medical Emergency?</strong><p>Call <strong>911</strong> immediately. Urgent (non-911): <strong>{clinic.emergency}</strong></p></div>
</div>
<div style={{background:"var(--g50)",borderRadius:"var(--r)",height:160,display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",marginTop:22,border:"1px solid var(--g200)",gap:8}}>
<span style={{fontSize:"2rem"}}>🗺️</span>
<span style={{fontSize:".86rem",color:"var(--g500)"}}>123 MedTech Ave, San Francisco, CA</span>
<a href="https://maps.google.com/?q=San+Francisco,CA" target="_blank" className="btn btn-p btn-sm">Open in Google Maps</a>
</div>
</div>
<div className="ct-form">
<h3 style={{marginBottom:18}}>Send Us a Message</h3>
{done?(
<div className="suc">
<div className="ico">✅</div>
<h3>Message Sent!</h3>
<p>Our team will respond within 1 business hour during office hours.</p>
<button className="btn btn-s" style={{marginTop:14}} onClick={()=>{setDone(false);sf({fn:"",ln:"",email:"",phone:"",sub:"",msg:"",ok:false});}}>Send Another</button>
</div>
):(
<form onSubmit={submit} noValidate>
<div className="fr">
<div className="fg"><label>First Name *</label><input className="fc" value={f.fn} onChange={e=>sf({...f,fn:e.target.value})} placeholder="John"/>{err.fn&&<span className="fe">⚠ {err.fn}</span>}</div>
<div className="fg"><label>Last Name</label><input className="fc" value={f.ln} onChange={e=>sf({...f,ln:e.target.value})} placeholder="Doe"/></div>
</div>
<div className="fg"><label>Email *</label><input type="email" className="fc" value={f.email} onChange={e=>sf({...f,email:e.target.value})} placeholder="john@email.com"/>{err.email&&<span className="fe">⚠ {err.email}</span>}</div>
<div className="fg"><label>Phone</label><input className="fc" value={f.phone} onChange={e=>sf({...f,phone:e.target.value})} placeholder="+1 555 000 0000"/></div>
<div className="fg">
<label>Subject *</label>
<select className="fc" value={f.sub} onChange={e=>sf({...f,sub:e.target.value})}>
<option value="">Select a topic...</option>
<option>General Inquiry</option><option>Appointment Question</option><option>Billing & Insurance</option><option>Technical Support</option><option>Partnership Inquiry</option><option>Feedback / Complaint</option>
</select>
{err.sub&&<span className="fe">⚠ {err.sub}</span>}
</div>
<div className="fg"><label>Message *</label><textarea className="fc" value={f.msg} onChange={e=>sf({...f,msg:e.target.value})} placeholder="How can we help?" style={{minHeight:110}}/>{err.msg&&<span className="fe">⚠ {err.msg}</span>}</div>
<div className="fg" style={{flexDirection:"row",alignItems:"center",gap:9}}>
<input type="checkbox" checked={f.ok} onChange={e=>sf({...f,ok:e.target.checked})} style={{width:15,height:15}}/>
<label style={{fontWeight:400,fontSize:".82rem",color:"var(--g500)"}}>I agree to the Privacy Policy and consent to being contacted.</label>
</div>
{err.ok&&<span className="fe">⚠ {err.ok}</span>}
<button type="submit" className="btn btn-p btn-fw" style={{marginTop:8}}>Send Message →</button>
</form>
)}
</div>
</div>
</section>
</>);
}
/* ── ADMIN LOGIN ─────────────────────────────────────── */
function AdminLogin({onLogin,go}){
const [u,su]=useState("");const [p,sp]=useState("");const [e,se]=useState(false);
const sub=(ev)=>{ev.preventDefault();if(u==="admin"&&p==="admin123"){se(false);onLogin();}else se(true);};
return(
<div style={{minHeight:"100vh",display:"flex",alignItems:"center",justifyContent:"center",background:"var(--g50)",padding:24}}>
<div style={{width:"100%",maxWidth:380}}>
<div style={{textAlign:"center",marginBottom:28}}>
<div style={{width:60,height:60,borderRadius:14,background:"linear-gradient(135deg,var(--blue),var(--teal))",display:"flex",alignItems:"center",justifyContent:"center",fontSize:"1.8rem",margin:"0 auto 14px"}}>🏥</div>
<h2>Admin Login</h2><p>AIDoctorsClinic Dashboard</p>
</div>
<div className="adm-card">
<form onSubmit={sub}>
{e&&<div className="alrt alrt-e">⚠ Invalid. Use admin / admin123</div>}
<div className="fg"><label>Username</label><input className="fc" value={u} onChange={ev=>su(ev.target.value)} placeholder="admin" autoComplete="username"/></div>
<div className="fg"><label>Password</label><input type="password" className="fc" value={p} onChange={ev=>sp(ev.target.value)} placeholder="••••••••" autoComplete="current-password"/></div>
<button type="submit" className="btn btn-p btn-fw" style={{marginTop:4}}>Login to Dashboard →</button>
</form>
<div style={{marginTop:14,textAlign:"center"}}><button className="btn btn-g btn-sm" onClick={()=>go("home")}>← Back to Website</button></div>
<p style={{fontSize:".75rem",color:"var(--g400)",textAlign:"center",marginTop:10}}>Default credentials: admin / admin123</p>
</div>
</div>
</div>
);
}
/* ── ADMIN DASHBOARD ─────────────────────────────────── */
function AdminDash({doctors,setDoctors,specialties,setSpecialties,clinic,setClinic,go,logout}){
const [sec,setSec]=useState("dash");
const [toast,setToast]=useState(null);
const showToast=(msg,type="s")=>{setToast({msg,type});setTimeout(()=>setToast(null),3000);};
const nav=[
{s:"dash", ico:"📊",lbl:"Dashboard"},
{s:"doctors", ico:"👨⚕️",lbl:"Manage Doctors"},
{s:"specs", ico:"🏥",lbl:"Manage Specialties"},
{s:"settings", ico:"⚙️",lbl:"Clinic Settings"},
];
return(
<div className="adm-lay">
{/* Sidebar */}
<div className="adm-sb">
<div className="adm-sbh">
<div className="adm-brand">🏥 AIDoctorsClinic</div>
<div className="adm-sub">Admin Dashboard</div>
</div>
<div className="adm-nav">
<div className="adm-ns">Main</div>
{nav.map(n=><div key={n.s} className={"adm-ni"+(sec===n.s?" act":"")} onClick={()=>setSec(n.s)}><span className="ni">{n.ico}</span>{n.lbl}</div>)}
<div className="adm-ns">Public Site</div>
{["home","doctors","appointments","contact"].map(p=><div key={p} className="adm-ni" onClick={()=>go(p)}><span className="ni">🌐</span>{p.charAt(0).toUpperCase()+p.slice(1)}</div>)}
</div>
<div style={{padding:"14px 18px",borderTop:"1px solid rgba(255,255,255,.09)"}}>
<button className="btn btn-g btn-sm btn-fw" style={{color:"rgba(255,255,255,.55)",borderColor:"rgba(255,255,255,.12)"}} onClick={logout}>🚪 Logout</button>
</div>
</div>
{/* Main */}
<div className="adm-main">
<div className="adm-tb">
<div className="adm-tb-ttl">{nav.find(n=>n.s===sec)?.lbl||"Admin"}</div>
<div className="adm-tb-r">
<span style={{fontSize:".82rem",color:"var(--g500)"}}>Logged in as <strong>Admin</strong></span>
<button className="btn btn-g btn-sm" onClick={logout}>Logout</button>
</div>
</div>
<div className="adm-con">
{toast&&<div className={"alrt alrt-"+(toast.type==="s"?"s":"e")} style={{position:"fixed",top:14,right:14,zIndex:9999,minWidth:260,boxShadow:"var(--sh-lg)"}}>{toast.type==="s"?"✅":"❌"} {toast.msg}</div>}
{sec==="dash" &&<ADash doctors={doctors} specialties={specialties}/>}
{sec==="doctors" &&<ADoctors doctors={doctors} setDoctors={setDoctors} specialties={specialties} toast={showToast}/>}
{sec==="specs" &&<ASpecs specialties={specialties} setSpecialties={setSpecialties} toast={showToast}/>}
{sec==="settings" &&<ASettings clinic={clinic} setClinic={setClinic} toast={showToast}/>}
</div>
</div>
</div>
);
}
/* ── ADMIN: OVERVIEW ─────────────────────────────────── */
function ADash({doctors,specialties}){
const stats=[
{ico:"👨⚕️",lbl:"Total Doctors", val:doctors.length, bg:"var(--blue-lt)", clr:"var(--blue)"},
{ico:"✅", lbl:"Active Doctors", val:doctors.filter(d=>d.av).length,bg:"var(--green-lt)", clr:"var(--green)"},
{ico:"🏥", lbl:"Specialties", val:specialties.length, bg:"var(--teal-lt)", clr:"var(--teal)"},
{ico:"🤖", lbl:"AI Certified", val:doctors.filter(d=>d.ai).length,bg:"var(--yellow-lt)",clr:"var(--yellow)"},
];
return(
<div>
<div className="adm-pt">Dashboard Overview</div>
<div className="adm-ps">Welcome back! Here's a summary of your clinic.</div>
<div className="g4" style={{marginBottom:28}}>
{stats.map((s,i)=>(
<div key={i} className="adm-sc">
<div className="adm-sico" style={{background:s.bg,color:s.clr}}>{s.ico}</div>
<div className="adm-snum">{s.val}</div>
<div className="adm-slbl">{s.lbl}</div>
</div>
))}
</div>
<div className="adm-card">
<h3 style={{marginBottom:14}}>Doctors by Specialty</h3>
{specialties.map(s=>{
const c=doctors.filter(d=>d.spec===s.name).length;
return c>0?(
<div key={s.id} style={{display:"flex",alignItems:"center",gap:10,marginBottom:7}}>
<span style={{width:22}}>{s.icon}</span>
<span style={{flex:1,fontSize:".88rem"}}>{s.name}</span>
<span className="bdg bdg-b">{c}</span>
<div style={{width:110,height:7,background:"var(--g200)",borderRadius:4,overflow:"hidden"}}>
<div style={{width:`${Math.min(c/Math.max(doctors.length,1)*100*3,100)}%`,height:"100%",background:"var(--blue)",borderRadius:4}}/>
</div>
</div>
):null;
})}
</div>
</div>
);
}
/* ── ADMIN: DOCTORS ──────────────────────────────────── */
function ADoctors({doctors,setDoctors,specialties,toast}){
const [modal,setModal]=useState(null);
const [delId,setDelId]=useState(null);
const blank={name:"",spec:"",exp:"",uni:"",lang:"English",rating:5,ai:false,av:true,avatar:"👨⚕️",bio:""};
const [fm,sfm]=useState(blank);
const [fe,sfe]=useState({});
const openAdd=()=>{sfm({...blank,id:Date.now()});sfe({});setModal("add");};
const openEdit=d=>{sfm({...d});sfe({});setModal("edit");};
const val=()=>{
const e={};
if(!fm.name.trim())e.name="Required";
if(!fm.spec)e.spec="Required";
if(!fm.exp.trim())e.exp="Required";
if(!fm.uni.trim())e.uni="Required";
return e;
};
const save=()=>{
const e2=val();sfe(e2);
if(Object.keys(e2).length)return;
if(modal==="add"){setDoctors([...doctors,{...fm,id:Date.now()}]);toast("Doctor added!");}
else{setDoctors(doctors.map(d=>d.id===fm.id?fm:d));toast("Doctor updated!");}
setModal(null);
};
const AVTS=["👨⚕️","👩⚕️","🧑⚕️","👨🔬","👩🔬"];
return(
<div>
<div style={{display:"flex",justifyContent:"space-between",alignItems:"flex-start",marginBottom:22,flexWrap:"wrap",gap:10}}>
<div><div className="adm-pt">Manage Doctors</div><div className="adm-ps">Add, edit or remove doctors. Changes appear instantly on the website.</div></div>
<button className="btn btn-p" onClick={openAdd}>➕ Add New Doctor</button>
</div>
<div className="adm-card" style={{padding:0,overflow:"auto"}}>
{doctors.length===0
?<div className="empty"><div className="eico">👨⚕️</div><p>No doctors yet. Add your first doctor!</p></div>
:<table className="tbl">
<thead><tr><th>Doctor</th><th>Specialty</th><th>Experience</th><th>Rating</th><th>AI</th><th>Status</th><th>Actions</th></tr></thead>
<tbody>
{doctors.map(d=>(
<tr key={d.id}>
<td><div style={{display:"flex",alignItems:"center",gap:9}}>
<div className="tbl-av">{d.avatar}</div>
<div><div style={{fontWeight:600,fontSize:".88rem"}}>{d.name}</div><div style={{fontSize:".75rem",color:"var(--g400)"}}>{d.uni}</div></div>
</div></td>
<td><span className="bdg bdg-b">{d.spec}</span></td>
<td style={{fontSize:".84rem"}}>{d.exp}</td>
<td><Stars n={d.rating}/></td>
<td>{d.ai?<span className="bdg bdg-t">✓ Yes</span>:<span className="bdg bdg-gr">No</span>}</td>
<td><button onClick={()=>setDoctors(doctors.map(x=>x.id===d.id?{...x,av:!x.av}:x))} className={"bdg "+(d.av?"bdg-g":"bdg-r")} style={{border:"none",cursor:"pointer"}}>{d.av?"● Active":"○ Hidden"}</button></td>
<td><div className="tbl-acts">
<button className="btn btn-g btn-sm" onClick={()=>openEdit(d)}>✏️ Edit</button>
<button className="btn btn-d btn-sm" onClick={()=>setDelId(d.id)}>🗑</button>
</div></td>
</tr>
))}
</tbody>
</table>
}
</div>
{/* Add/Edit Modal */}
{modal&&(
<div className="mo" onClick={e=>e.target===e.currentTarget&&setModal(null)}>
<div className="mo-box">
<div className="mo-hd"><span className="mo-ttl">{modal==="add"?"➕ Add Doctor":"✏️ Edit Doctor"}</span><button className="mo-cls" onClick={()=>setModal(null)}>✕</button></div>
<div className="mo-body">
<div className="fg">
<label>Avatar</label>
<div style={{display:"flex",gap:7}}>
{AVTS.map(a=><button key={a} onClick={()=>sfm({...fm,avatar:a})} style={{width:42,height:42,borderRadius:10,border:"2px solid "+(fm.avatar===a?"var(--blue)":"var(--g200)"),background:fm.avatar===a?"var(--blue-lt)":"#fff",fontSize:"1.3rem",cursor:"pointer"}}>{a}</button>)}
</div>
</div>
<div className="fr">
<div className="fg"><label>Full Name *</label><input className="fc" value={fm.name} onChange={e=>sfm({...fm,name:e.target.value})} placeholder="Dr. First Last"/>{fe.name&&<span className="fe">⚠ {fe.name}</span>}</div>
<div className="fg">
<label>Specialty *</label>
<select className="fc" value={fm.spec} onChange={e=>sfm({...fm,spec:e.target.value})}>
<option value="">Select...</option>
{specialties.map(s=><option key={s.id} value={s.name}>{s.name}</option>)}
</select>
{fe.spec&&<span className="fe">⚠ {fe.spec}</span>}
</div>
</div>
<div className="fr">
<div className="fg"><label>Experience *</label><input className="fc" value={fm.exp} onChange={e=>sfm({...fm,exp:e.target.value})} placeholder="e.g. 10 years"/>{fe.exp&&<span className="fe">⚠ {fe.exp}</span>}</div>
<div className="fg"><label>University / Hospital *</label><input className="fc" value={fm.uni} onChange={e=>sfm({...fm,uni:e.target.value})} placeholder="e.g. Harvard Medical"/>{fe.uni&&<span className="fe">⚠ {fe.uni}</span>}</div>
</div>
<div className="fr">
<div className="fg"><label>Languages</label><input className="fc" value={fm.lang} onChange={e=>sfm({...fm,lang:e.target.value})} placeholder="English, Spanish"/></div>
<div className="fg"><label>Star Rating</label>
<select className="fc" value={fm.rating} onChange={e=>sfm({...fm,rating:parseInt(e.target.value)})}>
{[5,4,3,2,1].map(n=><option key={n} value={n}>{n} ★{"★".repeat(n)}</option>)}
</select>
</div>
</div>
<div className="fg"><label>Short Bio</label><textarea className="fc" value={fm.bio} onChange={e=>sfm({...fm,bio:e.target.value})} placeholder="Short description..." style={{minHeight:72}}/></div>
<div style={{display:"flex",gap:22,flexWrap:"wrap"}}>
<label style={{display:"flex",alignItems:"center",gap:7,cursor:"pointer",fontSize:".88rem"}}>
<input type="checkbox" checked={fm.ai} onChange={e=>sfm({...fm,ai:e.target.checked})} style={{width:15,height:15}}/><span>AI Certified</span>
</label>
<label style={{display:"flex",alignItems:"center",gap:7,cursor:"pointer",fontSize:".88rem"}}>
<input type="checkbox" checked={fm.av} onChange={e=>sfm({...fm,av:e.target.checked})} style={{width:15,height:15}}/><span>Active / Visible on website</span>
</label>
</div>
</div>
<div className="mo-ft">
<button className="btn btn-g" onClick={()=>setModal(null)}>Cancel</button>
<button className="btn btn-p" onClick={save}>{modal==="add"?"Add Doctor":"Save Changes"}</button>
</div>
</div>
</div>
)}
{/* Delete confirm */}
{delId&&(
<div className="mo" onClick={e=>e.target===e.currentTarget&&setDelId(null)}>
<div className="mo-box" style={{maxWidth:380}}>
<div className="mo-hd"><span className="mo-ttl">🗑 Confirm Delete</span><button className="mo-cls" onClick={()=>setDelId(null)}>✕</button></div>
<div className="mo-body"><p>Remove <strong>{doctors.find(d=>d.id===delId)?.name}</strong>? This cannot be undone.</p></div>
<div className="mo-ft">
<button className="btn btn-g" onClick={()=>setDelId(null)}>Cancel</button>
<button className="btn btn-d" onClick={()=>{setDoctors(doctors.filter(d=>d.id!==delId));setDelId(null);toast("Doctor removed.","e");}}>Yes, Delete</button>
</div>
</div>
</div>
)}
</div>
);
}
/* ── ADMIN: SPECIALTIES ──────────────────────────────── */
function ASpecs({specialties,setSpecialties,toast}){
const [modal,setModal]=useState(null);
const [delId,setDelId]=useState(null);
const blank={name:"",icon:"🏥",desc:""};
const [fm,sfm]=useState(blank);
const [fe,sfe]=useState({});
const openAdd=()=>{sfm({...blank});sfe({});setModal("add");};
const openEdit=s=>{sfm({...s});sfe({});setModal("edit");};
const val=()=>{const e={};if(!fm.name.trim())e.name="Required";if(!fm.icon.trim())e.icon="Required";return e;};
const save=()=>{
const e2=val();sfe(e2);
if(Object.keys(e2).length)return;
if(modal==="add"){setSpecialties([...specialties,{...fm,id:Date.now()}]);toast("Specialty added!");}
else{setSpecialties(specialties.map(s=>s.id===fm.id?fm:s));toast("Specialty updated!");}
setModal(null);
};
const ICONS=["🩺","🫀","🧠","🦴","✨","👶","🤖","📱","🔬","👁️","💊","🦷","🧬","🩻","🩹","🫁","🧪","🩸","💉","🏃"];
return(
<div>
<div style={{display:"flex",justifyContent:"space-between",alignItems:"flex-start",marginBottom:22,flexWrap:"wrap",gap:10}}>
<div><div className="adm-pt">Manage Specialties</div><div className="adm-ps">Add, edit or remove medical specialties. These appear in filters and the booking form.</div></div>
<button className="btn btn-p" onClick={openAdd}>➕ Add Specialty</button>
</div>
<div className="g3" style={{gap:14}}>
{specialties.map(s=>(
<div key={s.id} className="adm-card" style={{display:"flex",flexDirection:"column",gap:10}}>
<div style={{display:"flex",alignItems:"center",gap:10}}>
<div style={{width:44,height:44,borderRadius:11,background:"var(--blue-lt)",display:"flex",alignItems:"center",justifyContent:"center",fontSize:"1.4rem",flexShrink:0}}>{s.icon}</div>
<div style={{flex:1,minWidth:0}}>
<div style={{fontWeight:700,fontSize:".9rem",marginBottom:2}}>{s.name}</div>
<div style={{fontSize:".77rem",color:"var(--g500)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"}}>{s.desc||"No description"}</div>
</div>
</div>
<div style={{display:"flex",gap:7}}>
<button className="btn btn-g btn-sm" style={{flex:1,justifyContent:"center"}} onClick={()=>openEdit(s)}>✏️ Edit</button>
<button className="btn btn-d btn-sm" onClick={()=>setDelId(s.id)}>🗑</button>
</div>
</div>
))}
<div className="adm-card" style={{display:"flex",alignItems:"center",justifyContent:"center",minHeight:96,border:"2px dashed var(--g200)",background:"transparent",cursor:"pointer",flexDirection:"column",gap:6}} onClick={openAdd}>
<span style={{fontSize:"1.7rem",color:"var(--g400)"}}>➕</span>
<span style={{fontSize:".82rem",color:"var(--g400)",fontWeight:600}}>Add Specialty</span>
</div>
</div>
{modal&&(
<div className="mo" onClick={e=>e.target===e.currentTarget&&setModal(null)}>
<div className="mo-box">
<div className="mo-hd"><span className="mo-ttl">{modal==="add"?"➕ Add Specialty":"✏️ Edit Specialty"}</span><button className="mo-cls" onClick={()=>setModal(null)}>✕</button></div>
<div className="mo-body">
<div className="fg">
<label>Choose Icon</label>
<div style={{display:"flex",gap:7,flexWrap:"wrap",marginBottom:8}}>
{ICONS.map(ic=><button key={ic} onClick={()=>sfm({...fm,icon:ic})} style={{width:40,height:40,borderRadius:9,border:"2px solid "+(fm.icon===ic?"var(--blue)":"var(--g200)"),background:fm.icon===ic?"var(--blue-lt)":"#fff",fontSize:"1.3rem",cursor:"pointer"}}>{ic}</button>)}
</div>
<input className="fc" value={fm.icon} onChange={e=>sfm({...fm,icon:e.target.value})} placeholder="Or type any emoji 🏥" style={{maxWidth:180}}/>
{fe.icon&&<span className="fe">⚠ {fe.icon}</span>}
</div>
<div className="fg"><label>Specialty Name *</label><input className="fc" value={fm.name} onChange={e=>sfm({...fm,name:e.target.value})} placeholder="e.g. Cardiology"/>{fe.name&&<span className="fe">⚠ {fe.name}</span>}</div>
<div className="fg"><label>Description</label><textarea className="fc" value={fm.desc} onChange={e=>sfm({...fm,desc:e.target.value})} placeholder="Brief description..." style={{minHeight:72}}/></div>
</div>
<div className="mo-ft">
<button className="btn btn-g" onClick={()=>setModal(null)}>Cancel</button>
<button className="btn btn-p" onClick={save}>{modal==="add"?"Add Specialty":"Save Changes"}</button>
</div>
</div>
</div>
)}
{delId&&(
<div className="mo" onClick={e=>e.target===e.currentTarget&&setDelId(null)}>
<div className="mo-box" style={{maxWidth:380}}>
<div className="mo-hd"><span className="mo-ttl">🗑 Confirm Delete</span><button className="mo-cls" onClick={()=>setDelId(null)}>✕</button></div>
<div className="mo-body"><p>Delete <strong>{specialties.find(s=>s.id===delId)?.name}</strong>? This cannot be undone.</p></div>
<div className="mo-ft">
<button className="btn btn-g" onClick={()=>setDelId(null)}>Cancel</button>
<button className="btn btn-d" onClick={()=>{setSpecialties(specialties.filter(s=>s.id!==delId));setDelId(null);toast("Specialty removed.","e");}}>Yes, Delete</button>
</div>
</div>
</div>
)}
</div>
);
}
/* ── ADMIN: SETTINGS ─────────────────────────────────── */
function ASettings({clinic,setClinic,toast}){
const [fm,sfm]=useState({...clinic});
const save=(e)=>{e.preventDefault();setClinic({...fm});toast("Settings saved!");};
return(
<div>
<div className="adm-pt">Clinic Settings</div>
<div className="adm-ps">Update your clinic's name, contact info, and social media links.</div>
<div className="adm-card" style={{maxWidth:660}}>
<form onSubmit={save}>
<div className="fr">
<div className="fg"><label>Clinic Name</label><input className="fc" value={fm.name} onChange={e=>sfm({...fm,name:e.target.value})}/></div>
<div className="fg"><label>Phone</label><input className="fc" value={fm.phone} onChange={e=>sfm({...fm,phone:e.target.value})}/></div>
</div>
<div className="fr">
<div className="fg"><label>Emergency Line</label><input className="fc" value={fm.emergency} onChange={e=>sfm({...fm,emergency:e.target.value})}/></div>
<div className="fg"><label>Email</label><input type="email" className="fc" value={fm.email} onChange={e=>sfm({...fm,email:e.target.value})}/></div>
</div>
<div className="fg"><label>Address</label><input className="fc" value={fm.address} onChange={e=>sfm({...fm,address:e.target.value})}/></div>
<div className="fg"><label>Office Hours</label><input className="fc" value={fm.hours} onChange={e=>sfm({...fm,hours:e.target.value})}/></div>
<div className="div"/>
<h4 style={{marginBottom:14}}>Social Media Links</h4>
<div className="fr">
<div className="fg"><label>📘 Facebook</label><input className="fc" value={fm.fb} onChange={e=>sfm({...fm,fb:e.target.value})} placeholder="https://facebook.com/..."/></div>
<div className="fg"><label>🐦 Twitter / X</label><input className="fc" value={fm.tw} onChange={e=>sfm({...fm,tw:e.target.value})} placeholder="https://twitter.com/..."/></div>
</div>
<div className="fr">
<div className="fg"><label>💼 LinkedIn</label><input className="fc" value={fm.li} onChange={e=>sfm({...fm,li:e.target.value})} placeholder="https://linkedin.com/..."/></div>
<div className="fg"><label>📸 Instagram</label><input className="fc" value={fm.ig} onChange={e=>sfm({...fm,ig:e.target.value})} placeholder="https://instagram.com/..."/></div>
</div>
<button type="submit" className="btn btn-p btn-fw">💾 Save All Settings</button>
</form>
</div>
</div>
);
}
/* ── APP ROOT ─────────────────────────────────────────── */
function App(){
const [doctors,setDoctors] = useStor("adc_docs", DD.doctors);
const [specialties,setSpecialties] = useStor("adc_specs", DD.specialties);
const [clinic,setClinic] = useStor("adc_clinic", DD.clinic);
const [pg,setPg] = useState("home");
const [auth,setAuth] = useState(false);
useEffect(()=>{ window.scrollTo(0,0); },[pg]);
const go=(p)=>{
if(p==="admin_login"){setPg("admin_login");return;}
setPg(p);
};
// Admin login page
if(pg==="admin_login"&&!auth){
return <AdminLogin onLogin={()=>{setAuth(true);}} go={go}/>;
}
// Admin dashboard
if(auth&&(pg==="admin_login"||pg==="admin")){
return <AdminDash doctors={doctors} setDoctors={setDoctors} specialties={specialties} setSpecialties={setSpecialties} clinic={clinic} setClinic={setClinic} go={(p)=>{setPg(p);}} logout={()=>{setAuth(false);setPg("home");}}/>;
}
// If logged in admin clicks navbar item, show dash
if(auth&&pg!=="home"&&pg!=="doctors"&&pg!=="appointments"&&pg!=="contact"){
return <AdminDash doctors={doctors} setDoctors={setDoctors} specialties={specialties} setSpecialties={setSpecialties} clinic={clinic} setClinic={setClinic} go={(p)=>{setPg(p);}} logout={()=>{setAuth(false);setPg("home");}}/>;
}
return(
<div>
<Navbar pg={pg} go={go} clinic={clinic}/>
{pg==="home" &&<Home doctors={doctors} specialties={specialties} clinic={clinic} go={go}/>}
{pg==="doctors" &&<Doctors doctors={doctors} specialties={specialties} go={go}/>}
{pg==="appointments" &&<Appointments doctors={doctors} specialties={specialties} clinic={clinic} go={go}/>}
{pg==="contact" &&<Contact clinic={clinic} go={go}/>}
<Footer clinic={clinic} go={go}/>
</div>
);
}
ReactDOM.createRoot(document.getElementById("root")).render(<App/>);
</script>
</body>
</html>
ls -lh /home/daytona/workspace/aidoctorsclinic-v2/index.html && echo "File OK" && wc -l /home/daytona/workspace/aidoctorsclinic-v2/index.html
index
HTML File · HTML
| Page | Content |
|---|---|
| Home | Hero, stats bar, all services, why AI section, featured doctors, testimonials, CTA |
| Our Doctors | Filter by specialty, all doctor cards with booking button |
| Appointments | Step guide + full validated booking form with AI match |
| Contact | Contact info, map link, emergency alert, contact form |
admin / admin123| Section | What you can do |
|---|---|
| Manage Doctors | ➕ Add new doctor, ✏️ edit name/specialty/bio/photo/rating/languages, 🗑 delete, toggle Active/Hidden |
| Manage Specialties | ➕ Add specialty with icon + description, ✏️ edit, 🗑 delete - all specialties auto-appear in filters and booking form |
| Clinic Settings | Update clinic name, phone, emergency line, email, address, hours, social media links |
index.html to your hosting (Netlify drag-drop, cPanel public_html, etc.)A record at your registrar pointing aidoctorsclinic.com to your host's IPhtml not working
~/aidoctorsclinic-v2/index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="AIDoctorsClinic - AI-Powered Healthcare. Book appointments with top specialist doctors.">
<title>AIDoctors Clinic | AI-Powered Healthcare</title>
<style>
/* ===== RESET & BASE ===== */
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth;font-size:16px}
body{font-family:'Segoe UI',Arial,sans-serif;color:#1e293b;background:#fff;line-height:1.6}
img{max-width:100%;display:block}
a{text-decoration:none;color:inherit}
ul{list-style:none}
button{cursor:pointer;font-family:inherit;border:none;outline:none}
input,select,textarea{font-family:inherit;outline:none}
/* ===== VARIABLES ===== */
:root{
--blue:#2563eb; --blue-dk:#1d4ed8; --blue-lt:#eff6ff;
--teal:#0d9488; --teal-lt:#f0fdfa;
--green:#16a34a; --green-lt:#f0fdf4;
--red:#dc2626; --red-lt:#fef2f2;
--yellow:#ca8a04;--yellow-lt:#fefce8;
--gray:#64748b; --gray-lt:#f8fafc; --gray-bd:#e2e8f0; --gray-dk:#334155; --gray-900:#0f172a;
--shadow:0 4px 16px rgba(0,0,0,.10);
--shadow-lg:0 10px 40px rgba(0,0,0,.15);
--radius:12px; --radius-sm:8px;
}
/* ===== LAYOUT ===== */
.wrap{max-width:1180px;margin:0 auto;padding:0 24px}
.section{padding:72px 0}
.section-alt{background:var(--gray-lt)}
.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:40px;align-items:center}
.grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}
.grid-4{display:grid;grid-template-columns:repeat(4,1fr);gap:20px}
.text-center{text-align:center}
/* ===== TYPOGRAPHY ===== */
h1{font-size:clamp(1.9rem,4.5vw,3rem);font-weight:800;line-height:1.15;color:var(--gray-900)}
h2{font-size:clamp(1.5rem,3vw,2.2rem);font-weight:700;color:var(--gray-900);margin-bottom:8px}
h3{font-size:1.05rem;font-weight:600;color:var(--gray-900)}
h4{font-size:.9rem;font-weight:600;color:var(--gray-900)}
p{color:var(--gray);font-size:.95rem}
/* ===== BUTTONS ===== */
.btn{display:inline-flex;align-items:center;gap:8px;padding:11px 22px;border-radius:var(--radius-sm);font-weight:600;font-size:.93rem;border:2px solid transparent;transition:all .18s;cursor:pointer;white-space:nowrap}
.btn-primary{background:var(--blue);color:#fff}
.btn-primary:hover{background:var(--blue-dk);transform:translateY(-2px);box-shadow:0 6px 20px rgba(37,99,235,.35)}
.btn-teal{background:var(--teal);color:#fff}
.btn-teal:hover{background:#0f766e;transform:translateY(-2px)}
.btn-outline{border-color:var(--blue);color:var(--blue);background:transparent}
.btn-outline:hover{background:var(--blue);color:#fff}
.btn-outline-white{border-color:#fff;color:#fff;background:transparent}
.btn-outline-white:hover{background:#fff;color:var(--blue)}
.btn-ghost{background:transparent;color:var(--gray-dk);border:2px solid var(--gray-bd)}
.btn-ghost:hover{background:var(--gray-lt)}
.btn-danger{background:var(--red);color:#fff}
.btn-danger:hover{background:#b91c1c}
.btn-success{background:var(--green);color:#fff}
.btn-sm{padding:7px 14px;font-size:.83rem}
.btn-lg{padding:14px 28px;font-size:1rem}
.btn-full{width:100%;justify-content:center}
/* ===== BADGE ===== */
.badge{display:inline-flex;align-items:center;gap:4px;padding:3px 10px;border-radius:999px;font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em}
.badge-blue{background:var(--blue-lt);color:var(--blue)}
.badge-teal{background:var(--teal-lt);color:var(--teal)}
.badge-green{background:var(--green-lt);color:var(--green)}
.badge-red{background:var(--red-lt);color:var(--red)}
.badge-gray{background:var(--gray-bd);color:var(--gray-dk)}
/* ===== CARDS ===== */
.card{background:#fff;border:1px solid var(--gray-bd);border-radius:var(--radius);box-shadow:0 1px 4px rgba(0,0,0,.06)}
.card-hover{transition:all .2s}
.card-hover:hover{transform:translateY(-5px);box-shadow:var(--shadow-lg);border-color:var(--blue)}
/* ===== FORMS ===== */
.form-group{display:flex;flex-direction:column;gap:5px;margin-bottom:14px}
.form-group label{font-size:.83rem;font-weight:600;color:var(--gray-dk)}
.form-control{padding:9px 13px;border:1.5px solid var(--gray-bd);border-radius:var(--radius-sm);font-size:.93rem;transition:border-color .2s;background:#fff;color:var(--gray-900);width:100%}
.form-control:focus{border-color:var(--blue);box-shadow:0 0 0 3px rgba(37,99,235,.12)}
.form-control::placeholder{color:#94a3b8}
textarea.form-control{resize:vertical;min-height:90px}
.form-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.form-error-msg{font-size:.75rem;color:var(--red);margin-top:2px;display:none}
.form-error-msg.show{display:block}
.form-control.error{border-color:var(--red)}
/* ===== NAVBAR ===== */
.navbar{position:sticky;top:0;z-index:100;background:rgba(255,255,255,.97);backdrop-filter:blur(12px);border-bottom:1px solid var(--gray-bd);box-shadow:0 1px 4px rgba(0,0,0,.06)}
.nav-inner{display:flex;align-items:center;justify-content:space-between;height:64px}
.nav-brand{display:flex;align-items:center;gap:9px;font-weight:800;font-size:1.15rem;color:var(--blue);cursor:pointer;text-decoration:none}
.nav-brand-icon{width:34px;height:34px;background:linear-gradient(135deg,var(--blue),var(--teal));border-radius:9px;display:flex;align-items:center;justify-content:center;color:#fff;font-size:1rem}
.nav-links{display:flex;align-items:center;gap:4px}
.nav-link{padding:7px 13px;border-radius:var(--radius-sm);font-weight:500;font-size:.92rem;color:var(--gray-dk);transition:all .18s;cursor:pointer;text-decoration:none;background:none;border:none}
.nav-link:hover{background:var(--blue-lt);color:var(--blue)}
.nav-link.active{background:var(--blue-lt);color:var(--blue);font-weight:600}
.nav-actions{display:flex;align-items:center;gap:8px}
.hamburger{display:none;flex-direction:column;gap:5px;padding:8px;background:none;border:none;cursor:pointer}
.hamburger span{display:block;width:22px;height:2px;background:var(--gray-dk);border-radius:2px;transition:all .25s}
.hamburger.open span:nth-child(1){transform:rotate(45deg) translate(5px,5px)}
.hamburger.open span:nth-child(2){opacity:0}
.hamburger.open span:nth-child(3){transform:rotate(-45deg) translate(5px,-5px)}
.mobile-nav{display:none;flex-direction:column;gap:4px;padding:12px 24px 16px;border-top:1px solid var(--gray-bd);background:#fff}
.mobile-nav.open{display:flex}
/* ===== PAGES ===== */
.page{display:none}
.page.active{display:block}
/* ===== HERO ===== */
.hero{background:linear-gradient(135deg,#0f172a 0%,#1e3a5f 55%,#1d4ed8 100%);color:#fff;padding:80px 0 72px;position:relative;overflow:hidden}
.hero::before{content:'';position:absolute;top:-40%;right:-10%;width:600px;height:600px;border-radius:50%;background:radial-gradient(circle,rgba(37,99,235,.22),transparent 70%);pointer-events:none}
.hero-inner{position:relative;z-index:1}
.hero h1{color:#fff;margin-bottom:16px}
.hero h1 span{color:#60a5fa}
.hero-desc{font-size:1.05rem;color:rgba(255,255,255,.82);max-width:500px;margin-bottom:28px}
.hero-btns{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:36px}
.hero-stats{display:flex;gap:28px;flex-wrap:wrap}
.hero-stat strong{display:block;font-size:1.65rem;font-weight:800;color:#60a5fa}
.hero-stat span{font-size:.82rem;color:rgba(255,255,255,.6)}
.hero-visual{display:flex;justify-content:center;align-items:center}
.ai-orb{width:270px;height:270px;border-radius:50%;background:linear-gradient(135deg,rgba(37,99,235,.28),rgba(13,148,136,.28));border:1px solid rgba(255,255,255,.14);display:flex;align-items:center;justify-content:center;flex-direction:column;gap:12px;text-align:center;backdrop-filter:blur(8px);box-shadow:0 0 50px rgba(37,99,235,.28);animation:float-anim 3s ease-in-out infinite}
@keyframes float-anim{0%,100%{transform:translateY(0)}50%{transform:translateY(-10px)}}
.ai-orb-icon{font-size:3.5rem}
.ai-orb p{color:rgba(255,255,255,.75);font-size:.85rem;padding:0 20px}
/* ===== STATS BAR ===== */
.stats-bar{background:var(--blue);padding:36px 0}
.stats-inner{display:flex;justify-content:space-around;flex-wrap:wrap;gap:20px;text-align:center}
.stats-inner strong{display:block;font-size:2rem;font-weight:800;color:#fff}
.stats-inner span{font-size:.82rem;color:rgba(255,255,255,.72)}
/* ===== SERVICES ===== */
.services-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:18px;margin-top:44px}
.service-card{padding:24px 20px;text-align:center}
.service-icon{width:56px;height:56px;border-radius:14px;background:var(--blue-lt);color:var(--blue);display:flex;align-items:center;justify-content:center;font-size:1.5rem;margin:0 auto 14px}
.service-card h3{margin-bottom:6px}
/* ===== DOCTORS ===== */
.doctors-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:22px;margin-top:36px}
.doctor-card{border-radius:var(--radius);overflow:hidden}
.doctor-avatar{height:190px;display:flex;align-items:center;justify-content:center;font-size:4.5rem;background:linear-gradient(135deg,#dbeafe,#bfdbfe)}
.doctor-body{padding:18px}
.doctor-name{font-size:1rem;font-weight:700;margin-bottom:3px;color:var(--gray-900)}
.doctor-spec{color:var(--blue);font-size:.84rem;font-weight:600;margin-bottom:10px;display:flex;align-items:center;gap:6px}
.doctor-meta{display:flex;flex-direction:column;gap:3px;margin-bottom:14px}
.doctor-meta-item{display:flex;align-items:center;gap:7px;font-size:.79rem;color:var(--gray)}
.doctor-bio{font-size:.8rem;color:var(--gray);margin-bottom:12px;line-height:1.6}
.doctor-actions{display:flex;gap:7px}
.doctor-actions .btn{flex:1;justify-content:center}
.stars{color:#f59e0b;letter-spacing:2px;font-size:.82rem;margin-bottom:5px}
/* ===== FILTER ===== */
.filter-bar{display:flex;gap:7px;flex-wrap:wrap;justify-content:center;margin-bottom:28px}
.filter-btn{padding:7px 18px;border-radius:999px;border:1.5px solid var(--gray-bd);background:#fff;font-size:.84rem;font-weight:500;color:var(--gray-dk);cursor:pointer;transition:all .18s}
.filter-btn:hover,.filter-btn.active{background:var(--blue);color:#fff;border-color:var(--blue)}
/* ===== WHY ===== */
.why-list{display:flex;flex-direction:column;gap:22px;margin-top:28px}
.why-item{display:flex;gap:14px}
.why-icon{width:46px;height:46px;border-radius:12px;background:var(--blue-lt);color:var(--blue);display:flex;align-items:center;justify-content:center;font-size:1.25rem;flex-shrink:0}
.why-text h4{margin-bottom:3px}
/* ===== TESTIMONIALS ===== */
.testi-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(270px,1fr));gap:22px;margin-top:36px}
.testi-card{padding:24px}
.testi-text{font-style:italic;color:var(--gray-dk);margin:10px 0 18px;font-size:.93rem;line-height:1.7}
.testi-author{display:flex;align-items:center;gap:10px}
.testi-avatar{width:40px;height:40px;border-radius:50%;background:var(--blue-lt);display:flex;align-items:center;justify-content:center;font-size:1.2rem}
.testi-name{font-weight:700;font-size:.88rem;color:var(--gray-900)}
.testi-role{font-size:.77rem;color:#94a3b8}
/* ===== PAGE HEADER ===== */
.page-header{background:linear-gradient(135deg,#0f172a,#1e3a5f);color:#fff;padding:52px 0 44px;text-align:center}
.page-header h1{color:#fff;font-size:clamp(1.7rem,3.5vw,2.4rem);margin-bottom:10px}
.page-header p{color:rgba(255,255,255,.72);max-width:500px;margin:0 auto}
.breadcrumb{display:flex;justify-content:center;gap:7px;margin-top:10px;font-size:.82rem;color:rgba(255,255,255,.5)}
.breadcrumb a{color:rgba(255,255,255,.65);cursor:pointer}
.breadcrumb a:hover{color:#fff}
/* ===== CTA ===== */
.cta-section{background:linear-gradient(135deg,var(--blue),var(--teal));padding:68px 0;text-align:center}
.cta-section h2{color:#fff;margin-bottom:10px}
.cta-section p{color:rgba(255,255,255,.82);max-width:500px;margin:0 auto 28px}
.cta-btns{display:flex;gap:10px;justify-content:center;flex-wrap:wrap}
/* ===== FOOTER ===== */
.footer{background:#0f172a;color:rgba(255,255,255,.68);padding:52px 0 0}
.footer-grid{display:grid;grid-template-columns:2fr 1fr 1fr 1fr;gap:36px;padding-bottom:36px;border-bottom:1px solid rgba(255,255,255,.08)}
.footer-brand{font-size:1.1rem;font-weight:800;color:#fff;display:flex;align-items:center;gap:9px;margin-bottom:10px}
.footer-brand-icon{width:30px;height:30px;background:linear-gradient(135deg,var(--blue),var(--teal));border-radius:7px;display:flex;align-items:center;justify-content:center;font-size:.9rem}
.footer-desc{font-size:.84rem;margin-bottom:18px;line-height:1.7}
.footer-social{display:flex;gap:7px}
.footer-social a{width:34px;height:34px;border-radius:50%;background:rgba(255,255,255,.08);display:flex;align-items:center;justify-content:center;font-size:.9rem;transition:background .18s}
.footer-social a:hover{background:var(--blue)}
.footer-col h4{color:#fff;margin-bottom:14px;font-size:.9rem}
.footer-col ul{display:flex;flex-direction:column;gap:7px}
.footer-col ul a{font-size:.84rem;transition:color .18s;cursor:pointer}
.footer-col ul a:hover{color:#fff}
.footer-bottom{text-align:center;padding:18px;font-size:.79rem;opacity:.35}
/* ===== CONTACT ===== */
.contact-grid{display:grid;grid-template-columns:1fr 1.3fr;gap:44px;align-items:start}
.contact-items{display:flex;flex-direction:column;gap:18px}
.contact-item{display:flex;gap:14px}
.contact-item-icon{width:46px;height:46px;background:var(--blue-lt);border-radius:12px;display:flex;align-items:center;justify-content:center;font-size:1.15rem;flex-shrink:0}
.contact-item h4{margin-bottom:3px}
.emergency-box{background:var(--red-lt);border:1px solid #fca5a5;border-radius:var(--radius);padding:14px 18px;display:flex;gap:10px;margin-top:8px}
.emergency-box strong{color:var(--red);display:block;margin-bottom:3px}
.emergency-box p{font-size:.84rem;color:#7f1d1d;margin:0}
.contact-form-card{background:#fff;border:1px solid var(--gray-bd);border-radius:var(--radius);padding:28px;box-shadow:var(--shadow)}
/* ===== APPOINTMENT STEPS ===== */
.steps-row{display:flex;justify-content:center;gap:0;margin-bottom:48px}
.step-item{display:flex;flex-direction:column;align-items:center;gap:7px;flex:1;max-width:150px;text-align:center;position:relative}
.step-item:not(:last-child)::after{content:'';position:absolute;top:16px;left:50%;width:100%;height:2px;background:var(--gray-bd);z-index:0}
.step-num{width:34px;height:34px;border-radius:50%;background:var(--blue);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:.85rem;position:relative;z-index:1}
.step-label{font-size:.76rem;color:var(--gray);font-weight:500}
/* ===== FAQ ===== */
.faq-item{border:1px solid var(--gray-bd);border-radius:var(--radius-sm);overflow:hidden;margin-bottom:7px}
.faq-q{padding:14px 18px;font-weight:600;font-size:.92rem;cursor:pointer;background:#fff;display:flex;justify-content:space-between;align-items:center;user-select:none}
.faq-q:hover{background:var(--gray-lt)}
.faq-a{padding:0 18px 14px;font-size:.88rem;color:var(--gray);line-height:1.7;display:none}
.faq-a.open{display:block}
/* ===== SUCCESS SCREEN ===== */
.success-box{text-align:center;padding:36px 22px;background:var(--green-lt);border-radius:var(--radius);border:1px solid #86efac;display:none}
.success-box.show{display:block}
.success-icon{font-size:2.8rem;margin-bottom:10px}
.success-box h3{color:var(--green);margin-bottom:7px}
.success-box p{color:#166534;font-size:.88rem}
/* ===== ALERT ===== */
.alert{padding:11px 14px;border-radius:var(--radius-sm);font-size:.84rem;font-weight:500;margin-bottom:14px;display:flex;align-items:center;gap:7px}
.alert-success{background:var(--green-lt);color:var(--green);border:1px solid #86efac}
.alert-error{background:var(--red-lt);color:var(--red);border:1px solid #fca5a5}
/* ===== EMPTY STATE ===== */
.empty-state{text-align:center;padding:44px 22px;color:#94a3b8}
.empty-icon{font-size:2.8rem;margin-bottom:10px}
/* ===== ADMIN ===== */
.admin-layout{display:flex;min-height:100vh;background:var(--gray-lt)}
.admin-sidebar{width:252px;background:#0f172a;color:rgba(255,255,255,.78);display:flex;flex-direction:column;flex-shrink:0;position:fixed;top:0;left:0;height:100vh;overflow-y:auto;z-index:200}
.admin-sidebar-header{padding:18px 20px;border-bottom:1px solid rgba(255,255,255,.09)}
.admin-brand{font-size:.95rem;font-weight:800;color:#fff;display:flex;align-items:center;gap:8px;margin-bottom:3px}
.admin-sub{font-size:.7rem;color:rgba(255,255,255,.35)}
.admin-nav{padding:10px 0;flex:1}
.admin-nav-section{padding:7px 20px;font-size:.68rem;font-weight:700;text-transform:uppercase;letter-spacing:.1em;color:rgba(255,255,255,.3);margin-top:6px}
.admin-nav-item{display:flex;align-items:center;gap:10px;padding:9px 20px;font-size:.87rem;color:rgba(255,255,255,.68);cursor:pointer;transition:all .14s;border-left:3px solid transparent}
.admin-nav-item:hover{background:rgba(255,255,255,.05);color:#fff}
.admin-nav-item.active{background:rgba(37,99,235,.18);color:#93c5fd;border-left-color:var(--blue)}
.admin-main{margin-left:252px;flex:1;min-height:100vh;display:flex;flex-direction:column}
.admin-topbar{background:#fff;border-bottom:1px solid var(--gray-bd);padding:0 28px;height:58px;display:flex;align-items:center;justify-content:space-between;box-shadow:0 1px 3px rgba(0,0,0,.06);position:sticky;top:0;z-index:99}
.admin-content{padding:28px;flex:1}
.admin-page-title{font-size:1.3rem;font-weight:800;color:var(--gray-900);margin-bottom:3px}
.admin-page-sub{font-size:.84rem;color:var(--gray);margin-bottom:22px}
.admin-card{background:#fff;border:1px solid var(--gray-bd);border-radius:var(--radius);padding:22px;box-shadow:0 1px 3px rgba(0,0,0,.05)}
.stat-cards{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:24px}
.stat-card{background:#fff;border:1px solid var(--gray-bd);border-radius:var(--radius);padding:20px}
.stat-card-icon{width:44px;height:44px;border-radius:11px;display:flex;align-items:center;justify-content:center;font-size:1.3rem;margin-bottom:10px}
.stat-card-num{font-size:1.75rem;font-weight:800;color:var(--gray-900)}
.stat-card-label{font-size:.82rem;color:var(--gray);margin-top:2px}
/* ===== TABLE ===== */
.admin-table{width:100%;border-collapse:collapse;font-size:.87rem}
.admin-table th{text-align:left;padding:11px 14px;font-size:.76rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--gray);background:var(--gray-lt);border-bottom:1px solid var(--gray-bd)}
.admin-table td{padding:13px 14px;border-bottom:1px solid #f1f5f9;color:var(--gray-dk);vertical-align:middle}
.admin-table tr:hover td{background:var(--gray-lt)}
.admin-table tr:last-child td{border-bottom:none}
.table-avatar{width:34px;height:34px;border-radius:50%;background:var(--blue-lt);display:flex;align-items:center;justify-content:center;font-size:1.05rem}
.table-actions{display:flex;gap:6px}
/* ===== MODAL ===== */
.modal-overlay{display:none;position:fixed;inset:0;background:rgba(0,0,0,.48);z-index:1000;align-items:center;justify-content:center;padding:16px;backdrop-filter:blur(4px)}
.modal-overlay.open{display:flex}
.modal-box{background:#fff;border-radius:16px;width:100%;max-width:540px;max-height:92vh;overflow-y:auto;box-shadow:var(--shadow-lg)}
.modal-header{display:flex;align-items:center;justify-content:space-between;padding:18px 22px;border-bottom:1px solid var(--gray-bd)}
.modal-title{font-size:1.05rem;font-weight:700;color:var(--gray-900)}
.modal-close{width:30px;height:30px;border-radius:7px;background:var(--gray-lt);border:none;cursor:pointer;font-size:1rem;display:flex;align-items:center;justify-content:center;color:var(--gray-dk)}
.modal-close:hover{background:var(--gray-bd)}
.modal-body{padding:22px}
.modal-footer{padding:14px 22px;border-top:1px solid var(--gray-bd);display:flex;gap:8px;justify-content:flex-end}
/* ===== ICON PICKER ===== */
.icon-picker{display:flex;gap:7px;flex-wrap:wrap;margin-bottom:8px}
.icon-pick-btn{width:40px;height:40px;border-radius:9px;border:2px solid var(--gray-bd);background:#fff;font-size:1.25rem;cursor:pointer;transition:all .15s}
.icon-pick-btn.selected{border-color:var(--blue);background:var(--blue-lt)}
/* ===== TOGGLE ===== */
.toggle-switch{display:flex;align-items:center;gap:8px;cursor:pointer;user-select:none;font-size:.88rem}
.toggle-track{width:38px;height:20px;border-radius:999px;background:var(--gray-bd);position:relative;transition:background .2s}
.toggle-track.on{background:var(--blue)}
.toggle-thumb{width:16px;height:16px;border-radius:50%;background:#fff;position:absolute;top:2px;left:2px;transition:left .2s;box-shadow:0 1px 3px rgba(0,0,0,.2)}
.toggle-track.on .toggle-thumb{left:20px}
/* ===== ADMIN LOGIN ===== */
.login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--gray-lt);padding:24px}
.login-box{width:100%;max-width:380px}
.login-icon{width:60px;height:60px;border-radius:14px;background:linear-gradient(135deg,var(--blue),var(--teal));display:flex;align-items:center;justify-content:center;font-size:1.8rem;margin:0 auto 14px}
.divider{height:1px;background:var(--gray-bd);margin:20px 0}
/* ===== TOAST ===== */
.toast{position:fixed;top:16px;right:16px;z-index:9999;min-width:260px;padding:12px 16px;border-radius:var(--radius-sm);font-size:.87rem;font-weight:600;display:none;align-items:center;gap:8px;box-shadow:var(--shadow-lg);animation:slideIn .25s ease}
.toast.show{display:flex}
@keyframes slideIn{from{transform:translateX(100%);opacity:0}to{transform:translateX(0);opacity:1}}
.toast-success{background:var(--green-lt);color:var(--green);border:1px solid #86efac}
.toast-error{background:var(--red-lt);color:var(--red);border:1px solid #fca5a5}
/* ===== RESPONSIVE ===== */
@media(max-width:1024px){.footer-grid{grid-template-columns:1fr 1fr}.grid-4,.stat-cards{grid-template-columns:1fr 1fr}}
@media(max-width:900px){.grid-2,.contact-grid{grid-template-columns:1fr}.hero-visual{display:none}}
@media(max-width:768px){
.nav-links,.nav-actions{display:none}
.hamburger{display:flex}
.section{padding:52px 0}
.form-row{grid-template-columns:1fr}
.admin-sidebar{transform:translateX(-252px)}
.admin-main{margin-left:0}
.steps-row .step-item{max-width:80px}
}
@media(max-width:560px){
.stats-inner{flex-direction:column}
.footer-grid{grid-template-columns:1fr}
.grid-3,.grid-4,.stat-cards{grid-template-columns:1fr}
.doctors-grid{grid-template-columns:1fr}
.cta-btns{flex-direction:column;align-items:center}
.hero-stats{gap:14px}
.modal-box{max-height:100vh;border-radius:var(--radius)}
}
</style>
</head>
<body>
<!-- ===============================================================
TOAST
=============================================================== -->
<div class="toast" id="toast"></div>
<!-- ===============================================================
PUBLIC SITE
=============================================================== -->
<div id="public-site">
<!-- NAVBAR -->
<nav class="navbar">
<div class="wrap">
<div class="nav-inner">
<a class="nav-brand" onclick="showPage('home')">
<div class="nav-brand-icon">🏥</div>
<span>AI<strong>Doctors</strong>Clinic</span>
</a>
<div class="nav-links">
<button class="nav-link active" onclick="showPage('home')" id="nl-home">Home</button>
<button class="nav-link" onclick="showPage('doctors')" id="nl-doctors">Our Doctors</button>
<button class="nav-link" onclick="showPage('appointments')" id="nl-appointments">Appointments</button>
<button class="nav-link" onclick="showPage('contact')" id="nl-contact">Contact</button>
</div>
<div class="nav-actions">
<button class="btn btn-primary btn-sm" onclick="showPage('appointments')">📅 Book Now</button>
<button class="btn btn-ghost btn-sm" onclick="showAdminLogin()" title="Admin">⚙️</button>
</div>
<button class="hamburger" id="hamburger" onclick="toggleMobileNav()">
<span></span><span></span><span></span>
</button>
</div>
<div class="mobile-nav" id="mobile-nav">
<button class="nav-link" onclick="showPage('home');closeMobileNav()">🏠 Home</button>
<button class="nav-link" onclick="showPage('doctors');closeMobileNav()">👨⚕️ Our Doctors</button>
<button class="nav-link" onclick="showPage('appointments');closeMobileNav()">📅 Appointments</button>
<button class="nav-link" onclick="showPage('contact');closeMobileNav()">📞 Contact</button>
<button class="btn btn-primary btn-sm" style="margin-top:8px" onclick="showPage('appointments');closeMobileNav()">Book Now</button>
</div>
</div>
</nav>
<!-- ===== PAGE: HOME ===== -->
<div class="page active" id="page-home">
<!-- HERO -->
<section class="hero">
<div class="wrap hero-inner">
<div class="grid-2" style="gap:48px">
<div>
<span class="badge badge-teal" style="margin-bottom:14px">✨ AI-Powered Healthcare 2026</span>
<h1>Smart Healthcare<br><span>Powered by AI</span></h1>
<p class="hero-desc">Experience the future of medicine. Our AI platform connects you with world-class doctors, delivers instant diagnostic insights, and personalises your care journey.</p>
<div class="hero-btns">
<button class="btn btn-primary btn-lg" onclick="showPage('appointments')">📅 Book Appointment</button>
<button class="btn btn-outline-white btn-lg" onclick="showPage('doctors')">Meet Our Doctors</button>
</div>
<div class="hero-stats">
<div class="hero-stat"><strong>15,000+</strong><span>Patients Served</span></div>
<div class="hero-stat"><strong id="hero-doc-count">6+</strong><span>Specialist Doctors</span></div>
<div class="hero-stat"><strong>98%</strong><span>Satisfaction Rate</span></div>
</div>
</div>
<div class="hero-visual">
<div class="ai-orb">
<div class="ai-orb-icon">🤖</div>
<p>AI-Assisted Diagnostics & Smart Doctor Matching</p>
</div>
</div>
</div>
</div>
</section>
<!-- STATS -->
<div class="stats-bar">
<div class="wrap">
<div class="stats-inner">
<div><strong id="hero-spec-count">8+</strong><span>Specialties</span></div>
<div><strong>24/7</strong><span>AI Support</span></div>
<div><strong><10 min</strong><span>Avg. Wait</span></div>
<div><strong>15,000+</strong><span>Happy Patients</span></div>
</div>
</div>
</div>
<!-- SERVICES -->
<section class="section section-alt">
<div class="wrap">
<div class="text-center">
<span class="badge badge-blue" style="margin-bottom:10px">Our Services</span>
<h2>Comprehensive Medical Care</h2>
<p style="max-width:500px;margin:10px auto 0">From routine check-ups to specialised treatments — every service enhanced by artificial intelligence.</p>
</div>
<div class="services-grid" id="home-services-grid"><!-- filled by JS --></div>
</div>
</section>
<!-- WHY AI -->
<section class="section">
<div class="wrap">
<div class="grid-2">
<div>
<span class="badge badge-teal" style="margin-bottom:10px">Why Choose Us</span>
<h2>Medicine Meets Artificial Intelligence</h2>
<div class="why-list">
<div class="why-item"><div class="why-icon">⚡</div><div class="why-text"><h4>Faster Diagnoses</h4><p>AI pre-screens your symptoms before the appointment, cutting diagnosis time by up to 60%.</p></div></div>
<div class="why-item"><div class="why-icon">🎯</div><div class="why-text"><h4>Precision Treatment</h4><p>Personalised treatment plans built from your complete health profile and latest medical research.</p></div></div>
<div class="why-item"><div class="why-icon">🔒</div><div class="why-text"><h4>Secure & Private</h4><p>Full HIPAA compliance, end-to-end encrypted health records and transparent data policies.</p></div></div>
<div class="why-item"><div class="why-icon">🌐</div><div class="why-text"><h4>24/7 AI Assistant</h4><p>Round-the-clock AI health assistant for symptom checking, medication reminders and triage.</p></div></div>
</div>
</div>
<div style="display:flex;justify-content:center;align-items:center">
<div style="width:260px;height:260px;border-radius:50%;background:linear-gradient(135deg,var(--blue),var(--teal));display:flex;align-items:center;justify-content:center;font-size:5.5rem;box-shadow:0 20px 60px rgba(37,99,235,.3)">🏥</div>
</div>
</div>
</div>
</section>
<!-- FEATURED DOCTORS -->
<section class="section section-alt">
<div class="wrap">
<div class="text-center">
<span class="badge badge-blue" style="margin-bottom:10px">Top Specialists</span>
<h2>Meet Our Expert Doctors</h2>
<p style="max-width:500px;margin:10px auto 0">Board-certified specialists supported by AI tools to deliver better outcomes.</p>
</div>
<div class="doctors-grid" id="home-doctors-grid"><!-- filled by JS --></div>
<div class="text-center" style="margin-top:28px">
<button class="btn btn-primary" onclick="showPage('doctors')">View All Doctors →</button>
</div>
</div>
</section>
<!-- TESTIMONIALS -->
<section class="section">
<div class="wrap">
<div class="text-center">
<span class="badge badge-blue" style="margin-bottom:10px">Patient Reviews</span>
<h2>What Our Patients Say</h2>
</div>
<div class="testi-grid">
<div class="card testi-card">
<div class="stars">★★★★★</div>
<p class="testi-text">"The AI symptom checker caught an early warning sign my previous doctor missed. AIDoctorsClinic genuinely saved my life."</p>
<div class="testi-author"><div class="testi-avatar">👤</div><div><div class="testi-name">Sarah M.</div><div class="testi-role">Patient since 2025</div></div></div>
</div>
<div class="card testi-card">
<div class="stars">★★★★★</div>
<p class="testi-text">"Booking is so easy and the reminders are smart. My entire family uses this clinic now. The doctors are incredibly knowledgeable."</p>
<div class="testi-author"><div class="testi-avatar">👤</div><div><div class="testi-name">David L.</div><div class="testi-role">Patient since 2024</div></div></div>
</div>
<div class="card testi-card">
<div class="stars">★★★★★</div>
<p class="testi-text">"The telemedicine option is a lifesaver. Same quality care from the comfort of my home. Highly recommend to everyone!"</p>
<div class="testi-author"><div class="testi-avatar">👤</div><div><div class="testi-name">Aisha K.</div><div class="testi-role">Patient since 2026</div></div></div>
</div>
</div>
</div>
</section>
<!-- CTA -->
<section class="cta-section">
<div class="wrap">
<h2>Ready to Experience Smarter Healthcare?</h2>
<p>Join thousands of patients who trust AIDoctorsClinic for their health.</p>
<div class="cta-btns">
<button class="btn btn-outline-white btn-lg" onclick="showPage('appointments')">📅 Book Appointment</button>
<button class="btn btn-lg" style="background:#fff;color:var(--blue)" onclick="showPage('contact')">📞 Contact Us</button>
</div>
</div>
</section>
</div><!-- /page-home -->
<!-- ===== PAGE: DOCTORS ===== -->
<div class="page" id="page-doctors">
<div class="page-header">
<div class="wrap">
<span class="badge badge-teal" style="margin-bottom:10px">Our Team</span>
<h1>Expert Doctors, AI-Enhanced Care</h1>
<p>Board-certified specialists equipped with cutting-edge AI diagnostic tools.</p>
<div class="breadcrumb"><a onclick="showPage('home')">Home</a><span>/</span><span>Our Doctors</span></div>
</div>
</div>
<section class="section">
<div class="wrap">
<div class="filter-bar" id="doctors-filter-bar"><!-- filled by JS --></div>
<div class="doctors-grid" id="doctors-grid"><!-- filled by JS --></div>
</div>
</section>
</div>
<!-- ===== PAGE: APPOINTMENTS ===== -->
<div class="page" id="page-appointments">
<div class="page-header">
<div class="wrap">
<span class="badge badge-teal" style="margin-bottom:10px">Easy Booking</span>
<h1>Book Your Appointment</h1>
<p>Schedule in under 2 minutes. AI matches you with the ideal specialist.</p>
<div class="breadcrumb"><a onclick="showPage('home')">Home</a><span>/</span><span>Appointments</span></div>
</div>
</div>
<section class="section">
<div class="wrap">
<!-- Steps -->
<div class="steps-row">
<div class="step-item"><div class="step-num">1</div><div style="font-size:1.3rem">📋</div><span class="step-label">Fill Form</span></div>
<div class="step-item"><div class="step-num">2</div><div style="font-size:1.3rem">🤖</div><span class="step-label">AI Match</span></div>
<div class="step-item"><div class="step-num">3</div><div style="font-size:1.3rem">✅</div><span class="step-label">Confirm</span></div>
<div class="step-item"><div class="step-num">4</div><div style="font-size:1.3rem">🩺</div><span class="step-label">See Doctor</span></div>
</div>
<div style="max-width:680px;margin:0 auto">
<!-- Form -->
<div class="admin-card" id="appt-form-wrap">
<h2 style="margin-bottom:4px">Request an Appointment</h2>
<p style="margin-bottom:22px;font-size:.88rem">Fields marked * are required. Confirmation within 30 minutes during office hours.</p>
<form id="appt-form" onsubmit="submitAppointment(event)" novalidate>
<div class="form-row">
<div class="form-group">
<label>First Name *</label>
<input class="form-control" id="appt-fn" placeholder="John">
<span class="form-error-msg" id="err-appt-fn">Required</span>
</div>
<div class="form-group">
<label>Last Name *</label>
<input class="form-control" id="appt-ln" placeholder="Doe">
<span class="form-error-msg" id="err-appt-ln">Required</span>
</div>
</div>
<div class="form-row">
<div class="form-group">
<label>Email *</label>
<input class="form-control" type="email" id="appt-email" placeholder="john@email.com">
<span class="form-error-msg" id="err-appt-email">Valid email required</span>
</div>
<div class="form-group">
<label>Phone *</label>
<input class="form-control" id="appt-phone" placeholder="+1 555 000 0000">
<span class="form-error-msg" id="err-appt-phone">Required</span>
</div>
</div>
<div class="form-row">
<div class="form-group">
<label>Specialty *</label>
<select class="form-control" id="appt-spec" onchange="updateDoctorDropdown()">
<option value="">Select specialty...</option>
</select>
<span class="form-error-msg" id="err-appt-spec">Required</span>
</div>
<div class="form-group">
<label>Preferred Doctor</label>
<select class="form-control" id="appt-doc">
<option value="">No preference / AI Match</option>
</select>
</div>
</div>
<div class="form-row">
<div class="form-group">
<label>Preferred Date *</label>
<input class="form-control" type="date" id="appt-date">
<span class="form-error-msg" id="err-appt-date">Required</span>
</div>
<div class="form-group">
<label>Preferred Time *</label>
<select class="form-control" id="appt-time">
<option value="">Select time...</option>
<option>08:00 AM</option><option>09:00 AM</option><option>10:00 AM</option>
<option>11:00 AM</option><option>12:00 PM</option><option>01:00 PM</option>
<option>02:00 PM</option><option>03:00 PM</option><option>04:00 PM</option>
<option>05:00 PM</option><option>06:00 PM</option>
</select>
<span class="form-error-msg" id="err-appt-time">Required</span>
</div>
</div>
<div class="form-group">
<label>Visit Type *</label>
<select class="form-control" id="appt-type">
<option value="">Select...</option>
<option>In-Person Visit</option>
<option>Telemedicine (Video Call)</option>
<option>Phone Consultation</option>
</select>
<span class="form-error-msg" id="err-appt-type">Required</span>
</div>
<div class="form-group">
<label>Symptoms / Reason *</label>
<textarea class="form-control" id="appt-symp" placeholder="Briefly describe your symptoms..."></textarea>
<span class="form-error-msg" id="err-appt-symp">Required</span>
</div>
<div class="form-group">
<label>Insurance (optional)</label>
<input class="form-control" id="appt-ins" placeholder="e.g. Blue Cross, Aetna...">
</div>
<button type="submit" class="btn btn-primary btn-full btn-lg" style="margin-top:4px">🤖 AI-Match & Book Appointment</button>
<p style="font-size:.75rem;color:#94a3b8;text-align:center;margin-top:8px">Your data is encrypted and protected under HIPAA guidelines.</p>
</form>
</div>
<!-- Success -->
<div class="success-box" id="appt-success">
<div class="success-icon">✅</div>
<h3>Appointment Request Received!</h3>
<p id="appt-success-msg">Our AI is matching you with the best available doctor. You will receive email confirmation within 30 minutes.</p>
<button class="btn btn-success" style="margin-top:18px" onclick="resetApptForm()">Book Another Appointment</button>
</div>
<!-- FAQ -->
<div style="margin-top:36px">
<h3 style="margin-bottom:14px">Frequently Asked Questions</h3>
<div class="faq-item"><div class="faq-q" onclick="toggleFaq(this)">How quickly will I get a confirmation? <span>▼</span></div><div class="faq-a">During office hours (Mon-Fri 8am-8pm), confirmations are sent within 30 minutes. After hours, you'll hear back the next morning.</div></div>
<div class="faq-item"><div class="faq-q" onclick="toggleFaq(this)">Can I reschedule or cancel? <span>▼</span></div><div class="faq-a">Yes. Reschedule or cancel up to 2 hours before your appointment at no charge. Contact us using the number in our clinic settings.</div></div>
<div class="faq-item"><div class="faq-q" onclick="toggleFaq(this)">Do you accept insurance? <span>▼</span></div><div class="faq-a">We accept most major plans including Blue Cross, Aetna, Cigna, UnitedHealth and Medicare. Self-pay options available.</div></div>
<div class="faq-item"><div class="faq-q" onclick="toggleFaq(this)">What is AI matching? <span>▼</span></div><div class="faq-a">Our AI analyses your symptoms, medical history and availability to recommend the most suitable doctor for your specific needs.</div></div>
</div>
</div>
</div>
</section>
</div>
<!-- ===== PAGE: CONTACT ===== -->
<div class="page" id="page-contact">
<div class="page-header">
<div class="wrap">
<span class="badge badge-teal" style="margin-bottom:10px">Get in Touch</span>
<h1>Contact AIDoctorsClinic</h1>
<p>Have a question or need support? Our team and AI assistant are here 24/7.</p>
<div class="breadcrumb"><a onclick="showPage('home')">Home</a><span>/</span><span>Contact</span></div>
</div>
</div>
<section class="section">
<div class="wrap contact-grid">
<div>
<h2 style="margin-bottom:22px">We'd Love to Hear From You</h2>
<div class="contact-items">
<div class="contact-item"><div class="contact-item-icon">📍</div><div><h4>Location</h4><p id="clinic-address-display">123 MedTech Avenue, Suite 100, San Francisco, CA 94102</p></div></div>
<div class="contact-item"><div class="contact-item-icon">📞</div><div><h4>Phone</h4><p id="clinic-phone-display">1-800-555-0199</p></div></div>
<div class="contact-item"><div class="contact-item-icon">📧</div><div><h4>Email</h4><p id="clinic-email-display">info@aidoctorsclinic.com</p></div></div>
<div class="contact-item"><div class="contact-item-icon">🕒</div><div><h4>Hours</h4><p id="clinic-hours-display">Mon-Fri 8am-8pm | Sat 9am-4pm | Sun: Emergency Only</p></div></div>
</div>
<div class="emergency-box" style="margin-top:22px">
<span style="font-size:1.4rem">🚨</span>
<div><strong>Medical Emergency?</strong><p>Call <strong>911</strong> immediately. Urgent (non-911): <strong id="clinic-emergency-display">1-800-555-0911</strong></p></div>
</div>
<div style="background:var(--gray-lt);border-radius:var(--radius);height:160px;display:flex;flex-direction:column;align-items:center;justify-content:center;margin-top:22px;border:1px solid var(--gray-bd);gap:8px">
<span style="font-size:2rem">🗺️</span>
<span style="font-size:.86rem;color:var(--gray)">Click to open in Google Maps</span>
<a href="https://maps.google.com/?q=San+Francisco,CA" target="_blank" class="btn btn-primary btn-sm">Open Google Maps</a>
</div>
</div>
<div class="contact-form-card">
<h3 style="margin-bottom:18px">Send Us a Message</h3>
<form id="contact-form" onsubmit="submitContact(event)" novalidate>
<div class="form-row">
<div class="form-group">
<label>First Name *</label>
<input class="form-control" id="ct-fn" placeholder="John">
<span class="form-error-msg" id="err-ct-fn">Required</span>
</div>
<div class="form-group">
<label>Last Name</label>
<input class="form-control" id="ct-ln" placeholder="Doe">
</div>
</div>
<div class="form-group">
<label>Email *</label>
<input class="form-control" type="email" id="ct-email" placeholder="john@email.com">
<span class="form-error-msg" id="err-ct-email">Required</span>
</div>
<div class="form-group">
<label>Phone</label>
<input class="form-control" id="ct-phone" placeholder="+1 555 000 0000">
</div>
<div class="form-group">
<label>Subject *</label>
<select class="form-control" id="ct-sub">
<option value="">Select a topic...</option>
<option>General Inquiry</option><option>Appointment Question</option>
<option>Billing & Insurance</option><option>Technical Support</option>
<option>Partnership Inquiry</option><option>Feedback / Complaint</option>
</select>
<span class="form-error-msg" id="err-ct-sub">Required</span>
</div>
<div class="form-group">
<label>Message *</label>
<textarea class="form-control" id="ct-msg" placeholder="How can we help?" style="min-height:110px"></textarea>
<span class="form-error-msg" id="err-ct-msg">Required</span>
</div>
<div class="form-group" style="flex-direction:row;align-items:center;gap:9px">
<input type="checkbox" id="ct-ok" style="width:15px;height:15px;flex-shrink:0">
<label for="ct-ok" style="font-weight:400;font-size:.82rem;color:var(--gray)">I agree to the Privacy Policy and consent to being contacted.</label>
</div>
<span class="form-error-msg" id="err-ct-ok">Please agree to the privacy policy</span>
<button type="submit" class="btn btn-primary btn-full" style="margin-top:8px">Send Message →</button>
</form>
<div class="success-box" id="contact-success" style="margin-top:16px">
<div class="success-icon">✅</div>
<h3>Message Sent!</h3>
<p>Our team will respond within 1 business hour during office hours.</p>
<button class="btn btn-success" style="margin-top:14px" onclick="resetContactForm()">Send Another</button>
</div>
</div>
</div>
</section>
</div>
<!-- FOOTER -->
<footer class="footer" id="site-footer">
<div class="wrap">
<div class="footer-grid">
<div>
<div class="footer-brand"><div class="footer-brand-icon">🏥</div><span id="footer-clinic-name">AIDoctorsClinic</span></div>
<p class="footer-desc">AI-powered healthcare that puts patients first. World-class doctors, smart technology, and compassionate care.</p>
<div class="footer-social">
<a id="footer-fb" href="#" title="Facebook">📘</a>
<a id="footer-tw" href="#" title="Twitter">🐦</a>
<a id="footer-li" href="#" title="LinkedIn">💼</a>
<a id="footer-ig" href="#" title="Instagram">📸</a>
</div>
</div>
<div class="footer-col"><h4>Navigate</h4><ul>
<li><a onclick="showPage('home')">Home</a></li>
<li><a onclick="showPage('doctors')">Our Doctors</a></li>
<li><a onclick="showPage('appointments')">Appointments</a></li>
<li><a onclick="showPage('contact')">Contact</a></li>
</ul></div>
<div class="footer-col"><h4>Services</h4><ul>
<li><a>AI Diagnostics</a></li><li><a>Telemedicine</a></li>
<li><a>General Medicine</a></li><li><a>Lab & Imaging</a></li>
</ul></div>
<div class="footer-col"><h4>Contact</h4><ul>
<li><a id="footer-email" href="#">📧 info@aidoctorsclinic.com</a></li>
<li><a id="footer-phone" href="#">📞 1-800-555-0199</a></li>
<li><a>📍 123 MedTech Ave</a></li>
<li><a>🕒 Mon-Fri 8am-8pm</a></li>
</ul></div>
</div>
<div class="footer-bottom">© 2026 AIDoctorsClinic.com — All rights reserved.</div>
</div>
</footer>
</div><!-- /public-site -->
<!-- ===============================================================
ADMIN LOGIN
=============================================================== -->
<div id="admin-login-page" style="display:none">
<div class="login-page">
<div class="login-box">
<div style="text-align:center;margin-bottom:28px">
<div class="login-icon">🏥</div>
<h2>Admin Login</h2>
<p>AIDoctorsClinic Dashboard</p>
</div>
<div class="admin-card">
<div class="alert alert-error" id="login-error" style="display:none">⚠ Invalid credentials. Use <strong>admin</strong> / <strong>admin123</strong></div>
<div class="form-group"><label>Username</label><input class="form-control" id="login-user" placeholder="admin" autocomplete="username"></div>
<div class="form-group"><label>Password</label><input class="form-control" type="password" id="login-pass" placeholder="••••••••" autocomplete="current-password"></div>
<button class="btn btn-primary btn-full" onclick="doLogin()" style="margin-top:4px">Login to Dashboard →</button>
<div style="margin-top:14px;text-align:center">
<button class="btn btn-ghost btn-sm" onclick="showPublicSite()">← Back to Website</button>
</div>
<p style="font-size:.75rem;color:#94a3b8;text-align:center;margin-top:10px">Default: admin / admin123</p>
</div>
</div>
</div>
</div>
<!-- ===============================================================
ADMIN DASHBOARD
=============================================================== -->
<div id="admin-dashboard" style="display:none">
<div class="admin-layout">
<!-- Sidebar -->
<div class="admin-sidebar">
<div class="admin-sidebar-header">
<div class="admin-brand">🏥 AIDoctorsClinic</div>
<div class="admin-sub">Admin Dashboard</div>
</div>
<div class="admin-nav">
<div class="admin-nav-section">Main</div>
<div class="admin-nav-item active" onclick="showAdminSection('dash',this)"><span>📊</span> Dashboard</div>
<div class="admin-nav-item" onclick="showAdminSection('doctors',this)"><span>👨⚕️</span> Manage Doctors</div>
<div class="admin-nav-item" onclick="showAdminSection('specialties',this)"><span>🏥</span> Manage Specialties</div>
<div class="admin-nav-item" onclick="showAdminSection('settings',this)"><span>⚙️</span> Clinic Settings</div>
<div class="admin-nav-section">Public Site</div>
<div class="admin-nav-item" onclick="showPublicSite();showPage('home')"><span>🌐</span> View Website</div>
<div class="admin-nav-item" onclick="showPublicSite();showPage('doctors')"><span>👨⚕️</span> Doctors Page</div>
<div class="admin-nav-item" onclick="showPublicSite();showPage('appointments')"><span>📅</span> Appointments</div>
</div>
<div style="padding:14px 18px;border-top:1px solid rgba(255,255,255,.09)">
<button class="btn btn-ghost btn-sm btn-full" style="color:rgba(255,255,255,.55);border-color:rgba(255,255,255,.12)" onclick="doLogout()">🚪 Logout</button>
</div>
</div>
<!-- Main Content -->
<div class="admin-main">
<div class="admin-topbar">
<div id="admin-section-title" style="font-weight:700;font-size:.95rem;color:var(--gray-900)">Dashboard</div>
<div style="display:flex;align-items:center;gap:10px">
<span style="font-size:.82rem;color:var(--gray)">Logged in as <strong>Admin</strong></span>
<button class="btn btn-ghost btn-sm" onclick="doLogout()">Logout</button>
</div>
</div>
<div class="admin-content">
<!-- SECTION: DASHBOARD -->
<div id="admin-sec-dash" class="admin-section">
<div class="admin-page-title">Dashboard Overview</div>
<div class="admin-page-sub">Welcome back! Here's a summary of your clinic data.</div>
<div class="stat-cards">
<div class="stat-card"><div class="stat-card-icon" style="background:var(--blue-lt);color:var(--blue)">👨⚕️</div><div class="stat-card-num" id="stat-total-docs">0</div><div class="stat-card-label">Total Doctors</div></div>
<div class="stat-card"><div class="stat-card-icon" style="background:var(--green-lt);color:var(--green)">✅</div><div class="stat-card-num" id="stat-active-docs">0</div><div class="stat-card-label">Active Doctors</div></div>
<div class="stat-card"><div class="stat-card-icon" style="background:var(--teal-lt);color:var(--teal)">🏥</div><div class="stat-card-num" id="stat-specs">0</div><div class="stat-card-label">Specialties</div></div>
<div class="stat-card"><div class="stat-card-icon" style="background:var(--yellow-lt);color:var(--yellow-dk,#ca8a04)">🤖</div><div class="stat-card-num" id="stat-ai-docs">0</div><div class="stat-card-label">AI Certified</div></div>
</div>
<div class="admin-card">
<h3 style="margin-bottom:14px">Doctors by Specialty</h3>
<div id="dash-spec-breakdown"><!-- filled by JS --></div>
</div>
</div>
<!-- SECTION: DOCTORS -->
<div id="admin-sec-doctors" class="admin-section" style="display:none">
<div style="display:flex;justify-content:space-between;align-items:center;margin-bottom:22px;flex-wrap:wrap;gap:10px">
<div><div class="admin-page-title">Manage Doctors</div><div class="admin-page-sub">Add, edit or remove doctors. Changes appear instantly on the website.</div></div>
<button class="btn btn-primary" onclick="openDoctorModal()">➕ Add New Doctor</button>
</div>
<div class="admin-card" style="padding:0;overflow:auto">
<div id="doctors-table-wrap"><!-- filled by JS --></div>
</div>
</div>
<!-- SECTION: SPECIALTIES -->
<div id="admin-sec-specialties" class="admin-section" style="display:none">
<div style="display:flex;justify-content:space-between;align-items:center;margin-bottom:22px;flex-wrap:wrap;gap:10px">
<div><div class="admin-page-title">Manage Specialties</div><div class="admin-page-sub">Add, edit or remove specialties. These appear in filters and the booking form.</div></div>
<button class="btn btn-primary" onclick="openSpecModal()">➕ Add Specialty</button>
</div>
<div id="specs-grid" style="display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:14px"><!-- filled by JS --></div>
</div>
<!-- SECTION: SETTINGS -->
<div id="admin-sec-settings" class="admin-section" style="display:none">
<div class="admin-page-title">Clinic Settings</div>
<div class="admin-page-sub">Update your clinic's name, contact info, and social media links.</div>
<div class="admin-card" style="max-width:660px">
<form onsubmit="saveSettings(event)">
<div class="form-row">
<div class="form-group"><label>Clinic Name</label><input class="form-control" id="s-name" placeholder="AIDoctorsClinic"></div>
<div class="form-group"><label>Phone</label><input class="form-control" id="s-phone"></div>
</div>
<div class="form-row">
<div class="form-group"><label>Emergency Line</label><input class="form-control" id="s-emergency"></div>
<div class="form-group"><label>Email</label><input class="form-control" type="email" id="s-email"></div>
</div>
<div class="form-group"><label>Address</label><input class="form-control" id="s-address"></div>
<div class="form-group"><label>Office Hours</label><input class="form-control" id="s-hours"></div>
<div class="divider"></div>
<h4 style="margin-bottom:14px">Social Media Links</h4>
<div class="form-row">
<div class="form-group"><label>📘 Facebook URL</label><input class="form-control" id="s-fb" placeholder="https://facebook.com/..."></div>
<div class="form-group"><label>🐦 Twitter / X URL</label><input class="form-control" id="s-tw" placeholder="https://twitter.com/..."></div>
</div>
<div class="form-row">
<div class="form-group"><label>💼 LinkedIn URL</label><input class="form-control" id="s-li" placeholder="https://linkedin.com/..."></div>
<div class="form-group"><label>📸 Instagram URL</label><input class="form-control" id="s-ig" placeholder="https://instagram.com/..."></div>
</div>
<button type="submit" class="btn btn-primary btn-full">💾 Save All Settings</button>
</form>
</div>
</div>
</div><!-- /admin-content -->
</div><!-- /admin-main -->
</div>
</div>
<!-- ===============================================================
DOCTOR MODAL
=============================================================== -->
<div class="modal-overlay" id="doctor-modal">
<div class="modal-box">
<div class="modal-header">
<span class="modal-title" id="doctor-modal-title">Add New Doctor</span>
<button class="modal-close" onclick="closeDoctorModal()">✕</button>
</div>
<div class="modal-body">
<input type="hidden" id="dm-id">
<div class="form-group">
<label>Choose Avatar</label>
<div class="icon-picker" id="avatar-picker">
<button type="button" class="icon-pick-btn selected" data-val="👨⚕️" onclick="pickAvatar(this)">👨⚕️</button>
<button type="button" class="icon-pick-btn" data-val="👩⚕️" onclick="pickAvatar(this)">👩⚕️</button>
<button type="button" class="icon-pick-btn" data-val="🧑⚕️" onclick="pickAvatar(this)">🧑⚕️</button>
<button type="button" class="icon-pick-btn" data-val="👨🔬" onclick="pickAvatar(this)">👨🔬</button>
<button type="button" class="icon-pick-btn" data-val="👩🔬" onclick="pickAvatar(this)">👩🔬</button>
</div>
<input type="hidden" id="dm-avatar" value="👨⚕️">
</div>
<div class="form-row">
<div class="form-group"><label>Full Name *</label><input class="form-control" id="dm-name" placeholder="Dr. First Last"><span class="form-error-msg" id="err-dm-name">Required</span></div>
<div class="form-group">
<label>Specialty *</label>
<select class="form-control" id="dm-spec"><option value="">Select...</option></select>
<span class="form-error-msg" id="err-dm-spec">Required</span>
</div>
</div>
<div class="form-row">
<div class="form-group"><label>Experience *</label><input class="form-control" id="dm-exp" placeholder="e.g. 10 years"><span class="form-error-msg" id="err-dm-exp">Required</span></div>
<div class="form-group"><label>University / Hospital *</label><input class="form-control" id="dm-uni" placeholder="e.g. Harvard Medical"><span class="form-error-msg" id="err-dm-uni">Required</span></div>
</div>
<div class="form-row">
<div class="form-group"><label>Languages</label><input class="form-control" id="dm-lang" placeholder="English, Spanish" value="English"></div>
<div class="form-group">
<label>Star Rating</label>
<select class="form-control" id="dm-rating">
<option value="5">★★★★★ (5 Stars)</option>
<option value="4">★★★★☆ (4 Stars)</option>
<option value="3">★★★☆☆ (3 Stars)</option>
</select>
</div>
</div>
<div class="form-group"><label>Short Bio</label><textarea class="form-control" id="dm-bio" placeholder="Short description about this doctor..." style="min-height:72px"></textarea></div>
<div style="display:flex;gap:24px;flex-wrap:wrap;margin-top:4px">
<label style="display:flex;align-items:center;gap:8px;cursor:pointer;font-size:.88rem">
<input type="checkbox" id="dm-ai" style="width:15px;height:15px"> AI Certified
</label>
<label style="display:flex;align-items:center;gap:8px;cursor:pointer;font-size:.88rem">
<input type="checkbox" id="dm-active" checked style="width:15px;height:15px"> Active / Visible on website
</label>
</div>
</div>
<div class="modal-footer">
<button class="btn btn-ghost" onclick="closeDoctorModal()">Cancel</button>
<button class="btn btn-primary" onclick="saveDoctor()" id="doctor-modal-save-btn">Add Doctor</button>
</div>
</div>
</div>
<!-- ===============================================================
SPECIALTY MODAL
=============================================================== -->
<div class="modal-overlay" id="spec-modal">
<div class="modal-box" style="max-width:460px">
<div class="modal-header">
<span class="modal-title" id="spec-modal-title">Add Specialty</span>
<button class="modal-close" onclick="closeSpecModal()">✕</button>
</div>
<div class="modal-body">
<input type="hidden" id="sm-id">
<div class="form-group">
<label>Choose Icon</label>
<div class="icon-picker" id="spec-icon-picker">
<button type="button" class="icon-pick-btn selected" data-val="🩺" onclick="pickSpecIcon(this)">🩺</button>
<button type="button" class="icon-pick-btn" data-val="🫀" onclick="pickSpecIcon(this)">🫀</button>
<button type="button" class="icon-pick-btn" data-val="🧠" onclick="pickSpecIcon(this)">🧠</button>
<button type="button" class="icon-pick-btn" data-val="🦴" onclick="pickSpecIcon(this)">🦴</button>
<button type="button" class="icon-pick-btn" data-val="✨" onclick="pickSpecIcon(this)">✨</button>
<button type="button" class="icon-pick-btn" data-val="👶" onclick="pickSpecIcon(this)">👶</button>
<button type="button" class="icon-pick-btn" data-val="🤖" onclick="pickSpecIcon(this)">🤖</button>
<button type="button" class="icon-pick-btn" data-val="📱" onclick="pickSpecIcon(this)">📱</button>
<button type="button" class="icon-pick-btn" data-val="🔬" onclick="pickSpecIcon(this)">🔬</button>
<button type="button" class="icon-pick-btn" data-val="👁️" onclick="pickSpecIcon(this)">👁️</button>
<button type="button" class="icon-pick-btn" data-val="💊" onclick="pickSpecIcon(this)">💊</button>
<button type="button" class="icon-pick-btn" data-val="🦷" onclick="pickSpecIcon(this)">🦷</button>
<button type="button" class="icon-pick-btn" data-val="🧬" onclick="pickSpecIcon(this)">🧬</button>
<button type="button" class="icon-pick-btn" data-val="🩻" onclick="pickSpecIcon(this)">🩻</button>
<button type="button" class="icon-pick-btn" data-val="💉" onclick="pickSpecIcon(this)">💉</button>
<button type="button" class="icon-pick-btn" data-val="🩸" onclick="pickSpecIcon(this)">🩸</button>
</div>
<input type="hidden" id="sm-icon" value="🩺">
<label style="margin-top:8px;display:block;font-size:.82rem;font-weight:600;color:var(--gray-dk)">Or type any emoji:</label>
<input class="form-control" id="sm-icon-custom" placeholder="Type emoji e.g. 🏃" style="max-width:150px;margin-top:4px" oninput="document.getElementById('sm-icon').value=this.value">
</div>
<div class="form-group"><label>Specialty Name *</label><input class="form-control" id="sm-name" placeholder="e.g. Cardiology"><span class="form-error-msg" id="err-sm-name">Required</span></div>
<div class="form-group"><label>Description</label><textarea class="form-control" id="sm-desc" placeholder="Brief description of this specialty..." style="min-height:72px"></textarea></div>
</div>
<div class="modal-footer">
<button class="btn btn-ghost" onclick="closeSpecModal()">Cancel</button>
<button class="btn btn-primary" onclick="saveSpec()" id="spec-modal-save-btn">Add Specialty</button>
</div>
</div>
</div>
<!-- ===============================================================
DELETE CONFIRM MODAL
=============================================================== -->
<div class="modal-overlay" id="delete-modal">
<div class="modal-box" style="max-width:380px">
<div class="modal-header">
<span class="modal-title">🗑 Confirm Delete</span>
<button class="modal-close" onclick="closeDeleteModal()">✕</button>
</div>
<div class="modal-body">
<p id="delete-confirm-msg">Are you sure? This cannot be undone.</p>
</div>
<div class="modal-footer">
<button class="btn btn-ghost" onclick="closeDeleteModal()">Cancel</button>
<button class="btn btn-danger" onclick="confirmDelete()" id="confirm-delete-btn">Yes, Delete</button>
</div>
</div>
</div>
<!-- ===============================================================
JAVASCRIPT
=============================================================== -->
<script>
// ── DATA ──────────────────────────────────────────────────────────
const DEFAULT_DOCTORS = [
{id:1,name:"Dr. James Carter", spec:"Cardiology", exp:"15 years",uni:"Harvard Medical School", lang:"English, Spanish",rating:5,ai:true, active:true, avatar:"👨⚕️",bio:"Expert interventional cardiologist specialising in heart failure and complex coronary artery disease."},
{id:2,name:"Dr. Priya Sharma", spec:"Neurology", exp:"12 years",uni:"Johns Hopkins", lang:"English, Hindi", rating:5,ai:true, active:true, avatar:"👩⚕️",bio:"Leading neurologist and AI diagnostics researcher with published work in Nature Medicine."},
{id:3,name:"Dr. Ali Hassan", spec:"General Medicine",exp:"10 years",uni:"Oxford University", lang:"English, Arabic", rating:4,ai:false,active:true, avatar:"👨⚕️",bio:"Compassionate GP and telemedicine pioneer, serving patients across 3 continents."},
{id:4,name:"Dr. Sofia Reyes", spec:"Dermatology", exp:"9 years", uni:"Stanford Medical", lang:"English, Spanish",rating:5,ai:true, active:true, avatar:"👩⚕️",bio:"Board-certified dermatologist with expertise in AI-assisted skin cancer detection."},
{id:5,name:"Dr. Marcus Lee", spec:"Orthopedics", exp:"18 years",uni:"Mayo Clinic", lang:"English, Korean", rating:5,ai:false,active:true, avatar:"👨⚕️",bio:"Senior orthopedic surgeon and sports medicine specialist who has worked with Olympic athletes."},
{id:6,name:"Dr. Amina Osei", spec:"Pediatrics", exp:"11 years",uni:"Yale School of Medicine", lang:"English, French", rating:5,ai:true, active:true, avatar:"👩⚕️",bio:"Award-winning pediatrician focused on child development and preventive care programs."},
];
const DEFAULT_SPECS = [
{id:1,name:"General Medicine",icon:"🩺",desc:"Primary care for all ages including chronic disease management and preventive health."},
{id:2,name:"Cardiology", icon:"🫀",desc:"Heart health monitoring, EKG analysis and cardiac risk assessment with AI precision."},
{id:3,name:"Neurology", icon:"🧠",desc:"Brain and nervous system care with AI-assisted imaging interpretation."},
{id:4,name:"Orthopedics", icon:"🦴",desc:"Bone, joint and musculoskeletal care with smart rehabilitation tracking."},
{id:5,name:"Dermatology", icon:"✨",desc:"Skin health including AI-powered lesion detection and cosmetic dermatology."},
{id:6,name:"Pediatrics", icon:"👶",desc:"Complete child healthcare from newborn care through adolescence."},
{id:7,name:"AI Diagnostics", icon:"🤖",desc:"Advanced AI algorithms analyse symptoms and history for fast, accurate insights."},
{id:8,name:"Telemedicine", icon:"📱",desc:"Secure video consultations from home. AI pre-screening for best specialist match."},
];
const DEFAULT_CLINIC = {
name:"AIDoctorsClinic",phone:"1-800-555-0199",emergency:"1-800-555-0911",
email:"info@aidoctorsclinic.com",
address:"123 MedTech Avenue, Suite 100, San Francisco, CA 94102",
hours:"Mon-Fri 8am-8pm | Sat 9am-4pm | Sun: Emergency Only",
fb:"#",tw:"#",li:"#",ig:"#"
};
function load(key, def) { try { const s = localStorage.getItem(key); return s ? JSON.parse(s) : JSON.parse(JSON.stringify(def)); } catch(e) { return JSON.parse(JSON.stringify(def)); } }
function save(key, val) { try { localStorage.setItem(key, JSON.stringify(val)); } catch(e) {} }
let DOCTORS = load('adc_docs', DEFAULT_DOCTORS);
let SPECS = load('adc_specs', DEFAULT_SPECS);
let CLINIC = load('adc_clinic', DEFAULT_CLINIC);
function saveAll() { save('adc_docs', DOCTORS); save('adc_specs', SPECS); save('adc_clinic', CLINIC); }
// ── TOAST ──────────────────────────────────────────────────────────
let toastTimer = null;
function showToast(msg, type='success') {
const t = document.getElementById('toast');
t.textContent = (type==='success'?'✅ ':'❌ ') + msg;
t.className = 'toast show toast-' + type;
if (toastTimer) clearTimeout(toastTimer);
toastTimer = setTimeout(() => t.className = 'toast', 3000);
}
// ── NAVIGATION ────────────────────────────────────────────────────
function showPage(name) {
document.querySelectorAll('.page').forEach(p => p.classList.remove('active'));
document.getElementById('page-' + name).classList.add('active');
document.querySelectorAll('.nav-link').forEach(l => l.classList.remove('active'));
const nl = document.getElementById('nl-' + name);
if (nl) nl.classList.add('active');
window.scrollTo(0, 0);
if (name === 'doctors') renderDoctorsPage();
if (name === 'appointments') populateApptDropdowns();
if (name === 'home') renderHome();
}
function showAdminLogin() {
document.getElementById('public-site').style.display = 'none';
document.getElementById('admin-login-page').style.display = 'block';
document.getElementById('admin-dashboard').style.display = 'none';
document.getElementById('login-error').style.display = 'none';
document.getElementById('login-user').value = '';
document.getElementById('login-pass').value = '';
}
function showPublicSite() {
document.getElementById('public-site').style.display = 'block';
document.getElementById('admin-login-page').style.display = 'none';
document.getElementById('admin-dashboard').style.display = 'none';
window.scrollTo(0, 0);
}
function showAdminDash() {
document.getElementById('public-site').style.display = 'none';
document.getElementById('admin-login-page').style.display = 'none';
document.getElementById('admin-dashboard').style.display = 'block';
renderAdminDash();
renderDoctorsTable();
renderSpecsGrid();
loadSettingsForm();
}
function doLogin() {
const u = document.getElementById('login-user').value.trim();
const p = document.getElementById('login-pass').value;
if (u === 'admin' && p === 'admin123') {
showAdminDash();
} else {
document.getElementById('login-error').style.display = 'flex';
}
}
document.getElementById('login-pass').addEventListener('keydown', e => { if (e.key === 'Enter') doLogin(); });
function doLogout() { showPublicSite(); showPage('home'); }
function toggleMobileNav() {
const nav = document.getElementById('mobile-nav');
const btn = document.getElementById('hamburger');
nav.classList.toggle('open');
btn.classList.toggle('open');
}
function closeMobileNav() {
document.getElementById('mobile-nav').classList.remove('open');
document.getElementById('hamburger').classList.remove('open');
}
// ── STARS ─────────────────────────────────────────────────────────
function starsHTML(n) { return '★'.repeat(n) + '☆'.repeat(5 - n); }
// ── RENDER HOME ───────────────────────────────────────────────────
function renderHome() {
// Stats
document.getElementById('hero-doc-count').textContent = DOCTORS.filter(d=>d.active).length + '+';
document.getElementById('hero-spec-count').textContent = SPECS.length + '+';
// Services
const sg = document.getElementById('home-services-grid');
sg.innerHTML = SPECS.map(s => `
<div class="card card-hover service-card">
<div class="service-icon">${s.icon}</div>
<h3>${esc(s.name)}</h3>
<p>${esc(s.desc)}</p>
</div>`).join('');
// Featured doctors (first 3 active)
const feat = DOCTORS.filter(d => d.active).slice(0, 3);
document.getElementById('home-doctors-grid').innerHTML = feat.map(d => doctorCardHTML(d, true)).join('');
}
// ── RENDER DOCTORS PAGE ───────────────────────────────────────────
function renderDoctorsPage(activeFilter) {
activeFilter = activeFilter || 'all';
// Filter bar
const fb = document.getElementById('doctors-filter-bar');
fb.innerHTML = `<button class="filter-btn ${activeFilter==='all'?'active':''}" onclick="renderDoctorsPage('all')">All Specialties</button>`
+ SPECS.map(s => `<button class="filter-btn ${activeFilter===s.name?'active':''}" onclick="renderDoctorsPage('${esc(s.name)}')">${esc(s.name)}</button>`).join('');
// Doctors
let docs = DOCTORS.filter(d => d.active);
if (activeFilter !== 'all') docs = docs.filter(d => d.spec === activeFilter);
const dg = document.getElementById('doctors-grid');
if (docs.length === 0) {
dg.innerHTML = `<div class="empty-state" style="grid-column:1/-1"><div class="empty-icon">👩⚕️</div><p>No doctors found for this specialty yet.</p></div>`;
} else {
dg.innerHTML = docs.map(d => doctorCardHTML(d, false)).join('');
}
}
function doctorCardHTML(d, compact) {
return `<div class="card card-hover doctor-card">
<div class="doctor-avatar">${d.avatar}</div>
<div class="doctor-body">
<div class="stars">${starsHTML(d.rating)}</div>
<div class="doctor-name">${esc(d.name)}</div>
<div class="doctor-spec">${esc(d.spec)} ${d.ai ? '<span class="badge badge-teal" style="font-size:.65rem">AI</span>' : ''}</div>
<div class="doctor-meta">
<div class="doctor-meta-item">🎓 ${esc(d.uni)}</div>
<div class="doctor-meta-item">📅 ${esc(d.exp)}</div>
<div class="doctor-meta-item">🌍 ${esc(d.lang)}</div>
</div>
${(!compact && d.bio) ? `<p class="doctor-bio">${esc(d.bio)}</p>` : ''}
<div class="doctor-actions">
${compact ? `<button class="btn btn-ghost btn-sm" onclick="showPage('doctors')">Profile</button>` : ''}
<button class="btn btn-primary btn-sm ${compact?'':'btn-full'}" onclick="showPage('appointments')">📅 Book</button>
</div>
</div>
</div>`;
}
// ── APPOINTMENT FORM ──────────────────────────────────────────────
function populateApptDropdowns() {
const specSel = document.getElementById('appt-spec');
const cur = specSel.value;
specSel.innerHTML = '<option value="">Select specialty...</option>'
+ SPECS.map(s => `<option value="${esc(s.name)}">${esc(s.name)}</option>`).join('');
specSel.value = cur;
updateDoctorDropdown();
// Set min date
document.getElementById('appt-date').min = new Date().toISOString().split('T')[0];
}
function updateDoctorDropdown() {
const spec = document.getElementById('appt-spec').value;
const docSel = document.getElementById('appt-doc');
const docs = DOCTORS.filter(d => d.active && (!spec || d.spec === spec));
docSel.innerHTML = '<option value="">No preference / AI Match</option>'
+ docs.map(d => `<option value="${esc(d.name)}">${esc(d.name)}</option>`).join('');
}
function submitAppointment(e) {
e.preventDefault();
let ok = true;
const checks = [
['appt-fn', v => v.trim() !== '', 'Required'],
['appt-ln', v => v.trim() !== '', 'Required'],
['appt-email', v => /\S+@\S+\.\S+/.test(v), 'Valid email required'],
['appt-phone', v => v.trim() !== '', 'Required'],
['appt-spec', v => v !== '', 'Required'],
['appt-date', v => v !== '', 'Required'],
['appt-time', v => v !== '', 'Required'],
['appt-type', v => v !== '', 'Required'],
['appt-symp', v => v.trim() !== '', 'Required'],
];
checks.forEach(([id, test, msg]) => {
const el = document.getElementById(id);
const err = document.getElementById('err-' + id);
const val = el.value;
if (!test(val)) { el.classList.add('error'); err.classList.add('show'); err.textContent = msg; ok = false; }
else { el.classList.remove('error'); err.classList.remove('show'); }
});
if (!ok) return;
const email = document.getElementById('appt-email').value;
const fn = document.getElementById('appt-fn').value;
document.getElementById('appt-success-msg').innerHTML = `Our AI is matching you with the best available doctor. Confirmation will be sent to <strong>${esc(email)}</strong> within 30 minutes.`;
document.getElementById('appt-form-wrap').style.display = 'none';
document.getElementById('appt-success').classList.add('show');
window.scrollTo(0, 0);
}
function resetApptForm() {
document.getElementById('appt-form').reset();
document.getElementById('appt-form-wrap').style.display = 'block';
document.getElementById('appt-success').classList.remove('show');
}
// ── CONTACT FORM ──────────────────────────────────────────────────
function submitContact(e) {
e.preventDefault();
let ok = true;
[['ct-fn','Required'],['ct-email','Required'],['ct-sub','Required'],['ct-msg','Required']].forEach(([id, msg]) => {
const el = document.getElementById(id);
const err = document.getElementById('err-' + id);
if (!el.value.trim()) { el.classList.add('error'); err.classList.add('show'); err.textContent = msg; ok = false; }
else { el.classList.remove('error'); err.classList.remove('show'); }
});
const ok2 = document.getElementById('ct-ok').checked;
document.getElementById('err-ct-ok').classList.toggle('show', !ok2);
if (!ok || !ok2) return;
document.getElementById('contact-form').style.display = 'none';
document.getElementById('contact-success').classList.add('show');
}
function resetContactForm() {
document.getElementById('contact-form').reset();
document.getElementById('contact-form').style.display = 'block';
document.getElementById('contact-success').classList.remove('show');
}
// ── FAQ ───────────────────────────────────────────────────────────
function toggleFaq(el) {
const ans = el.nextElementSibling;
const arrow = el.querySelector('span');
ans.classList.toggle('open');
arrow.textContent = ans.classList.contains('open') ? '▲' : '▼';
}
// ── ADMIN SECTIONS ────────────────────────────────────────────────
function showAdminSection(sec, el) {
document.querySelectorAll('.admin-section').forEach(s => s.style.display = 'none');
document.getElementById('admin-sec-' + sec).style.display = 'block';
document.querySelectorAll('.admin-nav-item').forEach(i => i.classList.remove('active'));
el.classList.add('active');
const titles = {dash:'Dashboard',doctors:'Manage Doctors',specialties:'Manage Specialties',settings:'Clinic Settings'};
document.getElementById('admin-section-title').textContent = titles[sec] || sec;
}
// ── ADMIN DASHBOARD ───────────────────────────────────────────────
function renderAdminDash() {
document.getElementById('stat-total-docs').textContent = DOCTORS.length;
document.getElementById('stat-active-docs').textContent = DOCTORS.filter(d=>d.active).length;
document.getElementById('stat-specs').textContent = SPECS.length;
document.getElementById('stat-ai-docs').textContent = DOCTORS.filter(d=>d.ai).length;
const wrap = document.getElementById('dash-spec-breakdown');
wrap.innerHTML = SPECS.map(s => {
const cnt = DOCTORS.filter(d => d.spec === s.name).length;
const pct = cnt > 0 ? Math.min(cnt / Math.max(DOCTORS.length, 1) * 300, 100) : 0;
return `<div style="display:flex;align-items:center;gap:10px;margin-bottom:8px">
<span style="width:22px">${s.icon}</span>
<span style="flex:1;font-size:.88rem">${esc(s.name)}</span>
<span class="badge badge-blue">${cnt}</span>
<div style="width:110px;height:7px;background:var(--gray-bd);border-radius:4px;overflow:hidden">
<div style="width:${pct}%;height:100%;background:var(--blue);border-radius:4px"></div>
</div>
</div>`;
}).join('');
}
// ── DOCTORS TABLE ─────────────────────────────────────────────────
function renderDoctorsTable() {
const wrap = document.getElementById('doctors-table-wrap');
if (DOCTORS.length === 0) {
wrap.innerHTML = `<div class="empty-state"><div class="empty-icon">👨⚕️</div><p>No doctors yet. Add your first doctor!</p></div>`;
return;
}
wrap.innerHTML = `<table class="admin-table">
<thead><tr><th>Doctor</th><th>Specialty</th><th>Experience</th><th>Rating</th><th>AI</th><th>Status</th><th>Actions</th></tr></thead>
<tbody>${DOCTORS.map(d=>`
<tr>
<td><div style="display:flex;align-items:center;gap:9px">
<div class="table-avatar">${d.avatar}</div>
<div><div style="font-weight:600;font-size:.88rem">${esc(d.name)}</div><div style="font-size:.75rem;color:#94a3b8">${esc(d.uni)}</div></div>
</div></td>
<td><span class="badge badge-blue">${esc(d.spec)}</span></td>
<td style="font-size:.84rem">${esc(d.exp)}</td>
<td><span style="color:#f59e0b">${starsHTML(d.rating)}</span></td>
<td>${d.ai ? '<span class="badge badge-teal">✓ Yes</span>' : '<span class="badge badge-gray">No</span>'}</td>
<td><button class="badge ${d.active?'badge-green':'badge-red'}" style="border:none;cursor:pointer" onclick="toggleDoctorActive(${d.id})">${d.active?'● Active':'○ Hidden'}</button></td>
<td><div class="table-actions">
<button class="btn btn-ghost btn-sm" onclick="openDoctorModal(${d.id})">✏️ Edit</button>
<button class="btn btn-danger btn-sm" onclick="openDeleteModal('doctor',${d.id})">🗑</button>
</div></td>
</tr>`).join('')}
</tbody></table>`;
}
function toggleDoctorActive(id) {
DOCTORS = DOCTORS.map(d => d.id === id ? {...d, active: !d.active} : d);
saveAll(); renderDoctorsTable(); renderAdminDash();
showToast('Doctor status updated!');
}
// ── DOCTOR MODAL ──────────────────────────────────────────────────
let editingDoctorId = null;
function openDoctorModal(id) {
editingDoctorId = id || null;
const modal = document.getElementById('doctor-modal');
// Populate spec dropdown
document.getElementById('dm-spec').innerHTML = '<option value="">Select...</option>'
+ SPECS.map(s => `<option value="${esc(s.name)}">${esc(s.name)}</option>`).join('');
if (id) {
const d = DOCTORS.find(x => x.id === id);
document.getElementById('doctor-modal-title').textContent = '✏️ Edit Doctor';
document.getElementById('doctor-modal-save-btn').textContent = 'Save Changes';
document.getElementById('dm-id').value = d.id;
document.getElementById('dm-name').value = d.name;
document.getElementById('dm-spec').value = d.spec;
document.getElementById('dm-exp').value = d.exp;
document.getElementById('dm-uni').value = d.uni;
document.getElementById('dm-lang').value = d.lang;
document.getElementById('dm-rating').value = d.rating;
document.getElementById('dm-bio').value = d.bio || '';
document.getElementById('dm-ai').checked = d.ai;
document.getElementById('dm-active').checked = d.active;
document.getElementById('dm-avatar').value = d.avatar;
document.querySelectorAll('#avatar-picker .icon-pick-btn').forEach(b => {
b.classList.toggle('selected', b.dataset.val === d.avatar);
});
} else {
document.getElementById('doctor-modal-title').textContent = '➕ Add New Doctor';
document.getElementById('doctor-modal-save-btn').textContent = 'Add Doctor';
document.getElementById('dm-name').value = '';
document.getElementById('dm-spec').value = '';
document.getElementById('dm-exp').value = '';
document.getElementById('dm-uni').value = '';
document.getElementById('dm-lang').value = 'English';
document.getElementById('dm-rating').value = '5';
document.getElementById('dm-bio').value = '';
document.getElementById('dm-ai').checked = false;
document.getElementById('dm-active').checked = true;
document.getElementById('dm-avatar').value = '👨⚕️';
document.querySelectorAll('#avatar-picker .icon-pick-btn').forEach((b,i) => b.classList.toggle('selected', i===0));
}
// Clear errors
['dm-name','dm-spec','dm-exp','dm-uni'].forEach(id => {
document.getElementById(id).classList.remove('error');
document.getElementById('err-' + id).classList.remove('show');
});
modal.classList.add('open');
}
function closeDoctorModal() { document.getElementById('doctor-modal').classList.remove('open'); }
function pickAvatar(btn) {
document.querySelectorAll('#avatar-picker .icon-pick-btn').forEach(b => b.classList.remove('selected'));
btn.classList.add('selected');
document.getElementById('dm-avatar').value = btn.dataset.val;
}
function saveDoctor() {
let ok = true;
[['dm-name','Required'],['dm-spec','Required'],['dm-exp','Required'],['dm-uni','Required']].forEach(([id,msg]) => {
const el = document.getElementById(id);
const err = document.getElementById('err-' + id);
if (!el.value.trim()) { el.classList.add('error'); err.classList.add('show'); err.textContent = msg; ok = false; }
else { el.classList.remove('error'); err.classList.remove('show'); }
});
if (!ok) return;
const doc = {
id: editingDoctorId || Date.now(),
name: document.getElementById('dm-name').value.trim(),
spec: document.getElementById('dm-spec').value,
exp: document.getElementById('dm-exp').value.trim(),
uni: document.getElementById('dm-uni').value.trim(),
lang: document.getElementById('dm-lang').value.trim() || 'English',
rating: parseInt(document.getElementById('dm-rating').value),
bio: document.getElementById('dm-bio').value.trim(),
ai: document.getElementById('dm-ai').checked,
active: document.getElementById('dm-active').checked,
avatar: document.getElementById('dm-avatar').value,
};
if (editingDoctorId) {
DOCTORS = DOCTORS.map(d => d.id === editingDoctorId ? doc : d);
showToast('Doctor updated successfully!');
} else {
DOCTORS.push(doc);
showToast('Doctor added successfully!');
}
saveAll();
closeDoctorModal();
renderDoctorsTable();
renderAdminDash();
}
// ── SPECIALTIES GRID ──────────────────────────────────────────────
function renderSpecsGrid() {
const grid = document.getElementById('specs-grid');
grid.innerHTML = SPECS.map(s => `
<div class="admin-card" style="display:flex;flex-direction:column;gap:10px">
<div style="display:flex;align-items:center;gap:10px">
<div style="width:44px;height:44px;border-radius:11px;background:var(--blue-lt);display:flex;align-items:center;justify-content:center;font-size:1.4rem;flex-shrink:0">${s.icon}</div>
<div style="flex:1;min-width:0">
<div style="font-weight:700;font-size:.9rem;margin-bottom:2px">${esc(s.name)}</div>
<div style="font-size:.77rem;color:var(--gray);overflow:hidden;text-overflow:ellipsis;white-space:nowrap">${esc(s.desc||'No description')}</div>
</div>
</div>
<div style="display:flex;gap:7px">
<button class="btn btn-ghost btn-sm" style="flex:1;justify-content:center" onclick="openSpecModal(${s.id})">✏️ Edit</button>
<button class="btn btn-danger btn-sm" onclick="openDeleteModal('spec',${s.id})">🗑</button>
</div>
</div>`).join('')
+ `<div class="admin-card" style="display:flex;align-items:center;justify-content:center;min-height:96px;border:2px dashed var(--gray-bd);background:transparent;cursor:pointer;flex-direction:column;gap:6px" onclick="openSpecModal()">
<span style="font-size:1.7rem;color:#94a3b8">➕</span>
<span style="font-size:.82rem;color:#94a3b8;font-weight:600">Add Specialty</span>
</div>`;
}
// ── SPECIALTY MODAL ───────────────────────────────────────────────
let editingSpecId = null;
function openSpecModal(id) {
editingSpecId = id || null;
document.getElementById('sm-icon-custom').value = '';
if (id) {
const s = SPECS.find(x => x.id === id);
document.getElementById('spec-modal-title').textContent = '✏️ Edit Specialty';
document.getElementById('spec-modal-save-btn').textContent = 'Save Changes';
document.getElementById('sm-id').value = s.id;
document.getElementById('sm-name').value = s.name;
document.getElementById('sm-desc').value = s.desc || '';
document.getElementById('sm-icon').value = s.icon;
document.querySelectorAll('#spec-icon-picker .icon-pick-btn').forEach(b => {
b.classList.toggle('selected', b.dataset.val === s.icon);
});
} else {
document.getElementById('spec-modal-title').textContent = '➕ Add Specialty';
document.getElementById('spec-modal-save-btn').textContent = 'Add Specialty';
document.getElementById('sm-name').value = '';
document.getElementById('sm-desc').value = '';
document.getElementById('sm-icon').value = '🩺';
document.querySelectorAll('#spec-icon-picker .icon-pick-btn').forEach((b,i) => b.classList.toggle('selected', i===0));
}
document.getElementById('sm-name').classList.remove('error');
document.getElementById('err-sm-name').classList.remove('show');
document.getElementById('spec-modal').classList.add('open');
}
function closeSpecModal() { document.getElementById('spec-modal').classList.remove('open'); }
function pickSpecIcon(btn) {
document.querySelectorAll('#spec-icon-picker .icon-pick-btn').forEach(b => b.classList.remove('selected'));
btn.classList.add('selected');
document.getElementById('sm-icon').value = btn.dataset.val;
document.getElementById('sm-icon-custom').value = '';
}
function saveSpec() {
const nameEl = document.getElementById('sm-name');
if (!nameEl.value.trim()) {
nameEl.classList.add('error');
document.getElementById('err-sm-name').classList.add('show');
return;
}
nameEl.classList.remove('error');
document.getElementById('err-sm-name').classList.remove('show');
const spec = {
id: editingSpecId || Date.now(),
name: nameEl.value.trim(),
icon: document.getElementById('sm-icon').value || '🩺',
desc: document.getElementById('sm-desc').value.trim(),
};
if (editingSpecId) {
SPECS = SPECS.map(s => s.id === editingSpecId ? spec : s);
showToast('Specialty updated!');
} else {
SPECS.push(spec);
showToast('Specialty added!');
}
saveAll();
closeSpecModal();
renderSpecsGrid();
renderAdminDash();
}
// ── DELETE MODAL ──────────────────────────────────────────────────
let pendingDelete = null;
function openDeleteModal(type, id) {
pendingDelete = {type, id};
let name = '';
if (type === 'doctor') name = (DOCTORS.find(d => d.id === id) || {}).name || '';
if (type === 'spec') name = (SPECS.find(s => s.id === id) || {}).name || '';
document.getElementById('delete-confirm-msg').innerHTML = `Are you sure you want to remove <strong>${esc(name)}</strong>? This cannot be undone.`;
document.getElementById('delete-modal').classList.add('open');
}
function closeDeleteModal() { document.getElementById('delete-modal').classList.remove('open'); pendingDelete = null; }
function confirmDelete() {
if (!pendingDelete) return;
if (pendingDelete.type === 'doctor') {
DOCTORS = DOCTORS.filter(d => d.id !== pendingDelete.id);
saveAll(); renderDoctorsTable(); renderAdminDash(); showToast('Doctor removed.', 'error');
} else if (pendingDelete.type === 'spec') {
SPECS = SPECS.filter(s => s.id !== pendingDelete.id);
saveAll(); renderSpecsGrid(); renderAdminDash(); showToast('Specialty removed.', 'error');
}
closeDeleteModal();
}
// ── SETTINGS ──────────────────────────────────────────────────────
function loadSettingsForm() {
document.getElementById('s-name').value = CLINIC.name;
document.getElementById('s-phone').value = CLINIC.phone;
document.getElementById('s-emergency').value = CLINIC.emergency;
document.getElementById('s-email').value = CLINIC.email;
document.getElementById('s-address').value = CLINIC.address;
document.getElementById('s-hours').value = CLINIC.hours;
document.getElementById('s-fb').value = CLINIC.fb;
document.getElementById('s-tw').value = CLINIC.tw;
document.getElementById('s-li').value = CLINIC.li;
document.getElementById('s-ig').value = CLINIC.ig;
}
function saveSettings(e) {
e.preventDefault();
CLINIC = {
name: document.getElementById('s-name').value.trim() || CLINIC.name,
phone: document.getElementById('s-phone').value.trim(),
emergency: document.getElementById('s-emergency').value.trim(),
email: document.getElementById('s-email').value.trim(),
address: document.getElementById('s-address').value.trim(),
hours: document.getElementById('s-hours').value.trim(),
fb: document.getElementById('s-fb').value.trim() || '#',
tw: document.getElementById('s-tw').value.trim() || '#',
li: document.getElementById('s-li').value.trim() || '#',
ig: document.getElementById('s-ig').value.trim() || '#',
};
saveAll();
updatePublicClinicInfo();
showToast('Clinic settings saved!');
}
function updatePublicClinicInfo() {
const safe = (id, val) => { const el = document.getElementById(id); if (el) el.textContent = val; };
safe('clinic-address-display', CLINIC.address);
safe('clinic-phone-display', CLINIC.phone);
safe('clinic-email-display', CLINIC.email);
safe('clinic-hours-display', CLINIC.hours);
safe('clinic-emergency-display', CLINIC.emergency);
safe('footer-clinic-name', CLINIC.name);
const fe = document.getElementById('footer-email');
if (fe) { fe.href = 'mailto:' + CLINIC.email; fe.textContent = '📧 ' + CLINIC.email; }
const fp = document.getElementById('footer-phone');
if (fp) { fp.href = 'tel:' + CLINIC.phone; fp.textContent = '📞 ' + CLINIC.phone; }
const socials = {fb:'footer-fb',tw:'footer-tw',li:'footer-li',ig:'footer-ig'};
Object.entries(socials).forEach(([key,id]) => { const el = document.getElementById(id); if(el) el.href = CLINIC[key] || '#'; });
}
// ── MODAL CLOSE ON OVERLAY CLICK ─────────────────────────────────
['doctor-modal','spec-modal','delete-modal'].forEach(id => {
document.getElementById(id).addEventListener('click', function(e) {
if (e.target === this) {
this.classList.remove('open');
if (id === 'delete-modal') pendingDelete = null;
}
});
});
// ── ESCAPE KEY CLOSES MODALS ─────────────────────────────────────
document.addEventListener('keydown', e => {
if (e.key === 'Escape') {
document.querySelectorAll('.modal-overlay.open').forEach(m => m.classList.remove('open'));
pendingDelete = null;
}
});
// ── HELPER: HTML ESCAPE ───────────────────────────────────────────
function esc(str) {
if (!str) return '';
return String(str).replace(/&/g,'&').replace(/</g,'<').replace(/>/g,'>').replace(/"/g,'"').replace(/'/g,''');
}
// ── INIT ──────────────────────────────────────────────────────────
(function init() {
updatePublicClinicInfo();
renderHome();
populateApptDropdowns();
})();
</script>
</body>
</html>
rm /home/daytona/workspace/aidoctorsclinic-v2/index.html && echo "deleted"