From 54f0301834d09323a9262b5d589d51c735535807 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 28 Dec 2025 12:56:05 +0000 Subject: [PATCH 1/3] Initial plan From e277eb1f568588cb629a13b9d6969e6de010fbe6 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 28 Dec 2025 12:59:49 +0000 Subject: [PATCH 2/3] Create academic website with research and CV sections Co-authored-by: FergusDonnan <80899217+FergusDonnan@users.noreply.github.com> --- index.html | 212 ++++++++++++++++++++++++++++ script.js | 69 ++++++++++ styles.css | 398 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 679 insertions(+) create mode 100644 index.html create mode 100644 script.js create mode 100644 styles.css diff --git a/index.html b/index.html new file mode 100644 index 0000000..a644074 --- /dev/null +++ b/index.html @@ -0,0 +1,212 @@ + + + + + + Fergus Donnan - Academic Website + + + + + +
+
+
+

Fergus Donnan

+

Researcher | Academic | Scholar

+

Exploring innovative solutions in [Your Research Field]

+
+
+
+ +
+
+
+

About Me

+
+
+
Photo
+
+
+

Welcome to my academic website. I am a researcher focused on [Your Research Area]. My work encompasses [brief description of your work].

+

I am currently [your current position] at [your institution]. My research interests include:

+
    +
  • Research Interest 1
  • +
  • Research Interest 2
  • +
  • Research Interest 3
  • +
+
+
+
+
+ +
+
+

Research

+

My research focuses on addressing key challenges in [your field]. Below are some of my current and past projects.

+ +
+
+

Research Project 1

+

Timeline: 2023 - Present

+

Brief description of your first research project. Explain the problem, your approach, and key findings or goals.

+
+ +
+

Research Project 2

+

Timeline: 2022 - 2023

+

Brief description of your second research project. Explain the problem, your approach, and key findings or goals.

+
+ +
+

Research Project 3

+

Timeline: 2021 - 2022

+

Brief description of your third research project. Explain the problem, your approach, and key findings or goals.

+
+
+
+
+ +
+
+

Publications

+

Selected publications from my research work.

+ +
+
+

Publication Title 1

+

Donnan, F., Co-Author A., Co-Author B.

+

Journal/Conference Name, Year

+

Brief description of the publication and its contribution to the field.

+ +
+ +
+

Publication Title 2

+

Donnan, F., Co-Author C.

+

Journal/Conference Name, Year

+

Brief description of the publication and its contribution to the field.

+ +
+ +
+

Publication Title 3

+

Co-Author D., Donnan, F.

+

Journal/Conference Name, Year

+

Brief description of the publication and its contribution to the field.

+ +
+
+
+
+ +
+
+

Curriculum Vitae

+ +
+

Education

+
+

Ph.D. in [Your Field]

+

University Name | Year - Year

+

Dissertation: [Your Dissertation Title]

+
+
+

M.Sc. in [Your Field]

+

University Name | Year - Year

+
+
+

B.Sc. in [Your Field]

+

University Name | Year - Year

+
+
+ +
+

Experience

+
+

Position Title

+

Institution Name | Year - Present

+

Brief description of your role and responsibilities.

+
+
+

Previous Position

+

Institution Name | Year - Year

+

Brief description of your role and responsibilities.

+
+
+ +
+

Awards & Honors

+
+

Award Name

+

Awarding Organization | Year

+
+
+

Fellowship/Grant Name

+

Funding Organization | Year

+
+
+ + +
+
+ +
+
+

Contact

+
+

I'm always interested in discussing research collaborations and opportunities.

