diff --git a/src/shared/ui/Card/Card.stories.svelte b/src/shared/ui/Card/Card.stories.svelte
new file mode 100644
index 0000000..c9a5e4c
--- /dev/null
+++ b/src/shared/ui/Card/Card.stories.svelte
@@ -0,0 +1,45 @@
+
+
+
+ {#snippet template(args)}
+ Card content goes here
+ {/snippet}
+
+
+
+ {#snippet template(args)}
+ Card content goes here
+ {/snippet}
+
+
+
+ {#snippet template(args)}
+ Card content goes here
+ {/snippet}
+
+
+
+ {#snippet template(args)}
+
+ Header
+ Body
+
+ {/snippet}
+
diff --git a/src/shared/ui/Card/Card.svelte b/src/shared/ui/Card/Card.svelte
new file mode 100644
index 0000000..b0c966a
--- /dev/null
+++ b/src/shared/ui/Card/Card.svelte
@@ -0,0 +1,40 @@
+
+
+
+
+ {#if children}
+ {@render children()}
+ {/if}
+
diff --git a/src/shared/ui/Card/index.ts b/src/shared/ui/Card/index.ts
new file mode 100644
index 0000000..9ad816f
--- /dev/null
+++ b/src/shared/ui/Card/index.ts
@@ -0,0 +1,2 @@
+export { default as Card } from './Card.svelte';
+export type { CardBackground } from './types';
diff --git a/src/shared/ui/Card/types.ts b/src/shared/ui/Card/types.ts
new file mode 100644
index 0000000..b0a4a28
--- /dev/null
+++ b/src/shared/ui/Card/types.ts
@@ -0,0 +1 @@
+export type CardBackground = 'ochre' | 'slate' | 'white';
diff --git a/src/shared/ui/Input/Input.stories.svelte b/src/shared/ui/Input/Input.stories.svelte
new file mode 100644
index 0000000..070353b
--- /dev/null
+++ b/src/shared/ui/Input/Input.stories.svelte
@@ -0,0 +1,51 @@
+
+
+
+ {#snippet template()}
+
+ {/snippet}
+
+
+
+ {#snippet template()}
+
+ {/snippet}
+
+
+
+ {#snippet template()}
+
+ {/snippet}
+
+
+
+ {#snippet template()}
+
+ {/snippet}
+
+
+
+ {#snippet template()}
+
+ {/snippet}
+
+
+
+ {#snippet template()}
+
+ {/snippet}
+
diff --git a/src/shared/ui/Input/Input.svelte b/src/shared/ui/Input/Input.svelte
new file mode 100644
index 0000000..48abcca
--- /dev/null
+++ b/src/shared/ui/Input/Input.svelte
@@ -0,0 +1,39 @@
+
+
+
+
+ {#if label}
+
+ {/if}
+
+
+
+ {#if error}
+ {error}
+ {/if}
+
diff --git a/src/shared/ui/Input/Textarea.svelte b/src/shared/ui/Input/Textarea.svelte
new file mode 100644
index 0000000..8fc0ee4
--- /dev/null
+++ b/src/shared/ui/Input/Textarea.svelte
@@ -0,0 +1,38 @@
+
+
+
+
+ {#if label}
+
+ {/if}
+
+
+
+ {#if error}
+ {error}
+ {/if}
+
diff --git a/src/shared/ui/Input/index.ts b/src/shared/ui/Input/index.ts
new file mode 100644
index 0000000..b35bade
--- /dev/null
+++ b/src/shared/ui/Input/index.ts
@@ -0,0 +1,3 @@
+export { default as Input } from './Input.svelte';
+export { default as Textarea } from './Textarea.svelte';
+export type { InputSize } from './types';
diff --git a/src/shared/ui/Input/types.ts b/src/shared/ui/Input/types.ts
new file mode 100644
index 0000000..487302f
--- /dev/null
+++ b/src/shared/ui/Input/types.ts
@@ -0,0 +1 @@
+export type InputSize = 'sm' | 'md' | 'lg';
diff --git a/src/shared/ui/TechStackBrick/TechStackBrick.stories.svelte b/src/shared/ui/TechStackBrick/TechStackBrick.stories.svelte
new file mode 100644
index 0000000..39f871c
--- /dev/null
+++ b/src/shared/ui/TechStackBrick/TechStackBrick.stories.svelte
@@ -0,0 +1,45 @@
+
+
+
+ {#snippet template()}
+
+ {/snippet}
+
+
+
+ {#snippet template()}
+
+ {/snippet}
+
+
+
+ {#snippet template()}
+
+ {/snippet}
+
diff --git a/src/shared/ui/TechStackBrick/TechStackBrick.svelte b/src/shared/ui/TechStackBrick/TechStackBrick.svelte
new file mode 100644
index 0000000..dff6921
--- /dev/null
+++ b/src/shared/ui/TechStackBrick/TechStackBrick.svelte
@@ -0,0 +1,25 @@
+
+
+
+
+ {name}
+
diff --git a/src/shared/ui/TechStackBrick/TechStackGrid.svelte b/src/shared/ui/TechStackBrick/TechStackGrid.svelte
new file mode 100644
index 0000000..c0d9fa6
--- /dev/null
+++ b/src/shared/ui/TechStackBrick/TechStackGrid.svelte
@@ -0,0 +1,26 @@
+
+
+
+
+ {#each skills as skill (skill)}
+
+ {/each}
+
diff --git a/src/shared/ui/TechStackBrick/index.ts b/src/shared/ui/TechStackBrick/index.ts
new file mode 100644
index 0000000..5aacebf
--- /dev/null
+++ b/src/shared/ui/TechStackBrick/index.ts
@@ -0,0 +1,2 @@
+export { default as TechStackBrick } from './TechStackBrick.svelte';
+export { default as TechStackGrid } from './TechStackGrid.svelte';
diff --git a/src/shared/ui/index.ts b/src/shared/ui/index.ts
index 6f8d6da..2b45f22 100644
--- a/src/shared/ui/index.ts
+++ b/src/shared/ui/index.ts
@@ -1,2 +1,6 @@
export * from './Badge';
export * from './Button';
+export * from './Card';
+export * from './Section';
+export * from './Input';
+export * from './TechStackBrick';