/* Modern CSS reset and variables */ :root { /* Claude dark blue / grey theme */ --text-colour: #1a202c; --primary-colour: #2d3748; --secondary-colour: #4a5568; --accent-colour: #4299e1; --page-background-colour: #f7fafc; --text-background-colour: white; } :root[data-theme="purple"] { /* Purple theme - https://coolors.co/palette/10002b-240046-3c096c-5a189a-7b2cbf-9d4edd-c77dff-e0aaff */ --text-colour: #10002B; /* very dark */ --primary-colour: #240046; /* medium dark */ --secondary-colour: #3C096C; /* dark */ --accent-colour: #C77DFF; /* light */ --page-background-colour: #E0AAFF; /* very light */ --text-background-colour: white; } :root[data-theme="red"], :root[data-theme="light"] { /* Red theme - https://coolors.co/palette/2b0000-4f0000-740000-980000-b50000-d30000-eb1d1d-f50f0f-ff0000 - https://coolors.co/palette/9c191b-ac1c1e-bd1f21-d02224-dd2c2f-e35053-e66063-ec8385-f1a7a9-f6cacc */ --text-colour: #2B0000; --primary-colour: #740000; --secondary-colour: #B50000; --accent-colour: #E35053; --page-background-colour: #F6CACC; --text-background-colour: white; } :root[data-theme="dark"] { /* --text-colour: #E0E0E0; --primary-colour: #BB86FC; --secondary-colour: #03DAC6; --accent-colour: #FF4081; --page-background-colour: #121212; --text-background-colour: black; */ /* --text-colour: #E0E0E0; /* Light * / --primary-colour: #740000; /* Dark * / --secondary-colour: #B50000; /* Medium * / --accent-colour: #FF4081; /* Light-medium * / --page-background-colour: #121212; /* Dark * / --text-background-colour: black; /* Black * / */ --text-colour: #E0E0E0; /* Light Gray */ --primary-colour: #980000; /* Slightly lighter Dark Red */ --secondary-colour: #D30000; /* Slightly lighter Medium Red */ --accent-colour: #FF4081; /* Pink */ --page-background-colour: #121212; /* Dark Gray */ --text-background-colour: black; /* Dark Red */ } * { margin: 0; padding: 0; box-sizing: border-box; } body { font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; line-height: 1.6; color: var(--text-colour); background-color: var(--page-background-colour); } /* Header styles */ header { background-color: var(--primary-colour); color: var(--text-background-colour); padding: 2rem 1rem; text-align: center; } header h1 { color: var(--text-background-colour); } nav { background-color: var(--secondary-colour); padding: 1rem; position: sticky; top: 0; z-index: 100; } nav ul { list-style: none; display: flex; justify-content: center; gap: 2rem; } nav a { color: var(--text-background-colour); text-decoration: none; font-weight: 500; transition: color 0.3s; } nav a:hover { color: var(--accent-colour); } /* Google Translate styles - Hide poorly styled iframes */ #google_translate_element { background-color: white; border-radius: 0.25vh; padding: 0.5vh; } iframe.skiptranslate { display: none !important; } body { top: 0px !important; } /* Toggle light mode / dark mode button */ .theme-switch { background: none; border: none; cursor: pointer; width: 5vh; height: 5vh; padding: 0; display: flex; align-items: center; justify-content: center; position: relative; margin-top: auto; border-radius: 2.5vh; } .theme-switch:hover { background-color: var(--primary-colour); } .theme-switch img.theme-icon, .theme-switch svg.theme-icon { width: 100%; height: 100%; object-fit: contain; transition: opacity 1s ease, transform 1s ease; position: absolute; margin-top: auto; } img.theme-icon.dark-mode-icon { top: 0vh; left: -0.1vh; } svg.theme-icon.light-mode-icon { width: 4vh; height: 4vh; top: 0.55vh; left: 0.45vh; } svg.theme-icon.light-mode-icon .background { fill: var(--secondary-colour); } .theme-switch:hover svg.theme-icon.light-mode-icon .background { fill: var(--primary-colour); } svg.theme-icon.light-mode-icon .sun { fill: var(--text-colour); stroke: var(--text-colour); } /* svg.theme-icon { width: 2vh; height: 2vh; } */ /* Hide the icon that doesn't match the current theme */ [data-theme="light"] .theme-switch .dark-mode-icon { opacity: 1; display: block; transform: rotate(0deg); } [data-theme="light"] .theme-switch .light-mode-icon { opacity: 0; display: none; transform: rotate(90deg); } [data-theme="dark"] .theme-switch .dark-mode-icon { opacity: 0; display: none; transform: rotate(-90deg); } [data-theme="dark"] .theme-switch .light-mode-icon { opacity: 1; display: block; transform: rotate(0deg); } /* Main content styles */ main { max-width: 1200px; margin: 0 auto; padding: 2rem 1rem; } section { margin-bottom: 3rem; } h1, h2, h3 { color: var(--primary-colour); margin-bottom: 1rem; } ul, li { list-style-position: outside; } .expertise-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 2rem; } .expertise-card { background: var(--text-background-colour); padding: 1.5rem; border-radius: 8px; box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); margin-bottom: 2rem; } /* Projects */ .projects-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 2rem; margin-top: 2rem; } .project-card-gridslot { } .project-card { background: var(--text-background-colour); padding: 1.5rem; border-radius: 8px; box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); height: fit-content; } .expertise-card h3, .project-card h3, .experience-card h3 { color: var(--secondary-colour); } .button { display: inline-block; padding: 0.5rem 1rem; background-color: var(--accent-colour); color: var(--text-background-colour); text-decoration: none; border-radius: 4px; transition: background-color 0.3s; } .button:hover { background-color: #2b6cb0; } /* .project-thumbnails { position: relative; } .project-thumbnail { position: absolute; bottom: 0; left: 0; right: 0; height: 0; overflow: hidden; transition: height 0.3s ease; } .project-thumbnail img { width: 100%; display: block; } /* .project-card .button:hover + .project-thumbnail */ /* .project-card .button.project_demo_partsenterprise_erp:hover + .project-thumbnail.project_demo_partsenterprise_erp, .project-card .button.project_demo_partsenterprise_store:hover + .project-thumbnail.project_demo_partsenterprise_store, .project-card .button.project_demo_live_partsenterprise_store:hover + .project-thumbnail.project_demo_live_partsenterprise_store, .project-card .button.project_demo_partserp:hover + .project-thumbnail.project_demo_partserp */ /* .project-links .button.project_demo_partsenterprise_erp:hover ~ .project-thumbnails .project_demo_partsenterprise_erp, .project-links .button.project_demo_partsenterprise_store:hover ~ .project-thumbnails .project_demo_partsenterprise_store, .project-links .button.project_demo_live_partsenterprise_store:hover ~ .project-thumbnails .project_demo_live_partsenterprise_store, .project-links .button.project_demo_partserp:hover ~ .project-thumbnails .project_demo_partserp * / .project-thumbnail.active { height: 200px; /* Adjust the height as needed * / } */ .project-detail-button { font-size: 0.9rem; text-decoration: underline; margin-top: 1vh; cursor: pointer; width: fit-content; } .project-thumbnail { margin-top: 2vh; } .project-thumbnail img { max-width: 100%; height: auto; } .project-detail-container { display: none; } .project-detail-container.active { display: block; } .project-links { text-align: center; margin-top: 1vh; } /* Experience */ .experience-card { background: var(--text-background-colour); padding: 1.5rem; border-radius: 8px; box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); margin-bottom: 2rem; margin-top: 2rem; } .experience-card h3 { margin-bottom: 0; } .experience-date { color: var(--primary-colour); font-size: 0.9rem; width: 50%; min-width: 50%; -webkit-text-fill-color: inherit; text-decoration: none; pointer-events: none; } .experience-card:last-child { margin-bottom: 0; } .experience-company-and-date { display: flex; justify-content: space-between; align-items: center; text-align: left; width: 100%; margin-bottom: 0.25rem; } .experience-description { margin: 0.5rem 0; } .experience-additional-entry { list-style-type: disc; width: 100%; } .experience-header { display: flex; align-items: center; } .experience-additional-entry .experience-company-and-date { display: flex; width: 100%; } .experience-additional-entry .experience-job-title, .experience-additional-entry .experience-company, .experience-additional-entry .experience-date { font-weight: bold; margin: 0; width: fit-content; } .experience-additional-entry .experience-company { margin-left: 5px; margin-right: auto; } .experience-additional-entry .experience-date { font-weight: normal; margin-left: auto; } .experience-additional-entry:not(:first-of-type) .experience-job-title::after { content: " at "; font-weight: normal; } .experience-additional-entry .experience-company::after { content: " "; } .experience-additional-entry .experience-description:last-of-type { margin-top: 0; margin-bottom: 1rem; } /* Footer styles */ footer { background-color: var(--primary-colour); color: var(--text-background-colour); text-align: center; padding: 2rem 1rem; margin-top: 4rem; } footer a { color: var(--text-background-colour); } /* Responsive design */ @media (max-width: 768px) { nav ul { flex-direction: column; align-items: center; gap: 1rem; } .expertise-grid, .projects-grid { grid-template-columns: 1fr; } } /* GitHub Contributions Calendar */ .github-calendar { width: fit-content; margin-left: auto; margin-right: auto; } /* Hide broken statistics */ .github-calendar > :not(:first-child) { display: none; } /* Hide the "How we calculate contributions" text */ .github-calendar .js-calendar-graph .width-full .float-left { display: none; } /* Change title text */ .github-calendar table.js-calendar-graph-table > caption:first-child { color: transparent; font-size: 0; } .github-calendar table.js-calendar-graph-table > caption:first-child::before { content: "GitHub Contributions Calendar"; color: var(--text-colour); font-size: 1rem; }