- PACT Media & Sales AB
- 2026
- Brand identity & logo, Web design (UX/UI), Front-end development, Film & motion, Deployment
- Brand — Design — Build — Motion

PACT Media connects advertisers with the audiences of some of Sweden’s strongest podcasts and channels. I rebuilt the brand around the one thing worth keeping, then designed and built everything else: the wordmark, the website in two languages, and the film that launches it.
- Wordmark, Colour & type system, Bilingual website (SV / EN), 62-second launch film
- Stockholm, Sweden
It worked.
But it didn’t feel like PACT.
The old pactmedia.se was a WordPress theme: a stock-photo hero over a looping office video, five service categories illustrated with more stock photography, and a contact form. The channels PACT actually represents were a row of small logos below the fold.
It did its job. It just looked like a hundred other agencies, and it only spoke Swedish. The brief: make the brand as distinctive as the partnerships, without throwing away what people already recognised.





One thing survived the rebrand: the amber of the old logo’s triangle, which the old site also used on its buttons. #ED8C43 became the only accent in the new system. On near-black it measures 7.95:1 — strong enough to carry text, not just highlights. Around it: Void, Carbon and Bone, and two typefaces, Bebas Neue for display and Plus Jakarta Sans for everything else.
The wordmark is drawn, not typed. The A’s crossbar is a single swoosh that sweeps out of the letter and into the C, tying the name together in one stroke. Below, the old triangle opens into it: same name, new signature.
Aa
ABCDEFGHIJKLMNOPQRSTUVWXYZÅÄÖ0123456789&
Your commercial media partner
Aa
ABCDEFGHIJKLMNOPQRSTUVWXYZÅÄÖ0123456789&
PACT is a commercial media partner with long experience of media, sales and business development.


The homepage opens like a terminal: PACT, then “Your commercial media partner”, typed at uneven, human intervals. The typing is pure CSS — every character in the server-rendered HTML carries its own delay — so it starts on first paint, never waits for JavaScript, and appears finished for anyone who prefers reduced motion.
The five stock categories gave way to the real thing: Fotbollsmorgon, Kapitalet, Marknaden and Dobb TV, each with its own page, clips and case work.


















Hover, frame by frame
Hover a channel and the arrow, title and rule light up in amber.






Built on the Next.js App Router and prerendered in full, in both languages. Only three routes run on demand: the contact form, job applications and CSP reports.
- Typed dictionaries.Swedish is the source of truth and English is typed against it, so a missing or extra key fails the build. Dictionary text never ships to the browser; the server sends only the active language.
- Private by default.No cookies and no tracking until a visitor says yes. Fonts are self-hosted, the YouTube embed is click-to-load on youtube-nocookie.com, and analytics waits for consent, with “Decline” exactly as prominent as “Accept”.
- Hardened headers.HSTS, a scoped Permissions-Policy and a Content-Security-Policy rolled out report-only first.
- Accessible by construction.Every text colour audited against WCAG AA, one focus-ring utility on every interactive element, a skip link, and reduced-motion fallbacks.
- No broken links.Every page of the old WordPress site redirects to its closest new home.
- Next.js 16 · App Router
- TypeScript
- Tailwind CSS v4 · design tokens
- Framer Motion · CSS keyframes
- Typed SV / EN dictionaries
- Resend · Turnstile · Upstash
- Netlify
Typed dictionaries
Static prerender
Netlify
- 2
- 0
- 3
- AA
Read the film ↓Close transcript ↑
- pactmedia.se is typed into an address bar. The old WordPress site loads: a stock-photo hero, the headline “Nå rätt målgrupp med genuint & engagerande innehåll”, an amber “Kontakta oss” button.
- The old page scrolls. “This was pactmedia.se.” “It worked.” “But it didn’t feel like PACT.”
- A cursor deletes the headline letter by letter. The page drains of colour, except the amber button. The camera pushes in and amber floods the frame: “Same colour.” The amber collapses into a cursor.
- On black, the cursor types “PACT” and, in amber, “Your commercial media partner”. The camera pulls back into a browser.
- The new homepage scrolls with its fade-ins, and a channel tile lights up. “Sharper. Clearer. More PACT.”
- Five stock-photo cards flip into four channels — Fotbollsmorgon, Kapitalet, Marknaden and Dobb TV — whose clips come alive. “Handpicked channels.”
- Case films play, stat icons draw and numbers count up. “Partnerships that get noticed.”
- Full-screen amber: “The right content. The right audience. The right context.” slams in one line at a time.
- Three phones: the typing hero, the open menu, a scrolling page. “Just as sharp on mobile.”
- “In English.” A cursor clicks SV and the tagline retypes as “Din kommersiella mediepartner”. “På svenska.”
- The old and new heroes share one browser, and an amber line sweeps old into new. “From template to brand.”
- The old logo on a white card. The letters slide away, the triangle opens into the amber A and swoosh, and P, C and T grow out in bone. “Same name. New signature.”
- End card: the wordmark, “Your commercial media partner”, an amber rule, “pactmedia.se”, and “by” with Selim’s signature. Fade to black.
To launch the site I made a film about the change itself. The old pactmedia.se loads, scrolls and drains of colour; the amber floods the frame; the new site types itself in; the old logo opens into the new one.
Apart from one CSS hover, nothing in it is a screen recording. The site’s own motion — easing curves, fade-ins, counters, typing intervals — is replayed from its source values in a single GSAP timeline, which headless Chrome renders frame by frame into ffmpeg. The music and sound effects are synthesised in Python from cue points the timeline writes; the mix is normalised to −14 LUFS. Two cuts: Swedish for PACT’s launch, English for this page.
Capture
One GSAP timeline
Headless Chrome
Python synth
ffmpeg
Loudnorm + mux
- 62 s
- 60 fps
- 3,720
- −14



- Selim Yaylali
- Selim Yaylali
- Selim Yaylali
- Selim Yaylali
- Selim Yaylali
- PACT Media & Sales AB, Stockholm