1---
2interface Props {
3 eyebrow: string;
4 title: string;
5 body: string;
6 href: string;
7 learnMore?: string;
8}
9const { eyebrow, title, body, href, learnMore = "Learn more" } = Astro.props;
10---
11
12<a class="product-card" href={href}>
13 <div class="product-card__art">
14 <slot />
15 </div>
16 <div class="product-card__body">
17 <div class="product-card__eyebrow">{eyebrow}</div>
18 <div class="product-card__title">{title}</div>
19 <p class="product-card__text">{body}</p>
20 <span class="product-card__cta">
21 {learnMore} <span aria-hidden>&rarr;</span>
22 </span>
23 </div>
24</a>
25
26<style>
27 .product-card {
28 display: flex;
29 flex-direction: column;
30 background: var(--alc-bg-elev-1);
31 border: 1px solid var(--alc-hairline);
32 border-radius: 14px;
33 overflow: hidden;
34 text-decoration: none;
35 color: inherit;
36 transition:
37 border-color 200ms ease,
38 transform 200ms ease,
39 box-shadow 200ms ease;
40 box-shadow: var(--alc-shadow-sm);
41 }
42 .product-card:hover {
43 border-color: var(--alc-accent-deep);
44 transform: translateY(-2px);
45 box-shadow: 0 6px 20px rgba(184, 138, 74, 0.12);
46 }
47 .product-card:hover .product-card__cta {
48 color: var(--alc-accent-deep);
49 }
50 .product-card__art {
51 height: 152px;
52 display: flex;
53 align-items: center;
54 justify-content: center;
55 border-bottom: 1px solid var(--alc-hairline);
56 background: linear-gradient(
57 180deg,
58 color-mix(in srgb, var(--alc-bg-nav) 90%, transparent) 0%,
59 var(--alc-bg-elev-1) 100%
60 );
61 overflow: hidden;
62 padding: 14px;
63 }
64 .product-card__body {
65 padding: 18px 20px 20px;
66 display: flex;
67 flex-direction: column;
68 gap: 6px;
69 flex: 1;
70 }
71 .product-card__eyebrow {
72 font-family: var(--alc-font-mono);
73 font-size: 10.5px;
74 letter-spacing: 0.14em;
75 text-transform: uppercase;
76 color: var(--alc-accent-deep);
77 font-weight: 500;
78 }
79 .product-card__title {
80 font-family: var(--alc-font-serif);
81 font-size: 20px;
82 font-weight: 500;
83 color: var(--alc-fg-1);
84 letter-spacing: -0.01em;
85 line-height: 1.2;
86 margin-top: 2px;
87 }
88 .product-card__text {
89 font-size: 13.5px;
90 line-height: 1.55;
91 color: var(--alc-fg-2);
92 margin: 4px 0 0;
93 flex: 1;
94 }
95 .product-card__cta {
96 font-family: var(--alc-font-mono);
97 font-size: 12px;
98 color: var(--alc-fg-3);
99 margin-top: 12px;
100 transition: color 200ms ease;
101 }
102</style>