diff --git a/gigs/thomaslawson.com/work-fia-edits/refresh-2026-09-27/plugin/tl-design-refresh.zip b/gigs/thomaslawson.com/work-fia-edits/refresh-2026-09-27/plugin/tl-design-refresh.zip index 496f6b5641f4636a2767bf20a10d866682541adf..7969b2d317753ad907e5ec4a5bbb5ee63c96f49a 100644 GIT binary patch delta 7004 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 QasbJgNh`8BNrQ9%0D4zr(*OVf delta 6795 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 .elementor-widget-container { margin-top: 0.6rem !important; @@ -240,7 +258,7 @@ body.tl-refresh:not(#tl) .elementor-widget-image a:hover img { opacity: 0.88; } * 4. Header + footer. * ------------------------------------------------------------------ */ body.tl-refresh:not(#tl) :is(.main-header-menu .menu-link, .ast-builder-menu .menu-link) { - font-size: 1rem !important; + font-size: var(--tl-fs-label) !important; font-weight: 400 !important; letter-spacing: -0.005em !important; color: var(--tl-ink) !important; @@ -251,7 +269,7 @@ body.tl-refresh:not(#tl) .current-menu-item > .menu-link { } body.tl-refresh:not(#tl) .site-footer, body.tl-refresh:not(#tl) .site-footer * { - font-size: 0.8125rem !important; + font-size: var(--tl-fs-small) !important; line-height: 1.55 !important; font-weight: 400 !important; color: var(--tl-muted) !important; @@ -287,7 +305,7 @@ body.tl-refresh:not(#tl) .tl-archive-doorway .tl-doorway-sign { box-sizing: border-box !important; color: var(--tl-ink) !important; text-align: left !important; - font-size: clamp(2rem, 1.35rem + 2.2vw, 2.9rem) !important; + font-size: var(--tl-fs-display) !important; font-weight: 500 !important; line-height: 1.08 !important; letter-spacing: -0.028em !important; @@ -380,7 +398,7 @@ body.tl-refresh:not(#tl).page-id-140 .elementor-element-71fa6aa .elementor-widge /* In the Studio overview: period labels sit on a hairline, tabular. */ body.tl-refresh:not(#tl).page-id-140 .elementor-top-section:not(.elementor-element-71fa6aa) .elementor-heading-title { - font-size: 1rem !important; + font-size: var(--tl-fs-label) !important; font-weight: 500 !important; letter-spacing: 0 !important; font-variant-numeric: tabular-nums; @@ -413,7 +431,7 @@ body.tl-refresh:not(#tl).tl-studio-detail [data-elementor-type="wp-page"] > .ele padding: 0 !important; } body.tl-refresh:not(#tl).tl-studio-detail [data-elementor-type="wp-page"] > .elementor-top-section:first-child .elementor-heading-title { - font-size: clamp(2rem, 1.35rem + 2.2vw, 2.9rem) !important; + font-size: var(--tl-fs-display) !important; font-weight: 500 !important; line-height: 1.08 !important; letter-spacing: -0.028em !important; @@ -435,7 +453,7 @@ body.tl-refresh:not(#tl) .tl-eyebrow { flex: 0 0 100%; margin-bottom: 0.5rem; font-family: var(--tl-sans); - font-size: 0.8125rem; + font-size: var(--tl-fs-small); font-weight: 500; letter-spacing: 0; color: var(--tl-muted) !important; @@ -447,14 +465,14 @@ body.tl-refresh:not(#tl) .tl-eyebrow:hover { color: var(--tl-accent) !important; * 7. Home — the menu speaks the same language. * ------------------------------------------------------------------ */ body.tl-refresh:not(#tl).page-id-10 .tl-home-titles .elementor-heading-title { - font-size: clamp(1.3rem, 1.05rem + 0.8vw, 1.7rem) !important; + font-size: var(--tl-fs-title) !important; font-weight: 500 !important; letter-spacing: -0.02em !important; line-height: 1.15 !important; } body.tl-refresh:not(#tl).page-id-10 .tl-home-titles .elementor-heading-title::after { font-family: var(--tl-sans) !important; - font-size: 0.8125rem !important; + font-size: var(--tl-fs-small) !important; font-weight: 400 !important; letter-spacing: 0 !important; color: var(--tl-muted) !important; @@ -470,7 +488,7 @@ body.tl-refresh:not(#tl).page-id-10 .tl-home-tile-link:hover { opacity: 1 !impor * ------------------------------------------------------------------ */ body.tl-refresh:not(#tl).page-id-1527 [data-elementor-type="wp-page"] :is(a, .elementor-heading-title) { font-family: var(--tl-sans) !important; - font-size: clamp(1.45rem, 1.15rem + 1vw, 1.85rem) !important; + font-size: var(--tl-fs-title) !important; font-weight: 500 !important; letter-spacing: -0.018em !important; } diff --git a/gigs/thomaslawson.com/work-fia-edits/refresh-2026-09-27/refresh.css b/gigs/thomaslawson.com/work-fia-edits/refresh-2026-09-27/refresh.css index e23b6c057a..a94778bb7b 100644 --- a/gigs/thomaslawson.com/work-fia-edits/refresh-2026-09-27/refresh.css +++ b/gigs/thomaslawson.com/work-fia-edits/refresh-2026-09-27/refresh.css @@ -34,6 +34,14 @@ body.tl-refresh:not(#tl) { --tl-wide: 68rem; --tl-gutter: clamp(1.25rem, 5vw, 3rem); + /* The type scale, in px: Astra sets html to 15px, so rem ran ~6% small. */ + --tl-fs-small: 14px; /* captions, years, eyebrow, footer */ + --tl-fs-label: 16px; /* labels, nav, period ranges */ + --tl-fs-body: clamp(18px, 17px + 0.25vw, 20px); /* Newsreader reading text */ + --tl-fs-subhead: clamp(19px, 17px + 0.45vw, 22px); + --tl-fs-title: clamp(24px, 20px + 0.9vw, 30px); + --tl-fs-display: clamp(34px, 26px + 1.6vw, 46px); + /* Retarget the polish plugin's own variables at the new faces. */ --tl-display-face: var(--tl-sans); --tl-body-face: var(--tl-serif); @@ -62,7 +70,7 @@ body.tl-refresh:not(#tl) :is(h1, h2, h3, h4, h5, h6, .elementor-heading-title, body.tl-refresh:not(#tl) :is(.elementor-widget-text-editor, .elementor-widget-text-editor :is(p, li, span, div, blockquote)) { font-family: var(--tl-serif) !important; font-optical-sizing: auto; - font-size: clamp(1.03rem, 0.98rem + 0.3vw, 1.14rem) !important; + font-size: var(--tl-fs-body) !important; font-weight: 400 !important; font-style: normal !important; line-height: 1.62 !important; @@ -100,37 +108,37 @@ body.tl-refresh:not(#tl) [data-tl-role] { color: var(--tl-ink) !important; } body.tl-refresh:not(#tl) [data-tl-role="display"] { - font-size: clamp(2rem, 1.35rem + 2.2vw, 2.9rem) !important; + font-size: var(--tl-fs-display) !important; font-weight: 500 !important; line-height: 1.08 !important; letter-spacing: -0.028em !important; } body.tl-refresh:not(#tl) [data-tl-role="title"] { - font-size: clamp(1.45rem, 1.15rem + 1vw, 1.85rem) !important; + font-size: var(--tl-fs-title) !important; font-weight: 500 !important; line-height: 1.18 !important; letter-spacing: -0.018em !important; } body.tl-refresh:not(#tl) [data-tl-role="subhead"] { - font-size: clamp(1.1rem, 1rem + 0.35vw, 1.25rem) !important; + font-size: var(--tl-fs-subhead) !important; font-weight: 500 !important; line-height: 1.3 !important; letter-spacing: -0.01em !important; } body.tl-refresh:not(#tl) [data-tl-role="label"] { - font-size: 0.95rem !important; + font-size: var(--tl-fs-label) !important; font-weight: 500 !important; line-height: 1.35 !important; letter-spacing: -0.004em !important; } body.tl-refresh:not(#tl) [data-tl-role="caption"] { - font-size: 0.8125rem !important; + font-size: var(--tl-fs-small) !important; font-weight: 500 !important; line-height: 1.4 !important; letter-spacing: 0 !important; } body.tl-refresh:not(#tl) [data-tl-role="meta"] { - font-size: 0.8125rem !important; + font-size: var(--tl-fs-small) !important; font-weight: 400 !important; line-height: 1.4 !important; letter-spacing: 0 !important; @@ -142,6 +150,16 @@ body.tl-refresh:not(#tl) [data-tl-role="caption"] + *, body.tl-refresh:not(#tl) .elementor-widget-heading:has([data-tl-role="caption"]) + .elementor-widget-heading:has([data-tl-role="meta"]) { margin-top: 0.1rem !important; } +/* Captions from outside the heading widgets share the same floor. */ +body.tl-refresh:not(#tl) :is(figcaption, .wp-caption-text, .elementor-image-box-description, .tl-lightbox-caption) { + font-size: var(--tl-fs-small) !important; + line-height: 1.45 !important; +} +body.tl-refresh:not(#tl) :is(.tl-context-venue-year, .tl-shelf-more) { + font-size: var(--tl-fs-small) !important; +} +body.tl-refresh:not(#tl) .tl-context-venue-year { color: var(--tl-muted) !important; } +body.tl-refresh:not(#tl) .elementor-heading-title span { font-size: inherit !important; } /* A caption belongs to the image above it. */ body.tl-refresh:not(#tl) .elementor-widget-image + .elementor-widget-heading:has(:is([data-tl-role="caption"], [data-tl-role="meta"])) > .elementor-widget-container { margin-top: 0.6rem !important; @@ -201,7 +219,7 @@ body.tl-refresh:not(#tl) .elementor-widget-image a:hover img { opacity: 0.88; } * 4. Header + footer. * ------------------------------------------------------------------ */ body.tl-refresh:not(#tl) :is(.main-header-menu .menu-link, .ast-builder-menu .menu-link) { - font-size: 1rem !important; + font-size: var(--tl-fs-label) !important; font-weight: 400 !important; letter-spacing: -0.005em !important; color: var(--tl-ink) !important; @@ -212,7 +230,7 @@ body.tl-refresh:not(#tl) .current-menu-item > .menu-link { } body.tl-refresh:not(#tl) .site-footer, body.tl-refresh:not(#tl) .site-footer * { - font-size: 0.8125rem !important; + font-size: var(--tl-fs-small) !important; line-height: 1.55 !important; font-weight: 400 !important; color: var(--tl-muted) !important; @@ -248,7 +266,7 @@ body.tl-refresh:not(#tl) .tl-archive-doorway .tl-doorway-sign { box-sizing: border-box !important; color: var(--tl-ink) !important; text-align: left !important; - font-size: clamp(2rem, 1.35rem + 2.2vw, 2.9rem) !important; + font-size: var(--tl-fs-display) !important; font-weight: 500 !important; line-height: 1.08 !important; letter-spacing: -0.028em !important; @@ -341,7 +359,7 @@ body.tl-refresh:not(#tl).page-id-140 .elementor-element-71fa6aa .elementor-widge /* In the Studio overview: period labels sit on a hairline, tabular. */ body.tl-refresh:not(#tl).page-id-140 .elementor-top-section:not(.elementor-element-71fa6aa) .elementor-heading-title { - font-size: 1rem !important; + font-size: var(--tl-fs-label) !important; font-weight: 500 !important; letter-spacing: 0 !important; font-variant-numeric: tabular-nums; @@ -374,7 +392,7 @@ body.tl-refresh:not(#tl).tl-studio-detail [data-elementor-type="wp-page"] > .ele padding: 0 !important; } body.tl-refresh:not(#tl).tl-studio-detail [data-elementor-type="wp-page"] > .elementor-top-section:first-child .elementor-heading-title { - font-size: clamp(2rem, 1.35rem + 2.2vw, 2.9rem) !important; + font-size: var(--tl-fs-display) !important; font-weight: 500 !important; line-height: 1.08 !important; letter-spacing: -0.028em !important; @@ -396,7 +414,7 @@ body.tl-refresh:not(#tl) .tl-eyebrow { flex: 0 0 100%; margin-bottom: 0.5rem; font-family: var(--tl-sans); - font-size: 0.8125rem; + font-size: var(--tl-fs-small); font-weight: 500; letter-spacing: 0; color: var(--tl-muted) !important; @@ -408,14 +426,14 @@ body.tl-refresh:not(#tl) .tl-eyebrow:hover { color: var(--tl-accent) !important; * 7. Home — the menu speaks the same language. * ------------------------------------------------------------------ */ body.tl-refresh:not(#tl).page-id-10 .tl-home-titles .elementor-heading-title { - font-size: clamp(1.3rem, 1.05rem + 0.8vw, 1.7rem) !important; + font-size: var(--tl-fs-title) !important; font-weight: 500 !important; letter-spacing: -0.02em !important; line-height: 1.15 !important; } body.tl-refresh:not(#tl).page-id-10 .tl-home-titles .elementor-heading-title::after { font-family: var(--tl-sans) !important; - font-size: 0.8125rem !important; + font-size: var(--tl-fs-small) !important; font-weight: 400 !important; letter-spacing: 0 !important; color: var(--tl-muted) !important; @@ -431,7 +449,7 @@ body.tl-refresh:not(#tl).page-id-10 .tl-home-tile-link:hover { opacity: 1 !impor * ------------------------------------------------------------------ */ body.tl-refresh:not(#tl).page-id-1527 [data-elementor-type="wp-page"] :is(a, .elementor-heading-title) { font-family: var(--tl-sans) !important; - font-size: clamp(1.45rem, 1.15rem + 1vw, 1.85rem) !important; + font-size: var(--tl-fs-title) !important; font-weight: 500 !important; letter-spacing: -0.018em !important; } diff --git a/gigs/thomaslawson.com/work-fia-edits/refresh-2026-09-27/tools/tiny.mjs b/gigs/thomaslawson.com/work-fia-edits/refresh-2026-09-27/tools/tiny.mjs new file mode 100644 index 0000000000..331ebad93d --- /dev/null +++ b/gigs/thomaslawson.com/work-fia-edits/refresh-2026-09-27/tools/tiny.mjs @@ -0,0 +1,25 @@ +// tiny.mjs — list visible text under 14px on each page, with v-next CSS injected. +import { readFile } from "node:fs/promises"; +import puppeteer from "puppeteer-core"; +const R = "/Users/jas/aesthetic-computer/gigs/thomaslawson.com/work-fia-edits/refresh-2026-09-27"; +const inj = await readFile(R + "/inject.js", "utf8"); +const pages = JSON.parse(await readFile(R + "/pages.json", "utf8")); +const b = await puppeteer.launch({ executablePath: "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome", headless: true, protocolTimeout: 120000 }); +const agg = {}; +const vp = +(process.env.W || 1440); +await Promise.all([0, 1].map(async (w) => { + for (let i = w; i < pages.length; i += 2) { + const pg = pages[i]; + const p = await b.newPage(); await p.setViewport({ width: vp, height: 900 }); + if (!process.env.LIVE) await p.evaluateOnNewDocument((inj) => document.addEventListener("DOMContentLoaded", () => (0, eval)(inj)), inj); + try { await p.goto(pg.link, { waitUntil: "networkidle2", timeout: 60000 }); } catch {} + const r = await p.evaluate(() => { + const out = {}; const tw = document.createTreeWalker(document.body, NodeFilter.SHOW_TEXT); + while (tw.nextNode()) { const t = tw.currentNode.textContent.trim(); if (!t) continue; const el = tw.currentNode.parentElement; const rc = el.getBoundingClientRect(); if (!rc.width) continue; const cs = getComputedStyle(el); if (cs.visibility === "hidden" || cs.display === "none") continue; const px = parseFloat(cs.fontSize); if (px < 13.9 && !el.closest("#wpadminbar")) { const k = Math.round(px * 10) / 10 + "px " + cs.fontFamily.split(",")[0].replace(/"/g, "") + " <" + el.tagName.toLowerCase() + "." + (el.className || "").toString().split(" ")[0] + ">"; out[k] = out[k] || t.slice(0, 40); } } + return out; }); + for (const [k, v] of Object.entries(r)) (agg[k] ||= { sample: v, pages: [] }).pages.push(pg.slug); + await p.close(); + } +})); +await b.close(); +for (const [k, v] of Object.entries(agg).sort((a, b) => b[1].pages.length - a[1].pages.length)) console.log(v.pages.length, k, "::", v.sample, "::", v.pages.slice(0, 3).join(","));