+
{getInitials(exp.data.company)}
)}
-
+
{label}
@@ -122,7 +123,7 @@ function computeDuration(startStr: string, endStr?: string) {
{exp.data.location && · {exp.data.location}}
-
{exp.data.role}
+
{exp.data.role}
{exp.data.companyUrl ? (
{exp.data.company}
@@ -149,80 +150,3 @@ function computeDuration(startStr: string, endStr?: string) {
-
-
diff --git a/src/styles/exp-card.css b/src/styles/exp-card.css
new file mode 100644
index 0000000..e93cefd
--- /dev/null
+++ b/src/styles/exp-card.css
@@ -0,0 +1,144 @@
+/*
+ * Experience card styles — shared by FR, EN, AR career pages.
+ * Cards use the `.code-card` class to opt out of the layout's
+ * white-on-purple overrides (see main.astro).
+ *
+ * Light mode: white cards on purple gradient background.
+ * Dark mode: translucent cards blending into the gradient.
+ */
+
+/* ────────────────────────────────────────────
+ Card container
+ ──────────────────────────────────────────── */
+
+.exp-card {
+ background: white;
+ border: 1px solid rgba(0, 0, 0, 0.06);
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.08);
+}
+
+.exp-card--ongoing {
+ box-shadow: 0 0 0 1px rgba(168, 85, 247, 0.25),
+ 0 1px 3px rgba(0, 0, 0, 0.08);
+}
+
+.dark .exp-card {
+ background: rgba(255, 255, 255, 0.03);
+ border-color: rgba(255, 255, 255, 0.08);
+ box-shadow: none;
+}
+
+.dark .exp-card:hover {
+ background: rgba(255, 255, 255, 0.06);
+}
+
+.dark .exp-card--ongoing {
+ background: rgba(255, 255, 255, 0.07);
+ border-color: rgba(255, 255, 255, 0.12);
+ box-shadow: none;
+}
+
+/* ────────────────────────────────────────────
+ Typography
+ ──────────────────────────────────────────── */
+
+.exp-card h3 { color: #111827; }
+.exp-card .exp-meta { color: #9ca3af; }
+.exp-card .exp-company { color: #6b21a8; }
+.exp-card .exp-company a { color: #6b21a8; text-decoration: none; }
+.exp-card .exp-company a:hover { color: #581c87; }
+.exp-card .exp-content,
+.exp-card .exp-content p { color: #4b5563; }
+.exp-card .exp-content a { color: #6b21a8; text-decoration-color: rgba(107, 33, 168, 0.3); }
+.exp-card .exp-content a:hover { color: #581c87; }
+
+.dark .exp-card h3 { color: white; }
+.dark .exp-card .exp-meta { color: rgba(255, 255, 255, 0.3); }
+.dark .exp-card .exp-company { color: #d4b5ff; }
+.dark .exp-card .exp-company a { color: #d4b5ff; }
+.dark .exp-card .exp-company a:hover { color: white; }
+.dark .exp-card .exp-content,
+.dark .exp-card .exp-content p { color: rgba(255, 255, 255, 0.6); }
+.dark .exp-card .exp-content a { color: #d4b5ff; }
+.dark .exp-card .exp-content a:hover { color: white; }
+
+/* ────────────────────────────────────────────
+ Tech badges
+ ──────────────────────────────────────────── */
+
+.exp-card .exp-tech {
+ background: #f3f4f6;
+ color: #6b7280;
+ border-color: #e5e7eb;
+}
+
+.dark .exp-card .exp-tech {
+ background: rgba(255, 255, 255, 0.06);
+ color: rgba(255, 255, 255, 0.45);
+ border-color: rgba(255, 255, 255, 0.06);
+}
+
+/* ────────────────────────────────────────────
+ Logo container
+ ──────────────────────────────────────────── */
+
+.exp-logo {
+ background: #f9fafb;
+ border: 1px solid #e5e7eb;
+}
+
+.exp-logo-fallback {
+ background: #f3f4f6;
+ border: 1px solid #e5e7eb;
+}
+
+.exp-logo-fallback span {
+ color: #9ca3af;
+}
+
+.dark .exp-logo {
+ background: white;
+ border-color: rgba(255, 255, 255, 0.2);
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2);
+}
+
+.dark .exp-logo-fallback {
+ background: rgba(255, 255, 255, 0.08);
+ border-color: rgba(255, 255, 255, 0.1);
+}
+
+.dark .exp-logo-fallback span {
+ color: rgba(255, 255, 255, 0.4);
+}
+
+/* ────────────────────────────────────────────
+ Type badges
+ ──────────────────────────────────────────── */
+
+.type-badge-blue { background: #eff6ff; color: #1d4ed8; border-color: #bfdbfe; }
+.type-badge-amber { background: #fffbeb; color: #b45309; border-color: #fde68a; }
+.type-badge-emerald { background: #ecfdf5; color: #047857; border-color: #a7f3d0; }
+.type-badge-pink { background: #fdf2f8; color: #be185d; border-color: #fbcfe8; }
+.type-badge-purple { background: #faf5ff; color: #7e22ce; border-color: #e9d5ff; }
+
+.dark .type-badge-blue { background: rgba(96, 165, 250, 0.15); color: #93c5fd; border-color: rgba(96, 165, 250, 0.2); }
+.dark .type-badge-amber { background: rgba(251, 191, 36, 0.15); color: #fcd34d; border-color: rgba(251, 191, 36, 0.2); }
+.dark .type-badge-emerald { background: rgba(52, 211, 153, 0.15); color: #6ee7b7; border-color: rgba(52, 211, 153, 0.2); }
+.dark .type-badge-pink { background: rgba(244, 114, 182, 0.15); color: #f9a8d4; border-color: rgba(244, 114, 182, 0.2); }
+.dark .type-badge-purple { background: rgba(168, 85, 247, 0.15); color: #d4b5ff; border-color: rgba(168, 85, 247, 0.2); }
+
+/* ────────────────────────────────────────────
+ Type border (left for LTR, right for RTL)
+ ──────────────────────────────────────────── */
+
+.type-border-blue { border-inline-start-color: #3b82f6; }
+.type-border-amber { border-inline-start-color: #f59e0b; }
+.type-border-emerald { border-inline-start-color: #10b981; }
+.type-border-pink { border-inline-start-color: #ec4899; }
+.type-border-purple { border-inline-start-color: #a855f7; }
+
+.dark .type-border-blue { border-inline-start-color: rgba(96, 165, 250, 0.4); }
+.dark .type-border-amber { border-inline-start-color: rgba(251, 191, 36, 0.4); }
+.dark .type-border-emerald { border-inline-start-color: rgba(52, 211, 153, 0.4); }
+.dark .type-border-pink { border-inline-start-color: rgba(244, 114, 182, 0.4); }
+.dark .type-border-purple { border-inline-start-color: rgba(168, 85, 247, 0.4); }