# Product Design

Embedded designers and design teams for product companies that need to ship.

<style>
body::before {
    content: '';
    position: fixed;
    top: 0; left: 0;
    width: 100%; height: 100%;
    pointer-events: none;
    z-index: 0;
    background-image: none;
    background-size: 60px 60px;
  }

  .container {
    max-width: 1280px;
    margin: 0 auto;
    padding: 0 40px;
    position: relative;
    z-index: 2;
  }

  .container-narrow {
    max-width: 880px;
    margin: 0 auto;
    padding: 0 40px;
    position: relative;
    z-index: 2;
  }

  /* NAV: defer to brand.css. Earlier inline overrides were targeting a
     legacy logo structure that no longer exists in the shared nav.html
     include, and were also blocking the mobile drawer toggle. */

  /* HERO */
  .design-hero {
    padding: 100px 0 60px;
    border-bottom: 1px solid var(--line);
  }

  .breadcrumb {
    font-family: 'JetBrains Mono', monospace;
    font-size: 11px;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    color: var(--text-muted);
    margin-bottom: 28px;
  }
  .breadcrumb a { color: var(--text-muted); text-decoration: none; }
  .breadcrumb a:hover { color: var(--accent); }
  .breadcrumb span { color: var(--accent); margin: 0 12px; }

  .design-hero h1 {
    font-family: 'Montserrat', sans-serif;
    font-weight: 500;
    font-size: clamp(44px, 5.5vw, 72px);
    line-height: 1.05;
    letter-spacing: -0.025em;
    margin-bottom: 28px;
    max-width: 920px;
  }
  .design-hero h1 em { font-style: italic; color: var(--accent); }
  .design-hero .lede {
    font-size: 21px;
    line-height: 1.55;
    color: var(--text-soft);
    max-width: 720px;
    font-weight: 300;
  }

  /* WHEN section */
  .when-section {
    padding: 100px 0;
    background: var(--bg-soft);
    border-bottom: 1px solid var(--line);
  }

  .section-header {
    text-align: center;
    margin-bottom: 80px;
  }

  .section-eyebrow {
    font-family: 'JetBrains Mono', monospace;
    font-size: 11px;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    color: var(--accent);
    margin-bottom: 20px;
  }

  .section-h2 {
    font-family: 'Montserrat', sans-serif;
    font-weight: 400;
    font-size: clamp(36px, 4.5vw, 52px);
    line-height: 1.15;
    letter-spacing: -0.02em;
    color: var(--ink);
    max-width: 880px;
    margin: 0 auto;
  }

  .section-h2 em { font-style: italic; color: var(--accent); }

  .section-sub {
    font-size: 18px;
    line-height: 1.55;
    color: var(--text-soft);
    max-width: 680px;
    margin: 24px auto 0;
  }

  .when-grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 32px;
    max-width: 1100px;
    margin: 0 auto;
  }

  .when-card {
    background: var(--bg-card);
    border: 1px solid var(--line);
    border-radius: 8px;
    padding: 36px 32px;
  }

  .when-card-num {
    font-family: 'Montserrat', sans-serif;
    font-style: italic;
    font-size: 36px;
    color: var(--accent);
    margin-bottom: 16px;
  }

  .when-card h3 {
    font-family: 'Montserrat', sans-serif;
    font-weight: 500;
    font-size: 22px;
    line-height: 1.25;
    color: var(--ink);
    margin-bottom: 14px;
    letter-spacing: -0.01em;
  }

  .when-card p {
    font-size: 15px;
    line-height: 1.6;
    color: var(--text-soft);
  }

  /* SERVICES */
  .services-section {
    padding: 100px 0;
    border-bottom: 1px solid var(--line);
  }

  .services-table {
    max-width: 880px;
    margin: 60px auto 0;
    border: 1px solid var(--line);
    border-radius: 8px;
    overflow: hidden;
  }

  .service-row {
    display: grid;
    grid-template-columns: 200px 1fr 180px;
    padding: 28px 32px;
    border-bottom: 1px solid var(--line);
    background: var(--bg-card);
    align-items: center;
    gap: 24px;
  }

  .service-row:last-child { border-bottom: none; }

  .service-name {
    font-family: 'Montserrat', sans-serif;
    font-weight: 500;
    font-size: 18px;
    color: var(--ink);
  }

  .service-desc {
    font-size: 14px;
    line-height: 1.55;
    color: var(--text-soft);
  }

  .service-tag {
    font-family: 'JetBrains Mono', monospace;
    font-size: 10px;
    letter-spacing: 0.15em;
    text-transform: uppercase;
    color: var(--accent);
    text-align: right;
  }

  /* PROOF */
  .proof-section {
    padding: 100px 0;
    background: var(--bg-soft);
    border-bottom: 1px solid var(--line);
  }

  .proof-quote {
    max-width: 880px;
    margin: 60px auto 0;
    text-align: center;
  }

  .quote-text {
    font-family: 'Montserrat', sans-serif;
    font-style: italic;
    font-size: clamp(24px, 3vw, 32px);
    line-height: 1.4;
    color: var(--ink);
    margin-bottom: 32px;
  }

  .quote-attribution {
    font-family: 'JetBrains Mono', monospace;
    font-size: 12px;
    letter-spacing: 0.15em;
    text-transform: uppercase;
    color: var(--text-muted);
  }

  .quote-attribution strong {
    color: var(--accent);
    font-weight: 600;
  }

  .proof-meta {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 24px;
    margin-top: 60px;
    padding-top: 40px;
    border-top: 1px solid var(--line);
  }

  .meta-stat {
    text-align: center;
  }

  .meta-stat-num {
    font-family: 'Montserrat', sans-serif;
    font-weight: 500;
    font-size: 36px;
    color: var(--accent);
    line-height: 1;
    margin-bottom: 8px;
  }

  .meta-stat-label {
    font-family: 'JetBrains Mono', monospace;
    font-size: 10px;
    letter-spacing: 0.15em;
    text-transform: uppercase;
    color: var(--text-muted);
  }

  /* SUBPAGES */
  .subpages-section {
    padding: 100px 0;
    border-bottom: 1px solid var(--line);
  }

  .subpages-grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 32px;
    max-width: 1000px;
    margin: 60px auto 0;
  }

  .subpage-card {
    background: var(--bg-card);
    border: 1px solid var(--line);
    border-radius: 8px;
    padding: 40px 36px;
    text-decoration: none;
    color: inherit;
    transition: all 0.3s;
    display: block;
  }

  .subpage-card:hover {
    border-color: var(--accent);
    transform: translateY(-4px);
  }

  .subpage-tag {
    font-family: 'JetBrains Mono', monospace;
    font-size: 10px;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    color: var(--accent);
    margin-bottom: 16px;
  }

  .subpage-card h3 {
    font-family: 'Montserrat', sans-serif;
    font-weight: 500;
    font-size: 26px;
    line-height: 1.2;
    color: var(--ink);
    margin-bottom: 16px;
    letter-spacing: -0.015em;
  }

  .subpage-card p {
    font-size: 15px;
    line-height: 1.6;
    color: var(--text-soft);
    margin-bottom: 20px;
  }

  .subpage-cta {
    font-family: 'JetBrains Mono', monospace;
    font-size: 11px;
    letter-spacing: 0.15em;
    color: var(--accent);
    text-transform: uppercase;
  }

  /* CTA */
  .design-cta {
    padding: 100px 0;
    text-align: center;
  }

  .design-cta h2 {
    font-family: 'Montserrat', sans-serif;
    font-weight: 400;
    font-size: clamp(36px, 4.5vw, 52px);
    line-height: 1.15;
    letter-spacing: -0.02em;
    margin-bottom: 24px;
    max-width: 760px;
    margin-left: auto;
    margin-right: auto;
  }

  .design-cta h2 em { color: var(--accent); font-style: italic; }

  .design-cta p {
    font-size: 18px;
    color: var(--text-soft);
    margin-bottom: 40px;
    max-width: 580px;
    margin-left: auto;
    margin-right: auto;
  }

  .btn-primary {
    background: var(--accent);
    color: var(--bg);
    padding: 18px 36px;
    border-radius: 4px;
    text-decoration: none;
    font-size: 15px;
    font-weight: 600;
    display: inline-block;
    letter-spacing: 0.02em;
    transition: all 0.25s;
  }

  .btn-primary:hover {
    background: var(--accent-bright);
    transform: translateY(-2px);
  }

  /* FOOTER */
  footer {
    background: #0a0a0a;
    border-top: 1px solid var(--line);
    padding: 50px 0 40px;
  }

  .footer-inner {
    display: flex;
    justify-content: space-between;
    align-items: center;
    font-family: 'JetBrains Mono', monospace;
    font-size: 11px;
    letter-spacing: 0.1em;
    color: var(--text-muted);
  }

  .footer-inner a {
    color: var(--text-muted);
    text-decoration: none;
    margin-left: 20px;
  }

  .footer-inner a:hover { color: var(--accent); }

  @media (max-width: 980px) {
    .container, .container-narrow { padding: 0 24px; }
    .when-grid, .subpages-grid, .proof-meta { grid-template-columns: 1fr; }
    .service-row { grid-template-columns: 1fr; gap: 8px; }
  }
