The Whole Weird Crew — Conversation Cards

/* ─── TOKENS ─────────────────────────────────────────── */
:root {
–coral: #FF4F2B;
–orange: #FF8A1E;
–yellow: #FFE04A;
–cream: #FFF8ED;
–ink: #1C1108;
–white: #FFFFFF;
–r: 14px;
–rcard: 18px;
}

/* ─── RESET ──────────────────────────────────────────── */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
html { scroll-behavior: smooth; }
body {
font-family: ‘DM Sans’, sans-serif;
background: var(–cream);
color: var(–ink);
overflow-x: hidden;
cursor: none;
}

/* ─── CUSTOM CURSOR ──────────────────────────────────── */
.cursor {
position: fixed;
width: 14px; height: 14px;
background: var(–coral);
border-radius: 50%;
pointer-events: none;
z-index: 9999;
transform: translate(-50%, -50%);
transition: width 0.15s, height 0.15s, background 0.15s;
mix-blend-mode: multiply;
}
.cursor.big { width: 40px; height: 40px; background: var(–yellow); }

/* ─── NOISE OVERLAY ──────────────────────────────────── */
body::before {
content: ”;
position: fixed;
inset: 0;
background-image: url(“data:image/svg+xml,%3Csvg viewBox=’0 0 256 256′ xmlns=’http://www.w3.org/2000/svg’%3E%3Cfilter id=’noise’%3E%3CfeTurbulence type=’fractalNoise’ baseFrequency=’0.9′ numOctaves=’4′ stitchTiles=’stitch’/%3E%3C/filter%3E%3Crect width=’100%25′ height=’100%25′ filter=’url(%23noise)’ opacity=’0.035’/%3E%3C/svg%3E”);
pointer-events: none;
z-index: 9990;
opacity: 0.6;
}

/* ─── PAGES ──────────────────────────────────────────── */
.page { display: none; min-height: 100vh; }
.page.active { display: block; }

/* ─── NAV ────────────────────────────────────────────── */
nav {
position: sticky;
top: 0;
z-index: 100;
background: var(–coral);
display: flex;
align-items: center;
justify-content: space-between;
padding: 0 clamp(24px, 5vw, 64px);
height: 64px;
border-bottom: 2.5px solid var(–ink);
}
.nav-logo {
font-family: ‘Bricolage Grotesque’, sans-serif;
font-size: 17px;
font-weight: 800;
color: var(–white);
letter-spacing: -0.02em;
cursor: pointer;
}
.nav-links {
display: flex;
gap: 8px;
list-style: none;
}
.nav-links li button {
background: none;
border: none;
font-family: ‘DM Sans’, sans-serif;
font-size: 13px;
font-weight: 500;
color: rgba(255,255,255,0.75);
cursor: pointer;
padding: 6px 14px;
border-radius: 100px;
transition: background 0.15s, color 0.15s;
letter-spacing: 0.01em;
}
.nav-links li button:hover,
.nav-links li button.active {
background: rgba(255,255,255,0.18);
color: white;
}
.nav-cta {
background: var(–yellow) !important;
color: var(–ink) !important;
font-weight: 700 !important;
border: 2px solid var(–ink) !important;
}
.nav-cta:hover { background: var(–white) !important; }

/* ─── BLOB SHAPES ────────────────────────────────────── */
.blob {
position: absolute;
border-radius: 50%;
pointer-events: none;
}

/* ═══════════════════════════════════════════════════════
HOME PAGE
═══════════════════════════════════════════════════════ */
#home {}

/* HERO */
.hero {
background: var(–coral);
position: relative;
overflow: hidden;
padding: clamp(60px, 10vh, 100px) clamp(24px, 5vw, 80px);
min-height: calc(100vh – 64px);
display: flex;
align-items: center;
border-bottom: 3px solid var(–ink);
}
.hero .blob-1 {
width: clamp(300px, 50vw, 600px);
height: clamp(300px, 50vw, 600px);
background: var(–orange);
top: -120px; right: -80px;
opacity: 0.55;
}
.hero .blob-2 {
width: clamp(200px, 30vw, 380px);
height: clamp(200px, 30vw, 380px);
background: var(–yellow);
bottom: -80px; left: 5%;
opacity: 0.4;
}
.hero .blob-3 {
width: 160px; height: 160px;
background: var(–white);
top: 20%; left: 40%;
opacity: 0.06;
}

.hero-inner {
position: relative;
z-index: 2;
display: grid;
grid-template-columns: 1fr auto;
gap: clamp(32px, 6vw, 80px);
align-items: center;
width: 100%;
max-width: 1200px;
margin: 0 auto;
}

.hero-text { display: flex; flex-direction: column; gap: 24px; }

.hero-pill {
display: inline-flex;
align-items: center;
gap: 8px;
background: rgba(255,255,255,0.15);
border: 1.5px solid rgba(255,255,255,0.3);
backdrop-filter: blur(6px);
padding: 7px 16px;
border-radius: 100px;
font-family: ‘Space Mono’, monospace;
font-size: 10px;
letter-spacing: 0.18em;
text-transform: uppercase;
color: rgba(255,255,255,0.85);
width: fit-content;
}
.hero-pill .dot { width: 6px; height: 6px; background: var(–yellow); border-radius: 50%; }

.hero-h1 {
font-family: ‘Bricolage Grotesque’, sans-serif;
font-size: clamp(52px, 8vw, 96px);
font-weight: 800;
color: var(–white);
line-height: 0.95;
letter-spacing: -0.04em;
}
.hero-h1 em {
font-style: italic;
font-family: ‘Instrument Serif’, serif;
font-weight: 400;
color: var(–yellow);
}

.hero-tagline {
font-family: ‘Instrument Serif’, serif;
font-size: clamp(18px, 2.5vw, 24px);
font-style: italic;
color: rgba(255,255,255,0.82);
max-width: 420px;
line-height: 1.45;
}

.hero-actions {
display: flex;
gap: 12px;
flex-wrap: wrap;
align-items: center;
}
.btn-primary {
background: var(–white);
color: var(–coral);
font-family: ‘Bricolage Grotesque’, sans-serif;
font-size: 14px;
font-weight: 800;
letter-spacing: 0.06em;
text-transform: uppercase;
padding: 15px 32px;
border: 2.5px solid var(–ink);
border-radius: 6px;
cursor: pointer;
transition: background 0.15s, transform 0.1s;
box-shadow: 4px 4px 0 var(–ink);
}
.btn-primary:hover { background: var(–yellow); transform: translate(-2px, -2px); box-shadow: 6px 6px 0 var(–ink); }
.btn-ghost {
background: none;
border: none;
color: rgba(255,255,255,0.7);
font-family: ‘DM Sans’, sans-serif;
font-size: 14px;
cursor: pointer;
text-decoration: underline;
text-underline-offset: 3px;
padding: 4px 0;
}
.btn-ghost:hover { color: white; }

/* CARD STACK in hero */
.hero-cards {
position: relative;
width: clamp(200px, 28vw, 280px);
height: clamp(300px, 40vw, 380px);
flex-shrink: 0;
}
.hcard {
position: absolute;
width: clamp(160px, 22vw, 220px);
background: var(–white);
border: 2.5px solid var(–ink);
border-radius: var(–rcard);
padding: 22px 20px 28px;
box-shadow: 5px 5px 0 var(–ink);
}
.hcard-back {
background: var(–ink);
width: clamp(160px, 22vw, 220px);
height: clamp(210px, 30vw, 300px);
border-radius: var(–rcard);
border: 2.5px solid var(–ink);
box-shadow: 5px 5px 0 rgba(0,0,0,0.35);
display: flex;
align-items: center;
justify-content: center;
overflow: hidden;
}
.hcard-back img {
width: 100%;
height: 100%;
object-fit: cover;
border-radius: calc(var(–rcard) – 4px);
}
/* Placeholder card back pattern */
.hcard-back-placeholder {
width: 100%; height: 100%;
background: var(–ink);
border-radius: calc(var(–rcard) – 4px);
display: flex;
align-items: center;
justify-content: center;
flex-direction: column;
gap: 6px;
position: relative;
overflow: hidden;
}
.hcard-back-placeholder::before {
content: ”;
position: absolute;
inset: 0;
background: repeating-linear-gradient(
45deg,
rgba(255,78,43,0.08) 0px,
rgba(255,78,43,0.08) 1px,
transparent 1px,
transparent 12px
);
}
.hcard-back-placeholder .back-logo {
font-family: ‘Bricolage Grotesque’, sans-serif;
font-size: 11px;
font-weight: 800;
letter-spacing: 0.1em;
text-transform: uppercase;
color: rgba(255,255,255,0.3);
z-index: 1;
text-align: center;
padding: 0 16px;
}
.hcard-back-placeholder .back-mark {
width: 40px; height: 40px;
border: 2px solid rgba(255,78,43,0.4);
border-radius: 50%;
z-index: 1;
}

.hcard:nth-child(1) { top: 0; left: 0; transform: rotate(-6deg); z-index: 1; }
.hcard:nth-child(2) { top: 20px; left: 16px; transform: rotate(2deg); z-index: 2; }
.hcard:nth-child(3) { top: 50px; left: 8px; transform: rotate(-1deg); z-index: 3; }

.hcard-cat {
font-family: ‘Space Mono’, monospace;
font-size: 8px;
letter-spacing: 0.18em;
text-transform: uppercase;
color: var(–coral);
margin-bottom: 10px;
}
.hcard-text {
font-family: ‘Instrument Serif’, serif;
font-size: 14px;
font-style: italic;
color: var(–ink);
line-height: 1.5;
}

/* MARQUEE STRIP */
.marquee-strip {
background: var(–yellow);
border-top: 2.5px solid var(–ink);
border-bottom: 2.5px solid var(–ink);
padding: 12px 0;
overflow: hidden;
white-space: nowrap;
}
.marquee-track {
display: inline-flex;
animation: marquee 22s linear infinite;
gap: 0;
}
.marquee-track span {
font-family: ‘Bricolage Grotesque’, sans-serif;
font-size: 14px;
font-weight: 700;
letter-spacing: 0.06em;
text-transform: uppercase;
color: var(–ink);
padding: 0 24px;
}
.marquee-track .sep {
color: var(–coral);
padding: 0 4px;
}
@keyframes marquee { from { transform: translateX(0); } to { transform: translateX(-50%); } }

/* FEATURES GRID */
.features {
padding: clamp(60px, 8vh, 100px) clamp(24px, 5vw, 80px);
max-width: 1200px;
margin: 0 auto;
}
.section-eyebrow {
font-family: ‘Space Mono’, monospace;
font-size: 10px;
letter-spacing: 0.2em;
text-transform: uppercase;
color: var(–coral);
margin-bottom: 16px;
}
.section-title {
font-family: ‘Bricolage Grotesque’, sans-serif;
font-size: clamp(28px, 4vw, 44px);
font-weight: 800;
color: var(–ink);
line-height: 1.1;
letter-spacing: -0.03em;
margin-bottom: 48px;
}
.section-title em {
font-style: italic;
font-family: ‘Instrument Serif’, serif;
font-weight: 400;
color: var(–coral);
}

.feat-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
gap: 20px;
}
.feat-card {
background: var(–white);
border: 2.5px solid var(–ink);
border-radius: var(–r);
padding: 32px 28px;
box-shadow: 4px 4px 0 var(–ink);
transition: transform 0.15s, box-shadow 0.15s;
}
.feat-card:hover { transform: translate(-2px, -2px); box-shadow: 6px 6px 0 var(–ink); }
.feat-icon {
width: 44px; height: 44px;
border-radius: 10px;
margin-bottom: 18px;
display: flex;
align-items: center;
justify-content: center;
font-size: 22px;
border: 2px solid var(–ink);
}
.feat-card h3 {
font-family: ‘Bricolage Grotesque’, sans-serif;
font-size: 18px;
font-weight: 700;
margin-bottom: 10px;
letter-spacing: -0.02em;
}
.feat-card p {
font-size: 14px;
line-height: 1.65;
color: #555;
}

