This commit is contained in:
2026-05-13 20:44:22 -07:00
parent e615e6a91f
commit 72c5904c27
282 changed files with 24948 additions and 3780 deletions

View File

@ -457,6 +457,90 @@ pre[class*=language-]::selection {
.tag:nth-child(odd) p {
text-align: right;
}
img[tabindex="0"]:focus-visible {
outline: .15rem solid var(--color-teal);
}
dialog {
margin: auto;
flex-flow: column;
background: transparent;
border: none;
position: absolute;
}
dialog[open] {
display: flex;
}
dialog::backdrop {
background-color: rgba(from var(--color-bg) r g b / .8);
backdrop-filter: blur(4px);
}
body:has(dialog[open]) {
overflow: hidden;
}
.close-dialog {
background-color: rgba(from var(--color-teal) r g b / .2);
font-size: 1.5rem;
padding: 0 .5rem .15rem;
border-radius: 1rem;
color: var(--color-teal);
box-shadow: .15rem .15rem var(--color-shadow);
border: .08rem solid var(--color-teal);
align-self: flex-end;
justify-self: flex-start;
margin: 0 .1rem;
/* Click animation handling */
position: relative;
top: 1rem;
left: -.15rem;
transition: top .1s ease-in, left .1s ease-in;
}
.close-dialog:focus-visible {
outline: none;
background-color: var(--color-teal);
color: var(--color-bg);
}
@media (any-hover: hover) {
.close-dialog:hover {
outline: none;
background-color: var(--color-teal);
color: var(--color-bg);
}
}
@media (forced-colors: active) {
.close-dialog:focus-visible {
outline-offset: .08rem;
outline: .08rem solid;
}
@media (any-hover: hover) {
.close-dialog:hover {
outline-offset: .08rem;
outline: .08rem solid;
}
}
}
/* Click animation */
.close-dialog:active {
top: 1.1rem;
left: -.05rem;
box-shadow: .05rem .05rem var(--color-shadow);
}
.modal-img {
max-height: calc(90vh - 2rem);
object-fit: contain;
width: auto;
margin: 0 1rem;
}
:root {
color-scheme: light dark;
@ -637,7 +721,6 @@ span.ha-placeholder {
opacity: .55;
}
/* Lists */
::marker {
color: var(--color-pink);
@ -1351,7 +1434,29 @@ class HeadingAnchors extends HTMLElement {
HeadingAnchors.register();
export { HeadingAnchors }</script>
export { HeadingAnchors }
/* don't even bother on mobile */
if (window.innerWidth > 650) {
const dialog = document.querySelector("dialog");
const closeButton = document.querySelector(".close-dialog");
const hero = document.querySelector(".hero");
hero.addEventListener("click", (e) => dialog.showModal());
hero.addEventListener("keydown", (e) => {
if (e.key === "Enter" || e.key === " ") {
e.preventDefault();
dialog.showModal();
}
});
closeButton.addEventListener("click", (e) => dialog.close());
closeButton.addEventListener("keydown", (e) => {
if (e.key === "Enter" || e.key === " ") {
e.preventDefault();
dialog.close();
}
});
}</script>
</head>
<body>
@ -1411,6 +1516,8 @@ export { HeadingAnchors }</script>
<heading-anchors content="<i class='fa-solid fa-anchor'></i>">
<article>
<h1 id="bottom-growth">bottom growth</h1>
@ -1440,7 +1547,11 @@ export { HeadingAnchors }</script>
</div>
<img src="/img/bottom-growth-prints.jpg" alt="4 copies of the same print in various color schemes, laid out in a 2x2 grid. The print shows testosterone-driven bottom growth of a clitoris. The color schemes are, clockwise from top right, brown on turquoise, red on cornsilk (muted yellow), violet on magenta, and mint green on lilac." loading="lazy" decoding="async" width="1000" height="1000">
<dialog closedby="any" aria-label="image modal" tabindex="-1">
<button class="close-dialog" autofocus="" aria-label="close the image modal">&times;</button>
<img class="modal-img" src="/img/bottom-growth-prints.jpg" alt="4 copies of the same print in various color schemes, laid out in a 2x2 grid. The print shows testosterone-driven bottom growth of a clitoris. The color schemes are, clockwise from top right, brown on turquoise, red on cornsilk (muted yellow), violet on magenta, and mint green on lilac." loading="lazy" decoding="async" width="1000" height="1000">
</dialog>
<img tabindex="0" class="hero" src="/img/bottom-growth-prints.jpg" alt="4 copies of the same print in various color schemes, laid out in a 2x2 grid. The print shows testosterone-driven bottom growth of a clitoris. The color schemes are, clockwise from top right, brown on turquoise, red on cornsilk (muted yellow), violet on magenta, and mint green on lilac." loading="lazy" decoding="async" width="1000" height="1000">
<p>Celebration of testosterone-driven bottom growth. Submitted for T! the Zine.</p>
@ -1486,22 +1597,8 @@ export { HeadingAnchors }</script>
<ol id="postlist">
<li class="post">
<a class="postlink" href="/block-printing-transfer-method/">
<h2 data-ha-exclude="" id="block-printing-transfer-method">block printing transfer method </h2>
<ul class="postlist-tags">
<li>print</li>
</ul>
<img src="/img/transfer-wip.jpg" alt="A pink block of carving material with a printed design of a bird attached to it. The paper has been partially rubbed away (process described in this post) to reveal the inked design on the carving material." loading="lazy" decoding="async" width="1000" height="750">
</a>
</li>
<li class="post">
<a class="postlink" href="/booby-congrats-on-the-top-surgery/">
<h2 data-ha-exclude="" id="booby-congrats-on-the-top-surgery">booby (congrats on the top surgery) </h2>
<a class="postlink" href="/geese/">
<h2 data-ha-exclude="" id="geese">geese </h2>
<ul class="postlist-tags">
@ -1509,26 +1606,46 @@ export { HeadingAnchors }</script>
<li>card</li>
<li>shirt</li>
</ul>
<img src="/img/geese-print.jpg" alt="Two Canada geese and their reflections in the water. One is calmly swimming away, while the over leans over and HONKS!" loading="lazy" decoding="async" width="1000" height="750">
</a>
</li>
<li class="post">
<a class="postlink" href="/girldick/">
<h2 data-ha-exclude="" id="girldick-mature">girldick (mature)</h2>
<ul class="postlist-tags">
<li>print</li>
<li>sticker</li>
<li>shirt</li>
<li>pin</li>
<li>gender</li>
</ul>
<img src="/img/booby-card.jpg" alt="A landscape-oriented white card with a two-color print of a blue-footed booby." loading="lazy" decoding="async" width="1000" height="750">
<img src="/img/girldick-shirt.jpg" alt="A butch cooking and wearing a cropped tee with blue cap sleeves that reads girldick in blue G.I.Joe font." class="blur" loading="lazy" decoding="async" width="1000" height="750">
</a>
</li>
<li class="post">
<a class="postlink" href="/artisans-cooperative-cards/">
<h2 data-ha-exclude="" id="artisans-cooperative-cards">artisans cooperative cards </h2>
<a class="postlink" href="/become-unbutterable/">
<h2 data-ha-exclude="" id="become-unbutterable">become unbutterable </h2>
<ul class="postlist-tags">
<li>print</li>
<li>card</li>
</ul>
<img src="/img/artisans-coop-cards.jpg" alt="2 white greeting cards with the Artisans Cooperative logo, a chicken. One card has a single print of the chicken in black ink, and the other has two overlapping prints in blue and red ink" loading="lazy" decoding="async" width="1000" height="1000">
<img src="/img/become-unbutterable.jpg" alt="3 copies of the same stamp in orange ink are spread out next to the hand carved rubber stamp they were made from. They show a cat lying on his back with paws curled, holding a butter knife in his mouth. Text around the cat reads, in all caps, &#39;become unbutterable.&#39;" loading="lazy" decoding="async" width="1000" height="562">
</a>
</li>
@ -1564,6 +1681,6 @@ export { HeadingAnchors }</script>
</footer>
<!-- This page `/bottom-growth/` was built on 2026-05-06T18:04:11.555Z -->
<!-- This page `/bottom-growth/` was built on 2026-05-14T03:43:27.986Z -->
</body>
</html>