★ THE FIFTH PUNK · WEBKIT SAFARI 27 SHIPPED IT, YOUR CODEBASE WASN'T READY

Your absolute elements
are sticking to ghosts.

CSS ANCHOR POSITIONING · IMPLICIT TETHER · NOBODY ASKED FOR THIS

The CSS Anchor Positioning spec landed in Safari 27 last week. Suddenly your legacy position: absolute elements — the ones that worked perfectly for a decade — are accidentally tethering to anchor-name declarations elsewhere in the same subtree. Your badge teleports to the tooltip target. Your absolute close-button vanishes off-screen. Your "10% off" tag ends up on top of the price. The spec changed underneath you, and the WebKit team panicked so hard they shipped position-anchor: none as an explicit opt-out 48 hours after the implicit-default behavior caused production fires across the web. AnchorPunk finds every absolute element at risk and emits the opt-out for it.

Audit my absolutes · Free How it works
★ THE BUG · ONE PARAGRAPH

CSS Anchor Positioning is the new spec. It changed how position: absolute resolves its coordinates. Your 2014 code does not know that.

For 25 years position: absolute resolved to the nearest positioned ancestor's containing block. Simple. Deterministic. Then CSS Anchor Positioning landed and introduced a new behavior: out-of-flow elements can be tethered to any element on the page that declares anchor-name. Some browser implementations apply an implicit-default-anchor when one is available in the ancestor tree, which means your absolute close-button suddenly tethers to a tooltip the designer added to the header six months ago, which puts your button at the wrong corner of the wrong card. The WebKit team realized within days that this would break legacy codebases at scale, so they shipped position-anchor: none in Safari 27 as an explicit opt-out. Most developers haven't heard of this property yet. AnchorPunk scans your DOM for at-risk absolutes and emits the opt-out for every one of them.

15-20M
web developers globally with position: absolute in complex codebases — anyone whose Safari just updated is now sitting on a ghost-tether time bomb · est. CSS-in-active-use devs
48 hr
between the spec landing in Safari 27 stable and WebKit hot-shipping position-anchor: none as the opt-out. That's how panicked they were. · WebKit changelog June 2026
1
one-line declaration position-anchor: none per at-risk element fixes every ghost-tether. Browsers that don't support the property ignore it. · spec-sanctioned opt-out
0
existing accessibility / lint / visual-regression tools detect this bug. It needs both a render of the DOM AND knowledge of the new spec — neither WCAG checkers nor Lighthouse audits look for it. · checked June 2026

PLAIN ENGLISH The CSS spec for absolute positioning quietly changed last week. If you have any position: absolute elements in a codebase that also uses anchor-name anywhere — and you use Tailwind, shadcn/ui, Radix, Headless UI, or basically any modern component library, you do — those absolutes may now be tethering to anchors you didn't write. Your UI looked perfect last Tuesday and looks broken today, and the developer has no idea what changed because they didn't change anything. AnchorPunk walks your DOM, finds every out-of-flow element at risk, and emits the one-line opt-out property the WebKit team shipped specifically to save you from this trap. Pure additive enhancement. Browsers that don't know about it ignore the line. Browsers that do know about it stop tethering.

★ FREE AUDIT · NOTHING UPLOADS · YOUR HTML NEVER LEAVES YOUR BROWSER

Paste your HTML. Find the ghost tethers.

Paste any chunk of your page that has position: absolute elements — cards with badges, dropdowns with tooltips, modals, popovers, anything where you pin a child to a parent. We render it in a sandboxed iframe inside your browser, walk every absolute and fixed element, check its position-anchor computed value, and detect any anchor-name declarations in the same subtree. Zero upload, zero storage, zero AI. Pure DOM traversal with spec-aware logic.

PASTE HTML BELOW · INCLUDE <style> BLOCKS, INLINE STYLES, OR WHOLE PAGES
⌘ + Enter to audit
Paste some HTML above (with any inline <style> blocks) and hit Audit my absolutes.
★ HOW IT WORKS · ALL IN YOUR BROWSER

Three steps. No upload. No AI. Just spec-aware DOM math.

STEP 1

Render in a sandboxed iframe

Your pasted HTML loads into a hidden, script-disabled iframe inside your browser tab. Nothing leaves the page. The iframe is destroyed the moment the audit completes.

STEP 2

Walk every out-of-flow element + map the anchor graph

For every element where getComputedStyle(el).position is absolute or fixed, we check its position-anchor computed value AND walk its ancestor chain looking for any element with anchor-name declared. We also build a global map of every anchor-name in the document.

STEP 3

Flag tethered + at-risk, emit the opt-out

For each element with an explicit position-anchor (TETHERED) or with anchor-name ancestors (REVIEW), we emit a one-line rule: position-anchor: none; scoped to that selector. Copy button included. Git-reversible. Browsers that don't support the property ignore the line; browsers that do stop tethering.

★ ALL THE PUNKS · ONE PASS · LIFETIME
The Punk Pass

AnchorPunk is the fifth product in the Punk Store. PalettePunk audits color. StickyPunk finds sticky-positioning failures. KeyboardPunk fixes mobile inputs the iOS keyboard hides. SelectPunk catches Firefox-broken dropdowns. Five products today. Six more shipping this quarter. The Punk Pass gets you all of them — current and future — for less than the cost of buying three separately.

$299
LIFETIME · ALL CURRENT + FUTURE PUNKS
Get the Punk Pass
★ TWO WAYS TO BUY

$99 for AnchorPunk alone. $299 for the whole Punk Store.

No subscription. No login wall. No "contact sales." Buy once, own forever, use on every project you ever ship.

$99
ANCHORPUNK · LIFETIME · ONE PRODUCT
Buy AnchorPunk · $99 Or get the Punk Pass · $299 · everything · lifetime
Payment processor going live this week · email me for early access

Questions

What's the W3C spec name?

CSS Anchor Positioning Module Level 1. The position-anchor property and anchor-name declaration are the new pieces. Safari 27 shipped both in June 2026; Chrome 149 shipped at the same time; Firefox is implementing.

Does this run entirely in my browser?

Yes. Nothing uploads. The pasted HTML loads into a sandboxed iframe inside your tab. We walk the DOM using standard getComputedStyle() queries. View source — the scanner is in /scan.js, vanilla JS, zero dependencies.

What if I WANT the tether?

Then ignore the finding — or set position-anchor to the specific anchor-name you meant. The bug isn't that tethering exists; it's that implicit tethering is unpredictable across browsers. Being explicit always wins.

Will this break older browsers?

No. position-anchor: none is an unknown property to browsers that don't support CSS Anchor Positioning, and unknown properties are silently ignored. Pure additive enhancement.

Same shop as PalettePunk, StickyPunk, KeyboardPunk, SelectPunk?

Yes. Same Radio Art LLC, same engineering, same lifetime-license model. Punk Pass pays for itself by your second Punk.