/* CARD PREVIEW SECTION */
.card-preview {
background: var(–ink);
padding: clamp(60px, 8vh, 100px) clamp(24px, 5vw, 80px);
border-top: 3px solid var(–ink);
border-bottom: 3px solid var(–ink);
overflow: hidden;
position: relative;
}
.card-preview .blob {
background: var(–coral);
opacity: 0.12;
width: 500px; height: 500px;
top: -100px; right: -100px;
}
.card-preview-inner {
max-width: 1200px;
margin: 0 auto;
position: relative;
z-index: 1;
}
.card-preview .section-eyebrow { color: var(–yellow); }
.card-preview .section-title { color: var(–white); }
.card-preview .section-title em { color: var(–orange); }

.cards-scroll {
display: flex;
gap: 16px;
flex-wrap: wrap;
}
.preview-card {
background: var(–white);
border: 2.5px solid rgba(255,255,255,0.15);
border-radius: var(–rcard);
padding: 24px 20px 28px;
width: 200px;
flex-shrink: 0;
transition: transform 0.2s;
box-shadow: 0 8px 32px rgba(0,0,0,0.3);
}
.preview-card:hover { transform: translateY(-6px) rotate(-1deg); }
.preview-card .pcat {
font-family: ‘Space Mono’, monospace;
font-size: 8px;
letter-spacing: 0.18em;
text-transform: uppercase;
margin-bottom: 12px;
padding: 4px 8px;
border-radius: 4px;
display: inline-block;
}
.preview-card .ptext {
font-family: ‘Instrument Serif’, serif;
font-size: 14px;
font-style: italic;
color: var(–ink);
line-height: 1.55;
}

