Files
cv-site/static/css/05-responsive/_breakpoints.css
T
juanatsap 6172ada527 fix: mobile sprite icons overflow in experience section
Sprite icons (.icon-sprite.icon-section) had fixed 80px dimensions
while mobile breakpoint set container to 60px, causing overflow.
Added mobile-specific rules to scale sprites to 60px with proper
background-size and positioning calculations.
2025-12-06 11:59:39 +00:00

1189 lines
32 KiB
CSS

/* ========================================
Desktop: Ensure Sidebar Content Visible (>1280px)
======================================== */
/* ========================================
Responsive: iPad/Tablet - Text Wraps Around Photo (769px - 1280px)
Covers: iPad Mini (768px), iPad (820px), iPad Air (820px), iPad Pro 11" (1194px), iPad Pro 12.9" (1366px in landscape crops to ~1280px)
======================================== */
@media (min-width: 769px) and (max-width: 1280px) {
/* Make ALL text (name, years, intro) wrap around photo like in a magazine */
.cv-header-left {
padding-right: 0; /* Remove padding - text will wrap around floated photo */
}
.cv-photo {
/* Float photo right so ALL content wraps around it */
position: static;
float: right;
margin: 0 0 15px 20px; /* Space for text to wrap: top right bottom left */
shape-outside: margin-box; /* Text follows the margin box shape */
}
/* Text aligns right next to photo */
.cv-name {
text-align: right;
}
.years-experience {
text-align: right;
}
.intro-text {
margin-top: 15px;
}
/* Clear float after the header */
.cv-header-left::after {
content: "";
display: table;
clear: both;
}
}
/* ========================================
Responsive: Medium Screens (901px - 1023px)
======================================== */
@media (min-width: 901px) and (max-width: 1023px) {
/* ========== Global Font Size Reduction ========== */
html {
font-size: 14px; /* Reduced from default 16px */
}
.cv-name {
font-size: 1.8em; /* Reduced from 2.2em */
}
.sidebar-title {
font-size: 0.95rem;
}
.sidebar-content {
font-size: 0.9rem;
}
/* ========== Selector Labels - Hide, Show on Hover ========== */
.selector-label {
max-width: 0;
overflow: hidden;
opacity: 0;
transition: all 0.3s ease;
white-space: nowrap;
}
.selector-group:hover .selector-label {
max-width: 200px;
opacity: 1;
margin-right: 0.75rem;
}
/* ========== Language Selector - Collapse to EN/ES ========== */
.language-selector .selector-btn {
position: relative;
padding: 0.4rem 1rem; /* Keep padding consistent */
min-width: 50px;
font-size: 0; /* Hide actual text */
overflow: visible;
transition: font-size 0.3s ease; /* Slower animation */
display: inline-flex;
justify-content: center;
align-items: center;
}
/* Show only short version (EN/ES) */
.language-selector .selector-btn::before {
content: attr(data-short);
font-size: 1rem; /* Restore font size for pseudo-element */
opacity: 1;
transition: opacity 0.3s ease; /* Slower animation */
display: block;
width: 100%;
text-align: center;
}
/* On hover of INDIVIDUAL button only, show full text */
.language-selector .selector-btn:hover {
font-size: 1rem; /* Restore font size to show full text */
min-width: auto;
}
.language-selector .selector-btn:hover::before {
content: ''; /* Hide short version */
opacity: 0;
}
/* ========== Action Buttons - Icon Only, Expand on Hover ========== */
.action-btn {
position: relative;
width: 45px;
overflow: hidden;
transition: width 0.3s ease, padding 0.3s ease;
white-space: nowrap;
text-indent: 0;
}
/* Hide button text, keep icon */
.action-btn iconify-icon {
flex-shrink: 0;
}
.action-btn {
font-size: 0;
padding: 0 0.65rem;
justify-content: center;
}
/* On hover, show text */
.action-btn:hover {
width: auto;
font-size: 0.95rem;
padding: 0.65rem 1.5rem;
gap: 0.5rem;
}
}
/* ========================================
Sidebar: Medium Screens (901px - 1280px)
Content always visible - removed hide-on-hover behavior
======================================== */
/* ========================================
Responsive: Medium Screens (1024px - 1280px)
======================================== */
@media (min-width: 1024px) and (max-width: 1280px) {
/* ========== Global Font Size Reduction ========== */
html {
font-size: 14px; /* Reduced from default 16px */
}
.cv-name {
font-size: 1.8em; /* Reduced from 2.2em */
}
.sidebar-title {
font-size: 0.95rem;
}
.sidebar-content {
font-size: 0.9rem;
}
/* ========== Selector Labels - Hide, Show on Hover ========== */
.selector-label {
max-width: 0;
overflow: hidden;
opacity: 0;
transition: all 0.3s ease;
white-space: nowrap;
}
.selector-group:hover .selector-label {
max-width: 200px;
opacity: 1;
margin-right: 0.75rem;
}
/* ========== Language Selector - Collapse to EN/ES ========== */
.language-selector .selector-btn {
position: relative;
padding: 0.4rem 1rem; /* Keep padding consistent */
min-width: 50px;
font-size: 0; /* Hide actual text */
overflow: visible;
transition: font-size 0.3s ease; /* Slower animation */
display: inline-flex;
justify-content: center;
align-items: center;
}
/* Show only short version (EN/ES) */
.language-selector .selector-btn::before {
content: attr(data-short);
font-size: 1rem; /* Restore font size for pseudo-element */
opacity: 1;
transition: opacity 0.3s ease; /* Slower animation */
display: block;
width: 100%;
text-align: center;
}
/* On hover of INDIVIDUAL button only, show full text */
.language-selector .selector-btn:hover {
font-size: 1rem; /* Restore font size to show full text */
min-width: auto;
}
.language-selector .selector-btn:hover::before {
content: ''; /* Hide short version */
opacity: 0;
}
/* ========== Action Buttons - Icon Only, Expand on Hover ========== */
.action-btn {
position: relative;
width: 45px;
overflow: hidden;
transition: width 0.3s ease, padding 0.3s ease;
white-space: nowrap;
text-indent: 0;
}
/* Hide button text, keep icon */
.action-btn iconify-icon {
flex-shrink: 0;
}
.action-btn {
font-size: 0;
padding: 0 0.65rem;
justify-content: center;
}
/* On hover, show text */
.action-btn:hover {
width: auto;
font-size: 0.95rem;
padding: 0.65rem 1.5rem;
gap: 0.5rem;
}
}
/* ========================================
Responsive: Small Screens (up to 540px)
======================================== */
/* ========================================
Responsive: Tablet Screens - Center Photo (up to 768px)
======================================== */
@media (max-width: 768px) {
/* ========================================
LAYOUT - Single column on mobile
======================================== */
/* Collapse grid to single column */
.page-1 .page-content,
.page-2 .page-content {
grid-template-columns: 1fr !important;
grid-template-rows: auto auto;
}
/* Stack elements vertically: sidebar -> main */
.page-1 .cv-sidebar-left {
grid-column: 1;
grid-row: 1;
order: 1;
}
.page-1 .cv-main {
grid-column: 1;
grid-row: 2;
order: 2;
}
/* Stack elements vertically: main -> sidebar */
.page-2 .cv-main {
grid-column: 1;
grid-row: 1;
order: 1;
}
.page-2 .cv-sidebar-right {
grid-column: 1;
grid-row: 2;
order: 2;
}
/* ========================================
TYPOGRAPHY - Subtle font size reductions
======================================== */
.cv-name {
text-align: center;
font-size: 1.6rem;
}
.years-experience {
text-align: center;
font-size: 1.1em;
}
.section-title {
font-size: 1.2em;
}
.sidebar-title {
font-size: 1.2em;
}
.experience-period,
.experience-separator,
.experience-location,
.experience-duration {
font-size: 0.95rem;
}
.position {
font-size: 0.95rem;
}
.short-desc,
.responsibilities li {
font-size: 0.85rem;
}
/* ========================================
TEXT ALIGNMENT FIXES - Selective alignment
======================================== */
/* Keep justified for intro and skills */
.intro-text,
.summary-text {
text-align: justify;
font-size: 0.85rem;
line-height: 1.5;
}
.intro-text {
margin-top: 0;
width: 100%;
}
/* Left-align for course/project descriptions */
.course-desc,
.project-desc {
text-align: left !important;
font-size: 0.85rem !important;
line-height: 1.5;
}
/* ========================================
HEADER LAYOUT - Centered photo
======================================== */
.cv-header-content {
flex-direction: column;
align-items: center;
gap: 1rem;
}
.cv-header-left {
width: 100%;
position: static;
padding-right: 0;
}
.cv-photo {
position: static;
width: auto;
height: auto;
max-width: 250px;
margin: 1.5rem auto;
text-align: center;
right: auto;
top: auto;
}
.cv-photo img {
width: 100%;
height: auto;
max-height: none;
}
/* ========================================
UNIFIED LOGO/ICON SIZING - Consistent 60px
======================================== */
.company-logo,
.course-icon,
.project-icon,
.award-logo {
width: 60px !important;
height: 60px !important;
flex-shrink: 0;
overflow: hidden; /* Prevent any child overflow */
}
.company-logo img,
.course-icon img,
.project-icon img,
.award-logo img {
width: 60px !important;
height: 60px !important;
object-fit: contain;
}
/* Sprite icons must also scale down to 60px on mobile */
.company-logo .icon-sprite.icon-section,
.course-icon .icon-sprite.icon-section,
.project-icon .icon-sprite.icon-section,
.award-logo .icon-sprite.icon-section {
width: 60px !important;
height: 60px !important;
padding: 6px !important;
background-size: auto 48px !important; /* 60px - 2*6px padding = 48px */
}
.company-logo .icon-sprite.icon-section.icon-company {
background-position-x: calc(var(--icon-index, 0) * -48px) !important;
}
.project-icon .icon-sprite.icon-section.icon-project {
background-position-x: calc(var(--icon-index, 0) * -48px) !important;
}
.course-icon .icon-sprite.icon-section.icon-course {
background-position-x: calc(var(--icon-index, 0) * -48px) !important;
}
/* ========================================
CONSISTENT ITEM LAYOUT - Uniform spacing
======================================== */
.experience-item,
.course-item,
.project-item,
.award-item {
display: flex;
flex-direction: row;
gap: 1rem !important;
align-items: flex-start;
margin-bottom: 2rem !important;
padding-bottom: 1.5rem !important;
border-bottom: 1px solid rgba(0, 0, 0, 0.1);
}
.experience-item {
margin-bottom: 1.8rem !important;
}
.experience-content,
.course-content,
.project-content,
.award-content {
flex: 1;
min-width: 0;
}
/* ========================================
FONT SIZE CONSISTENCY - Titles and descriptions
======================================== */
.course-title,
.project-title,
.award-item strong {
font-size: 0.95rem !important;
line-height: 1.4;
}
.course-item small,
.project-item small,
.award-item small {
font-size: 0.8rem !important;
}
.course-desc,
.project-desc,
.award-desc {
font-size: 0.85rem !important;
line-height: 1.5;
}
/* ========================================
RESPONSIBILITIES MOBILE OPTIMIZATION
======================================== */
.responsibilities li:has(img),
.responsibilities li:has(iconify-icon) {
grid-template-columns: 60px 1fr !important;
gap: 0.75rem !important;
margin-bottom: 0.75rem !important;
}
.responsibilities li img,
.responsibilities li iconify-icon.default-company-icon {
width: 60px !important;
height: 60px !important;
}
/* ========================================
SIDEBAR ITEMS MOBILE OPTIMIZATION
======================================== */
.language-item,
.reference-item,
.other-content {
margin-bottom: 0 !important;
line-height: 1.4 !important;
margin-left: 1rem !important;
font-size: 0.85rem !important;
}
/* ========================================
SIDEBAR ACCORDION - MOBILE ONLY
======================================== */
/* Compact sidebar on mobile - remove excessive padding */
.cv-sidebar {
padding: 0 !important;
}
/* Show accordion header on mobile - matches CV title badges style */
.sidebar-accordion summary.sidebar-accordion-header {
display: flex !important;
justify-content: space-between;
align-items: center;
padding: 8px 15px; /* Reduced padding for compact look */
background: #303030 !important; /* Match CV title badges dark gray */
color: #ccc;
cursor: pointer;
border-radius: 0; /* No rounding - match title badges */
margin-bottom: 0;
font-weight: normal;
font-size: 0.85em; /* Slightly smaller */
text-transform: uppercase;
gap: 0.3rem; /* Reduced gap */
list-style: none;
-webkit-user-select: none;
user-select: none;
border-bottom: 1px solid #34495e; /* Thinner border */
}
/* Accordion content - compact and animated */
.sidebar-accordion-content {
padding: 0.5rem 1rem; /* Minimal padding when open */
margin: 0;
overflow: hidden;
transition: max-height 0.3s ease-in-out;
}
/* Compact sidebar sections */
.sidebar-section {
margin-bottom: 0.5rem !important;
}
/* Remove default details marker */
.sidebar-accordion summary.sidebar-accordion-header::-webkit-details-marker,
.sidebar-accordion summary.sidebar-accordion-header::marker {
display: none;
}
/* Chevron rotation when open */
.sidebar-accordion[open] summary.sidebar-accordion-header .chevron {
transform: rotate(180deg);
transition: transform 0.3s ease;
}
.sidebar-accordion summary.sidebar-accordion-header .chevron {
transition: transform 0.3s ease;
color: #ccc; /* Match header text color */
}
/* Hide when closed */
.sidebar-accordion:not([open]) .sidebar-accordion-content {
max-height: 0;
opacity: 0;
}
/* Show when open */
.sidebar-accordion[open] .sidebar-accordion-content {
max-height: 2000px;
opacity: 1;
}
}
/* ========================================
Responsive: All Mobile Screens (up to 540px)
======================================== */
@media (max-width: 540px) {
/* Simplify action bar grid for mobile: single column */
.action-bar-content {
grid-template-columns: 1fr;
gap: 0;
padding: 0;
}
/* Hide center controls on mobile (moved to hamburger menu) */
.view-controls-center {
display: none;
}
/* Hide action buttons on small screens (available in hamburger menu) */
.action-buttons-right {
display: none;
}
/* Site title uses flexbox with percentage widths */
.site-title {
display: flex;
justify-content: space-between;
align-items: center;
width: 100%;
padding: 0 0.5rem;
gap: 0.5rem;
}
/* Left group (hamburger + title) takes ~50-60% */
.site-title-left {
display: flex;
align-items: center;
gap: 0.5rem;
flex: 1 1 1;
min-width: 0;
}
/* Title link is flexible within left group */
.site-title-link {
flex: 1 1 auto;
min-width: 0;
overflow: hidden;
}
.site-title-text {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
/* Language selector takes ~30-35% */
.language-selector {
display: flex;
flex: 0 0 35%;
margin-left: auto;
padding-left: 0;
margin-right: 0;
justify-content: flex-end;
gap: 0.25rem;
}
/* Hide year from title in mobile view */
.site-title-year {
display: none;
}
/* Hide desktop logo, show mobile icon in title */
.site-logo-link {
display: none;
}
.site-icon-mobile {
display: inline-flex;
}
/* ========== Language Selector - Show Short Names Only ========== */
.language-selector .selector-btn {
position: relative;
padding: 0.4rem 0.75rem;
min-width: 40px;
font-size: 0; /* Hide actual text */
overflow: visible;
transition: font-size 0.3s ease;
display: inline-flex;
justify-content: center;
align-items: center;
}
/* Show only short version (EN/ES) */
.language-selector .selector-btn::before {
content: attr(data-short);
font-size: 0.95rem;
opacity: 1;
transition: opacity 0.3s ease;
display: block;
width: 100%;
text-align: center;
}
/* Keep short names on hover (no expansion) */
.language-selector .selector-btn:hover {
font-size: 0;
min-width: 40px;
}
.language-selector .selector-btn:hover::before {
content: attr(data-short);
opacity: 1;
}
}
/* ========================================
Mobile: iOS-Style Button Bar with Blur
======================================== */
/* iOS-style blur bar - Only show on devices that support backdrop-filter (primarily iOS) */
@media (max-width: 540px) {
@supports (backdrop-filter: blur(20px)) or (-webkit-backdrop-filter: blur(20px)) {
.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 (Mobile Devices)
======================================== */
@media (max-width: 915px) and (orientation: landscape) {
/* iOS-style blur backdrop for buttons in landscape */
@supports (backdrop-filter: blur(20px)) or (-webkit-backdrop-filter: blur(20px)) {
.fixed-buttons-backdrop {
display: block !important;
position: fixed;
bottom: 0;
left: 0;
right: 0;
height: 70px; /* Slightly smaller for landscape */
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;
pointer-events: none;
}
[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);
}
}
/* CRITICAL: Prevent horizontal scroll in landscape */
* {
max-width: 100vw !important;
}
html, body {
width: 100vw !important;
max-width: 100vw !important;
overflow-x: hidden !important;
}
.cv-container {
width: 100% !important;
max-width: 100% !important;
overflow-x: hidden !important;
padding: 0 !important;
margin: 0 !important;
}
.cv-page {
width: 100% !important;
max-width: 100% !important;
margin: 0 !important;
transform: scale(1) !important; /* Reset zoom that might cause overflow */
box-shadow: none !important; /* Remove shadow that might cause overflow */
}
.page-content {
width: 100% !important;
max-width: 100% !important;
overflow-x: hidden !important;
}
/* Hide elements that might cause overflow */
.action-bar, .cv-header, .cv-sidebar, .cv-main {
max-width: 100% !important;
overflow-x: hidden !important;
}
/* Force single column layout in landscape mobile */
.cv-page .page-1 .page-content,
.cv-page .page-2 .page-content,
.page-1 .page-content,
.page-2 .page-content {
grid-template-columns: 1fr !important;
grid-template-rows: auto auto !important;
max-width: 100% !important;
}
/* Stack elements vertically in landscape: sidebar -> main */
.page-1 .cv-sidebar-left {
grid-column: 1;
grid-row: 1;
order: 1;
}
.page-1 .cv-main {
grid-column: 1;
grid-row: 2;
order: 2;
}
/* Stack elements vertically in landscape: main -> sidebar */
.page-2 .cv-main {
grid-column: 1;
grid-row: 1;
order: 1;
}
.page-2 .cv-sidebar-right {
grid-column: 1;
grid-row: 2;
order: 2;
}
/* Reduce header size in landscape */
.cv-header {
margin-bottom: 1rem !important;
}
.cv-name {
font-size: 1.4rem !important;
text-align: left !important; /* Left-aligned with photo on right */
}
.years-experience {
font-size: 1em !important;
text-align: left !important; /* Left-aligned with photo on right */
}
/* Two-column layout in landscape: text left, photo right */
.cv-header-left {
display: grid !important;
grid-template-columns: 1fr auto !important;
grid-template-rows: auto auto auto !important;
gap: 0.5rem 1rem !important;
align-items: start !important;
}
/* Name spans column 1, row 1 */
.cv-name {
grid-column: 1;
grid-row: 1;
}
/* Experience years spans column 1, row 2 */
.years-experience {
grid-column: 1;
grid-row: 2;
margin: 0 !important;
}
/* Intro text spans column 1, row 3 */
.intro-text {
grid-column: 1;
grid-row: 3;
margin: 0 !important;
}
/* Photo on the right side, spans all 3 rows */
.cv-photo {
grid-column: 2;
grid-row: 1 / 4;
position: static !important;
width: auto !important;
height: auto !important;
max-width: 180px !important; /* Bigger than before (was 120px) */
margin: 0 !important;
align-self: start;
}
.cv-photo img {
width: 100% !important;
height: auto !important;
border-radius: 8px;
}
/* Compact action bar - keep hamburger menu visible */
.action-bar {
padding: 0.5rem 0.75rem !important;
}
/* Simplify action bar for landscape */
.action-bar-content {
grid-template-columns: 1fr !important;
gap: 0;
padding: 0;
}
/* Hide center controls on landscape mobile (moved to hamburger menu) */
.view-controls-center {
display: none !important;
}
/* Hide action buttons on landscape (available in hamburger menu) */
.action-buttons-right {
display: none !important;
}
/* Keep site title visible and compact */
.site-title {
display: flex;
justify-content: space-between;
align-items: center;
width: 100%;
padding: 0 0.5rem;
gap: 0.5rem;
}
.site-title-left {
display: flex;
align-items: center;
gap: 0.5rem;
flex: 1 1 auto;
min-width: 0;
}
.site-title-text {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
font-size: 0.95rem !important;
}
/* Language selector compact */
.language-selector {
display: flex;
flex: 0 0 auto;
margin-left: auto;
gap: 0.25rem;
}
.language-selector .selector-btn {
padding: 0.3rem 0.6rem !important;
font-size: 0.85rem !important;
min-width: 35px !important;
}
/* Hide year from title in landscape mobile */
.site-title-year {
display: none !important;
}
/* Show mobile icon in title */
.site-logo-link {
display: none !important;
}
.site-icon-mobile {
display: inline-flex !important;
}
/* Fix sidebar to show all content in landscape */
.cv-sidebar,
.cv-sidebar-left,
.cv-sidebar-right {
padding: 0.75rem !important;
overflow: visible !important; /* CRITICAL: Allow content to show */
height: auto !important; /* CRITICAL: Remove fixed height */
max-height: none !important;
}
/* CRITICAL: Fix actual-content wrapper to expand with accordion content */
.cv-sidebar .actual-content,
.cv-sidebar-left .actual-content,
.cv-sidebar-right .actual-content {
height: auto !important;
max-height: none !important;
overflow: visible !important;
}
/* CRITICAL: Force accordions open in landscape so sidebars are visible */
/* Override <details> default collapsed behavior by completely neutralizing it */
.sidebar-accordion,
.sidebar-accordion[open],
.sidebar-accordion:not([open]) {
display: block !important; /* Override details display */
overflow: visible !important;
height: auto !important;
max-height: none !important;
min-height: 0 !important;
}
/* Ensure all children of details are visible */
.sidebar-accordion > * {
display: block !important;
}
/* Make the summary not clickable in landscape since accordion should stay open */
.sidebar-accordion summary {
pointer-events: none !important;
list-style: none !important; /* Remove details arrow */
}
.sidebar-accordion summary::-webkit-details-marker {
display: none !important; /* Remove Chrome/Safari details marker */
}
/* Show chevron as pointing down (expanded state) */
.sidebar-accordion summary.sidebar-accordion-header .chevron {
transform: rotate(0deg) !important; /* Chevron points down = expanded */
}
/* Force accordion content visible regardless of [open] attribute */
.sidebar-accordion .sidebar-accordion-content,
.sidebar-accordion:not([open]) .sidebar-accordion-content {
display: block !important;
opacity: 1 !important;
max-height: none !important;
visibility: visible !important;
overflow: visible !important;
}
/* Show inner details elements as expanded too */
.sidebar-accordion details {
/* Make nested details also expanded */
}
.sidebar-accordion details > summary::after {
transform: rotate(0deg) !important;
}
.sidebar-accordion details .sidebar-content {
display: block !important;
max-height: none !important;
opacity: 1 !important;
}
/* Compact accordion headers in landscape */
.sidebar-accordion summary.sidebar-accordion-header {
padding: 6px 12px !important;
font-size: 0.8em !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;
padding-bottom: 1rem !important;
}
/* Reduce font sizes for landscape */
.experience-period,
.experience-location,
.position {
font-size: 0.85rem !important;
}
.short-desc,
.responsibilities li {
font-size: 0.8rem !important;
}
/* Make hamburger button accessible in landscape */
.hamburger-btn {
display: flex !important; /* Force visible */
position: relative !important;
z-index: 1001 !important;
opacity: 1 !important;
visibility: visible !important;
}
/* Adjust bottom button bar for landscape - fluid sizing
Buttons: clamp(32px, calc(2.2vw + 19.6px), 40px) - scales from 32px at 380px to 40px at 915px
Icons: clamp(16px, calc(1.1vw + 9.8px), 20px) - scales from 16px at 380px to 20px at 915px */
.download-btn,
.print-friendly-btn,
.fixed-btn.contact-btn,
.shortcuts-btn,
.info-button,
.back-to-top,
.color-theme-switcher {
width: clamp(32px, calc(2.2vw + 19.6px), 40px) !important;
height: clamp(32px, calc(2.2vw + 19.6px), 40px) !important;
bottom: 1rem !important;
}
/* Scale icons proportionally for landscape buttons */
.download-btn iconify-icon,
.print-friendly-btn iconify-icon,
.fixed-btn.contact-btn iconify-icon,
.shortcuts-btn iconify-icon,
.info-button iconify-icon,
.back-to-top iconify-icon,
.color-theme-switcher iconify-icon {
width: clamp(16px, calc(1.1vw + 9.8px), 20px) !important;
height: clamp(16px, calc(1.1vw + 9.8px), 20px) !important;
font-size: clamp(16px, calc(1.1vw + 9.8px), 20px) !important;
}
/* Recalculate button positions for landscape - 7 buttons with shortcuts */
/* 7 buttons: 7 * 40px + 6 * 10px = 340px total, start at -170px */
.download-btn {
left: calc(50% - 170px) !important;
}
.print-friendly-btn {
left: calc(50% - 120px) !important;
}
.fixed-btn.contact-btn {
left: calc(50% - 70px) !important;
}
.shortcuts-btn {
left: calc(50% - 20px) !important;
}
.color-theme-switcher {
left: calc(50% + 30px) !important;
}
.info-button {
left: calc(50% + 80px) !important;
}
.back-to-top {
left: calc(50% + 130px) !important;
}
/* Real mobile devices in landscape: 6 buttons (no shortcuts) */
/* 6 buttons: 6 * 40px + 5 * 10px = 290px total, start at -145px */
.is-mobile-device .download-btn {
left: calc(50% - 145px) !important;
}
.is-mobile-device .print-friendly-btn {
left: calc(50% - 95px) !important;
}
.is-mobile-device .fixed-btn.contact-btn {
left: calc(50% - 45px) !important;
}
.is-mobile-device .color-theme-switcher {
left: calc(50% + 5px) !important;
}
.is-mobile-device .info-button {
left: calc(50% + 55px) !important;
}
.is-mobile-device .back-to-top {
left: calc(50% + 105px) !important;
}
/* Reduce blur bar height for landscape */
.fixed-buttons-backdrop {
height: 70px !important;
}
/* Add bottom padding to footer for landscape */
footer.no-print {
padding-bottom: 90px !important;
}
}