4-19
This commit is contained in:
parent
45ef5a1a64
commit
8efa9abcc8
4 changed files with 461 additions and 77 deletions
90
index.html
90
index.html
|
@ -1,5 +1,6 @@
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="en">
|
<html lang="en">
|
||||||
|
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
@ -23,9 +24,17 @@
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
<ul class="nav-links" id="primary-menu">
|
<ul class="nav-links" id="primary-menu">
|
||||||
<li><a href="https://github.com/charlottecroce" target="_blank" rel="noopener noreferrer">GitHub <i data-lucide="external-link" class="icon-small" aria-hidden="true"></i><span class="visually-hidden">(opens in new tab)</span></a></li>
|
<li><a href="/">Home</a></li>
|
||||||
<li><a href="https://codeberg.org/charlottecroce" target="_blank" rel="noopener noreferrer">Codeberg <i data-lucide="external-link" class="icon-small" aria-hidden="true"></i><span class="visually-hidden">(opens in new tab)</span></a></li>
|
<li><a href="/resume" aria-current="page">Resume</a></li>
|
||||||
<li><a href="https://linkedin.com/in/charlottecroce" target="_blank" rel="noopener noreferrer">LinkedIn <i data-lucide="external-link" class="icon-small" aria-hidden="true"></i><span class="visually-hidden">(opens in new tab)</span></a></li>
|
<li><a href="https://github.com/charlottecroce" target="_blank" rel="noopener noreferrer">GitHub <i
|
||||||
|
data-lucide="external-link" class="icon-small" aria-hidden="true"></i><span
|
||||||
|
class="visually-hidden">(opens in new tab)</span></a></li>
|
||||||
|
<li><a href="https://codeberg.org/charlottecroce" target="_blank" rel="noopener noreferrer">Codeberg <i
|
||||||
|
data-lucide="external-link" class="icon-small" aria-hidden="true"></i><span
|
||||||
|
class="visually-hidden">(opens in new tab)</span></a></li>
|
||||||
|
<li><a href="https://linkedin.com/in/charlottecroce" target="_blank" rel="noopener noreferrer">LinkedIn <i
|
||||||
|
data-lucide="external-link" class="icon-small" aria-hidden="true"></i><span
|
||||||
|
class="visually-hidden">(opens in new tab)</span></a></li>
|
||||||
<li>
|
<li>
|
||||||
<button class="theme-toggle" aria-label="Toggle dark mode">
|
<button class="theme-toggle" aria-label="Toggle dark mode">
|
||||||
<i data-lucide="moon" id="moon-icon" aria-hidden="true"></i>
|
<i data-lucide="moon" id="moon-icon" aria-hidden="true"></i>
|
||||||
|
@ -42,23 +51,30 @@
|
||||||
<section class="intro">
|
<section class="intro">
|
||||||
<h1>Hi! I'm Charlotte</h1>
|
<h1>Hi! I'm Charlotte</h1>
|
||||||
<h2>About Me</h2>
|
<h2>About Me</h2>
|
||||||
<p>I'm a cybersecurity student from the Northeast USA. I do security engineering at the Leahy Center in Burlington, VT.</p>
|
<p>I'm a cybersecurity student from the Northeast USA. I do security engineering at the Leahy Center in
|
||||||
<p>You can find most of my personal stuff on my <a href="https://codeberg.org/charlottecroce" target="_blank" rel="noopener noreferrer">Codeberg<i data-lucide="external-link" class="icon-small" aria-hidden="true"></i><span class="visually-hidden">(opens in new tab)</span></a> account.</p>
|
Burlington, VT.</p>
|
||||||
|
<p>You can find most of my personal stuff on my <a href="https://codeberg.org/charlottecroce" target="_blank"
|
||||||
|
rel="noopener noreferrer">Codeberg<i data-lucide="external-link" class="icon-small"
|
||||||
|
aria-hidden="true"></i><span class="visually-hidden">(opens in new tab)</span></a> account.</p>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section class="projects">
|
<section class="projects">
|
||||||
<h2>Projects</h2>
|
<h2>My Projects</h2>
|
||||||
<div class="project-grid">
|
<div class="project-grid">
|
||||||
<article class="project">
|
<article class="project">
|
||||||
<h3>Champlain Tech Journals</h3>
|
<h3>Champlain Tech Journals</h3>
|
||||||
<p>Notes, code, and lab write-ups from my Champlain College courses</p>
|
<p>Notes, code, and lab write-ups from my Champlain College courses</p>
|
||||||
<a href="https://codeberg.org/charlottecroce/ChamplainTechJournals" target="_blank" rel="noopener noreferrer">Source Code<i data-lucide="external-link" class="icon-small" aria-hidden="true"></i><span class="visually-hidden">(opens in new tab)</span></a>
|
<a href="https://codeberg.org/charlottecroce/ChamplainTechJournals" target="_blank"
|
||||||
|
rel="noopener noreferrer">Source Code<i data-lucide="external-link" class="icon-small"
|
||||||
|
aria-hidden="true"></i><span class="visually-hidden">(opens in new tab)</span></a>
|
||||||
</article>
|
</article>
|
||||||
|
|
||||||
<article class="project">
|
<article class="project">
|
||||||
<h3>Nøkken Health</h3>
|
<h3>Nøkken Health</h3>
|
||||||
<p>A Flutter app to track and analyze health data</p>
|
<p>A Flutter app to track and analyze health data</p>
|
||||||
<a href="https://codeberg.org/charlottecroce/nokken" target="_blank" rel="noopener noreferrer">Source Code<i data-lucide="external-link" class="icon-small" aria-hidden="true"></i><span class="visually-hidden">(opens in new tab)</span></a>
|
<a href="https://codeberg.org/charlottecroce/nokken" target="_blank" rel="noopener noreferrer">Source Code<i
|
||||||
|
data-lucide="external-link" class="icon-small" aria-hidden="true"></i><span
|
||||||
|
class="visually-hidden">(opens in new tab)</span></a>
|
||||||
</article>
|
</article>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
@ -75,60 +91,14 @@
|
||||||
<li><a href="https://bookwyrm.social/user/lottie" target="_blank" rel="noopener noreferrer">BookWyrm</a></li>
|
<li><a href="https://bookwyrm.social/user/lottie" target="_blank" rel="noopener noreferrer">BookWyrm</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
<p>©<span id="current-year"></span> Charlotte Croce</p>
|
<p>©<span id="current-year"></span> Charlotte Croce</p>
|
||||||
<p class="theme-note">If you like the colors of this website, check out my <a href="https://marketplace.visualstudio.com/items?itemName=charlotte-dev.fruitbasket-theme" target="_blank" rel="noopener noreferrer">VS Code Theme<i data-lucide="external-link" class="icon-small" aria-hidden="true"></i><span class="visually-hidden">(opens in new tab)</span></a></p>
|
<p class="theme-note">If you like the colors of this website, check out my <a
|
||||||
|
href="https://marketplace.visualstudio.com/items?itemName=charlotte-dev.fruitbasket-theme" target="_blank"
|
||||||
|
rel="noopener noreferrer">VS Code Theme<i data-lucide="external-link" class="icon-small"
|
||||||
|
aria-hidden="true"></i><span class="visually-hidden">(opens in new tab)</span></a></p>
|
||||||
</div>
|
</div>
|
||||||
</footer>
|
</footer>
|
||||||
|
|
||||||
<script>
|
<script src="script.js"></script>
|
||||||
// Initialize Lucide icons
|
|
||||||
lucide.createIcons();
|
|
||||||
|
|
||||||
// Update copyright year
|
|
||||||
document.getElementById('current-year').textContent = new Date().getFullYear();
|
|
||||||
|
|
||||||
// Theme toggle
|
|
||||||
const themeToggle = document.querySelector('.theme-toggle');
|
|
||||||
const moonIcon = document.getElementById('moon-icon');
|
|
||||||
const sunIcon = document.getElementById('sun-icon');
|
|
||||||
|
|
||||||
// Check for saved preference
|
|
||||||
if (localStorage.getItem('darkMode') === 'true') {
|
|
||||||
document.body.classList.add('dark-mode');
|
|
||||||
moonIcon.style.display = 'none';
|
|
||||||
sunIcon.style.display = 'block';
|
|
||||||
}
|
|
||||||
|
|
||||||
themeToggle.addEventListener('click', () => {
|
|
||||||
document.body.classList.toggle('dark-mode');
|
|
||||||
const isDark = document.body.classList.contains('dark-mode');
|
|
||||||
moonIcon.style.display = isDark ? 'none' : 'block';
|
|
||||||
sunIcon.style.display = isDark ? 'block' : 'none';
|
|
||||||
localStorage.setItem('darkMode', isDark ? 'true' : 'false');
|
|
||||||
});
|
|
||||||
|
|
||||||
// Mobile menu
|
|
||||||
const menuToggle = document.querySelector('.menu-toggle');
|
|
||||||
const navLinks = document.querySelector('.nav-links');
|
|
||||||
const menuIcon = document.getElementById('menu-icon');
|
|
||||||
const closeIcon = document.getElementById('close-icon');
|
|
||||||
|
|
||||||
menuToggle.addEventListener('click', () => {
|
|
||||||
const isExpanded = menuToggle.getAttribute('aria-expanded') === 'true';
|
|
||||||
menuToggle.setAttribute('aria-expanded', !isExpanded);
|
|
||||||
navLinks.classList.toggle('menu-open');
|
|
||||||
menuIcon.style.display = isExpanded ? 'block' : 'none';
|
|
||||||
closeIcon.style.display = isExpanded ? 'none' : 'block';
|
|
||||||
});
|
|
||||||
|
|
||||||
// Close menu when clicking outside
|
|
||||||
document.addEventListener('click', (event) => {
|
|
||||||
if (!event.target.closest('.menu-toggle') && !event.target.closest('.nav-links') && navLinks.classList.contains('menu-open')) {
|
|
||||||
navLinks.classList.remove('menu-open');
|
|
||||||
menuToggle.setAttribute('aria-expanded', 'false');
|
|
||||||
menuIcon.style.display = 'block';
|
|
||||||
closeIcon.style.display = 'none';
|
|
||||||
}
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
</html>
|
</html>
|
179
resume/index.html
Normal file
179
resume/index.html
Normal file
|
@ -0,0 +1,179 @@
|
||||||
|
<!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="Charlotte Croce - Resume">
|
||||||
|
<title>Resume - Charlotte Croce</title>
|
||||||
|
<link rel="stylesheet" href="../style.css">
|
||||||
|
<script src="https://unpkg.com/lucide@latest/dist/umd/lucide.min.js"></script>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<a href="#main-content" class="skip-link">Skip to main content</a>
|
||||||
|
|
||||||
|
<header>
|
||||||
|
<nav aria-label="Main navigation">
|
||||||
|
<div class="container">
|
||||||
|
<a href="/" class="logo">./charlotte.sh</a>
|
||||||
|
|
||||||
|
<button class="menu-toggle" aria-expanded="false" aria-controls="primary-menu" aria-label="Toggle menu">
|
||||||
|
<i data-lucide="menu" id="menu-icon" aria-hidden="true"></i>
|
||||||
|
<i data-lucide="x" id="close-icon" style="display: none;" aria-hidden="true"></i>
|
||||||
|
</button>
|
||||||
|
|
||||||
|
<ul class="nav-links" id="primary-menu">
|
||||||
|
<li><a href="/">Home</a></li>
|
||||||
|
<li><a href="/resume" aria-current="page">Resume</a></li>
|
||||||
|
<li><a href="https://github.com/charlottecroce" target="_blank" rel="noopener noreferrer">GitHub <i
|
||||||
|
data-lucide="external-link" class="icon-small" aria-hidden="true"></i><span
|
||||||
|
class="visually-hidden">(opens in new tab)</span></a></li>
|
||||||
|
<li><a href="https://codeberg.org/charlottecroce" target="_blank" rel="noopener noreferrer">Codeberg <i
|
||||||
|
data-lucide="external-link" class="icon-small" aria-hidden="true"></i><span
|
||||||
|
class="visually-hidden">(opens in new tab)</span></a></li>
|
||||||
|
<li><a href="https://linkedin.com/in/charlottecroce" target="_blank" rel="noopener noreferrer">LinkedIn <i
|
||||||
|
data-lucide="external-link" class="icon-small" aria-hidden="true"></i><span
|
||||||
|
class="visually-hidden">(opens in new tab)</span></a></li>
|
||||||
|
<li>
|
||||||
|
<button class="theme-toggle" aria-label="Toggle dark mode">
|
||||||
|
<i data-lucide="moon" id="moon-icon" aria-hidden="true"></i>
|
||||||
|
<i data-lucide="sun" id="sun-icon" style="display: none;" aria-hidden="true"></i>
|
||||||
|
</button>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</nav>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<main id="main-content">
|
||||||
|
<div class="container">
|
||||||
|
<section class="intro">
|
||||||
|
<div class="resume-header">
|
||||||
|
<h1>Charlotte Croce</h1>
|
||||||
|
<div class="contact-info">
|
||||||
|
<span>Burlington, VT (Open to Relocation)</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section class="resume-section">
|
||||||
|
<h2>Education</h2>
|
||||||
|
<div class="education-item">
|
||||||
|
<div class="education-header">
|
||||||
|
<h3>Champlain College</h3>
|
||||||
|
<span class="location">Burlington, VT</span>
|
||||||
|
</div>
|
||||||
|
<div class="education-header">
|
||||||
|
<div class="degree">Bachelor of Science in Computer Networking and Cybersecurity</div>
|
||||||
|
<span class="date">Class of 2027</span>
|
||||||
|
</div>
|
||||||
|
<div class="gpa">GPA: 3.97/4.0</div>
|
||||||
|
<div class="coursework">
|
||||||
|
<strong>Relevant Coursework:</strong> Network Security Controls, Web & Application Security, Database
|
||||||
|
Security, System Administration for Enterprise and Distributed Systems, Automation & Scripting
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section class="resume-section">
|
||||||
|
<h2>Experience</h2>
|
||||||
|
<div class="experience-item">
|
||||||
|
<div class="experience-header">
|
||||||
|
<h3>The Leahy Center</h3>
|
||||||
|
<span class="location">Burlington, VT</span>
|
||||||
|
</div>
|
||||||
|
<div class="experience-header">
|
||||||
|
<div class="job-title">Security Engineer</div>
|
||||||
|
<span class="date">Jan 2024 — Present</span>
|
||||||
|
</div>
|
||||||
|
<ul class="bullet-list">
|
||||||
|
<li>Maintained SIEM infrastructure, ensured uptime, and automated security operations</li>
|
||||||
|
<li>Optimized a threat detection engine to expand security coverage while reducing false positives
|
||||||
|
</li>
|
||||||
|
<li>Developed an Elastic Stack dev environment for feature testing</li>
|
||||||
|
<li>Collaborated with analysts on alert response</li>
|
||||||
|
</ul>
|
||||||
|
<div class="experience-header">
|
||||||
|
<div class="job-title">SOC Intern</div>
|
||||||
|
<span class="date">Oct 2023 — Dec 2023</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section class="resume-section">
|
||||||
|
<h2>Certifications</h2>
|
||||||
|
<div class="skills-grid">
|
||||||
|
<div class="skill-category">CompTIA CySA+</div>
|
||||||
|
<div class="skill-category">CompTIA Security+</div>
|
||||||
|
<div class="skill-category">CompTIA A+</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section class="resume-section">
|
||||||
|
<h2>Skills</h2>
|
||||||
|
|
||||||
|
<h3 class="skill-heading">Systems & Infrastructure</h3>
|
||||||
|
<div class="skills-grid">
|
||||||
|
<div class="skill-category">Active Directory</div>
|
||||||
|
<div class="skill-category">Debian Linux</div>
|
||||||
|
<div class="skill-category">Docker</div>
|
||||||
|
<div class="skill-category">RHEL Linux</div>
|
||||||
|
<div class="skill-category">VMWare</div>
|
||||||
|
<div class="skill-category">Windows Server</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<h3 class="skill-heading">Security Tools & Frameworks</h3>
|
||||||
|
<div class="skills-grid">
|
||||||
|
<div class="skill-category">Elastic Stack</div>
|
||||||
|
<div class="skill-category">Firewalls</div>
|
||||||
|
<div class="skill-category">PKI</div>
|
||||||
|
<div class="skill-category">SIEM</div>
|
||||||
|
<div class="skill-category">Wireshark</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<h3 class="skill-heading">Networking</h3>
|
||||||
|
<div class="skills-grid">
|
||||||
|
<div class="skill-category">VyOS</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<h3 class="skill-heading">Programming & Scripting</h3>
|
||||||
|
<div class="skills-grid">
|
||||||
|
<div class="skill-category">Ansible</div>
|
||||||
|
<div class="skill-category">Bash</div>
|
||||||
|
<div class="skill-category">Java</div>
|
||||||
|
<div class="skill-category">JavaScript</div>
|
||||||
|
<div class="skill-category">PowerShell</div>
|
||||||
|
<div class="skill-category">Python</div>
|
||||||
|
<div class="skill-category">SQL</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<h3 class="skill-heading">Project Management</h3>
|
||||||
|
<div class="skills-grid">
|
||||||
|
<div class="skill-category">Git / GitHub</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
</div>
|
||||||
|
</main>
|
||||||
|
|
||||||
|
<footer>
|
||||||
|
<div class="container">
|
||||||
|
<ul class="social-links">
|
||||||
|
<li><a href="https://github.com/charlottecroce" target="_blank" rel="noopener noreferrer">GitHub</a></li>
|
||||||
|
<li><a href="https://codeberg.org/charlottecroce" target="_blank" rel="noopener noreferrer">Codeberg</a></li>
|
||||||
|
<li><a href="https://linkedin.com/in/charlottecroce" target="_blank" rel="noopener noreferrer">LinkedIn</a></li>
|
||||||
|
<li><a href="https://hachyderm.io/@charlotte200" target="_blank" rel="noopener noreferrer me">Mastodon</a></li>
|
||||||
|
<li><a href="https://bookwyrm.social/user/lottie" target="_blank" rel="noopener noreferrer">BookWyrm</a></li>
|
||||||
|
</ul>
|
||||||
|
<p>©<span id="current-year"></span> Charlotte Croce</p>
|
||||||
|
<p class="theme-note">If you like the colors of this website, check out my <a
|
||||||
|
href="https://marketplace.visualstudio.com/items?itemName=charlotte-dev.fruitbasket-theme" target="_blank"
|
||||||
|
rel="noopener noreferrer">VS Code Theme<i data-lucide="external-link" class="icon-small"
|
||||||
|
aria-hidden="true"></i><span class="visually-hidden">(opens in new tab)</span></a></p>
|
||||||
|
</div>
|
||||||
|
</footer>
|
||||||
|
|
||||||
|
<script src="../script.js"></script>
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
49
script.js
Normal file
49
script.js
Normal file
|
@ -0,0 +1,49 @@
|
||||||
|
// Initialize Lucide icons
|
||||||
|
lucide.createIcons();
|
||||||
|
|
||||||
|
// Update copyright year
|
||||||
|
document.getElementById('current-year').textContent = new Date().getFullYear();
|
||||||
|
|
||||||
|
// Theme toggle
|
||||||
|
const themeToggle = document.querySelector('.theme-toggle');
|
||||||
|
const moonIcon = document.getElementById('moon-icon');
|
||||||
|
const sunIcon = document.getElementById('sun-icon');
|
||||||
|
|
||||||
|
// Check for saved preference
|
||||||
|
if (localStorage.getItem('darkMode') === 'true') {
|
||||||
|
document.body.classList.add('dark-mode');
|
||||||
|
moonIcon.style.display = 'none';
|
||||||
|
sunIcon.style.display = 'block';
|
||||||
|
}
|
||||||
|
|
||||||
|
themeToggle.addEventListener('click', () => {
|
||||||
|
document.body.classList.toggle('dark-mode');
|
||||||
|
const isDark = document.body.classList.contains('dark-mode');
|
||||||
|
moonIcon.style.display = isDark ? 'none' : 'block';
|
||||||
|
sunIcon.style.display = isDark ? 'block' : 'none';
|
||||||
|
localStorage.setItem('darkMode', isDark ? 'true' : 'false');
|
||||||
|
});
|
||||||
|
|
||||||
|
// Mobile menu
|
||||||
|
const menuToggle = document.querySelector('.menu-toggle');
|
||||||
|
const navLinks = document.querySelector('.nav-links');
|
||||||
|
const menuIcon = document.getElementById('menu-icon');
|
||||||
|
const closeIcon = document.getElementById('close-icon');
|
||||||
|
|
||||||
|
menuToggle.addEventListener('click', () => {
|
||||||
|
const isExpanded = menuToggle.getAttribute('aria-expanded') === 'true';
|
||||||
|
menuToggle.setAttribute('aria-expanded', !isExpanded);
|
||||||
|
navLinks.classList.toggle('menu-open');
|
||||||
|
menuIcon.style.display = isExpanded ? 'block' : 'none';
|
||||||
|
closeIcon.style.display = isExpanded ? 'none' : 'block';
|
||||||
|
});
|
||||||
|
|
||||||
|
// Close menu when clicking outside
|
||||||
|
document.addEventListener('click', (event) => {
|
||||||
|
if (!event.target.closest('.menu-toggle') && !event.target.closest('.nav-links') && navLinks.classList.contains('menu-open')) {
|
||||||
|
navLinks.classList.remove('menu-open');
|
||||||
|
menuToggle.setAttribute('aria-expanded', 'false');
|
||||||
|
menuIcon.style.display = 'block';
|
||||||
|
closeIcon.style.display = 'none';
|
||||||
|
}
|
||||||
|
});
|
188
style.css
188
style.css
|
@ -97,7 +97,9 @@ body {
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Typography */
|
/* Typography */
|
||||||
h1, h2, h3 {
|
h1,
|
||||||
|
h2,
|
||||||
|
h3 {
|
||||||
line-height: 1.3;
|
line-height: 1.3;
|
||||||
margin-bottom: var(--space-md);
|
margin-bottom: var(--space-md);
|
||||||
}
|
}
|
||||||
|
@ -427,3 +429,187 @@ footer {
|
||||||
grid-template-columns: repeat(3, 1fr);
|
grid-template-columns: repeat(3, 1fr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* Resume header and contact info */
|
||||||
|
.resume-header {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
gap: var(--space-md);
|
||||||
|
margin-bottom: var(--space-xl);
|
||||||
|
}
|
||||||
|
|
||||||
|
.contact-info {
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
gap: var(--space-md);
|
||||||
|
font-size: 0.95rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Resume sections */
|
||||||
|
.resume-section {
|
||||||
|
background-color: var(--bg-secondary);
|
||||||
|
border-radius: 0.75rem;
|
||||||
|
padding: var(--space-xl);
|
||||||
|
margin-bottom: var(--space-xl);
|
||||||
|
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.05);
|
||||||
|
transition: transform var(--transition), box-shadow var(--transition);
|
||||||
|
}
|
||||||
|
|
||||||
|
.resume-section:hover {
|
||||||
|
box-shadow: 0 6px 16px rgba(0, 0, 0, 0.08);
|
||||||
|
}
|
||||||
|
|
||||||
|
.resume-section h2 {
|
||||||
|
position: relative;
|
||||||
|
margin-bottom: var(--space-lg);
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.resume-section h2::after {
|
||||||
|
content: '';
|
||||||
|
flex: 1;
|
||||||
|
height: 1px;
|
||||||
|
margin-left: var(--space-md);
|
||||||
|
background-color: var(--sage-200);
|
||||||
|
}
|
||||||
|
|
||||||
|
.dark-mode .resume-section h2::after {
|
||||||
|
background: linear-gradient(to right, var(--pink-400), transparent);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Education and experience items */
|
||||||
|
.education-item,
|
||||||
|
.experience-item {
|
||||||
|
margin-bottom: var(--space-lg);
|
||||||
|
}
|
||||||
|
|
||||||
|
.education-header,
|
||||||
|
.experience-header {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
margin-bottom: var(--space-xs);
|
||||||
|
}
|
||||||
|
|
||||||
|
.location {
|
||||||
|
color: var(--accent-primary);
|
||||||
|
font-weight: 500;
|
||||||
|
}
|
||||||
|
|
||||||
|
.date {
|
||||||
|
color: var(--text);
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
|
||||||
|
.degree,
|
||||||
|
.job-title {
|
||||||
|
font-weight: 600;
|
||||||
|
color: var(--accent-secondary);
|
||||||
|
}
|
||||||
|
|
||||||
|
.gpa {
|
||||||
|
margin-bottom: var(--space-md);
|
||||||
|
}
|
||||||
|
|
||||||
|
.coursework {
|
||||||
|
margin-top: var(--space-sm);
|
||||||
|
}
|
||||||
|
|
||||||
|
.bullet-list {
|
||||||
|
padding-left: var(--space-xl);
|
||||||
|
margin-bottom: var(--space-md);
|
||||||
|
}
|
||||||
|
|
||||||
|
.bullet-list li {
|
||||||
|
margin-bottom: var(--space-xs);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Skills grid */
|
||||||
|
.skills-grid {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
|
||||||
|
gap: var(--space-md);
|
||||||
|
}
|
||||||
|
|
||||||
|
.skill-category {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: var(--space-xs);
|
||||||
|
}
|
||||||
|
|
||||||
|
.skill-category::before {
|
||||||
|
content: '•';
|
||||||
|
color: var(--accent-primary);
|
||||||
|
font-size: 1.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Print styles */
|
||||||
|
@media print {
|
||||||
|
body {
|
||||||
|
background-color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
header,
|
||||||
|
footer,
|
||||||
|
.theme-toggle,
|
||||||
|
.menu-toggle {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.container {
|
||||||
|
max-width: 100%;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.resume-section {
|
||||||
|
box-shadow: none;
|
||||||
|
page-break-inside: avoid;
|
||||||
|
margin-bottom: var(--space-lg);
|
||||||
|
}
|
||||||
|
|
||||||
|
.resume-section:hover {
|
||||||
|
transform: none;
|
||||||
|
box-shadow: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Skill category headings */
|
||||||
|
.skill-heading {
|
||||||
|
font-size: 1.1rem;
|
||||||
|
color: var(--accent-primary);
|
||||||
|
margin-top: var(--space-lg);
|
||||||
|
margin-bottom: var(--space-sm);
|
||||||
|
border-bottom: 1px solid var(--sage-200);
|
||||||
|
padding-bottom: var(--space-xs);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Make the first skill heading not have extra top margin */
|
||||||
|
.skill-heading:first-of-type {
|
||||||
|
margin-top: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Dark mode styling for skill headings */
|
||||||
|
.dark-mode .skill-heading {
|
||||||
|
border-bottom-color: var(--pink-300);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Responsive adjustments for resume */
|
||||||
|
@media (max-width: 768px) {
|
||||||
|
|
||||||
|
.education-header,
|
||||||
|
.experience-header {
|
||||||
|
flex-direction: column;
|
||||||
|
}
|
||||||
|
|
||||||
|
.resume-section {
|
||||||
|
padding: var(--space-lg);
|
||||||
|
}
|
||||||
|
|
||||||
|
.skills-grid {
|
||||||
|
grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
|
||||||
|
}
|
||||||
|
}
|
Loading…
Add table
Add a link
Reference in a new issue