Default

On inverse


  
/*
 * Site-footer — section (minimal form)
 *
 * Single-row footer: logo + nav links + copyright. The expanded form
 * (multi-column with category groups) lives in Site-footer-extended.
 * Per the answered design question: two separate components.
 *
 *   <footer class="site-footer">
 *     <a class="site-footer__logo" href="/">Malevich</a>
 *     <nav class="site-footer__nav" aria-label="Footer">
 *       <a href="/manifesto">Manifesto</a>
 *       <a href="/license">License</a>
 *       <a href="/contact">Contact</a>
 *     </nav>
 *     <p class="site-footer__copyright">© 2026 Malevich.</p>
 *   </footer>
 */

@layer malevich.components {
  .site-footer {
    container-type: inline-size;
    container-name: site-footer;

    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--space-gap-elements-m);
    flex-wrap: wrap;

    padding-block: var(--space-inset-block-l);
    padding-inline: var(--space-inset-section-m);

    background-color: var(--color-surface-canvas);
    border-block-start: var(--border-width-hairline) solid var(--color-border-muted);
    color: var(--color-ink-regular);

    inline-size: 100%;
    box-sizing: border-box;
  }

  .site-footer__logo {
    display: inline-flex;
    align-items: center;
    color: var(--color-ink-strong);
    text-decoration: none;
    font-family: var(--font-display-title-family);
    font-size: var(--font-heading-section-size);
    font-weight: var(--font-display-title-weight);
    letter-spacing: var(--font-display-title-letter-spacing);
    flex-shrink: 0;
  }

  .site-footer__nav {
    display: inline-flex;
    align-items: center;
    flex-wrap: wrap;
    gap: var(--space-gap-elements-m);
  }

  .site-footer__nav a {
    color: var(--color-ink-regular);
    text-decoration: none;
    font-family: var(--font-body-support-family);
    font-size: var(--font-body-support-size);
    font-weight: var(--font-body-support-weight);
    line-height: var(--font-body-support-line-height);
    letter-spacing: var(--font-body-support-letter-spacing);
    transition: color var(--motion-fast) var(--motion-easing-default);
  }

  .site-footer__nav a:hover {
    color: var(--color-ink-strong);
  }

  .site-footer__copyright {
    margin: 0;
    color: var(--color-ink-subtle);
    font-family: var(--font-caption-family);
    font-size: var(--font-caption-size);
    font-weight: var(--font-caption-weight);
    line-height: var(--font-caption-line-height);
    letter-spacing: var(--font-caption-letter-spacing);
    flex-shrink: 0;
  }

  /* Variants */

  .site-footer.-on-inverse {
    background-color: var(--color-ink-strong);
    color: var(--color-ink-inverse);
  }
  .site-footer.-on-inverse .site-footer__logo,
  .site-footer.-on-inverse .site-footer__nav a {
    color: var(--color-ink-inverse);
  }
  .site-footer.-on-inverse .site-footer__nav a:hover {
    opacity: 0.85;
  }
  .site-footer.-on-inverse .site-footer__copyright {
    color: var(--color-ink-inverse);
    opacity: 0.6;
  }
}
This component is pure CSS — no JavaScript required.
# Site-Footer — AGENTS.md

> Auto-generated from `site-footer.docs.md` + the modifier applicability matrix.
> Edit those source files; this file regenerates on build.

## Identity

- **Component:** `site-footer`
- **Layer:** sections
- **Status:** stable
- **Last updated:** 2026-05-19

## Summary

- Marketing sites with light footer content.

## Variants

| Variant | Class | Effect |
|---|---|---|
| Default | `.site-footer` | Canvas surface |
| Inverse | `.-on-inverse` | Dark surface |

## Modifier applicability

Per ADR-0007. Modifiers attach via `data-{category}="value"` attributes.

| Category | Accepts |
|---|---|
| `background` | `solid` |
| `surface` | `flat` |
| `effect` | — |
| `shader` | — |
| `rhythm` | `compact`, `regular` |
| `motion` | any value |
| `behavior` | — |

## Anatomy

```html
<footer class="site-footer">
  <a class="site-footer__logo" href="/">Malevich</a>

  <nav class="site-footer__nav" aria-label="Footer">
    <a href="/manifesto">Manifesto</a>
    <a href="/license">License</a>
    <a href="/contact">Contact</a>
  </nav>

  <p class="site-footer__copyright">© 2026 Malevich.</p>
</footer>
```

## Tokens consumed

- `--color-surface-canvas` — default background
- `--color-ink-strong` — inverse background
- `--color-ink-strong`, `--color-ink-regular`, `--color-ink-subtle`
- `--color-border-muted` — top border
- `--space-inset-block-l`, `--space-inset-section-m`
- `--space-gap-elements-m`
- `--border-width-hairline`
- `--font-display-title-*`, `--font-heading-section-size`,
  `--font-body-support-*`, `--font-caption-*`
- `--motion-fast`, `--motion-easing-default`

## Accessibility contract

- Use `<footer>` as the wrapper for the page-level footer.
- `<nav aria-label="Footer">` identifies the footer-nav landmark.
- Provide visible copyright; assistive tech reads it after the nav.