diff --git a/web-app/css/styles.css b/web-app/css/styles.css index 84b1ea9..c59dea6 100644 --- a/web-app/css/styles.css +++ b/web-app/css/styles.css @@ -22,6 +22,9 @@ --accent-border: rgba(34, 197, 94, 0.35); --overlay-color: rgba(8, 17, 32, 0.78); --on-accent: #ffffff; + --footer-card-color: #e9830f; + --footer-card-light: rgba(252, 176, 91, 0.08); + --footer-card-border: rgba(252, 176, 91, 0.25); --shadow: 0 10px 30px rgba(0, 0, 0, 0.3); --shadow-modal: 0 25px 50px -12px rgba(0, 0, 0, 0.45); --transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); @@ -50,6 +53,8 @@ --shadow-modal: 0 35px 80px -12px rgba(22, 163, 74, 0.35); --text-color: #0f172a; --text-secondary: #64748b; + --footer-card-light: rgba(252, 176, 91, 0.06); + --footer-card-border: rgba(252, 176, 91, 0.18); --hero-green-nav-bg: #e8faf0; --hero-green-border: rgba(22, 163, 74, 0.30); @@ -508,6 +513,82 @@ body { max-width: none; } +.hero-title-wrapper { + position: relative; + display: inline-block; +} + +.python-orbit { + position: absolute; + width: 400px; + height: 400px; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + border: 2px solid rgba(34, 197, 94, 0.15); + border-radius: 50%; + animation: revolve 20s linear infinite; + pointer-events: none; + z-index: 1; +} + +.python-orbiter { + position: absolute; + width: 50px; + height: 50px; + top: -25px; + left: 50%; + transform: translateX(-50%); + display: flex; + align-items: center; + justify-content: center; + animation: rotate 4s linear infinite; +} + +.python-logo { + font-size: 2.5rem; + filter: drop-shadow(0 4px 12px rgba(34, 197, 94, 0.4)); + animation: spinPython 3s linear infinite; +} + +@keyframes revolve { + from { + transform: translate(-50%, -50%) rotate(0deg); + } + to { + transform: translate(-50%, -50%) rotate(360deg); + } +} + +@keyframes rotate { + from { + transform: translateX(-50%) rotate(0deg); + } + to { + transform: translateX(-50%) rotate(360deg); + } +} + +@keyframes spinPython { + from { + transform: rotateY(0deg) scale(1); + } + 50% { + transform: rotateY(180deg) scale(1.1); + } + to { + transform: rotateY(360deg) scale(1); + } +} + +[data-theme="light"] .python-orbit { + border-color: rgba(22, 163, 74, 0.2); +} + +[data-theme="light"] .python-logo { + filter: drop-shadow(0 4px 12px rgba(22, 163, 74, 0.3)); +} + .hero-subtitle { font-size: 1.05rem; @@ -526,7 +607,7 @@ body { color: var(--text-secondary); font-family: 'IBM Plex Mono', monospace; font-size: 0.78rem; - margin-bottom: 2.25rem; + margin-bottom: 5rem; opacity: 0.82; animation: fadeInUp 0.7s ease 0.3s both; } @@ -552,7 +633,7 @@ body { .hero-features { display: flex; - gap: 1.05rem; + gap: 1.6rem; justify-content: center; align-items: center; flex-wrap: wrap; @@ -573,7 +654,7 @@ body { align-items: center; gap: 0.38rem; background: transparent; - padding: 0.15rem 0 0.35rem; + padding: 0.25rem 0 0.35rem; border: 0; border-radius: 0; transition: color 0.2s ease; @@ -2219,21 +2300,73 @@ body { .footer-brand { flex: 1 1 300px; max-width: 400px; + padding: 1.5rem; + background: var(--footer-card-light); + border: 1px solid var(--footer-card-border); + border-radius: 16px; + transition: var(--transition); +} + +.footer-brand:hover { + background: rgba(252, 176, 91, 0.12); + border-color: var(--footer-card-color); + box-shadow: 0 8px 24px rgba(252, 176, 91, 0.15); } .footer-links { flex: 1 1 150px; + padding: 1.5rem; + background: var(--footer-card-light); + border: 1px solid var(--footer-card-border); + border-radius: 16px; + transition: var(--transition); +} + +.footer-links:hover { + background: rgba(252, 176, 91, 0.12); + border-color: var(--footer-card-color); + box-shadow: 0 8px 24px rgba(252, 176, 91, 0.15); } .footer-newsletter { flex: 1 1 250px; max-width: 350px; + padding: 1.5rem; + background: var(--footer-card-light); + border: 1px solid var(--footer-card-border); + border-radius: 16px; + transition: var(--transition); +} + +.footer-newsletter:hover { + background: rgba(252, 176, 91, 0.12); + border-color: var(--footer-card-color); + box-shadow: 0 8px 24px rgba(252, 176, 91, 0.15); +} + +[data-theme="dark"] .footer-brand, +[data-theme="dark"] .footer-links, +[data-theme="dark"] .footer-newsletter { + background: rgba(0, 0, 0, 0.4); + border-color: rgba(252, 176, 91, 0.08); +} + +[data-theme="dark"] .footer-brand:hover, +[data-theme="dark"] .footer-links:hover, +[data-theme="dark"] .footer-newsletter:hover { + background: rgba(0, 0, 0, 0.5); + border-color: rgba(252, 176, 91, 0.15); + box-shadow: 0 8px 24px rgba(252, 176, 91, 0.08); } .footer-brand h2 { font-size: 1.5rem; color: var(--text-color); margin-bottom: 1rem; + background: linear-gradient(135deg, var(--text-color), var(--footer-card-color)); + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + background-clip: text; } .footer-brand p { @@ -2253,19 +2386,33 @@ body { width: 40px; height: 40px; border-radius: 50%; - background: rgba(34, 197, 94, 0.08); - color: var(--accent-color); + background: rgba(252, 176, 91, 0.1); + color: var(--footer-card-color); font-size: 1.2rem; transition: var(--transition); - border: 1px solid rgba(34, 197, 94, 0.15); + border: 1px solid rgba(252, 176, 91, 0.2); text-decoration: none; } .footer-social-icons a:hover { - background: var(--accent-color); - color: var(--on-accent); + background: linear-gradient(135deg, rgba(252, 176, 91, 0.15), rgba(252, 176, 91, 0.1)); + color: var(--footer-card-color); + border-color: var(--footer-card-color); transform: translateY(-5px); - box-shadow: 0 10px 20px rgba(34, 197, 94, 0.3); + box-shadow: 0 10px 25px rgba(252, 176, 91, 0.25); +} + +[data-theme="dark"] .footer-social-icons a { + background: rgba(0, 0, 0, 0.3); + color: rgba(252, 176, 91, 0.7); + border-color: rgba(252, 176, 91, 0.1); +} + +[data-theme="dark"] .footer-social-icons a:hover { + background: rgba(252, 176, 91, 0.08); + color: var(--footer-card-color); + border-color: rgba(252, 176, 91, 0.12); + box-shadow: 0 10px 25px rgba(252, 176, 91, 0.1); } .footer-links h3, @@ -2284,9 +2431,26 @@ body { bottom: 0; left: 0; width: 40px; - height: 1px; - background: var(--accent-color); + height: 2px; + background: var(--footer-card-color); border-radius: 2px; + transition: var(--transition); +} + +.footer-links:hover h3::after, +.footer-newsletter:hover h3::after { + width: 60px; + background: var(--footer-card-color); +} + +[data-theme="dark"] .footer-links h3::after, +[data-theme="dark"] .footer-newsletter h3::after { + background: rgba(252, 176, 91, 0.5); +} + +[data-theme="dark"] .footer-links:hover h3::after, +[data-theme="dark"] .footer-newsletter:hover h3::after { + background: rgba(252, 176, 91, 0.7); } .footer-links ul { @@ -2308,16 +2472,20 @@ body { .footer-links a i { font-size: 0.9rem; - color: var(--accent-color); - opacity: 0.7; + color: var(--footer-card-color); + opacity: 0.8; transition: var(--transition); } .footer-links a:hover { - color: var(--accent-color); + color: var(--footer-card-color); transform: translateX(5px); } +.footer-links a:hover i { + opacity: 1; +} + .newsletter-form { display: flex; position: relative; @@ -2327,8 +2495,8 @@ body { width: 100%; padding: 0.8rem 3.5rem 0.8rem 1.2rem; border-radius: 50px; - border: 1px solid var(--border-color); - background: var(--bg-color); + border: 1px solid rgba(252, 176, 91, 0.2); + background: rgba(252, 176, 91, 0.04); color: var(--text-color); font-family: inherit; font-size: 0.95rem; @@ -2336,9 +2504,14 @@ body { transition: var(--transition); } +.newsletter-form input::placeholder { + color: rgba(148, 163, 184, 0.6); +} + .newsletter-form input:focus { - border-color: var(--accent-color); - box-shadow: 0 0 0 3px rgba(34, 197, 94, 0.12); + border-color: var(--footer-card-color); + box-shadow: 0 0 0 3px rgba(252, 176, 91, 0.15); + background: rgba(252, 176, 91, 0.08); } .newsletter-form button { @@ -2350,18 +2523,29 @@ body { height: 36px; border-radius: 50%; border: none; - background: var(--accent-color); - color: var(--on-accent); + background: linear-gradient(135deg, var(--footer-card-color), rgba(252, 176, 91, 0.8)); + color: #5d4a3a; cursor: pointer; display: flex; align-items: center; justify-content: center; transition: var(--transition); + font-weight: 600; } .newsletter-form button:hover { - box-shadow: 0 5px 15px rgba(34, 197, 94, 0.4); - transform: translateY(-50%) scale(1.05); + box-shadow: 0 8px 20px rgba(252, 176, 91, 0.35); + transform: translateY(-50%) scale(1.08); +} + +[data-theme="dark"] .newsletter-form button { + background: rgba(252, 176, 91, 0.7); + color: #000000; +} + +[data-theme="dark"] .newsletter-form button:hover { + background: rgba(252, 176, 91, 0.85); + box-shadow: 0 8px 20px rgba(252, 176, 91, 0.15); } .footer-bottom { @@ -2370,7 +2554,7 @@ body { align-items: center; gap: 1rem; padding-top: 2rem; - border-top: 1px solid var(--border-color); + border-top: 1px solid rgba(252, 176, 91, 0.15); color: var(--text-secondary); font-size: 0.95rem; } @@ -2388,11 +2572,23 @@ body { } .footer-bottom-links a:hover { - color: var(--primary-color); + color: var(--footer-card-color); } .separator { - color: var(--border-color); + color: rgba(252, 176, 91, 0.3); +} + +[data-theme="dark"] .footer-bottom { + border-top: 1px solid rgba(252, 176, 91, 0.08); +} + +[data-theme="dark"] .footer-bottom-links a:hover { + color: rgba(252, 176, 91, 0.8); +} + +[data-theme="dark"] .separator { + color: rgba(252, 176, 91, 0.12); } /* ═══════════════════════════════════════ @@ -2821,6 +3017,21 @@ body { margin-bottom: 1rem; } + .python-orbit { + width: 280px; + height: 280px; + } + + .python-orbiter { + width: 40px; + height: 40px; + top: -20px; + } + + .python-logo { + font-size: 2rem; + } + .hero-subtitle { font-size: 1rem; margin-bottom: 2rem; @@ -3142,4 +3353,854 @@ body { .sticky-filter-bar { transition: none; } -} \ No newline at end of file +} + +/* ========================================================================== + ARCADE REDESIGN OVERRIDES + ========================================================================== */ + +:root { + --accent-color: #6abf8d; + --primary-color: #6abf8d; + --secondary-color: #f2a65a; + --success-color: #5fbf93; + --danger-color: #de6d5b; + --warning-color: #f2b85f; + --bg-color: #f8f5ee; + --surface-color: rgba(255, 253, 248, 0.82); + --panel-color: #fffaf1; + --control-color: #fffdf8; + --text-color: #2c241f; + --text-secondary: #75675d; + --border-color: rgba(118, 99, 84, 0.14); + --accent-soft: rgba(106, 191, 141, 0.16); + --accent-border: rgba(106, 191, 141, 0.28); + --overlay-color: rgba(255, 248, 240, 0.7); + --on-accent: #fffdf8; + --shadow: 0 22px 60px rgba(155, 123, 90, 0.14); + --shadow-modal: 0 35px 90px rgba(101, 72, 39, 0.18); +} + +[data-theme="dark"] { + --accent-color: #9fddb5; + --primary-color: #9fddb5; + --secondary-color: #f6c58d; + --success-color: #9fddb5; + --danger-color: #ff9e8c; + --warning-color: #ffd48f; + --bg-color: #13100f; + --surface-color: rgba(34, 28, 26, 0.92); + --panel-color: #1d1817; + --control-color: #2a2321; + --text-color: #f8eee4; + --text-secondary: #d8c6b6; + --border-color: rgba(255, 239, 223, 0.14); + --accent-soft: rgba(159, 221, 181, 0.14); + --accent-border: rgba(159, 221, 181, 0.28); + --overlay-color: rgba(15, 12, 11, 0.8); + --shadow: 0 28px 70px rgba(0, 0, 0, 0.42); + --shadow-modal: 0 35px 90px rgba(0, 0, 0, 0.5); +} + +body { + font-family: 'DM Sans', 'Segoe UI', sans-serif; + background: + radial-gradient(circle at top left, rgba(255, 219, 174, 0.44), transparent 30%), + radial-gradient(circle at top right, rgba(192, 245, 224, 0.46), transparent 24%), + linear-gradient(180deg, #fffdf8 0%, #f8f5ee 45%, #f5efe5 100%); + color: var(--text-color); +} + +[data-theme="dark"] body { + background: + radial-gradient(circle at top left, rgba(242, 166, 90, 0.12), transparent 28%), + radial-gradient(circle at top right, rgba(159, 221, 181, 0.1), transparent 24%), + linear-gradient(180deg, #161211 0%, #0f0c0b 100%); +} + +.cursor-glow { + position: fixed; + width: 240px; + height: 240px; + border-radius: 50%; + pointer-events: none; + z-index: 0; + opacity: 0.5; + background: radial-gradient(circle, rgba(255, 197, 115, 0.28) 0%, rgba(121, 221, 183, 0.12) 42%, transparent 72%); + transform: translate3d(-50%, -50%, 0); + transition: opacity 0.25s ease; +} + +.navbar { + padding: 1rem 12px; + background: transparent; + border-bottom: 0; +} + +.nav-island, +.nav-wrapper { + max-width: 1240px; + margin: 0 auto; + background: rgba(255, 252, 245, 0.72); + border: 1px solid rgba(128, 104, 85, 0.12); + border-radius: 999px; + padding: 0.9rem 1.15rem; + box-shadow: 0 18px 44px rgba(146, 111, 74, 0.14); + backdrop-filter: blur(18px); + -webkit-backdrop-filter: blur(18px); + display: flex; + align-items: center; + justify-content: space-between; + gap: 1rem; +} + +[data-theme="dark"] .nav-island, +[data-theme="dark"] .nav-wrapper { + background: rgba(29, 24, 23, 0.88); + border-color: rgba(255, 243, 224, 0.14); +} + +.navbar.scrolled .nav-wrapper { + transform: translateY(-2px); + box-shadow: 0 20px 56px rgba(146, 111, 74, 0.18); +} + +.logo-tagline { + background: rgba(255, 255, 255, 0.7); + color: #6b5c50; + border: 1px solid rgba(128, 104, 85, 0.08); +} + +[data-theme="dark"] .logo-tagline { + background: rgba(255, 255, 255, 0.06); + color: #f0dfd1; +} + +.search-box { + background: rgba(255, 255, 255, 0.74); + border: 1px solid rgba(128, 104, 85, 0.12); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.7); + height: 54px; + max-width: 460px; +} + +.search-box i, +.search-box input, +[data-theme="light"] .search-box i, +[data-theme="light"] .search-box input { + color: var(--text-color); +} + +.search-box input::placeholder { + color: var(--text-secondary); +} + +[data-theme="dark"] .search-box { + background: rgba(255, 255, 255, 0.06); + border-color: rgba(255, 239, 223, 0.12); +} + +[data-theme="dark"] .search-box i, +[data-theme="dark"] .search-box input { + color: var(--text-color); +} + +[data-theme="dark"] .search-box input::placeholder { + color: var(--text-secondary); +} + +.theme-toggle, +.sound-toggle { + background: linear-gradient(135deg, #fff7ec, #f6dcc5); + color: #58463c; + border: 1px solid rgba(128, 104, 85, 0.1); + box-shadow: 0 10px 20px rgba(180, 145, 100, 0.12); +} + +[data-theme="dark"] .theme-toggle, +[data-theme="dark"] .sound-toggle { + background: linear-gradient(135deg, #443530, #2f2622); + color: #fff5eb; +} + +.hero-section { + min-height: 0; + padding: 4rem 0 2rem; + background: transparent; +} + +#boardCanvas { + opacity: 0.17; + mix-blend-mode: multiply; +} + +[data-theme="dark"] #boardCanvas { + opacity: 0.11; + mix-blend-mode: screen; +} + +.hero-background { + background: + radial-gradient(circle at top left, rgba(255, 205, 142, 0.28), transparent 28%), + radial-gradient(circle at 85% 20%, rgba(183, 230, 215, 0.32), transparent 30%), + linear-gradient(180deg, rgba(255, 253, 248, 0.78), rgba(255, 247, 237, 0.34)); + opacity: 1; + mask-image: none; + -webkit-mask-image: none; +} + +.hero-orb { + position: absolute; + border-radius: 50%; + filter: blur(10px); + opacity: 0.55; + pointer-events: none; +} + +.hero-orb-one { + width: 240px; + height: 240px; + left: -40px; + top: 60px; + background: radial-gradient(circle, rgba(252, 193, 118, 0.52), transparent 70%); + animation: float 9s ease-in-out infinite; +} + +.hero-orb-two { + width: 280px; + height: 280px; + right: -30px; + top: 100px; + background: radial-gradient(circle, rgba(158, 233, 205, 0.52), transparent 72%); + animation: float 11s ease-in-out infinite reverse; +} + +.hero-shell { + position: relative; + z-index: 2; + display: block; + max-width: 760px; + margin: 0 auto; +} + +.hero-content, +.hero-sidekick-card, +.achievement-card, +.featured-lab-card, +.project-card, +.sticky-filter-bar, +.playground-section, +.footer, +.modal-content { + backdrop-filter: blur(18px); + -webkit-backdrop-filter: blur(18px); +} + +.hero-content { + align-items: flex-start; + text-align: center; + max-width: none; + padding: 1.75rem; + border-radius: 34px; + background: linear-gradient(180deg, rgba(255, 255, 255, 0.7), rgba(255, 249, 239, 0.6)); + border: 1px solid rgba(128, 104, 85, 0.1); + box-shadow: var(--shadow); +} + +[data-theme="dark"] .hero-content { + background: linear-gradient(180deg, rgba(35, 29, 27, 0.9), rgba(23, 19, 18, 0.96)); +} + +.hero-kicker, +.section-kicker, +.mini-label, +.achievement-label, +.lab-tag { + display: inline-flex; + align-items: center; + gap: 0.4rem; + font-family: 'IBM Plex Mono', monospace; + font-size: 0.78rem; + letter-spacing: 0.1em; + text-transform: uppercase; + color: #8c7055; +} + +[data-theme="dark"] .hero-kicker, +[data-theme="dark"] .section-kicker, +[data-theme="dark"] .mini-label, +[data-theme="dark"] .achievement-label, +[data-theme="dark"] .lab-tag { + color: #e0b88f; +} + +.hero-badge-row, +.hero-cta-row, +.projects-header-badges { + display: flex; + flex-wrap: wrap; + gap: 1.5rem; +} + +.hero-cta-row, +.hero-features { + justify-content: center; +} + +.hero-pill, +.mini-badge, +.projects-count-badge { + display: inline-flex; + align-items: center; + gap: 0.5rem; + padding: 0.7rem 1rem; + border-radius: 999px; + background: rgba(255, 255, 255, 0.78); + border: 1px solid rgba(128, 104, 85, 0.1); + box-shadow: 0 10px 18px rgba(176, 137, 94, 0.09); +} + +[data-theme="dark"] .hero-pill, +[data-theme="dark"] .mini-badge, +[data-theme="dark"] .projects-count-badge { + background: rgba(255, 255, 255, 0.08); +} + +.hero-title { + font-family: 'Fredoka', 'Segoe UI', sans-serif; + font-size: clamp(3rem, 7vw, 5.6rem); + line-height: 1; + letter-spacing: -0.05em; + margin-top: 0.75rem; +} + +.hero-title span { + display: block; +} + +.hero-title-line + .hero-title-line { + margin-top: 0.18em; +} + +.hero-title-accent { + font-style: italic; + color: #b87745; + max-width: none; +} + +[data-theme="dark"] .hero-title-accent { + color: #f0bb83; +} + +.hero-subtitle { + font-size: 1.08rem; + line-height: 1.75; + color: var(--text-secondary); + max-width: 56ch; + margin: 0.75rem auto 0; +} + +.hero-typing { + display: inline-flex; + flex-wrap: wrap; + gap: 0.55rem; + align-items: center; + margin-top: 1rem; + padding: 0.85rem 1rem; + border-radius: 16px; + background: rgba(44, 36, 31, 0.05); +} + +[data-theme="dark"] .hero-typing { + background: rgba(255, 255, 255, 0.06); +} + +.typing-label, +.typing-text { + font-family: 'IBM Plex Mono', monospace; +} + +.typing-text { + position: relative; + color: #9a643b; + font-weight: 600; +} + +[data-theme="dark"] .typing-text { + color: #f0bb83; +} + +.typing-text::after { + content: ''; + display: inline-block; + width: 1ch; + height: 1em; + margin-left: 2px; + border-right: 2px solid currentColor; + animation: blink 0.9s steps(1) infinite; + vertical-align: -0.12em; +} + +@keyframes blink { + 50% { opacity: 0; } +} + +.hero-meta { + justify-content: center; + gap: 0.8rem; + margin: 1rem 0 0; +} + +.hero-meta span { + padding: 0.75rem 0.95rem; + border-radius: 16px; + background: rgba(255, 255, 255, 0.74); + border: 1px solid rgba(128, 104, 85, 0.08); +} + +[data-theme="dark"] .hero-meta span { + background: rgba(255, 255, 255, 0.08); + border-color: rgba(255, 239, 223, 0.1); +} + +.btn-explore, +.btn-secondary-hero, +.btn-random-project, +.lab-action, +.inline-link-button, +.btn-play { + border-radius: 999px; + font-family: 'Fredoka', 'Segoe UI', sans-serif; + font-weight: 600; + transition: transform 0.22s ease, box-shadow 0.22s ease, background 0.22s ease, color 0.22s ease; +} + +.btn-explore, +.btn-random-project, +.lab-action { + background: linear-gradient(135deg, #6abf8d, #7fcfbd); + color: #fffdf8; + box-shadow: 0 18px 28px rgba(106, 191, 141, 0.28); +} + +.btn-random-project { + padding: 1rem 2.25rem; + font-size: 1rem; + min-width: 240px; + letter-spacing: 0.01em; + box-shadow: 0 20px 36px rgba(34, 197, 94, 0.35); + background: linear-gradient(135deg, #22c55e, #14b8a6); + color: #ffffff; +} + +.btn-secondary-hero, +.inline-link-button, +.btn-play { + background: rgba(255, 255, 255, 0.85); + color: var(--text-color); + border: 1px solid rgba(128, 104, 85, 0.1); +} + +[data-theme="dark"] .btn-secondary-hero, +[data-theme="dark"] .inline-link-button, +[data-theme="dark"] .btn-play { + background: rgba(255, 255, 255, 0.1); + color: var(--text-color); + border-color: rgba(255, 239, 223, 0.12); +} + +.btn-secondary-hero { + padding: 1rem 1.35rem; +} + +.hero-features, +.sticky-filter-inner { + background: rgba(255, 255, 255, 0.58); + border: 1px solid rgba(128, 104, 85, 0.08); + border-radius: 24px; + padding: 0.65rem; + gap: 0.55rem; +} + +[data-theme="dark"] .hero-features, +[data-theme="dark"] .sticky-filter-inner { + background: rgba(255, 255, 255, 0.06); + border-color: rgba(255, 239, 223, 0.1); +} + +.feature-badge, +.sticky-tab { + border-radius: 999px; + padding: 0.8rem 1rem; + text-transform: none; + font-family: 'Fredoka', 'Segoe UI', sans-serif; + background: transparent; +} + +.feature-icon { + display: inline-flex; +} + +.feature-badge::before, +.feature-badge::after { + display: none; +} + +.feature-badge.active, +.sticky-tab.active { + background: linear-gradient(135deg, rgba(255, 198, 132, 0.32), rgba(125, 220, 185, 0.3)); + color: var(--text-color); + border: 1px solid rgba(128, 104, 85, 0.1); +} + +[data-theme="dark"] .feature-badge, +[data-theme="dark"] .sticky-tab { + color: var(--text-secondary); +} + +[data-theme="dark"] .feature-badge.active, +[data-theme="dark"] .sticky-tab.active { + border-color: rgba(255, 239, 223, 0.12); +} + +.sticky-filter-bar { + top: 16px; + left: 12px; + right: 12px; + width: auto; + background: transparent; + border-bottom: 0; + box-shadow: none; +} + +.hero-card-topline, +.progress-card-header, +.progress-caption, +.featured-lab-header, +.section-heading, +.projects-header { + display: flex; + justify-content: space-between; + gap: 1rem; +} + +.progress-card { + padding: 1rem; + border-radius: 22px; + background: rgba(255, 255, 255, 0.62); + border: 1px solid rgba(128, 104, 85, 0.08); +} + +[data-theme="dark"] .progress-card { + background: rgba(255, 255, 255, 0.07); + border-color: rgba(255, 239, 223, 0.1); +} + +.progress-track { + overflow: hidden; + height: 12px; + border-radius: 999px; + background: rgba(106, 191, 141, 0.14); + margin: 0.85rem 0 0.75rem; +} + +.progress-fill { + display: block; + height: 100%; + border-radius: inherit; + background: linear-gradient(90deg, #6abf8d, #f2c26c); +} + +.achievement-grid { + display: grid; + grid-template-columns: repeat(2, minmax(0, 1fr)); + gap: 1rem; +} + +.reward-mint, +.lab-card-mint { + background: linear-gradient(160deg, rgba(203, 247, 224, 0.9), rgba(255, 251, 241, 0.9)); +} + +.reward-lavender { + background: linear-gradient(160deg, rgba(236, 226, 255, 0.9), rgba(255, 251, 241, 0.9)); +} + +.lab-card-orange { + background: linear-gradient(160deg, rgba(255, 225, 191, 0.92), rgba(255, 252, 244, 0.94)); +} + +.lab-card-cyan { + background: linear-gradient(160deg, rgba(208, 245, 246, 0.92), rgba(255, 252, 244, 0.94)); +} + +.achievement-strip, +.projects-section { + padding: 1.2rem 0 2.5rem; +} + +.achievement-grid { + grid-template-columns: 1.4fr repeat(3, minmax(0, 1fr)); +} + +.achievement-card { + padding: 1.35rem; + border-radius: 28px; + background: rgba(255, 255, 255, 0.72); + border: 1px solid rgba(128, 104, 85, 0.1); + box-shadow: var(--shadow); +} + +[data-theme="dark"] .achievement-card { + background: rgba(255, 255, 255, 0.07); + border-color: rgba(255, 239, 223, 0.1); +} + +.achievement-card-gold { + display: grid; + grid-template-columns: auto 1fr; + gap: 1rem; + align-items: start; + background: linear-gradient(145deg, rgba(255, 240, 210, 0.92), rgba(255, 252, 245, 0.94)); +} + +.achievement-icon, +.achievement-stat { + width: 64px; + height: 64px; + border-radius: 20px; + display: grid; + place-items: center; + background: linear-gradient(135deg, #ffd497, #ffefc9); + color: #8f5f26; + font-size: 1.35rem; + font-family: 'Fredoka', sans-serif; +} + +.achievement-stat { + width: auto; + height: auto; + border-radius: 18px; + padding: 0.45rem 0.8rem; + font-size: 2rem; +} + +.section-heading, +.projects-header { + align-items: end; + margin-bottom: 1.3rem; +} + +.section-heading h2, +.projects-header h2 { + font-family: 'Fredoka', sans-serif; + font-size: clamp(1.8rem, 4vw, 3rem); + line-height: 1; + margin-top: 0.4rem; +} + +.projects-grid { + gap: 1.25rem; +} + +.project-card { + position: relative; + overflow: hidden; + padding: 1.45rem 1.25rem 1.15rem; + display: flex; + flex-direction: column; + border-radius: 28px; + background: linear-gradient(180deg, rgba(252, 176, 91, 0.12), rgba(252, 176, 91, 0.08)); + border: 1px solid rgba(252, 176, 91, 0.3); + box-shadow: 0 22px 40px rgba(252, 176, 91, 0.08); + transform-style: preserve-3d; +} + +[data-theme="dark"] .project-card { + background: linear-gradient(180deg, rgba(0, 0, 0, 0.4), rgba(10, 10, 10, 0.5)); + border-color: rgba(252, 176, 91, 0.08); + box-shadow: 0 22px 40px rgba(0, 0, 0, 0.3); +} + +.project-card::before { + content: ''; + position: absolute; + inset: 0; + background: linear-gradient(135deg, rgba(252, 176, 91, 0.12), transparent 38%, rgba(252, 176, 91, 0.08)); + opacity: 0; + transition: opacity 0.22s ease; +} + +.project-card:hover::before { + opacity: 1; +} + +.project-card:hover { + transform: translateY(-8px); + border-color: var(--footer-card-color); + box-shadow: 0 30px 48px rgba(252, 176, 91, 0.15); +} + +.card-icon { + width: 72px; + height: 72px; + display: grid; + place-items: center; + border-radius: 22px; + background: linear-gradient(145deg, rgba(252, 176, 91, 0.25), rgba(252, 176, 91, 0.15)); + color: #8b6649; + box-shadow: inset 0 1px 0 rgba(252, 176, 91, 0.3); + border: 1px solid rgba(252, 176, 91, 0.2); +} + +[data-theme="dark"] .card-icon { + background: linear-gradient(145deg, rgba(40, 40, 40, 0.8), rgba(20, 20, 20, 0.9)); + color: var(--footer-card-color); + box-shadow: inset 0 1px 0 rgba(252, 176, 91, 0.08); + border-color: rgba(252, 176, 91, 0.1); +} +} + +.project-card h3 { + font-family: 'Fredoka', sans-serif; + font-size: 1.35rem; + margin-top: 1rem; +} + +.project-card p { + color: var(--text-secondary); + margin: 0.65rem 0 1rem; +} + +.btn-play { + padding: 0.82rem 1.2rem; +} + +.project-card .btn-share, +.project-card .btn-favorite { + z-index: 3; +} + +.project-card .btn-share { + width: 40px; + height: 40px; + background: rgba(255, 255, 255, 0.8); +} + +.project-card .btn-favorite { + background: rgba(255, 255, 255, 0.72); +} + +.project-card-badge { + display: inline-flex; + align-items: center; + gap: 0.35rem; + padding: 0.45rem 0.7rem; + border-radius: 999px; + font-size: 0.76rem; + font-family: 'IBM Plex Mono', monospace; + background: rgba(255, 255, 255, 0.72); + border: 1px solid rgba(128, 104, 85, 0.1); +} + +[data-theme="dark"] .project-card-badge { + background: rgba(255, 255, 255, 0.08); + border-color: rgba(255, 239, 223, 0.12); + color: var(--text-color); +} + +.project-card-meta { + display: flex; + flex-wrap: wrap; + gap: 0.5rem; + margin-top: auto; +} + +.footer { + margin-top: 3rem; + background: rgba(255, 252, 245, 0.76); + border-top: 1px solid rgba(128, 104, 85, 0.08); +} + +[data-theme="dark"] .footer { + background: rgba(0, 0, 0, 0.7); +} + +[data-theme="dark"] .footer, +[data-theme="dark"] .footer a, +[data-theme="dark"] .footer p, +[data-theme="dark"] .footer h2, +[data-theme="dark"] .footer h3 { + color: var(--text-color); +} + +.reveal-on-scroll { + opacity: 0; + transform: translateY(20px); +} + +.reveal-on-scroll.is-visible { + opacity: 1; + transform: translateY(0); + transition: opacity 0.55s ease, transform 0.55s ease; +} + +@media (max-width: 1100px) { + .achievement-grid { + grid-template-columns: 1fr; + } +} + +@media (max-width: 768px) { + .cursor-glow { + display: none; + } + + .nav-wrapper { + border-radius: 28px; + flex-wrap: wrap; + } + + .search-box { + max-width: none; + width: 100%; + order: 3; + } + + .hero-content { + padding: 1.35rem; + } + + .hero-title { + font-size: 2.8rem; + } + + .section-heading, + .projects-header, + .hero-card-topline, + .progress-card-header, + .progress-caption { + flex-direction: column; + align-items: flex-start; + } +} + +@media (prefers-reduced-motion: reduce) { + .cursor-glow, + .hero-orb-one, + .hero-orb-two, + .typing-text::after { + animation: none !important; + } + + .project-card, + .project-card:hover, + .btn-explore, + .btn-secondary-hero, + .btn-random-project, + .lab-action, + .inline-link-button, + .btn-play { + transform: none !important; + } +} diff --git a/web-app/index.html b/web-app/index.html index 54d2507..e45672f 100644 --- a/web-app/index.html +++ b/web-app/index.html @@ -799,6 +799,7 @@ 🚀 Skip to main content +