VibeCoderzVibeCoderz
All Prompts
News Print UI Preview
style

News Print

Стиль UI "News Print" для веб. Имитирует дизайн печатных изданий, создавая винтажную атмосферу.

by Zhou JasonLive Preview

Prompt

# News Print

<design-system>

# Design Style: Newsprint

## 1. Design Philosophy

**"All the News That's Fit to Print."**

This style is an ode to the golden age of print journalism, reimagined for the web. It embodies **absolute clarity, hierarchy, and structure** through its unwavering commitment to high-contrast typography, grid-based layouts, and sharp geometric precision.

### Core DNA

The newsprint aesthetic rejects modern web trends of soft shadows, blurred backgrounds, and rounded corners. Instead, it embraces:

- **Stark Geometry**: Zero border radius. Every element is a perfect rectangle with sharp 90-degree corners.

- **High Information Density**: Tight padding, collapsed grid borders, and efficient use of space mimic newspaper column layouts.

- **Typographic Drama**: Massive serif headlines (up to 9xl on desktop) paired with smaller, highly legible body text create extreme hierarchy.

- **Visible Structure**: Grid lines aren't hidden—they're celebrated. Borders between columns and sections are explicit and prominent.

- **Editorial Authority**: The design feels serious, timeless, and trustworthy—like a publication of record.

- **Paper Texture**: Subtle grain overlays and line patterns simulate the tactile quality of newsprint without being overly skeuomorphic.

### Vibe

Authoritative, intellectual, urgent, timeless. It feels like holding a fresh morning newspaper—crisp, organized, and information-rich. The design exudes confidence and credibility.

## 2. Design Token System (The DNA)

### Colors (Single Palette)

**Mode:** Light (Permanent - no dark mode)

- **Background:** `#F9F9F7` (Newsprint Off-White)

A warm off-white that mimics aged paper. Not pure white—adds subtle warmth and reduces eye strain.

- **Foreground:** `#111111` (Ink Black)

Very deep black, not pure `#000`. Used for all text and borders.

- **Muted:** `#E5E5E0` (Divider Grey)

Light grey for secondary borders and subtle backgrounds.

- **Accent:** `#CC0000` (Editorial Red)

Bright, unapologetic red used extremely sparingly—only for breaking news badges, CTAs, and hover states. 99% of the design is black and white.

- **Border:** `#111111` (Ink Black)

The primary structural element. Borders define the grid and create visual rhythm.

- **Neutral Shades:**

`neutral-100`: `#F5F5F5` (hover backgrounds)

`neutral-200`: `#E5E5E5` (image placeholders)

`neutral-400`: `#A3A3A3` (muted text in dark sections)

`neutral-500`: `#737373` (metadata, captions)

`neutral-600`: `#525252` (body text variations)

`neutral-700`: `#404040` (secondary headings)

### Typography

**Font Stack:**

- **Serif (Headlines & Display):** `'Playfair Display', 'Times New Roman', serif`

High-contrast, elegant, authoritative. Used for all major headings.

- **Serif (Body):** `'Lora', Georgia, serif`

Highly legible serif for long-form reading text and paragraphs.

- **Sans-Serif (UI):** `'Inter', 'Helvetica Neue', sans-serif`

Clean, modern sans for labels, buttons, navigation, and metadata.

- **Monospace (Data):** `'JetBrains Mono', 'Courier New', monospace`

For stats, dates, edition numbers, and technical information.

**Scale Strategy:**

- **H1 (Hero Headlines):** `text-5xl sm:text-6xl lg:text-9xl` (80px → 128px)

Massive, viewport-dominating. Use `leading-[0.9]` for ultra-tight line height. Apply `tracking-tighter` for condensed feel.

- **H2 (Section Headers):** `text-4xl lg:text-5xl` (36px → 48px)

Bold, `font-black`, uppercase or sentence case depending on context.

- **H3 (Card Titles):** `text-2xl lg:text-3xl` (24px → 30px)

`font-bold`, serif.

- **Body Text:** `text-sm` to `text-lg` (14px → 18px)

Body font (Lora), `leading-relaxed` (line-height: 1.625).

- **Metadata/Labels:** `text-xs` (12px)

Uppercase, `tracking-widest`, monospace or sans.

**Text Transform:**

- Uppercase for: Navigation, labels, metadata, badges, small caps for author bylines.

- Sentence case for: Headlines, article titles, body text.

### Radius & Border

**Border Radius:** `0px` everywhere. No exceptions.

Use inline styles or a `.sharp-corners` utility class to enforce zero radius on all components.

