.projects-section { flex: 0 0 340px; display: flex; flex-direction: column; gap: var(--space-md); padding: var(--space-xl) var(--space-lg); background: rgba(20, 20, 30, 0.10); backdrop-filter: blur(24px) saturate(140%) brightness(1.08); -webkit-backdrop-filter: blur(24px) saturate(140%) brightness(1.08); border-radius: var(--border-radius-large); box-shadow: var(--shadow-md), var(--inset-shadow); border-bottom: 1px solid var(--glass-border); min-width: 380px; max-width: 440px; align-self: stretch; } .projects-title { font-size: var(--text-md); font-weight: 700; margin-bottom: var(--space-sm); color: var(--text-color); letter-spacing: 0.03em; background: linear-gradient(135deg, var(--secondary-500) 0%, var(--text-color) 100%); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; } /* ------------------------------------------------------------------ */ /* Project cards — unified surface + accent left bar */ /* nth-of-type replaces nth-child so .projects-title doesn't shift */ /* the odd/even alternation (bug fix). */ /* ------------------------------------------------------------------ */ .project { position: relative; padding: var(--space-md) var(--space-md) var(--space-md) var(--space-lg); border-radius: var(--border-radius); background: var(--surface-raised); border: 1px solid var(--surface-divider); box-shadow: var(--shadow-sm); display: flex; flex-direction: column; gap: var(--space-2xs); transition: transform var(--dur-med) var(--ease-out-soft), box-shadow var(--dur-med) var(--ease-out-soft), border-color var(--dur-med) var(--ease-out-soft), filter var(--dur-med) var(--ease-out-soft); overflow: hidden; } /* Thin accent bar — rotating accent color per card */ .project::before { content: ""; position: absolute; left: 0; top: 50%; transform: translateY(-50%); width: 3px; height: 60%; border-radius: var(--radius-pill); background: var(--primary-500); opacity: 0.6; transition: height var(--dur-med) var(--ease-out-soft), opacity var(--dur-med) var(--ease-out-soft); } .project:nth-of-type(odd)::before { background: linear-gradient(var(--primary-500), var(--secondary-500)); } .project:nth-of-type(even)::before { background: linear-gradient(var(--tertiary-500), var(--primary-500)); } .project:hover, .project:focus-within { transform: translateY(-2px); box-shadow: var(--shadow-md), var(--accent-glow-ring); border-color: rgba(79, 195, 247, 0.3); filter: brightness(1.05) saturate(1.08); } .project:hover::before, .project:focus-within::before { height: 85%; opacity: 1; } .project-title { font-size: var(--text-md); font-weight: 600; color: var(--text-color); margin-bottom: var(--space-2xs); letter-spacing: 0.01em; background: linear-gradient(90deg, var(--text-color) 0%, var(--secondary-400) 100%); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; position: relative; display: flex; align-items: center; justify-content: space-between; gap: var(--space-sm); } .project-icons { display: flex; gap: var(--space-xs); align-items: center; flex: 0 0 auto; flex-wrap: nowrap; } /* Keep long titles from pushing icons to a new line */ .project-title > span:first-child { flex: 1 1 auto; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .project-icon-link { display: inline-flex; align-items: center; justify-content: center; width: 28px; height: 28px; border-radius: var(--radius-sm); color: var(--text-color-light); transition: background var(--dur-fast) var(--ease-out-soft), color var(--dur-fast) var(--ease-out-soft); } .project-icon-link:hover, .project-icon-link:focus-visible { color: var(--primary-500); background: rgba(79, 195, 247, 0.12); } .project-desc { font-size: var(--text-sm); color: var(--text-color-light); font-weight: 400; line-height: 1.5; } /* ------------------------------------------------------------------ */ /* Responsive */ /* ------------------------------------------------------------------ */ @media (max-width: 1024px) { .projects-section { flex: unset; max-width: 100%; margin-left: 0; margin-top: var(--space-xl); min-width: unset; } } @media (max-width: 768px) { .projects-section { padding: var(--space-xl) var(--space-md); gap: var(--space-md); } .projects-title { font-size: var(--text-md); text-align: center; margin-bottom: var(--space-sm); } } @media (max-width: 480px) { .projects-section { padding: var(--space-lg) var(--space-md); gap: var(--space-sm); } .projects-title { font-size: var(--text-sm); } .project { padding: var(--space-md) var(--space-sm) var(--space-md) var(--space-md); } .project-title { font-size: var(--text-sm); } .project-desc { font-size: var(--text-xs); } .project-icons { gap: var(--space-2xs); } } @media (max-width: 380px) { .project { padding: var(--space-sm) var(--space-xs) var(--space-sm) var(--space-sm); } .project-title { font-size: var(--text-xs); flex-direction: row; align-items: center; gap: var(--space-xs); } }