Strip the meeting.
Cut to the bone.
Code, not slides.
Push to live.
Loop, don’t stall.
// Mechanisme: process-numbered-reveal-brutalist import gsap from 'https://esm.sh/[email protected]'; import { ScrollTrigger } from 'https://esm.sh/[email protected]/ScrollTrigger'; gsap.registerPlugin(ScrollTrigger); const reduce = window.matchMedia('(prefers-reduced-motion: reduce)').matches; const items = gsap.utils.toArray('.br-card'); if (reduce) { gsap.set(items, { autoAlpha: 1, y: 0 }); } else { gsap.set(items, { y: 60, autoAlpha: 0 }); ScrollTrigger.batch(items, { start: 'top 85%', onEnter: (els) => gsap.to(els, { y: 0, autoAlpha: 1, duration: 0.6, stagger: 0.12, ease: 'power4.out' }), once: true }); }
<!-- Skeleton: process-numbered-reveal-brutalist -->
<section class="br-wrap">
<header class="br-head">
<span class="br-tag">// PROCESS — 5 STEPS</span>
<h2 class="br-title">SHIP / WEEK / EVERY</h2>
</header>
<ol class="br-list">
<li class="br-card"><span class="br-num">01</span><h3>BRIEF</h3><p>Strip the meeting.</p></li>
<li class="br-card"><span class="br-num">02</span><h3>SCOPE</h3><p>Cut to the bone.</p></li>
<li class="br-card"><span class="br-num">03</span><h3>BUILD</h3><p>Code, not slides.</p></li>
<li class="br-card"><span class="br-num">04</span><h3>SHIP</h3><p>Push to live.</p></li>
<li class="br-card last"><span class="br-num">05</span><h3>ITERATE</h3><p>Loop, don't stall.</p></li>
</ol>
</section> /* Styling: process-numbered-reveal-brutalist — brutalist */
.br-wrap { background:#FFFFFF; color:#000; padding:6vh 5vw; min-height:100vh; font-family:'JetBrains Mono',ui-monospace,monospace; }
.br-head { border:2px solid #000; padding:1.25rem; margin-bottom:2rem; }
.br-tag { font-size:.72rem; letter-spacing:.16em; }
.br-title { font-family:'Archivo Black','Archivo',sans-serif; font-weight:900; text-transform:uppercase; font-size:clamp(2.2rem,5vw,4.5rem); line-height:.95; margin:.4rem 0 0; letter-spacing:-.02em; }
.br-list { list-style:none; margin:0; padding:0; display:grid; grid-template-columns:repeat(5,1fr); gap:0; }
.br-card { border:2px solid #000; border-right:none; padding:1.25rem; min-height:42vh; display:flex; flex-direction:column; justify-content:space-between; background:#fff; border-radius:0; }
.br-card.last { border-right:2px solid #000; background:#FF4A1C; color:#fff; }
.br-num { font-family:'Archivo Black',sans-serif; font-size:clamp(3rem,7vw,6rem); line-height:1; letter-spacing:-.04em; }
.br-card h3 { font-family:'JetBrains Mono',monospace; font-weight:500; text-transform:uppercase; letter-spacing:.16em; margin:1.5rem 0 .4rem; font-size:.95rem; }
.br-card p { margin:0; font-size:.85rem; line-height:1.4; }
@media (max-width: 760px){ .br-list{ grid-template-columns:1fr; } .br-card{ border-right:2px solid #000; border-bottom:none; min-height:auto; } .br-card.last{ border-bottom:2px solid #000; } }