From bc36232b458d8da0ce286385e12187a6b8a98dfe Mon Sep 17 00:00:00 2001 From: Daniel LaForce Date: Wed, 9 Apr 2025 15:59:56 -0600 Subject: [PATCH] Add initial HTML, CSS, and resume PDF files --- files/daniel-laforce-resume.pdf | Bin 0 -> 98121 bytes index.html | 667 ++++++++++++++ resume.html | 836 +++++++++++++++++ styles.css | 1497 +++++++++++++++++++++++++++++++ 4 files changed, 3000 insertions(+) create mode 100644 files/daniel-laforce-resume.pdf create mode 100644 index.html create mode 100644 resume.html create mode 100644 styles.css diff --git a/files/daniel-laforce-resume.pdf b/files/daniel-laforce-resume.pdf new file mode 100644 index 0000000000000000000000000000000000000000..0effeb9ca39d606af13014b5046e58b6eb924229 GIT binary patch literal 98121 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%0DXboX;FcdzveLls5`#At;a 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%0Dqv*=s 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 + + + + + Daniel LaForce | Infrastructure & Systems Architect | DevOps Engineer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+ +
+
+
+
+

Daniel LaForce

+ your +
+ +

+ + + System Administrator & IT Expert + + + DevOps & Automation Engineer + + + Infrastructure & Systems Architect + + +

+ +

+ Building scalable infrastructure with optimized performance and bulletproof security — from server management to end-user support that keeps businesses running smoothly. +

+ +
+
> Ready for deployment...
+
+
+ +
+
+
+ Lab Status: Online +
+ +
+
+
+
+
+
+
+
+
+
> Monitoring infrastructure...
+
> CPU load: Normal
+
> RAM usage: 42%
+
> Network: Stable
+
> Containers: 16 running
+
> Backing up critical data...
+
> Status: All systems operational
+
+
+
+ + +
+
+
+ + +
+
+
+

Solving Complex IT Challenges

+
+ + + +
+ + + + + + + + +
+
+
+ + +
+
+
+

Expert Services

+

+ Comprehensive IT solutions tailored to your business needs, from network infrastructure to cloud migration. +

+
+ +
+ +
+
+ +
+

System Administration

+

+ Expert management of Windows & Linux servers, virtualization, and cloud infrastructure. Ensuring your systems remain secure, optimized and reliable. +

+
+ Windows Server + Linux + VMware + Proxmox +
+
+ + +
+
+ +
+

Network Engineering

+

+ Design and implementation of robust network infrastructures. Specializing in routing, switching, firewalls, and network security solutions. +

+
+ pfSense + OPNsense + VPN + VLAN +
+
+ + +
+
+ +
+

Cloud & Virtualization

+

+ Implementation of virtualization technologies and cloud solutions. From VMware and Proxmox to containerization with Docker and Kubernetes. +

+
+ Docker + Kubernetes + K3s + Azure +
+
+ + +
+
+ +
+

M365 Migrations

+

+ Seamless migration to Microsoft 365 environments. From email and SharePoint to Teams and OneDrive, ensuring minimal disruption to your business. +

+
+ Exchange + SharePoint + Azure AD + Teams +
+
+ + +
+
+ +
+

IT Security

+

+ Comprehensive security solutions to protect your business. Including firewall configuration, VPN setup, security audits, and best practices implementation. +

+
+ Zero Trust + Cloudflare + Endpoint Security + Auditing +
+
+ + +
+
+ +
+

DevOps & Automation

+

+ Infrastructure as code, CI/CD pipelines, and automation solutions using industry-standard tools and best practices to streamline your operations. +

+
+ Ansible + Python + PowerShell + Bash +
+
+
+
+
+ + +
+
+
+

Live Infrastructure Lab

+

+ I maintain a production-grade homelab that serves as both a testing ground and showcase for my technical skills. +

+
+ +
+
+

Lab Architecture

+

+ My lab consists of multiple physical and virtual machines running Proxmox, Docker, and Kubernetes (K3s), all secured behind Cloudflare Zero Trust. +

+ +

Current Infrastructure:

+
    +
  • Proxmox Hypervisor Cluster
  • +
  • OPNsense Router (Physical + VM)
  • +
  • K3s Kubernetes Cluster
  • +
  • Traefik Ingress Controller
  • +
  • Gitea, VSCode Server, NAS
  • +
  • Cloudflared Zero Trust Tunnel
  • +
+ + +
+ +
+

Real-Time Metrics

+ +
+
+ CPU Usage + 42% +
+
+
+
+
+ +
+
+ Memory + 57% +
+
+
+
+
+ +
+
+ Storage + 63% +
+
+
+
+
+ +
+
+ Network + 28% +
+
+
+
+
+ +

Active Services:

+
+
Gitea
+
VSCode Server
+
rTorrent
+
NAS
+
Traefik
+
K3s
+
Cloudflared
+
FileBrowser
+
+
+
+ + +
+

How I'm Running Services

+

+ Here's a sample of how I deploy and manage services in my infrastructure: +

+ +
+ + # K3s deployment for Gitea with persistent storage
+ apiVersion: apps/v1
+ kind: Deployment
+ metadata:
+   name: gitea
+   namespace: argobox
+ spec:
+   replicas: 1
+   selector:
+     matchLabels:
+       app: gitea
+   template:
+     metadata:
+       labels:
+         app: gitea
+     spec:
+       containers:
+       - name: gitea
+         image: gitea/gitea:latest
+         ports:
+         - containerPort: 3000
+         volumeMounts:
+         - name: gitea-data
+           mountPath: /data
+
+
+
+
+
+ + +
+
+
+

Featured Projects

+

+ A showcase of technical solutions I've built and deployed. +

+
+ +
+
+
+ +
+

TerraTracer

+

+ A GIS mapping tool for prospectors to automate mining claim boundary plotting, terrain analysis, and compliance with BLM/state regulations. +

+
+ Python + Node.js + JavaScript + GIS +
+
+ +
+
+ +
+

Zero Trust Lab

+

+ A secure home lab infrastructure using Cloudflare Zero Trust tunnels, network segmentation, and security best practices. +

+
+ Cloudflare + OPNsense + VLAN + VPN +
+
+ +
+
+ +
+

Ansible Sandbox

+

+ An interactive demo environment where users can spin up preconfigured services using Ansible automation. +

+
+ Ansible + Proxmox + Python + Docker +
+
+
+
+
+ + +
+
+
+

Professional Experience

+

+ A history of delivering reliable IT infrastructure and solutions. +

+
+ +
+
+
+
+

Inovin LLC

+

Freelance Consultant – GIS, Infrastructure & Security Solutions

+
April 2023 – Present
+

+ Providing specialized consulting services in virtualization, containerization, network security, and custom GIS solutions. +

+
+
+ +
+
+
+

Previous Roles

+

System & Network Engineering Positions

+
Prior Experience
+

+ Extensive experience in MSPs, network engineering, and diverse IT environments. +

+
+
+
+
+
+ + +
+
+
+

Let's Connect

+

+ Have a project in mind? Reach out to discuss how I can help. +

+
+ +
+
+
+
+ +
+

Email

+

daniel.laforce@argobox.com

+
+ +
+
+ +
+

LinkedIn

+

linkedin.com/in/danlaforce

+
+ +
+
+ +
+

GitHub

+

github.com/keyargo

+
+
+ +
+
+
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ + +
+
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/resume.html b/resume.html new file mode 100644 index 0000000..97489c8 --- /dev/null +++ b/resume.html @@ -0,0 +1,836 @@ + + + + + + Daniel LaForce | Resume + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+

Daniel LaForce

+

Infrastructure & Systems Engineer

+ +
+
+ + Colorado Springs, Colorado +
+
+ + 720-310-0064 +
+ + + +
+
+ + +
+

Professional Experience

+ +
+
+

Freelance Consultant – GIS, Infrastructure & Security Solutions

+
Inovin LLC
+
April 2023 – Present | Colorado Springs, CO
+
+
+
+ + Developed TerraTracer, a GIS mapping platform used by independent mining claim prospectors to automate boundary plotting, terrain-informed site selection, and BLM/state compliance, reducing manual research by 85%. +
+
+ + Consulted on virtualization and DevOps projects for SMB clients, implementing Proxmox/VMware solutions, containerizing legacy apps with Docker, and orchestrating microservices with Kubernetes. +
+
+ + Built secure cloud environments integrating Azure AD, SSO, and VPN/firewall solutions, increasing operational resilience while aligning with HIPAA and zero-trust principles. +
+
+ + Automated infrastructure tasks via PowerShell, Python, and Bash, optimizing system deployment, backup routines, and monitoring pipelines. +
+
+
+ +
+
+

Project Engineer

+
Anchor Point IT Solutions
+
December 2023 - June 2024
+
+
+
+ + Executed 5 Microsoft 365 and SharePoint migrations with downtime reduced by 60%. +
+
+ + Implemented comprehensive security stack including BlueMira & DUO (Identity), SentinelOne (Endpoint), ConnectSecure (Network), and Email Mesh Security. +
+
+ + Reduced security incidents by 83% through security implementations and improved system updates by 60%. +
+
+ + Managed approximately 235 clients with environment sizes ranging from 30 to 1000 people. +
+
+
+ +
+
+

Interim Virtual Chief Security Officer

+
Technology Response Team, LLC
+
August 2023 - September 2023
+
+
+
+ + Served as temporary VCSO for ~120 clients, conducting penetration testing using BURP Professional. +
+
+ + Managed enterprise security stack deployment including Blackpoint & Webroot (Endpoint), DNSFilter (Network), and ThreatLocker (Application Control). +
+
+ + Administered Azure AD security policies and MFA enforcement, reducing monthly vulnerabilities by at least 20%. +
+
+
+ +
+
+

Network Engineer II

+
NOVUS Professional Services, Inc.
+
August 2022 - March 2023
+
+
+
+ + Designed and implemented a WiFi testing cage for remote firmware testing of router models (Wave2, WiFi6). +
+
+ + Developed Python automation for Plume device registration and Ansible scripts for network tasks. +
+
+ + Managed RF testing and signal verification across 9 headends and maintained network connectivity for ~100 routers across two sites. +
+
+
+ +
+
+

Field Engineer

+
COMPUTEK Dental Systems
+
December 2021 - August 2022
+
+
+
+ + Managed IT infrastructure for 300+ dental practices (3700+ workstations, ~300 Windows Servers). +
+
+ + Developed VSA Deployer application (Kaseya VSA RMM) for agent installation, reducing deployment time by 80%. +
+
+ + Maintained server, Hyper-V VM, and MySQL/MSSQL backups using N-Able Backups, Windows Server Backups and AIS. +
+
+
+ +
+
+

End-to-End Systems Engineer

+
Lockheed Martin
+
June 2018 - December 2019
+
+
+
+ + Maintained 2 IRON databases (AIMS and RAPID) with ~1800 configurations each, ensuring 100% database accuracy. +
+
+ + Collaborated with engineering team to implement Remote Tracking Station (RTS) configurations. +
+
+ + Identified and documented an average of 27 critical defects every month. +
+
+
+
+ + +
+

Technical Skills

+ +
+
+

Cloud & Infrastructure

+
+ Microsoft Azure + Azure AD + SharePoint + Teams + AWS + EC2 + S3 + GCP + VMware ESXi/vSphere + Hyper-V + Docker + Kubernetes (K3s) + ProxMox + Traefik + CI/CD +
+
+ +
+

Networking

+
+ LAN/WAN + VPN + OSPF + EIGRP + STP + HSRP + VTP + IPv4/IPv6 + ACLs + NAT/PAT + DNS/DHCP + VLANs + QoS + Cisco Routers + Catalyst Switches + ASA Firewalls + UniFi Systems + pfSense + OPNsense +
+
+ +
+

Programming/Scripting

+
+ Python + JavaScript (Node.js) + PowerShell + Bash + C/C++ + SQL + MySQL/MSSQL + AutoHotkey + Ansible +
+
+ +
+

Security

+
+ Penetration Testing + BURP Professional + SentinelOne + Blackpoint + Webroot + ThreatLocker + Zero-Trust Architecture + HIPAA Compliance + BlueMira + DUO + DNSFilter + Email Mesh Security + MFA +
+
+ +
+

Operating Systems

+
+ Windows Server + Active Directory + Group Policy + Exchange Server + Linux + Ubuntu + CentOS + Debian + Fedora + Kali Linux + Cisco IOS +
+
+ +
+

GIS & Data Science

+
+ Geospatial Mapping + GeoPandas + GDAL/OGR + KML Generation + Data Visualization + Machine Learning + TensorFlow + PyTorch + Scikit-learn + Pandas + NumPy + Matplotlib + Seaborn +
+
+ +
+

Management & PSA Tools

+
+ N-able N-central + Kaseya VSA + ConnectWise Automate + ConnectWise PSA + PRTG + SolarWinds + Addigy + ImmyBot + Commit Ticket CRM +
+
+
+
+ + +
+

Education

+ +
+

Bachelor of Science, Computer Science

+
Western Governors University
+
June 2019 - April 2023
+
+
+ + Activities and societies: Sigma Alpha Pi Honors Society (The National Society of Leadership and Success) +
+
+
+ Skills: Python (Programming Language) · Project Management · Machine Learning · Team Leadership +
+
+ +
+

Cyber Ops

+
Cisco Networking Academy
+
2018
+
+ Skills: Networking · Cyber-security · Cisco Technologies +
+
+ +
+

Computer Science and Innovation

+
University of Colorado Colorado Springs (UCCS)
+
January 2017 - December 2017
+
Grade: 4.0
+
+ Skills: C++ · Team Leadership +
+
+ +
+

Associate's degree, General Studies

+
Pikes Peak State College
+
2015 - 2018
+
Grade: 4.0
+
+
+ + Activities and societies: Phi Theta Kappa Honor Society +
+
+
+ Skills: Linux · Virtual Server · C++ · System Administration · Wireless +
+
+ +
+

Associate's Degree, Computer Wide Area Networks

+
Front Range Community College
+
2014 - 2016
+
Grade: 3.87
+
+
+ + Activities and societies: Phi Theta Kappa Honor Society +
+
+ + Magna Cum Laude honors +
+
+
+ Skills: Virtual Server · C++ · Networking · Wireless +
+
+
+ + +
+

Certifications

+ +
+
+ + Project+ (CompTIA) +
+
+ + Network+ (FRCC) +
+
+ + A+ (FRCC) +
+
+ + CCNA Cyber Ops (2021) +
+
+ + CCNA Routing & Switching (2021) +
+
+ + Virtual Cyber Security Officer Training (vCSO Advanced) +
+
+
+ + +
+

Notable Projects

+ +
+
+

Full-Access Wi-Fi Testing Cage

+

Designed and implemented a comprehensive testing environment for router firmware validation with remote access capabilities. Engineered cable modem/SONU configurations for MAP-T and dual-stack testing with automated relay and RF switcher control.

+
+ RF Engineering + Network Testing + CAD Prototyping + Serial Interface + Automation +
+
+ +
+

TerraTracer GIS Platform

+

A GIS mapping platform used by mining claim prospectors to automate boundary plotting and compliance verification, reducing manual research by 85% and improving claim success rates by 40%.

+
+ Python + Node.js + GeoPandas + KML + GDAL/OGR +
+
+ +
+

VSA Deployer

+

Custom application for streamlining Kaseya VSA RMM agent installation, reducing deployment time by 80% across dental practice environments. Implemented for 300+ practices with 3700+ workstations.

+
+ PowerShell + AutoHotkey + RMM + Kaseya VSA +
+
+ +
+

AI-Driven Car Price Prediction

+

Developed machine learning model for predicting used car prices with over 90% accuracy using Random Forest Regression and comprehensive feature engineering.

+
+ Python + Scikit-learn + Pandas + Random Forest + Jupyter +
+
+
+
+ + +
+ + + + + + + + \ No newline at end of file diff --git a/styles.css b/styles.css new file mode 100644 index 0000000..3083be5 --- /dev/null +++ b/styles.css @@ -0,0 +1,1497 @@ +/* +* Main stylesheet for argobox.com +* Modern tech portfolio design with animation effects +*/ + +:root { + /* Main Colors */ + --primary-bg: #0f172a; + --secondary-bg: #1e293b; + --accent: #3b82f6; + --accent-darker: #2563eb; + --accent-gradient: linear-gradient(135deg, #2563eb, #3b82f6); + --accent-glow: 0 0 15px rgba(59, 130, 246, 0.5); + + /* Text Colors */ + --text-primary: #e2e8f0; + --text-secondary: #94a3b8; + --text-accent: #3b82f6; + + /* Status Colors */ + --success: #10b981; + --warning: #f59e0b; + --error: #ef4444; + --info: #0ea5e9; + + /* UI Elements */ + --border: rgba(71, 85, 105, 0.5); + --card-bg: rgba(30, 41, 59, 0.8); + --card-hover-bg: rgba(30, 41, 59, 0.95); + --card-shadow: 0 10px 25px -5px rgba(0, 0, 0, 0.3); + --glass-effect: saturate(180%) blur(10px); + + /* Animation Timing */ + --transition-fast: 0.2s ease; + --transition-normal: 0.3s ease; + --transition-slow: 0.5s ease; +} + +/* Reset & Base Styles */ +*, *::before, *::after { + margin: 0; + padding: 0; + box-sizing: border-box; +} + +html { + scroll-behavior: smooth; + scroll-padding-top: 80px; +} + +body { + font-family: 'Inter', system-ui, -apple-system, sans-serif; + background-color: var(--primary-bg); + color: var(--text-primary); + line-height: 1.6; + overflow-x: hidden; + min-height: 100vh; + background-image: + radial-gradient(circle at 20% 35%, rgba(29, 78, 216, 0.15) 0%, transparent 50%), + radial-gradient(circle at 75% 60%, rgba(14, 165, 233, 0.1) 0%, transparent 50%); +} + +/* Typography */ +h1, h2, h3, h4, h5, h6 { + font-weight: 700; + line-height: 1.2; +} + +a { + text-decoration: none; + color: var(--accent); + transition: color var(--transition-normal); +} + +a:hover { + color: var(--accent-darker); +} + +/* Layout */ +.container { + max-width: 1200px; + margin: 0 auto; + padding: 0 1.5rem; +} + +section { + padding: 6rem 0; + position: relative; +} + +/* Button Styles */ +.btn { + display: inline-flex; + align-items: center; + justify-content: center; + padding: 0.75rem 1.5rem; + font-weight: 600; + border-radius: 0.5rem; + transition: all var(--transition-normal); + cursor: pointer; + position: relative; + overflow: hidden; + border: none; + outline: none; + gap: 0.75rem; +} + +.btn::before { + content: ''; + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + background: rgba(255, 255, 255, 0.1); + transform: translateX(-100%) rotate(45deg); + transition: transform 0.6s; +} + +.btn:hover::before { + transform: translateX(100%) rotate(45deg); +} + +.btn-primary { + background: var(--accent-gradient); + color: white; + box-shadow: 0 4px 6px -1px rgba(59, 130, 246, 0.2), 0 2px 4px -1px rgba(59, 130, 246, 0.1); +} + +.btn-primary:hover { + box-shadow: var(--accent-glow), 0 10px 15px -3px rgba(59, 130, 246, 0.3); + transform: translateY(-2px); +} + +.btn-outline { + background-color: transparent; + border: 2px solid var(--accent); + color: var(--accent); +} + +.btn-outline:hover { + background-color: var(--accent); + color: white; + box-shadow: var(--accent-glow); + transform: translateY(-2px); +} + +.btn-icon { + font-size: 0.9rem; + transition: transform 0.3s ease; +} + +.btn:hover .btn-icon { + transform: translateX(4px); +} + +/* Featured button with pulse effect */ +.btn-featured { + position: relative; +} + +.pulse-ring { + position: absolute; + top: -2px; + left: -2px; + right: -2px; + bottom: -2px; + border-radius: 0.5rem; + border: 2px solid var(--accent); + opacity: 0; + animation: pulse-border 2s infinite; +} + +@keyframes pulse-border { + 0% { + transform: scale(1); + opacity: 1; + } + 100% { + transform: scale(1.1); + opacity: 0; + } +} + +/* Navigation */ +.navbar { + position: fixed; + top: 0; + left: 0; + width: 100%; + z-index: 1000; + backdrop-filter: var(--glass-effect); + -webkit-backdrop-filter: var(--glass-effect); + background-color: rgba(15, 23, 42, 0.8); + border-bottom: 1px solid var(--border); + transition: all var(--transition-normal); +} + +.navbar.scrolled { + background-color: rgba(15, 23, 42, 0.95); + box-shadow: 0 4px 20px rgba(0, 0, 0, 0.2); +} + +.navbar .container { + display: flex; + justify-content: space-between; + align-items: center; + height: 4.5rem; +} + +.logo { + display: flex; + align-items: center; + font-weight: 700; + font-size: 1.5rem; +} + +.logo-text { + color: var(--accent); +} + +.logo-dot { + color: var(--text-primary); +} + +.nav-menu { + display: flex; + align-items: center; + gap: 2rem; +} + +.nav-link { + position: relative; + color: var(--text-secondary); + font-weight: 500; + padding: 0.5rem; + transition: color var(--transition-normal); +} + +.nav-link::after { + content: ''; + position: absolute; + bottom: 0; + left: 0; + width: 0; + height: 2px; + background: var(--accent-gradient); + transition: width var(--transition-normal); + border-radius: 1px; +} + +.nav-link:hover, .nav-link.active { + color: var(--text-primary); +} + +.nav-link:hover::after, .nav-link.active::after { + width: 100%; +} + +.nav-buttons { + display: flex; + align-items: center; + gap: 1rem; +} + +.dashboard-link { + display: flex; + align-items: center; + gap: 0.5rem; + background: rgba(59, 130, 246, 0.15); + color: var(--text-primary); + padding: 0.5rem 1rem; + border-radius: 9999px; + font-weight: 500; + transition: all var(--transition-normal); +} + +.dashboard-link:hover { + background: rgba(59, 130, 246, 0.3); + color: var(--text-primary); + transform: translateY(-1px); +} + +.menu-toggle { + display: none; + background: transparent; + border: none; + color: var(--text-primary); + cursor: pointer; + font-size: 1.5rem; +} + +/* Hero Section */ +.hero { + min-height: 100vh; + display: flex; + align-items: center; + position: relative; + overflow: hidden; + padding-top: 6rem; + padding-bottom: 0; +} + +.hero-content { + display: grid; + grid-template-columns: 1fr 1fr; + grid-template-areas: + "intro dashboard" + "cta cta"; + gap: 2.5rem; + align-items: start; +} + +/* Background particles and floating icons */ +.particles-container, .floating-icons { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + overflow: hidden; + z-index: -1; +} + +.particle { + position: absolute; + background-color: rgba(59, 130, 246, 0.2); + border-radius: 50%; + pointer-events: none; +} + +.floating-icon { + position: absolute; + color: rgba(59, 130, 246, 0.05); + animation: float-icon 15s linear infinite; + opacity: 0.3; +} + +@keyframes float-icon { + 0% { + transform: translateY(100vh) rotate(0deg); + } + 100% { + transform: translateY(-100px) rotate(360deg); + } +} + +/* Name and role section styling */ +.intro-section { + grid-area: intro; + animation: fadeIn 1s ease forwards; +} + +.name-section { + display: flex; + align-items: baseline; + margin-bottom: 0.5rem; + flex-wrap: wrap; /* Allow wrapping on small screens */ +} + +.name { + font-size: 2.5rem; + font-weight: 700; + color: var(--text-primary); + margin-right: 0.5rem; + position: relative; + display: inline-block; + background: linear-gradient(to right, #fff, #e2e8f0); + -webkit-background-clip: text; + background-clip: text; + color: transparent; +} + +.your-text { + font-size: 1.25rem; + font-weight: 400; + color: var(--text-secondary); + font-style: italic; + opacity: 0.8; +} + +.hero-title { + font-size: 3.25rem; + margin-bottom: 2.5rem; /* Increase from 1.5rem to 2.5rem for more space */ + line-height: 1.2; /* Slightly increased from 1.1 for better spacing */ + min-height: 9rem; /* Increased from 7rem to provide more space */ +} + +.role-wrapper { + position: relative; + display: block; + height: 100%; + width: 100%; +} + +.role { + position: absolute; + top: 0; + left: 0; + width: 100%; + opacity: 0; + transform: translateY(20px); + transition: opacity 0.8s ease, transform 0.8s ease; + padding-bottom: 1rem; /* Add padding at the bottom of each role */ +} + +.role.active { + opacity: 1; + transform: translateY(0); +} + +.highlight { + background: var(--accent-gradient); + -webkit-background-clip: text; + background-clip: text; + color: transparent; + position: relative; +} + +.highlight::after { + content: ''; + position: absolute; + width: 100%; + height: 5px; + bottom: 5px; + left: 0; + background: var(--accent-gradient); + border-radius: 5px; + opacity: 0.3; + z-index: -1; +} + +.hero-description { + font-size: 1.2rem; + color: var(--text-secondary); + margin-top: 1.5rem; /* Add explicit top margin */ + margin-bottom: 2rem; + max-width: 550px; + position: relative; /* Make it position relative */ + z-index: 1; /* Ensure it's above the role titles */ +} + +/* Terminal text that appears directly on the page */ +.inline-terminal { + display: block; + margin-bottom: 2rem; + font-family: 'JetBrains Mono', monospace; + font-size: 1.1rem; + color: var(--accent); + background-color: rgba(15, 23, 42, 0.2); + padding: 0.75rem 1rem; + border-radius: 0.5rem; + border-left: 3px solid var(--accent); + position: relative; + width: 100%; /* Full width */ + height: 3.5rem; /* Fixed height */ + overflow: hidden; /* Hide overflow */ +} + +.terminal-text { + display: inline-block; + position: relative; + white-space: nowrap; + width: 100%; /* Make it take up full width */ + overflow: hidden; + text-overflow: ellipsis; +} + +.terminal-text::after { + content: '|'; + position: absolute; + right: -0.5rem; + top: 0; + animation: cursor-blink 1s step-end infinite; +} + +@keyframes cursor-blink { + 0%, 100% { opacity: 1; } + 50% { opacity: 0; } +} + +/* Dashboard section styling */ +.dashboard-section { + grid-area: dashboard; + position: relative; + animation: fadeIn 1s ease 0.3s forwards; + opacity: 0; +} + +.status-pill { + position: absolute; + top: -0.5rem; + right: 0.5rem; + display: flex; + align-items: center; + background: rgba(16, 185, 129, 0.15); + padding: 0.4rem 0.8rem; + border-radius: 9999px; + font-size: 0.85rem; + z-index: 10; + box-shadow: 0 0 15px rgba(16, 185, 129, 0.3); +} + +.live-indicator { + width: 10px; + height: 10px; + background-color: var(--success); + border-radius: 50%; + display: inline-block; + margin-right: 0.5rem; + position: relative; +} + +.live-indicator::after { + content: ''; + position: absolute; + top: -3px; + left: -3px; + width: 16px; + height: 16px; + border-radius: 50%; + background-color: var(--success); + animation: pulse 2s infinite; + opacity: 0.7; + z-index: -1; +} + +@keyframes pulse { + 0% { + transform: scale(1); + opacity: 0.7; + } + 70% { + transform: scale(1.5); + opacity: 0; + } + 100% { + transform: scale(1); + opacity: 0; + } +} + +.tech-dashboard { + max-width: 100%; + border-radius: 0.75rem; + overflow: hidden; + border: 1px solid var(--border); + box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.3), 0 10px 10px -5px rgba(0, 0, 0, 0.1); + position: relative; + transform: perspective(1000px) rotateY(-5deg) rotateX(5deg); + transition: all 0.5s ease; + background-color: var(--card-bg); + animation: float 6s ease-in-out infinite; +} + +.tech-dashboard:hover { + transform: perspective(1000px) rotateY(0deg) rotateX(0deg); + box-shadow: 0 25px 30px -5px rgba(0, 0, 0, 0.4), 0 10px 10px -5px rgba(0, 0, 0, 0.1), 0 0 15px 5px rgba(59, 130, 246, 0.15); +} + +@keyframes float { + 0% { transform: perspective(1000px) rotateY(-5deg) rotateX(5deg) translateY(0px); } + 50% { transform: perspective(1000px) rotateY(-5deg) rotateX(5deg) translateY(-10px); } + 100% { transform: perspective(1000px) rotateY(-5deg) rotateX(5deg) translateY(0px); } +} + +.data-stream { + height: 60px; + position: relative; + overflow: hidden; + background-color: var(--secondary-bg); + background-image: + linear-gradient(rgba(255, 255, 255, 0.03) 1px, transparent 1px), + linear-gradient(90deg, rgba(255, 255, 255, 0.03) 1px, transparent 1px); + background-size: 20px 20px; +} + +.data-line { + position: absolute; + height: 1px; + background: linear-gradient(90deg, var(--accent), transparent); + opacity: 0.7; + top: 50%; + left: -100%; + width: 50%; + animation: streamData 3s linear infinite; +} + +.data-line:nth-child(1) { + animation-duration: 3s; + animation-delay: 0s; + width: 70%; +} +.data-line:nth-child(2) { + animation-duration: 2.5s; + animation-delay: 0.5s; + opacity: 0.5; + top: 30%; + width: 40%; +} +.data-line:nth-child(3) { + animation-duration: 2s; + animation-delay: 1s; + top: 70%; + width: 60%; +} +.data-line:nth-child(4) { + animation-duration: 4s; + animation-delay: 1.5s; + opacity: 0.6; + top: 20%; + width: 50%; +} +.data-line:nth-child(5) { + animation-duration: 3.5s; + animation-delay: 2s; + top: 80%; + width: 30%; +} + +@keyframes streamData { + 0% { left: -100%; } + 100% { left: 100%; } +} + +.monitoring-terminal { + padding: 0.75rem; + background-color: rgba(11, 17, 32, 0.98); + max-height: 200px; + overflow: hidden; + font-family: 'JetBrains Mono', monospace; + font-size: 0.8rem; + color: var(--text-secondary); + line-height: 1.6; +} + +.terminal-line { + margin-bottom: 0.4rem; + white-space: nowrap; +} + +.terminal-line:first-child { + color: var(--accent); + font-weight: 500; +} + +.success { + color: var(--success); +} + +.warning { + color: var(--warning); +} + +.info { + color: var(--info); +} + +/* Call to action buttons */ +.cta-buttons { + grid-area: cta; + display: flex; + flex-wrap: wrap; + gap: 1rem; + margin-top: 1rem; + animation: fadeIn 1s ease 0.6s forwards; + opacity: 0; +} + +/* Solutions Showcase Section */ +.solutions-showcase { + background: linear-gradient(180deg, var(--primary-bg) 0%, rgba(30, 41, 59, 0.8) 100%); + padding: 3rem 0; + margin-top: -1rem; + border-top: 1px solid rgba(59, 130, 246, 0.1); + border-bottom: 1px solid rgba(59, 130, 246, 0.1); + position: relative; +} + +.solutions-showcase::before { + content: ""; + position: absolute; + top: 0; + left: 0; + right: 0; + height: 100px; + background: linear-gradient(to bottom, rgba(59, 130, 246, 0.05), transparent); + opacity: 0.5; +} + +.solutions-header { + text-align: center; + margin-bottom: 2rem; +} + +.solutions-title { + font-size: 1.5rem; + color: var(--text-primary); + position: relative; + display: inline-block; + margin-bottom: 0.5rem; +} + +.solutions-title::after { + content: ''; + position: absolute; + bottom: -0.5rem; + left: 10%; + width: 80%; + height: 3px; + background: var(--accent-gradient); + border-radius: 3px; +} + +.solutions-carousel { + position: relative; + height: 160px; /* Increased height to accommodate larger content */ + margin: 0 auto; + max-width: 700px; +} + +.solution-slide { + background: var(--card-bg); + border: 1px solid var(--border); + border-radius: 1rem; + padding: 1.5rem 2rem; + position: absolute; + top: 0; + left: 0; + right: 0; + opacity: 0; + transform: translateX(50px); + transition: all 0.6s cubic-bezier(0.4, 0, 0.2, 1); + display: flex; + flex-direction: column; + justify-content: center; + height: 100%; + text-align: left; /* Ensure text alignment is consistent */ +} + +.solution-slide.active { + opacity: 1; + transform: translateX(0); +} + +.solution-slide h4 { + font-size: 1.2rem; + margin-bottom: 0.5rem; + color: var(--text-primary); +} + +.solution-slide p { + color: var(--text-secondary); + font-size: 0.95rem; +} + +.solution-icon { + font-size: 1.5rem; + color: var(--accent); + margin-bottom: 0.75rem; +} + +.slider-controls { + display: flex; + justify-content: center; + flex-wrap: wrap; /* Allow dots to wrap on small screens */ + gap: 0.75rem; + margin-top: 1.5rem; + padding: 0 0.5rem; /* Add some padding for mobile */ +} + +.slider-dot { + width: 12px; + height: 12px; + border-radius: 50%; + background-color: rgba(59, 130, 246, 0.3); + border: none; + cursor: pointer; + transition: all 0.3s ease; + padding: 0; +} + +.slider-dot.active { + background-color: var(--accent); + transform: scale(1.2); +} + +/* Fade-in animation */ +@keyframes fadeIn { + from { opacity: 0; } + to { opacity: 1; } +} + +/* Services Section */ +.services { + background-color: var(--secondary-bg); + position: relative; + isolation: isolate; +} + +.services::before { + content: ''; + position: absolute; + width: 200%; + height: 200px; + top: -100px; + left: -50%; + background-color: var(--secondary-bg); + transform: rotate(-2deg); + z-index: -1; +} + +.section-header { + text-align: center; + margin-bottom: 4rem; +} + +.section-title { + font-size: 2.5rem; + margin-bottom: 1rem; + position: relative; + display: inline-block; +} + +.section-title::after { + content: ''; + position: absolute; + bottom: -0.5rem; + left: 50%; + transform: translateX(-50%); + width: 80px; + height: 4px; + background: var(--accent-gradient); + border-radius: 2px; +} + +.section-description { + max-width: 700px; + margin: 0 auto; + color: var(--text-secondary); + font-size: 1.1rem; +} + +.services-grid { + display: grid; + grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); + gap: 2rem; +} + +.service-card { + background-color: var(--card-bg); + border-radius: 1rem; + border: 1px solid var(--border); + padding: 2rem; + transition: all var(--transition-normal); + position: relative; + overflow: hidden; + z-index: 1; +} + +.service-card::before { + content: ''; + position: absolute; + top: 0; + left: 0; + right: 0; + height: 0; + background: var(--accent-gradient); + opacity: 0.1; + transition: height var(--transition-slow); + z-index: -1; +} + +.service-card:hover { + transform: translateY(-10px); + box-shadow: var(--card-shadow); + border-color: var(--accent); +} + +.service-card:hover::before { + height: 100%; +} + +.service-icon { + font-size: 2.5rem; + color: var(--accent); + margin-bottom: 1.5rem; + transition: all var(--transition-normal); +} + +.service-card:hover .service-icon { + transform: scale(1.1); + text-shadow: var(--accent-glow); +} + +.service-title { + font-size: 1.5rem; + margin-bottom: 1rem; +} + +.service-description { + color: var(--text-secondary); + margin-bottom: 1.5rem; + transition: color var(--transition-normal); +} + +.service-card:hover .service-description { + color: var(--text-primary); +} + +.tech-badges { + display: flex; + flex-wrap: wrap; + gap: 0.5rem; +} + +.tech-badge { + background-color: rgba(59, 130, 246, 0.1); + border: 1px solid rgba(59, 130, 246, 0.3); + color: var(--accent); + font-size: 0.8rem; + font-weight: 500; + padding: 0.25rem 0.75rem; + border-radius: 9999px; + transition: all var(--transition-normal); +} + +.service-card:hover .tech-badge { + background-color: rgba(59, 130, 246, 0.2); + border-color: var(--accent); +} + +/* Lab Section */ +.lab-grid { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); + gap: 2rem; + margin-bottom: 3rem; +} + +.lab-card { + background-color: var(--card-bg); + border-radius: 1rem; + border: 1px solid var(--border); + padding: 2rem; + height: 100%; + transition: all var(--transition-normal); +} + +.lab-card:hover { + transform: translateY(-5px); + box-shadow: var(--card-shadow); + border-color: var(--accent); +} + +.lab-card-title { + font-size: 1.5rem; + margin-bottom: 1rem; + color: var(--text-primary); +} + +.lab-card-description { + color: var(--text-secondary); + margin-bottom: 1.5rem; +} + +.lab-subtitle { + font-size: 1.1rem; + font-weight: 600; + color: var(--accent); + margin-bottom: 1rem; +} + +.lab-list { + margin-bottom: 1.5rem; + list-style-type: none; +} + +.lab-list li { + display: flex; + align-items: center; + margin-bottom: 0.75rem; + color: var(--text-secondary); +} + +.bullet { + display: inline-block; + width: 6px; + height: 6px; + border-radius: 50%; + background-color: var(--accent); + margin-right: 0.75rem; +} + +.lab-buttons { + display: flex; + gap: 1rem; + flex-wrap: wrap; + margin-top: 2rem; +} + +.flex-center { + display: flex; + align-items: center; + gap: 0.5rem; +} + +/* Metrics */ +.metric { + margin-bottom: 1.5rem; +} + +.metric-header { + display: flex; + justify-content: space-between; + margin-bottom: 0.5rem; +} + +.metric-name { + color: var(--text-secondary); +} + +.metric-value { + color: var(--accent); + font-weight: 500; +} + +.metric-bar { + height: 0.5rem; + background-color: rgba(59, 130, 246, 0.1); + border-radius: 9999px; + overflow: hidden; +} + +.metric-progress { + height: 100%; + background: var(--accent-gradient); + border-radius: 9999px; + position: relative; + overflow: hidden; +} + +.metric-progress::after { + content: ''; + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + background: linear-gradient(90deg, + transparent 0%, + rgba(255, 255, 255, 0.2) 50%, + transparent 100%); + animation: shimmer 2s infinite; +} + +@keyframes shimmer { + 0% { transform: translateX(-100%); } + 100% { transform: translateX(100%); } +} + +.services-grid-small { + display: grid; + grid-template-columns: repeat(auto-fill, minmax(130px, 1fr)); + gap: 0.75rem; +} + +.service-tag { + display: flex; + align-items: center; + gap: 0.5rem; + background-color: rgba(59, 130, 246, 0.1); + padding: 0.5rem; + border-radius: 0.5rem; + font-size: 0.85rem; +} + +.status-dot { + width: 8px; + height: 8px; + border-radius: 50%; + background-color: var(--success); + margin-right: 0.5rem; +} + +/* Code Section */ +.code-card { + background-color: var(--card-bg); + border-radius: 1rem; + border: 1px solid var(--border); + padding: 2rem; + margin-bottom: 2rem; + transition: all var(--transition-normal); +} + +.code-card:hover { + box-shadow: var(--card-shadow); + border-color: var(--accent); +} + +.code-card-title { + font-size: 1.5rem; + margin-bottom: 1rem; +} + +.code-card-description { + color: var(--text-secondary); + margin-bottom: 1.5rem; +} + +.code-block { + background-color: rgb(15, 20, 30); + border-radius: 0.5rem; + padding: 1.5rem; + font-family: 'JetBrains Mono', monospace; + font-size: 0.85rem; + line-height: 1.6; + overflow-x: auto; +} + +.comment { color: #8b949e; } +.keyword { color: #ff7b72; } +.function { color: #d2a8ff; } +.string { color: #a5d6ff; } + +/* Projects Section */ +.projects { + background-color: var(--secondary-bg); +} + +.projects-grid { + display: grid; + grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); + gap: 2rem; +} + +.project-card { + background-color: var(--card-bg); + border-radius: 1rem; + border: 1px solid var(--border); + padding: 2rem; + transition: all var(--transition-normal); + height: 100%; + display: flex; + flex-direction: column; +} + +.project-card:hover { + transform: translateY(-10px); + box-shadow: var(--card-shadow); + border-color: var(--accent); +} + +.project-icon { + font-size: 2.5rem; + color: var(--accent); + margin-bottom: 1.5rem; +} + +.project-title { + font-size: 1.5rem; + margin-bottom: 1rem; +} + +.project-description { + color: var(--text-secondary); + margin-bottom: 1.5rem; + flex-grow: 1; +} + +/* Experience Section */ +.timeline { + position: relative; + max-width: 800px; + margin: 0 auto; +} + +.timeline::before { + content: ''; + position: absolute; + top: 0; + bottom: 0; + width: 2px; + background-color: var(--border); + left: 25px; +} + +.timeline-item { + position: relative; + padding-left: 4rem; + margin-bottom: 3rem; +} + +.timeline-dot { + position: absolute; + left: 0; + top: 0; + width: 16px; + height: 16px; + background: var(--accent-gradient); + border-radius: 50%; + transform: translateX(-7px); + z-index: 1; +} + +.timeline-content { + background-color: var(--card-bg); + border-radius: 1rem; + border: 1px solid var(--border); + padding: 1.5rem; + transition: all var(--transition-normal); +} + +.timeline-content:hover { + transform: translateY(-5px); + box-shadow: var(--card-shadow); + border-color: var(--accent); +} + +.timeline-title { + font-size: 1.25rem; + margin-bottom: 0.5rem; +} + +.timeline-subtitle { + color: var(--accent); + font-weight: 500; + margin-bottom: 0.5rem; +} + +.timeline-date { + font-size: 0.85rem; + color: var(--text-secondary); + margin-bottom: 1rem; +} + +/* Contact Section */ +.contact-grid { + display: grid; + grid-template-columns: 1fr 2fr; + gap: 3rem; +} + +.contact-info { + display: flex; + flex-direction: column; + gap: 2rem; +} + +.contact-item { + background-color: var(--card-bg); + border-radius: 1rem; + border: 1px solid var(--border); + padding: 1.5rem; + transition: all var(--transition-normal); +} + +.contact-item:hover { + transform: translateY(-5px); + box-shadow: var(--card-shadow); + border-color: var(--accent); +} + +.contact-icon { + font-size: 2rem; + color: var(--accent); + margin-bottom: 1rem; +} + +.contact-title { + font-size: 1.2rem; + margin-bottom: 0.5rem; +} + +.contact-form-container { + background-color: var(--card-bg); + border-radius: 1rem; + border: 1px solid var(--border); + padding: 2rem; + transition: all var(--transition-normal); +} + +.contact-form-container:hover { + box-shadow: var(--card-shadow); + border-color: var(--accent); +} + +.contact-form { + display: grid; + gap: 1.5rem; +} + +.form-group { + display: flex; + flex-direction: column; + gap: 0.5rem; +} + +.form-group label { + font-weight: 500; + color: var(--text-primary); +} + +.form-group input, +.form-group textarea { + padding: 0.75rem; + background-color: rgba(15, 23, 42, 0.6); + border: 1px solid var(--border); + border-radius: 0.5rem; + color: var(--text-primary); + font-family: 'Inter', sans-serif; + transition: all var(--transition-normal); +} + +.form-group input:focus, +.form-group textarea:focus { + outline: none; + border-color: var(--accent); + box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.3); +} + +/* Footer */ +.footer { + background-color: var(--secondary-bg); + padding: 4rem 0 1rem; + margin-top: 6rem; +} + +.footer-content { + display: flex; + justify-content: space-between; + align-items: center; + margin-bottom: 3rem; + flex-wrap: wrap; + gap: 2rem; +} + +.footer-logo { + font-weight: 700; + font-size: 1.5rem; +} + +.footer-links { + display: flex; + gap: 2rem; +} + +.footer-links a { + color: var(--text-secondary); + transition: color var(--transition-normal); +} + +.footer-links a:hover { + color: var(--text-primary); +} + +.footer-social { + display: flex; + gap: 1.5rem; +} + +.footer-social a { + color: var(--text-secondary); + font-size: 1.25rem; + transition: all var(--transition-normal); +} + +.footer-social a:hover { + color: var(--accent); + transform: translateY(-3px); +} + +.footer-bottom { + text-align: center; + color: var(--text-secondary); + font-size: 0.9rem; + padding-top: 2rem; + border-top: 1px solid var(--border); +} + +/* Reveal animations on scroll */ +.reveal { + opacity: 0; + transform: translateY(30px); + transition: all 0.8s ease; +} + +.reveal.active { + opacity: 1; + transform: translateY(0); +} + +/* Responsive Styles */ +@media (max-width: 1024px) { + .hero-content { + grid-template-columns: 1fr; + grid-template-areas: + "intro" + "dashboard" + "cta"; + } + + .hero-title { + font-size: 2.75rem; + min-height: auto; /* Let it adjust naturally on smaller screens */ + margin-bottom: 2rem; + } + + .role { + position: relative; + } + + .solutions-carousel { + height: 180px; /* More space on tablets */ + } +} + +@media (max-width: 768px) { + .hero-title { + font-size: 2.3rem; + } + + .name { + font-size: 2rem; + } + + .solutions-carousel { + height: 200px; /* More space on mobile */ + } + + .solution-slide { + padding: 1.25rem; /* Less padding on mobile */ + } +} + +@media (max-width: 480px) { + .hero-title { + font-size: 1.9rem; /* Smaller on phones */ + } + + .hero-description { + font-size: 1rem; + } + + .name { + font-size: 1.7rem; + } + + .your-text { + font-size: 1rem; + } + + .terminal-text { + font-size: 0.9rem; /* Smaller terminal text on phones */ + } + + .solutions-carousel { + height: 220px; /* Even more space on small phones */ + } +} + +/* Accessibility Enhancements */ +@media (prefers-reduced-motion: reduce) { + * { + animation-duration: 0.01ms !important; + animation-iteration-count: 1 !important; + transition-duration: 0.01ms !important; + scroll-behavior: auto !important; + } +} + +/* Print styles for resume/CV page */ +@media print { + .navbar, .footer, .cta-buttons { + display: none !important; + } + + body { + background-color: white; + color: black; + } + + .container { + width: 100%; + max-width: none; + } + + a { + color: black; + text-decoration: none; + } + + .section { + break-inside: avoid; + page-break-inside: avoid; + } +} \ No newline at end of file