feat: Add iOS-style blur bar for mobile buttons and landscape optimizations

Mobile Portrait Enhancements:
- Added iOS-style blur backdrop behind fixed buttons
- Frosted glass effect with backdrop-filter: blur(20px) saturate(180%)
- Semi-transparent background with border-top separator
- Dark mode variant for theme consistency
- Z-index 98 (below buttons at 99)
- pointer-events: none to maintain button animations and clicks

Landscape Orientation Fixes:
- Hide profile photo to maximize vertical space
- Compact header with reduced font sizes (1.2rem)
- Reduced padding on action bar, sidebar, and sections
- Optimized button sizes (40x40px) and positions
- Fixed hamburger menu positioning in landscape

Files Modified:
- static/css/05-responsive/_breakpoints.css: Added blur backdrop and landscape styles
- templates/index.html: Added fixed-buttons-backdrop element
- tests/mjs/48-mobile-landscape-and-blur-test.mjs: Comprehensive test suite

Test Results:
 Blur backdrop exists with correct blur effect
 Fixed position at bottom with 90px height
 Border separator visible (0.5px)
 Photo hidden in landscape mode
 Compact sizing applied in landscape
 All animations maintained (backdrop separate from buttons)

Screenshots:
- tests/screenshots/mobile-portrait-blur-bar.png
- tests/screenshots/mobile-landscape-optimized.png
This commit is contained in:
juanatsap
2025-11-23 08:21:12 +00:00
parent 1adc8efaae
commit dab21f753d
3 changed files with 225 additions and 0 deletions
+104
View File
@@ -665,3 +665,107 @@
}
}
/* ========================================
Mobile: iOS-Style Button Bar with Blur
======================================== */
@media (max-width: 540px) {
/* iOS-style blur bar behind fixed buttons */
.fixed-buttons-backdrop {
position: fixed;
bottom: 0;
left: 0;
right: 0;
height: 90px; /* Enough to cover button area */
background: rgba(255, 255, 255, 0.8);
backdrop-filter: blur(20px) saturate(180%);
-webkit-backdrop-filter: blur(20px) saturate(180%);
border-top: 0.5px solid rgba(0, 0, 0, 0.1);
z-index: 98; /* Below buttons (99) but above content */
pointer-events: none; /* Don't block button clicks */
}
/* Dark mode blur bar */
[data-color-theme="dark"] .fixed-buttons-backdrop,
[data-color-theme="auto"] .fixed-buttons-backdrop {
background: rgba(30, 30, 30, 0.8);
border-top: 0.5px solid rgba(255, 255, 255, 0.1);
}
}
/* ========================================
Landscape Orientation Fixes
======================================== */
@media (max-width: 915px) and (orientation: landscape) {
/* Reduce header size in landscape */
.cv-header {
margin-bottom: 1rem !important;
}
.cv-name {
font-size: 1.2rem !important;
}
.years-experience {
font-size: 0.9em !important;
}
/* Hide photo in landscape to save vertical space */
.cv-photo {
display: none !important;
}
/* Compact action bar */
.action-bar {
padding: 0.5rem 1rem !important;
}
/* Reduce sidebar padding */
.cv-sidebar {
padding: 1rem !important;
}
/* Compact sections */
.section-title {
font-size: 1rem !important;
margin-bottom: 0.5rem !important;
}
/* Reduce margins */
.experience-item,
.project-item,
.course-item {
margin-bottom: 1rem !important;
}
/* Make hamburger menu more accessible in landscape */
.hamburger-menu {
position: fixed !important;
top: 10px !important;
left: 10px !important;
z-index: 1001 !important;
}
/* Adjust fixed buttons for landscape */
.fixed-btn {
bottom: 1rem !important;
width: 40px !important;
height: 40px !important;
}
.back-to-top-btn {
right: 1rem !important;
}
.shortcuts-btn {
left: 1rem !important;
bottom: 5rem !important;
}
.zoom-toggle-btn {
left: 1rem !important;
bottom: 9rem !important;
}
}