/* Custom tweaks for the portfolio */
html,body { height: 100%; }

/* Smooth gradient text */
.text-primary { color: #6366F1; }

/* Minor form focus */
input:focus, textarea:focus { outline: none; box-shadow: 0 0 0 4px rgba(99,102,241,0.08); border-color: #6366F1; }

/* Utility for subtle card hover */
article:hover { transform: translateY(-4px); transition: transform 200ms ease; }

/* Reveal animation utilities */
.reveal { opacity: 0; transform: translateY(10px); transition: none; }
.reveal.show { animation: reveal-up 600ms cubic-bezier(.22,.9,.35,1) forwards; }
.reveal.show { will-change: transform, opacity; }
.reveal { --reveal-delay: 0ms; }
.reveal.show { animation-delay: var(--reveal-delay); }

@keyframes reveal-up {
	from { opacity: 0; transform: translateY(10px); }
	to   { opacity: 1; transform: translateY(0); }
}

/* Subtle pulse for primary actions (non-intrusive) */
.btn-pulse { position: relative; }
.btn-pulse::after {
	content: '';
	position: absolute;
	inset: 0;
	border-radius: inherit;
	box-shadow: 0 0 0 0 rgba(99,102,241,0.12);
	transition: box-shadow 420ms ease;
	pointer-events: none;
}
.btn-pulse:hover::after { box-shadow: 0 10px 30px -10px rgba(99,102,241,0.18); }
