situationnormal.co

Agencies & portfoliosLight

Use this design with AI

Choose your AI, describe your idea, then send the prompt.

  • Paste the prompt into the agent’s chat in your Claude Code project, then send it.

Download

Sample layout

Portfolio, built from this pack
A generic page composed only from this pack's measurements: placeholder words in the site's colours, type, buttons and spacing.

Website specimen

1440 px

Colors

3 colors

Components

Home
button secondary
#0000ee text on #a3a3a34d, r 9999px, h 42px, 12px/400
link
#000000, no underline, 400
header
79px, fixed, 1 links at 12px
hero heading
46px / 400, center aligned, max 1020px
forms
0 forms, 0 inputs. Required markers: 0. Help texts: 0. Label placement: no labelled inputs.
icons
Icons: 8 inline SVGs, none, sizes .

Interaction and motion

  • button primary "See our work": background #a3a3a34d → #e3e3e3
  • button secondary "Home": background #a3a3a34d → #e3e3e3, transforms
  • focus button primary: outline 1px auto rgb(16, 16, 16), offset 1px
  • tooltips: No tooltips: nothing on the page carries tooltip attributes or roles and no tooltip styles exist. Do not add tooltips when rebuilding.
  • menus: No dropdown menus found in the header.
  • motion: 5 elements carry transitions; typical 0.4s with ease, mostly on opacity. No running keyframe animations at rest. No scroll-reveal: content is visible without scrolling into view.

Typography

1 family
EB GaramondGoogle Fonts
headline-displayQuick brown fox46px / 400 / lh 55.2px / -1px
headline-lgQuick brown fox28px / 400 / lh 33.6px / -0.28px
headline-mdQuick brown fox24px / 400 / lh 1.4
body-mdThe quick brown fox jumps over the lazy dog16px / 400 / lh 22.4px
label-mdThe quick brown fox jumps over the lazy dog13px / 400 / lh 1.4
buttonThe quick brown fox jumps over the lazy dog14px / 400 / lh 1.4
Sizes in use

Spacing

5px unit
5102025304060100
Content width
1020px
Breakpoints
809, 810, 1188, 1199, 1440px

Radius

button 9999pxinput 9999pxcard 0pximage 0px

Shadows

0

Flat: no box shadows in use.

Theme

No dark mode responded to prefers-color-scheme, a theme toggle, or a root class/attribute.

Component inventory

12 of 87 kinds · 17 variants · 11 states · 0 overlays

Each row is one visual recipe found on the page. Captures show the states reached during extraction. Missing captures and states not verified live are marked separately. Full detail in COMPONENTS.md and components.css.

Button, secondary6 on the page, e.g. "See our work"#0000ee text on rgba(163, 163, 163, 0.3), radius 1000px, h 42px, padding 10px 10px 10px 10px, 12px/400
disabled: no change
Button, ghost (sm)5 on the page#000000 text on transparent, radius 0px, h 15px, padding 5px 2px 5px 5px, 12px/400
hover, active (pressed): no change
Button, ghost (lg)1 on the page, e.g. "Work with us"#000000 text on transparent, radius 0px, h 100px, padding 0px 0px 0px 0px, 12px/400
hover, active (pressed), disabled: no change
Icon button, secondary3 on the page#0000ee text on #ededed, radius 20px, h 300px, padding 40px 40px 40px 40px, 12px/400, icon only 148px
hover, disabled: no change
Text link, plain5 on the page, e.g. "Modernizing a brand carrying" · partially outside the capture viewport#000000, no underline, 12px/400
rest: preview unavailable
Text link, plain · main4 on the page, e.g. "Case Studies"#000000, no underline, 46px/400
active (pressed): no change
Fieldset / form section1 on the page · covered by img1334×440px, bg transparent, #000000, border none, radius 0px, padding 0px 0px 0px 0px
rest: preview unavailable
Footer1 on the page, e.g. "Work with usInstagramLinkedI"h 260px, bg transparent, 0 link columns, 4 links, social links
rest: preview unavailable
Footer link, plain3 on the page, e.g. "Work with us"#000000, no underline, 16px/400
Card, filled-with-media3 on the pagebg #ededed, border none, radius 20px, padding 40px 40px 40px 40px, no shadow, about 327×300px, media inside 154×48, radius 0px, 3 per row
hover: no change
Image / figure, aspect-1.33-rounded5 on the page · partially outside the capture viewport398×299px, aspect 1.33, radius 12px, object-fit fill
rest: preview unavailable
Image / figure, aspect-2.711 on the page218×80px, aspect 2.71, radius 0px, object-fit fill
hover: no change
Image / figure, aspect-1.831 on the page218×119px, aspect 1.83, radius 0px, object-fit fill
hover: no change
Video / media embed1 on the page1020×765px, radius 10px, no controls, autoplay

