<!DOCTYPE html>
<html lang="en-GB">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">

  <title>DARE</title>
  <meta name="description" content="A playbook for brave business. Methods, culture, and field notes from people who choose courage over consensus and design futures worth defending.">
  <link rel="canonical" href="https://www.dare.co.uk/">

  <!-- Open Graph -->
  <meta property="og:type" content="website">
  <meta property="og:url" content="https://www.dare.co.uk/">
  <meta property="og:title" content="DARE">
  <meta property="og:description" content="A playbook for brave business. Methods, culture, and field notes from people who choose courage over consensus and design futures worth defending.">
  <meta property="og:image" content="https://images.dare.co.uk/posts/cropped-ziiiro-celeste.jpeg">
  <meta property="og:site_name" content="DARE">

  <!-- Twitter -->
  <meta name="twitter:card" content="summary_large_image">
  <meta name="twitter:site" content="@dansellars">

  <!-- Favicon -->
  <link rel="icon" href="https://images.dare.co.uk/posts/cropped-ziiiro-celeste.jpeg">

  <!-- Fonts: Helvetica system stack + Newsreader (italic accent only) -->
  
  
  <style type="text/css">@font-face {font-family:'Newsreader';font-style:italic;font-weight:400 600;src:url(/cf-fonts/v/newsreader/5.2.10/latin-ext/opsz/italic.woff2);unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;font-display:swap;}@font-face {font-family:'Newsreader';font-style:italic;font-weight:400 600;src:url(/cf-fonts/v/newsreader/5.2.10/latin/opsz/italic.woff2);unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;font-display:swap;}@font-face {font-family:'Newsreader';font-style:italic;font-weight:400 600;src:url(/cf-fonts/v/newsreader/5.2.10/vietnamese/opsz/italic.woff2);unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB;font-display:swap;}</style>

  <!-- JSON-LD: WebSite + Organization -->
  <script type="application/ld+json">
  {
    "@context": "https://schema.org",
    "@graph": [
      {
        "@type": "WebSite",
        "@id": "https://www.dare.co.uk/#website",
        "url": "https://www.dare.co.uk/",
        "name": "DARE",
        "inLanguage": "en-GB",
        "publisher": { "@id": "https://www.dare.co.uk/#organization" }
      },
      {
        "@type": "Organization",
        "@id": "https://www.dare.co.uk/#organization",
        "name": "DARE",
        "url": "https://www.dare.co.uk/",
        "logo": "https://images.dare.co.uk/posts/cropped-ziiiro-celeste.jpeg",
        "sameAs": ["https://x.com/dansellars"]
      }
    ]
  }
  </script>

  <!-- Generated by dare_agent_discoverability.py — edit agent-config.json + re-run, do not edit this snippet directly. -->
  <script type="application/ld+json">
  {
    "@context": "https://schema.org",
    "@type": "Organization",
    "name": "dare.co.uk",
    "url": "https://www.dare.co.uk",
    "description": "Business-design observations and cultural archive",
    "disambiguatingDescription": "dare.co.uk is a long-running editorial and cultural archive on business design, methods, and applied observation. Two decades of evidence-led writing, recently rebuilt as a static, agent-friendly site with a curated 90-day analytics surface and editorial cadence.",
    "logo": "https://images.dare.co.uk/dare-logo.png",
    "foundingDate": "2003",
    "email": "hello@dare.co.uk",
    "founder": {
      "@type": "Person",
      "name": "Daniel Dare",
      "jobTitle": "Founder, writer, business designer",
      "url": "https://www.dare.co.uk/about/"
    }
  }
  </script>

  <style>
  :root {
    --bg: #fbf8f3;
    --bg-warm: #f3ede1;
    --bg-dark: #0e0d0a;
    --ink: #0a0a0a;
    --ink-soft: #5a5750;
    --accent: #c8364c;
    --line: rgba(10, 10, 10, 0.08);
    --line-on-dark: rgba(255, 255, 255, 0.12);
    --sans: 'Helvetica Neue', Helvetica, Arial, sans-serif;
    --serif-italic: 'Newsreader', 'Times New Roman', Georgia, serif;
    --max: 1320px;
    --pad: clamp(1.25rem, 4vw, 3rem);
  }

  * { box-sizing: border-box; margin: 0; padding: 0; }
  html { scroll-behavior: smooth; }
  body {
    background: var(--bg);
    color: var(--ink);
    font-family: var(--sans);
    font-size: 16px;
    line-height: 1.5;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    overflow-x: hidden;
    text-rendering: optimizeLegibility;
  }

  em {
    font-family: var(--serif-italic);
    font-style: italic;
    color: var(--accent);
  }
  a { color: inherit; }
  img { display: block; max-width: 100%; height: auto; }

  /* ── HEADER ─────────────────────────────────────────────────────────────── */
  .site-header {
    position: fixed; top: 0; left: 0; right: 0;
    z-index: 100;
    padding: 1.4rem var(--pad);
    transition: background 0.4s ease, backdrop-filter 0.4s ease,
                padding 0.3s ease, border-color 0.4s ease;
    border-bottom: 1px solid transparent;
  }
  .site-header.scrolled {
    background: rgba(251, 248, 243, 0.78);
    backdrop-filter: saturate(180%) blur(16px);
    -webkit-backdrop-filter: saturate(180%) blur(16px);
    border-bottom-color: var(--line);
    padding: 0.95rem var(--pad);
  }
  .site-header__inner {
    max-width: var(--max);
    margin: 0 auto;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 2rem;
  }
  .wordmark {
    font-family: var(--sans);
    font-weight: 600;
    font-size: 1.15rem;
    letter-spacing: -0.015em;
    text-decoration: none;
    color: var(--ink);
  }
  .wordmark em {
    font-style: italic;
    color: var(--accent);
  }
  .primary-nav {
    display: flex;
    gap: 2.4rem;
    align-items: center;
  }
  .primary-nav a {
    color: var(--ink-soft);
    text-decoration: none;
    font-size: 0.85rem;
    font-weight: 500;
    letter-spacing: 0.02em;
    position: relative;
    transition: color 0.2s ease;
  }
  .primary-nav a:hover { color: var(--accent); }
  .primary-nav a::after {
    content: '';
    position: absolute;
    left: 0; right: 100%; bottom: -5px;
    height: 1px;
    background: var(--accent);
    transition: right 0.35s cubic-bezier(0.2, 0.8, 0.2, 1);
  }
  .primary-nav a:hover::after { right: 0; }

  .nav-toggle {
    display: none;
    background: none;
    border: none;
    cursor: pointer;
    padding: 0.5rem;
    color: var(--ink);
  }
  .nav-toggle svg { display: block; width: 22px; height: 22px; }

  /* ── HERO ───────────────────────────────────────────────────────────────── */
  .hero {
    min-height: 100vh;
    padding: 11rem var(--pad) 6rem;
    display: flex;
    align-items: center;
    position: relative;
  }
  .hero::before {
    content: '';
    position: absolute;
    inset: 0;
    background:
      radial-gradient(80% 60% at 75% 20%, rgba(200, 54, 76, 0.04), transparent 60%),
      radial-gradient(60% 50% at 10% 80%, rgba(14, 13, 10, 0.04), transparent 60%);
    pointer-events: none;
  }
  .hero__inner {
    max-width: var(--max);
    margin: 0 auto;
    width: 100%;
    position: relative;
  }
  .hero__label {
    font-size: 0.72rem;
    font-weight: 600;
    letter-spacing: 0.22em;
    text-transform: uppercase;
    color: var(--accent);
    margin-bottom: 2rem;
    opacity: 0;
    animation: fade-up 0.9s ease 0.1s forwards;
  }
  .hero__headline {
    font-family: var(--sans);
    font-weight: 500;
    font-size: clamp(2.75rem, 8.5vw, 8rem);
    line-height: 0.96;
    letter-spacing: -0.022em;
    max-width: 16ch;
  }
  .hero__headline em {
    font-style: italic;
    color: var(--accent);
  }
  .hero__headline .word {
    display: inline-block;
    opacity: 0;
    transform: translateY(0.5em);
    animation: word-in 0.9s cubic-bezier(0.2, 0.8, 0.2, 1) forwards;
  }
  .hero__sub {
    margin-top: 2.5rem;
    font-size: clamp(1.05rem, 1.5vw, 1.3rem);
    line-height: 1.55;
    color: var(--ink-soft);
    max-width: 38ch;
    opacity: 0;
    animation: fade-up 0.9s ease 1.3s forwards;
  }
  .hero__scroll {
    position: absolute;
    bottom: 2.5rem;
    left: var(--pad);
    font-size: 0.7rem;
    letter-spacing: 0.22em;
    text-transform: uppercase;
    color: var(--ink-soft);
    opacity: 0;
    animation: fade-up 0.9s ease 1.7s forwards;
  }
  .hero__scroll::after {
    content: '';
    display: block;
    width: 1px; height: 36px;
    background: var(--ink);
    margin-top: 0.75rem;
    transform-origin: top;
    animation: scroll-line 2.4s ease-in-out infinite 2.6s;
  }

  @keyframes word-in { to { opacity: 1; transform: translateY(0); } }
  @keyframes fade-up {
    from { opacity: 0; transform: translateY(0.6em); }
    to   { opacity: 1; transform: translateY(0); }
  }
  @keyframes scroll-line {
    0%, 100% { transform: scaleY(0.25); }
    50%      { transform: scaleY(1); }
  }

  /* ── FEATURED ───────────────────────────────────────────────────────────── */
  .featured {
    padding: 8rem var(--pad);
    max-width: var(--max);
    margin: 0 auto;
  }
  .featured__head {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    margin-bottom: 4rem;
    gap: 2rem;
    flex-wrap: wrap;
    border-bottom: 1px solid var(--line);
    padding-bottom: 2rem;
  }
  .featured__title {
    font-family: var(--sans);
    font-weight: 500;
    font-size: clamp(2rem, 4.5vw, 3.75rem);
    letter-spacing: -0.028em;
    line-height: 1;
  }
  .featured__more {
    font-size: 0.85rem;
    color: var(--ink-soft);
    text-decoration: none;
    font-weight: 500;
    letter-spacing: 0.02em;
    transition: color 0.2s ease;
  }
  .featured__more:hover { color: var(--accent); }
  .featured__more::after { content: ' →'; transition: margin 0.2s ease; }
  .featured__more:hover::after { margin-left: 0.25rem; }

  .featured__grid {
    display: grid;
    grid-template-columns: 1fr;
    gap: 3rem 2.5rem;
  }
  @media (min-width: 760px) {
    .featured__grid {
      grid-template-columns: repeat(2, 1fr);
    }
  }
  @media (min-width: 1100px) {
    .featured__grid {
      grid-template-columns: 1.5fr 1fr 1fr;
    }
  }

  .card {
    display: block;
    text-decoration: none;
    color: inherit;
    cursor: pointer;
    opacity: 0;
    transform: translateY(2.5rem);
    transition: opacity 0.9s ease, transform 0.9s ease;
  }
  .card.in { opacity: 1; transform: translateY(0); }

  .card__media {
    position: relative;
    aspect-ratio: 4 / 5;
    background: var(--bg-warm);
    overflow: hidden;
    margin-bottom: 1.5rem;
  }
  .card__img {
    width: 100%; height: 100%;
    object-fit: cover;
    transition: transform 1s cubic-bezier(0.2, 0.8, 0.2, 1);
  }
  .card:hover .card__img { transform: scale(1.06); }
  .card__cat {
    font-size: 0.7rem;
    letter-spacing: 0.2em;
    text-transform: uppercase;
    color: var(--accent);
    font-weight: 600;
    margin-bottom: 0.85rem;
  }
  .card__title {
    font-family: var(--sans);
    font-weight: 500;
    font-size: 1.5rem;
    line-height: 1.18;
    letter-spacing: -0.018em;
    margin-bottom: 0.85rem;
    transition: color 0.2s ease;
  }
  .card:hover .card__title { color: var(--accent); }
  .card--feature .card__title { font-size: 2.05rem; }
  .card__excerpt {
    font-size: 0.95rem;
    color: var(--ink-soft);
    line-height: 1.55;
  }

  /* ── MANIFESTO (DARK BREAK) ─────────────────────────────────────────────── */
  .manifesto {
    background: var(--bg-dark);
    color: #f5f1e8;
    padding: clamp(7rem, 14vw, 12rem) var(--pad);
    text-align: center;
    position: relative;
    overflow: hidden;
  }
  .manifesto::before {
    content: '';
    position: absolute;
    inset: 0;
    background: radial-gradient(60% 50% at 50% 50%, rgba(200, 54, 76, 0.08), transparent 65%);
    pointer-events: none;
  }
  .manifesto__inner {
    max-width: 1100px;
    margin: 0 auto;
    position: relative;
  }
  .manifesto__quote {
    font-family: var(--sans);
    font-weight: 400;
    font-size: clamp(1.85rem, 4.8vw, 4.25rem);
    line-height: 1.1;
    letter-spacing: -0.022em;
  }
  .manifesto__quote em {
    color: var(--accent);
    font-style: italic;
  }
  .manifesto__attr {
    margin-top: 3rem;
    font-size: 0.72rem;
    letter-spacing: 0.22em;
    text-transform: uppercase;
    opacity: 0.45;
  }

  /* ── CATEGORIES ─────────────────────────────────────────────────────────── */
  .categories {
    padding: 8rem var(--pad);
    max-width: var(--max);
    margin: 0 auto;
  }
  .categories__head { margin-bottom: 4rem; }
  .categories__title {
    font-family: var(--sans);
    font-weight: 500;
    font-size: clamp(2rem, 4.5vw, 3.75rem);
    letter-spacing: -0.028em;
    line-height: 1;
  }
  .categories__title em {
    font-style: italic;
    color: var(--accent);
  }
  .categories__grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
    gap: 1.5rem;
  }
  .cat-tile {
    position: relative;
    aspect-ratio: 4 / 5;
    padding: 2rem;
    border: 1px solid var(--line);
    background: var(--bg);
    text-decoration: none;
    color: inherit;
    overflow: hidden;
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    transition: background 0.5s ease, color 0.5s ease, border-color 0.5s ease;
  }
  .cat-tile::before {
    content: '';
    position: absolute;
    inset: 0;
    background: radial-gradient(80% 60% at 80% 20%, rgba(200, 54, 76, 0.18), transparent 60%);
    opacity: 0;
    transition: opacity 0.5s ease;
  }
  .cat-tile:hover {
    background: var(--bg-dark);
    color: #f5f1e8;
    border-color: var(--bg-dark);
  }
  .cat-tile:hover::before { opacity: 1; }
  .cat-tile > * { position: relative; }
  .cat-tile__num {
    font-family: var(--sans);
    font-size: clamp(3rem, 6vw, 4.5rem);
    line-height: 1;
    color: var(--accent);
    font-weight: 400;
    font-style: italic;
  }
  .cat-tile__name {
    font-family: var(--sans);
    font-size: clamp(1.85rem, 3vw, 2.6rem);
    font-weight: 500;
    letter-spacing: -0.022em;
    line-height: 1;
    margin-bottom: 0.85rem;
  }
  .cat-tile__desc {
    font-size: 0.9rem;
    color: var(--ink-soft);
    transition: color 0.5s ease;
  }
  .cat-tile:hover .cat-tile__desc { color: rgba(245, 241, 232, 0.7); }

  /* ── NEWSLETTER ─────────────────────────────────────────────────────────── */
  .newsletter {
    padding: 8rem var(--pad);
    max-width: var(--max);
    margin: 0 auto;
    display: grid;
    gap: 2.5rem;
  }
  @media (min-width: 800px) {
    .newsletter {
      grid-template-columns: 1.3fr 1fr;
      align-items: center;
      gap: 4rem;
    }
  }
  .newsletter__title {
    font-family: var(--sans);
    font-weight: 500;
    font-size: clamp(2rem, 4vw, 3.5rem);
    line-height: 1.05;
    letter-spacing: -0.025em;
    max-width: 18ch;
  }
  .newsletter__title em {
    font-style: italic;
    color: var(--accent);
  }
  .newsletter__form {
    display: flex;
    gap: 0;
    max-width: 500px;
    border-bottom: 1px solid var(--ink);
  }
  .newsletter__input {
    flex: 1;
    padding: 1rem 0;
    border: none;
    background: transparent;
    font-family: inherit;
    font-size: 1rem;
    color: var(--ink);
    outline: none;
  }
  .newsletter__input::placeholder { color: var(--ink-soft); }
  .newsletter__btn {
    padding: 1rem 0 1rem 1.5rem;
    background: transparent;
    color: var(--ink);
    border: none;
    font-family: inherit;
    font-size: 0.85rem;
    font-weight: 600;
    letter-spacing: 0.05em;
    cursor: pointer;
    transition: color 0.2s ease;
  }
  .newsletter__btn:hover { color: var(--accent); }
  .newsletter__btn::after { content: ' →'; }
  .newsletter__btn:disabled { opacity: 0.5; cursor: wait; }
  .newsletter__status {
    margin-top: 1rem;
    font-size: 0.95rem;
    line-height: 1.5;
    max-width: 36rem;
  }
  .newsletter__status--ok { color: var(--accent); font-family: var(--serif-italic); font-style: italic; }
  .newsletter__status--err { color: var(--ink-soft); }

  /* ── FOOTER ─────────────────────────────────────────────────────────────── */
  .site-footer {
    padding: 4rem var(--pad) 3rem;
    border-top: 1px solid var(--line);
  }
  .site-footer__inner {
    max-width: var(--max);
    margin: 0 auto;
    display: grid;
    gap: 1.5rem;
  }
  @media (min-width: 700px) {
    .site-footer__inner {
      grid-template-columns: 1fr auto;
      align-items: center;
    }
  }
  .site-footer__nav {
    display: flex;
    gap: 1.75rem;
    flex-wrap: wrap;
  }
  .site-footer__nav a {
    color: var(--ink-soft);
    text-decoration: none;
    font-size: 0.85rem;
    transition: color 0.2s ease;
  }
  .site-footer__nav a:hover { color: var(--accent); }
  .site-footer__credit {
    font-size: 0.78rem;
    letter-spacing: 0.02em;
    color: var(--ink-soft);
  }

  /* ── MOBILE ─────────────────────────────────────────────────────────────── */
  @media (max-width: 760px) {
    .nav-toggle { display: block; }
    .primary-nav {
      position: fixed;
      top: 0; left: 0; right: 0; bottom: 0;
      background: var(--bg);
      flex-direction: column;
      justify-content: center;
      gap: 2rem;
      transform: translateX(100%);
      transition: transform 0.4s cubic-bezier(0.2, 0.8, 0.2, 1);
      z-index: 99;
    }
    .primary-nav.open { transform: translateX(0); }
    .primary-nav a {
      font-family: var(--sans);
      font-size: 2rem;
      color: var(--ink);
      font-weight: 500;
    }
    body.menu-open { overflow: hidden; }
  }

  /* ── REDUCED MOTION ─────────────────────────────────────────────────────── */
  @media (prefers-reduced-motion: reduce) {
    *, *::before, *::after {
      animation-duration: 0.01ms !important;
      animation-iteration-count: 1 !important;
      transition-duration: 0.01ms !important;
      scroll-behavior: auto !important;
    }
    .card { opacity: 1; transform: none; }
    .hero__headline .word, .hero__sub, .hero__label, .hero__scroll {
      opacity: 1 !important;
      transform: none !important;
    }
  }
  