</style>

<!-- HERO -->
<section class="design-hero">
  <div class="container">
    <div class="breadcrumb">
      <a href="/">Density Labs</a> <span>/</span> Practices <span>/</span> Product Design
    </div>
    <h1>Product Design that <em>ships</em>.</h1>
    <p class="lede">Embedded designers and design teams for product companies that need to ship, not just explore. A decade of UX/UI work, including the engagement that produced Ooma's mobile app, Clutch rated 5.0.</p>
  </div>
</section>

<!-- WHEN to engage us -->
<section class="when-section">
  <div class="container">
    <div class="section-header">
      <div class="section-eyebrow">When teams call us</div>
      <h2 class="section-h2">Four <em>recurring patterns</em>.</h2>
      <p class="section-sub">We don't take every design engagement. These are the situations where embedded product design delivers compounding value.</p>
    </div>

    <div class="when-grid">
      <div class="when-card">
        <div class="when-card-num">01</div>
        <h3>The roadmap is faster than the design team</h3>
        <p>The product team is shipping. Engineering has bandwidth. Design is the bottleneck. You need senior designers who can integrate with your existing process, not run a discovery sprint.</p>
      </div>
      <div class="when-card">
        <div class="when-card-num">02</div>
        <h3>UX is uneven across the product</h3>
        <p>Different parts of the product feel like they were built by different teams. There's no design system. You need someone to audit, build the foundations, and bring consistency without rebuilding everything from scratch.</p>
      </div>
      <div class="when-card">
        <div class="when-card-num">03</div>
        <h3>You're maturing as a product organization</h3>
        <p>You've outgrown the designer-as-decorator phase but haven't yet built the structures that let design contribute strategically. We help operationalize design as a function, not a service.</p>
      </div>
      <div class="when-card">
        <div class="when-card-num">04</div>
        <h3>Your design tools shifted underneath you</h3>
        <p>Figma replaced Sketch. AI tools changed wireframing. Token systems became the norm. The team's velocity dropped because the foundations need rework. We do the unglamorous foundations work.</p>
      </div>
    </div>
  </div>