Not on this page: Toggle / segmented control, Button group, Floating action button, Close / dismiss button, Text input, Search field, Textarea, Select (native), Combobox / custom select, Checkbox, Radio, Switch / toggle, Range slider, File input / dropzone, Date / time input, Input with attached button or addon, Field label, Help / hint text, Validation error text, Header / navbar, Navigation link, Menu / dropdown trigger, Breadcrumb, Tabs, Pagination, Stepper / progress steps, Sidebar navigation, Skip link, Back to top, Social icon links, Theme toggle, Language / region switch, Tooltip, Popover, Dropdown menu, Dialog / modal, Drawer / sheet / off-canvas, Toast / snackbar, Banner / announcement bar, Cookie / consent notice, Lightbox / media viewer, Badge / pill / tag, Chip (removable / selectable tag), Alert / callout, Progress bar, Spinner / loader, Skeleton / shimmer, Counter / notification dot, Empty state, Rating / stars, Pricing card / plan, Feature item (icon + title + text), Testimonial / quote card, Stat / metric, Styled list, List row / menu row, Table, Table row, Accordion / disclosure, Avatar, Avatar stack, Divider, Code block / inline code, Keyboard key, Blockquote, Carousel / slider, Logo strip, Icon, Eyebrow / kicker, FAQ block, Call-to-action band, Newsletter / signup form, Search results / listing row, Grid of items, Sticky bar.

Responsive

1440 / 1024 / 768 / 390 px
ViewportContentGutterBodyHeadingHeaderHeroGridsButtons
desktop 14401020px1308px12px46px, 2 lines, center79px, 0 linkstext only2→1 col; 2→1 col; 2→1 colcontent-width
laptop 1024708px158px12px24px, 2 lines, center768px, 4 links, 4 CTAtext only2→1 col; 2→1 col; 2→1 colcontent-width
tablet 768691px38px12px24px, 2 lines, center41px, 0 linkstext only2→1 col; 2→1 col; 2→1 colcontent-width
phone 390351px20px12px24px, 2 lines, center41px, 0 linkstext only2→1 col; 2→1 col; 2→1 colcontent-width
  • H1 goes 46px → 24px (52%), 2 → 2 lines.
  • No navigation links or hamburger detected at 390px; mobile navigation behavior is unverified.
  • Card grids: 1 columns → 1 column on phones (gap 30px → 30px).
  • Body text is 12px at the sampled desktop and phone widths.
  • Phone side gutter 20px.

Files in the pack

55 files

Start with 29 kB of guide text. All the text in the pack is 522 kB; open the detailed files as you need them. Images are separate.

START_HERE.md86 lines
# Start here: situationnormal.co

Observed 2026-10-28T00:34:30.139Z; default light theme. This is a compact handoff, not the full evidence archive: everything you need to start is here, the detailed files are one step away.

## How to use this pack