/* QUOTE BAND */
.quote-band {
background: var(–orange);
padding: clamp(48px, 8vw, 80px) clamp(24px, 5vw, 80px);
border-bottom: 3px solid var(–ink);
text-align: center;
}
.quote-band blockquote {
font-family: ‘Instrument Serif’, serif;
font-size: clamp(22px, 4vw, 40px);
font-style: italic;
color: var(–white);
max-width: 800px;
margin: 0 auto 20px;
line-height: 1.35;
}
.quote-band cite {
font-family: ‘Space Mono’, monospace;
font-size: 11px;
letter-spacing: 0.15em;
text-transform: uppercase;
color: rgba(255,255,255,0.65);
}

/* ═══════════════════════════════════════════════════════
ABOUT PAGE
═══════════════════════════════════════════════════════ */
.about-hero {
background: var(–yellow);
padding: clamp(60px, 8vh, 100px) clamp(24px, 5vw, 80px);
border-bottom: 3px solid var(–ink);
position: relative;
overflow: hidden;
}
.about-hero .blob { background: var(–orange); opacity: 0.3; width: 400px; height: 400px; top: -80px; right: -60px; }
.about-hero-inner {
max-width: 1200px;
margin: 0 auto;
position: relative;
z-index: 1;
display: grid;
grid-template-columns: 1fr 1fr;
gap: clamp(32px, 5vw, 80px);
align-items: center;
}
.about-hero h1 {
font-family: ‘Bricolage Grotesque’, sans-serif;
font-size: clamp(40px, 6vw, 72px);
font-weight: 800;
color: var(–ink);
line-height: 1.0;
letter-spacing: -0.04em;
}
.about-hero h1 em {
font-style: italic;
font-family: ‘Instrument Serif’, serif;
font-weight: 400;
}
.about-hero p {
font-size: clamp(15px, 1.8vw, 18px);
line-height: 1.7;
color: rgba(28,17,8,0.75);
margin-top: 20px;
}
.about-right {
display: flex;
flex-direction: column;
gap: 16px;
}
.stat-card {
background: var(–white);
border: 2.5px solid var(–ink);
border-radius: var(–r);
padding: 20px 24px;
box-shadow: 4px 4px 0 var(–ink);
display: flex;
align-items: baseline;
gap: 12px;
}
.stat-num {
font-family: ‘Bricolage Grotesque’, sans-serif;
font-size: 40px;
font-weight: 800;
color: var(–coral);
letter-spacing: -0.04em;
line-height: 1;
}
.stat-label {
font-family: ‘DM Sans’, sans-serif;
font-size: 14px;
color: #555;
line-height: 1.4;
}

