From d3abf042ad6d9b8e1ac9f9d1ca7ec85e3c449973 Mon Sep 17 00:00:00 2001 From: Dejvino Date: Mon, 18 May 2026 21:42:25 +0200 Subject: [PATCH] Gradual transitions --- index.php | 138 +++++++++++++++++++++++++++++++++++++++++++++++------- style.css | 93 ++++++++++++++++++++++++++++++++---- 2 files changed, 204 insertions(+), 27 deletions(-) diff --git a/index.php b/index.php index 7865a8b..1ae8632 100644 --- a/index.php +++ b/index.php @@ -24,6 +24,12 @@ $nav_links = [ $hardware_info = "Playing the mandolin, mountain biking, 3D printing and tinkering."; +$extra_contact_links = [ + "LinkedIn" => "https://www.linkedin.com/in/hrdinadavid/", + "GitHub" => "https://github.com/dejvino", + "StackOverflow" => "https://stackoverflow.com/users/3551523/dejvino", +]; + /** * CV Data */ @@ -103,17 +109,6 @@ $cv_skills = ["PHP", "Go", "Rust", "Docker", "Kubernetes", "PostgreSQL", "Redis" - -

Likes

@@ -124,9 +119,13 @@ $cv_skills = ["PHP", "Go", "Rust", "Docker", "Kubernetes", "PostgreSQL", "Redis"

Contact email: uncovering...

+
- + + diff --git a/style.css b/style.css index e9b4e06..527cec8 100644 --- a/style.css +++ b/style.css @@ -19,9 +19,40 @@ 100% { transform: translateX(150%) skewX(-45deg); opacity: 0; } } -@keyframes fade-in-up { - from { opacity: 0; transform: translateY(20px); } - to { opacity: 1; transform: translateY(0); } +@keyframes grow-reveal { /* Slower grow transition */ + from { + opacity: 0; + max-height: 0; + transform: scale(0.95); + } + to { + opacity: 0.4; /* Faded while unrolling */ + max-height: 2000px; /* Sufficiently large to contain content */ + transform: scale(1); + } +} + +@keyframes shrink-fade-away { /* New animation for shrinking */ + from { + opacity: 0.4; + max-height: 2000px; + transform: scale(1); + } + to { + opacity: 0; + max-height: 0; + transform: scale(0.95); + } +} + +@keyframes flash-impact { + 0% { + opacity: 1; + filter: brightness(3) saturate(1.5); + box-shadow: 0 0 40px var(--accent-color); + border-color: var(--accent-color); + } + 100% { opacity: 1; filter: brightness(1) saturate(1); } } * { box-sizing: border-box; } @@ -84,13 +115,38 @@ body { .profile { transform: rotate(0.1deg); } .about { transform: translate(-4px, 2px) rotate(-0.5deg); } .interests { transform: translate(6px, -2px) rotate(0.4deg); } - .links { transform: translate(-2px, -4px) rotate(-0.3deg); } - .contact { transform: translate(4px, 6px) rotate(0.5deg); } + .links { transform: translate(-2px, -4px) rotate(-0.3deg); grid-column: span 4; } + .contact { transform: translate(4px, 6px) rotate(0.5deg); grid-column: span 4; } /* CV sections also shuffled */ .experience { transform: translate(3px, -2px) rotate(-0.2deg); } .skills { transform: translate(-3px, 4px) rotate(0.6deg); } .education { transform: translate(2px, 3px) rotate(-0.4deg); } + + /* Base states to prevent "re-added to DOM" flashes */ + .experience, .skills, .education, .cv-only { + opacity: 0; + max-height: 0; + overflow: hidden; + } + + /* Solid states when CV is fully locked in */ + .cv-mode .experience, .cv-mode .skills, .cv-mode .education, .cv-mode .cv-only { + opacity: 1; + max-height: 2000px; + } + + .cv-mode .nav-default { + opacity: 0; + max-height: 0; + pointer-events: none; + overflow: hidden; + } + + /* CV mode layout overrides - ensure full width for key info */ + .cv-mode .education { + grid-column: span 4; + } } @media (max-width: 768px) { @@ -108,11 +164,32 @@ body { .skills { grid-column: span 1; } .hidden { - display: none; + display: none !important; } .reveal { - animation: fade-in-up 0.6s cubic-bezier(0.23, 1, 0.32, 1) forwards; + display: block !important; + animation: grow-reveal 1s cubic-bezier(0.23, 1, 0.32, 1) forwards; + transition: none !important; +} + +.fade-out { + /* This class will be applied when content is being hidden */ + animation: shrink-fade-away 1s cubic-bezier(0.23, 1, 0.32, 1) forwards; + transition: none !important; +} + +.shifting { + filter: blur(2px) grayscale(0.5); + z-index: 10; + pointer-events: none; + transition: none !important; +} + +.flash-glow { + display: block !important; + animation: flash-impact 0.6s ease-out forwards; + transition: none !important; } /* CV Specific Content Styles */ @@ -181,8 +258,6 @@ body { .about { grid-column: span 2; } .interests { grid-column: span 2; } -.links { grid-column: span 2; } -.contact { grid-column: span 2; } .link-grid { list-style: none; padding: 0; display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }