Design system extracted from https://craftdesign.com.hk/ on 2026-11-03 (code-based analysis).
— · card padding: ——| Field | Value |
|---|---|
| Site / Project | https://craftdesign.com.hk/ |
| Analyzed on | 2026-11-03 |
| Analysis mode | Automated code extraction (no AI) |
This design system was extracted programmatically from the source page. It is built on a light canvas (#FFFFFF), ink text (#000000), a vivid accent (#FF5500). All type is set in "Inter". Detected font weights: 300, 400, 500, 600, 700, 900.
Logo asset(s): https://framerusercontent.com/images/YzVxphFHzLyBx5aGPf3zjUH1JA.svg
| Hex | RGB | HSL | Count |
|---|---|---|---|
#000000 | 0, 0, 0 | 0° 0% 0% | 37 |
#FFFFFF | 255, 255, 255 | 0° 0% 100% | 7 |
#0099FF | 0, 153, 255 | 204° 100% 50% | 7 |
#050505 | 5, 5, 5 | 0° 0% 2% | 4 |
#0A0A0A | 10, 10, 10 | 0° 0% 4% | 3 |
#FF5500 | 255, 85, 0 | 20° 100% 50% | 3 |
#F2F1E9 | 242, 241, 233 | 53° 26% 93% | 1 |
#FAF7F2 | 250, 247, 242 | 38° 44% 96% | 1 |
#B4B4B4 | 180, 180, 180 | 0° 0% 71% | 1 |
#D4D4D4 | 212, 212, 212 | 0° 0% 83% | 1 |
#404040 | 64, 64, 64 | 0° 0% 25% | 1 |
#212121 | 33, 33, 33 | 0° 0% 13% | 1 |
#FF00A1 | 255, 0, 161 | 322° 100% 50% | 1 |
#FF00E1 | 255, 0, 225 | 307° 100% 50% | 1 |
#FF4747 | 255, 71, 71 | 0° 100% 64% | 1 |
#0093FC | 0, 147, 252 | 205° 100% 49% | 1 |
#FF2600 | 255, 38, 0 | 9° 100% 50% | 1 |
#7CF24E | 124, 242, 78 | 103° 86% 63% | 1 |
#6AFF00 | 106, 255, 0 | 95° 100% 50% | 1 |
#00FFA2 | 0, 255, 162 | 158° 100% 50% | 1 |
Roles are taken from the page's own semantic CSS custom properties when present, otherwise inferred from usage frequency + luminance/saturation.
| Token | Hex | RGB | HSL |
|---|---|---|---|
--color-primary | #0099FF | 0, 153, 255 | 204° 100% 50% |
--color-accent | #FF5500 | 255, 85, 0 | 20° 100% 50% |
--color-background | #FFFFFF | 255, 255, 255 | 0° 0% 100% |
--color-surface | #F2F1E9 | 242, 241, 233 | 53° 26% 93% |
--color-text-primary | #000000 | 0, 0, 0 | 0° 0% 0% |
--color-secondary | #000000 | 0, 0, 0 | 0° 0% 0% |
--color-text-secondary | #B4B4B4 | 180, 180, 180 | 0° 0% 71% |
--color-border | #D4D4D4 | 212, 212, 212 | 0° 0% 83% |
--color-on-primary | #FFFFFF | 255, 255, 255 | 0° 0% 100% |
--color-on-secondary | #FFFFFF | 255, 255, 255 | 0° 0% 100% |
--color-on-accent | #FFFFFF | 255, 255, 255 | 0° 0% 100% |
| Token | Hex |
|---|---|
--color-surface-container-lowest | #FFFFFF |
--color-surface-container-low | #F2F1E9 |
--color-surface-container | #D4D4D4 |
Primary typeface: Inter — stack: "Inter"
"Inter""Satoshi"var(--framer-code-font-family,var(--framer-font-family,Inter,Inter Placeholder,sans-serif))var(--font-family)var(--framer-font-family)"Satoshi Variable""DT Nightingale""Inter Placeholder""Satoshi Placeholder""Satoshi Variable Placeholder"| Token | Size |
|---|---|
| label-sm | 12px |
| Size | Count |
|---|---|
| 12px | 1 |
Weights in use: 300, 400, 500, 600, 700, 900
| Token | Value |
|---|---|
| unit | 4px |
| xs | 4px |
| sm | 8px |
| md | 16px |
| lg | 32px |
| xl | 60px |
| Value | Count |
|---|---|
| 10px | 24 |
| 40px | 9 |
| 16px | 5 |
| 12px | 5 |
| 20px | 5 |
| 32px | 3 |
| 24px | 2 |
| 4px | 2 |
| 200px | 2 |
| 100px | 2 |
| 60px | 2 |
| 48px | 1 |
| 120px | 1 |
| 8px | 1 |
| 41px | 1 |
| Token | Value |
|---|---|
| sm | 1px |
| Radius | Count |
|---|---|
initial | 3 |
1px | 1 |
Container max-width: 1200px
:root {
--token-b89a80f1-2ec0-4636-8dc8-dd7334920811: #0a0a0a;
--token-5ddbe2fe-277d-462e-a9c2-70d940e235d4: #f50;
--token-da035a75-e082-4c6d-b880-451caee29f55: #000;
--token-241731fe-e33d-43ab-8766-8b6d2dba26de: #f2f1e9;
--token-3bbaf76b-b5cc-44fd-83c8-5bb71dde8e29: #faf7f2;
--token-9fd40509-2f08-4ea0-8c41-e0796c4e38b8: #b4b4b4;
--token-20608b9f-0145-4a1e-b971-ee948ebbb015: #fff;
--token-13d99070-eb26-4f4a-bbab-17e76ff74dc5: #d4d4d4;
--token-52581657-809c-41e6-9b0c-8fd3ca4aa41c: #000;
--token-17798721-41ef-432c-a3bd-be9d4718194d: #fff;
--token-eb64fafc-4f8e-498d-b27a-2a57f7823e01: #404040;
--token-bf966309-2582-4df8-98f4-f091ce81e703: #212121;
--framer-will-change-override: none;
--framer-will-change-filter-override: filter;
--text-decoration: var(--framer-text-decoration-style,solid)var(--framer-text-decoration,none)var(--framer-text-decoration-color,currentcolor)var(--framer-text-decoration-thickness,auto);
--text-decoration-skip-ink: var(--framer-text-decoration-skip-ink);
--text-underline-offset: var(--framer-text-decoration-offset);
--font-family: var(--framer-font-family);
--font-style: var(--framer-font-style);
--font-weight: var(--framer-font-weight);
--text-color: var(--framer-text-color);
--letter-spacing: var(--framer-letter-spacing);
--font-size: var(--framer-font-size);
--text-transform: var(--framer-text-transform);
--line-height: var(--framer-line-height);
--overflow-clip-fallback: hidden;
--one-if-corner-shape-supported: 1;
--framer-aspect-ratio-supported: auto;
--selection-background-color: #ff550026;
--selection-color: var(--token-5ddbe2fe-277d-462e-a9c2-70d940e235d4,#f50);
--list-style-type: decimal;
--framer-link-text-color: #09f;
--framer-link-text-decoration: underline;
--framer-text-wrap: balance;
}
Do
#FF5500 for interactive highlights and key moments — it is used sparingly on the source page.#FFFFFF; surfaces should stay within the detected neutral ramp.Don't
:root {
--color-primary: #0099FF;
--color-accent: #FF5500;
--color-background: #FFFFFF;
--color-surface: #F2F1E9;
--color-text-primary: #000000;
--color-secondary: #000000;
--color-text-secondary: #B4B4B4;
--color-border: #D4D4D4;
--color-on-primary: #FFFFFF;
--color-on-secondary: #FFFFFF;
--color-on-accent: #FFFFFF;
--color-surface-container-lowest: #FFFFFF;
--color-surface-container-low: #F2F1E9;
--color-surface-container: #D4D4D4;
--font-sans: "Inter";
--font-size-label-sm: 12px;
--radius-sm: 1px;
--space-xs: 4px;
--space-sm: 8px;
--space-md: 16px;
--space-lg: 32px;
--space-xl: 60px;
--container-max: 1200px;
}
Generated by DesignMD Maker · analyze responsibly — only scan pages you're permitted to study.