.about-body {
max-width: 1200px;
margin: 0 auto;
padding: clamp(60px, 8vh, 100px) clamp(24px, 5vw, 80px);
display: grid;
grid-template-columns: 1fr 1fr;
gap: clamp(40px, 6vw, 100px);
}
.about-section h2 {
font-family: ‘Bricolage Grotesque’, sans-serif;
font-size: clamp(22px, 3vw, 30px);
font-weight: 800;
letter-spacing: -0.03em;
margin-bottom: 16px;
}
.about-section p {
font-size: 15px;
line-height: 1.75;
color: #444;
margin-bottom: 14px;
}
.about-section p strong {
color: var(–coral);
font-weight: 600;
}

.categories-section {
padding: clamp(40px, 6vh, 80px) clamp(24px, 5vw, 80px);
background: var(–coral);
border-top: 3px solid var(–ink);
border-bottom: 3px solid var(–ink);
}
.categories-section .section-eyebrow { color: var(–yellow); }
.categories-section .section-title { color: var(–white); margin-bottom: 36px; }
.cat-grid {
max-width: 1200px;
margin: 0 auto;
display: grid;
grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
gap: 14px;
}
.cat-tile {
background: rgba(255,255,255,0.12);
border: 1.5px solid rgba(255,255,255,0.25);
backdrop-filter: blur(8px);
border-radius: var(–r);
padding: 22px 20px;
transition: background 0.15s;
}
.cat-tile:hover { background: rgba(255,255,255,0.2); }
.cat-num {
font-family: ‘Space Mono’, monospace;
font-size: 9px;
letter-spacing: 0.2em;
color: rgba(255,255,255,0.5);
margin-bottom: 8px;
}
.cat-name {
font-family: ‘Bricolage Grotesque’, sans-serif;
font-size: 16px;
font-weight: 700;
color: var(–white);
margin-bottom: 8px;
letter-spacing: -0.02em;
}
.cat-desc {
font-size: 13px;
color: rgba(255,255,255,0.7);
line-height: 1.5;
}

/* ═══════════════════════════════════════════════════════
ORDER PAGE
═══════════════════════════════════════════════════════ */
.order-hero {
background: var(–coral);
padding: clamp(60px, 8vh, 100px) clamp(24px, 5vw, 80px);
border-bottom: 3px solid var(–ink);
position: relative;
overflow: hidden;
text-align: center;
}
.order-hero .blob-1 { background: var(–orange); opacity: 0.45; width: 500px; height: 500px; top: -150px; right: -100px; }
.order-hero .blob-2 { background: var(–yellow); opacity: 0.35; width: 350px; height: 350px; bottom: -100px; left: -60px; }
.order-hero-inner {
position: relative; z-index: 1;
max-width: 700px; margin: 0 auto;
display: flex; flex-direction: column; gap: 20px; align-items: center;
}
.order-hero h1 {
font-family: ‘Bricolage Grotesque’, sans-serif;
font-size: clamp(44px, 7vw, 80px);
font-weight: 800;
color: var(–white);
line-height: 1.0;
letter-spacing: -0.04em;
}
.order-hero h1 em {
font-style: italic;
font-family: ‘Instrument Serif’, serif;
font-weight: 400;
color: var(–yellow);
}
.order-hero p {
font-family: ‘Instrument Serif’, serif;
font-size: clamp(16px, 2vw, 20px);
font-style: italic;
color: rgba(255,255,255,0.82);
max-width: 480px;
line-height: 1.5;
}

.order-body {
max-width: 900px;
margin: 0 auto;
padding: clamp(60px, 8vh, 100px) clamp(24px, 5vw, 80px);
display: flex;
flex-direction: column;
gap: 48px;
}

.product-box {
background: var(–white);
border: 2.5px solid var(–ink);
border-radius: 20px;
overflow: hidden;
box-shadow: 6px 6px 0 var(–ink);
display: grid;
grid-template-columns: 1fr 1fr;
}
.product-visual {
background: var(–coral);
display: flex;
align-items: center;
justify-content: center;
padding: 48px 36px;
position: relative;
overflow: hidden;
border-right: 2.5px solid var(–ink);
}
.product-visual::before {
content: ”;
position: absolute;
inset: 0;
background: radial-gradient(circle at 70% 30%, var(–orange) 0%, transparent 65%);
opacity: 0.6;
}
.product-card-stack {
position: relative;
width: 160px;
height: 220px;
z-index: 1;
}
.pcs-card {
position: absolute;
width: 150px;
background: var(–white);
border: 2.5px solid var(–ink);
border-radius: 14px;
padding: 18px 16px;
box-shadow: 4px 4px 0 rgba(0,0,0,0.25);
}
.pcs-card:nth-child(1) { transform: rotate(-8deg); top: 0; left: 0; }
.pcs-card:nth-child(2) { transform: rotate(3deg); top: 16px; left: 8px; }
.pcs-back {
position: absolute;
width: 150px;
height: 200px;
background: var(–ink);
border: 2.5px solid var(–ink);
border-radius: 14px;
box-shadow: 4px 4px 0 rgba(0,0,0,0.3);
transform: rotate(-4deg);
top: 30px; left: 4px;
overflow: hidden;
display: flex;
align-items: center;
justify-content: center;
}
.pcs-back img {
width: 100%; height: 100%;
object-fit: cover;
}
.pcs-back-placeholder {
width: 100%; height: 100%;
display: flex; align-items: center; justify-content: center;
flex-direction: column; gap: 8px;
background: var(–ink);
position: relative;
overflow: hidden;
}
.pcs-back-placeholder::before {
content: ”;
position: absolute; inset: 0;
background: repeating-linear-gradient(
45deg,
rgba(255,78,43,0.1) 0px, rgba(255,78,43,0.1) 1px,
transparent 1px, transparent 10px
);
}
.pcs-back-placeholder .bp-text {
font-family: ‘Bricolage Grotesque’, sans-serif;
font-size: 9px; font-weight: 700;
letter-spacing: 0.12em; text-transform: uppercase;
color: rgba(255,255,255,0.25); z-index: 1;
text-align: center; padding: 0 12px;
}

.product-info {
padding: 40px 40px 44px;
display: flex;
flex-direction: column;
gap: 20px;
justify-content: center;
}
.product-info h2 {
font-family: ‘Bricolage Grotesque’, sans-serif;
font-size: 28px;
font-weight: 800;
letter-spacing: -0.03em;
line-height: 1.1;
}
.product-info h2 em {
font-style: italic;
font-family: ‘Instrument Serif’, serif;
font-weight: 400;
color: var(–coral);
}
.product-meta {
display: flex; gap: 10px; flex-wrap: wrap;
}
.meta-chip {
background: #f5f0e8;
border: 1.5px solid #e0d8cc;
border-radius: 100px;
padding: 5px 12px;
font-family: ‘Space Mono’, monospace;
font-size: 9px;
letter-spacing: 0.12em;
text-transform: uppercase;
color: #888;
}
.product-price {
font-family: ‘Bricolage Grotesque’, sans-serif;
font-size: 36px;
font-weight: 800;
color: var(–coral);
letter-spacing: -0.04em;
}
.product-desc {
font-size: 14px;
line-height: 1.7;
color: #555;
}
.btn-order {
background: var(–coral);
color: var(–white);
font-family: ‘Bricolage Grotesque’, sans-serif;
font-size: 15px;
font-weight: 800;
letter-spacing: 0.06em;
text-transform: uppercase;
padding: 17px 36px;
border: 2.5px solid var(–ink);
border-radius: 8px;
cursor: pointer;
box-shadow: 4px 4px 0 var(–ink);
transition: transform 0.1s, box-shadow 0.1s, background 0.15s;
width: 100%;
}
.btn-order:hover { background: var(–ink); transform: translate(-2px, -2px); box-shadow: 6px 6px 0 var(–ink); }

.faq {
display: flex; flex-direction: column; gap: 0;
}
.faq h2 {
font-family: ‘Bricolage Grotesque’, sans-serif;
font-size: clamp(22px, 3vw, 32px);
font-weight: 800;
letter-spacing: -0.03em;
margin-bottom: 24px;
}
.faq-item {
border-top: 2px solid var(–ink);
padding: 20px 0;
}
.faq-item:last-child { border-bottom: 2px solid var(–ink); }
.faq-q {
font-family: ‘Bricolage Grotesque’, sans-serif;
font-size: 16px;
font-weight: 700;
cursor: pointer;
display: flex;
justify-content: space-between;
align-items: center;
gap: 12px;
}
.faq-q::after {
content: ‘+’;
font-size: 20px;
font-weight: 300;
color: var(–coral);
flex-shrink: 0;
transition: transform 0.2s;
}
.faq-item.open .faq-q::after { transform: rotate(45deg); }
.faq-a {
font-size: 14px;
line-height: 1.75;
color: #555;
max-height: 0;
overflow: hidden;
transition: max-height 0.3s ease, padding-top 0.3s;
}
.faq-item.open .faq-a { max-height: 200px; padding-top: 14px; }

/* ─── FOOTER ─────────────────────────────────────────── */
footer {
background: var(–ink);
padding: 40px clamp(24px, 5vw, 80px);
border-top: 3px solid var(–ink);
display: flex;
justify-content: space-between;
align-items: center;
flex-wrap: wrap;
gap: 16px;
}
.footer-logo {
font-family: ‘Bricolage Grotesque’, sans-serif;
font-size: 16px;
font-weight: 800;
color: var(–white);
letter-spacing: -0.02em;
}
.footer-note {
font-family: ‘Space Mono’, monospace;
font-size: 10px;
color: rgba(255,255,255,0.3);
letter-spacing: 0.1em;
}

