Files
portfolio-v2/components/sections/Hero.module.scss
2026-03-16 21:25:53 +01:00

262 lines
4.7 KiB
SCSS
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
.hero {
@include section;
min-height: 100svh;
display: flex;
align-items: center;
overflow: visible;
}
.container {
@include container;
display: grid;
grid-template-columns: 1fr 1fr;
gap: 4rem;
align-items: center;
@include respond(lg) {
grid-template-columns: 1fr;
}
}
.content {
min-width: 0;
position: relative;
z-index: 1;
}
.badge {
display: inline-flex;
align-items: center;
gap: 0.5rem;
font-size: 0.8125rem;
color: var(--text-3);
background: var(--bg-2);
border: 1px solid var(--border);
border-radius: 999px;
padding: 0.35rem 0.85rem;
margin-bottom: 1.5rem;
}
.dot {
width: 7px; height: 7px;
border-radius: 50%;
background: #22c55e;
animation: pulse-dot 2s ease-in-out infinite;
flex-shrink: 0;
}
.title {
font-family: $font-display;
font-size: clamp(2.5rem, 5vw, 4rem);
font-weight: 800;
line-height: 1.1;
letter-spacing: -0.03em;
color: var(--text);
margin-bottom: 0.5rem;
}
.name { color: var(--accent); }
.roleWrapper {
font-family: $font-display;
font-size: clamp(1.25rem, 2.5vw, 1.75rem);
font-weight: 500;
color: var(--text-2);
height: 2.2em;
overflow: hidden;
margin-bottom: 1.5rem;
}
.bio {
font-size: 1.0625rem;
color: var(--text-3);
max-width: 520px;
margin-bottom: 2.5rem;
line-height: 1.75;
}
.ctas {
display: flex;
gap: 0.875rem;
flex-wrap: wrap;
}
.btnPrimary {
display: inline-flex;
align-items: center;
gap: 0.5rem;
background: var(--accent);
color: #fff;
font-weight: 500;
font-size: 0.9375rem;
padding: 0.75rem 1.5rem;
border-radius: var(--radius);
transition: background var(--transition), transform var(--transition);
&:hover { background: var(--accent-dark); transform: translateY(-2px); }
}
.btnSecondary {
display: inline-flex;
align-items: center;
gap: 0.5rem;
background: transparent;
color: var(--text-2);
font-weight: 500;
font-size: 0.9375rem;
padding: 0.75rem 1.5rem;
border-radius: var(--radius);
border: 1px solid var(--border);
transition: border-color var(--transition), color var(--transition);
&:hover { border-color: var(--accent); color: var(--accent); }
}
.visual {
position: relative;
height: 400px;
perspective: 800px;
overflow: visible;
isolation: isolate;
@include respond(lg) { display: none; }
}
.grid {
position: absolute;
left: 0;
right: -40px;
top: -40px;
bottom: -40px;
border-radius: var(--radius-lg);
overflow: visible;
display: flex;
align-items: center;
justify-content: center;
padding: 1.5rem;
z-index: 0;
/* Dot grid dezentes Punktmuster, zurückgenommen */
background-image: radial-gradient(
circle at center,
var(--border) 1px,
transparent 1px
);
background-size: 24px 24px;
opacity: 0.35;
/* Leichter Verlauf von der Mitte nach außen */
mask-image: radial-gradient(
ellipse 80% 80% at 50% 50%,
black 20%,
transparent 85%
);
-webkit-mask-image: radial-gradient(
ellipse 80% 80% at 50% 50%,
black 20%,
transparent 85%
);
}
// ─── Apple-style Terminal ──────────────────────────────────
.terminal {
position: relative;
z-index: 2;
width: 100%;
max-width: 340px;
background: var(--bg);
border: 1px solid var(--border);
border-radius: 12px;
box-shadow: 0 20px 40px -12px rgba(0, 0, 0, 0.45);
transform: rotateY(-4deg) rotateX(2deg);
overflow: hidden;
font-family: $font-mono;
font-size: 0.8125rem;
line-height: 1.6;
}
.terminalHeader {
display: flex;
align-items: center;
gap: 0.75rem;
padding: 0.75rem 1rem;
background: rgba(40, 44, 52, 0.9);
border-bottom: 1px solid var(--border);
}
.trafficLights {
display: flex;
gap: 6px;
}
.trafficRed,
.trafficYellow,
.trafficGreen {
width: 12px;
height: 12px;
border-radius: 50%;
}
.trafficRed {
background: #ff5f57;
box-shadow: inset 0 0 2px rgba(0, 0, 0, 0.3);
}
.trafficYellow {
background: #febc2e;
box-shadow: inset 0 0 2px rgba(0, 0, 0, 0.3);
}
.trafficGreen {
background: #28c840;
box-shadow: inset 0 0 2px rgba(0, 0, 0, 0.3);
}
.terminalTitle {
color: var(--text-3);
font-size: 0.75rem;
flex: 1;
text-align: center;
margin-right: 3rem;
}
.terminalBody {
padding: 1rem 1.25rem;
min-height: 160px;
}
.terminalLine {
margin-bottom: 0.25rem;
}
.prompt {
color: var(--accent);
margin-right: 0.5rem;
}
.cmd {
color: var(--text-2);
}
.output,
.accentLine {
color: var(--text-3);
padding-left: 1.25rem;
}
.accentLine {
color: var(--accent);
}
.cursor {
display: inline-block;
width: 8px;
height: 1em;
background: var(--accent);
animation: blink 1s step-end infinite;
vertical-align: -0.15em;
}
@keyframes blink {
0%, 100% { opacity: 1; }
50% { opacity: 0; }
}