Sign in

kott studio

@kharnaa.bsky.social
37 followers 181 following 193 posts

We make brands, websites & apps for founders and small businesses. Since 2020. Work: kott.studio/work Tools for designers: kott.io

PostsRepliesMedia
kott studio @kharnaa.bsky.social · 11h
Two AI cats, pushed down to one bit of #dither. The whiskers hold. The color doesn't. Free, live in the browser: kott.io
010 1
kott studio @kharnaa.bsky.social · 15/10/2026
Before you pay the last invoice on a new #website, ask for the handover list. The domain and hosting should be in your name, and every login and password in your hands. If a line is missing, it isn't finished. However nice the launch email was.
A dark card. Headline: A finished website comes with a receipt, with the word finished in orange. Below it, a paper receipt titled Handover receipt for yourbusiness.example. Ticked lines: domain in my account and my name, hosting in my account and on my card, a named person to write to. One unticked line is lit in an orange bar: every login and password handed to me. Status at the bottom: not finished, yet. Small aside: a link in an email does not count.A dark card. Headline: Pay after every tick, with every in orange. Below it, the full handover receipt with 11 empty checkboxes in three groups. Access: domain in my account and name, hosting in my account and on my card, code and analytics in my accounts, every paid service and whose card pays. It works: live on the real address and secure, every page works on a phone, PageSpeed checked with a dated screenshot, every form tested and the message received. After: a named person to write to, who makes text changes and how, every login and password handed to me. An orange bar reads: 11 of 11, now pay the invoice. Small aside: also a decent brief, next time.
110 1
kott studio @kharnaa.bsky.social · 13/10/2026
Apple's #AppStore review rejected 387,087 apps in 2025 and approved them on a later try. Apparently that's just how it goes. If someone is building your app, ask where round two sits in the launch plan. Ideally somewhere other than a shrug.
A black frame with the headline Leave room for round two with Apple, the word two in orange. Below it, a light card shaped like an App Store Connect review history for Your App, iOS 1.0: Waiting for Review Mar 3, In Review Mar 4, Rejected Mar 4 under Guideline 2.1, App Completeness, then Waiting for Review again on Mar 9, lit in orange, and Ready for Distribution Mar 10. Top left: Before you set a launch date. Top right: 387,087 apps approved after a rejection. Apple, 2025. Bottom right: spoiler: it ships.
100 1
kott studio @kharnaa.bsky.social · 12/10/2026
A #halftone screen has exactly two colors. Every shadow in this frame is just a bigger dot, rendered live at 60fps: kott.io
A fisheye close-up of a green-furred creature's face against a hot pink background, split down the middle by a hard vertical line: full color on the left, the same frame recreated as a black-and-magenta halftone dot screen on the right. A headline across the top reads "The tone is only dot size." with a small KOTT.IO wordmark below it.
000 0
kott studio @kharnaa.bsky.social · 07/10/2026
What's the one thing on your own website you keep meaning to fix and never quite get to? No judgement, I think almost everyone running a site has one.
000 0
kott studio @kharnaa.bsky.social · 06/10/2026
Three dither effects running live in the browser, all on one statue's face in kott.io. Each #dither is a rule for where the black dots go: diffusion passes the leftover grey on to the next pixel, Bayer sticks to a fixed grid, and mezzotint scatters dots at random.
A classical marble statue's face, close up, in hard black and white 1-bit dither: curls of hair at the top, one eye and the nose lit, the rest in shadow. Headline: Every pixel here is black or white, with black or white in pink. Label: 1-bit diffusion, 1 of 3. kott logo bottom left.The same statue face, same crop, in an ordered Bayer dither: a fine regular grid of dots draws the hair, eye and nose in even grey tones. Headline: A fixed dot grid drew this face, with fixed dot grid in pink. Label: ordered bayer, 2 of 3.The same statue face again in mezzotint: grainy random speckle, deep blacks, the lit nose and cheek picked out in scattered dots. Headline: Every dot here fell at random, with at random in pink. Label: mezzotint, 3 of 3.
100 1
kott studio @kharnaa.bsky.social · 05/10/2026
The same sentence, tiled down the card, gets heavier with every row until it goes nearly black. No second typeface, just the weight axis doing the work in #Wobble, live at kharnaa.com/playground/wobble
A tall yellow card. A black band across the top reads "One typeface can carry the whole page." Below it, rows of small blue letters repeat that same sentence, growing heavier toward the bottom of the frame until the last rows are nearly black. A small dark tag in the lower left reads "Made in Wobble."
000 0
kott studio @kharnaa.bsky.social · 04/10/2026
Open your own #website on your phone right now and count the taps to the one thing you actually sell, out loud, so you hear the number. On ours, home to contact, that's two, on kott.studio.
000 0
kott studio @kharnaa.bsky.social · 01/10/2026
An AI page generator hands you pixels, not layers. UnHTML reads the real HTML underneath and rebuilds it as native Figma frames, text and auto-layout, free for up to 500 layers per import. unhtml.pro
Dark UI card for UnHTML. A Figma-style layers panel lists Hero and Nav rows tagged Auto, a Headline row tagged Text, then a highlighted Layer 500 row tagged Limit. Below it: the line Build with AI. Fix by hand, and three rules — free plan imports up to 500 layers, going over the cap means nothing imports, the one-time Pro upgrade removes the cap. Footer reads unhtml.pro, Figma plugin, one-time purchase.
000 0
kott studio @kharnaa.bsky.social · 30/09/2026
Surely the restaurant website knows. On the ones we teardown, the hours are the last thing on the page, assuming they made it onto the page at all. Small business mistake #20 kott.studio
A 4:5 card in flat vermilion orange, no photograph and no gradient. Small mono type at the top reads SMALL BUSINESS MISTAKE #20. Below it, very large in black and set flush to both edges of the column, I'M STARVING. WHAT TIME DO YOU CLOSE? Under a black rule, in a lighter weight, Surely the restaurant website knows. The kott.studio wordmark sits at the bottom left.
210 2
kott studio @kharnaa.bsky.social · 28/09/2026
One83 keeps a day-by-day ledger for Act 60 presence in Puerto Rico. Every day names its source: a flight it found in your calendar, or a day you set yourself. Manual entry always wins over anything it detects. one83.app
100 1
kott studio @kharnaa.bsky.social · 27/09/2026
The download still counts even when nobody opens the app twice, so a wall of permission requests before the app even starts feels like it's working. It isn't. kott.studio
A cyan card labelled Teardown. Bold black headline reads App onboarding, with the line eight screens. none of them the app. underneath. A numbered list below reads 01 three permission sheets, 02 a four screen tour, 03 a signup form. The kott logo sits bottom left, page marker 01/03 bottom right.A near-black card labelled The Habit. Bold white headline reads Three questions before hello, with the line notifications, location, tracking. asked on the first screen. Below it, a white iOS permission dialog with the app name blacked out asks to send notifications, captioned the app has not loaded yet, with Don't Allow and Allow buttons, Allow highlighted in cyan. Kott logo bottom left, page marker 02/03 bottom right.A card split black over cyan, labelled What It Costs. On black, a white headline reads An install is not a user. On cyan below, a black headline reads They never open it twice, with the line the download still counts, which is why nobody notices. Kott logo bottom left, page marker 03/03 bottom right.
000 0
kott studio @kharnaa.bsky.social · 26/09/2026
Wobble's spiral preset winds a line of text so tight around one point that it stops reading as type and turns into a firework of pink letters. We still go back and forth on whether that's the preset breaking or the best one in the set. www.kharnaa.com/playground/wobble
A dark navy card. Hot pink letters, jumbled rather than forming words, spiral outward from a point right of center, small and tightly overlapped near the middle, larger and further apart toward the edges. Small yellow monospace text in the bottom left reads WOBBLE · SPIRAL BASELINE · SUNSET RAMP.
100 1
kott studio @kharnaa.bsky.social · 25/09/2026
Spectrum's hardest round keeps saturation and lightness flat, so thirteen tiles across a 44° hue range are all there is to sort by. It's the one kind of colour difference human eyes read worst. www.kharnaa.com/playground/spectrum
A dark card reading 'Hard mode hides every cue but hue,' with the stat line '44 degrees of hue across thirteen tiles, saturation and lightness held flat.' Above it, a wide easy-mode row of six distinct hues from purple to green. Below it, a hard-mode row of thirteen tightly related blue-purple tiles, from the Spectrum colour-sorting game.
000 0
kott studio @kharnaa.bsky.social · 24/09/2026
kott has a KORG nanoKONTROL2 on screen. Every knob and fader sends the same control-change message the hardware sends, so plug the real one in and both surfaces move together. kott.io
A wide near-black card. Large off-white type reads: It sends what the box sends, with the word box in hot pink. Under it a line of small monospace capitals reads VIRTUAL nanoKONTROL2, CHANNEL 0, FACTORY SCENE, and at the right edge, KOTT.IO. A pink rule runs the full width of the card. Below it sits the top of the kott on-screen MIDI console: a row of numbered knobs labelled CC16 through CC20, tall faders, and small red-outlined S and M buttons labelled CC32 to CC36 and CC48 to CC52, each with the action it triggers printed beneath it.
001 1
kott studio @kharnaa.bsky.social · 23/09/2026
A font pairing isn't two names on a list. It's the weight, the size and the letter-spacing that make the two agree. Typeset has 227 of them with all of that already set, and it exports as self-hosted CSS. Free. www.kharnaa.com/playground/typeset
000 0
kott studio @kharnaa.bsky.social · 22/09/2026
Polite doesn't travel far. HUE&CRY is a fictional agency for brands that refuse to whisper, tuned to 118 dB. www.huuuuue.agency
Black HUE&CRY launch card with the white headline "POLITE DOESN'T TRAVEL FAR." A hot-pink "118" sits above a rising volume chart labeled whisper, conversation, shout and unignorable.
000 0
kott studio @kharnaa.bsky.social · 21/09/2026
Pixel-perfect is the trap. A screenshot can't be edited; a DOM dump is four thousand stuck rectangles. UnHTML infers auto-layout from the measured boxes, drops the frames that can't reflow to absolute, and reports every one it gave up on. unhtml.pro #figma
Dark card in UnHTML's own colours. Headline: "An editable approximation beats a perfect corpse." Two panels below. Left, labelled SCREENSHOT and tagged "1 layer": one flat grey slab with selection handles at its corners, captioned "nothing to edit". Right, labelled NATIVE LAYERS and tagged "auto-layout": a Figma layer tree where section, card and button rows are marked auto or fill in lime, and a highlighted last row reads "hero · absolute" with a "fallback" badge; captioned "every fallback logged". A conversion report beneath lists: font not installed, substituted and listed; webp/avif, transcoded to png; frame won't reflow, absolute and logged; outbound requests, zero.
000 0
kott studio @kharnaa.bsky.social · 20/09/2026
QRDock's Create screen puts all nine code types on screen at once. Nine chips need 2,504 px of row; two rows give 2,400. So the ninth takes a row of its own and 944 px of it stays empty. Twelve pixels of padding would have closed it. apps.apple.com/app/id6761479665
A pale green KOTT card headed "All nine types are on screen. The third row holds one.", the second line reversed out of a black block in mint. Below it, an unretouched crop of QRDock's Create screen: nine rounded chips, each with a small line icon. URL is selected and outlined in mint; Text, Wi-Fi and Contact fill the rest of the first row; Phone, Email, SMS and Location fill the second; Event sits alone on the third. A thin mint dimension line runs from the Event chip to the margin across the empty remainder of that row, labelled "944 px of empty row". Below a hairline, smaller text reads "Every type is one tap away", and a column at the right lists the free space at the end of each row: 118 px, 58 px, 944 px.
000 0
kott studio @kharnaa.bsky.social · 19/09/2026
HUE&CRY is a marketing agency that doesn't exist. Its site has no case studies and no before-and-afters. You type your own brand into the machine instead. The page is a volume meter: 23 dB at the top, 118 dB by the footer. The agency is fake. The build isn't. www.huuuuue.agency
Poster on near-black in HUE&CRY’s own type: MAKE THE INTERNET set in heavy white uppercase, with the word “stare.” in hot magenta italic serif. A hairline rule below it, then small caps reading huuuuue.agency and “a fictional agency, built for real”. Along the bottom, 28 bars climb from left to right, short white bars marked 23 dB rising into tall magenta bars marked 118 dB.
000 0
kott studio @kharnaa.bsky.social · 18/09/2026
Font pairing has 227 correct answers. Typeset lets you tune the weights and download the whole kit. www.kharnaa.com/playground/typeset
Light gray Typeset launch card with oversized black text: "type that pairs well." Below, a white pairing bar shows Clash Display for headings, Satoshi for body copy, and "1 of 227."
010 1
kott studio @kharnaa.bsky.social · 17/09/2026
A fictional agency site with a working volume knob. HUE&CRY's Shout Machine turns a brand name up to volume three. www.huuuuue.agency
000 0
kott studio @kharnaa.bsky.social · 16/09/2026
Even a fictional agency needs receipts. HUE&CRY puts 47 brands and 320M campaign impressions in the biggest type. www.huuuuue.agency
White editorial card with a thin gray border. The headline reads "LOUD, AND measured." in black sans serif and hot pink script. Four large black figures list 47 brands, 320M campaign impressions, 14 industry awards, and 9 countries.
000 0
kott studio @kharnaa.bsky.social · 15/09/2026
Most agency capability lists whisper. HUE&CRY numbers all seven and turns Digital hot pink. www.huuuuue.agency
Black HUE&CRY capability index card. Large white type reads "SEVEN WAYS TO GET UNIGNORED." Rows 03 to 07 list Campaigns, Growth, Digital, Design and Development. The Digital row is hot pink.
000 0
kott studio @kharnaa.bsky.social · 14/09/2026
A screenshot is the one Figma import you can't edit. UnHTML measures the real page, then rebuilds it as native frames, text runs, vectors and true auto-layout. It also names every font it swapped and every frame that fell back to absolute. unhtml.pro
Dark launch card. A very large headline reads “A page, not a picture of one.”, with the second line in lime green. The whole headline sits inside a lime Figma selection outline with corner handles, a “T Headline” layer chip above it and a “1400 × 411” size label below. Underneath: Figma plugin, One-time purchase, Offline by default. Footer reads unhtml.pro, real frames, real text, true auto-layout.
000 0
kott studio @kharnaa.bsky.social · 13/09/2026
LOUD has a weight slider. Archivo runs from 180 to 900; Inter takes the body copy. HUE&CRY is a fictional agency that refuses to whisper. www.huuuuue.agency
Black HUE&CRY type-system card. LOUD fills the upper half in heavy white Archivo. Below, the alphabet fades from white to gray beside a weight axis marked 180 to 900 in hot pink. The lower row names Archivo for variable display, Inter for body copy, and Instrument Serif as the one exception.
000 0
kott studio @kharnaa.bsky.social · 12/09/2026
Most free QR readers open on an ad and want an account before they'll read a code. QRDock opens on the camera. Scanned or built, every code docks in a library that stays on the device. No account, no analytics. apps.apple.com/app/id6761479665
Launch card for QRDock on a pale green ground. Large dark type reads "Nothing leaves", with "your phone." set in mint green on a black slab. To the right sits the QRDock mark: three square QR finder eyes in dark ink, with a mint download arrow standing on a short baseline in the fourth corner a QR code leaves empty. Smaller grey text reads "Scan any code, or build one for a link, your Wi-Fi, a contact card. It docks in a library held on the device. No account, no analytics." Below a hairline rule, a white rounded tile holds a real scannable QR code beside the words "This code is the listing. Point a phone at it and the App Store opens."
011 1
kott studio @kharnaa.bsky.social · 11/09/2026
Quiet brands get scrolled past. HUE&CRY's work index lines up six fictional projects like a setlist. www.huuuuue.agency
A white editorial work-index card headed "THINGS PEOPLE ACTUALLY NOTICED." Six fictional project names appear in bold black type, with Forma Athletics highlighted by a black row and hot-pink marker.
000 0
kott studio @kharnaa.bsky.social · 10/09/2026
Polite websites get scrolled past. HUE&CRY puts a volume control on your brand name. www.huuuuue.agency
Hot-pink graphic card with large white type reading "SAY IT LOUD." HUE&CRY sits at the top left, with "BRAND · CAMPAIGNS · NOISE" at the top right. A white rule separates the footer text: "Got something worth shouting about?" and "HUEANDCRY.STUDIO."
000 0
kott studio @kharnaa.bsky.social · 09/09/2026
Error diffusion is serial. Each pixel hands its error to the next, and a fragment shader can't wait its turn. So the 60fps preview reads the kernel backwards: every cell sums what its neighbours would have pushed in. Export runs the true serpentine scan on the CPU. kott.io
A wide card on near-black. Left half: a photograph of a gorilla in a hooded coat reduced to one-bit black and white by error diffusion, the individual dither dots visible as a loose scatter across the pale sky behind it. Right half: the kott wordmark with a magenta registered mark, a mono line reading BUILD LOG / ERROR DIFFUSION, and the headline "error diffusion runs backwards." above the note "A serial algorithm on a parallel chip. Each cell sums the error its neighbours would have pushed into it (the kernel, read inward)." Below that the Floyd–Steinberg kernel is drawn as a small six-cell lattice: an empty cell, a solid magenta cell for the current pixel, then 7; and 3, 5, 1 on the row beneath. It is labelled FLOYD-STEINBERG ÷16, PREVIEW: GPU, TAPS REVERSED, EXPORT: CPU, TRUE SERPENTINE SCAN. A magenta hairline runs across the foot of the card above a mono strip: FLOYD, ATKINSON, JARVIS, STUCKI, SIERRA, BURKES, and kott.io.
000 0
kott studio @kharnaa.bsky.social · 09/09/2026
Pomlo is on the App Store: a pomodoro timer and project tracker for iOS. The whole interface holds at 200% text. Figures wrap as whole units rather than clipping inside their pills, and nothing in the app signals state by colour alone. apps.apple.com/app/id6761341619
000 0
kott studio @kharnaa.bsky.social · 08/09/2026
Wobble pours a line of text along a wave and fades its weight from black to feather-light along the curve. Export as SVG, PNG or WebM. www.kharnaa.com/playground/wobble
Klein blue type reading 'waves pour your text along living' repeated in overlapping rows on a saturated yellow ground. Each row's letters shrink and lighten toward the lower right, showing the wave's weight fading from black to feather-light.
001 1
kott studio @kharnaa.bsky.social · 07/09/2026
Any webpage, rebuilt as native Figma layers. Real frames, editable text, auto-layout mapped from the actual CSS. Geometry it can't reproduce falls back to absolute, and it tells you which layers. That report is the honest part. unhtml.pro #figma
Launch card in UnHTML's own style: near-black background, lime green accent. A small monospace label reads "HTML → editable Figma layers". The headline, very large, reads "A Figma plugin that never phones home." with "phones home." in lime green. Below sits a three-column readout panel: Network: 0 requests, nothing uploaded; License: $39 once, no subscription; Reads: .html and .webarchive, and scene.json. Footer: UnHTML · unhtml.pro · Figma plugin.
000 0
kott studio @kharnaa.bsky.social · 06/09/2026
On #F40267, white type measures 4.16:1 and near-black 4.55:1. Flood Typeset's preview with pink and the ink flips to near-black, clearing AA by 0.045. The other four swatches aren't close. Pink is the one that needs the arithmetic. www.kharnaa.com/playground/typeset #typography
A card filled edge to edge with hot pink, the colour #F40267. A monospaced rail across the top reads "003 - Typeset" on the left and "Brand surface - #F40267" on the right. Below it, in near-black: "Pick the pink chip and the whole preview floods. Whichever of two inks measures higher against that surface is the one the type gets." Under that sits a small code chip reading readableTextOn('#F40267') arrow '#0F1115'. Then the same sentence is set twice in large Clash Display, so the two candidate inks can be compared on identical words. The first is white, labelled "White #FFFFFF 4.16:1" with a tag reading "Under AA"; the second is near-black, labelled "Near-black #0F1115 4.55:1" with a tag reading "Chosen". Both read "A good pairing needs contrast you can see", and the white one is visibly harder to read against the pink than the near-black one. Below a hairline, a row of five bars is headed "Winning ratio per swatch" and "AA body text needs 4.5:1". Each names a brand swatch and its
010 1
kott studio @kharnaa.bsky.social · 05/09/2026
Every promise on this page has its failure printed next to it. Auto-layout from real CSS, and the frames that can't reflow revert to absolute, with the report naming each one. A product page that publishes its own fallbacks is arguing something else entirely. unhtml.pro #figma
Dark launch card in UnHTML's own colours, near-black with a lime green accent. A small monospace label top left reads "Case study · Fidelity"; top right, the UnHTML lockup. The headline, very large, reads "Every promise ships" in white above "with its failure." in lime green. Below it a single panel bracketed down its left edge by a lime bar holds two stacked rows. The first, labelled THE PROMISE in lime, reads "Real auto-layout, mapped from the page's own CSS flex and grid." The second, labelled THE FALLBACK, PRINTED ON THE SAME CARD in grey, reads "A frame that cannot reproduce the geometry reverts to absolute, and the report names every one." A footer reads unhtml.pro, and Figma plugin · One-time · Offline by default.A case-study board on a near-black background, headed "04 Fidelity". The headline reads "Six promises, each with its failure written next to it." Body copy notes that every capability card on the site also states what happens when the mapping cannot be reproduced, and that a site publishing its own fallbacks makes a different kind of argument than one publishing features. Around it sit four captured feature cards from the live page, each with a small lime icon: "Real auto-layout, from real CSS" with tags reading flex to auto-layout, gap and padding, wrap and stretch, auto fallback to absolute; "Honest reporting", noting fonts substituted, frames reverted, images skipped; "Fonts you lack, handled"; and "Editable text with real runs". A side column pairs "The promise" against "The fallback, printed on the same card".
000 0
kott studio @kharnaa.bsky.social · 04/09/2026
A fictional agency site with no case studies. You type your own name instead, then press Louder: the marquee stack goes to five rows and the loop tightens from 26 seconds to 9. Cranking it is the portfolio. www.huuuuue.agency
000 0
kott studio @kharnaa.bsky.social · 03/09/2026
A QR code isn't artwork. The payload picks the version, and the version fixes the grid: a phone number is 25×25, a calendar event 37×37. QRDock draws both into the same 600px box, so the preview has to hold the densest one. apps.apple.com/app/id6761479665
Build-log card for QRDock on a pale grey-green ground. Large dark type reads "A QR code isn't artwork.", with "You don't size the grid." set in mint green on a near-black slab. Below, four identical white tiles sit in a row, each holding a real scannable QR code drawn at the same size, so the module grid inside visibly gets finer from left to right. The captions read PHONE, 16 B, 25 × 25, a phone number; URL, 39 B, 29 × 29, the App Store link; CONTACT, 61 B, 33 × 33, a contact card; EVENT, 68 B, 37 × 37, a calendar event. Under a hairline rule a heading reads "So the preview can't move.", with text explaining that the payload picks the version and the version fixes the grid, so the shipped Create screen draws every code into one box that never resizes. At the right, large type reads 600 px above two lines: 24.0 px per module at 25 × 25, and 16.2 px per module at 37 × 37.
000 0
kott studio @kharnaa.bsky.social · 02/09/2026
A grid of effects on 58 different photographs is a mood board. Run all 58 on one frame, same crop, same scale, and it becomes a range test. Which is why the case wall is the same marble head, 58 times over. kott.io
A wide card on near-black. The top two thirds are a dense grid of twenty-seven small square frames, three rows of nine, bleeding off both edges. Every frame holds the same photograph of a marble female head in profile against a red ground, at the same crop and the same size, and each one is rendered by a different effect: fine black-and-white particle noise, a red cross-stitch grid, sparse white stipple, comic halftone dots, ASCII glyphs, pop-art dots, a soft pencil-grey drawing, blocky red datamosh, chunky teletext black and white, contour lines, knitted weave, pale moire, stained-glass tessellation, red lego bricks, vertical matrix-rain streaks, fluted glass smear, deep red high contrast, and a frosted dissolve. Below the grid, on black: the kott wordmark with a magenta registered mark, a mono line reading CASE STUDY / THE RANGE WALL, and the headline "one frame, or it's a mood board." above the note "Same photograph, same crop, same scale - the only variable is the effect." On the
000 0
kott studio @kharnaa.bsky.social · 01/09/2026
A fictional client can't ask you to tone it down. So we invented one: HUE&CRY, a marketing agency that refuses to whisper. Brand, site, campaign system. Type your name into the homepage and it says it back to you, one volume louder. www.huuuuue.agency
Off-white launch card. A small grey line reads “we said it politely once. nobody remembered.” Beneath it, huge black capitals read “SO NOW WE” followed by “shout.” in magenta serif italic. A three-column panel below shows the words “Your brand” at rising volume (light grey, then heavy black, then large magenta), labelled Vol 1, Vol 2, Vol 3, with the notes “said politely”, “said again” and “repeated by strangers”. The footer reads “Brand · Site · Campaign system” and “huuuuue.agency”.
000 0
kott studio @kharnaa.bsky.social · 31/08/2026
Most time trackers want an account before they will count to twenty-five. Pomlo's free tier runs on the phone. No signup, and a CSV export sitting in settings so leaving is a button, not a support ticket. Online it syncs. Offline it waits. apps.apple.com/app/id6761341619
000 0
kott studio @kharnaa.bsky.social · 30/08/2026
Nobody wants to spend time in a QR app. That's the brief. QRDock already worked; it just gave you no reason to trust it on sight. A leftover amber accent, screens that opened on nothing. The redesign changed the signals, not the product. apps.apple.com/app/id6761479665
Case-study card for QRDock on a near-black slate ground. Large pale type reads “The app was fine.”, with “The signals weren’t.” set in dark type on a pale slab. Grey text below reads “A leftover amber accent, screens that opened on nothing, no visible reason to trust it on sight. The redesign changed the signals, not the product.” To the right sits the QRDock mark: three square QR finder eyes in pale ink, with a mint download arrow standing on a short baseline in the fourth corner a QR code leaves empty. A hairline rule beneath is labelled Echo Persona LLC on the left and iPhone, Android, Mac on the right. Below a second rule, a panel reads “The stroke changes so the mark doesn’t” and explains that at icon size the stroke thickens to 5.8 on paper and drops back to 5 on slate, shown as two app-icon tiles — one white, one slate — holding the same mark.
000 0
kott studio @kharnaa.bsky.social · 29/08/2026
Type-art is only interesting if you can take the type with you. Letterform re-forms any image out of real characters. Copy the picture as text, or export it as SVG. Every letter in that cat is the word letterform. kharnaa.com/playground/letterform
A near-black card. On the left, the word letterform set in a light italic serif above the line “turn an image into type”, with the small caption “drop an image anywhere” below. On the right, a side-on cat built entirely out of the word letterform, repeated in small pale monospaced type. Along the bottom: kharnaa.com/playground/letterform, and PNG · SVG · TEXT.
000 0
kott studio @kharnaa.bsky.social · 28/08/2026
kott is live. Real-time dither, halftone, ASCII and glitch on a webcam, a video or a still. 60fps on a GPU canvas, and the frames never leave your machine. No upload, no queue, no render wait. The free tier is the whole engine, not a trial clock. kott.io
Launch card on near-black. Left: the kott wordmark with a magenta registered mark, a mono line reading LIVE NOW / FREE / NO CARD, and the headline "nothing gets uploaded." above the line "Real-time dither, halftone, ASCII and glitch. 60fps in the browser, on your own GPU." Right: a photograph of a fennec fox in a coat, run through kott into stark one-bit black and white, its two huge ears filling the frame against a blown-out halo. A magenta hairline runs across the foot of the card above a mono strip: 100% ON-DEVICE, GPU CANVAS, WEBCAM VIDEO STILLS, 4K EXPORT, and kott.io.
000 0
kott studio @kharnaa.bsky.social · 27/08/2026
Most residency trackers count the days you were present and turn green. That says where you have been, not how much room is left. One83 leads with the days you can still be off the island: 182, and 176 once booked travel is subtracted. Act 60, iOS and Android. one83.app
Launch card for One83. White field with a soft blue-to-rose gradient. Small label reads DAYS OFF-ISLAND LEFT IN 2026 above the numeral 182 set very large in near-black, then the line "The days you are allowed to leave", with "allowed to leave" in blue. Below it the arithmetic: 365 days in the year, minus 183 needed on the island, equals 182 allowed off it, minus 6 booked, equals 176 still free. At right, an iPhone showing One83's calendar for August 2026, where six days from the 23rd to the 28th are ringed in dotted blue as booked travel and every other day is unmarked.
000 0
kott studio @kharnaa.bsky.social · 26/08/2026
Most timer apps decorate. Pomlo spends its only colour on the thing that's actually running: one Daybreak arc, on the number you opened the app to check. Everything else is porcelain, ink and hairlines. A pomodoro timer for iOS.
000 0
kott studio @kharnaa.bsky.social · 25/08/2026
Every time tracker has a zero state. Most render it as a blank chart and move on. Pomlo’s names the nine hours it couldn’t account for, then calls the day open rather than lost. The ring stays empty — no fake sliver of progress to look alive.
000 0
kott studio @kharnaa.bsky.social · 24/08/2026
Most pairing lists stop at two names and a screenshot. Typeset hands you the numbers: weight, size, tracking, leading. Tune them, then take the whole set with you. Free, self-hosted, ready to drop in. www.kharnaa.com/playground/typeset #typography
000 0
kott studio @kharnaa.bsky.social · 23/08/2026
UI shot kott.io → kott.io
000 0
kott studio @kharnaa.bsky.social · 22/08/2026
Polite → Loud hue&cry → www.huuuuue.agency
000 0
kott studio @kharnaa.bsky.social · 21/08/2026
Not one photograph in this entire identity. hue&cry is a fictional agency we built loud on purpose — the shouting is done by geometry. Rays, rings, dots, grids. Ink and a single magenta. www.huuuuue.agency
010 1