/* ─── ANIMATIONS ─────────────────────────────────────── */
@keyframes fadeUp {
from { opacity: 0; transform: translateY(28px); }
to { opacity: 1; transform: translateY(0); }
}
.fade-up { animation: fadeUp 0.55s cubic-bezier(0.22,1,0.36,1) both; }
.fd-1 { animation-delay: 0.05s; }
.fd-2 { animation-delay: 0.15s; }
.fd-3 { animation-delay: 0.25s; }
.fd-4 { animation-delay: 0.38s; }
.fd-5 { animation-delay: 0.5s; }

/* ─── RESPONSIVE ─────────────────────────────────────── */
@media (max-width: 700px) {
.hero-inner { grid-template-columns: 1fr; }
.hero-cards { display: none; }
.about-hero-inner { grid-template-columns: 1fr; }
.about-body { grid-template-columns: 1fr; }
.product-box { grid-template-columns: 1fr; }
.product-visual { border-right: none; border-bottom: 2.5px solid var(–ink); height: 260px; }
.nav-links li:not(:last-child) { display: none; }
}

54 cards · IFS-grounded · zero self-helpy-ness

The whole
weird
crew.

For all the parts that didn’t come with a manual.


Meet Your Crew

“Hi, I’m the part that googles symptoms at 2am. I contain multitudes.”

The Protectors

“This one’s been clocking overtime since 1994. Give it a minute.”

IFS-Grounded
54 Conversation Prompts
Snarky But Sincere
No Self-Helpy-Ness
For The Whole Weird Crew
Therapy-Adjacent
IFS-Grounded
54 Conversation Prompts
Snarky But Sincere
No Self-Helpy-Ness
For The Whole Weird Crew
Therapy-Adjacent

Why it works

Comedy is the entry point.
Insight sneaks in the back.

🧠

IFS-Grounded

Rooted in Internal Family Systems psychology. Every card acknowledges a real part of you — without making you feel like a case study.

😂

Actually Funny

The humor isn’t decoration — it’s the delivery mechanism. Because you’ll only read something twice if it made you laugh the first time.

🌱

Post-Traumatic Growth

Backed by mindfulness and resilience science. These aren’t toxic positivity. They’re honest, warm dispatches from the other side.

🪞

Strangely Relatable

Written to work for everyone in the room at once — a 10-year-old and a 45-year-old can read the same card and both feel like it was written for them.

Sample cards

A few dispatches
from the crew.

Meet Your Crew

“The part of you that’s been running the defense since 1997 deserves a little credit.”

The Weather Inside

“That’s not anxiety. That’s a very loyal sentinel who has kept you safe in some genuinely difficult weather.”

Resilience Gym

“You’ve survived 100% of your worst days so far. The membership is paying off.”

Curiosity

“Curiosity over judgment. (Even about the judgment. Even about the curiosity.)”

The Protectors

“This one showed up before you could ask it to. That’s not a bug. That’s a really devoted part.”

“Our parts aren’t problems to be fixed. They’re the whole weird crew that got you here.”

The philosophy behind the deck

For every
part that
showed up
uninvited.

This deck started as a question: what would it look like if psychological concepts felt like dinner table conversation instead of therapy homework?

The cards are grounded in Internal Family Systems (IFS), a framework that understands the mind as a system of distinct “parts” — each with its own history, its own job, and its own very strong opinions. There’s also a thread of mindfulness practice running through, and a quiet backbone of post-traumatic growth research, which is essentially the science of how humans actually come back from hard things.

None of that shows up on the front of the cards. What shows up instead is something true, slightly funny, and maybe a little too accurate for comfort.

The deck was designed to work for everyone in the room at once — a 10-year-old and a 45-year-old can read the same card and both feel like it was written for them.

Draw one. See what it brings up.

54
Conversation prompts across 6 themes

6
Themes: IFS, mindfulness, post-traumatic growth

0
Toxic positivity. Zero vibes.

The philosophy

Internal Family Systems (IFS) is a therapeutic model that understands the mind as a system of distinct “parts” — each with its own role, history, and intention. The anxious part. The inner critic. The one that deflects with humor. The one that shuts down.

