website_designs

Resonant Stark – Design Reference

Resonant Stark is a purpose-driven minimalism with emotional subtlety – ultra-clean layouts where every element earns its place, with warmth injected through micro-interactions and tonal shifts. It draws from the lineage of Swiss/International design and Japanese Ma (negative space philosophy) but rejects the coldness often associated with minimalism. The defining quality is resonance: a sense that the sparse visual field vibrates with intention, that the whitespace is not empty but charged. Ultra-thin typography floats in vast fields of near-white, borders dissolve to single pixels or vanish entirely, and color appears only as a whisper – a muted terracotta link, a sage hover state. Movement is the emotional medium: elements fade in on scroll with glacial smoothness, letter-spacing expands imperceptibly on hover, opacity shifts hint at depth beneath the surface. The result is design that feels like a held breath – still, precise, and quietly alive.


Visual Characteristics


Color Palette

The Resonant Stark palette is defined by extreme restraint – near-whites and warm grays dominate, with color appearing only as a momentary accent:

Suggested Implementation Palette

Based on characteristic Resonant Stark visual compositions:

Role Color Hex
Background Primary Warm White #FAFAFA
Background Alt Cream White #F5F5F0
Background Subtle Warm Snow #F0EEEB
Surface Light Warm Gray #E8E4E0
Surface Muted Mid Warm Gray #D4D0CC
Border Subtle Pale Gray #D0CCC8
Text Primary Near Black #1A1A18
Text Secondary Dark Warm Gray #6A6864
Text Tertiary Mid Gray #9A9894
Accent Warm Muted Terracotta #C4836A
Accent Cool Sage Green #8BA888
Accent Neutral Warm Clay #A08060
Hover Glow Faded Terracotta #C4836A20
Gradient Start Warm White #FAFAFA
Gradient End Cream #F5F5F0
Focus Ring Light Terracotta #C4836A40

Suggested CSS Custom Properties

:root {
  /* Backgrounds */
  --stark-bg-primary: #FAFAFA;
  --stark-bg-alt: #F5F5F0;
  --stark-bg-subtle: #F0EEEB;
  --stark-bg-surface: #E8E4E0;
  --stark-bg-muted: #D4D0CC;

  /* Text */
  --stark-text-primary: #1A1A18;
  --stark-text-secondary: #6A6864;
  --stark-text-tertiary: #9A9894;
  --stark-text-faint: #B8B4B0;

  /* Accent -- Terracotta (swap for project-specific accent) */
  --stark-accent: #C4836A;
  --stark-accent-hover: #B07058;
  --stark-accent-faded: rgba(196, 131, 106, 0.12);
  --stark-accent-glow: rgba(196, 131, 106, 0.06);

  /* Alternate accent -- Sage */
  --stark-accent-sage: #8BA888;
  --stark-accent-sage-hover: #7A9A78;
  --stark-accent-sage-faded: rgba(139, 168, 136, 0.12);

  /* Borders */
  --stark-border: #E8E4E0;
  --stark-border-faint: #F0EEEB;
  --stark-border-visible: #D0CCC8;

  /* Shadows */
  --stark-shadow-subtle: rgba(26, 26, 24, 0.04);
  --stark-shadow-medium: rgba(26, 26, 24, 0.08);

  /* Transitions */
  --stark-transition-fast: 0.3s ease;
  --stark-transition-base: 0.5s ease;
  --stark-transition-slow: 0.8s ease;
  --stark-transition-glacial: 1.2s ease;

  /* Spacing scale */
  --stark-space-xs: 0.5rem;
  --stark-space-sm: 1rem;
  --stark-space-md: 2rem;
  --stark-space-lg: 4rem;
  --stark-space-xl: 8rem;
  --stark-space-2xl: 12rem;

  /* Functional mappings */
  --stark-bg-page: var(--stark-bg-primary);
  --stark-bg-section: var(--stark-bg-alt);
  --stark-text-heading: var(--stark-text-primary);
  --stark-text-body: var(--stark-text-secondary);
  --stark-accent-primary: var(--stark-accent);
  --stark-border-default: var(--stark-border);
}