**Border Width:**

- Standard: `1px` solid black `border`, `border-r`, `border-b`)

- Heavy emphasis: `border-b-4` or `border-4` (4px solid) for major section dividers

- Collapsed grids: Adjacent elements share borders to avoid double lines

**Border Style:**

Always solid. Never dashed or dotted except for rare decorative elements (e.g., `border-dashed` inside pricing cards for feature dividers).

### Shadows/Effects

**Philosophy:** Flat design. No soft drop shadows.

**Hover Effects:**

- **Hard Offset Shadow:** `box-shadow: 4px 4px 0px 0px #111111`

Applied on hover to blog cards or interactive elements. Creates a "lifted" newspaper cutout effect.

- **Implementation:**

~~~css

.hard-shadow-hover:hover {
~~~

box-shadow: 4px 4px 0px 0px #111111;

transform: translate(-2px, -2px);

~~~

}
~~~

**No Effects:**

- No blur

- No inner shadows (except for rare decorative purposes)

- No gradient overlays

### Textures & Patterns

**Critical for Depth:** The newsprint style avoids "flat generic web design" through layered textures.

**1. Dot Grid Pattern (Main Background):**

~~~html

backgroundImage: `url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='4' height='4' viewBox='0 0 4 4'%3E%3Cpath fill='%23111111' fill-opacity='0.04' d='M1 3h1v1H1V3zm2-2h1v1H3V1z'%3E%3C/path%3E%3C/svg%3E")`
~~~

Subtle 4×4px dot pattern applied to the body background.

**2. Line Grid Overlay (Section Texture):**

~~~css

.newsprint-texture {

position: relative;

}

.newsprint-texture::before {

content: '';

position: absolute;

inset: 0;

background-image:
~~~

linear-gradient(0deg, transparent 98%, rgba(0,0,0,0.02) 100%),

linear-gradient(90deg, transparent 98%, rgba(0,0,0,0.02) 100%);

~~~

background-size: 3px 3px;

pointer-events: none;

opacity: 0.5;

}
~~~

Apply `.newsprint-texture` to major sections for a fine graph-paper effect.

**3. Radial Dot Pattern (Image Placeholders):**

~~~html

<div className="bg-[radial-gradient(#000_1px,transparent_1px)] opacity-10 [background-size:16px_16px]" />
~~~

Used in placeholder images to simulate halftone printing.

**4. Ornamental Dividers:**

Use serif ornaments between major sections:

~~~html

<div className="py-8 text-center font-serif text-2xl text-neutral-400 tracking-[1em]">

✧ ✧ ✧

</div>
~~~

## 3. Component Stylings

### Buttons

**Primary Button (Default):**

~~~tsx

className="bg-[#111111] text-[#F9F9F7] border border-transparent hover:bg-white hover:text-[#111111] hover:border-[#111111]"
~~~

- Solid black background, white text

- On hover: Inverts to white background, black text and border

- Sharp corners (enforced)

- Uppercase text with `tracking-widest`

- Transition: `transition-all duration-200`

**Secondary Button (Outline):**

~~~tsx

className="border border-[#111111] bg-transparent hover:bg-[#111111] hover:text-[#F9F9F7]"
~~~

- Transparent background, black border and text

- On hover: Fills with black, text turns white

**Ghost Button:**

~~~tsx

className="hover:bg-[#E5E5E0] hover:text-[#111111]"
~~~

- No border, subtle grey background on hover

**Link Button:**

~~~tsx

className="text-[#111111] underline-offset-4 decoration-2 decoration-[#CC0000] hover:underline"
~~~

- Text-only, red underline on hover

**Touch Targets:**

Ensure minimum `min-h-[44px]` and `min-w-[44px]` for mobile accessibility.

### Cards/Containers

**Standard Card:**

~~~tsx

<div className="border border-[#111111] bg-[#F9F9F7] p-6">
~~~

- Sharp black border

- Off-white background

- Tight padding (p-4 to p-8)

**Newspaper Column Grid:**

- Use `border-r` and `border-b` to create collapsed grid layouts

- Example: 4-column feature grid where each cell has `border-r` except the last, and all have `border-b` on mobile

**Hover States:**

- Add `hover:bg-neutral-100` to interactive cards

- Optionally add `.hard-shadow-hover` for dramatic lift effect

### Inputs

**Style:**

~~~tsx

className="border-b-2 border-[#111111] bg-transparent px-3 py-2 font-mono text-sm focus-visible:bg-[#F0F0F0] focus-visible:outline-none"
~~~

