*{margin:0;padding:0;box-sizing:border-box}:root{--font-mono: "Berkeley Mono", "IBM Plex Mono", "JetBrains Mono", "Fira Code", "Monaco", "Courier New", monospace;--font-mono-bold: "JetBrains Mono", "IBM Plex Mono", "Fira Code", "Monaco", "Courier New", monospace;--color-bg: #fafafa;--color-text: #1a1a1a;--color-text-secondary: #666666;--color-text-muted: #999999;--color-border: #e5e5e5;--color-border-light: #f0f0f0;--color-pastel-blue: #a8c5e6;--color-pastel-blue-hover: #96b8dd;--color-pastel-green: #b5d6b8;--color-pastel-green-hover: #a4c9a7;--color-pastel-purple: #d3b8db;--color-pastel-purple-hover: #c7a9d0;--color-pastel-peach: #f5d5a8;--color-pastel-peach-hover: #ecc897;--color-card-bg: #ffffff;--shadow-sm: 0 1px 3px rgba(0, 0, 0, .05);--shadow-md: 0 2px 8px rgba(0, 0, 0, .08);--shadow-hover: 0 4px 12px rgba(0, 0, 0, .12);--spacing-xs: .5rem;--spacing-sm: 1rem;--spacing-md: 1.5rem;--spacing-lg: 2.5rem;--spacing-xl: 4rem;--max-width: 800px;--border-radius: 6px;--border-radius-sm: 4px}html{font-family:var(--font-mono);font-size:16px;line-height:1.65;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overflow-y:scroll}body{background-color:var(--color-bg);color:var(--color-text);padding:var(--spacing-lg) var(--spacing-md);font-weight:400}h1{font-size:2.25rem;font-weight:800;font-family:var(--font-mono-bold);line-height:1.2;margin-bottom:var(--spacing-md);letter-spacing:-.02em}h2{font-size:1.5rem;font-weight:800;font-family:var(--font-mono-bold);line-height:1.3;margin-top:var(--spacing-xl);margin-bottom:var(--spacing-md);letter-spacing:-.01em}h3{font-size:1.125rem;font-weight:800;font-family:var(--font-mono-bold);line-height:1.4;margin-top:0;margin-bottom:var(--spacing-xs)}p{margin-bottom:var(--spacing-sm);line-height:1.75;color:var(--color-text);font-weight:400}em{font-style:italic}code{font-family:var(--font-mono);font-size:.9em}a{color:var(--color-text);text-decoration:none;border-bottom:2px solid var(--color-border);transition:border-color .2s ease,color .2s ease;padding-bottom:1px}a:hover{border-bottom-color:var(--color-text)}.container{max-width:var(--max-width);margin:0 auto}nav{margin-bottom:var(--spacing-xl);padding-bottom:var(--spacing-md);border-bottom:1px solid var(--color-border)}nav ul{list-style:none;display:flex;gap:var(--spacing-xs);flex-wrap:wrap;margin:0;padding:0}nav li{margin-bottom:0;flex:1}nav a{text-decoration:none;border-bottom:none;font-size:1rem;font-weight:500;padding:.625rem 1.125rem;border-radius:var(--border-radius-sm);transition:all .2s ease;display:block;text-align:center;box-shadow:var(--shadow-sm)}nav li:nth-child(1) a{background-color:var(--color-pastel-blue)}nav li:nth-child(2) a{background-color:var(--color-pastel-green)}nav li:nth-child(3) a{background-color:var(--color-pastel-purple)}nav li:nth-child(4) a{background-color:var(--color-pastel-peach)}nav li:nth-child(1) a:hover{background-color:var(--color-pastel-blue-hover)}nav li:nth-child(2) a:hover{background-color:var(--color-pastel-green-hover)}nav li:nth-child(3) a:hover{background-color:var(--color-pastel-purple-hover)}nav li:nth-child(4) a:hover{background-color:var(--color-pastel-peach-hover)}nav a:hover{transform:translateY(-1px);box-shadow:var(--shadow-md)}nav a.active{box-shadow:inset 0 2px 4px #0000001a;transform:none}nav a.active:hover{transform:none;box-shadow:inset 0 2px 4px #00000026}.experience-item,.project-item{margin-bottom:var(--spacing-md);padding:var(--spacing-md);background-color:var(--color-card-bg);border:1px solid var(--color-border-light);border-radius:var(--border-radius);box-shadow:var(--shadow-sm);transition:box-shadow .2s ease,transform .2s ease}.experience-item:hover,.project-item:hover{box-shadow:var(--shadow-md);transform:translateY(-2px)}.experience-item h3,.project-item h3{margin-top:0;font-size:1.0625rem;font-weight:800;font-family:var(--font-mono-bold)}.experience-item h3 a,.project-item h3 a{border-bottom:none;transition:color .2s ease}.experience-item h3 a:hover,.project-item h3 a:hover{color:var(--color-text-secondary)}.meta{color:var(--color-text-secondary);font-size:.875rem;margin-bottom:var(--spacing-sm);display:flex;flex-wrap:wrap;gap:.5rem;align-items:center}.meta-tag{background-color:var(--color-pastel-blue);padding:.3rem .625rem;border-radius:var(--border-radius-sm);font-size:.8125rem;font-weight:500;letter-spacing:.01em;border:1px solid rgba(0,0,0,.06)}.meta-tag.stars{background-color:var(--color-pastel-purple)}.meta-tag.downloads{background-color:var(--color-pastel-green)}.meta-tag.repos{background-color:var(--color-pastel-peach)}.meta-tag.company{background-color:var(--color-pastel-green)}.meta-tag.date{background-color:var(--color-pastel-peach)}.meta-tag.date.current{background-color:var(--color-pastel-purple)}.description{margin-top:var(--spacing-xs)}.contact-links{list-style:none;margin-left:0;display:flex;flex-direction:column;gap:var(--spacing-xs)}.contact-links li{margin-bottom:0}.contact-link{display:inline-block;padding:.75rem 1.25rem;border-radius:var(--border-radius);text-decoration:none;border-bottom:none;transition:all .2s ease;font-weight:500;box-shadow:var(--shadow-sm);border:1px solid rgba(0,0,0,.06)}.contact-link:hover{transform:translateY(-1px);box-shadow:var(--shadow-md)}.contact-link.github{background-color:var(--color-pastel-purple)}.contact-link.github:hover{background-color:var(--color-pastel-purple-hover)}.contact-link.linkedin{background-color:var(--color-pastel-blue)}.contact-link.linkedin:hover{background-color:var(--color-pastel-blue-hover)}.contact-link.strava{background-color:var(--color-pastel-peach)}.contact-link.strava:hover{background-color:var(--color-pastel-peach-hover)}.contact-link.thecrag{background-color:var(--color-pastel-green)}.contact-link.thecrag:hover{background-color:var(--color-pastel-green-hover)}section{margin-bottom:var(--spacing-lg)}section:last-child{margin-bottom:var(--spacing-xl)}ul,ol{margin-left:var(--spacing-md);margin-bottom:var(--spacing-sm)}li{margin-bottom:var(--spacing-xs);line-height:1.7}@media(max-width:768px){html{font-size:15px}body{padding:var(--spacing-md) var(--spacing-sm)}h1{font-size:1.875rem}h2{font-size:1.375rem;margin-top:var(--spacing-lg)}nav{margin-bottom:var(--spacing-lg)}nav ul{gap:var(--spacing-xs)}nav a{font-size:.9375rem;padding:.5rem .875rem}.experience-item,.project-item{padding:var(--spacing-sm)}.meta{gap:.375rem}.meta-tag{font-size:.75rem;padding:.25rem .5rem}}
