*{margin:0;padding:0;box-sizing:border-box}:root{--font-mono: "JetBrains Mono", ui-monospace, "SF Mono", Menlo, Consolas, monospace;--color-bg: #fafafa;--color-text: #1a1a1a;--color-text-secondary: #555555;--color-border: #e2e2e2;--color-card-bg: #ffffff;--color-pastel-blue: #a7c4e5;--color-pastel-green: #b7d6bb;--color-pastel-purple: #d4b8dc;--color-pastel-peach: #f6d6ab;--color-deep-blue: #5b8fcb;--color-deep-green: #6fae78;--color-deep-purple: #a678b6;--color-deep-peach: #e0a04e;--color-tint-blue: #e3edf8;--color-tint-green: #e6f1e7;--color-tint-purple: #f1e7f4;--color-tint-peach: #fcf0df;--accent: var(--color-deep-blue);--shadow-sm: 0 1px 2px rgba(0, 0, 0, .1);--spacing-xs: 8px;--spacing-sm: 16px;--spacing-md: 28px;--spacing-lg: 56px;--spacing-xl: 96px;--max-width: 748px;--border-radius: 4px}.accent-blue{--accent: var(--color-deep-blue)}.accent-green{--accent: var(--color-deep-green)}.accent-purple{--accent: var(--color-deep-purple)}.accent-peach{--accent: var(--color-deep-peach)}html{font-family:var(--font-mono);font-size:15px;line-height:1.75;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overflow-y:scroll}body{background-color:var(--color-bg);color:var(--color-text);font-weight:400}h1{font-size:32px;font-weight:800;line-height:1.3}h1:after{content:"";display:inline-block;width:16px;height:28px;margin-left:10px;vertical-align:-3px;background-color:var(--accent);animation:blink 1.1s linear infinite}h2{font-size:22px;font-weight:800;line-height:1.3;margin-bottom:20px}h3{font-size:17px;font-weight:800;line-height:1.4;margin-bottom:var(--spacing-xs)}p{margin-bottom:var(--spacing-sm)}p:last-child{margin-bottom:0}em{font-style:italic}code{font-family:var(--font-mono);font-size:.93em;padding:1px 6px;border-radius:var(--border-radius);background-color:var(--color-tint-purple)}a{color:var(--color-text);text-decoration:underline;text-decoration-color:var(--accent);text-decoration-thickness:2px;text-underline-offset:5px}a:hover{color:#000}.keyword{padding:1px 6px;border-radius:var(--border-radius);background-color:var(--color-tint-blue)}.keyword.green{background-color:var(--color-tint-green)}.keyword.purple{background-color:var(--color-tint-purple)}.keyword.peach{background-color:var(--color-tint-peach)}.page{position:relative;overflow:hidden;min-height:100vh}.container{position:relative;box-sizing:content-box;max-width:var(--max-width);margin:0 auto;padding:10px 20px var(--spacing-xl)}.backdrop{position:absolute;top:0;left:0;right:0;height:900px;pointer-events:none;-webkit-mask-image:linear-gradient(to bottom,#000 65%,transparent 100%);mask-image:linear-gradient(to bottom,#000 65%,transparent 100%)}.backdrop-dots{position:absolute;inset:0;background-image:radial-gradient(circle at 1px 1px,rgba(26,26,26,.1) 1px,transparent 0);background-size:24px 24px;-webkit-mask-image:linear-gradient(to right,#000 0%,transparent 24%,transparent 76%,#000 100%);mask-image:linear-gradient(to right,#000 0%,transparent 24%,transparent 76%,#000 100%)}.backdrop svg{position:absolute;inset:0;width:100%;height:100%}.circuit-pulses path{animation:flow linear infinite}.circuit-pings circle{transform-box:fill-box;transform-origin:center;animation:ping ease-out infinite}@keyframes flow{0%{stroke-dashoffset:1000}to{stroke-dashoffset:0}}@keyframes ping{0%{transform:scale(1);opacity:.6}70%,to{transform:scale(3.2);opacity:0}}@keyframes blink{0%,49%{opacity:1}50%,to{opacity:0}}nav{margin-bottom:var(--spacing-lg);padding-bottom:22px;border-bottom:1px solid var(--color-border)}nav ul{list-style:none;display:flex;flex-wrap:wrap;gap:var(--spacing-xs)}nav li{flex:1 1 150px}nav a{display:flex;align-items:center;justify-content:center;min-height:44px;border-radius:var(--border-radius);text-decoration:none;box-shadow:var(--shadow-sm);transition:transform .14s ease-out,filter .14s ease-out}nav a:hover{transform:translateY(-2px);filter:brightness(.96)}nav li:nth-child(1) a{background-color:var(--color-pastel-blue);--ring: var(--color-deep-blue)}nav li:nth-child(2) a{background-color:var(--color-pastel-green);--ring: var(--color-deep-green)}nav li:nth-child(3) a{background-color:var(--color-pastel-purple);--ring: var(--color-deep-purple)}nav li:nth-child(4) a{background-color:var(--color-pastel-peach);--ring: var(--color-deep-peach)}nav a.active{font-weight:700;box-shadow:inset 0 0 0 2px var(--ring),var(--shadow-sm)}.status{display:flex;align-items:center;gap:10px;margin-top:10px;font-size:14px;color:var(--color-text-secondary)}.status-dot{position:relative;flex:none;width:8px;height:8px}.status-dot:before,.status-dot:after{content:"";position:absolute;inset:0;border-radius:999px;background-color:var(--color-deep-green)}.status-dot:before{animation:ping 2.6s ease-out infinite}section{margin-top:var(--spacing-md)}section+section{margin-top:var(--spacing-lg)}main ul:not([class]){list-style:none;display:flex;flex-direction:column;gap:var(--spacing-xs);padding-left:8px}main ul:not([class]) li{display:flex;align-items:baseline;gap:14px}main ul:not([class]) li:before{content:"";flex:none;width:8px;height:8px;border-radius:2px;background-color:var(--accent)}main ul:not([class]) li:nth-child(4n+1){--accent: var(--color-deep-blue)}main ul:not([class]) li:nth-child(4n+2){--accent: var(--color-deep-green)}main ul:not([class]) li:nth-child(4n+3){--accent: var(--color-deep-purple)}main ul:not([class]) li:nth-child(4n+4){--accent: var(--color-deep-peach)}.experience-item,.project-item{margin-bottom:var(--spacing-sm);padding:20px 22px;background-color:var(--color-card-bg);border:1px solid var(--color-border);border-radius:var(--border-radius);box-shadow:0 1px 2px #0000000d}.experience-item:last-child,.project-item:last-child{margin-bottom:0}.meta{display:flex;flex-wrap:wrap;align-items:center;gap:var(--spacing-xs);margin-bottom:14px}.meta-tag{padding:2px 8px;border-radius:var(--border-radius);background-color:var(--color-pastel-blue);font-size:13px}.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);box-shadow:inset 0 0 0 2px var(--color-deep-purple)}.description ul{margin-top:14px}.contact-links{list-style:none;display:flex;flex-direction:column;align-items:flex-start;gap:var(--spacing-xs);margin-top:20px}.contact-link{display:flex;align-items:center;min-height:44px;padding:0 18px;border-radius:var(--border-radius);text-decoration:none;box-shadow:var(--shadow-sm);transition:transform .14s ease-out,filter .14s ease-out}.contact-link:hover{transform:translateY(-2px);filter:brightness(.96)}.contact-link.github{background-color:var(--color-pastel-purple)}.contact-link.linkedin{background-color:var(--color-pastel-blue)}.contact-link.strava{background-color:var(--color-pastel-peach)}.contact-link.thecrag{background-color:var(--color-pastel-green)}@media(max-width:768px){h1{font-size:28px}h1:after{width:14px;height:24px}.experience-item,.project-item{padding:16px}}@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
