/* CSS that adds the bare minimum for a simple layout. * Nothing here exists purely for aesthetics except the unstyled-list; * everything else addresses a specific a11y, compatibility, or critical * usability need. */ /* This site's CSS does 10 major things: * 1. sans-serif instead of serif for low-res screens. * 2. Consistent font size;
 and  shouldn't be smaller than
 *    regular text.
 * 3. max content width for readability
 * 4. single-row nav links widescreen, multiline nav on narrow screens
 * 5. Soft border around code and images to disginguish from the
 *    surrounding page. Images with white/black or transparent
 *    backgrounds should have clear dimensions, and multiple consecutive
 *    inline  spans should look separate. A  span that
 *    continues across multiple lines should not look like multiple different
 *    spans.
 * 6. Increase the line-spacing a bit so users on mobile devices can
 *    tap links more easily.
 * 7. Horizontally center non-inline images; left-aligned stick out.
 * 8. dark.css changes a few colors if the browser wants dark mode.
 * 9. Support unstyled lists: for webmentions, post lists, nav links.
 * 10. Narrow screen optimization: less-indented blockquotes, overflow
 *     behavior for 
, no figure margins.
 * Everything else is browser defaults:
 * default fonts, non-dark-mode colors, etc.
 */

html {
	/* Mobile screens benefit from greater line-spacing so links are
	 * further apart. Dyslexic users prefer the spacing too.
	 * <100dpi screens: sans-serif is better. Why did browsers settle
	 * on serif being the default?? */
	font: 100%/1.5 sans-serif;

	/* Aligning to the center with space on both sides prevents accidental
	* link activation on mobile devices. */
	margin: auto;
}

/* WCAG recommends a max line width. Not everyone can resize the
 * viewport.
 * This should not take effect on printouts, to save paper. */
@media screen {
	html {
		max-width: 45em;
		padding: 0 3%;
	}

	.e-content {
		margin: auto;
		max-width: 38em;
	}
}

@supports (border-inline-start: 6px) {
	/* narrow screens: reduce margin for blockquotes a lot, using
	 * a thick left-side border instead. */
	blockquote {
		border-inline-start: 6px solid #bbb;
		margin: 0;
		padding: 0 0.8em;
	}

	/* single-line nav on widescreen and print.
	 * Single-line nav on print saves almost half a page. */
	@media print, (min-width: 32em) {
		header nav li {
			display: inline;
			padding-inline-end: 0.5em;
		}
	}
}

/* narrow screens: remove unused figure margin. */
figure {
	margin: 0;
}

/* Mobile optimization: nav links are tappable with fat fingers */
nav li,
.unstyled-list li {
	margin-bottom: 0.5em;
}

/* Lists without bullets: navlinks, posts lists, webmentions.
 * Those three are lists whose items are already easily distinguishable,
 * rendering bullet points as unnecessary extra visual noise. Pretty
 * much the only purely-aesthetic change in this CSS file. */
.unstyled-list {
	padding: 0;
}

.unstyled-list li {
	list-style-type: none;
}

/* browsers make monospace small and unreadable for some dumb legacy
 * reason and this somehow fixes that without overriding the user's
 * font size preferences. */
code,
pre,
kbd {
	/* stylelint-disable -- compatibility hack */
	font-family: monospace, monospace;

	/* stylelint-enable */
}

/* Narrow screens: long words can cause content to flow out of the
 * viewport, triggering horizontal scrolling. Allow breaking words in
 * content I don't control (comments). For content I do control, I just
 * add soft hyphens to the HTML. */
.u-comment,
:not(pre) > code {
	overflow-wrap: break-word;

	/* borders shouldn't touch text */
	padding: 0 0.1em;
}

/* Narrow screens: allow horizontal scroll in a pre block. */
pre {
	overflow: auto;
	padding: 0.5em;
}

/* Distinguish images from the background in case their color is
 * too similar to the page background color. Also put a border around
 * 
 and  to distinguish them in ways besides font-family. The
 * use of borders in place of background colors for distinguishing
 * elements is an officially documented WCAG technique. */
img,
pre,
:not(pre) > code {
	border: 1px solid #bbb;
}

/* center images that aren't my indieweb icon; same justification as
 * for centering the body contents. Also makes images easier to see
 * for people holding a device with one hand. */
img:not(.u-photo) {
	display: block;
	height: auto;
	margin: auto;
	max-width: 100%;
}

/* Todo:
 * - Some browsers don't scale SVGs properly; the img container
 *   dimensions crop the image rather than scale it. Investigate
 *   if this only applies to Internet Explorer or if it applies to
 *   other uncommon browsers too. If any non-IE browsers do this and/or
 *   if the spec allows this behavior, try to correct it here.
 * - Investigate reduced-contrast for dark mode
 * - Wait till Webkit fixes its broken-ass default dark stylesheet
 *   then consider trimming the dark stylesheet I provide.
 * - Investigate CSS-based hints to screenreaders.
 * - See if any "-left" properties should switch to "-right" for users
 *   who machine-translate the page to a RTL language. */