Typography

Typeface Characteristics

Resonant Stark typography relies on extreme thinness at large scale – the contradiction between fragility and monumentality creates visual tension:

Font Style Usage
Inter Geometric sans-serif (Thin 100, Light 300) Primary choice – excellent thin weights, wide character set, clean geometry
Outfit Geometric sans with warmth (Thin 100, Light 300) Slightly softer than Inter, warmer curves at thin weights
Instrument Sans Contemporary sans (Regular 400) Body text alternative with humanist touches
Sora Geometric sans (Thin 100, ExtraLight 200, Light 300) Excellent ultra-thin display font with distinctive character
Jost Futura-inspired geometric (Thin 100, Light 300) Classic geometric proportions, beautiful at large thin sizes
Work Sans Humanist sans (Thin 100, ExtraLight 200, Light 300) Warmth in thin weights, good for accessible thin typography
Libre Franklin Franklin Gothic revival (Thin 100, ExtraLight 200) Traditional American sans proportions, stable at thin weights

Typography CSS Example

@import url('https://fonts.googleapis.com/css2?family=Inter:wght@100;200;300;400&display=swap');

/* Body -- light weight, generous spacing */
body {
  font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
  font-weight: 300;
  font-size: 17px;
  line-height: 1.8;
  letter-spacing: 0.01em;
  color: var(--stark-text-secondary);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

/* Display heading -- ultra-thin, monumental */
h1 {
  font-weight: 100;
  font-size: clamp(3rem, 8vw, 7rem);
  line-height: 1.1;
  letter-spacing: -0.02em;
  color: var(--stark-text-primary);
  margin-bottom: var(--stark-space-lg);
}

/* Section heading -- thin, wide-tracked */
h2 {
  font-weight: 200;
  font-size: clamp(1.8rem, 4vw, 3rem);
  line-height: 1.2;
  letter-spacing: 0.04em;
  color: var(--stark-text-primary);
  margin-bottom: var(--stark-space-md);
}

/* Subsection heading */
h3 {
  font-weight: 300;
  font-size: clamp(1.2rem, 2.5vw, 1.6rem);
  line-height: 1.4;
  letter-spacing: 0.03em;
  color: var(--stark-text-primary);
  margin-bottom: var(--stark-space-sm);
}

/* Label text -- uppercase, wide tracking */
.stark-label {
  font-weight: 300;
  font-size: 0.75rem;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--stark-text-tertiary);
}

/* Body text -- light, readable */
p {
  font-weight: 300;
  font-size: 1.0625rem;
  line-height: 1.8;
  color: var(--stark-text-secondary);
  max-width: 38em;
  margin-bottom: 1.5em;
}

/* Lead paragraph -- slightly larger, thinner */
.stark-lead {
  font-weight: 200;
  font-size: 1.25rem;
  line-height: 1.9;
  color: var(--stark-text-secondary);
  max-width: 32em;
}

/* Link -- accent color, understated underline */
a {
  color: var(--stark-accent);
  text-decoration: none;
  border-bottom: 0.5px solid var(--stark-accent-faded);
  transition: border-color var(--stark-transition-base),
              color var(--stark-transition-fast);
}

a:hover {
  color: var(--stark-accent-hover);
  border-bottom-color: var(--stark-accent);
}

Key Design Elements and Motifs

Whitespace as Primary Material

The defining element of Resonant Stark – whitespace is not absence but the dominant design material:

Micro-Interactions

Subtle hover and focus effects that create the “resonance” quality – the sense that the interface responds to attention:

Scroll-Triggered Reveals

Content emerges into view with restrained, purposeful animations:

Understated Typography Treatments

Text itself becomes a visual element through scale and spacing:

Single-Pixel Borders and Dividers

When structural lines appear at all, they are whisper-thin:


Layout Principles

Modern Web Adaptation


CSS/Design Techniques

Micro-Interaction: Hover Fade and Lift

/* Card or content block with subtle hover response */
.stark-card {
  padding: var(--stark-space-lg);
  opacity: 0.85;
  transform: translateY(0);
  transition:
    opacity var(--stark-transition-base),
    transform var(--stark-transition-base),
    box-shadow var(--stark-transition-base);
}

.stark-card:hover {
  opacity: 1;
  transform: translateY(-3px);
  box-shadow: 0 8px 40px var(--stark-shadow-subtle);
}

Scroll-Triggered Fade-In Reveal

/* Elements start hidden and animate in when scrolled into view */
.stark-reveal {
  opacity: 0;
  transform: translateY(24px);
  transition:
    opacity var(--stark-transition-slow),
    transform var(--stark-transition-slow);
}

.stark-reveal.is-visible {
  opacity: 1;
  transform: translateY(0);
}

/* Staggered children */
.stark-reveal-group .stark-reveal:nth-child(1) { transition-delay: 0s; }
.stark-reveal-group .stark-reveal:nth-child(2) { transition-delay: 0.12s; }
.stark-reveal-group .stark-reveal:nth-child(3) { transition-delay: 0.24s; }
.stark-reveal-group .stark-reveal:nth-child(4) { transition-delay: 0.36s; }
.stark-reveal-group .stark-reveal:nth-child(5) { transition-delay: 0.48s; }

/* Respect reduced motion preference */
@media (prefers-reduced-motion: reduce) {
  .stark-reveal {
    opacity: 1;
    transform: none;
    transition: none;
  }
}

Scroll-Triggered Fade-In (JavaScript)

/* Intersection Observer for scroll-triggered reveals */
const observer = new IntersectionObserver(
  (entries) => {
    entries.forEach((entry) => {
      if (entry.isIntersecting) {
        entry.target.classList.add('is-visible');
        observer.unobserve(entry.target);
      }
    });
  },
  { threshold: 0.15, rootMargin: '0px 0px -40px 0px' }
);

document.querySelectorAll('.stark-reveal').forEach((el) => {
  observer.observe(el);
});

Letter-Spacing Hover Animation

/* Navigation or heading with expanding letter-spacing on hover */
.stark-nav-link {
  font-weight: 200;
  font-size: 0.8rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--stark-text-tertiary);
  text-decoration: none;
  border: none;
  transition:
    letter-spacing var(--stark-transition-base),
    color var(--stark-transition-fast);
}

.stark-nav-link:hover {
  letter-spacing: 0.16em;
  color: var(--stark-text-primary);
}

.stark-nav-link:focus-visible {
  outline: 1px solid var(--stark-accent-faded);
  outline-offset: 8px;
}
/* Link with animated underline that grows from left on hover */
.stark-link {
  color: var(--stark-text-secondary);
  text-decoration: none;
  position: relative;
  transition: color var(--stark-transition-fast);
}

.stark-link::after {
  content: '';
  position: absolute;
  bottom: -2px;
  left: 0;
  width: 0;
  height: 0.5px;
  background: var(--stark-accent);
  transition: width var(--stark-transition-base);
}

.stark-link:hover {
  color: var(--stark-accent);
}

.stark-link:hover::after {
  width: 100%;
}

Near-Invisible Gradient Background

/* Barely perceptible gradient that creates subtle depth */
.stark-gradient-bg {
  background: linear-gradient(
    180deg,
    var(--stark-bg-primary) 0%,
    var(--stark-bg-alt) 50%,
    var(--stark-bg-primary) 100%
  );
}

/* Radial glow -- extremely subtle warmth behind content */
.stark-glow {
  background: radial-gradient(
    ellipse 60% 50% at 50% 40%,
    var(--stark-accent-glow) 0%,
    transparent 70%
  );
}