- Transparent background

- Only bottom border (2px solid black)

- Monospace font

- On focus: Light grey background `#F0F0F0`), no ring

**No Radius:** Enforce `borderRadius: 0px` inline.

### Icons

**Library:** `lucide-react`

**Style:**

- `stroke-width={1.5}` or `stroke-1` class

- Color: Always black `text-[#111111]`) except in inverted sections (white)

- Size: `h-6 w-6` standard, `h-4 w-4` for small

**Icon Containers:**

- Wrap in bordered boxes: `border border-black h-12 w-12 flex items-center justify-center`

- Hover effect: `hover:bg-black hover:text-white transition-all`

## 4. Non-Genericness (The "Bold" Factor)

### Mandatory Bold Choices

**1. Vertical Grid Dividers:**

Don't just separate sections horizontally. Use `border-r` to create strict vertical columns even within the same row. The page should feel like a newspaper grid, not a typical website.

**2. Drop Caps:**

Apply massive drop caps `text-7xl`, `float-left`) to the first letter of key paragraphs (hero intro, product detail). Accent color optional.

**3. Marquee Ticker:**

Use a horizontal scrolling ticker (e.g., `react-fast-marquee`) for stats. Black background, white text, red accent badges. Mimics stock ticker or breaking news crawl.

**4. Edition Metadata:**

Add newspaper-style metadata:

- "Vol. 1 | [Date] | New York Edition" in header

- "Edition: Vol 1.0 | Printed in NYC" in footer

- "Fig. 1.1" captions on images

**5. Justified Text:**

Use `text-justify` for multi-column body text (blog descriptions, product detail) to create that newspaper column look.

**6. Grayscale Images:**

Apply `grayscale` filter to all images by default. On hover, add `sepia-[50%]` for a vintage newspaper photo effect.

**7. Asymmetric Layouts:**

Don't default to 50/50 splits. Use 8-col/4-col, 5-col/7-col splits for editorial feel.

**8. Uppercase Labels:**

Liberally use `uppercase tracking-widest text-xs font-mono` for section labels, navigation, and metadata.

**9. Inverted Sections:**

Flip at least one major section to black background with white text (e.g., How It Works). Use red accent for numbered steps.

## 5. Layout Strategy

### Container

**Max Width:** `max-w-screen-xl` (1280px)

Centered with `mx-auto`, horizontal padding `px-4`

### Grid System

**Base:** 12-column grid

Use Tailwind's `grid-cols-12` with `col-span-*` for precise control.

**Common Splits:**

- Hero: `lg:col-span-8` / `lg:col-span-4`

- Benefits: `lg:col-span-5` / `lg:col-span-7`

- Footer: `col-span-2` for logo/description, `col-span-1` for link columns

**Collapsed Borders:**

Adjacent grid cells share borders. Use `border-r` on all but the last column, `border-b` on all rows.

### Spacing

**Philosophy:** High information density. Tighter than typical web design.

- Section padding: `py-16` (vertical)

- Card padding: `p-6` to `p-8`

- Gap between items: `gap-6` to `gap-8`

- Mobile: Reduce to `p-4`, `gap-4`

### Z-Index Layers

- Header (sticky): `z-40`

- Overlays/modals: `z-50`

## 6. Effects & Animation

### Motion Philosophy

Fast, snappy, mechanical. No bouncy or organic easing.

**Transition Classes:**

~~~tsx

"transition-all duration-200 ease-out"

"transition-colors duration-200"
~~~

**Hover Behaviors:**

1. **Color Inversion:** Buttons, icons flip between black/white instantly

2. **Hard Shadows:** Cards gain offset shadow + slight translate

3. **Underlines:** Links gain thick underline `decoration-2 decoration-[#CC0000]`)

4. **Scale:** Small elements like dots can `hover:scale-150`

5. **Background:** Containers get subtle grey background `hover:bg-neutral-100`)

**No Floating:** Elements don't "lift" with soft shadows. They snap into place with hard shadows.

**Accordion Animation:**

~~~tsx

className="grid transition-all duration-300 ease-in-out"

// Open: grid-rows-[1fr] opacity-100

// Closed: grid-rows-[0fr] opacity-0
~~~

### Micro-Interactions

- FAQ plus icons rotate 45° when open

- Blog card images scale 105% on hover

- Feature icon boxes invert colors on hover

- Navigation links turn red on hover

## 7. Spacing, Layout & Iconography

### Default Max-Width

`max-w-screen-xl` (1280px) for primary content container.

### Spacing System