</section>

<!-- SERVICES -->
<section class="services-section">
  <div class="container">
    <div class="section-header">
      <div class="section-eyebrow">What we do</div>
      <h2 class="section-h2">Embedded design teams. <em>Real product work.</em></h2>
      <p class="section-sub">No discovery decks. No "design thinking" workshops. Designers who pair with your engineers and ship features.</p>
    </div>

    <div class="services-table">
      <div class="service-row">
        <div class="service-name">Embedded Designer</div>
        <div class="service-desc">A senior designer joins your team for a sustained engagement. Same Slack, same Jira, same standups. Pairs with engineers, ships features, contributes to roadmap discussions.</div>
        <div class="service-tag">From $7,500/mo</div>
      </div>
      <div class="service-row">
        <div class="service-name">Design Squad</div>
        <div class="service-desc">A team lead plus 2 to 3 designers, structured around your roadmap. Senior holds quality and strategy; squad members move fast across concept, prototype, and delivery work.</div>
        <div class="service-tag">From $24K/mo</div>
      </div>
      <div class="service-row">
        <div class="service-name">UX Audit &amp; Roadmap</div>
        <div class="service-desc">A 3-week engagement to audit your product, identify the highest leverage UX issues, and produce a prioritized roadmap your team can execute. Standalone or as preamble to embedded work.</div>
        <div class="service-tag">$12,500</div>
      </div>
      <div class="service-row">
        <div class="service-name">Design System Build</div>
        <div class="service-desc">For teams that need foundational tokens, components, and documentation. We build it inside your existing repo, with your engineers, so it's owned by your team when we leave.</div>
        <div class="service-tag">Project-based</div>
      </div>
    </div>
  </div>