/* Section divider gradient -- horizontal fade line */
.stark-divider {
  height: 0.5px;
  border: none;
  background: linear-gradient(
    90deg,
    transparent 0%,
    var(--stark-border-visible) 20%,
    var(--stark-border-visible) 80%,
    transparent 100%
  );
  margin: var(--stark-space-xl) auto;
  max-width: 40%;
}

Massive Whitespace Spacing

/* Section spacing for the breath-filled layout */
.stark-section {
  padding: var(--stark-space-xl) var(--stark-space-md);
  max-width: 1200px;
  margin: 0 auto;
}

/* Hero section -- full viewport with bottom-weighted content */
.stark-hero {
  min-height: 100vh;
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  padding-bottom: var(--stark-space-xl);
  padding-left: var(--stark-space-lg);
  padding-right: var(--stark-space-lg);
}

/* Content block with breathing room */
.stark-content {
  max-width: 36em;
  margin-left: 10%;
  padding: var(--stark-space-lg) 0;
}

/* Wide spacing between grid items */
.stark-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  gap: var(--stark-space-lg);
  padding: var(--stark-space-lg) 0;
}

Thin Border and Divider Treatments

/* Single-pixel border card */
.stark-bordered {
  border: 0.5px solid var(--stark-border);
  padding: var(--stark-space-lg);
  transition: border-color var(--stark-transition-base);
}

.stark-bordered:hover {
  border-color: var(--stark-border-visible);
}

/* Partial horizontal divider */
.stark-rule {
  width: 40px;
  height: 0.5px;
  background: var(--stark-border-visible);
  border: none;
  margin: var(--stark-space-lg) 0;
}

/* Vertical thin line accent */
.stark-vertical-accent {
  border-left: 0.5px solid var(--stark-accent-faded);
  padding-left: var(--stark-space-md);
}

Button – Minimal and Understated

/* Resonant Stark button -- barely there until hovered */
.stark-button {
  display: inline-block;
  padding: 0.75rem 2.5rem;
  font-family: inherit;
  font-weight: 300;
  font-size: 0.8rem;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--stark-text-secondary);
  background: transparent;
  border: 0.5px solid var(--stark-border-visible);
  cursor: pointer;
  transition:
    color var(--stark-transition-fast),
    border-color var(--stark-transition-base),
    background var(--stark-transition-base),
    letter-spacing var(--stark-transition-base);
}

.stark-button:hover {
  color: var(--stark-accent);
  border-color: var(--stark-accent);
  background: var(--stark-accent-glow);
  letter-spacing: 0.14em;
}

.stark-button:active {
  background: var(--stark-accent-faded);
}

.stark-button:focus-visible {
  outline: 1px solid var(--stark-accent-faded);
  outline-offset: 4px;
}

Smooth Number/Stat Display

/* Large numeral as decorative anchor */
.stark-stat-number {
  font-weight: 100;
  font-size: clamp(4rem, 10vw, 8rem);
  line-height: 1;
  color: var(--stark-text-primary);
  letter-spacing: -0.03em;
  opacity: 0.9;
}

.stark-stat-label {
  font-weight: 300;
  font-size: 0.75rem;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--stark-text-tertiary);
  margin-top: var(--stark-space-xs);
}

Subtle Image Treatment

/* Images blend into the whitespace rather than demanding attention */
.stark-image {
  width: 100%;
  display: block;
  filter: grayscale(0.3) brightness(1.05) contrast(0.95);
  opacity: 0.9;
  transition:
    filter var(--stark-transition-slow),
    opacity var(--stark-transition-slow);
}

.stark-image:hover {
  filter: grayscale(0) brightness(1) contrast(1);
  opacity: 1;
}

/* Image with vast surrounding whitespace */
.stark-image-container {
  padding: var(--stark-space-xl) var(--stark-space-lg);
  max-width: 800px;
  margin: 0 auto;
}

Materials and Textures (Visual Metaphors for Web)

