Files
cv-site/static/css/03-components/_cv-section.css
T
juanatsap 0956c78d00 style: Add CSS variable fallbacks for better browser compatibility
Following LogRocket CSS best practices:
- Added fallback values to 150+ CSS variable usages across 22 files
- Fallbacks use light theme defaults for consistent behavior
- Improves compatibility with older browsers
- Example: var(--text-primary) → var(--text-primary, #1a1a1a)

Variables with fallbacks:
- Colors: text-primary, text-secondary, text-muted, accent-blue, etc.
- Backgrounds: page-bg, paper-bg, action-bar-bg, sidebar-bg
- Shadows: shadow-sm, shadow-md, shadow-lg
- Borders: border-color, border-light, icon-border

CSS Variables Best Practices compliance: 6/7 recommendations now followed
2025-11-30 14:35:02 +00:00

326 lines
6.6 KiB
CSS

/* Sections */
.cv-section {
margin-bottom: 3rem;
page-break-inside: avoid;
}
/* Remove margin when section is collapsed */
.cv-section:has(details:not([open])) {
margin-bottom: 0;
}
.section-title {
font-family: 'Quicksand', sans-serif;
font-size: 1.4em;
font-weight: 500;
line-height: 1.2em;
margin: 20px 0 25px 0;
padding: 0;
color: var(--text-primary, #1a1a1a);
}
/* Collapsible Section Styles */
.cv-section details {
margin: 0;
}
.cv-section details summary ~ * {
overflow: hidden;
max-height: 0;
opacity: 0;
transform: translateY(-8px);
transition: max-height 0.5s ease-in-out,
opacity 0.3s ease-in-out,
transform 0.3s ease-in-out;
}
.cv-section details[open] summary ~ * {
max-height: 3000px;
opacity: 1;
transform: translateY(0);
}
.cv-section summary {
cursor: pointer;
list-style: none;
user-select: none;
position: relative;
}
/* Remove default triangle marker in all browsers */
.cv-section summary::-webkit-details-marker,
.cv-section summary::marker {
display: none;
}
/* Add custom collapse indicator after the title */
.cv-section summary .section-title {
display: inline-flex;
align-items: center;
gap: 0.5rem;
}
.cv-section summary .section-title::after {
content: '▼';
font-size: 0.8em;
color: var(--text-muted, #666666);
transition: transform 0.2s ease, opacity 0.2s ease;
opacity: 0;
margin-left: 0.5rem;
}
/* Show indicator on hover or when closed */
.cv-section summary:hover .section-title::after,
.cv-section details:not([open]) summary .section-title::after {
opacity: 1;
}
/* Rotate indicator when closed */
.cv-section details:not([open]) summary .section-title::after {
transform: rotate(-90deg);
}
/* Hover effect on summary */
.cv-section summary:hover .section-title {
color: var(--accent-blue, #0066cc);
}
.summary-text {
font-family: 'Quicksand', sans-serif;
line-height: 1.5;
text-align: justify;
font-size: 0.9em;
font-weight: 400;
color: var(--text-primary, #1a1a1a);
}
/* Experience */
/* Experience item layout moved to _toggles.css */
.experience-header {
margin-bottom: 0.6rem;
}
.experience-title-line {
margin-bottom: 0.3em;
}
.position {
font-size: 1rem;
font-weight: 500;
margin: 0;
color: var(--text-dark, #1a1a1a);
margin-bottom: 4px;
}
.position .position-title {
display: inline-block;
margin-right: 0.3em;
}
.position .company-name {
display: inline-block;
}
.current-badge {
display: inline-block;
background: #27ae60;
color: white;
font-weight: 700;
font-size: 0.7em;
padding: 0.2em 0.5em;
border-radius: 3px;
margin-left: 0.5em;
vertical-align: middle;
letter-spacing: 0.5px;
}
.live-badge {
display: inline-flex;
align-items: center;
gap: 0.3em;
background: #27ae60;
color: white;
font-weight: 700;
font-size: 0.7em;
padding: 0.2em 0.5em;
border-radius: 3px;
margin-left: 0.5em;
vertical-align: middle;
letter-spacing: 0.5px;
}
.live-badge iconify-icon {
font-size: 1.2em;
}
.expired-badge {
display: inline-block;
background: #e74c3c;
color: white;
font-weight: 700;
font-size: 0.7em;
padding: 0.2em 0.5em;
border-radius: 3px;
margin-left: 0.5em;
vertical-align: middle;
letter-spacing: 0.5px;
}
.maintained-badge {
display: inline-block;
background: #3498db;
color: white;
font-weight: 700;
font-size: 0.7em;
padding: 0.2em 0.5em;
border-radius: 3px;
margin-left: 0.5em;
vertical-align: middle;
letter-spacing: 0.5px;
}
.experience-period,
.experience-separator,
.experience-location,
.experience-duration {
color: var(--text-muted, #666666);
font-weight: 600;
display: inline-block;
font-size: 1.05rem;
}
.experience-duration {
font-style: italic;
}
.short-desc {
color: var(--text-dark, #1a1a1a);
font-size: 0.95rem;
line-height: 1.6;
margin-top: 0.5rem;
}
.duration-text {
color: var(--text-light, #999999);
font-weight: 500;
}
.responsibilities {
list-style: none;
margin-top: 1rem;
padding-left: 0;
}
.responsibilities li {
padding-left: 1.2rem;
margin-bottom: 0.4rem;
position: relative;
font-size: 0.95rem;
color: var(--text-dark, #1a1a1a);
line-height: 1.5;
}
.responsibilities li:before {
content: "•";
position: absolute;
left: 0;
color: var(--text-gray, #333333);
}
/* Responsibilities with company icons (similar to main experience layout) */
.responsibilities li:has(img),
.responsibilities li:has(iconify-icon) {
display: grid;
grid-template-columns: 60px 1fr;
gap: 1rem;
padding-left: 0;
margin-bottom: 1rem;
align-items: start;
}
.responsibilities li:has(img):before,
.responsibilities li:has(iconify-icon):before {
display: none;
}
.responsibilities li img {
width: 60px;
height: 60px;
object-fit: contain;
border-radius: 4px;
border: 1px solid var(--icon-border, #ddd);
background: transparent;
padding: 4px;
}
.responsibilities li iconify-icon.default-company-icon {
width: 60px;
height: 60px;
display: flex;
align-items: center;
justify-content: center;
border-radius: 4px;
border: 1px solid var(--icon-border, #ddd);
background: transparent;
color: var(--text-light, #999999);
padding: 8px;
}
/* Inline icons within responsibility text (not the main icon) */
.responsibilities li div iconify-icon,
.responsibilities li strong + iconify-icon,
.responsibilities li em + iconify-icon {
width: 1.2em !important;
height: 1.2em !important;
font-size: 1em;
vertical-align: middle;
margin: 0 0.15em;
color: inherit !important;
display: inline-block;
border: none !important;
padding: 0 !important;
background: transparent !important;
}
/* Education */
.education-item {
margin-bottom: 1rem;
font-size: 0.95rem;
line-height: 1.6;
color: var(--text-dark, #1a1a1a);
}
/* Languages */
.languages-list {
display: flex;
flex-wrap: wrap;
gap: 1.5rem;
}
.language-item {
font-size: 0.95rem!important;
color: var(--text-dark, #1a1a1a);
margin-bottom: 0.3rem!important;
line-height: 1.4!important;
margin-left: 2rem!important;
}
.language-item small {
display: block;
font-size: 0.8em;
margin-top: 0.2rem;
font-style: italic;
}
/* Experience Items */
.experience-item {
margin-bottom: 2.5rem;
padding-bottom: 2rem;
border-bottom: 1px solid rgba(0, 0, 0, 0.1);
}
/* Keep border on all experience items including last one */