</section>

<!-- PROOF -->
<section class="proof-section">
  <div class="container">
    <div class="section-header">
      <div class="section-eyebrow">Proof</div>
      <h2 class="section-h2">A <em>4 year</em> embedded design engagement.</h2>
    </div>

    <div class="proof-quote">
      <div class="quote-text">"The team consists of three junior designers and a team lead, all of whom are valuable contributors to the projects they work on but also overall team initiatives and culture."</div>
      <div class="quote-attribution"><strong>Kevin Dyck</strong> · Manager, Product &amp; UX Design · Ooma</div>
    </div>

    <div class="proof-meta">
      <div class="meta-stat">
        <div class="meta-stat-num">5.0</div>
        <div class="meta-stat-label">Clutch rating</div>
      </div>
      <div class="meta-stat">
        <div class="meta-stat-num">4 yrs</div>
        <div class="meta-stat-label">Engagement length</div>
      </div>
      <div class="meta-stat">
        <div class="meta-stat-num">2-5</div>
        <div class="meta-stat-label">Designers embedded</div>
      </div>
      <div class="meta-stat">
        <div class="meta-stat-num">Ongoing</div>
        <div class="meta-stat-label">Status today</div>
      </div>
    </div>

    <div style="text-align: center; margin-top: 60px;">
      <a href="case-studies.html#ooma-design" style="font-family: 'JetBrains Mono', monospace; font-size: 12px; letter-spacing: 0.15em; color: var(--accent); text-decoration: none; padding: 14px 28px; border: 1px solid var(--accent); display: inline-block; text-transform: uppercase;">Read the full case study →</a>
    </div>
  </div>
</section>

<!-- SUBPAGES -->
<section class="subpages-section">
  <div class="container">
    <div class="section-header">
      <div class="section-eyebrow">Go deeper</div>
      <h2 class="section-h2">Two resources for <em>design-mature teams</em>.</h2>
    </div>

    <div class="subpages-grid">
      <a href="/ux-process/" class="subpage-card">
        <div class="subpage-tag">PROCESS</div>
        <h3>How we run a UX engagement.</h3>
        <p>Our six phase process for embedded design work. Discovery, foundations, delivery, system build, handoff. Written for engineering leaders evaluating partners.</p>
        <div class="subpage-cta">Read the process →</div>
      </a>
      <a href="/ux-maturity/" class="subpage-card">
        <div class="subpage-tag">DIAGNOSTIC</div>
        <h3>The UX Maturity Model.</h3>
        <p>A 5-stage framework for evaluating where your design organization sits and what to invest in next. Used in our discovery calls. Free to apply yourself.</p>
        <div class="subpage-cta">See the framework →</div>
      </a>
    </div>
  </div>
</section>

<!-- CTA -->
<section class="design-cta">
  <div class="container">
    <h2>Want to talk about a <em>specific design problem</em>?</h2>
    <p>Book a 30 minute call. We'll tell you honestly whether we can help, and what to look for if we're not the right fit.</p>
    <a href="" class="btn-primary">Book a discovery call →</a>
  </div>
</section>

<!-- FOOTER -->
