+
+
+
+ {{ project.progressSummary }}
+
+
+
+ {{ project.description }}
+
+
+
+ Open project
+
+
\ No newline at end of file
diff --git a/src/app/common/project-card/project-card.component.scss b/src/app/common/project-card/project-card.component.scss
new file mode 100644
index 000000000..d32a89c16
--- /dev/null
+++ b/src/app/common/project-card/project-card.component.scss
@@ -0,0 +1,65 @@
+.project-card {
+ border: 1px solid #d6d6d6;
+ border-radius: 12px;
+ padding: 1rem;
+ background: #ffffff;
+ display: flex;
+ flex-direction: column;
+ gap: 0.75rem;
+ max-width: 420px;
+}
+
+.project-card__header {
+ display: flex;
+ justify-content: space-between;
+ gap: 1rem;
+ align-items: flex-start;
+}
+
+.project-card__unit {
+ margin: 0 0 0.25rem;
+ font-size: 0.8rem;
+ font-weight: 600;
+ color: #555555;
+}
+
+.project-card__title {
+ margin: 0;
+ font-size: 1.1rem;
+ line-height: 1.3;
+}
+
+.project-card__status {
+ border-radius: 999px;
+ padding: 0.25rem 0.6rem;
+ font-size: 0.8rem;
+ font-weight: 600;
+ background: #eeeeee;
+ white-space: nowrap;
+}
+
+.project-card__summary,
+.project-card__description {
+ margin: 0;
+ line-height: 1.5;
+}
+
+.project-card__link {
+ align-self: flex-start;
+ font-weight: 600;
+ text-decoration: underline;
+}
+
+@media (max-width: 520px) {
+ .project-card {
+ max-width: 100%;
+ }
+
+ .project-card__header {
+ flex-direction: column;
+ }
+
+ .project-card__status {
+ align-self: flex-start;
+ }
+}
\ No newline at end of file
diff --git a/src/app/common/project-card/project-card.component.spec.ts b/src/app/common/project-card/project-card.component.spec.ts
new file mode 100644
index 000000000..4c5d9d704
--- /dev/null
+++ b/src/app/common/project-card/project-card.component.spec.ts
@@ -0,0 +1,64 @@
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+import { ProjectCardComponent, ProjectCardData } from './project-card.component';
+
+describe('ProjectCardComponent', () => {
+ let component: ProjectCardComponent;
+ let fixture: ComponentFixture