diff --git a/web/app/cart/page.js b/web/app/cart/page.js
index cb378a25..82a3d8bb 100644
--- a/web/app/cart/page.js
+++ b/web/app/cart/page.js
@@ -57,6 +57,11 @@ function PaymentForm({ clientSecret, totalAmount, onSuccess, onCancel }) {
Total to pay: ${parseFloat(totalAmount).toFixed(2)}
+
+ Demo mode — no real charge. Use test card:
+ 4242 4242 4242 4242
+ · any future date · any 3-digit CVC
+
{payError && {payError}
}
diff --git a/web/app/globals.css b/web/app/globals.css
index bd87fc76..b33b8f62 100644
--- a/web/app/globals.css
+++ b/web/app/globals.css
@@ -152,7 +152,7 @@ body {
.image-links-container {
display: grid;
- grid-template-columns: repeat(4, 1fr);
+ grid-template-columns: repeat(3, 1fr);
gap: 2rem;
justify-content: center;
align-items: stretch;
@@ -710,6 +710,7 @@ body {
margin: 0 auto;
padding: 0 2rem 4rem;
display: grid;
+ grid-template-columns: repeat(3, 1fr);
gap: 1.5rem;
}
@@ -884,11 +885,15 @@ body {
.slideshow-container {
height: 300px;
}
-
+
.image-links-container {
grid-template-columns: repeat(2, 1fr);
gap: 1.5rem;
}
+
+ .info-content {
+ grid-template-columns: 1fr;
+ }
.main-title {
font-size: 2rem;
@@ -2637,6 +2642,25 @@ body {
margin: 0;
}
+.cart-demo-banner {
+ background: #fffbeb;
+ border: 1px solid #fcd34d;
+ border-radius: 8px;
+ padding: 0.6rem 0.9rem;
+ font-size: 0.85rem;
+ color: #78350f;
+ line-height: 1.5;
+}
+
+.cart-demo-card {
+ font-family: monospace;
+ font-weight: 700;
+ margin: 0 0.25rem;
+ background: #fef3c7;
+ padding: 0.1rem 0.35rem;
+ border-radius: 4px;
+}
+
.cart-payment-actions {
display: flex;
flex-direction: column;