Funnel-architect-plugin mobile-responsive

install
source · Clone the upstream repo
git clone https://github.com/ominou5/funnel-architect-plugin
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/ominou5/funnel-architect-plugin "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/mobile-responsive" ~/.claude/skills/ominou5-funnel-architect-plugin-mobile-responsive && rm -rf "$T"
manifest: skills/mobile-responsive/SKILL.md
source content

Mobile-Responsive Design

Over 60% of funnel traffic comes from mobile. Build mobile-first, always.

Breakpoint System

/* Mobile-first: base styles are for mobile */

/* Tablet */
@media (min-width: 768px) { /* ... */ }

/* Desktop */
@media (min-width: 1024px) { /* ... */ }

/* Large desktop */
@media (min-width: 1280px) { /* ... */ }

Required Meta Tag

Every HTML page must include:

<meta name="viewport" content="width=device-width, initial-scale=1.0">

Layout Patterns

Single-Column Mobile Layout

.container {
  width: 100%;
  max-width: 1200px;
  margin: 0 auto;
  padding: 0 16px;
}

/* Stack everything on mobile */
.grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 24px;
}

@media (min-width: 768px) {
  .grid { grid-template-columns: repeat(2, 1fr); }
}

@media (min-width: 1024px) {
  .grid { grid-template-columns: repeat(3, 1fr); }
}

Sticky Mobile CTA

.mobile-cta-bar {
  display: none;
}

@media (max-width: 767px) {
  .mobile-cta-bar {
    display: flex;
    position: fixed;
    bottom: 0;
    left: 0;
    right: 0;
    padding: 12px 16px;
    background: rgba(255, 255, 255, 0.95);
    backdrop-filter: blur(10px);
    box-shadow: 0 -2px 10px rgba(0, 0, 0, 0.1);
    z-index: 100;
  }

  .mobile-cta-bar .cta-primary {
    width: 100%;
    min-height: 48px;
    font-size: 16px;
  }

  /* Prevent content overlap with sticky bar */
  body { padding-bottom: 80px; }
}

Typography Scale

:root {
  /* Mobile-first sizes */
  --text-xs: 0.75rem;    /* 12px */
  --text-sm: 0.875rem;   /* 14px */
  --text-base: 1rem;     /* 16px — minimum for body */
  --text-lg: 1.125rem;   /* 18px */
  --text-xl: 1.25rem;    /* 20px */
  --text-2xl: 1.5rem;    /* 24px */
  --text-3xl: 1.875rem;  /* 30px */
  --text-4xl: 2.25rem;   /* 36px */
}

h1 {
  font-size: var(--text-3xl);
  line-height: 1.2;
}

@media (min-width: 768px) {
  h1 { font-size: var(--text-4xl); }
}

@media (min-width: 1024px) {
  h1 { font-size: 3rem; /* 48px */ }
}

body {
  font-size: var(--text-base); /* Never below 16px — prevents iOS zoom */
  line-height: 1.6;
}

Touch Target Requirements

/* Minimum 44x44px for all interactive elements */
button, a, input, select, textarea {
  min-height: 44px;
  min-width: 44px;
}

/* Adequate spacing between tap targets */
.nav-links a {
  padding: 12px 16px;
}

.form-group + .form-group {
  margin-top: 16px;
}

Responsive Images

img {
  max-width: 100%;
  height: auto;
  display: block;
}

Mobile Testing Checklist

  • Viewport meta tag present
  • No horizontal scroll at any viewport width
  • All text readable without zooming (min 16px)
  • All touch targets at least 44x44px
  • Forms usable with thumb (single column, large inputs)
  • CTA visible without scrolling OR sticky bar present
  • Images scale proportionally
  • No fixed-width elements wider than viewport
  • Modals/popups fit within mobile viewport
  • Page loads in < 3s on 3G connection