+ +
+
+ Email: your.email@institution.edu +
+
+ Office: Building Name, Room Number, Institution +
+
+ Address: Department, Institution Name, City, Country +
+
+ + +
+
+
+
+ + + + + + diff --git a/script.js b/script.js new file mode 100644 index 0000000..7331178 --- /dev/null +++ b/script.js @@ -0,0 +1,69 @@ +// Smooth scrolling for navigation links +document.querySelectorAll('a[href^="#"]').forEach(anchor => { + anchor.addEventListener('click', function (e) { + e.preventDefault(); + const target = document.querySelector(this.getAttribute('href')); + if (target) { + const navHeight = document.querySelector('nav').offsetHeight; + const targetPosition = target.offsetTop - navHeight; + + window.scrollTo({ + top: targetPosition, + behavior: 'smooth' + }); + } + }); +}); + +// Add active state to navigation links based on scroll position +window.addEventListener('scroll', () => { + const sections = document.querySelectorAll('.section'); + const navLinks = document.querySelectorAll('.nav-links a'); + + let current = ''; + const navHeight = document.querySelector('nav').offsetHeight; + + sections.forEach(section => { + const sectionTop = section.offsetTop - navHeight - 100; + const sectionHeight = section.offsetHeight; + + if (window.pageYOffset >= sectionTop && + window.pageYOffset < sectionTop + sectionHeight) { + current = section.getAttribute('id'); + } + }); + + navLinks.forEach(link => { + link.classList.remove('active'); + if (link.getAttribute('href').substring(1) === current) { + link.classList.add('active'); + } + }); +}); + +// Add animation on scroll +const observerOptions = { + threshold: 0.1, + rootMargin: '0px 0px -100px 0px' +}; + +const observer = new IntersectionObserver((entries) => { + entries.forEach(entry => { + if (entry.isIntersecting) { + entry.target.style.opacity = '1'; + entry.target.style.transform = 'translateY(0)'; + } + }); +}, observerOptions); + +// Observe elements for animation +document.addEventListener('DOMContentLoaded', () => { + const animatedElements = document.querySelectorAll('.research-card, .publication, .cv-entry'); + + animatedElements.forEach(el => { + el.style.opacity = '0'; + el.style.transform = 'translateY(20px)'; + el.style.transition = 'opacity 0.6s ease, transform 0.6s ease'; + observer.observe(el); + }); +}); diff --git a/styles.css b/styles.css new file mode 100644 index 0000000..4a02708 --- /dev/null +++ b/styles.css @@ -0,0 +1,398 @@ +/* Reset and Base Styles */ +* { + margin: 0; + padding: 0; + box-sizing: border-box; +} + +body { + font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif; + line-height: 1.6; + color: #333; + background-color: #fff; +} + +.container { + max-width: 1200px; + margin: 0 auto; + padding: 0 20px; +} + +/* Navigation */ +nav { + background-color: #2c3e50; + color: white; + padding: 1rem 0; + position: sticky; + top: 0; + z-index: 1000; + box-shadow: 0 2px 5px rgba(0,0,0,0.1); +} + +nav .container { + display: flex; + justify-content: space-between; + align-items: center; + flex-wrap: wrap; +} + +nav .logo { + font-size: 1.5rem; + font-weight: 600; + color: white; +} + +nav .nav-links { + display: flex; + list-style: none; + gap: 2rem; +} + +nav .nav-links a { + color: white; + text-decoration: none; + transition: color 0.3s ease; + font-weight: 500; +} + +nav .nav-links a:hover { + color: #3498db; +} + +/* Hero Section */ +.hero { + background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); + color: white; + padding: 6rem 0; + text-align: center; +} + +.hero h1 { + font-size: 3rem; + margin-bottom: 1rem; +} + +.hero .subtitle { + font-size: 1.5rem; + margin-bottom: 1rem; + opacity: 0.9; +} + +.hero .description { + font-size: 1.1rem; + opacity: 0.8; +} + +/* Sections */ +.section { + padding: 5rem 0; +} + +.bg-light { + background-color: #f8f9fa; +} + +.section h2 { + font-size: 2.5rem; + margin-bottom: 1rem; + color: #2c3e50; + text-align: center; +} + +.section-intro { + text-align: center; + font-size: 1.1rem; + color: #666; + margin-bottom: 3rem; + max-width: 800px; + margin-left: auto; + margin-right: auto; +} + +/* About Section */ +.about-content { + display: grid; + grid-template-columns: 300px 1fr; + gap: 3rem; + align-items: start; + margin-top: 3rem; +} + +.profile-image { + width: 100%; +} + +.placeholder-image { + width: 100%; + aspect-ratio: 1; + background-color: #ddd; + border-radius: 10px; + display: flex; + align-items: center; + justify-content: center; + font-size: 1.2rem; + color: #666; +} + +.bio { + font-size: 1.1rem; + line-height: 1.8; +} + +.bio ul { + margin-top: 1rem; + margin-left: 2rem; +} + +.bio li { + margin-bottom: 0.5rem; +} + +/* Research Section */ +.research-grid { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); + gap: 2rem; + margin-top: 3rem; +} + +.research-card { + background: white; + padding: 2rem; + border-radius: 10px; + box-shadow: 0 4px 6px rgba(0,0,0,0.1); + transition: transform 0.3s ease, box-shadow 0.3s ease; +} + +.research-card:hover { + transform: translateY(-5px); + box-shadow: 0 8px 15px rgba(0,0,0,0.15); +} + +.research-card h3 { + color: #2c3e50; + margin-bottom: 0.5rem; + font-size: 1.5rem; +} + +.research-meta { + color: #666; + font-size: 0.9rem; + margin-bottom: 1rem; + font-style: italic; +} + +/* Publications Section */ +.publications-list { + max-width: 900px; + margin: 3rem auto 0; +} + +.publication { + background: white; + padding: 2rem; + margin-bottom: 2rem; + border-radius: 10px; + border-left: 4px solid #667eea; + box-shadow: 0 2px 4px rgba(0,0,0,0.1); +} + +.publication h3 { + color: #2c3e50; + margin-bottom: 0.5rem; + font-size: 1.3rem; +} + +.publication .authors { + color: #444; + margin-bottom: 0.3rem; +} + +.publication .venue { + color: #666; + margin-bottom: 1rem; +} + +.publication-description { + margin-bottom: 1rem; + line-height: 1.6; +} + +.publication-links { + display: flex; + gap: 1rem; +} + +.btn-link { + display: inline-block; + padding: 0.5rem 1rem; + background-color: #667eea; + color: white; + text-decoration: none; + border-radius: 5px; + transition: background-color 0.3s ease; + font-size: 0.9rem; +} + +.btn-link:hover { + background-color: #5568d3; +} + +/* CV Section */ +.cv-section { + max-width: 900px; + margin: 3rem auto; +} + +.cv-section h3 { + color: #2c3e50; + font-size: 1.8rem; + margin-bottom: 1.5rem; + padding-bottom: 0.5rem; + border-bottom: 3px solid #667eea; +} + +.cv-entry { + margin-bottom: 2rem; +} + +.cv-entry h4 { + color: #2c3e50; + font-size: 1.3rem; + margin-bottom: 0.5rem; +} + +.cv-meta { + color: #666; + font-style: italic; + margin-bottom: 0.5rem; +} + +.cv-download { + text-align: center; + margin-top: 3rem; +} + +.btn-primary { + display: inline-block; + padding: 1rem 2rem; + background-color: #667eea; + color: white; + text-decoration: none; + border-radius: 5px; + font-size: 1.1rem; + font-weight: 600; + transition: background-color 0.3s ease, transform 0.3s ease; +} + +.btn-primary:hover { + background-color: #5568d3; + transform: translateY(-2px); +} + +/* Contact Section */ +.contact-content { + max-width: 800px; + margin: 3rem auto; + text-align: center; +} + +.contact-info { + margin: 2rem 0; + text-align: left; +} + +.contact-item { + padding: 1rem; + margin-bottom: 0.5rem; + background-color: #f8f9fa; + border-radius: 5px; +} + +.social-links { + display: flex; + justify-content: center; + gap: 1.5rem; + margin-top: 2rem; +} + +.social-link { + display: inline-block; + padding: 0.7rem 1.5rem; + background-color: #2c3e50; + color: white; + text-decoration: none; + border-radius: 5px; + transition: background-color 0.3s ease; +} + +.social-link:hover { + background-color: #34495e; +} + +/* Footer */ +footer { + background-color: #2c3e50; + color: white; + text-align: center; + padding: 2rem 0; + margin-top: 4rem; +} + +/* Responsive Design */ +@media (max-width: 768px) { + nav .container { + flex-direction: column; + gap: 1rem; + } + + nav .nav-links { + flex-wrap: wrap; + justify-content: center; + gap: 1rem; + } + + .hero h1 { + font-size: 2rem; + } + + .hero .subtitle { + font-size: 1.2rem; + } + + .about-content { + grid-template-columns: 1fr; + gap: 2rem; + } + + .profile-image { + max-width: 300px; + margin: 0 auto; + } + + .research-grid { + grid-template-columns: 1fr; + } + + .section h2 { + font-size: 2rem; + } + + .social-links { + flex-wrap: wrap; + } +} + +@media (max-width: 480px) { + .hero h1 { + font-size: 1.5rem; + } + + .section { + padding: 3rem 0; + } + + .publication-links { + flex-direction: column; + } +} From be30fd7c8e47cff83b782e1f7dfe09d4e3ed2e05 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 28 Dec 2025 13:01:18 +0000 Subject: [PATCH 3/3] Add active state styling for navigation links Co-authored-by: FergusDonnan <80899217+FergusDonnan@users.noreply.github.com> --- styles.css | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/styles.css b/styles.css index 4a02708..fd63ade 100644 --- a/styles.css +++ b/styles.css @@ -59,6 +59,11 @@ nav .nav-links a:hover { color: #3498db; } +nav .nav-links a.active { + color: #3498db; + font-weight: 700; +} + /* Hero Section */ .hero { background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);