Files
my-protfolio/src/components/HeroSection.module.css
Amirhossein Khalili 704b7ab2d2 feat: align hero styling with portfolio design
Refine hero controls, buttons, contact icons, and avatar treatment across light and dark themes.
2026-09-05 00:05:27 +08:00

233 lines
4.2 KiB
CSS

.heroContentWrapper {
position: relative;
width: 1440px;
height: 680px;
z-index: 5;
}
.topBar {
position: absolute;
inset: 0 0 auto;
z-index: 2;
display: flex;
align-items: center;
justify-content: space-between;
padding: 72px 60px 0;
}
.iconButton {
display: inline-flex;
align-items: center;
justify-content: center;
width: var(--size-icon-button);
height: var(--size-icon-button);
padding: 0;
border: 0;
background: transparent;
color: var(--color-blue-700);
cursor: pointer;
transition: color 0.2s ease, transform 0.2s ease;
}
.iconButton:hover {
color: var(--color-blue-500);
transform: translateY(-1px);
}
.iconButton:focus-visible {
border-radius: var(--radius-sm);
outline: 3px solid var(--focus-ring);
outline-offset: 4px;
}
[data-theme="dark"] .iconButton {
color: var(--text-primary);
}
[data-theme="dark"] .iconButton:hover {
color: var(--accent-default);
}
.controlIcon,
.themeIcon {
color: currentColor;
}
.themeIcon {
fill: currentColor;
}
.heroContent {
position: relative;
display: flex;
flex-direction: column;
align-items: center;
padding-top: 74px;
text-align: center;
}
.avatarWrapper {
margin-bottom: 26px;
}
.avatarRingOuter {
display: inline-block;
padding: 6px;
border: 3px solid var(--color-blue-700);
border-radius: 50%;
background: transparent;
box-shadow: 0 8px 24px var(--shadow-color);
}
[data-theme="dark"] .avatarRingOuter {
border-color: var(--color-blue-white);
}
.avatarContainer {
position: relative;
width: 208px;
height: 208px;
overflow: hidden;
border: 0;
border-radius: 50%;
}
.avatarImg {
width: 100%;
height: 100%;
object-fit: cover;
}
.heroTitle {
margin-bottom: 14px;
color: var(--text-primary);
font-size: var(--font-size-display-hero);
line-height: var(--line-height-display-hero);
text-shadow: none;
}
.heroSubtitle {
margin-bottom: 40px;
color: var(--text-primary);
font-size: 15px;
font-weight: 700;
letter-spacing: 0.16em;
text-transform: uppercase;
}
.actionButtons {
display: flex;
align-items: center;
gap: 20px;
margin-bottom: 34px;
}
.heroButton {
width: 176px;
height: 56px;
padding: 0 28px;
border-width: 3px;
font-size: var(--font-size-body-default);
}
.heroButtonOutline {
border-color: var(--color-blue-600);
background: transparent;
color: var(--color-blue-700);
backdrop-filter: none;
}
.heroButtonOutline:hover {
border-color: var(--color-blue-700);
background: rgba(255, 255, 255, 0.2);
}
.heroButtonPrimary {
border-color: var(--color-blue-600);
background: var(--color-blue-600);
color: var(--color-blue-white);
}
.heroButtonPrimary:hover {
border-color: var(--color-blue-700);
background: var(--color-blue-700);
}
.heroButton:focus-visible {
outline: 3px solid var(--focus-ring);
outline-offset: 3px;
}
[data-theme="dark"] .heroButtonOutline {
border-color: var(--color-blue-white);
background: transparent;
color: var(--text-primary);
}
[data-theme="dark"] .heroButtonOutline:hover {
border-color: var(--color-blue-100);
background: rgba(130, 181, 255, 0.12);
}
[data-theme="dark"] .heroButtonPrimary {
border-color: var(--color-blue-white);
background: var(--color-blue-100);
color: var(--color-blue-950);
}
[data-theme="dark"] .heroButtonPrimary:hover {
border-color: var(--color-blue-white);
background: var(--color-blue-white);
}
.contactBar {
display: inline-flex;
align-items: center;
gap: 16px;
padding: 0;
border: 0;
background: transparent;
color: var(--color-blue-700);
font-size: var(--font-size-body-small);
font-weight: 500;
line-height: var(--line-height-body-small);
}
[data-theme="dark"] .contactBar {
color: var(--text-primary);
}
.contactItem {
display: inline-flex;
align-items: center;
gap: 8px;
color: inherit;
transition: opacity 0.2s ease;
}
.contactItem:hover {
opacity: 0.75;
}
.contactItem:focus-visible {
border-radius: 2px;
outline: 3px solid var(--focus-ring);
outline-offset: 4px;
}
.contactIcon {
flex: 0 0 auto;
color: currentColor;
}
.filledIcon {
fill: currentColor;
}
.contactDivider {
width: 1px;
height: 22px;
background: var(--color-blue-500);
opacity: 0.7;
}