Cosmick-Portfolio / index.html
CosmickVisions's picture
Update index.html
9be65b7 verified
Raw
History Blame Contribute Delete
25.3 kB
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Calvin Allen Crawford Portfolio</title>
<style>
:root {
--primary-color: #4a2982;
--secondary-color: #6a3cb5;
--accent-color: #8a56e5;
--text-color: #333;
--light-bg: #f8f9fa;
--card-shadow: 0 8px 16px rgba(0,0,0,0.1);
}
* {
margin: 0;
padding: 0;
box-sizing: border-box;
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
}
/* Updated background styling */
body::before {
content: '';
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: url('/image/bg-image.jpeg') center/cover no-repeat fixed;
z-index: -2;
}
body::after {
content: '';
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: linear-gradient(135deg,
rgba(245, 247, 250, 0.85) 0%,
rgba(228, 232, 240, 0.85) 100%);
z-index: -1;
}
body {
color: var(--text-color);
line-height: 1.6;
min-height: 100vh;
position: relative;
}
.container {
max-width: 1200px;
margin: 0 auto;
padding: 2rem;
}
header {
text-align: center;
margin-bottom: 3rem;
padding: 2rem 0;
background: linear-gradient(135deg, var(--primary-color), var(--secondary-color));
color: white;
border-radius: 15px;
box-shadow: var(--card-shadow);
position: relative;
}
h1 {
font-size: 2.5rem;
margin-bottom: 1rem;
text-transform: uppercase;
letter-spacing: 2px;
}
.header-subtitle {
font-size: 1.2rem;
opacity: 0.9;
}
.profile-icon {
width: 100px;
height: 100px;
border-radius: 50%;
margin-bottom: 1rem;
border: 3px solid white;
}
.portfolio-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
gap: 2rem;
margin-top: 2rem;
}
.space-card {
background: white;
border-radius: 15px;
overflow: hidden;
transition: transform 0.3s ease, box-shadow 0.3s ease;
box-shadow: var(--card-shadow);
position: relative;
}
.space-card:hover {
transform: translateY(-10px);
box-shadow: 0 15px 30px rgba(0,0,0,0.2);
}
.space-preview {
position: relative;
height: 200px;
overflow: hidden;
background-color: #eee;
}
.space-preview img {
width: 100%;
height: 100%;
object-fit: cover;
transition: transform 0.5s ease;
}
.space-card:hover .space-preview img {
transform: scale(1.05);
}
.space-overlay {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: rgba(0,0,0,0.3);
display: flex;
align-items: center;
justify-content: center;
opacity: 0;
transition: opacity 0.3s ease;
}
.space-card:hover .space-overlay {
opacity: 1;
}
.visit-btn {
background: var(--accent-color);
color: white;
border: none;
padding: 0.75rem 1.5rem;
border-radius: 50px;
font-weight: bold;
cursor: pointer;
transition: background 0.3s ease;
text-decoration: none;
}
.visit-btn:hover {
background: var(--primary-color);
}
.space-info {
padding: 1.5rem;
}
.space-title {
font-size: 1.5rem;
margin-bottom: 0.5rem;
color: var(--primary-color);
}
.space-description {
color: #666;
font-size: 0.95rem;
margin-bottom: 1rem;
}
.space-tags {
display: flex;
flex-wrap: wrap;
gap: 0.5rem;
}
.tag {
background: var(--light-bg);
color: var(--primary-color);
font-size: 0.8rem;
padding: 0.3rem 0.8rem;
border-radius: 50px;
}
.expanded-view {
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: rgba(0,0,0,0.9);
display: flex;
align-items: center;
justify-content: center;
z-index: 1000;
opacity: 0;
pointer-events: none;
transition: opacity 0.3s ease;
}
.expanded-view.active {
opacity: 1;
pointer-events: all;
}
.expanded-content {
background: white;
width: 90%;
max-width: 1000px;
height: 80%;
border-radius: 15px;
position: relative;
overflow: hidden;
}
.close-btn {
position: absolute;
top: 20px;
right: 20px;
background: var(--primary-color);
color: white;
width: 40px;
height: 40px;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
font-size: 1.5rem;
cursor: pointer;
z-index: 10;
}
.expanded-iframe {
width: 100%;
height: 100%;
border: none;
}
.filter-controls {
display: flex;
justify-content: center;
margin-bottom: 2rem;
flex-wrap: wrap;
gap: 1rem;
}
.filter-btn {
background: white;
color: var(--primary-color);
border: 2px solid var(--primary-color);
padding: 0.5rem 1.5rem;
border-radius: 50px;
cursor: pointer;
transition: all 0.3s ease;
font-weight: bold;
}
.filter-btn.active, .filter-btn:hover {
background: var(--primary-color);
color: white;
}
footer {
text-align: center;
padding: 2rem 0;
color: white;
font-size: 0.9rem;
margin-top: 3rem;
border-top: 1px solid #eee;
}
@media (max-width: 768px) {
.portfolio-grid {
grid-template-columns: 1fr;
}
h1 {
font-size: 2rem;
}
.filter-controls {
flex-direction: column;
align-items: center;
}
}
.animate-in {
animation: fadeIn 0.8s ease forwards;
}
@keyframes fadeIn {
from {
opacity: 0;
transform: translateY(20px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
/* Skills and Education Styling */
.skills-education {
margin-bottom: 3rem;
display: grid;
grid-template-columns: 1fr 1fr;
gap: 2rem;
}
.section-card {
background: white;
border-radius: 15px;
padding: 2rem;
box-shadow: var(--card-shadow);
}
.section-title {
color: var(--primary-color);
margin-bottom: 1.5rem;
padding-bottom: 0.5rem;
border-bottom: 2px solid var(--accent-color);
}
.skills-container {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
gap: 1.5rem;
}
.skill-category h3 {
color: var(--secondary-color);
margin-bottom: 0.8rem;
}
.skill-category ul {
list-style-type: none;
}
.skill-category li {
padding: 0.3rem 0;
position: relative;
padding-left: 1.2rem;
}
.skill-category li:before {
content: '▹';
position: absolute;
left: 0;
color: var(--accent-color);
}
.education-item {
margin-bottom: 1.5rem;
padding-bottom: 1.5rem;
border-bottom: 1px solid #eee;
}
.education-item:last-child {
border-bottom: none;
padding-bottom: 0;
margin-bottom: 0;
}
.edu-details {
margin-bottom: 0.5rem;
}
.edu-details h3 {
color: var(--secondary-color);
margin-bottom: 0.3rem;
}
.institution {
font-weight: 600;
}
.period {
color: #666;
font-size: 0.9rem;
}
.edu-description {
font-size: 0.95rem;
color: #555;
}
.certifications {
display: flex;
flex-wrap: wrap;
gap: 0.5rem;
}
.cert-badge {
background: var(--light-bg);
color: var(--primary-color);
font-size: 0.85rem;
padding: 0.4rem 0.9rem;
border-radius: 50px;
border: 1px solid var(--accent-color);
}
/* Fix for the visit buttons */
.visit-btn {
display: inline-block;
text-align: center;
background: var(--accent-color);
color: white;
border: none;
padding: 0.75rem 1.5rem;
border-radius: 50px;
font-weight: bold;
cursor: pointer;
transition: background 0.3s ease, transform 0.2s ease;
text-decoration: none;
z-index: 10;
}
.visit-btn:hover {
background: var(--primary-color);
transform: scale(1.05);
}
.visit-btn:active {
transform: scale(0.98);
}
@media (max-width: 768px) {
.skills-education {
grid-template-columns: 1fr;
}
}
</style>
</head>
<body>
<div class="container">
<header class="animate-in">
<img src="/image/profile_icon.jpeg" alt="Profile" class="profile-icon">
<h1>Calvin Allen Crawford</h1>
<p class="header-subtitle">Generative AI Engineer Portfolio</p>
</header>
<!-- Skills and Education Section -->
<section class="skills-education animate-in">
<div class="section-card">
<h2 class="section-title">Skills & Expertise</h2>
<div class="skills-container">
<div class="skill-category">
<h3>Libraries & Frameworks</h3>
<ul>
<li>TensorFlow, PyTorch</li>
<li>LangChain, HuggingFace, OpenAI</li>
<li>Pandas, NumPy, Scikit-learn</li>
<li>Streamlit, Gradio, Flask</li>
<li>Plotly, Seaborn</li>
</ul>
</div>
<div class="skill-category">
<h3>Developer Tools</h3>
<ul>
<li>Git, GitHub, VS Code</li>
<li>Google Cloud Platform</li>
<li>Microsoft Azure, IBM Watson</li>
<li>LangFlow, DataStax, Astra</li>
<li>Figma, Cursor</li>
</ul>
</div>
<div class="skill-category">
<h3>Languages & Technologies</h3>
<ul>
<li>Python (Advanced)</li>
<li>HTML, CSS, JavaScript</li>
<li>RAG, Vector Databases (FAISS, Weaviate)</li>
<li>Final Cut Pro, Blender</li>
<li>Adobe After Effects</li>
</ul>
</div>
</div>
</div>
<div class="section-card">
<h2 class="section-title">Education & Experience</h2>
<div class="education-item">
<div class="edu-details">
<h3>Frontend Web Development</h3>
<p class="institution">Udacity NanoDegree</p>
<p class="period">Jul 2024-Oct 2024</p>
</div>
</div>
<div class="education-item">
<div class="edu-details">
<h3>Data Science and Machine Learning</h3>
<p class="institution">MIT Schwarzman College of Computing</p>
<p class="period">Jan 2024-May 2024</p>
</div>
<p class="edu-description">Professional Certificate in Making Data-Driven Decisions</p>
</div>
<div class="education-item">
<div class="edu-details">
<h3>Professional Experience</h3>
</div>
<div class="certifications">
<span class="cert-badge">Generative AI Engineer</span>
<span class="cert-badge">Data Enrollment Specialist</span>
<span class="cert-badge">Multimedia Producer</span>
<span class="cert-badge">ProTech Support Specialist</span>
</div>
</div>
</div>
</section>
<div class="filter-controls animate-in">
<button class="filter-btn active" data-filter="all">All Spaces</button>
<button class="filter-btn" data-filter="data">Data Vision</button>
<button class="filter-btn" data-filter="neural">Neural Vision</button>
<button class="filter-btn" data-filter="domain">Domain Vision</button>
</div>
<div class="portfolio-grid">
<!-- Data Vision -->
<div class="space-card animate-in" data-category="data">
<div class="space-preview">
<img src="/image/data-vision.jpeg" alt="Data Vision Preview">
<div class="space-overlay">
<a href="#" class="visit-btn" data-space="https://cosmickvisions-data-vision.hf.space">Visit Space</a>
</div>
</div>
<div class="space-info">
<h3 class="space-title">Data Vision</h3>
<p class="space-description">Advanced data visualization and analytics platform powered by Python</p>
<div class="space-tags">
<span class="tag">Data</span>
<span class="tag">Analytics</span>
<span class="tag">Visualization</span>
</div>
</div>
</div>
<!-- Neural Vision -->
<div class="space-card animate-in" data-category="neural">
<div class="space-preview">
<img src="/image/neural-vision.jpeg" alt="Neural Vision Preview">
<div class="space-overlay">
<a href="#" class="visit-btn" data-space="https://cosmickvisions-neural-vision.hf.space">Visit Space</a>
</div>
</div>
<div class="space-info">
<h3 class="space-title">Neural Vision</h3>
<p class="space-description">Neural network visualization tools for understanding and interpreting AI models.</p>
<div class="space-tags">
<span class="tag">Neural Networks</span>
<span class="tag">AI</span>
<span class="tag">Interpretability</span>
</div>
</div>
</div>
<!-- Fin Vision -->
<div class="space-card animate-in" data-category="domain">
<div class="space-preview">
<img src="/image/fin-vision.jpeg" alt="Fin Vision Preview" onerror="this.onerror=null; this.className='placeholder-image fin-placeholder'; this.src='';">
<div class="space-overlay">
<a href="#" class="visit-btn" data-space="https://cosmickvisions-fin-vision.hf.space">Visit Space</a>
</div>
</div>
<div class="space-info">
<h3 class="space-title">Fin Vision</h3>
<p class="space-description">Financial analysis and forecasting tool with advanced visualization capabilities</p>
<div class="space-tags">
<span class="tag">Finance</span>
<span class="tag">Analytics</span>
<span class="tag">Forecasting</span>
</div>
</div>
</div>
<!-- Tech Vision -->
<div class="space-card animate-in" data-category="domain">
<div class="space-preview">
<img src="/image/tech-vision.jpeg" alt="Tech Vision Preview" onerror="this.onerror=null; this.className='placeholder-image tech-placeholder'; this.src='';">
<div class="space-overlay">
<a href="#" class="visit-btn" data-space="https://cosmickvisions-tech-vision.hf.space">Visit Space</a>
</div>
</div>
<div class="space-info">
<h3 class="space-title">Tech Vision</h3>
<p class="space-description">Technology trend analysis and innovation forecasting platform</p>
<div class="space-tags">
<span class="tag">Technology</span>
<span class="tag">Innovation</span>
<span class="tag">Trends</span>
</div>
</div>
</div>
<!-- Legal Vision -->
<div class="space-card animate-in" data-category="domain">
<div class="space-preview">
<img src="/image/legal-vision.jpeg" alt="Legal Vision Preview" onerror="this.onerror=null; this.className='placeholder-image legal-placeholder'; this.src='';">
<div class="space-overlay">
<a href="#" class="visit-btn" data-space="https://cosmickvisions-legal-visions.hf.space">Visit Space</a>
</div>
</div>
<div class="space-info">
<h3 class="space-title">Legal Vision</h3>
<p class="space-description">Legal document analysis and case research assistant with AI-powered insights</p>
<div class="space-tags">
<span class="tag">Legal</span>
<span class="tag">Document Analysis</span>
<span class="tag">Research</span>
</div>
</div>
</div>
<!-- Scholar Vision -->
<div class="space-card animate-in" data-category="domain">
<div class="space-preview">
<img src="/image/scholar-vision.jpeg" alt="Scholar Vision Preview" onerror="this.onerror=null; this.className='placeholder-image scholar-placeholder'; this.src='';">
<div class="space-overlay">
<a href="#" class="visit-btn" data-space="https://cosmickvisions-scholar-vision.hf.space">Visit Space</a>
</div>
</div>
<div class="space-info">
<h3 class="space-title">Scholar Vision</h3>
<p class="space-description">Academic research assistant and paper analysis tool with citation management</p>
<div class="space-tags">
<span class="tag">Academic</span>
<span class="tag">Research</span>
<span class="tag">Citations</span>
</div>
</div>
</div>
</div>
</div>
<div class="expanded-view">
<div class="expanded-content">
<div class="close-btn">×</div>
<iframe class="expanded-iframe" src="" frameborder="0"></iframe>
</div>
</div>
<script>
// Animation on scroll
document.addEventListener('DOMContentLoaded', function() {
// Add animation delay for staggered appearance
const animatedElements = document.querySelectorAll('.animate-in');
animatedElements.forEach((el, index) => {
el.style.animationDelay = `${index * 0.15}s`;
});
// Filtering functionality
const filterButtons = document.querySelectorAll('.filter-btn');
const spaceCards = document.querySelectorAll('.space-card');
filterButtons.forEach(button => {
button.addEventListener('click', () => {
filterButtons.forEach(btn => btn.classList.remove('active'));
button.classList.add('active');
const filterValue = button.getAttribute('data-filter');
spaceCards.forEach(card => {
if (filterValue === 'all' || card.getAttribute('data-category') === filterValue) {
card.style.display = 'block';
setTimeout(() => {
card.classList.add('animate-in');
}, 10);
} else {
card.classList.remove('animate-in');
setTimeout(() => {
card.style.display = 'none';
}, 300);
}
});
});
});
// Expanded view functionality
const visitButtons = document.querySelectorAll('.visit-btn');
const expandedView = document.querySelector('.expanded-view');
const expandedIframe = document.querySelector('.expanded-iframe');
const closeBtn = document.querySelector('.close-btn');
visitButtons.forEach(button => {
button.addEventListener('click', (e) => {
e.preventDefault();
const spaceUrl = button.getAttribute('data-space');
expandedIframe.src = spaceUrl;
expandedView.classList.add('active');
document.body.style.overflow = 'hidden';
});
});
closeBtn.addEventListener('click', () => {
expandedView.classList.remove('active');
setTimeout(() => {
expandedIframe.src = '';
}, 300);
document.body.style.overflow = 'auto';
});
expandedView.addEventListener('click', (e) => {
if (e.target === expandedView) {
closeBtn.click();
}
});
document.addEventListener('keydown', (e) => {
if (e.key === 'Escape' && expandedView.classList.contains('active')) {
closeBtn.click();
}
});
});
</script>
</body>
</html>