Use an 8px grid system. Common values:

- Tight: `gap-2` (8px), `p-2` (8px)

- Standard: `gap-4` (16px), `p-4` (16px)

- Comfortable: `gap-8` (32px), `p-8` (32px)

- Spacious: `gap-16` (64px), `py-16` (64px)

**Mobile:** Reduce by one step (e.g., `p-8` → `p-6`)

### Iconography

**Integration:**

- Icons inside bordered boxes (feature cards)

- Icons as section markers (small squares, bullets)

- Icons in navigation (minimal use)

- Icons in social links (bordered boxes in footer)

**Style Consistency:**

- All icons from `lucide-react`

- Consistent stroke width `stroke-1`)

- Black color by default, white in inverted sections

## 8. Responsive Strategy

### Breakpoints

- Mobile: `< 768px` (default)

- Tablet: `md:` (768px+)

- Desktop: `lg:` (1024px+)

### Mobile Adaptations

1. **Grid Collapse:**

Multi-column grids collapse to single column `grid-cols-1`)

2. **Border Removal:**

Remove `border-r` on mobile, keep `border-b` for horizontal separators

~~~css

@media (max-width: 767px) {
~~~

.grid-border-r { border-right: none; }

~~~

}
~~~

3. **Typography Scaling:**

Headlines shrink dramatically: `text-5xl` → `text-6xl` → `text-9xl`

4. **Padding Reduction:**

`p-16` → `p-8` → `p-6` on smaller screens

5. **Touch Targets:**

All interactive elements minimum `44x44px` `min-h-[44px] min-w-[44px]`)

6. **CTA Buttons:**

Full width on mobile `w-full md:w-auto`)

7. **Navigation:**

Show hamburger menu icon on mobile (44px tap target)

Hide main nav links, show mobile menu

### Maintaining Aesthetic

Even on mobile, preserve:

- Sharp corners (zero radius)

- High contrast

- Grid-based layout (just single column)

- Horizontal rule separators between sections

- Uppercase labels and metadata

## 9. Accessibility & Best Practices

### Contrast Ratios

- Black `#111111` on Off-White `#F9F9F7`: **AAA compliant** (>17:1)

- Red `#CC0000` on Off-White: **AA compliant** (>5:1)

- Never put red text on black background

### Focus States

~~~tsx

"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-neutral-950 focus-visible:ring-offset-2"
~~~

- Thick black ring (2px)

- 2px offset for visibility

- Only visible when using keyboard navigation `:focus-visible`)

### Semantic HTML

- Use `<header>`, `<nav>`, `<section>`, `<footer>`

- Use `<h1>` through `<h6>` in proper hierarchy

- Use `<button>` for interactive elements, not divs

- Use `<a>` for links with proper `href`

### ARIA Labels

- Add `aria-label` to icon-only buttons

- Add `alt` text to all images (even decorative ones)

- Add `role="img"` and `aria-labelledby` to SVG icons

### Keyboard Navigation

- All interactive elements must be keyboard accessible

- Visible focus states (see above)

- Accordion items use `button` with proper `aria-expanded`

## 10. Implementation Constraints

### Font Import

Use `@import` in inline `<style>` tag:

~~~css

@import url('<https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500&family=Playfair+Display:ital,wght@0,400;0,600;0,700;0,900;1,400&family=Lora:ital,wght@0,400;0,600;1,400&display=block>');
~~~

Define font classes:

~~~css

.font-serif { font-family: 'Playfair Display', serif; }

.font-body { font-family: 'Lora', serif; }

.font-sans { font-family: 'Inter', sans-serif; }

.font-mono { font-family: 'JetBrains Mono', monospace; }
~~~

### Tailwind Utilities

Create custom utilities in `<style>` block:

- `.sharp-corners { border-radius: 0px !important; }`

- `.newsprint-texture { ... }` (see Textures section)

- `.hard-shadow-hover:hover { ... }` (see Effects section)

### Border Collapse Logic

To avoid double borders in grids:

1. Use `border-l` and `border-t` on the container

2. Use `border-r` and `border-b` on children

3. Remove `border-r` on last column

4. Remove `border-b` on last row (if needed)

### Component Structure (React 19+)

- Use ref as prop, not `forwardRef`

- Use `class-variance-authority` for button/card variants

- Use `tailwind-merge` to merge className props

### Performance

- Lazy load images below the fold

- Use `transform` and `opacity` for animations (GPU accelerated)

- Avoid animating `box-shadow` directly (use `will-change` if needed)

</design-system>
All Prompts