This site is a Jekyll static site, but the “desktop to mobile” behavior is almost entirely handled by CSS (Bootstrap 3 + static/css/main.css) and a small amount of Bootstrap JS for the collapsing navigation.
The goal is that as the browser gets narrower (or wider), the same page “reflows” into a layout that still reads well, without needing separate mobile pages.
What “Transition” Means Here
When people say “transitioning from desktop to mobile”, they usually mean:
The browser width changes (resizing a desktop window, or rotating a phone).
The layout adapts at certain width thresholds (“breakpoints”).
Elements stack, shrink, wrap, or hide/show so nothing is cut off and the page stays readable.
This is responsive design, not an animated transition. The main work is deciding what should happen at different widths and encoding that in CSS rules.
What We Use In This Repo
Bootstrap 3 responsive grid and components
Breakpoints (Bootstrap 3 defaults):
xs: < 768px (phones)
sm: >= 768px (tablets)
md: >= 992px (small laptops)
lg: >= 1200px (large desktops)
Typical pattern: content is “stacked” by default, and becomes multi-column once the screen is wide enough (e.g. col-sm-*).
Site-level max width + flexible elements
static/css/main.css defines --content-max-width: 768px; and applies it via .container and .navbar-inner.
Images default to scaling down instead of overflowing (img { max-width: 100%; } and .img-responsive).
The homepage avatar uses a fixed “ideal” size, but is capped by the viewport (max-width: 90vw) so it fits on mobile.
Custom media queries for site-specific behavior
Navigation: custom mobile dropdown behavior is defined under @media (max-width: 767px) in static/css/main.css.
Resume page: uses its own responsive rules (flex layout that becomes stacked on small screens) in static/css/main.css.
Where To Make Changes
Most responsive behavior lives in these places:
Global layout shell: _layouts/layout.html
Includes <meta name="viewport" content="width=device-width, initial-scale=1"> which is required for correct mobile scaling.