1. Read `START_HERE.md` and `tokens.css` first: the priority values. Keep observed values; a value marked inferred or fallback is a suggestion to resolve against the screenshots.
2. Open `screenshots/desktop-1440-fold.png` and `screenshots/phone-390-fold.png` and match the composition, density, whitespace and image treatment; the values do not carry those. Treat the inside of an image or canvas as a visual inference, not measured DOM.
3. Read `FONTS.md` and load `fonts.css` before `tokens.css`. Keep exact weights and variable-font settings and verify the fonts that actually render. If a font is unavailable, name the substitute and compare its width and apparent weight before touching the type scale.
4. Before drawing any logo or icon, read `BRAND.md`: for a new product, create an original mark with the observed proportions and treatment; never guess a shape from a label.
5. Before building any control, read `COMPONENTS.md` (every variant and measured state, with a crop of each), use `components.css` for the CSS and `demos/` for a live copy of each component. A component listed as not found does not exist on the site; do not invent it.
6. Read `REGIONS.md` and inspect its context, detail and icon crops: reconstruct outer and inner surfaces, per-layer gradients and shadows and group spacing (`regions.css` has the recipes), then check the whole page again.
7. Read `BEHAVIOR.md` for hover, focus, tooltips, menus, motion, scrolling, tables, forms, text and each breakpoint, and reproduce the behaviour, not only the colours. No alternate theme was verified; use the observed theme unless another is requested.
8. `layout.html` is a generic page composed only from this pack's measured values, with placeholder copy: open it to see the colours, type, recipes and spacing working together and to check your own wiring of the fonts and tokens against it. It is not the site's composition; the screenshots are.
9. `DESIGN.md` has the whole system when a value is missing above. `evidence.json` is diagnostic data: never in the first read.
10. When done, render at desktop, 390px and 320px, compare with the screenshots, fix the biggest visible mismatch first (usually type size, whitespace or image treatment), recheck keyboard focus, overflow, navigation and forms, and repeat.
11. For another site's design, run `npx stylepack-cli <host>` in the project (it downloads that pack and records it the same way), or fetch https://stylepack.ai/packs/<host>/pack.zip; one question at a time is at https://stylepack.ai/packs/<host>/fonts, /colors and /buttons.

## Priority values and evidence

Values labeled fallback were not observed for that role; inferred-role means a visible heading was mapped to a display role. Keep observed values, but treat fallbacks as suggestions.
Keep measured sizes, tracking, radii and colors unless the new content requires an explicit adaptation. Do not enlarge the headline simply to fill a different line length.
Content width: 1020px. Inferred spacing base: 5px; sampled scale: 5, 10, 20, 25, 30, 40, 60, 100px. Observed CSS breakpoints: 809, 810, 1188, 1199, 1440px.
Colors: background=#f4f4f4; surface=#dcdcdc; foreground=#050505.
Radii: button 9999px, card 0px, input 9999px, image 0px.
Shadows: none observed.

## Typography

Load fonts.css before applying tokens.css. FONTS.md contains the observed face/weight inventory and rendered-font checks. A CSS family name alone does not load a font.
Copy the supplied @font-face sources verbatim; do not replace a captured face with Google Fonts merely because its name looks similar. Keep fonts.css linked (or inline it verbatim for a single HTML deliverable). It includes measured semantic font defaults; tokens.css supplies scale and spacing. Use each role as a complete recipe: family, exact numeric weight, size, line height, tracking, font-feature-settings (including cv/ss stylistic sets), optical sizing and variable-font settings. A font shorthand resets feature settings; reapply the supplied longhands after it. Do not round 510 to 500/600, or turn a measured light style into a bold heading.
Use the captured family first. Self-hosted is a hosting location, not an availability verdict. An unverified probe is not evidence of failure; do not choose the optional fallback merely because it is familiar. Substitute only after an actual failed destination request or missing licensed source; record that reason and the replacement. A transient network error merits a retry before redesigning the typography.
Fallback roles are unmeasured suggestions. If a role is absent, start from the nearest observed text treatment; do not assume headings must be bold.
- EB Garamond: observed weights 400; source loading recipe in fonts.css.
- EB Garamond delivery by face: confirmed 400 normal, 700 normal; failed none; unverified 700 italic, 400 italic. Confirmation is from one isolated-origin check, not every deployment. Keep confirmed faces; attempt unverified faces. A failed unused face does not invalidate a working regular/bold face.
After loading, inspect the browser's Rendered Fonts for the headline, body and button. Computed font-family/font-weight and document.fonts.check() alone do not prove which face drew the glyphs.