Physical / Design Reference Web Equivalent
Matte white museum wall Near-white background (#FAFAFA) with no texture, gradient, or pattern; content floats on pure surface
Thin pencil line on paper 0.5px borders in #E8E4E0 or #D4D0CC; barely visible structural lines that suggest rather than define
Natural linen or cotton Warm off-white backgrounds (#F5F5F0) with optional subtle noise texture at 1-2% opacity
Japanese Ma (negative space) Vast padding and margin (8-16rem between sections); whitespace as active design element
Gallery exhibition labels Small uppercase text (0.75rem, 300 weight, 0.12em tracking) in tertiary gray for metadata and captions
Frosted glass panel Background with backdrop-filter: blur(20px) and near-white semi-transparent fill for overlay elements
Hairline metal wire Single-pixel accent lines in muted terracotta or sage; architectural rather than decorative
Warm halogen gallery light Subtle radial gradient glow (radial-gradient) in faint accent color behind focal content
Pressed letterpress impression Text in near-black (#1A1A18) at thin weight that feels subtly pressed into the white surface
Silk ribbon bookmark Accent color (#C4836A) used as a single thin vertical or horizontal line marking a focal point

Imagery and Visual Content Guidelines

When creating or sourcing imagery for a Resonant Stark styled site:


Aesthetic Relationship to Resonant Stark
Minimalism Direct ancestor; Resonant Stark adds emotional warmth and micro-interaction to minimalism’s structural restraint
Flat Design Shares rejection of ornamentation and skeuomorphism, but Resonant Stark uses depth through subtle shadow and animation rather than pure flatness
Japandi Parallel philosophy combining Japanese Ma (negative space) with Scandinavian warmth; Resonant Stark is the digital expression
Swiss/International Shares grid discipline and typographic focus, but Resonant Stark softens the rationalism with warm tones and organic animation
Wabi-sabi Both find beauty in restraint and imperfection; Resonant Stark allows slight asymmetry and organic warmth within its precision
Kinfolk Shares warm minimalist photography and generous whitespace, but Resonant Stark is more architecturally rigorous

Implementation Notes


Quick-Start: Minimal Resonant Stark Page Template

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Resonant Stark</title>
  <link href="https://fonts.googleapis.com/css2?family=Inter:wght@100;200;300;400&display=swap" rel="stylesheet">
  <style>
    :root {
      --stark-bg-primary: #FAFAFA;
      --stark-bg-alt: #F5F5F0;
      --stark-bg-subtle: #F0EEEB;
      --stark-bg-surface: #E8E4E0;
      --stark-text-primary: #1A1A18;
      --stark-text-secondary: #6A6864;
      --stark-text-tertiary: #9A9894;
      --stark-text-faint: #B8B4B0;
      --stark-accent: #C4836A;
      --stark-accent-hover: #B07058;
      --stark-accent-faded: rgba(196, 131, 106, 0.12);
      --stark-accent-glow: rgba(196, 131, 106, 0.06);
      --stark-border: #E8E4E0;
      --stark-border-visible: #D0CCC8;
      --stark-shadow-subtle: rgba(26, 26, 24, 0.04);
      --stark-transition-fast: 0.3s ease;
      --stark-transition-base: 0.5s ease;
      --stark-transition-slow: 0.8s ease;
      --stark-space-xs: 0.5rem;
      --stark-space-sm: 1rem;
      --stark-space-md: 2rem;
      --stark-space-lg: 4rem;
      --stark-space-xl: 8rem;
    }

    * { margin: 0; padding: 0; box-sizing: border-box; }

    body {
      background: var(--stark-bg-primary);
      color: var(--stark-text-secondary);
      font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;
      font-weight: 300;
      font-size: 17px;
      line-height: 1.8;
      -webkit-font-smoothing: antialiased;
      -moz-osx-font-smoothing: grayscale;
      overflow-x: hidden;
    }

    /* Navigation -- minimal, vast space */
    nav {
      display: flex;
      justify-content: space-between;
      align-items: center;
      padding: var(--stark-space-md) var(--stark-space-lg);
      max-width: 1400px;
      margin: 0 auto;
    }

    .nav-logo {
      font-weight: 200;
      font-size: 0.85rem;
      letter-spacing: 0.12em;
      text-transform: uppercase;
      color: var(--stark-text-primary);
    }

    .nav-links {
      display: flex;
      gap: var(--stark-space-md);
      list-style: none;
    }

    .nav-links a {
      font-weight: 300;
      font-size: 0.75rem;
      letter-spacing: 0.08em;
      text-transform: uppercase;
      color: var(--stark-text-tertiary);
      text-decoration: none;
      border: none;
      transition:
        letter-spacing var(--stark-transition-base),
        color var(--stark-transition-fast);
    }

    .nav-links a:hover {
      letter-spacing: 0.14em;
      color: var(--stark-text-primary);
    }

    /* Hero -- full viewport, content at bottom */
    .hero {
      min-height: 100vh;
      display: flex;
      flex-direction: column;
      justify-content: flex-end;
      padding: 0 var(--stark-space-lg) var(--stark-space-xl);
      max-width: 1400px;
      margin: 0 auto;
    }

    .hero h1 {
      font-weight: 100;
      font-size: clamp(3.5rem, 8vw, 7rem);
      line-height: 1.08;
      letter-spacing: -0.02em;
      color: var(--stark-text-primary);
      max-width: 12em;
      margin-bottom: var(--stark-space-md);
    }

    .hero p {
      font-weight: 300;
      font-size: 1.1rem;
      line-height: 1.9;
      color: var(--stark-text-tertiary);
      max-width: 30em;
      margin-bottom: var(--stark-space-lg);
    }

    /* Divider -- partial width gradient line */
    .divider {
      height: 0.5px;
      border: none;
      background: linear-gradient(
        90deg,
        transparent 0%,
        var(--stark-border-visible) 20%,
        var(--stark-border-visible) 80%,
        transparent 100%
      );
      max-width: 30%;
      margin: var(--stark-space-xl) auto;
    }

    /* Section -- vast padding */
    .section {
      padding: var(--stark-space-xl) var(--stark-space-lg);
      max-width: 1400px;
      margin: 0 auto;
    }

    .section-label {
      font-weight: 300;
      font-size: 0.7rem;
      letter-spacing: 0.15em;
      text-transform: uppercase;
      color: var(--stark-text-faint);
      margin-bottom: var(--stark-space-lg);
    }

    .section h2 {
      font-weight: 200;
      font-size: clamp(2rem, 4.5vw, 3.2rem);
      line-height: 1.2;
      letter-spacing: 0.02em;
      color: var(--stark-text-primary);
      max-width: 16em;
      margin-bottom: var(--stark-space-md);
    }

    .section p {
      font-weight: 300;
      font-size: 1.0625rem;
      line-height: 1.85;
      color: var(--stark-text-secondary);
      max-width: 36em;
    }

    /* Card grid */
    .card-grid {
      display: grid;
      grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
      gap: var(--stark-space-lg);
      padding: var(--stark-space-lg) 0;
    }

    .card {
      padding: var(--stark-space-lg);
      border: 0.5px solid var(--stark-border);
      opacity: 0.8;
      transform: translateY(0);
      transition:
        opacity var(--stark-transition-base),
        transform var(--stark-transition-base),
        border-color var(--stark-transition-base);
    }

    .card:hover {
      opacity: 1;
      transform: translateY(-3px);
      border-color: var(--stark-border-visible);
    }

    .card-number {
      font-weight: 100;
      font-size: 3.5rem;
      line-height: 1;
      color: var(--stark-text-faint);
      margin-bottom: var(--stark-space-sm);
      transition: color var(--stark-transition-base);
    }

    .card:hover .card-number {
      color: var(--stark-accent);
    }

    .card h3 {
      font-weight: 300;
      font-size: 1.1rem;
      letter-spacing: 0.02em;
      color: var(--stark-text-primary);
      margin-bottom: var(--stark-space-xs);
    }

    .card p {
      font-size: 0.9rem;
      line-height: 1.7;
      color: var(--stark-text-tertiary);
      max-width: none;
    }

    /* Feature section with offset layout */
    .feature {
      display: grid;
      grid-template-columns: 1fr 1fr;
      gap: var(--stark-space-xl);
      align-items: center;
      padding: var(--stark-space-xl) 0;
    }

    .feature-text {
      padding-right: var(--stark-space-lg);
    }

    .feature-visual {
      aspect-ratio: 4 / 3;
      background: linear-gradient(
        135deg,
        var(--stark-bg-alt) 0%,
        var(--stark-bg-subtle) 100%
      );
      display: flex;
      align-items: center;
      justify-content: center;
    }

    .feature-visual span {
      font-weight: 100;
      font-size: 5rem;
      color: var(--stark-text-faint);
      opacity: 0.4;
    }

    /* Accent link */
    .accent-link {
      display: inline-block;
      font-weight: 300;
      font-size: 0.8rem;
      letter-spacing: 0.1em;
      text-transform: uppercase;
      color: var(--stark-accent);
      text-decoration: none;
      border: none;
      position: relative;
      margin-top: var(--stark-space-md);
      transition: letter-spacing var(--stark-transition-base);
    }

    .accent-link::after {
      content: '';
      position: absolute;
      bottom: -4px;
      left: 0;
      width: 0;
      height: 0.5px;
      background: var(--stark-accent);
      transition: width var(--stark-transition-base);
    }

    .accent-link:hover {
      letter-spacing: 0.14em;
    }

    .accent-link:hover::after {
      width: 100%;
    }

    /* Footer -- minimal */
    footer {
      padding: var(--stark-space-xl) var(--stark-space-lg) var(--stark-space-lg);
      max-width: 1400px;
      margin: 0 auto;
      display: flex;
      justify-content: space-between;
      align-items: flex-end;
      border-top: 0.5px solid var(--stark-border);
    }

    footer p {
      font-size: 0.75rem;
      color: var(--stark-text-faint);
      max-width: none;
    }

    /* Scroll reveal animations */
    .reveal {
      opacity: 0;
      transform: translateY(24px);
      transition:
        opacity 0.8s ease,
        transform 0.8s ease;
    }

    .reveal.is-visible {
      opacity: 1;
      transform: translateY(0);
    }

    .reveal-delay-1 { transition-delay: 0.1s; }
    .reveal-delay-2 { transition-delay: 0.2s; }
    .reveal-delay-3 { transition-delay: 0.3s; }

    /* Subtle background gradient for sections */
    .bg-gradient {
      background: linear-gradient(
        180deg,
        var(--stark-bg-primary) 0%,
        var(--stark-bg-alt) 50%,
        var(--stark-bg-primary) 100%
      );
    }

    /* Button */
    .stark-button {
      display: inline-block;
      padding: 0.8rem 2.8rem;
      font-family: inherit;
      font-weight: 300;
      font-size: 0.75rem;
      letter-spacing: 0.1em;
      text-transform: uppercase;
      color: var(--stark-text-secondary);
      background: transparent;
      border: 0.5px solid var(--stark-border-visible);
      cursor: pointer;
      text-decoration: none;
      transition:
        color var(--stark-transition-fast),
        border-color var(--stark-transition-base),
        background var(--stark-transition-base),
        letter-spacing var(--stark-transition-base);
    }

    .stark-button:hover {
      color: var(--stark-accent);
      border-color: var(--stark-accent);
      background: var(--stark-accent-glow);
      letter-spacing: 0.14em;
    }

    /* Reduced motion */
    @media (prefers-reduced-motion: reduce) {
      .reveal {
        opacity: 1;
        transform: none;
        transition: none;
      }
      *, *::before, *::after {
        transition-duration: 0.01ms !important;
        animation-duration: 0.01ms !important;
      }
    }

    /* Responsive */
    @media (max-width: 768px) {
      nav { padding: var(--stark-space-sm) var(--stark-space-md); }
      .hero { padding: 0 var(--stark-space-md) var(--stark-space-lg); }
      .section { padding: var(--stark-space-lg) var(--stark-space-md); }
      .feature { grid-template-columns: 1fr; gap: var(--stark-space-lg); }
      .feature-text { padding-right: 0; }
      footer { flex-direction: column; gap: var(--stark-space-sm); align-items: flex-start; }
    }
  </style>
</head>
<body>

  <nav>
    <span class="nav-logo">Resonant</span>
    <ul class="nav-links">
      <li><a href="#work">Work</a></li>
      <li><a href="#about">About</a></li>
      <li><a href="#contact">Contact</a></li>
    </ul>
  </nav>

  <section class="hero">
    <h1 class="reveal">Clarity with feeling</h1>
    <p class="reveal reveal-delay-1">Purpose-driven minimalism where every element earns its place. Warmth lives in the whitespace, emotion in the quiet transitions between stillness and response.</p>
    <div class="reveal reveal-delay-2">
      <a href="#work" class="accent-link">Explore</a>
    </div>
  </section>

  <hr class="divider">

  <section class="section" id="work">
    <span class="section-label reveal">Selected Work</span>
    <h2 class="reveal">Designed to resonate,<br>built to endure</h2>

    <div class="card-grid">
      <div class="card reveal">
        <div class="card-number">01</div>
        <h3>Spatial Awareness</h3>
        <p>Understanding that what you remove matters more than what you add. Emptiness as the primary compositional tool.</p>
      </div>
      <div class="card reveal reveal-delay-1">
        <div class="card-number">02</div>
        <h3>Emotional Precision</h3>
        <p>Micro-interactions that reward attention. A shift in opacity, an expanding letter, a color that appears only when you look.</p>
      </div>
      <div class="card reveal reveal-delay-2">
        <div class="card-number">03</div>
        <h3>Tonal Warmth</h3>
        <p>Near-whites that lean cream rather than blue. Grays with warmth underneath. A palette that feels human despite its restraint.</p>
      </div>
    </div>
  </section>

  <section class="section bg-gradient">
    <div class="feature">
      <div class="feature-text reveal">
        <span class="section-label">Approach</span>
        <h2>Less, but with intention</h2>
        <p>Every element is questioned. Does it serve purpose? Does it earn its space? The result is not absence but presence -- each remaining element amplified by the silence surrounding it.</p>
        <a href="#" class="accent-link">Read more</a>
      </div>
      <div class="feature-visual reveal reveal-delay-1">
        <span>&mdash;</span>
      </div>
    </div>
  </section>

  <hr class="divider">

  <section class="section" id="about">
    <span class="section-label reveal">About</span>
    <h2 class="reveal">Stillness is not<br>the absence of life</h2>
    <p class="reveal reveal-delay-1">Resonant Stark finds the space between austerity and emotion. It is the held breath before speaking, the pause that gives weight to what follows. Design that trusts silence.</p>
    <div class="reveal reveal-delay-2" style="margin-top: var(--stark-space-lg);">
      <a href="#contact" class="stark-button">Get in touch</a>
    </div>
  </section>

  <footer>
    <p>&copy; 2026 Resonant Stark</p>
    <p>Purpose-driven minimalism</p>
  </footer>

  <script>
    // Scroll-triggered reveal animation
    const observer = new IntersectionObserver(
      (entries) => {
        entries.forEach((entry) => {
          if (entry.isIntersecting) {
            entry.target.classList.add('is-visible');
            observer.unobserve(entry.target);
          }
        });
      },
      { threshold: 0.15, rootMargin: '0px 0px -40px 0px' }
    );

    document.querySelectorAll('.reveal').forEach((el) => {
      observer.observe(el);
    });
  </script>

</body>
</html>