6172ada527
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.
1189 lines
32 KiB
CSS
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;
|
|
}
|
|
}
|