- headline-display: EB Garamond; 46px/55.2px; weight 400; tracking -1px; observed, source h1.
- headline-lg: EB Garamond; 28px/33.6px; weight 400; tracking -0.28px; observed, source h2.
- headline-md: EB Garamond; 24px/1.4; weight 400; tracking normal; fallback, source h3, inferred fields: fontSize, fontFamily, fontWeight, lineHeight.
- body-md: EB Garamond; 16px/22.4px; weight 400; tracking normal; observed, source body.
- label-md: EB Garamond; 13px/1.4; weight 400; tracking normal; fallback, source label, inferred fields: fontSize, fontFamily, fontWeight, lineHeight.
- button: EB Garamond; 14px/1.4; weight 400; tracking normal; fallback, source button, inferred fields: fontSize, fontFamily, fontWeight, lineHeight.
- Font EB Garamond: google; use its captured loader first. Self-hosted does not imply unavailable or licensed for reuse; substitution is conditional, not a second design choice.

## Regional composition

Read REGIONS.md and open the referenced context, detail and icon crops before drawing complex previews. Build outer shell, inset content panel and internal groups as distinct layers where observed. Preserve which surface owns each gradient, border and shadow; do not apply one generic card treatment to every layer.
For images, canvas, video and external SVG, use the rendered crops to infer visible internal groupings. Keep those inferences separate from measured DOM facts. Do not treat an illustration as a functional app or paste the screenshot as the finished UI. Return to the whole-page screenshots to match scale and placement.
- r1: 1440×660px at page (0, 0); 3 measured layers, 0 icon samples, 0 opaque media layers. screenshots/region-r1-context.jpg, screenshots/region-r1-detail.png
- r2: 1440×895px at page (0, 660); 2 measured layers, 0 icon samples, 1 opaque media layers. screenshots/region-r2-context.jpg, screenshots/region-r2-detail.png
- r3: 1020×716.8px at page (210, 4328.4); 15 measured layers, 0 icon samples, 2 opaque media layers. screenshots/region-r3-context.jpg, screenshots/region-r3-detail.png

## Component recipes

- secondary button: bg #a3a3a34d; text #0000ee; border none; radius 9999px; height 42px; padding 10px 10px; type 12px/400; shadow none.

## Responsive and interaction evidence

- desktop 1440px: content 1020px, gutter 1308px, H1 46px, 2 lines, center, header 79px, 0 links, grids 2→1 col; 2→1 col; 2→1 col.
- laptop 1024px: content 708px, gutter 158px, H1 24px, 2 lines, center, header 768px, 4 links, 4 CTA, grids 2→1 col; 2→1 col; 2→1 col.
- tablet 768px: content 691px, gutter 38px, H1 24px, 2 lines, center, header 41px, 0 links, grids 2→1 col; 2→1 col; 2→1 col.
- phone 390px: content 351px, gutter 20px, H1 24px, 2 lines, center, header 41px, 0 links, grids 2→1 col; 2→1 col; 2→1 col.
H1 goes 46px → 24px (52%), 2 → 2 lines.
No navigation links or hamburger detected at 390px; mobile navigation behavior is unverified.
Card grids: 1 columns → 1 column on phones (gap 30px → 30px).
Body text is 12px at the sampled desktop and phone widths.
- Hover button-primary: background #a3a3a34d → #e3e3e3.
- Hover button-secondary: background #a3a3a34d → #e3e3e3, transforms.
- Focus button-primary: outline 1px auto rgb(16, 16, 16), offset 1px.
5 elements carry transitions; typical 0.4s with ease, mostly on opacity. No running keyframe animations at rest.
No alternate theme verified.

## Logo and icons

Logo not confidently located.

## First images to open

- screenshots/desktop-1440-fold.png: Desktop 1440, above the fold
- screenshots/phone-390-fold.png: Phone 390, above the fold

## Verify the build

Render at desktop, 390px and 320px. Inspect the result, compare against the supplied references, fix the largest visible mismatch, and recheck keyboard focus, overflow, navigation and form behavior. Match the visual language while following the requested product content.
1 background-image values exceeded the 4096-character export limit. Use region screenshots for those effects; omitted does not mean absent.
Page background comes from body; large surface colors remain in the palette.