Files
leecat.art-site/feed.xml
T

1244 lines
113 KiB
XML
Raw Normal View History

2026-05-15 09:20:43 -07:00
<?xml version="1.0" encoding="utf-8"?>
2026-07-29 21:57:06 +00:00
<?xml-stylesheet href="/feed.xsl" type="text/xsl"?>
2026-05-15 09:20:43 -07:00
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
<title>hello hello</title>
<subtitle>Lee Cattarin... on the internet!</subtitle>
<link href="https://leecat.art/feed.xml" rel="self" />
<link href="https://leecat.art/" />
2026-09-10 16:59:10 +00:00
<updated>2026-09-09T00:00:00Z</updated>
2026-05-15 09:20:43 -07:00
<id>https://leecat.art/</id>
<author>
<name>Lee Cattarin</name>
<email>lee.cattarin@gmail.com</email>
</author>
2026-09-10 16:59:10 +00:00
<entry>
<title>houndstooth dishtowels</title>
<link href="https://leecat.art/houndstooth-dishtowels/" />
<updated>2026-09-09T00:00:00Z</updated>
<id>https://leecat.art/houndstooth-dishtowels/</id>
<content type="html">&lt;p&gt;Yarn: &lt;a href=&quot;https://woolery.com/products/circulo-anne-weaving-yarn&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;Circulo Anne Weaving Yarn&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;3 towels. Woven area roughly 12&amp;quot;x24&amp;quot;. Hemstitched.&lt;/p&gt;
</content>
</entry>
2026-09-08 23:06:13 +00:00
<entry>
<title>mouse coin purse</title>
<link href="https://leecat.art/mouse-coin-purse/" />
<updated>2026-09-08T00:00:00Z</updated>
<id>https://leecat.art/mouse-coin-purse/</id>
<content type="html">&lt;p&gt;Made from &lt;a href=&quot;https://www.etsy.com/listing/900951877/pdf-pattern-mouse-coin-purse-leather-diy&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;a pattern by AnnaleatherHK on Etsy&lt;/a&gt;.&lt;/p&gt;
</content>
</entry>
2026-09-08 17:26:33 +00:00
<entry>
<title>framer accessibility</title>
<link href="https://leecat.art/framer-accessibility/" />
<updated>2026-09-08T00:00:00Z</updated>
<id>https://leecat.art/framer-accessibility/</id>
<content type="html">&lt;p&gt;This is a work in progress post originally written for a colleague beginning to explore &lt;a href=&quot;https://framer.com&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;Framer&lt;/a&gt;, a visual site designer with CMS. It walks through some major web accessibility topics, first generally and then as they relate to Framer, with links to relevant resources.&lt;/p&gt;
&lt;h2 id=&quot;accessible-from-the-beginning&quot;&gt;Accessible from the beginning&lt;/h2&gt;
&lt;p&gt;Accessibility &lt;strong&gt;must&lt;/strong&gt; be built from the start of a project. Retrofitting a project to be accessible requires far more effort than designing for accessibility from the start. Building with accessibility in mind prevents time consuming and expensive reworks.&lt;/p&gt;
&lt;h2 id=&quot;definitions&quot;&gt;Definitions&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Assistive technology (AT):&lt;/strong&gt; &amp;quot;technology used by individuals with (varying levels and kinds of) disabilities in order to perform functions that might otherwise be difficult or impossible. It is an umbrella term for a wide variery of tools, including tools that enable access to information on the Web. ... Keyboards, screen readers, braille displays, voice recognition software, switch controls, and screen magnifiers are examples of high-tech assistive technology. Operating system and browser accessibility display modes (such as dark mode, and Windows High Contrast Mode) are also a form of assistive technology.&amp;quot; (Sara Souiedan, &lt;a href=&quot;https://practical-accessibility.today&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;Practical Accessibility&lt;/a&gt; - content gated behind paid course)
&lt;ul&gt;
2026-09-12 17:51:15 +00:00
&lt;li&gt;See &lt;a href=&quot;https://tetralogical.com/blog/2021/12/24/browsing-with-assistive-technology-videos/&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;Browsing with Assistive Technology&lt;/a&gt; for an overview of some common methods/uses of AT.&lt;/li&gt;
2026-09-08 17:26:33 +00:00
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Screen readers (SR):&lt;/strong&gt; A type of AT aimed at Blind/low vision users which reads aloud page content. Notably, SRs do not simply read page content in order; they have complex shortcuts which allow users to summarize links on a page, skip headline-by-headline, move to landmark sections, and more.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Web Content Accessibility Guidelines (WCAG):&lt;/strong&gt; &amp;quot;the standard that defines how to make Web content more accessible to people with disabilities. It defines a baseline set of guidelines that digital content must meet in order to provide minimum levels of accessibility.&amp;quot; (Sara Souiedan, Practical Accessibility again)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;semantic-html&quot;&gt;Semantic HTML&lt;/h2&gt;
2026-09-15 01:17:56 +00:00
&lt;p&gt;Most HTML elements are semantic, that is, they convey meaning. Labeling something an &lt;code&gt;&amp;lt;h1&amp;gt;&lt;/code&gt; doesn&#39;t just style it like a header; it also means that AT can understand it to be a header (this also helps with SEO - a lot of things that improve accessibility improve SEO as well). See the Mozilla docs for a &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Glossary/Semantics#semantic_elements&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;list of semantic HTML elements&lt;/a&gt;.&lt;/p&gt;
2026-09-08 17:26:33 +00:00
&lt;p&gt;Notably, &lt;code&gt;&amp;lt;div&amp;gt;&lt;/code&gt;s and &lt;code&gt;&amp;lt;span&amp;gt;&lt;/code&gt;s are not semantic and convey no meaning. They are used for styling alone.&lt;/p&gt;
&lt;h3 id=&quot;semantic-html-in-framer&quot;&gt;Semantic HTML in Framer&lt;/h3&gt;
&lt;p&gt;Semantic HTML elements can be applied to any Framer element using the &amp;quot;Accessibility&amp;quot; section in the right-hand sidebar. Read about &lt;a href=&quot;https://www.framer.com/help/articles/semantic-tags-navigation-footer/&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;using semantic tags for navigation and footers&lt;/a&gt; - this applies to far more than the two elements mentioned.&lt;/p&gt;
2026-09-17 19:04:04 +00:00
&lt;p&gt;While Framer allows you to set the &lt;code&gt;&amp;lt;span&amp;gt;&lt;/code&gt; tag on elements, avoid this unless you are &lt;em&gt;only&lt;/em&gt; utilizing it for styling.&lt;/p&gt;
2026-09-08 17:26:33 +00:00
&lt;h2 id=&quot;reading-order&quot;&gt;Reading order&lt;/h2&gt;
&lt;p&gt;The order of elements in an HTML document is referred to as the &lt;strong&gt;reading order&lt;/strong&gt;. While visual styling can change the flow of elements in a page, SRs will follow reading order. It&#39;s important for your reading order to match the visual flow of elements on the page for two reasons:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Those elements are presumably in visual order for a reason! A different reading order may make them confusing or totally unfollowable.&lt;/li&gt;
&lt;li&gt;Low vision or partially sighted users who rely on both screen visuals and SRs will suffer if the visual content does not match the audio content.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;reading-order-in-framer&quot;&gt;Reading order in Framer&lt;/h3&gt;
&lt;p&gt;Reading order is maintained in Framer in two ways:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;When layouts are applied effectively via the &amp;quot;Layout&amp;quot; section in the right-hand sidebar, the visual order of the elements guides the reading order.&lt;/li&gt;
&lt;li&gt;In the absence of the above, the order of the elements in the left-hand sidebar determines reading order. Notably, reading order seems to go from bottom to top in this case rather than the intuitive top to bottom.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;keyboard-navigation&quot;&gt;Keyboard navigation&lt;/h2&gt;
&lt;p&gt;Following from reading order, we reach the concept of keyboard navigation. The ability to navigate the web without a mouse is core to several forms of AT as well as improving quality of life for savvy internet users - and anyone filling out web forms. Using the &lt;code&gt;TAB&lt;/code&gt; key to move through a webpage navigates through the reading order, landing on every interactable element it finds. What is an interactable element? There are four kinds:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Links&lt;/strong&gt; bring a user to a new page (or sometimes a different section of the same page)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Buttons&lt;/strong&gt; perform an action without changing pages&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Form controls&lt;/strong&gt; allow user input&lt;/li&gt;
&lt;li&gt;Any element with the &lt;strong&gt;&lt;code&gt;tabindex&lt;/code&gt;&lt;/strong&gt; attribute set can be tabbed to. Notably, if tabindex is set, interacting with the element should always do something. Use tabindex &lt;em&gt;extremely&lt;/em&gt; sparingly and with intention.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;keyboard-navigation-in-framer&quot;&gt;Keyboard navigation in Framer&lt;/h3&gt;
&lt;p&gt;Links, buttons, and form controls are tabbable by default. When tagged as the correct HTML element, they will function as expected.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.framer.com/help/articles/tab-order-customization/&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;Framer supports adding the tabindex attribute&lt;/a&gt;. If you &lt;em&gt;must&lt;/em&gt; do this for some reason, make sure to set its value to 0 - Framer defaults to 1. 0 will maintain the reading order established by layout and the left-hand sidebar; 1 will place the tabbable element first in the tabbing order.&lt;/p&gt;
2026-09-18 00:58:08 +00:00
&lt;p&gt;I really recommend avoiding complex keyboard navigation like dropdowns (really not that complex, but... basically anything that doesn&#39;t just use the tab key suffers). They seem pretty impossible to remediate. If possible, it requires &lt;em&gt;extensive&lt;/em&gt; custom code.&lt;/p&gt;
2026-09-08 17:26:33 +00:00
&lt;h2 id=&quot;keyboard-focus&quot;&gt;Keyboard focus&lt;/h2&gt;
&lt;p&gt;When navigating with a keyboard, there should always be visual indication on the screen of where we have navigated to. This indication is referred to as &lt;strong&gt;focus&lt;/strong&gt; or the &lt;strong&gt;focus indicator&lt;/strong&gt;. Browsers have default focus stylings, usually an outline around the element, but focus can - and frequently should - be customized with CSS. Default focus outlines may not have very high contrast against the elements in your website, and, unless you are testing with many browsers, you can&#39;t easily confirm that all default focus indication works well with your color scheme. Additionally, default focus may clash with your site and impact how elements like your forms look in use.&lt;/p&gt;
&lt;h3 id=&quot;keyboard-focus-in-framer&quot;&gt;Keyboard focus in Framer&lt;/h3&gt;
&lt;p&gt;Framer does not currently allow for customizing keyboard focus in the editor. It must be done using &lt;a href=&quot;https://www.framer.com/help/articles/how-to-add-custom-code/&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;custom CSS&lt;/a&gt;.&lt;/p&gt;
2026-09-17 19:04:04 +00:00
&lt;p&gt;In my tests, it was very possible to clip out the browser default focus outline with certain padding settings. Ensure that at least 3px of padding surrounds tabbable elements. Make sure to review your site by tabbing through the page(s), and ensure that a full outline surrounds all interactable elements.&lt;/p&gt;
2026-09-08 17:26:33 +00:00
&lt;h2 id=&quot;skip-links&quot;&gt;Skip links&lt;/h2&gt;
&lt;p&gt;Skip links allow keyboard users to bypass large repeated blocks of content (such as a top nav). Without a skip link, a keyboard user will not stay long on a site - after moving to a new page, they may realize they have to tab through the entire nav again and leave.&lt;/p&gt;
&lt;p&gt;Skip links are generally invisible to mouse users, and only appear when tabbing around a page. To see an example, open &lt;a href=&quot;https://webaim.org/&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;WebAIM (Web Accessibility in Mind)&lt;/a&gt; and hit the &lt;code&gt;TAB&lt;/code&gt; key. Notice the red box that appears in the upper left that reads &amp;quot;skip to main content.&amp;quot;&lt;/p&gt;
&lt;h3 id=&quot;skip-links-in-framer&quot;&gt;Skip links in Framer&lt;/h3&gt;
&lt;p&gt;Skip links in Framer require custom code, both React and CSS.&lt;/p&gt;
&lt;h2 id=&quot;text-alternatives&quot;&gt;Text alternatives&lt;/h2&gt;
&lt;p&gt;Text alternatives - alternative text, captioning, audio descriptions, etc. - are the most commonly thought of form of web accessibility. You likely need no further explanation of what they are and why they matter, but they can be rather daunting to write. I recommend reading &lt;a href=&quot;https://adrianroselli.com/2024/05/my-approach-to-alt-text.html&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;Adrian Roselli&#39;s approach to writing alt text&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&quot;text-alternatives-in-framer&quot;&gt;Text alternatives in Framer&lt;/h3&gt;
&lt;p&gt;Text alternatives can be easily set by double clicking on the media item in question to open the editing dialog.&lt;/p&gt;
&lt;h2 id=&quot;color&quot;&gt;Color&lt;/h2&gt;
&lt;p&gt;There are a couple areas to consider when it comes to color:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Light and dark modes&lt;/strong&gt; are both accessibility needs, and a site that only offers one limits access of some potential users.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Color contrast&lt;/strong&gt; will improve users&#39; abilities to view and read your site. WebAIM covers &lt;a href=&quot;https://webaim.org/articles/contrast/&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;color contrast as it relates to WCAG&lt;/a&gt;. While you can use &lt;a href=&quot;https://webaim.org/resources/contrastchecker/&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;WebAIM&#39;s contrast checker&lt;/a&gt;, I recommend finding a more fully-featured color design tool that incorporates contrast checking, luminance comparison, color vision simulation, and more. My personal tool of choice is &lt;a href=&quot;https://atmos.style/&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;Atmos&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Ensuring that &lt;strong&gt;color alone is not used to communicate meaning&lt;/strong&gt; helps users with various color deficiencies or certain AT users access your content and understand what is going on. For example, a form that highlights inputs in red when they are improperly filled in should &lt;em&gt;also&lt;/em&gt; provide error messages.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;color-in-framer&quot;&gt;Color in Framer&lt;/h3&gt;
&lt;p&gt;Regarding item 1, Framer supports &lt;a href=&quot;https://www.framer.com/academy/lessons/light-dark-mode&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;light and dark modes for your color styles&lt;/a&gt;. Items 2 &amp;amp; 3 are handled independently of Framer.&lt;/p&gt;
&lt;h2 id=&quot;responsive-design&quot;&gt;Responsive design&lt;/h2&gt;
&lt;p&gt;A huge percentage of web browsing comes from mobile devices or tablets - and that&#39;s not to mention ultrawide monitors. Our websites &lt;strong&gt;must&lt;/strong&gt; take this into account.&lt;/p&gt;
&lt;h3 id=&quot;responsive-design-in-framer&quot;&gt;Responsive design in Framer&lt;/h3&gt;
&lt;p&gt;Read about &lt;a href=&quot;https://www.framer.com/blog/design-responsive-websites/&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;how to design responsive websites in Framer&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&quot;forms&quot;&gt;Forms&lt;/h2&gt;
&lt;p&gt;Accessible forms can be &lt;em&gt;hard&lt;/em&gt;. They bring in challenges relating to labeling, validation, reading order, and color design.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Labeling:&lt;/strong&gt; all form controls should have associated labels. Note that placeholder text does not constitute a label! Best practice is that labels be visible, but in some cases (for example a search bar which can be widely visually understood via placeholder text and a magnifying glass icon) you may want an invisible label. &lt;a href=&quot;https://www.w3.org/WAI/tutorials/forms/labels/#hiding-label-text&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;Invisible labels can be achieved in several ways&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Validation:&lt;/strong&gt; thankfully, form control attributes can control validation for many common scenarios such as email, phone number, etc. Its also possible to control whether an input is required.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Reading order:&lt;/strong&gt; its important to ensure that tabbing through your form follows the same order as the visual items.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Color:&lt;/strong&gt; as discussed earlier, ensure that errors are not communicated solely by color!&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;forms-in-framer&quot;&gt;Forms in Framer&lt;/h3&gt;
&lt;ol&gt;
2026-09-15 01:17:56 +00:00
&lt;li&gt;&lt;strong&gt;Labeling:&lt;/strong&gt; follow the pattern that Framer uses in its basic form for labeling. This will nest the form control inside the label.
2026-09-08 17:26:33 +00:00
&lt;ul&gt;
&lt;li&gt;If you want an invisible label, you will need to write custom CSS.&lt;/li&gt;
&lt;/ul&gt;
2026-09-15 01:17:56 +00:00
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Validation:&lt;/strong&gt; In the &amp;quot;Input&amp;quot; section of the right-hand sidebar, there is a dropdown for input type. There is also a toggle for whether the input is required.
2026-09-08 17:26:33 +00:00
&lt;ul&gt;
&lt;li&gt;Note that setting an input to required will not add an asterisk or any other similar visual pattern to the label - doing this yourself is highly recommended. It also will not provide visual feedback to the user until clicking the &amp;quot;Submit&amp;quot; button, at which point an error message comes up - this can be a painful pattern for longer forms. Further visual feedback requires custom CSS.&lt;/li&gt;
&lt;/ul&gt;
2026-09-15 01:17:56 +00:00
&lt;/li&gt;
2026-09-08 17:26:33 +00:00
&lt;li&gt;&lt;strong&gt;Reading order:&lt;/strong&gt; follow the guidance for reading order discussed earlier.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Color:&lt;/strong&gt; since visual feedback for required feeds does not exist by default, this only becomes a concern if you write custom CSS.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;other-considerations&quot;&gt;Other considerations&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Links should have &lt;strong&gt;anchor text&lt;/strong&gt; that accurately represents what they point to (review this document for examples - note how links encapsulate the content they lead to).
&lt;ul&gt;
&lt;li&gt;Counterexample: a newspaper page with many &amp;quot;continue reading&amp;quot; links. In this case, you would use the title or aria-label attributes to give a better programmatic name to the link that isn&#39;t visible to sighted users. Framer doesn&#39;t support the title attribute, so use &lt;a href=&quot;https://www.framer.com/help/articles/improving-accessibility-with-aria-labels/&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;aria-label&lt;/a&gt; (found under &amp;quot;Accessibility&amp;quot; in the right-hand sidebar).&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Links should always be &lt;strong&gt;visibly indicated as links&lt;/strong&gt; - underlines are traditional, and traditional is understandable by users. If you choose otherwise, ensure you aren&#39;t &lt;a href=&quot;https://leecat.art/framer-accessibility/#color&quot;&gt;distinguishing only by color&lt;/a&gt;!
&lt;ul&gt;
&lt;li&gt;If your links are underlined, avoid underlining other text elements to avoid confusion.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Some users need &lt;strong&gt;reduced or removed animations&lt;/strong&gt;. There is a setting in Framer to &lt;a href=&quot;https://www.framer.com/help/articles/reduced-motion-settings/&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;allow reduced motion support&lt;/a&gt;. It&#39;s turned off by default.&lt;/li&gt;
&lt;/ul&gt;
</content>
</entry>
2026-08-21 00:13:19 +00:00
<entry>
<title>pink, lime, and grey shawl</title>
<link href="https://leecat.art/pink-lime-and-grey-shawl/" />
<updated>2026-08-20T00:00:00Z</updated>
<id>https://leecat.art/pink-lime-and-grey-shawl/</id>
<content type="html">&lt;p&gt;Yarn: &lt;a href=&quot;https://woolery.com/products/gist-duet-cotton-linen-weaving-yarn&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;Gist Duet Cotton/Linen Weaving Yarn&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;About 2&#39; wide and 5&#39; long including fringe.&lt;/p&gt;
</content>
</entry>
2026-08-06 18:38:23 +00:00
<entry>
<title>visual site builders and accessibility</title>
<link href="https://leecat.art/visual-site-builders-and-accessibility/" />
<updated>2026-08-05T00:00:00Z</updated>
<id>https://leecat.art/visual-site-builders-and-accessibility/</id>
<content type="html">&lt;p&gt;Recently, I &lt;a href=&quot;https://flipping.rocks/@inherentlee/117037989967706516&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;asked on the Fediverse&lt;/a&gt; about visual/drag-and-drop website builders and got a wealth of answers.&lt;/p&gt;
&lt;p&gt;I want to evaluate based on some accessibility factors:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Semantic HTML:&lt;/strong&gt; how well does the builder adhere to properly formed semantic HTML?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Keyboard navigation:&lt;/strong&gt; is keyboard focus visible? Can it be customized? (I was going to review skip links, but I&#39;m a half dozen sites in and none have supported them thus far, at least not without entirely custom code)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Reading order:&lt;/strong&gt; is reading order automatically correct? If not, what does the user have to do to ensure correctness?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Text alternatives:&lt;/strong&gt; is there support for alt text?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Color:&lt;/strong&gt; does the builder support light and dark modes? (Note that I am looking for builders for those with no HTML/CSS experience, and &amp;quot;you can customize with CSS&amp;quot; is not acceptable)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Other accessibility concerns:&lt;/strong&gt; anything else of note?&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;I will score &lt;strong&gt;1&lt;/strong&gt; (bad), &lt;strong&gt;2&lt;/strong&gt; (mixed), or &lt;strong&gt;3&lt;/strong&gt; (good). If there is nothing to note for the &amp;quot;other&amp;quot; factor, I will score it as a 2. These scores &lt;strong&gt;will not be weighted&lt;/strong&gt; according to priorities, but purely summed for a final ranking.&lt;/p&gt;
&lt;p&gt;There are, of course, many more factors that could be evaluated, but I will be focusing on these high-level ones.&lt;/p&gt;
&lt;p&gt;Want to just see the final ranking? Pop down to the &lt;a href=&quot;https://leecat.art/visual-site-builders-and-accessibility/#summary&quot;&gt;summary&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&quot;blocs&quot;&gt;Blocs&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://blocsapp.com/&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;Blocs&lt;/a&gt; is a builder for MacOS, iPad, and iPhone. I had trouble getting a template loaded on my iPad, but I reviewed the Blocs website - built with Blocs, of course - for major issues. This is, I would assume, the shiniest version possible.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Factor&lt;/th&gt;
&lt;th&gt;Notes&lt;/th&gt;
&lt;th&gt;Score&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Semantic HTML&lt;/td&gt;
&lt;td&gt;Most major elements missing (no &lt;code&gt;&amp;lt;main&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;header&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;footer&amp;gt;&lt;/code&gt;; &lt;code&gt;&amp;lt;nav&amp;gt;&lt;/code&gt; present for the top nav but not bottom).&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Keyboard navigation&lt;/td&gt;
&lt;td&gt;Custom focus, missing in many areas on the Blocs site and turned off by default in the CSS - not sure if that is for this site or is the standard. The ability to potentially customize focus is interesting.&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Reading order&lt;/td&gt;
&lt;td&gt;Good! Block-based layout helps significantly here I would guess.&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Text alternatives&lt;/td&gt;
&lt;td&gt;Supported.&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Color&lt;/td&gt;
&lt;td&gt;Light and dark modes are possible - &lt;a href=&quot;https://help.blocsapp.com/knowledge-base/dark-theme/&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;Blocs dark mode documentation&lt;/a&gt;.&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Other&lt;/td&gt;
&lt;td&gt;Difficulty with iPad app.&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;12&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&quot;cowsites&quot;&gt;Cowsites&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://cowsites.net&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;Cowsites&lt;/a&gt; is a simple site editor with no drag-and-drop elements.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Factor&lt;/th&gt;
&lt;th&gt;Notes&lt;/th&gt;
&lt;th&gt;Score&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Semantic HTML&lt;/td&gt;
&lt;td&gt;Some oddities, like the &lt;code&gt;&amp;lt;header&amp;gt;&lt;/code&gt; being inside the &lt;code&gt;&amp;lt;main&amp;gt;&lt;/code&gt; while the &lt;code&gt;&amp;lt;footer&amp;gt;&lt;/code&gt; was not. Repeated &lt;code&gt;&amp;lt;h1&amp;gt;&lt;/code&gt;s.&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Keyboard navigation&lt;/td&gt;
&lt;td&gt;Browser default focus outlines. Some clipping of focus outlines.&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Reading order&lt;/td&gt;
&lt;td&gt;Good. Difficult to mess up when there are no drag-and-drop elements.&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Text alternatives&lt;/td&gt;
&lt;td&gt;Both image title and alt can be set in the editor, but don&#39;t appear to be surfaced in the actual site.&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Color&lt;/td&gt;
&lt;td&gt;Single color palette.&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Other&lt;/td&gt;
&lt;td&gt;No &lt;code&gt;lang&lt;/code&gt; attribute set. Gallery page links are three separate links to the same place, with lacking link text for links 2 and 3.&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;10&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&quot;figma-sites&quot;&gt;Figma Sites&lt;/h2&gt;
2026-09-08 16:15:34 +00:00
&lt;p&gt;&lt;a href=&quot;https://www.figma.com/sites/&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;Figma Sites&lt;/a&gt; allows you to turn a Figma design into a functioning website. It offers generative AI features. I tested two themes from Figma Community.&lt;/p&gt;
2026-08-06 18:38:23 +00:00
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Factor&lt;/th&gt;
&lt;th&gt;Notes&lt;/th&gt;
&lt;th&gt;Score&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Semantic HTML&lt;/td&gt;
&lt;td&gt;Depends &lt;em&gt;heavily&lt;/em&gt; on developer. One was &lt;code&gt;&amp;lt;div&amp;gt;&lt;/code&gt;s all the way down, one was built with actual semantic HTML using the &amp;quot;Accessibility&amp;quot; section of one of the sidebars (it allows you to specify the tag a design element corresponds to). Notably, not a lot or a total lack of links? One theme had some &lt;code&gt;&amp;lt;buttons&amp;gt;&lt;/code&gt;s, the other was littered with click events and &lt;code&gt;tabindex=&amp;quot;0&amp;quot;&lt;/code&gt;.&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Keyboard navigation&lt;/td&gt;
&lt;td&gt;Browser default focus outlines. One template &lt;em&gt;actually&lt;/em&gt; had a skip link!&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Reading order&lt;/td&gt;
&lt;td&gt;Not clear how order is determined. Potentially partially influenced by order of elements in the sidebar, but one theme tested did not adhere to that and the nav was the last in the reading order despite being top of the sidebar order. I can&#39;t publish on the starter plan, so I can&#39;t see how my own changes influence the site, but with a well-built theme the organization helps ensure that adding new elements puts them in a reasonable place in the sidebar order.&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Text alternatives&lt;/td&gt;
&lt;td&gt;Supported.&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Color&lt;/td&gt;
&lt;td&gt;Light and dark modes are possible - &lt;a href=&quot;https://help.figma.com/hc/en-us/articles/15343816063383-Modes-for-variables&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;Figma variable modes documentation&lt;/a&gt;.&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Other&lt;/td&gt;
&lt;td&gt;n/a&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;12&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
2026-09-06 16:03:27 +00:00
&lt;h2 id=&quot;framer&quot;&gt;Framer&lt;/h2&gt;
2026-09-08 16:15:34 +00:00
&lt;p&gt;&lt;a href=&quot;https://framer.com&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;Framer&lt;/a&gt; is a full-featured site designer with a built-in CMS. It offers generative AI features.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Factor&lt;/th&gt;
&lt;th&gt;Notes&lt;/th&gt;
&lt;th&gt;Score&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Semantic HTML&lt;/td&gt;
&lt;td&gt;Tags can be set per-element in the &amp;quot;Accessibility&amp;quot; section of the right-hand pane. Takes work, but is doable with care.&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Keyboard navigation&lt;/td&gt;
&lt;td&gt;Browser default focus outlines. Some weird clipping of focus outlines in the testing I did. Focus states configurable with custom CSS.&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Reading order&lt;/td&gt;
&lt;td&gt;With proper layout settings, reading order can be correct. Takes some effort and can&#39;t really just be stumbled into.&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Text alternatives&lt;/td&gt;
&lt;td&gt;Supported.&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Color&lt;/td&gt;
&lt;td&gt;Light and dark modes are possible.&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Other&lt;/td&gt;
&lt;td&gt;&amp;quot;Accessibility&amp;quot; section of the right-hand pane allows adding tab index. Defaults to 1 rather than 0.&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;13&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
2026-08-06 18:38:23 +00:00
&lt;h2 id=&quot;kiki&quot;&gt;Kiki&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://tomotama.com/kiki&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;Kiki&lt;/a&gt; is a simple site builder with no drag-and-drop elements. You can customize the CSS to your liking. I played with the demo site.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Factor&lt;/th&gt;
&lt;th&gt;Notes&lt;/th&gt;
&lt;th&gt;Score&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Semantic HTML&lt;/td&gt;
&lt;td&gt;It&#39;s &lt;code&gt;&amp;lt;div&amp;gt;&lt;/code&gt;s all the way down. No headers. &lt;code&gt;&amp;lt;p&amp;gt;&lt;/code&gt; tags used, at least.&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Keyboard navigation&lt;/td&gt;
&lt;td&gt;Browser default focus outlines. Significant focus outline clipping. Should be fixable with CSS... if we wanted to write CSS.&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Reading order&lt;/td&gt;
&lt;td&gt;Good. Difficult to mess up when there are no drag-and-drop elements.&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Text alternatives&lt;/td&gt;
&lt;td&gt;Seemingly not present, though there are no images in the demo site.&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Color&lt;/td&gt;
&lt;td&gt;Since you can write your own CSS, all color is customizable... if we wanted to write CSS.&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Other&lt;/td&gt;
&lt;td&gt;No &lt;code&gt;lang&lt;/code&gt; attribute set. No &lt;code&gt;title&lt;/code&gt;.&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;9&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&quot;mmm-page&quot;&gt;mmm.page&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://mmm.page/&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;mmm.page&lt;/a&gt; is a drag-and-drop builder. The preview doesn&#39;t show you a standalone page (it&#39;s a page that also has the mmm.page login/signup menu bar), so I looked at a few sites to get a sense for how it worked.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Factor&lt;/th&gt;
&lt;th&gt;Notes&lt;/th&gt;
&lt;th&gt;Score&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Semantic HTML&lt;/td&gt;
&lt;td&gt;While there is a &lt;code&gt;&amp;lt;main&amp;gt;&lt;/code&gt;, it&#39;s otherwise &lt;code&gt;&amp;lt;div&amp;gt;&lt;/code&gt;s all the way down. Generally no headers, though sites seem to have a visually hidden &lt;code&gt;&amp;lt;h1&amp;gt;&lt;/code&gt; that matches the site title. &lt;code&gt;&amp;lt;p&amp;gt;&lt;/code&gt; tags used, at least.&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Keyboard navigation&lt;/td&gt;
&lt;td&gt;Browser default focus outlines.&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Reading order&lt;/td&gt;
&lt;td&gt;Order of elements added determines reading order.&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Text alternatives&lt;/td&gt;
&lt;td&gt;Supported.&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Color&lt;/td&gt;
&lt;td&gt;Single color palette.&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Other&lt;/td&gt;
&lt;td&gt;No &lt;code&gt;lang&lt;/code&gt; attribute. Preponderance of empty &lt;code&gt;aria-label&lt;/code&gt;s.&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;9&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&quot;rapidweaver&quot;&gt;Rapidweaver&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://www.realmacsoftware.com/rapidweaver/&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;Rapidweaver&lt;/a&gt; is built exclusively for Mac. Ah, well.&lt;/p&gt;
&lt;h2 id=&quot;showit&quot;&gt;Showit&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://showit.com/&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;Showit&lt;/a&gt; is a drag-and-drop builder with a Wordpress backend for content management. I reviewed several different premade themes. Custom CSS is allowed.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Factor&lt;/th&gt;
&lt;th&gt;Notes&lt;/th&gt;
&lt;th&gt;Score&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Semantic HTML&lt;/td&gt;
&lt;td&gt;Depending on theme, &lt;em&gt;some&lt;/em&gt; landmark tags might be present. One theme reviewed enclosed each individual nav link in a &lt;code&gt;&amp;lt;nav&amp;gt;&lt;/code&gt; tag. Ew. Text can be set to be wrapped in a variety of tags, including bare &lt;code&gt;&amp;lt;div&amp;gt;&lt;/code&gt;s.&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Keyboard navigation&lt;/td&gt;
&lt;td&gt;The default CSS reset for Showit removes focus outlines on some elements (form fields and buttons, but not links). In one tested theme, further focus outlines were missing. Browser default focus outlines. Despite detailed ability to customize hover states in-editor, no ability to customize focus states.&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Reading order&lt;/td&gt;
&lt;td&gt;Determined by the user via reordering elements in the sidebar.&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Text alternatives&lt;/td&gt;
&lt;td&gt;Supported.&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Color&lt;/td&gt;
&lt;td&gt;Single color palette.&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Other&lt;/td&gt;
&lt;td&gt;n/a&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;10&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
2026-09-16 18:13:13 +00:00
&lt;h2 id=&quot;squarespace&quot;&gt;Squarespace&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://www.squarespace.com/&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;Squarespace&lt;/a&gt; is a visual site builder that starts you off with premade templates. It&#39;s somewhat block-based and limited in full customizability.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Factor&lt;/th&gt;
&lt;th&gt;Notes&lt;/th&gt;
&lt;th&gt;Score&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Semantic HTML&lt;/td&gt;
&lt;td&gt;Template tested uses somewhat reasonable semantic HTML. Choice of what is considered a heading is a bit curious&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Keyboard navigation&lt;/td&gt;
&lt;td&gt;Template tested has custom tab focus styling. Cannot be further edited, but custom that fits the theme is pretty standout. Skip link included in at least some templates.&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Reading order&lt;/td&gt;
&lt;td&gt;Imperfect and can&#39;t be edited by user. Block-based layout is a little too freeform to ensure proper reading order, so the user should be careful where they add things. Early testing indicates that reading order is determined by the &lt;em&gt;first&lt;/em&gt; place a block is placed, and is never re-assessed by the builder.&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Text alternatives&lt;/td&gt;
&lt;td&gt;Supported.&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Color&lt;/td&gt;
&lt;td&gt;Dark mode requires custom code or a plugin and seems &lt;em&gt;extremely&lt;/em&gt; painful to accomplish.&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Other&lt;/td&gt;
&lt;td&gt;This isn&#39;t an accessibility consideration, but &lt;em&gt;christ&lt;/em&gt; is Squarespace a pain to work with.&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;11&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
2026-08-06 18:38:23 +00:00
&lt;h2 id=&quot;startup&quot;&gt;Startup&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://designmodo.com/startup/&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;Startup&lt;/a&gt; is a block-based builder with pre-defined components and less freedom than some others on this list.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Factor&lt;/th&gt;
&lt;th&gt;Notes&lt;/th&gt;
&lt;th&gt;Score&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Semantic HTML&lt;/td&gt;
&lt;td&gt;Pretty good! They&#39;ve seemingly dropped &lt;code&gt;&amp;lt;main&amp;gt;&lt;/code&gt; and instead used an array of &lt;code&gt;&amp;lt;section&amp;gt;&lt;/code&gt;s, but components are automatically associated with &lt;code&gt;&amp;lt;header&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;nav&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;footer&amp;gt;&lt;/code&gt;, etc.&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Keyboard navigation&lt;/td&gt;
&lt;td&gt;Browser default focus outlines.&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Reading order&lt;/td&gt;
&lt;td&gt;Very orderly thanks to the strictness of the components - it&#39;s one component after another. Moving pieces around within the components maintains correct reading order.&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Text alternatives&lt;/td&gt;
&lt;td&gt;Supported.&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Color&lt;/td&gt;
&lt;td&gt;Per-component color palette.&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Other&lt;/td&gt;
&lt;td&gt;Forms are weak - unlabeled fields and buttons. For a built in search field, I&#39;d expect better. The components by default are &lt;em&gt;super&lt;/em&gt; animation-heavy and don&#39;t respect &lt;code&gt;prefers-reduced-motion&lt;/code&gt;.&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;13&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&quot;straw-page&quot;&gt;Straw.page&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://straw.page/&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;Straw.Page&lt;/a&gt; is a drag-and-drop builder that bills itself as mobile-friendly. I looked at one of the offered themes, intentionally choosing one that should have intuitive reading order (spoiler: didn&#39;t matter).&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Factor&lt;/th&gt;
&lt;th&gt;Notes&lt;/th&gt;
&lt;th&gt;Score&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Semantic HTML&lt;/td&gt;
&lt;td&gt;It&#39;s &lt;code&gt;&amp;lt;div&amp;gt;&lt;/code&gt;s all the way down. No headers. &lt;code&gt;&amp;lt;p&amp;gt;&lt;/code&gt; tags used, at least. Lists are just &lt;code&gt;&amp;lt;p&amp;gt;&lt;/code&gt;s.&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Keyboard navigation&lt;/td&gt;
&lt;td&gt;Focus actively turned off.&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Reading order&lt;/td&gt;
&lt;td&gt;Order of elements added determines reading order.&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Text alternatives&lt;/td&gt;
&lt;td&gt;Not possible.&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Color&lt;/td&gt;
&lt;td&gt;Single color palette.&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Other&lt;/td&gt;
&lt;td&gt;n/a&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;7&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&quot;univer-se&quot;&gt;Univer.se&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://univer.se/&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;Univer.se&lt;/a&gt; is a drag-and-drop builder with plenty of premade themes. I reviewed a premade theme to get started.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Factor&lt;/th&gt;
&lt;th&gt;Notes&lt;/th&gt;
&lt;th&gt;Score&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Semantic HTML&lt;/td&gt;
&lt;td&gt;It&#39;s &lt;code&gt;&amp;lt;div&amp;gt;&lt;/code&gt;s all the way down. Headers exist, but there are multiple &lt;code&gt;&amp;lt;h1&amp;gt;&lt;/code&gt;s and the headers skip levels. &lt;code&gt;&amp;lt;p&amp;gt;&lt;/code&gt; tags used, at least.&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Keyboard navigation&lt;/td&gt;
&lt;td&gt;Browser default focus outlines.&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Reading order&lt;/td&gt;
&lt;td&gt;Surprisingly intuitive! Univer.se uses a grid-based layout system and that seems to help programmatically determine reading order.&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Text alternatives&lt;/td&gt;
&lt;td&gt;Supported.&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Color&lt;/td&gt;
&lt;td&gt;Single color palette.&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Other&lt;/td&gt;
&lt;td&gt;No &lt;code&gt;lang&lt;/code&gt; attribute.&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;11&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&quot;webflow&quot;&gt;Webflow&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://webflow.com/&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;Webflow&lt;/a&gt; is a drag-and-drop builder. Currently bottom of my review list due to AI features.&lt;/p&gt;
&lt;h2 id=&quot;webnode&quot;&gt;Webnode&lt;/h2&gt;
2026-09-12 17:51:15 +00:00
&lt;p&gt;&lt;a href=&quot;https://https://www.webnode.com&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;Webnode&lt;/a&gt; is a drag-and-drop builder (with generative AI features). I reviewed a site built in it sent by the recommender as well as one of the premade themes.&lt;/p&gt;
2026-08-06 18:38:23 +00:00
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Factor&lt;/th&gt;
&lt;th&gt;Notes&lt;/th&gt;
&lt;th&gt;Score&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Semantic HTML&lt;/td&gt;
&lt;td&gt;Properly uses &lt;code&gt;&amp;lt;header&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;nav&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;main&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;footer&amp;gt;&lt;/code&gt;. Nice.&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Keyboard navigation&lt;/td&gt;
&lt;td&gt;Browser default focus outlines.&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Reading order&lt;/td&gt;
&lt;td&gt;Decent, thanks to a block-based editor.&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Text alternatives&lt;/td&gt;
&lt;td&gt;Supported.&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Color&lt;/td&gt;
&lt;td&gt;Single color palette.&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Other&lt;/td&gt;
&lt;td&gt;n/a&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;14&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&quot;wobble-web&quot;&gt;Wobble Web&lt;/h2&gt;
2026-09-12 17:51:15 +00:00
&lt;p&gt;&lt;a href=&quot;https://wwwobble.org/&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;Wobble Web&lt;/a&gt; is a drag-and-drop editor that allows you to edit the code directly in browser as well. There&#39;s no preview site; you can download the code and view it locally or publish it yourself. While there&#39;s a lot of flexibility for text styling, it&#39;s all tied directly to CSS rules, so you need to know some CSS to be effective.&lt;/p&gt;
2026-08-06 18:38:23 +00:00
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Factor&lt;/th&gt;
&lt;th&gt;Notes&lt;/th&gt;
&lt;th&gt;Score&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Semantic HTML&lt;/td&gt;
&lt;td&gt;It&#39;s &lt;code&gt;&amp;lt;div&amp;gt;&lt;/code&gt;s all the way down. No headers. &lt;code&gt;&amp;lt;p&amp;gt;&lt;/code&gt; tags used, at least.&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Keyboard navigation&lt;/td&gt;
&lt;td&gt;Browser default focus outlines. Should be editable with CSS... if we wanted to write CSS.&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Reading order&lt;/td&gt;
&lt;td&gt;Order of elements added determines reading order.&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Text alternatives&lt;/td&gt;
&lt;td&gt;Supported.&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Color&lt;/td&gt;
&lt;td&gt;Single color palette.&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Other&lt;/td&gt;
&lt;td&gt;n/a&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;10&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&quot;wordpress-builders&quot;&gt;Wordpress builders&lt;/h2&gt;
&lt;p&gt;Gotta dive into Wordpress to explore these and haven&#39;t yet.&lt;/p&gt;
&lt;h3 id=&quot;beaver-builder&quot;&gt;Beaver Builder&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://www.wpbeaverbuilder.com/&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;Beaver Builder&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&quot;divi&quot;&gt;Divi&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://www.elegantthemes.com/gallery/divi/&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;Divi&lt;/a&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;summary&quot;&gt;summary&lt;/h2&gt;
2026-09-06 16:03:27 +00:00
&lt;p&gt;Overall, I explored 11 builders, couldn&#39;t test 1 due to OS restrictions, and have 4 left for future review.&lt;/p&gt;
2026-08-06 18:38:23 +00:00
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Builder&lt;/th&gt;
&lt;th&gt;Score&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Webnode*&lt;/td&gt;
&lt;td&gt;14&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Figma Sites*&lt;/td&gt;
&lt;td&gt;13&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
2026-09-08 16:15:34 +00:00
&lt;td&gt;Framer*&lt;/td&gt;
&lt;td&gt;13&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
2026-08-06 18:38:23 +00:00
&lt;td&gt;Startup&lt;/td&gt;
&lt;td&gt;13&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Blocs**&lt;/td&gt;
&lt;td&gt;12&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
2026-09-16 18:13:13 +00:00
&lt;td&gt;Squarespace*&lt;/td&gt;
&lt;td&gt;11&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
2026-08-06 18:38:23 +00:00
&lt;td&gt;Univer.se&lt;/td&gt;
&lt;td&gt;11&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cowsites&lt;/td&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Showit&lt;/td&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Wobble Web&lt;/td&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Kiki&lt;/td&gt;
&lt;td&gt;9&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;mmm.page&lt;/td&gt;
&lt;td&gt;9&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Straw.page&lt;/td&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Rapidweaver&lt;/td&gt;
&lt;td&gt;Couldn&#39;t test (MacOS only).&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Beaver Builder (Wordpress)&lt;/td&gt;
&lt;td&gt;Yet to review.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Divi (Wordpress)&lt;/td&gt;
&lt;td&gt;Yet to review.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Webflow*&lt;/td&gt;
&lt;td&gt;Yet to review.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
2026-09-08 16:15:34 +00:00
&lt;p&gt;*Promotes generative AI features.&lt;/p&gt;
2026-08-06 18:38:23 +00:00
&lt;p&gt;**Usability concerns on iPad.&lt;/p&gt;
</content>
</entry>
2026-08-01 15:48:58 +00:00
<entry>
<title>loud table runner</title>
<link href="https://leecat.art/loud-table-runner/" />
<updated>2026-08-01T00:00:00Z</updated>
<id>https://leecat.art/loud-table-runner/</id>
<content type="html">&lt;p&gt;Yarn: &lt;a href=&quot;https://woolery.com/products/circulo-natural-cotton-maxcolor-4-6-yarn&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;Circulo Natural Cotton Maxcolor 4/6 Yarn&lt;/a&gt; with occasional stripes of &lt;a href=&quot;https://woolery.com/products/feza-alp-premier-yarn&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;Fez Alpa&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;About 11&amp;quot; wide and 5&#39; long including tassels.&lt;/p&gt;
</content>
</entry>
2026-07-26 21:52:19 +00:00
<entry>
<title>log cabin dishtowels</title>
<link href="https://leecat.art/log-cabin-dishtowels/" />
<updated>2026-07-26T00:00:00Z</updated>
<id>https://leecat.art/log-cabin-dishtowels/</id>
2026-08-01 15:48:58 +00:00
<content type="html">&lt;p&gt;Yarn: &lt;a href=&quot;https://woolery.com/products/circulo-anne-weaving-yarn&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;Circulo Anne Weaving Yarn&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;3 towels. Woven area roughly 12&amp;quot;x24&amp;quot;. Hemstitched.&lt;/p&gt;
2026-07-26 21:52:19 +00:00
</content>
</entry>
2026-06-30 23:29:05 +00:00
<entry>
<title>core CSS</title>
<link href="https://leecat.art/core-css/" />
<updated>2026-06-30T00:00:00Z</updated>
<id>https://leecat.art/core-css/</id>
<content type="html">&lt;p&gt;What CSS would you implement if you had no or very low vision? Recently, a Blind friend wanted to know more about CSS. This is my attempt at a very minimal CSS file that cleans up a few &lt;a href=&quot;https://browserdefaultstyles.com/&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;browser defaults&lt;/a&gt; for a more pleasant browsing experience without needing much if any visual testing.&lt;/p&gt;
&lt;p&gt;Want to just see the final stylesheet? &lt;a href=&quot;https://leecat.art/core-css/#result&quot;&gt;Skip to the end of the page&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&quot;css-resets&quot;&gt;CSS resets&lt;/h2&gt;
&lt;p&gt;Before we start: this isn&#39;t a CSS reset. You may want to apply it in concert with one. While writing this, a friend recommended &lt;a href=&quot;https://www.joshwcomeau.com/css/custom-css-reset/&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;Josh W. Comeau&#39;s CSS Reset&lt;/a&gt;, which looks largely very solid to me. However, if using that particular reset, I would &lt;em&gt;&lt;strong&gt;not&lt;/strong&gt;&lt;/em&gt; reset default margins (rule 2). They are tremendously useful in this case, where we are unlikely to be setting margins on elements individually.&lt;/p&gt;
&lt;h2 id=&quot;color&quot;&gt;color&lt;/h2&gt;
&lt;p&gt;Complex color palettes are a no-go. But browser defaults are also pretty bad - stark black and white are really hard on sighted users&#39; eyes. Dulling the black and white down to nearby grays helps a lot. And of course, we&#39;ll support light and dark modes.&lt;/p&gt;
&lt;pre class=&quot;language-css&quot;&gt;&lt;code class=&quot;language-css&quot;&gt;&lt;span class=&quot;token selector&quot;&gt;:root&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;token property&quot;&gt;color-scheme&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; light dark&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token property&quot;&gt;--color-light&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; #ddd&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token property&quot;&gt;--color-dark&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; #222&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token property&quot;&gt;--color-bg&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;light-dark&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;var&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;--color-light&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;var&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;--color-dark&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token property&quot;&gt;--color-text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;light-dark&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;var&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;--color-dark&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;var&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;--color-light&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;body&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;token property&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;var&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;--color-text&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token property&quot;&gt;background-color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;var&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;--color-bg&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;accents&quot;&gt;accents&lt;/h3&gt;
&lt;p&gt;To skip reading about accent colors, head right to &lt;a href=&quot;https://leecat.art/core-css/#focus-indication&quot;&gt;focus indication&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;If you have any opinions about color, you might pick accents. At the simplest level, I&#39;d pick one for light mode and one for dark mode. &lt;a href=&quot;https://xkcd.com/color/rgb/&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;XKCD has a color sheet based on a wide survey&lt;/a&gt; that is potentially useful here. Validate that the color contrast is enough with a tool like &lt;a href=&quot;https://webaim.org/resources/contrastchecker/&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;WebAIM&#39;s Contrast Checker&lt;/a&gt;. You might color your headers and links.&lt;/p&gt;
&lt;p&gt;If you&#39;re coloring links, it&#39;s worth considering browser defaults. Blue is unvisited, purple is visited, and red is inactive. Choosing a red or purple link color might confuse users. Blues are pretty safe. A green might be fun.&lt;/p&gt;
&lt;p&gt;Being the person that I am, I&#39;m picking a teal and a pink. XKCD labels these &amp;quot;dark teal&amp;quot; (contrast ratio of 7.11 against our gray-white) and &amp;quot;powder pink&amp;quot; (contrast ratio of 9.49 against our gray-black) respectively.&lt;/p&gt;
&lt;pre class=&quot;language-css&quot;&gt;&lt;code class=&quot;language-css&quot;&gt;&lt;span class=&quot;token selector&quot;&gt;:root&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;token property&quot;&gt;--color-teal&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; #014d4e&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token property&quot;&gt;--color-pink&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; #ffb2d0&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token property&quot;&gt;--color-accent&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;light-dark&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;var&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;--color-teal&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;var&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;--color-pink&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;h1, h2, h3, h4, h5, h6,
a&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;token property&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;var&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;--color-accent&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;focus-indication&quot;&gt;focus indication&lt;/h2&gt;
&lt;p&gt;Focus indication is a visual change that occurs when something interactive on the screen (like a link) receives keyboard focus. Without it, sighted keyboard-only users can&#39;t tell where they are on the page. Conventionally, it&#39;s an outline. &lt;a href=&quot;https://www.sarasoueidan.com/blog/focus-indicators/&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;Read more about accessible focus indication&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I would recommend a &lt;em&gt;smidge&lt;/em&gt; of padding (spacing &lt;em&gt;inside&lt;/em&gt; the border or outline of an element) around your links to allow for more space between the letters and focus outline in order to help with legibility.&lt;/p&gt;
&lt;p&gt;If you recolor your links as mentioned in the previous section, recolor your focus indication for cohesiveness! Additionally, if you overwrite the browser default focus outline in this way or any other, you might want to add a very small border radius to your links. I find that perfectly square corners are a bit of a harsh look, but I&#39;ll admit this one is kind of personal preference.&lt;/p&gt;
&lt;pre class=&quot;language-css&quot;&gt;&lt;code class=&quot;language-css&quot;&gt;&lt;span class=&quot;token selector&quot;&gt;a&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;token property&quot;&gt;padding&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; .1rem&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token property&quot;&gt;border-radius&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; .05rem&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;a:focus-visible&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;token property&quot;&gt;outline&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; solid &lt;span class=&quot;token function&quot;&gt;var&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;--color-accent&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;font&quot;&gt;font&lt;/h2&gt;
&lt;p&gt;All-serif everything (a common browser default) is, uh, kinda ugly and overwhelming. Little tails on every letter are visual clutter, at least to my eyes. It feels outdated, like an old-timey newspaper. Picking serif for headers and sans-serif for body (or vice versa) can be a nice alternative. Plus, the contrast will help on lower-level headings... if you ever drill down to &lt;code&gt;h5&lt;/code&gt;s or &lt;code&gt;h6&lt;/code&gt;s anyway.&lt;/p&gt;
&lt;pre class=&quot;language-css&quot;&gt;&lt;code class=&quot;language-css&quot;&gt;&lt;span class=&quot;token selector&quot;&gt;body&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;token property&quot;&gt;font-family&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; sans-serif&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;h1, h2, h3, h4, h5, h6&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;token property&quot;&gt;font-family&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; serif&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;margins&quot;&gt;margins&lt;/h2&gt;
&lt;p&gt;Margins create visual space around an element, and this whitespace helps significantly with focus. We&#39;re &lt;em&gt;super super not&lt;/em&gt; going to reset the margins for everything. That puts us in design hell and becomes a very visually-oriented problem. Instead, we&#39;re just changing two things: the width of the body and where it sits on the page. Readers, particularly dyslexic readers, can more easily move to the next line when they are not trying to track back across the full width of the screen.&lt;/p&gt;
&lt;p&gt;This margin rule defines a small amount of top/bottom space first (&lt;code&gt;1rem&lt;/code&gt;), and then tells the page to make the left and right margins equal with &lt;code&gt;auto&lt;/code&gt; - centering the body in the middle of the page. I&#39;m also going to set a &lt;code&gt;max-width&lt;/code&gt; to handle those mystical ultra-wide screens (never used one), and a couple of breakpoints for tablets and mobile.&lt;/p&gt;
&lt;pre class=&quot;language-css&quot;&gt;&lt;code class=&quot;language-css&quot;&gt;&lt;span class=&quot;token selector&quot;&gt;body&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;token property&quot;&gt;width&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 65%&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token property&quot;&gt;max-width&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 1800px&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token property&quot;&gt;margin&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 1rem auto&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token atrule&quot;&gt;&lt;span class=&quot;token rule&quot;&gt;@media&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;max-width&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 1050px&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;body&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;token property&quot;&gt;width&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 85%&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token atrule&quot;&gt;&lt;span class=&quot;token rule&quot;&gt;@media&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;max-width&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 650px&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;body&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;token property&quot;&gt;width&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 92%&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;links&quot;&gt;links&lt;/h2&gt;
&lt;p&gt;One quick note about accessible links: they should be identifiable by a method other than color. Basically, don&#39;t turn off your underlines! Additionally, I would recommend against using underlines for emphasis elsewhere - use &lt;code&gt;&amp;lt;em&amp;gt;&lt;/code&gt; or &lt;code&gt;&amp;lt;strong&amp;gt;&lt;/code&gt; instead.&lt;/p&gt;
&lt;h2 id=&quot;images&quot;&gt;images&lt;/h2&gt;
&lt;p&gt;As mentioned up top, this overlaps with the linked CSS Reset writeup.&lt;/p&gt;
&lt;p&gt;By default, an image will be full size. If it&#39;s a large image, that can be even larger than the viewport. We&#39;ll give them a &lt;code&gt;max-width&lt;/code&gt; and center them in case they are narrower than the body. &lt;code&gt;display: block&lt;/code&gt; allows that centering to actually work.&lt;/p&gt;
&lt;pre class=&quot;language-css&quot;&gt;&lt;code class=&quot;language-css&quot;&gt;&lt;span class=&quot;token selector&quot;&gt;img, picture, video, canvas, svg&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;token property&quot;&gt;display&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; block&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token property&quot;&gt;max-width&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 100%&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token property&quot;&gt;margin&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 0 auto&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;headers-footers-navs&quot;&gt;headers, footers, navs&lt;/h2&gt;
&lt;p&gt;Let&#39;s talk the components that every page likely has - a header, a footer, and navs. I&#39;m going to use a very simple design for our header - a &lt;a href=&quot;https://webaim.org/techniques/skipnav/&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;skip link&lt;/a&gt;, an (optional) site title (the title could also be one of the nav links), and then an unordered list of links enclosed in a &lt;code&gt;nav&lt;/code&gt; element. Like the following:&lt;/p&gt;
&lt;pre class=&quot;language-html&quot;&gt;&lt;code class=&quot;language-html&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;header&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;a&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;id&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;skip&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;href&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;#main&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;Skip to content&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;a&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;h2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;a&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;href&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;/&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;This is my cool website&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;a&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;h2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;nav&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;aria-label&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;main menu navigation&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;ul&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;li&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;a&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;href&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;/header-nav-1/&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;Header nav item 1&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;a&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;li&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;li&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;a&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;href&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;/header-nav-2/&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;Header nav item 2&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;a&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;li&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;li&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;a&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;href&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;/header-nav-3/&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;Header nav item 3&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;a&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;li&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;ul&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;nav&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;header&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;and our footer will be similar:&lt;/p&gt;
&lt;pre class=&quot;language-html&quot;&gt;&lt;code class=&quot;language-html&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;footer&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;nav&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;aria-label&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;footer navigation&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;ul&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;li&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;a&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;href&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;/footer-nav-1/&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;Footer nav item 1&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;a&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;li&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;li&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;a&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;href&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;/footer-nav-2/&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;Footer nav item 2&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;a&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;li&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;ul&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;nav&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;footer&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;skip-link&quot;&gt;skip link&lt;/h3&gt;
&lt;p&gt;Let&#39;s handle the skip link first. Your skip link can be hard to style without visual feedback. Commonly, they start hidden and only appear when receiving keyboard focus. It&#39;s entirely reasonable, in my opinion, to leave it visible. &lt;strong&gt;I actually like this as a design choice&lt;/strong&gt;, as it highlights the idea and hopefully purpose of a skip link to sighted readers. However, if you want to hide it, there&#39;s a lot (a &lt;em&gt;lot&lt;/em&gt;) of ways to do so. Using &lt;code&gt;position: absolute&lt;/code&gt;, &lt;code&gt;left&lt;/code&gt;, and &lt;code&gt;top&lt;/code&gt;, we can place the skip link outside of the page, then move it in when it receives focus. We&#39;ll also stick a background on there to prevent the text from overlaying our site title and becoming illegible.&lt;/p&gt;
&lt;pre class=&quot;language-css&quot;&gt;&lt;code class=&quot;language-css&quot;&gt;&lt;span class=&quot;token selector&quot;&gt;#skip&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;token property&quot;&gt;background-color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;var&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;--color-bg&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token property&quot;&gt;position&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; absolute&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token property&quot;&gt;left&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; -999px&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token property&quot;&gt;top&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; -999px&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;#skip:focus-visible&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;token property&quot;&gt;left&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 10%&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token property&quot;&gt;top&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 5%&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;site-title&quot;&gt;site title&lt;/h3&gt;
&lt;p&gt;I won&#39;t do much here, but I am going to remove the underline (which is the default for links). It&#39;s commonly understood that the site title (or sometimes just the word &amp;quot;home&amp;quot;) links to the home page, and the underline is unnecessary visual clutter.&lt;/p&gt;
&lt;pre class=&quot;language-css&quot;&gt;&lt;code class=&quot;language-css&quot;&gt;&lt;span class=&quot;token selector&quot;&gt;header h2&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;token property&quot;&gt;text-decoration&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; none&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;flexbox-navs&quot;&gt;flexbox navs&lt;/h3&gt;
&lt;p&gt;We&#39;re going to dip our toes into flexbox for this one - it allows us to make content fall neatly into rows or columns. It&#39;s pretty powerful, and can get pretty weird, but we&#39;ll keep it bare-bones.&lt;/p&gt;
&lt;p&gt;By default, the unordered lists in the navs will display with each list item on a new line with a bullet point in front of the list item. Let&#39;s take up less space by putting them all on one line. I&#39;m going to center the items, and I&#39;m going to allow them to wrap onto a new line. I&#39;m also taking the bullet points off of the list items and allowing for a bit of space between each item.&lt;/p&gt;
&lt;pre class=&quot;language-css&quot;&gt;&lt;code class=&quot;language-css&quot;&gt;&lt;span class=&quot;token selector&quot;&gt;nav ul&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;token property&quot;&gt;display&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; flex&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token property&quot;&gt;justify-content&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; center&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token property&quot;&gt;flex-flow&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; row wrap&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token property&quot;&gt;list-style&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; none&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token property&quot;&gt;gap&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 1rem&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;aria-current&quot;&gt;aria-current&lt;/h3&gt;
&lt;p&gt;Screen reader users get &lt;code&gt;aria-current&lt;/code&gt; information, and it can be helpful to present it to sighted users as well. There are of course many ways to do this with color, but we&#39;ll avoid that. Let&#39;s add carets before and after the current page link to indicate this. We&#39;ll scope them only to the header and footer just in case we run across a weird case.&lt;/p&gt;
&lt;pre class=&quot;language-css&quot;&gt;&lt;code class=&quot;language-css&quot;&gt;&lt;span class=&quot;token selector&quot;&gt;header a[aria-current=&quot;page&quot;]::before,
footer a[aria-current=&quot;page&quot;]::before&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;token property&quot;&gt;content&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;&gt; &quot;&lt;/span&gt; / &lt;span class=&quot;token string&quot;&gt;&quot;&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;header a[aria-current=&quot;page&quot;]::after,
footer a[aria-current=&quot;page&quot;]::after&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;token property&quot;&gt;content&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot; &amp;lt;&quot;&lt;/span&gt; / &lt;span class=&quot;token string&quot;&gt;&quot;&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The content after the forward slash is what is conveyed to screen reader users. The carets are not useful from a screen reader perspective, so this excerpts them.&lt;/p&gt;
&lt;h3 id=&quot;separating-header-and-footer-from-main&quot;&gt;separating header and footer from main&lt;/h3&gt;
&lt;p&gt;The header and footer can visually run into the main text area if there&#39;s not extra space or a border. We&#39;ll keep it simple with borders. If you&#39;re not using an accent color, use your text color instead.&lt;/p&gt;
&lt;pre class=&quot;language-css&quot;&gt;&lt;code class=&quot;language-css&quot;&gt;&lt;span class=&quot;token selector&quot;&gt;header&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;token property&quot;&gt;border-bottom&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; solid &lt;span class=&quot;token function&quot;&gt;var&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;--color-accent&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;footer&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;token property&quot;&gt;border-top&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; solid &lt;span class=&quot;token function&quot;&gt;var&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;--color-accent&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;print-media&quot;&gt;print media&lt;/h2&gt;
&lt;p&gt;There&#39;s a couple straightforward additions we can make to handle printing the site cleanly and making best use of the physical paper space. Remove the header and footer, reset the width and colors to limit ink usage, and print link URLs after the link.&lt;/p&gt;
&lt;pre class=&quot;language-css&quot;&gt;&lt;code class=&quot;language-css&quot;&gt;&lt;span class=&quot;token atrule&quot;&gt;&lt;span class=&quot;token rule&quot;&gt;@media&lt;/span&gt; print&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;header,
footer,
nav&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;token property&quot;&gt;display&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; none&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;body&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;token property&quot;&gt;background-color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; #fff&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token property&quot;&gt;width&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 95vw&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;body,
h1, h2, h3, h4, h5,
a&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;token property&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; #000&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;a::after&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;token property&quot;&gt;content&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot; (&quot;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;attr&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;href&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;)&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;feedback&quot;&gt;feedback&lt;/h2&gt;
&lt;p&gt;Did I make a mistake? Is there more I could add? &lt;a href=&quot;https://leecat.art/contact/&quot;&gt;Reach out&lt;/a&gt;!&lt;/p&gt;
&lt;h2 id=&quot;result&quot;&gt;result&lt;/h2&gt;
&lt;p&gt;Here&#39;s our outcome.&lt;/p&gt;
&lt;pre class=&quot;language-css&quot;&gt;&lt;code class=&quot;language-css&quot;&gt;&lt;span class=&quot;token selector&quot;&gt;:root&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;token property&quot;&gt;color-scheme&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; light dark&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token property&quot;&gt;--color-light&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; #ddd&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token property&quot;&gt;--color-dark&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; #222&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token property&quot;&gt;--color-teal&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; #014d4e&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token property&quot;&gt;--color-pink&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; #ffb2d0&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token property&quot;&gt;--color-bg&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;light-dark&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;var&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;--color-light&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;var&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;--color-dark&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token property&quot;&gt;--color-text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;light-dark&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;var&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;--color-dark&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;var&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;--color-light&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token property&quot;&gt;--color-accent&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;light-dark&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;var&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;--color-teal&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;var&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;--color-pink&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;body&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;token property&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;var&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;--color-text&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token property&quot;&gt;background-color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;var&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;--color-bg&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token property&quot;&gt;font-family&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; sans-serif&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token property&quot;&gt;width&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 65%&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token property&quot;&gt;max-width&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 1800px&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token property&quot;&gt;margin&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 1rem auto&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token atrule&quot;&gt;&lt;span class=&quot;token rule&quot;&gt;@media&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;max-width&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 1100px&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;body&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;token property&quot;&gt;width&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 85%&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token atrule&quot;&gt;&lt;span class=&quot;token rule&quot;&gt;@media&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;max-width&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 650px&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;body&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;token property&quot;&gt;width&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 92%&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;/* Basic elements */&lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;h1, h2, h3, h4, h5, h6&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;token property&quot;&gt;font-family&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; serif&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;h1, h2, h3, h4, h5, h6,
a&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;token property&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;var&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;--color-accent&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;a&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;token property&quot;&gt;padding&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; .1rem&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token property&quot;&gt;border-radius&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; .05rem&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;a:focus-visible&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;token property&quot;&gt;outline&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; solid &lt;span class=&quot;token function&quot;&gt;var&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;--color-accent&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;img, picture, video, canvas, svg&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;token property&quot;&gt;display&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; block&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token property&quot;&gt;max-width&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 100%&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token property&quot;&gt;margin&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 0 auto&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;/* Header, footer, nav */&lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;header&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;token property&quot;&gt;border-bottom&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; solid &lt;span class=&quot;token function&quot;&gt;var&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;--color-accent&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;#skip&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;token property&quot;&gt;background-color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;var&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;--color-bg&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token property&quot;&gt;position&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; absolute&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token property&quot;&gt;left&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; -999px&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token property&quot;&gt;top&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; -999px&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;#skip:focus-visible&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;token property&quot;&gt;left&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 10%&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token property&quot;&gt;top&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 5%&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;header a[aria-current=&quot;page&quot;]::before,
footer a[aria-current=&quot;page&quot;]::before&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;token property&quot;&gt;content&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;&gt; &quot;&lt;/span&gt; / &lt;span class=&quot;token string&quot;&gt;&quot;&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;header a[aria-current=&quot;page&quot;]::after,
footer a[aria-current=&quot;page&quot;]::after&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;token property&quot;&gt;content&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot; &amp;lt;&quot;&lt;/span&gt; / &lt;span class=&quot;token string&quot;&gt;&quot;&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;header h2 a&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;token property&quot;&gt;text-decoration&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; none&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;nav ul&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;token property&quot;&gt;display&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; flex&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token property&quot;&gt;justify-content&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; center&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token property&quot;&gt;flex-flow&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; row wrap&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token property&quot;&gt;list-style&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; none&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token property&quot;&gt;gap&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 1rem&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;footer&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;token property&quot;&gt;border-top&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; solid &lt;span class=&quot;token function&quot;&gt;var&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;--color-accent&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;/* Print media */&lt;/span&gt;
&lt;span class=&quot;token atrule&quot;&gt;&lt;span class=&quot;token rule&quot;&gt;@media&lt;/span&gt; print&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;header,
footer,
nav&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;token property&quot;&gt;display&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; none&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;body&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;token property&quot;&gt;background-color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; #fff&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token property&quot;&gt;width&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 95vw&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;body,
h1, h2, h3, h4, h5,
a&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;token property&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; #000&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;a::after&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;token property&quot;&gt;content&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot; (&quot;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;attr&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;href&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;)&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
</content>
</entry>
2026-08-27 00:05:20 +00:00
<entry>
<title>black and red journal</title>
<link href="https://leecat.art/black-and-red-journal/" />
<updated>2026-06-11T00:00:00Z</updated>
<id>https://leecat.art/black-and-red-journal/</id>
<content type="html"></content>
</entry>
2026-09-16 01:05:58 +00:00
<entry>
<title>fediLearns</title>
<link href="https://leecat.art/fedilearns/" />
<updated>2026-05-06T00:00:00Z</updated>
<id>https://leecat.art/fedilearns/</id>
<content type="html">&lt;p&gt;My new project &lt;a href=&quot;https://fedilearns.fyi&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;FediLearns&lt;/a&gt; is a learning-focused classifieds page for the fediverse. Check it out!&lt;/p&gt;
</content>
</entry>
2026-05-15 09:20:43 -07:00
</feed>