/* CANONICAL HEADER CSS — managed by dare_header_patch.py; edit templates/_header.css */
/*
  Canonical site-header CSS — dare.co.uk
  Gold standard: https://dare.co.uk/methods-of-business-design/

  Designed to be PORTABLE across the corpus — articles that share the
  Helvetica/Newsreader template define --ink, --ink-soft, --line, --accent;
  the 11 section-index pages built earlier today define a different
  palette (--cream, --dark, --mid). Explicit fallbacks let the canonical
  render correctly on either base.

  font-family is also set explicitly because section-index bodies use
  Georgia serif; without an override, the canonical wordmark would
  inherit serif. Helvetica system stack matches the rest of dare.
*/

.top {
  border-bottom: 1px solid var(--line, rgba(10, 10, 10, 0.08));
  padding: 1rem clamp(1.25rem, 4vw, 3rem);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 2rem;
  flex-wrap: wrap;
  font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;
}

.brand {
  font-weight: 500;
  letter-spacing: -0.012em;
  text-decoration: none;
  color: var(--ink, #0a0a0a);
  font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;
}

.brand span {
  color: var(--ink-soft, #5a5750);
  font-weight: 400;
  margin-left: 0.5rem;
  font-size: 0.85em;
}

.top-nav {
  display: flex;
  gap: 1.5rem;
  flex-wrap: wrap;
}

.top-nav a {
  color: var(--ink-soft, #5a5750);
  text-decoration: none;
  font-size: 0.92rem;
  letter-spacing: 0.01em;
  font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;
}

/* Active state: ink-dark, NOT red, NOT bold. The colour shift alone
   (ink-soft → ink) is the wayfinding signal. */
.top-nav a.is-active {
  color: var(--ink, #0a0a0a);
}

.top-nav a:hover {
  color: var(--accent, #c8364c);
}
/* END CANONICAL HEADER CSS */
</style>
</head>
<body>

<header class="top" id="site-header">
  <a class="brand" href="/">DARE</a>
  <nav class="top-nav" id="primary-nav">
    <a href="/methods-of-business-design/">Methods</a>
    <a href="/culture-means-thriving-teams/">Culture</a>
    <a href="/fields-notes-from-business-design/">Field Notes</a>
  </nav>
</header>

<main>

<!-- ── HERO ─────────────────────────────────────────────────────────────── -->
<section class="hero" id="top">
  <div class="hero__inner">
    <p class="hero__label">Playbook · Vol. 01</p>
    <h1 class="hero__headline">
      <span class="word">A</span>
      <span class="word">playbook</span>
      <span class="word">for</span>
      <span class="word"><em>brave</em></span>
      <span class="word">business.</span>
    </h1>
    <p class="hero__sub">
      Methods, culture, and field notes from the people who choose courage over consensus — and design futures worth defending.
    </p>
  </div>
  <div class="hero__scroll" aria-hidden="true">Scroll</div>
</section>

<!-- ── FEATURED ─────────────────────────────────────────────────────────── -->
<section class="featured" id="featured">
  <div class="featured__head">
    <h2 class="featured__title">Featured</h2>
    <a class="featured__more" href="/observations/">Read everything</a>
  </div>
  <div class="featured__grid">
    <!-- Featured posts — rotate periodically. Run dare_homepage_image_audit.py
         to surface duplicate/placeholder cards + suggest replacements. -->
    <a class="card card--feature" href="/industrial-design/jock-kinneir-and-margaret-calvert-1958-motorway-signs/">
      <div class="card__media">
        <img class="card__img" src="https://images.dare.co.uk/posts/uk-motorway-signs.jpg" alt="Britain's 1958 motorway signs by Jock Kinneir and Margaret Calvert" loading="lazy">
      </div>
      <p class="card__cat">Methods</p>
      <h3 class="card__title">Kinneir &amp; Calvert, 1958</h3>
      <p class="card__excerpt">How Britain's motorway sign system was designed in 1958 — a landmark in clarity, hierarchy, and the methods of public design.</p>
    </a>
    <a class="card" href="/observations/coffee-supreme-cups/">
      <div class="card__media">
        <img class="card__img" src="https://images.dare.co.uk/posts/coffee-supreme.jpeg" alt="Coffee Supreme take-out cups, designed in New Zealand" loading="lazy">
      </div>
      <p class="card__cat">Culture</p>
      <h3 class="card__title">Supreme coffee cups</h3>
      <p class="card__excerpt">Coffee Supreme's rebrand brief: grow up without losing individuality. A look at the New Zealand design team's cleverly sophisticated take-out cups.</p>
    </a>
    <a class="card" href="/observations/swedish-c130-pembrey-sands/">
      <div class="card__media">
        <img class="card__img" src="https://images.dare.co.uk/posts/pembreysands-c130-550px.jpg" alt="A Swedish Air Force C-130 Hercules on Pembrey Sands beach, South Wales" loading="lazy">
      </div>
      <p class="card__cat">Field Notes</p>
      <h3 class="card__title">Hercules on the beach</h3>
      <p class="card__excerpt">A Swedish Air Force C-130 Hercules from squadron F7 lands on Pembrey Sands in South Wales. A field-note observation of context, scale, and surprise.</p>
    </a>
  </div>
</section>

<!-- ── MANIFESTO BREAK ──────────────────────────────────────────────────── -->
<section class="manifesto">
  <div class="manifesto__inner">
    <p class="manifesto__quote">
      Only the brave examines the role of <em>daring</em> in creativity and design.
    </p>
    <p class="manifesto__attr">— The DARE Manifesto</p>
  </div>
</section>

<!-- ── CATEGORIES ───────────────────────────────────────────────────────── -->
<section class="categories" id="sections">
  <div class="categories__head">
    <h2 class="categories__title">Three ways <em>in</em>.</h2>
  </div>
  <div class="categories__grid">
    <a class="cat-tile" href="/methods-of-business-design/">
      <div class="cat-tile__num">01</div>
      <div>
        <p class="cat-tile__name">Methods</p>
        <p class="cat-tile__desc">Frameworks, processes, and instruments for brave work.</p>
      </div>
    </a>
    <a class="cat-tile" href="/culture-means-thriving-teams/">
      <div class="cat-tile__num">02</div>
      <div>
        <p class="cat-tile__name">Culture</p>
        <p class="cat-tile__desc">How brave organisations are built, and how they fall.</p>
      </div>
    </a>
    <a class="cat-tile" href="/fields-notes-from-business-design/">
      <div class="cat-tile__num">03</div>
      <div>
        <p class="cat-tile__name">Field Notes</p>
        <p class="cat-tile__desc">Dispatches from the front lines of brave practice.</p>
      </div>
    </a>
  </div>
</section>

<!-- ── NEWSLETTER ───────────────────────────────────────────────────────── -->
<section class="newsletter">
  <h2 class="newsletter__title">
    <em>Field notes</em>, in your inbox.
  </h2>
  <form class="newsletter__form" id="newsletter-form" action="https://dare.co.uk/api/subscribe" method="post">
    <label for="email" style="position:absolute;left:-9999px">Your email</label>
    <input type="email" class="newsletter__input" id="email" name="email" placeholder="you@yourplace.com" required>
    <!-- Honeypot — hidden from humans, bots fill it, worker silently ignores. -->
    <input type="text" name="website_url" tabindex="-1" autocomplete="off"
           style="position:absolute;left:-9999px;height:0;width:0;opacity:0" aria-hidden="true">
    <button type="submit" class="newsletter__btn">Subscribe</button>
  </form>
  <p id="newsletter-status" class="newsletter__status" hidden></p>
</section>
<script>
(function() {
  var form = document.getElementById('newsletter-form');
  var status = document.getElementById('newsletter-status');
  if (!form || !status) return;
  form.addEventListener('submit', function(e) {
    e.preventDefault();
    var emailInput = form.querySelector('input[type="email"]');
    var honeypot = form.querySelector('input[name="website_url"]');
    var btn = form.querySelector('button[type="submit"]');
    btn.disabled = true;
    btn.textContent = 'Sending';
    fetch(form.action, {
      method: 'POST',
      headers: { 'Content-Type': 'application/json' },
      body: JSON.stringify({
        email: emailInput.value.trim(),
        website_url: honeypot.value
      })
    }).then(function(r) {
      return r.json().then(function(j) { return { ok: r.ok, body: j }; });
    }).then(function(res) {
      if (res.ok) {
        form.hidden = true;
        status.textContent = "You're on the list. First dispatch arrives when there's something worth saying.";
        status.hidden = false;
        status.classList.add('newsletter__status--ok');
      } else {
        btn.disabled = false;
        btn.textContent = 'Subscribe';
        status.textContent = (res.body && res.body.error) || 'Something went wrong — try again?';
        status.hidden = false;
        status.classList.add('newsletter__status--err');
      }
    }).catch(function() {
      btn.disabled = false;
      btn.textContent = 'Subscribe';
      status.textContent = 'Network error — try again in a moment.';
      status.hidden = false;
      status.classList.add('newsletter__status--err');
    });
  });
})();
</script>

</main>

<!-- ── FOOTER ─────────────────────────────────────────────────────────────── -->
<footer class="site-footer">
  <div class="site-footer__inner">
    <p class="site-footer__credit">© DARE 2006–2026</p>
    <nav class="site-footer__nav" aria-label="Footer">
      <a href="/about/">About</a>
      <a href="/contact/">Contact</a>
      <a href="/privacy-policy/">Privacy</a>
      <a href="https://x.com/dansellars" rel="noopener">X</a>
    </nav>
  </div>
</footer>

<script>
(function() {
  'use strict';

  // Sticky header transition on scroll — defensive against canonical
  // header rollout (2026-05-15): the legacy `id="site-header"` was
  // briefly removed, breaking this load-time path. ID is now back on
  // the canonical, but keep the null-guard so future template evolution
  // doesn't cascade-break the script again.
  var header = document.getElementById('site-header');
  if (header) {
    var onScroll = function() {
      if (window.scrollY > 12) header.classList.add('scrolled');
      else header.classList.remove('scrolled');
    };
    window.addEventListener('scroll', onScroll, { passive: true });
    onScroll();
  }

  // Hero word stagger delays
  var words = document.querySelectorAll('.hero__headline .word');
  words.forEach(function(w, i) {
    w.style.animationDelay = (0.3 + i * 0.1) + 's';
  });

  // Card scroll-reveal via IntersectionObserver
  var cards = document.querySelectorAll('.card');
  if ('IntersectionObserver' in window) {
    var io = new IntersectionObserver(function(entries) {
      entries.forEach(function(entry, i) {
        if (entry.isIntersecting) {
          setTimeout(function() {
            entry.target.classList.add('in');
          }, i * 120);
          io.unobserve(entry.target);
        }
      });
    }, { threshold: 0.15, rootMargin: '0px 0px -8% 0px' });
    cards.forEach(function(c) { io.observe(c); });
  } else {
    cards.forEach(function(c) { c.classList.add('in'); });
  }

  // Mobile nav toggle — defensive. The canonical header (post 2026-05-15)
  // doesn't have a nav-toggle button; both toggle and nav references may
  // be null. Guard everything.
  var toggle = document.getElementById('nav-toggle');
  var nav    = document.getElementById('primary-nav');
  if (toggle && nav) {
    toggle.addEventListener('click', function() {
      var open = nav.classList.toggle('open');
      document.body.classList.toggle('menu-open', open);
      toggle.setAttribute('aria-expanded', String(open));
    });
    nav.querySelectorAll('a').forEach(function(a) {
      a.addEventListener('click', function() {
        nav.classList.remove('open');
        document.body.classList.remove('menu-open');
        toggle.setAttribute('aria-expanded', 'false');
      });
    });
  }
})();
</script>

<!-- WebMCP: expose archive search to in-browser agents (progressive enhancement, no-op without the API) -->
<script src="/agent-tools.js" defer></script>

<script>(function(){function c(){var b=a.contentDocument||(a.contentWindow&&a.contentWindow.document);if(b){var d=b.createElement('script');d.innerHTML="window.__CF$cv$params={r:'a35915b9399d2e12',t:'MTc4ODQ4MzkxNQ=='};var a=document.createElement('script');a.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);";b.getElementsByTagName('head')[0].appendChild(d)}}if(document.body){var a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&&(document.onreadystatechange=e,c())}}}})();</script></body>
</html>