None of these parts are wrong. None of them are broken. They’re adaptive — they showed up for a reason. The Whole Weird Crew gives each one a moment of recognition, without being weird about it.

The register

Comedy is the entry point. Insight is the payload. These cards are not going to tell you to “manifest” anything or “choose joy.” They’re going to meet you exactly where you are and say something true in a way that might make you laugh before you realize you’re crying.

The tonal model is Affirmators! by Knock Knock: snarky, sincere, second-person, and warm in a way that earns it — through the joke, not despite it.

The six crews

Every part
has a seat.

01 /
Meet Your Inner Crew
Introductions to your internal cast. No one gets left in the waiting room.

02 /
The Weather Inside
For when the emotional forecast is “partly overcast with a chance of a lot.”

03 /
The Protectors
Recognizing the parts that have been standing guard — and maybe earned a break.

04 /
The Resilience Gym
Post-traumatic growth cards. The membership is paying off, even when it doesn’t feel like it.

05 /
Curiosity Over Judgment
The IFS core move. Getting interested in what’s happening instead of at war with it.

06 /
The Self Under All the Parts
Cards for the place beneath the noise. Quiet, steady, oddly still there.

Ready to ship

Order
yours.

54 cards for every part of you that showed up without an instruction manual.

Resilience Gym

“You’ve survived 100% of your worst days so far.”

Meet Your Crew

“Hi. We’ve been here the whole time.”

The Whole
Weird Crew™

The Whole
Weird Crew

54 Cards
6 Themes
IFS-Grounded
3.5″ × 5″
$24

Plot twist: the parts of us that are hardest to live with are also our hardest working. The Whole Weird Crew is 54 cards for every person in your family and every part inside each of them — the part that locks in a dinner plan three months out, because “good at planning” sounds way better than “trying to control the universe” — the part that still remembers how you broke their favourite mug in first grade, because someone in this family has to — and the part that holds it all together so quietly that nobody thinks to say thank you, because that’s just what it does. Sound familiar? Understanding our own weird parts turns out to be surprisingly good practice for understanding everyone else’s.

Got questions?
Your anxious part probably does.

What exactly is in the deck?
54 affirmation cards organized across 6 categories based on Internal Family Systems (IFS) psychology. Each card addresses a specific “part” of your inner world — from protective parts to emotional weather to the steady self underneath it all. Cards are approx. 3.5″ × 5″, printed on thick cardstock.

Do I need to know IFS to use them?
Nope. The cards stand on their own. The IFS framework is the architecture underneath — it informs why each card says what it says — but you don’t need a therapy background to pick one up and feel seen by it.

Is this a therapy replacement?
No. It’s a card deck. A really good one, but still a card deck. Think of it as a friendly dispatch from the direction of insight — not a clinical intervention. If you’re actively working through something heavy, these pair well with a therapist, not instead of one.

When will it ship?
We’re currently in pre-order. You’ll get an email with tracking as soon as your deck is on its way.

Can I buy multiple decks as gifts?
Yes — and honestly a great idea. These land well as gifts for anyone in your life who’s been doing the work (or ready to start). Bulk pricing available — reach out directly.

/* Cursor */
const cursor = document.getElementById(‘cursor’);
document.addEventListener(‘mousemove’, e => {
cursor.style.left = e.clientX + ‘px’;
cursor.style.top = e.clientY + ‘px’;
});
document.querySelectorAll(‘button, a, .faq-q, .feat-card, .preview-card, .cat-tile’).forEach(el => {
el.addEventListener(‘mouseenter’, () => cursor.classList.add(‘big’));
el.addEventListener(‘mouseleave’, () => cursor.classList.remove(‘big’));
});

/* Navigation */
function showPage(id) {
document.querySelectorAll(‘.page’).forEach(p => p.classList.remove(‘active’));
document.getElementById(id).classList.add(‘active’);
document.querySelectorAll(‘.nav-links button’).forEach(b => b.classList.remove(‘active’));
const nb = document.getElementById(‘nav-‘ + id);
if (nb) nb.classList.add(‘active’);
window.scrollTo(0, 0);
}

/* FAQ */
function toggleFaq(el) {
const item = el.parentElement;
const wasOpen = item.classList.contains(‘open’);
document.querySelectorAll(‘.faq-item’).forEach(i => i.classList.remove(‘open’));
if (!wasOpen) item.classList.add(‘open’);
}