/* ============================================================ FEATURES COMPONENT 3-column feature grid with icon, title, description ============================================================ */ .features { padding: 6rem 0; background-color: var(--color-surface); transition: background-color 0.4s ease; } .features-header { text-align: center; margin-bottom: 4rem; } .features-header .section-subtitle { margin: 0 auto; } /* ── Grid ──────────────────────────────────────────────── */ .features-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1.5rem; } /* ── Card ──────────────────────────────────────────────── */ .feature-card { background-color: var(--card-bg); border: 1px solid var(--card-border); border-radius: var(--radius-lg); padding: 2rem; position: relative; overflow: hidden; transition: border-color 0.3s ease, transform 0.3s ease, box-shadow 0.3s ease; cursor: default; } .feature-card::after { content: ''; position: absolute; bottom: 0; left: 0; right: 0; height: 3px; background: linear-gradient(90deg, var(--color-primary), var(--color-accent)); transform: scaleX(0); transform-origin: left; transition: transform 0.35s ease; } .feature-card:hover { border-color: var(--card-hover-border); transform: translateY(-4px); box-shadow: var(--color-card-shadow); } .feature-card:hover::after { transform: scaleX(1); } /* ── Icon ──────────────────────────────────────────────── */ .feature-icon { width: 48px; height: 48px; background-color: var(--color-primary-soft); border-radius: var(--radius-md); display: flex; align-items: center; justify-content: center; margin-bottom: 1.25rem; transition: background-color 0.3s ease; } .feature-icon svg { width: 22px; height: 22px; color: var(--color-primary); stroke: var(--color-primary); fill: none; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; transition: color 0.3s ease, stroke 0.3s ease; } .feature-card:hover .feature-icon { background-color: var(--color-primary); } .feature-card:hover .feature-icon svg { color: var(--color-btn-text); stroke: var(--color-btn-text); } /* ── Text ──────────────────────────────────────────────── */ .feature-title { font-family: var(--font-heading); font-size: 1.15rem; font-weight: 700; color: var(--color-heading); margin-bottom: 0.6rem; transition: color 0.3s ease; } .feature-desc { font-size: 0.92rem; color: var(--color-text-muted); line-height: 1.7; transition: color 0.3s ease; } .feature-link { display: inline-flex; align-items: center; gap: 0.35rem; margin-top: 1rem; font-size: 0.85rem; font-weight: 600; color: var(--color-primary); transition: gap 0.2s ease, color 0.2s ease; } .feature-link:hover { gap: 0.6rem; } .feature-link svg { width: 14px; height: 14px; stroke: currentColor; fill: none; stroke-width: 2.5; stroke-linecap: round; stroke-linejoin: round; } /* ── Responsive ─────────────────────────────────────────── */ @media (max-width: 900px) { .features-grid { grid-template-columns: 1fr 1fr; } } @media (max-width: 580px) { .features-grid { grid-template-columns: 1fr; } }