PageSourceSearch

https://toppa.com/archives/

html toppa.com collected 2026-10-02 02:48:57 UTC 90,735 bytes, 1,677 lines download raw bytes

1<!DOCTYPE html>
2<html lang="en-US">
3<head>
4	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
5
6	<link rel="profile" href="http://gmpg.org/xfn/11" />
7	<link rel="pingback" href="https://toppa.com/xmlrpc.php" />
8
9	<title>Archives | Nothing But Words</title>
10
11<!-- The SEO Framework by Sybre Waaijer -->
12<link rel="canonical" href="https://toppa.com/archives/" />
13<meta property="og:type" content="website" />
14<meta property="og:locale" content="en_US" />
15<meta property="og:site_name" content="Nothing But Words" />
16<meta property="og:title" content="Archives | Nothing But Words" />
17<meta property="og:url" content="https://toppa.com/archives/" />
18<meta property="og:image" content="https://toppa.com/wp-content/uploads/toppa-site-icon.png" />
19<meta property="og:image:width" content="512" />
20<meta property="og:image:height" content="512" />
21<meta name="twitter:card" content="summary_large_image" />
22<meta name="twitter:title" content="Archives | Nothing But Words" />
23<meta name="twitter:image" content="https://toppa.com/wp-content/uploads/toppa-site-icon.png" />
24<script type="application/ld+json">{"@context":"https://schema.org","@graph":[{"@type":"WebSite","@id":"https://toppa.com/#/schema/WebSite","url":"https://toppa.com/","name":"Nothing But Words","description":"Michael Toppa's blog","inLanguage":"en-US","potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://toppa.com/search/{search_term_string}/"},"query-input":"required name=search_term_string"},"publisher":{"@type":"Organization","@id":"https://toppa.com/#/schema/Organization","name":"Nothing But Words","url":"https://toppa.com/","logo":{"@type":"ImageObject","url":"https://toppa.com/wp-content/uploads/toppa-site-icon.png","contentUrl":"https://toppa.com/wp-content/uploads/toppa-site-icon.png","width":512,"height":512,"contentSize":"7069"}}},{"@type":"WebPage","@id":"https://toppa.com/archives/","url":"https://toppa.com/archives/","name":"Archives | Nothing But Words","inLanguage":"en-US","isPartOf":{"@id":"https://toppa.com/#/schema/WebSite"},"breadcrumb":{"@type":"BreadcrumbList","@id":"https://toppa.com/#/schema/BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"item":"https://toppa.com/","name":"Nothing But Words"},{"@type":"ListItem","position":2,"name":"Archives"}]},"potentialAction":{"@type":"ReadAction","target":"https://toppa.com/archives/"}}]}</script>
24
25<!-- / The SEO Framework by Sybre Waaijer | 2.59ms meta | 0.09ms boot -->
26
27<link rel='dns-prefetch' href='//deckbox.org' />
28<link rel='dns-prefetch' href='//secure.gravatar.com' />
29<link rel='dns-prefetch' href='//fonts.googleapis.com' />
30<link rel='dns-prefetch' href='//v0.wordpress.com' />
31<link rel='dns-prefetch' href='//jetpack.wordpress.com' />
32<link rel='dns-prefetch' href='//s0.wp.com' />
33<link rel='dns-prefetch' href='//public-api.wordpress.com' />
34<link rel="alternate" type="application/rss+xml" title="Nothing But Words &raquo; Feed" href="https://toppa.com/feed/" />
35<link rel="alternate" type="application/rss+xml" title="Nothing But Words &raquo; Comments Feed" href="https://toppa.com/comments/feed/" />
36<link rel="alternate" type="application/rss+xml" title="Nothing But Words &raquo; Archives Comments Feed" href="https://toppa.com/archives/feed/" />
37<link rel="alternate" title="oEmbed (JSON)" type="application/json+oembed" href="https://toppa.com/wp-json/oembed/1.0/embed?url=https%3A%2F%2Ftoppa.com%2Farchives%2F" />
38<link rel="alternate" title="oEmbed (XML)" type="text/xml+oembed" href="https://toppa.com/wp-json/oembed/1.0/embed?url=https%3A%2F%2Ftoppa.com%2Farchives%2F&#038;format=xml" />
39<style id="wp-img-auto-sizes-contain-inline-css">
40img:is([sizes=auto i],[sizes^="auto," i]){contain-intrinsic-size:3000px 1500px}
41/*# sourceURL=wp-img-auto-sizes-contain-inline-css */
42</style>
43<style id="wp-emoji-styles-inline-css">
44
45	img.wp-smiley, img.emoji {
46		display: inline !important;
47		border: none !important;
48		box-shadow: none !important;
49		height: 1em !important;
50		width: 1em !important;
51		margin: 0 0.07em !important;
52		vertical-align: -0.1em !important;
53		background: none !important;
54		padding: 0 !important;
55	}
56/*# sourceURL=wp-emoji-styles-inline-css */
57</style>
58<style id="wp-block-library-inline-css">
59:root{--wp-block-synced-color:#7a00df;--wp-block-synced-color--rgb:122,0,223;--wp-bound-block-color:var(--wp-block-synced-color);--wp-editor-canvas-background:#ddd;--wp-admin-theme-color:#007cba;--wp-admin-theme-color--rgb:0,124,186;--wp-admin-theme-color-darker-10:#006ba1;--wp-admin-theme-color-darker-10--rgb:0,107,160.5;--wp-admin-theme-color-darker-20:#005a87;--wp-admin-theme-color-darker-20--rgb:0,90,135;--wp-admin-border-width-focus:2px}@media (min-resolution:192dpi){:root{--wp-admin-border-width-focus:1.5px}}.wp-element-button{cursor:pointer}:root .has-very-light-gray-background-color{background-color:#eee}:root .has-very-dark-gray-background-color{background-color:#313131}:root .has-very-light-gray-color{color:#eee}:root .has-very-dark-gray-color{color:#313131}:root .has-vivid-green-cyan-to-vivid-cyan-blue-gradient-background{background:linear-gradient(135deg,#00d084,#0693e3)}:root .has-purple-crush-gradient-background{background:linear-gradient(135deg,#34e2e4,#4721fb 50%,#ab1dfe)}:root .has-hazy-dawn-gradient-background{background:linear-gradient(135deg,#faaca8,#dad0ec)}:root .has-subdued-olive-gradient-background{background:linear-gradient(135deg,#fafae1,#67a671)}:root .has-atomic-cream-gradient-background{background:linear-gradient(135deg,#fdd79a,#004a59)}:root .has-nightshade-gradient-background{background:linear-gradient(135deg,#330968,#31cdcf)}:root .has-midnight-gradient-background{background:linear-gradient(135deg,#020381,#2874fc)}:root{--wp--preset--font-size--normal:16px;
59--wp--preset--font-size--huge:42px}.has-regular-font-size{font-size:1em}.has-larger-font-size{font-size:2.625em}.has-normal-font-size{font-size:var(--wp--preset--font-size--normal)}.has-huge-font-size{font-size:var(--wp--preset--font-size--huge)}:root .has-text-align-center{text-align:center}:root .has-text-align-left{text-align:left}:root .has-text-align-right{text-align:right}.has-fit-text{white-space:nowrap!important}#end-resizable-editor-section{display:none}.aligncenter{clear:both}.items-justified-left{justify-content:flex-start}.items-justified-center{justify-content:center}.items-justified-right{justify-content:flex-end}.items-justified-space-between{justify-content:space-between}.screen-reader-text{word-wrap:normal!important;border:0;clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.screen-reader-text:focus{background-color:#ddd;clip-path:none;color:#444;display:block;font-size:1em;height:auto;left:5px;line-height:normal;padding:15px 23px 14px;text-decoration:none;top:5px;width:auto;z-index:100000}html :where(.has-border-color){border-style:solid}html :where([style*=border-color]){border-style:solid}html :where([style*=border-top-color]){border-top-style:solid}html :where([style*=border-right-color]){border-right-style:solid}html :where([style*=border-bottom-color]){border-bottom-style:solid}html :where([style*=border-left-color]){border-left-style:solid}html :where([style*=border-width]){border-style:solid}html :where([style*=border-top-width]){border-top-style:solid}html :where([style*=border-right-width]){border-right-style:solid}html :where([style*=border-bottom-width]){border-bottom-style:solid}html :where([style*=border-left-width]){border-left-style:solid}html :where(img[class*=wp-image-]){height:auto;max-width:100%}:where(figure){margin:0 0 1em}html :where(.is-position-sticky){--wp-admin--admin-bar--position-offset:var(--wp-admin--admin-bar--height,0px)}@media screen and (max-width:600px){html :where(.is-position-sticky){--wp-admin--admin-bar--position-offset:0px}}
60
61/*# sourceURL=/wp-includes/css/dist/block-library/common.min.css */
62</style>
63<style id="classic-theme-styles-inline-css">
64/*! This file is auto-generated */
65.wp-block-button__link{color:#fff;background-color:#32373c;border-radius:9999px;box-shadow:none;text-decoration:none;padding:calc(.667em + 2px) calc(1.333em + 2px);font-size:1.125em}.wp-block-file__button{background:#32373c;color:#fff;text-decoration:none}
66/*# sourceURL=/wp-includes/css/classic-themes.min.css */
67</style>
68
69<style id="global-styles-inline-css">
70:root{--wp--preset--aspect-ratio--square: 1;--wp--preset--aspect-ratio--4-3: 4/3;--wp--preset--aspect-ratio--3-4: 3/4;--wp--preset--aspect-ratio--3-2: 3/2;--wp--preset--aspect-ratio--2-3: 2/3;--wp--preset--aspect-ratio--16-9: 16/9;--wp--preset--aspect-ratio--9-16: 9/16;--wp--preset--color--black: #000000;--wp--preset--color--cyan-bluish-gray: #abb8c3;--wp--preset--color--white: #ffffff;--wp--preset--color--pale-pink: #f78da7;--wp--preset--color--vivid-red: #cf2e2e;--wp--preset--color--luminous-vivid-orange: #ff6900;--wp--preset--color--luminous-vivid-amber: #fcb900;--wp--preset--color--light-green-cyan: #7bdcb5;--wp--preset--color--vivid-green-cyan: #00d084;--wp--preset--color--pale-cyan-blue: #8ed1fc;--wp--preset--color--vivid-cyan-blue: #0693e3;--wp--preset--color--vivid-purple: #9b51e0;--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple: linear-gradient(135deg,rgb(6,147,227) 0%,rgb(155,81,224) 100%);--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan: linear-gradient(135deg,rgb(122,220,180) 0%,rgb(0,208,130) 100%);--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange: linear-gradient(135deg,rgb(252,185,0) 0%,rgb(255,105,0) 100%);--wp--preset--gradient--luminous-vivid-orange-to-vivid-red: linear-gradient(135deg,rgb(255,105,0) 0%,rgb(207,46,46) 100%);--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray: linear-gradient(135deg,rgb(238,238,238) 0%,rgb(169,184,195) 100%);
70--wp--preset--gradient--cool-to-warm-spectrum: linear-gradient(135deg,rgb(74,234,220) 0%,rgb(151,120,209) 20%,rgb(207,42,186) 40%,rgb(238,44,130) 60%,rgb(251,105,98) 80%,rgb(254,248,76) 100%);--wp--preset--gradient--blush-light-purple: linear-gradient(135deg,rgb(255,206,236) 0%,rgb(152,150,240) 100%);--wp--preset--gradient--blush-bordeaux: linear-gradient(135deg,rgb(254,205,165) 0%,rgb(254,45,45) 50%,rgb(107,0,62) 100%);--wp--preset--gradient--luminous-dusk: linear-gradient(135deg,rgb(255,203,112) 0%,rgb(199,81,192) 50%,rgb(65,88,208) 100%);--wp--preset--gradient--pale-ocean: linear-gradient(135deg,rgb(255,245,203) 0%,rgb(182,227,212) 50%,rgb(51,167,181) 100%);--wp--preset--gradient--electric-grass: linear-gradient(135deg,rgb(202,248,128) 0%,rgb(113,206,126) 100%);--wp--preset--gradient--midnight: linear-gradient(135deg,rgb(2,3,129) 0%,rgb(40,116,252) 100%);--wp--preset--font-size--small: 13px;--wp--preset--font-size--medium: 20px;--wp--preset--font-size--large: 36px;--wp--preset--font-size--x-large: 42px;--wp--preset--spacing--20: 0.44rem;--wp--preset--spacing--30: 0.67rem;--wp--preset--spacing--40: 1rem;--wp--preset--spacing--50: 1.5rem;--wp--preset--spacing--60: 2.25rem;--wp--preset--spacing--70: 3.38rem;--wp--preset--spacing--80: 5.06rem;--wp--preset--shadow--natural: 6px 6px 9px rgba(0, 0, 0, 0.2);--wp--preset--shadow--deep: 12px 12px 50px rgba(0, 0, 0, 0.4);--wp--preset--shadow--sharp: 6px 6px 0px rgba(0, 0, 0, 0.2);--wp--preset--shadow--outlined: 6px 6px 0px -3px rgb(255, 255, 255), 6px 6px rgb(0, 0, 0);--wp--preset--shadow--crisp: 6px 6px 0px rgb(0, 0, 0);}:where(body) { margin: 0; }:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}body .is-layout-flex{display: flex;}.is-layout-flex{flex-wrap: wrap;align-items: center;}.is-layout-flex > :is(*, div){margin: 0;}body .is-layout-grid{display: grid;}.is-layout-grid > :is(*, div){margin: 0;}body{padding-top: 0px;padding-right: 0px;padding-bottom: 0px;padding-left: 0px;}:root :where(.wp-element-button, .wp-block-button__link){background-color: #32373c;border-width: 0;color: #fff;font-family: inherit;font-size: inherit;font-style: inherit;font-weight: inherit;letter-spacing: inherit;line-height: inherit;padding-top: calc(0.667em + 2px);padding-right: calc(1.333em + 2px);padding-bottom: calc(0.667em + 2px);padding-left: calc(1.333em + 2px);text-decoration: none;text-transform: inherit;}.has-black-color{color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-color{color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-color{color: var(--wp--preset--color--white) !important;}.has-pale-pink-color{color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-color{color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-color{color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-color{color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-color{color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-color{color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-color{color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-color{color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-color{color: var(--wp--preset--color--vivid-purple) !important;}.has-black-background-color{background-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-background-color{background-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-background-color{background-color: var(--wp--preset--color--white) !important;}.has-pale-pink-background-color{background-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-background-color{background-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-background-color{background-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-background-color{background-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-background-color{background-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-background-color{background-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-background-color{background-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-background-color{background-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-background-color{background-color: var(--wp--preset--color--vivid-purple) !important;}.has-black-border-color{border-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-border-color{border-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-border-color{border-color: var(--wp--preset--color--white) !important;}.has-pale-pink-border-color{border-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-border-color{border-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-border-color{border-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-border-color{border-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-border-color{border-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-border-color{border-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-border-color{border-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-border-color{border-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-border-color{border-color: var(--wp--preset--color--vivid-purple) !important;}.has-vivid-cyan-blue-to-vivid-purple-gradient-background{background: var(--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple) !important;}.has-light-green-cyan-to-vivid-green-cyan-gradient-background{background: var(--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan) !important;}.has-luminous-vivid-amber-to-luminous-vivid-orange-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange) !important;}.has-luminous-vivid-orange-to-vivid-red-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-orange-to-vivid-red) !important;}
70.has-very-light-gray-to-cyan-bluish-gray-gradient-background{background: var(--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray) !important;}.has-cool-to-warm-spectrum-gradient-background{background: var(--wp--preset--gradient--cool-to-warm-spectrum) !important;}.has-blush-light-purple-gradient-background{background: var(--wp--preset--gradient--blush-light-purple) !important;}.has-blush-bordeaux-gradient-background{background: var(--wp--preset--gradient--blush-bordeaux) !important;}.has-luminous-dusk-gradient-background{background: var(--wp--preset--gradient--luminous-dusk) !important;}.has-pale-ocean-gradient-background{background: var(--wp--preset--gradient--pale-ocean) !important;}.has-electric-grass-gradient-background{background: var(--wp--preset--gradient--electric-grass) !important;}.has-midnight-gradient-background{background: var(--wp--preset--gradient--midnight) !important;}.has-small-font-size{font-size: var(--wp--preset--font-size--small) !important;}.has-medium-font-size{font-size: var(--wp--preset--font-size--medium) !important;}.has-large-font-size{font-size: var(--wp--preset--font-size--large) !important;}.has-x-large-font-size{font-size: var(--wp--preset--font-size--x-large) !important;}
71/*# sourceURL=global-styles-inline-css */
72</style>
73
74<link rel='stylesheet' id='contact-form-7-css' href='https://toppa.com/wp-content/plugins/contact-form-7/includes/css/styles.css?ver=6.1.7' media='all' />
75<style id="jetpack-stats-inline-css">
76img#wpstats{display:none}
77/*# sourceURL=jetpack-stats-inline-css */
78</style>
79<link rel='stylesheet' id='origami-css' href='https://toppa.com/wp-content/themes/origami/style.css?ver=1.10.3' media='all' />
80<link rel='stylesheet' id='flexslider-css' href='https://toppa.com/wp-content/themes/origami/css/flexslider.css?ver=2.0' media='all' />
81<link rel='stylesheet' id='google-webfonts-css' href='https://fonts.googleapis.com/css?family=Terminal+Dosis%3A200%2C400&#038;ver=d2126fa4b831f581e91c64a56fa882f9' media='all' />
82<link rel='stylesheet' id='origami-woocommerce-style-css' href='https://toppa.com/wp-content/themes/origami/woocommerce.css?ver=1.10.3' media='all' />
83<link rel='stylesheet' id='siteorigin-mobilenav-css' href='https://toppa.com/wp-content/themes/origami/inc/mobilenav/css/mobilenav.css?ver=1.10.3' media='all' />
84<link rel='stylesheet' id='sharedaddy-css' href='https://toppa.com/wp-content/plugins/jetpack/modules/sharedaddy/sharing.css?ver=16.2' media='all' />
85<link rel='stylesheet' id='social-logos-css' href='https://toppa.com/wp-content/plugins/jetpack/_inc/build/social-logos/social-logos.css?ver=16.2' media='all' />
86<script id="deckbox-js" src="https://deckbox.org/javascripts/tooltip.js?ver=d2126fa4b831f581e91c64a56fa882f9"></script>
vendor: 1 bytes, line 86
86
87<script id="jquery-core-js" src="https://toppa.com/wp-includes/js/jquery/jquery.min.js?ver=3.7.1"></script>
vendor: 1 bytes, line 87
87
88<script id="jquery-migrate-js" src="https://toppa.com/wp-includes/js/jquery/jquery-migrate.min.js?ver=3.4.1"></script>
vendor: 1 bytes, line 88
88
89<script id="deckbox_extensions-js" src="https://toppa.com/wp-content/plugins/magic-the-gathering-card-tooltips/resources/tooltip_extension.js?ver=d2126fa4b831f581e91c64a56fa882f9"></script>
vendor: 1 bytes, line 89
89
90<script id="origami-js" src="https://toppa.com/wp-content/themes/origami/js/origami.min.js?ver=1.10.3"></script>
vendor: 1 bytes, line 90
90
91<script id="flexslider-js" src="https://toppa.com/wp-content/themes/origami/js/jquery.flexslider.min.js?ver=2.1"></script>
vendor: 1 bytes, line 91
91
92<script id="siteorigin-mobilenav-js-extra">
93var mobileNav = {"search":{"url":"https://toppa.com","placeholder":"Search"},"text":{"navigate":"Menu","back":"Back","close":"Close"},"nextIconUrl":"https://toppa.com/wp-content/themes/origami/inc/mobilenav/images/next.png"};
94//# sourceURL=siteorigin-mobilenav-js-extra
95</script>
vendor: 1 bytes, line 95
95
96<script id="siteorigin-mobilenav-js" src="https://toppa.com/wp-content/themes/origami/inc/mobilenav/js/mobilenav.min.js?ver=1.10.3"></script>
96
97<link rel="https://api.w.org/" href="https://toppa.com/wp-json/" /><link rel="alternate" title="JSON" type="application/json" href="https://toppa.com/wp-json/wp/v2/pages/568" /><link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://toppa.com/xmlrpc.php?rsd" />
98<meta name="viewport" content="width=device-width, initial-scale=1" /><meta http-equiv="X-UA-Compatible" content="IE=edge" />		<style type="text/css">
99			.so-mobilenav-mobile + * { display: none; }
100			@media screen and (max-width: 480px) { .so-mobilenav-mobile + * { display: block; } .so-mobilenav-standard + * { display: none; } .site-navigation #search-icon { display: none; } }
101		</style>
102	<link type="text/css" rel="stylesheet" href="https://toppa.com/wp-content/plugins/magic-the-gathering-card-tooltips/resources/css/wp_deckbox_mtg.css" media="screen" />
103<style id="custom-background-css">
104body.custom-background { background-image: url("https://toppa.com/wp-content/themes/origami/images/bg.png"); background-position: left top; background-size: auto; background-repeat: repeat; background-attachment: scroll; }
105</style>
106	<style type="text/css" media="screen">
107		#footer-widgets .widget { width: 50%; }
108		@media screen and (max-width: 640px) {
109			#footer-widgets .widget { width: auto; float: none; }
110		}
111	</style>
112		<!--[if lt IE 9]>
113	
113<script src="https://toppa.com/wp-content/themes/origami/js/html5shiv.js" type="text/javascript"></script>
113
114	<![endif]-->
115	<!--[if (gte IE 6)&(lte IE 8)]>
116	
116<script type="text/javascript" src="https://toppa.com/wp-content/themes/origami/js/selectivizr.js"></script>
116
117	<![endif]-->
118	<style type="text/css" id="customizer-css"></style><link rel="icon" href="https://toppa.com/wp-content/uploads/toppa-site-icon-32x32.png" sizes="32x32" />
119<link rel="icon" href="https://toppa.com/wp-content/uploads/toppa-site-icon-192x192.png" sizes="192x192" />
120<link rel="apple-touch-icon" href="https://toppa.com/wp-content/uploads/toppa-site-icon-180x180.png" />
121<meta name="msapplication-TileImage" content="https://toppa.com/wp-content/uploads/toppa-site-icon-270x270.png" />
122<style id="wp-custom-css">
123@import url('https://fonts.googleapis.com/css2?family=Fraunces:ital,wght@0,400;0,500;0,600;0,700;1,400&family=Newsreader:ital,wght@0,400;0,500;0,600;0,700;1,400&display=swap');
124
125/* =====================================================================
126   Origami "Book" reading experience — toppa.com (PRODUCTION)
127   Source of truth: theme-work/additional-css.css
128   Delivered to: custom_css post ID 7453. Backup of pre-redesign CSS:
129   theme-work/backups/additional-css-7453.20260615.css
130   Philosophy: Editorial / Book typography. Light mode only (by design).
131
132   FONT PAIRING (locked, Task 2): Fraunces (display) + Newsreader (body).
133   Chosen from a 3-way staging mockup for the warmest, most book-like read.
134   ===================================================================== */
135
136:root {
137  /* ---------------------------------------------------------------
138     COLOR — warm cream paper, near-black warm ink, oxblood, gold
139     --------------------------------------------------------------- */
140
141  /* Backgrounds */
142  --color-bg-primary:    #fbf8f1;  /* the warm "sheet" — full-bleed page bg */
143  --color-bg-secondary:  #f3eede;  /* subtle warm panel (code, pull-quote fill) */
144  --color-bg-tertiary:   #ece4d2;  /* wells / inputs / hovered rows */
145  --color-bg-inverse:    #2a2622;  /* ink, for rare inverted chips */
146
147  /* Text / ink */
148  --color-text-primary:   #2a2622;  /* body ink — warm near-black (~13:1 on cream) */
149  --color-text-secondary: #6b645b;  /* meta, subdued (~5.5:1, AA normal) */
150  --color-text-tertiary:  #8a8275;  /* captions, fine print (large/accent only) */
151  --color-text-inverse:   #fbf8f1;  /* text on ink/inverse */
152
153  /* Links — oxblood */
154  --color-text-link:        #7b2d26; /* (~7:1 on cream, AA) */
155  --color-text-link-hover:  #5e211c; /* deepen on hover */
156  --color-text-link-visited:#6a3b32; /* slightly muted/browned */
157
158  /* Borders & rules */
159  --color-border-primary:   #e0d8c8; /* default hairlines, rules */
160  --color-border-secondary: #ece6d8; /* very subtle dividers */
161  --color-border-focus:     #7b2d26; /* focus ring (oxblood) */
162
163  /* Accents — muted antique gold (ACCENT ONLY; not body text/links) */
164  --color-accent-gold:       #9a7b3f; /* decorative: rules, tag fill, markers */
165  --color-accent-gold-text:  #7e6531; /* deeper gold when gold must read (~5:1) */
166  --color-accent-oxblood:    #7b2d26; /* secondary accent = link color */
167
168  /* Status (kept minimal — rarely used on a reading site) */
169  --color-status-success: #4f6b3a;
170  --color-status-warning: #9a7b3f;
171  --color-status-error:   #8a2f28;
172  --color-status-info:    #3a5a6b;
173
174  /* Selection highlight */
175  --color-selection-bg:   #ece0c2; /* soft gold wash */
176  --color-selection-text: #2a2622;
177
178  /* ---------------------------------------------------------------
179     TYPOGRAPHY
180     --------------------------------------------------------------- */
181
182  /* Families — LOCKED (Task 2): Fraunces display + Newsreader body. */
183  --font-display: "Fraunces", Georgia, "Times New Roman", serif;
184  --font-body:    "Newsreader", Georgia, "Times New Roman", serif;
185  --font-meta:    "Newsreader", Georgia, serif;
186  --font-mono:    ui-monospace, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace;
187
188  /* Size ramp (root assumed 16px). Body base = 19px for comfortable reading. */
189  --font-size-xs:    0.75rem;    /* 12px — fine print */
190  --font-size-sm:    0.875rem;   /* 14px — meta, small caps, captions */
191  --font-size-base:  1.1875rem;  /* 19px — body text */
192  --font-size-md:    1.3125rem;  /* 21px — lead paragraph, h4 */
193  --font-size-lg:    1.5rem;     /* 24px — h3 */
194  --font-size-xl:    1.875rem;   /* 30px — h2 */
195  --font-size-2xl:   2.5rem;     /* 40px — h1 / post title */
196  --font-size-3xl:   2.75rem;    /* 44px — masthead site title */
197  --font-size-4xl:   3.5rem;     /* 56px — reserved hero/display */
198
199  /* Archive-listing heading — intentionally smaller than a post title (IA #3) */
200  --font-size-archive-title: 1.625rem; /* 26px */
201
202  /* Weights */
203  --font-weight-normal:   400;
204  --font-weight-medium:   500;
205  --font-weight-semibold: 600;
206  --font-weight-bold:     700;
207
208  /* Line-heights */
209  --line-height-tight:   1.2;   /* display / headings */
210  --line-height-snug:    1.35;  /* sub-heads, tight blocks */
211  --line-height-normal:  1.7;   /* body reading */
212  --line-height-relaxed: 1.8;   /* airier passages */
213
214  /* Letter-spacing */
215  --letter-spacing-tight:  -0.01em; /* large display serif */
216  --letter-spacing-normal: 0;
217  --letter-spacing-wide:   0.08em;  /* small caps, labels */
218  --letter-spacing-wider:  0.14em;  /* nav, all-caps meta */
219
220  /* ---------------------------------------------------------------
221     LAYOUT — narrow book measure, wider image breakout
222     --------------------------------------------------------------- */
223  --measure:            40rem;  /* 640px ≈ ~66–70 chars at 19px serif — body column */
224  --max-width-content:  40rem;  /* alias of --measure for prose */
225  --max-width-wide:     56rem;  /* 896px — breakout images & galleries */
226  --max-width-page:     64rem;  /* 1024px — matches Origami's container cap */
227
228  /* Vertical rhythm anchor (~ one body line) */
229  --rhythm: 1.7rem;
230
231  /* ---------------------------------------------------------------
232     SPACING — 8px base, editorial (spacious) multipliers
233     --------------------------------------------------------------- */
234  --space-0:  0;
235  --space-1:  0.25rem;  /*  4px */
236  --space-2:  0.5rem;   /*  8px */
237  --space-3:  0.75rem;  /* 12px */
238  --space-4:  1rem;     /* 16px */
239  --space-5:  1.5rem;   /* 24px */
240  --space-6:  2rem;     /* 32px */
241  --space-7:  3rem;     /* 48px */
242  --space-8:  4rem;     /* 64px */
243  --space-9:  6rem;     /* 96px */
244  --space-10: 8rem;     /* 128px */
245
246  /* ---------------------------------------------------------------
247     BORDERS / RADII / SHADOWS — editorial = nearly flat
248     --------------------------------------------------------------- */
249  --border-hairline:  1px solid var(--color-border-primary);
250  --border-radius-sm:   2px;
251  --border-radius-md:   3px;
252  --border-radius-lg:   4px;
253  --border-radius-full: 999px;  /* tag pill */
254
255  --shadow-sm:    0 1px 2px rgba(42, 38, 34, 0.06);
256  --shadow-md:    0 2px 8px rgba(42, 38, 34, 0.08);
257  --shadow-lg:    0 6px 20px rgba(42, 38, 34, 0.10);
258  --shadow-focus: 0 0 0 3px rgba(123, 45, 38, 0.30); /* oxblood focus ring */
259
260  /* ---------------------------------------------------------------
261     MOTION — gentle; honor prefers-reduced-motion at usage sites
262     --------------------------------------------------------------- */
263  --duration-fast:   150ms;
264  --duration-normal: 250ms;
265  --duration-slow:   400ms;
266  --easing-default:  cubic-bezier(0.4, 0, 0.2, 1);
267  --easing-out:      cubic-bezier(0, 0, 0.2, 1);
268
269  /* ---------------------------------------------------------------
270     COMPONENT TOKENS — book flourishes
271     --------------------------------------------------------------- */
272
273  /* Drop cap (first paragraph of a post) */
274  --dropcap-font:        var(--font-display);
275  --dropcap-size:        3.4em;   /* spans ~3 lines */
276  --dropcap-color:       var(--color-text-primary);
277  --dropcap-line-height: 0.82;
278
279  /* Small-caps post meta (date / author / category) */
280  --meta-font:           var(--font-meta);
281  --meta-size:           var(--font-size-sm);
282  --meta-letter-spacing: var(--letter-spacing-wider);
283  --meta-color:          var(--color-text-secondary);
284
285  /* Pull-quote / blockquote (epigraph style) */
286  --pullquote-border:    3px solid var(--color-accent-gold);
287  --pullquote-color:     var(--color-text-primary);
288  --pullquote-style:     italic;
289  --pullquote-bg:        transparent;
290
291  /* Category / "featured" tag pill */
292  --tag-bg:              var(--color-accent-gold);
293  --tag-text:            var(--color-bg-primary);
294  --tag-size:            var(--font-size-xs);
295  --tag-letter-spacing:  var(--letter-spacing-wider);
296
297  /* Code block */
298  --code-bg:             var(--color-bg-secondary);
299  --code-border:         1px solid var(--color-border-primary);
300  --code-text:           #3b342c;
301  --code-size:           0.9375rem; /* 15px — readable mono in a 19px body */
302
303  /* Ornamental rule (section break) — available though not used by default */
304  --rule-color:          var(--color-accent-gold);
305}
306
307::selection {
308  background: var(--color-selection-bg);
309  color: var(--color-selection-text);
310}
311
312/* =====================================================================
313   EXISTING RULES (preserved from pre-redesign Additional CSS)
314   ===================================================================== */
315
316pre, code {
317  font-family: "Courier New", Courier, monospace
318}
319
320.post .content {
321	font-size: 16px;
322}
323
324/* Embedded tweet — reskinned from the legacy Twitter-widget card (grey borders +
325   drop shadow, out of place on the cream paper) into a flat warm inset panel in
326   the house tokens. Kept deliberately distinct from the epigraph pull-quote (gold
327   rule, no box): a tweet is an external voice cited, so it gets a filled panel. */
328blockquote.twitter-tweet {
329  display: block;
330  background: var(--color-bg-secondary);
331  border: var(--border-hairline);
332  border-radius: 6px;
333  box-shadow: none;
334  font-style: normal;   /* cancel the theme's italic blockquote — italic is reserved
335                           for the epigraph pull-quote; a cited tweet reads roman */
336  margin: var(--space-5) 0;
337  padding: var(--space-4) var(--space-5);
338  max-width: 100%;
339}
340
341/* Tighten the body→attribution gap: wpautop wraps the "— Name" attribution in its
342   own <p>, so the gap is really that second paragraph's 2em TOP margin (which then
343   collapses with the body's bottom margin, keeping the larger value). Zero the top
344   margins and set the rhythm on the bottom, mirroring the epigraph rule below, so
345   this out-specifies the theme's paragraph margins. */
346.post .content blockquote.twitter-tweet p { margin: 0 0 var(--space-3); }
347.post .content blockquote.twitter-tweet p:last-child { margin-bottom: 0; }
348
349blockquote.twitter-tweet a {
350  color: inherit;
351  font-weight: normal;
352  text-decoration: none;
353  outline: 0 none;
354}
355
356blockquote.twitter-tweet a:hover,
357blockquote.twitter-tweet a:focus {
358  text-decoration: underline;
359}
360
361#footer-widgets {
362	text-align: center;
363}
364
365#footer-widgets em {
366	font-style: italic;
367}
368
369/* --- gallery even-grid spacing (Step 6, replaces Jetpack tiled) --- */
370.gallery {
371  display: grid;
372  grid-template-columns: repeat(3, 1fr);
373  gap: 12px;
374  align-items: start;      /* top-align rows; keep full images, even gutters */
375  margin: 0 0 20px;
376}
377.gallery-columns-1 { grid-template-columns: 1fr; }
378.gallery-columns-2 { grid-template-columns: repeat(2, 1fr); }
379.gallery-columns-3 { grid-template-columns: repeat(3, 1fr); }
380.gallery-columns-4 { grid-template-columns: repeat(4, 1fr); }
381.gallery-columns-5 { grid-template-columns: repeat(5, 1fr); }
382.gallery-columns-6 { grid-template-columns: repeat(6, 1fr); }
383.gallery .gallery-item {
384  width: auto !important;
385  margin: 0 !important;
386  float: none !important;
387  padding: 0;
388  text-align: center;
389}
390.gallery .gallery-icon { margin: 0; }
391.gallery .gallery-icon img {
392  width: 100%;
393  height: auto;            /* full image, natural aspect ratio (no crop) */
394  display: block;
395  border: 0;
396}
397/* WP's [gallery] shortcode injects a clearing <br> after every Nth item.
398   In a grid container each <br> becomes a stray cell and staggers every
399   following row — hide them so the grid lays out in clean rows. */
400.gallery br { display: none; }
401@media (max-width: 600px) {
402  .gallery { grid-template-columns: repeat(2, 1fr) !important; }
403}
404/* WP's gallery shortcode injects an inline `#gallery-N { margin:auto }` (ID
405   specificity) that zeroes the gallery's bottom margin, so a gallery ending a
406   post butts straight against the share buttons. Restore a clear gap — needs
407   !important to beat that dynamic-ID inline rule. */
408.post .content .gallery { margin-bottom: var(--space-6) !important; }
409
410/* Jetpack slideshow controls — the plugin dims them to opacity 0.5 (full only
411   on hover of the window), so over a busy photo they're nearly invisible and a
412   visitor can't tell it's a slideshow. Keep them clearly visible at rest; each
413   prev/play/next button already carries its own dark pill for contrast, so this
414   is purely a discoverability fix. The `body` prefix raises specificity above the
415   plugin's own rule (its slideshow CSS is injected by JS AFTER the Additional CSS,
416   so an equal-specificity selector would lose on source order); the plugin's more
417   specific `:hover` rule still lifts the controls to full opacity on hover. */
418body .jetpack-slideshow-controls { opacity: 0.9; }
419
420/* =====================================================================
421   CORE TYPOGRAPHY — canvas, body, headings, links, meta (book)
422   ===================================================================== */
423
424/* Canvas — one warm cream sheet; drop the card-on-gray */
425body {
426  background: var(--color-bg-primary);
427  color: var(--color-text-primary);
428  font-family: var(--font-body);
429}
430#page-container,
431#content,
432.container,
433.post,
434.post .content {
435  background: transparent;
436  box-shadow: none;
437}
438
439/* Narrow reading measure, centered (title + meta + body share it) */
440.post .entry-title,
441.post .post-info,
442.post .content {
443  max-width: var(--measure);
444  margin-left: auto;
445  margin-right: auto;
446  float: none;
447}
448
449/* Body text — serif, 19px / 1.7, warm ink */
450.post .content,
451.post .content p,
452.post .content li {
453  font-family: var(--font-body);
454  font-size: var(--font-size-base);
455  line-height: var(--line-height-normal);
456  color: var(--color-text-primary);
457}
458
459/* Lists — the theme's default disc markers render faint and sit awkwardly in
460   the margin. Replace with a deliberate warm-gold bullet on a hanging indent so
461   wrapped lines align under the text (not the bullet). Ordered lists keep their
462   numerals, recoloured to match. */
463.post .content ul {
464  list-style: none;
465  padding-left: 1.4em;
466  margin: 0 0 var(--space-5);
467}
468.post .content ul > li {
469  position: relative;
470  padding-left: 0.15em;
471  list-style: none;            /* kill the theme's bullet.png marker on the li
472                                  itself — it rendered behind our gold ::before
473                                  bullet and read as a faint drop shadow */
474}
475.post .content ul > li::before {
476  content: "\2022";                 /* • */
477  position: absolute;
478  left: -0.95em;
479  color: var(--color-accent-gold-text);
480  font-weight: 700;
481}
482.post .content ol {
483  padding-left: 1.7em;
484  margin: 0 0 var(--space-5);
485}
486.post .content ol > li::marker {
487  color: var(--color-accent-gold-text);
488  font-weight: 600;
489}
490.post .content li { margin-bottom: 0.7em; }
491.post .content li > ul,
492.post .content li > ol { margin: 0.7em 0 0; }   /* nested items match top-level spacing */
493
494/* Jetpack/Sharedaddy share buttons render as an unclassed <ul> inside
495   .post .content (both the inline row and the "More" popup live under
496   .sd-content), so our gold bullet + hanging indent were landing on them.
497   Strip both back off for any list under the sharing wrapper. */
498.post .content .sd-content ul,
499.post .content .sd-content ul > li { padding-left: 0; }
500.post .content .sd-content ul > li::before { content: none; }
501
502/* Headings — display serif, left-aligned (book), warm ink */
503.post .entry-title {
504  font-family: var(--font-display);
505  font-size: var(--font-size-2xl);
506  font-weight: var(--font-weight-semibold);
507  line-height: var(--line-height-tight);
508  letter-spacing: var(--letter-spacing-tight);
509  color: var(--color-text-primary);
510  text-align: left;
511}
512.post .content h2 {
513  font-family: var(--font-display);
514  font-size: var(--font-size-xl);
515  font-weight: var(--font-weight-semibold);
516  line-height: var(--line-height-snug);
517  color: var(--color-text-primary);
518}
519.post .content h3 {
520  font-family: var(--font-display);
521  font-size: var(--font-size-lg);
522  font-weight: var(--font-weight-semibold);
523  line-height: var(--line-height-snug);
524  color: var(--color-text-primary);
525}
526.post .content h4 {
527  font-family: var(--font-display);
528  font-size: var(--font-size-md);
529  font-weight: var(--font-weight-semibold);
530  color: var(--color-text-primary);
531}
532
533/* In-prose links — oxblood, underlined */
534.post .content a {
535  color: var(--color-text-link);
536  text-decoration: underline;
537  text-underline-offset: 2px;
538}
539.post .content a:hover {
540  color: var(--color-text-link-hover);
541}
542
543/* Post meta — subdued, lightly letterspaced (no small-caps, per preference) */
544.post .post-info {
545  font-family: var(--font-meta);
546  font-size: 0.9375rem; /* 15px — a step under body */
547  line-height: 1.5;     /* leading for when the meta wraps to 2 lines (mobile) */
548  letter-spacing: var(--letter-spacing-wide);
549  color: var(--color-text-secondary);
550  text-align: left;
551}
552.post .post-info a { color: var(--color-text-secondary); }
553
554/* Masthead — display serif so the page top reads in the chosen face */
555#logo h1,
556#logo h1 a {
557  font-family: var(--font-display);
558  font-weight: var(--font-weight-semibold);
559  color: var(--color-text-primary);
560}
561/* Tagline (h3.logo) — quiet italic, a touch larger, set apart from the title */
562#logo h3.logo {
563  font-family: var(--font-body);
564  font-style: italic;
565  font-weight: var(--font-weight-normal);
566  font-size: 1.15rem;          /* up from the theme's small default */
567  letter-spacing: 0.01em;
568  color: var(--color-text-secondary);
569  margin-top: var(--space-3);  /* 12px gap below the masthead title */
570}
571
572/* Primary nav — drop the grey band, blend into the cream sheet.
573   Selectors are #menu-prefixed to outrank Origami's own nav rules. */
574#menu.primary,
575#menu ul#main-menu,
576#menu #main-menu li {
577  background: transparent;
578  box-shadow: none;
579}
580#menu.primary {
581  border: 0;
582  border-bottom: 1px solid var(--color-border-primary); /* hairline under header */
583}
584#menu #main-menu > li > a {
585  font-family: var(--font-body);
586  font-size: 1rem;
587  letter-spacing: var(--letter-spacing-wide);
588  color: var(--color-text-primary);
589  text-transform: none;
590}
591#menu #main-menu > li > a:hover,
592#menu #main-menu > li.current-menu-item > a,
593#menu #main-menu > li.current_page_item > a {
594  color: var(--color-text-link);
595}
596/* Dropdown sub-menus — match the warm sheet */
597#menu #main-menu ul {
598  background: var(--color-bg-primary);
599  border: 1px solid var(--color-border-primary);
600}
601#menu #main-menu ul li {
602  background: transparent;
603}
604
605/* Drop Origami's card border so the sheet is truly full-bleed */
606#page-container {
607  border: 0;
608}
609
610/* Search box — blend into the warm sheet (form lives inside #logo;
611   set background-color only so any magnifier icon is preserved) */
612#logo #searchform input#s {
613  background-color: var(--color-bg-secondary);
614  border: 1px solid var(--color-border-primary);
615  border-radius: var(--border-radius-sm);
616  color: var(--color-text-primary);
617  font-family: var(--font-body);
618}
619#logo #searchform input#s:focus {
620  outline: none;
621  border-color: var(--color-border-focus);
622  box-shadow: var(--shadow-focus);
623}
624#searchform #searchsubmit {
625  font-family: var(--font-body);
626  color: var(--color-text-secondary);
627  background: transparent;
628  border: 0;
629}
630/* Relocate the search from the floating top-right corner to the right END of the
631   nav row (above the right terminus of the nav's hairline rule, which spans the
632   full 905px nav width). The form lives in #logo (position:relative), so anchoring
633   by `bottom` makes it track the masthead height — if the title wraps, #logo grows
634   and the search stays glued to the nav row (~56px below #logo's bottom). Scoped to
635   ≥560px, where the four nav links sit on ONE line so a fixed right-edge anchor lands
636   exactly on "Archives" (verified 560 / 640 / 700 / 1280; the 600px type-scale does
637   not affect it). */
638@media (min-width: 560px) {
639  #logo #searchform {
640    position: absolute;
641    left: auto;
642    right: 0;
643    top: auto;
644    bottom: -56px;               /* nav links sit ~56px below #logo's bottom edge */
645    transform: translateY(50%);  /* center the form on the nav-link baseline */
646    margin: 0;
647    z-index: 5;
648  }
649}
650/* Narrow band (481–559px): the four nav links wrap to two lines, so a fixed
651   right-edge anchor can't track "Archives". Keep the search centered + in-flow
652   here (under the tagline, like the masthead's natural layout). ≤480px is the
653   mobile drawer breakpoint and keeps the theme's own centered search untouched. */
654@media (min-width: 481px) and (max-width: 559px) {
655  #logo #searchform {
656    position: static;
657    margin: var(--space-3) auto 0;
658    text-align: center;
659    transform: none;
660  }
661}
662
663/* =====================================================================
664   CODE — inline chips + block panels (no wrap; scroll long lines)
665   ===================================================================== */
666
667/* Monospace for all code (overrides the old Courier rule) */
668.post .content pre,
669.post .content code,
670.post .content kbd,
671.post .content tt {
672  font-family: var(--font-mono);
673}
674
675/* Inline code — small warm chip. Sized in `em` (not the fixed --code-size) so it
676   stays ~0.8× its surrounding text: ~15px in 19px body, but scaling up inside
677   headings (e.g. 24px in a 30px h2) instead of staying stuck at 15px. */
678.post .content code {
679  background: var(--code-bg);
680  border: 1px solid var(--color-border-primary);
681  border-radius: var(--border-radius-sm);
682  padding: 0.08em 0.35em;
683  font-size: 0.8em;
684  color: var(--code-text);
685}
686
687/* Block code — contained warm panel; keep code unwrapped, scroll if needed */
688.post .content pre {
689  background: var(--code-bg);
690  border: var(--code-border);
691  border-radius: var(--border-radius-md);
692  color: var(--code-text);
693  font-size: var(--code-size);
694  line-height: 1.55;
695  padding: var(--space-4);
696  margin: var(--space-5) 0;
697  max-width: 100%;
698  overflow-x: auto;            /* horizontal scrollbar for long lines */
699  white-space: pre;            /* do NOT wrap code */
700  -webkit-overflow-scrolling: touch;
701}
702/* Code inside a pre is plain — strip the inline-chip treatment */
703.post .content pre code {
704  background: none;
705  border: 0;
706  border-radius: 0;
707  padding: 0;
708  font-size: inherit;
709  color: inherit;
710}
711
712/* =====================================================================
713   FLOURISHES — drop cap, image/gallery breakout, epigraph pull-quote
714   ===================================================================== */
715
716/* Drop cap — on the first paragraph of a single post (even if a leading
717   image precedes it), but NOT when the post opens with a heading. */
718.single .post .content > p:first-of-type::first-letter {
719  font-family: var(--dropcap-font);
720  font-weight: var(--font-weight-semibold);
721  font-size: 3.1em;
722  line-height: 0.66;
723  color: var(--dropcap-color);
724  float: left;
725  margin: 0.06em 0.10em 0 0;
726}
727/* Suppress the drop cap when the post body starts with a heading */
728.single .post .content > :is(h1,h2,h3,h4,h5,h6):first-child ~ p:first-of-type::first-letter {
729  font-family: inherit;
730  font-weight: inherit;
731  font-size: inherit;
732  line-height: inherit;
733  float: none;
734  margin: 0;
735}
736
737/* Images — universal safety only (no per-layout breakout; wide layouts
738   are handled per-post by the author). Images never exceed the column
739   and keep their aspect ratio. */
740.post .content img {
741  max-width: 100%;
742  height: auto;
743}
744/* Captions — quiet "placard" under each photo: a faint warm panel + hairline
745   so the caption reads as a deliberate label, not stray text. display:table 
745+
746   auto margins shrink it to its text and center it regardless of parent. */
747.post .content .wp-caption-text,
748.post .content figcaption,
749.post .content .gallery-caption {
750  display: table;
751  margin: 0.55em auto 0;
752  max-width: 92%;
753  padding: 0.3em 0.7em;
754  background: var(--color-bg-secondary);
755  border: 1px solid var(--color-border-primary);
756  border-radius: 2px;
757  font-family: var(--font-body);
758  font-size: var(--font-size-sm);
759  font-style: italic;
760  line-height: var(--line-height-snug);
761  color: var(--color-text-secondary);
762  text-align: center;
763}
764
765/* Epigraph pull-quote (real blockquotes only — not embedded tweets) */
766.post .content blockquote:not(.twitter-tweet) {
767  border-left: var(--pullquote-border);
768  background: var(--pullquote-bg);
769  color: var(--pullquote-color);
770  font-style: var(--pullquote-style);
771  font-size: var(--font-size-md);
772  line-height: var(--line-height-relaxed);
773  margin: var(--space-6) 0;
774  padding: var(--space-2) 0 var(--space-2) var(--space-5);
775}
776.post .content blockquote:not(.twitter-tweet) p { margin: 0 0 var(--space-3); }
777.post .content blockquote:not(.twitter-tweet) p:last-child { margin-bottom: 0; }
778
779/* =====================================================================
780   ARCHIVE LISTINGS — heading (IA #3) + pagination (IA #2)
781   ===================================================================== */
782
783/* Drop the "Posts in Category:" / "Posts Tagged:" / "Monthly Archives:"
784   prefix by zeroing the h1 text and restoring size on its <span> value.
785   (Author archives use h1.archive-header without a span — left as-is.) */
786body.archive h1.archive-title {
787  max-width: var(--measure);
788  margin: var(--space-7) auto var(--space-5);
789  font-size: 0;                 /* hides the loose prefix text node */
790  text-align: left;
791  line-height: var(--line-height-tight);
792}
793body.archive h1.archive-title span {
794  display: inline-block;
795  font-family: var(--font-display);
796  font-weight: var(--font-weight-semibold);
797  font-size: var(--font-size-archive-title);  /* 26px — under the 40px post title */
798  letter-spacing: var(--letter-spacing-tight);
799  line-height: var(--line-height-tight);
800  color: var(--color-text-primary);
801}
802
803/* The theme always emits #posts-nav, even when there are no Older/Newer links
804   (single posts, and any archive that no longer spans >1 page) — its top border
805   then drew a stray rule above the footer. Hide it whenever it holds no link.
806   (:empty can't be used — the element carries a whitespace text node; :has(a)
807   targets exactly "has nothing to paginate".) Prev/next on single posts is the
808   separate .post-navigation and is unaffected. */
809#posts-nav:not(:has(a)) { display: none; }
810
811/* Older / Newer pagination — book-like, ruled, oxblood links */
812#posts-nav {
813  display: flex;
814  justify-content: space-between;
815  gap: var(--space-4);
816  max-width: var(--measure);
817  margin: var(--space-8) auto var(--space-7);
818  padding-top: var(--space-4);
819  border-top: 1px solid var(--color-border-primary);
820}
821#posts-nav a {
822  font-family: var(--font-body);
823  font-size: 1rem;
824  letter-spacing: var(--letter-spacing-wide);
825  color: var(--color-text-link);
826  text-decoration: none;
827}
828#posts-nav a:hover {
829  color: var(--color-text-link-hover);
830  text-decoration: underline;
831}
832/* Directional guillemets. Markup order is always [Newer] — [Older], so the
833   first link (left) is Newer → leading «, the last (right) is Older → trailing ».
834   Page 1 has only "Older Entries"; give that lone link a trailing » (toward older). */
835#posts-nav a:first-child:not(:only-child)::before { content: "\00ab\00a0"; color: var(--color-text-secondary); }
836#posts-nav a:last-child:not(:only-child)::after   { content: "\00a0\00bb"; color: var(--color-text-secondary); }
837#posts-nav a:only-child::after                     { content: "\00a0\00bb"; color: var(--color-text-secondary); }
838/* Page 1 has only the "Older Entries" link; with space-between a lone child sits
839   at the start, so it read left-aligned. WP core adds a `paged-N` body class only
840   on page 2+ (any context), so "no paged- class" = page 1 → push that lone Older
841   link to the right. Later pages keep space-between; the last page's lone "Newer"
842   link (body still has paged-N) correctly stays left. */
843body:not([class*="paged-"]) #posts-nav { justify-content: flex-end; }
844
845/* =====================================================================
846   ARCHIVE INDEX PAGE (template-archive.php)
847   ===================================================================== */
848
849/* #blog-archives holds a flat sequence: h2 "Categories" + ul, then h2
850   "By Month" + ul. Fill a 2-row grid column-first so the pairs become two
851   columns — Categories left, By Month right. Collapses to one column on
852   phones. (Inherits the 640 measure + centering from its .content class.) */
853#blog-archives {
854  display: grid;
855  grid-template-columns: 1fr 1fr;
856  grid-template-rows: auto auto;
857  grid-auto-flow: column;
858  column-gap: var(--space-7);
859  align-items: start;
860}
861#blog-archives h2 {
862  margin-top: 0;
863  margin-bottom: var(--space-3);
864}
865#blog-archives ul {
866  list-style: none;
867  margin: 0;
868  padding: 0;
869}
870#blog-archives li {
871  list-style: none;
872  font-size: 1rem;
873  line-height: var(--line-height-snug);
874  margin: 0 0 0.4em;
875}
876/* Restore indentation for nested sub-categories so the hierarchy still reads */
877#blog-archives ul ul {
878  padding-left: var(--space-4);
879  margin-top: 0.4em;
880}
881#blog-archives li a {
882  color: var(--color-text-link);
883  text-decoration: none;
884}
885#blog-archives li a:hover {
886  color: var(--color-text-link-hover);
887  text-decoration: underline;
888}
889@media (max-width: 600px) {
890  #blog-archives { display: block; }
891  #blog-archives h2 ~ h2 { margin-top: var(--space-6); }
892}
893
894/* =====================================================================
895   SINGLE-POST PREV/NEXT NAV + LISTING SPACERS
896   ===================================================================== */
897
898/* Previous / next post links (single posts) — align to the measure,
899   two columns, larger readable type (was full-width & 13px). */
900.post-navigation {
901  display: flex;
902  justify-content: space-between;
903  gap: var(--space-5);
904  max-width: var(--measure);
905  margin: var(--space-7) auto;
906  padding-top: var(--space-4);
907  border-top: 1px solid var(--color-border-primary);
908}
909.post-navigation a {
910  flex: 0 1 48%;
911  font-family: var(--font-body);
912  font-size: 1rem;
913  line-height: var(--line-height-snug);
914  color: var(--color-text-link);
915  text-decoration: none;
916}
917.post-navigation a[rel="prev"] { order: 0; text-align: left; }
918.post-navigation a[rel="next"] { order: 1; text-align: right; }
919/* Directional guillemets — « toward the older post (left), » toward the newer (right) */
920.post-navigation a[rel="prev"]::before { content: "\00ab\00a0"; color: var(--color-text-secondary); }
921.post-navigation a[rel="next"]::after  { content: "\00a0\00bb"; color: var(--color-text-secondary); }
922.post-navigation a:hover {
923  color: var(--color-text-link-hover);
924  text-decoration: underline;
925}
926
927/* Empty per-post spacer on listings — drop its grey band so the cream
928   sheet stays continuous between posts (it only holds a clearing div). */
929.below-content,
930.below-content.tagged {
931  background: transparent;
932  box-shadow: none;
933  border: 0;
934}
935
936/* "Continue Reading" on home/archive excerpts. WordPress emits an empty
937   `a.more-link` in its own paragraph at the END of the excerpt — left-aligned
938   and directly ABOVE the share buttons. The theme leaves it blank and instead
939   shows a faint grey, right-aligned "Continue Reading" BELOW the share row,
940   which is easy to overlook. Give the native link a prominent label in its
941   better position and hide the grey duplicate. (The two co-occur 1:1, so no
942   post loses its link.) */
943a.more-link {
944  display: inline-block;
945  font-family: var(--font-body);
946  font-size: 1.0625rem;            /* 17px — clearly above the 13px grey one */
947  font-weight: var(--font-weight-semibold);
948  font-style: normal;
949  letter-spacing: var(--letter-spacing-wide);
950  color: var(--color-text-link);
951  text-decoration: none;
952}
953a.more-link::after { content: "Continue Reading\00a0\2192"; }
954a.more-link:hover {
955  color: var(--color-text-link-hover);
956  text-decoration: underline;
957}
958/* Hide the theme's faint, right-aligned duplicate below the share buttons. */
959.below-content .read-more { display: none; }
960
961/* =====================================================================
962   FOOTER — warm sheet (drop grey band) + footer links (IA #1)
963   ===================================================================== */
964#footer-widgets {
965  background: transparent;          /* remove the grey band */
966  border-top: 1px solid var(--color-border-primary);
967  padding-top: var(--space-5);
968  margin-top: var(--space-6);
969  max-width: var(--measure);        /* align footer with the post column */
970  margin-left: auto;
971  margin-right: auto;
972}
973#footer-widgets .widget_block {
974  margin-bottom: var(--space-3);
975}
976/* Footer page links (Ask Kosh, Big Country Fan Poll) */
977.footer-nav {
978  list-style: none;
979  margin: 0;
980  padding: 0;
981}
982.footer-nav li {
983  display: inline-block;
984  margin: 0 var(--space-3);
985}
986#footer-widgets .footer-nav a {
987  font-family: var(--font-body);
988  letter-spacing: var(--letter-spacing-wide);
989  color: var(--color-text-link);
990  text-decoration: none;
991}
992#footer-widgets .footer-nav a:hover {
993  color: var(--color-text-link-hover);
994  text-decoration: underline;
995}
996/* Footer social icons (Mastodon, LinkedIn, Bluesky) — inline brand SVGs
997   (no icon-font/plugin dependency), recolored via currentColor so they
998   stay on the oxblood palette and deepen on hover. */
999.footer-social {
1000  list-style: none;
1001  margin: 0;
1002  padding: 0;
1003  display: flex;
1004  justify-content: center;
1005  align-items: center;
1006  gap: var(--space-4);
1007}
1008.footer-social li { margin: 0; }
1009#footer-widgets .footer-social a {
1010  display: inline-flex;
1011  color: var(--color-text-link);
1012  text-decoration: none;
1013}
1014#footer-widgets .footer-social a:hover {
1015  color: var(--color-text-link-hover);
1016}
1017.footer-social svg {
1018  width: 22px;
1019  height: 22px;
1020  fill: currentColor;
1021  display: block;
1022}
1023/* Colophon (copyright / theme credit) — quiet */
1024#footer {
1025  font-family: var(--font-body);
1026  color: var(--color-text-tertiary);
1027}
1028#footer a { color: var(--color-text-secondary); }
1029
1030/* =====================================================================
1031   CONTACT FORM (Contact Form 7) — unify field sizing.
1032   The theme only styles input[type="text"], so the email field, the
1033   textarea, and the submit button fall through to browser defaults with
1034   mismatched widths, box-sizing, and borders. Normalize every control to
1035   the book column so the form reads as one tidy stack.
1036   ===================================================================== */
1037.wpcf7 { max-width: var(--measure); }
1038.wpcf7 p { margin: 0 0 var(--space-4); }
1039.wpcf7 label {
1040  font-family: var(--font-body);
1041  color: var(--color-text-secondary);
1042}
1043.wpcf7 .wpcf7-form-control-wrap { display: block; }
1044/* #page-container prefix outranks the theme's #respond input[type="text"]
1045   / input[type="submit"] rules (those only catch text inputs + submit, which
1046   is why the email field and textarea looked different from the rest). */
1047#page-container .wpcf7 input.wpcf7-form-control:not(.wpcf7-submit),
1048#page-container .wpcf7 textarea.wpcf7-form-control {
1049  display: block;
1050  width: 100%;
1051  box-sizing: border-box;
1052  margin-top: 0.35em;
1053  padding: 0.55em 0.7em;
1054  background: var(--color-bg-tertiary);
1055  border: 1px solid var(--color-border-primary);
1056  border-radius: var(--border-radius-sm);
1057  font-family: var(--font-body);
1058  font-size: 1rem;
1059  line-height: var(--line-height-snug);
1060  color: var(--color-text-primary);
1061}
1062.wpcf7 textarea.wpcf7-form-control {
1063  min-height: 9em;
1064  resize: vertical;
1065}
1066#page-container .wpcf7 input.wpcf7-form-control:not(.wpcf7-submit):focus,
1067#page-container .wpcf7 textarea.wpcf7-form-control:focus {
1068  outline: none;
1069  border-color: var(--color-border-focus);
1070  box-shadow: var(--shadow-focus);
1071}
1072#page-container .wpcf7 .wpcf7-submit {
1073  display: inline-block;
1074  width: auto;
1075  margin-top: var(--space-2);
1076  padding: 0.5em 1.5em;
1077  background: var(--color-text-link);
1078  border: 1px solid var(--color-text-link);
1079  border-radius: var(--border-radius-sm);
1080  font-family: var(--font-body);
1081  font-size: 1rem;
1082  letter-spacing: var(--letter-spacing-wide);
1083  color: var(--color-text-inverse);
1084  text-shadow: none;
1085  cursor: pointer;
1086}
1087#page-container .wpcf7 .wpcf7-submit:hover {
1088  background: var(--color-text-link-hover);
1089  border-color: var(--color-text-link-hover);
1090}
1091
1092/* =====================================================================
1093   COMMENTS — align to the measure + theme the heading/frame.
1094   NOTE: the input fields are inside a cross-origin Jetpack iframe
1095   (jetpack_remote_comment) and CANNOT be styled from site CSS. Fully
1096   theming the fields/button would require switching to native WP
1097   comments (Jetpack > Discussion toggle) — the author's call.
1098   ===================================================================== */
1099#comments {
1100  max-width: var(--measure);
1101  margin-left: auto;
1102  margin-right: auto;
1103}
1104#comments #reply-title,
1105#comments .comment-reply-title {
1106  font-family: var(--font-display);
1107  font-weight: var(--font-weight-semibold);
1108  font-size: var(--font-size-xl);
1109  letter-spacing: var(--letter-spacing-tight);
1110  color: var(--color-text-primary);
1111}
1112#comments #commentform iframe#jetpack_remote_comment {
1113  width: 100%;
1114  max-width: 100%;
1115  border: 1px solid var(--color-border-primary);
1116  border-radius: var(--border-radius-md);
1117  background: var(--color-bg-primary);
1118}
1119/* Existing comments (if any) — book type, subdued meta */
1120#comments .commentlist,
1121#comments ol.comment-list {
1122  list-style: none;
1123  padding-left: 0;
1124}
1125#comments .comment-author,
1126#comments .comment-meta {
1127  font-size: var(--font-size-sm);
1128  color: var(--color-text-secondary);
1129}
1130
1131/* =====================================================================
1132   AUTHOR LAYOUT UTILITY — responsive columns for post content.
1133   Wrap sibling blocks in <div class="post-cols"> to flow them into as many
1134   equal columns as fit, collapsing to one on narrow screens with NO media
1135   query (intrinsic grid). Floor is 280px: within the 640 reading column two
1136   columns fit (2×280 + 24px gap = 584 ≤ 640) and grow to ~308px each; once the
1137   available width drops below ~584px (phones, narrow tablets) it drops to a
1138   single column. Tune the floor: raise it to break to one column sooner; lower
1139   it to allow three-up in wider contexts.
1140   ===================================================================== */
1141.post-cols {
1142  display: grid;
1143  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
1144  gap: var(--space-5);
1145}
1146/* Align column tops — zero the leading top-margin so a column that starts with
1147   a heading doesn't sit lower than one starting with a paragraph. */
1148.post-cols > * { margin-top: 0; }
1149
1150/* =====================================================================
1151   RESPONSIVE — scale the large display type down on small screens so a
1152   real phone (~375px) never overflows or feels cramped. Body stays 19px.
1153   ===================================================================== */
1154@media (max-width: 600px) {
1155  #logo h1,
1156  #logo h1 a {
1157    font-size: 2.5rem;          /* 40px (down from 52) */
1158    line-height: 1.1;
1159  }
1160  .post .entry-title {
1161    font-size: var(--font-size-xl);   /* 30px (down from 40) */
1162  }
1163  .post .content h2 { font-size: var(--font-size-lg); }  /* 24px */
1164  .post .content h3 { font-size: var(--font-size-md); }  /* 21px */
1165  body.archive h1.archive-title span {
1166    font-size: var(--font-size-lg);   /* 24px */
1167  }
1168  .single .post .content > p:first-of-type::first-letter {
1169    font-size: 2.7em;           /* a touch smaller in a narrow column */
1170  }
1171  #comments #reply-title,
1172  #comments .comment-reply-title {
1173    font-size: var(--font-size-lg);
1174  }
1175}
1176
1177/* =====================================================================
1178   MOBILE NAV (SiteOrigin "SO Mobile Nav") — reskin to the book palette.
1179   The plugin ships a white "Menu" bar plus a generic charcoal slide-out
1180   drawer (mobilenav.css: #222 frame, #212121 list, grey search, Helvetica).
1181   We restyle (not replace) so the menu reads as an index page of the book;
1182   the slide-in behaviour is untouched. Additional CSS loads after the
1183   plugin sheet, so these equal-specificity rules win.
1184   ===================================================================== */
1185
1186/* "Menu" toggle bar — blend into the cream sheet; ink label, oxblood icon.
1187   (#menu prefix outranks the theme's `#menu ul` white-background rule.) */
1188#menu #mobile-nav-item-wrap-1 {
1189  background: transparent;
1190  border-top: 1px solid var(--color-border-primary);
1191  border-bottom: 1px solid var(--color-border-primary);
1192}
1193#menu a.mobilenav-main-link {
1194  font-family: var(--font-display);
1195  letter-spacing: var(--letter-spacing-wide);
1196  color: var(--color-text-primary);
1197}
1198#menu .mobilenav-main-link .mobile-nav-icon {
1199  color: var(--color-text-link);
1200}
1201
1202/* Slide-out panel — warm paper instead of charcoal, sized as a right-edge
1203   drawer (partial width with a soft left-edge shadow). Pinned flush to the right
1204   (`right:0`) and slid with a transform toggled by `.mn-open` (set by the script
1205   in set-mobilenav-fix.php) — the resting open state is class-driven, so it
1206   always docks exactly at the edge even if a stray mobile resize fires mid-slide
1207   (animating the `right` offset could land short, clipping the menu). */
1208.mobile-nav-frame {
1209  background: var(--color-bg-primary);
1210  font-family: var(--font-body);
1211  width: min(320px, 85vw) !important;
1212  left: auto !important;
1213  right: 0 !important;
1214  z-index: 99999 !important;
1215  box-shadow: -10px 0 30px rgba(42, 38, 34, 0.22);
1216  transform: translateX(100%);
1217  transition: transform 0.24s ease;
1218}
1219.mobile-nav-frame.mn-open { transform: translateX(0); }
1220/* Dimming scrim behind the drawer (created by the script; click it to close). */
1221.mobilenav-scrim {
1222  position: fixed;
1223  inset: 0;
1224  background: rgba(42, 38, 34, 0.38);
1225  opacity: 0;
1226  transition: opacity 0.2s ease;
1227  pointer-events: none;
1228  z-index: 99998;
1229}
1230.mobilenav-scrim.is-visible {
1231  opacity: 1;
1232  pointer-events: auto;
1233}
1234.mobile-nav-frame .title {
1235  background: var(--color-bg-secondary);
1236  border-bottom: 1px solid var(--color-border-primary);
1237}
1238.mobile-nav-frame .title h3 {
1239  font-family: var(--font-display);
1240  font-weight: var(--font-weight-semibold);
1241  color: var(--color-text-primary);
1242  text-shadow: none;
1243}
1244.mobile-nav-frame .title .close,
1245.mobile-nav-frame .title .back {
1246  color: var(--color-text-secondary);
1247  text-shadow: none;
1248}
1249/* Search box removed — the masthead already has a search field, and this small
1250   drawer input was redundant. (The plugin always injects it; only a PHP filter
1251   could stop that, so we hide it here.) */
1252.mobile-nav-frame form.search { display: none; }
1253/* Menu list — cream card, hairline dividers, oxblood links. */
1254.mobile-nav-frame ul {
1255  background: var(--color-bg-secondary);
1256  border: 1px solid var(--color-border-primary);
1257  box-shadow: none;
1258}
1259.mobile-nav-frame ul li {
1260  border-top: 1px solid var(--color-border-secondary);
1261  border-bottom: 0;
1262}
1263.mobile-nav-frame ul li:first-child { border-top: 0; }
1264.mobile-nav-frame ul li a.link {
1265  color: var(--color-text-link);
1266  text-shadow: none;
1267  font-family: var(--font-body);
1268  font-weight: var(--font-weight-medium);
1269}
1270
1271/* =====================================================================
1272   ACCESSIBILITY — visible keyboard focus + reduced motion
1273   ===================================================================== */
1274a:focus-visible,
1275button:focus-visible,
1276input:focus-visible,
1277textarea:focus-visible,
1278#menu #main-menu a:focus-visible,
1279#posts-nav a:focus-visible,
1280#footer-widgets a:focus-visible {
1281  outline: 2px solid var(--color-border-focus);
1282  outline-offset: 2px;
1283  border-radius: var(--border-radius-sm);
1284}
1285
1286@media (prefers-reduced-motion: reduce) {
1287  *, *::before, *::after {
1288    animation-duration: 0.01ms !important;
1289    animation-iteration-count: 1 !important;
1290    transition-duration: 0.01ms !important;
1291    scroll-behavior: auto !important;
1292  }
1293}
1294
1295
1296</style>
1297</head>
1298
1299<body class="wp-singular page-template page-template-template-archive page-template-template-archive-php page page-id-568 custom-background wp-theme-origami mobilenav">
1300
1301<div class="container">
1302
1303	
1304	<div id="page-container">
1305		<a class="skip-link screen-reader-text" href="#content">Skip to content</a>
1306
1307		
1308		<div id="logo" class="logo-centered">
1309	<a href="https://toppa.com/" title="Michael Toppa&#039;s blog" class="logo-link">
1310					<h1 class="logo">Nothing But Words</h1><br/>
1311			<h3 class="logo">Michael Toppa&#039;s blog</h3>
1312			</a>
1313	<form role="search" method="get" id="searchform" class="searchform" action="https://toppa.com/">
1314				<div>
1315					<label class="screen-reader-text" for="s">Search for:</label>
1316					<input type="text" value="" name="s" id="s" />
1317					<input type="submit" id="searchsubmit" value="Search" />
1318				</div>
1319			</form></div>
1320
1321
1322		
1323		<nav id="menu" class="primary">
1324	<div id="so-mobilenav-standard-1" data-id="1" class="so-mobilenav-standard"></div><div class="menu-main-menu-container"><ul id="main-menu" class="menu"><li id="menu-item-7465" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-home menu-item-7465"><a href="http://toppa.com">Home</a></li>
1325<li id="menu-item-7466" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-7466"><a href="https://toppa.com/about/">About</a></li>
1326<li id="menu-item-7467" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-7467"><a href="https://toppa.com/contact/">Contact</a></li>
1327<li id="menu-item-9990" class="menu-item menu-item-type-post_type menu-item-object-page current-menu-item page_item page-item-568 current_page_item menu-item-9990"><a href="https://toppa.com/archives/" aria-current="page">Archives</a></li>
1328</ul></div><div id="so-mobilenav-mobile-1" data-id="1" class="so-mobilenav-mobile"></div><div class="menu-mobilenav-container"><ul id="mobile-nav-item-wrap-1" class="menu"><li><a href="#" class="mobilenav-main-link" data-id="1"><span class="mobile-nav-icon"></span>Menu</a></li></ul></div></nav>
1329	<div class="post post-568 page type-page status-publish content-columns-1">
1330		<h1 class="entry-title noinfo">Archives</h1>
1331
1332		<div class="content">
1333			<div class="sharedaddy sd-sharing-enabled"><div class="robots-nocontent sd-block sd-social sd-social-icon-text sd-sharing"><div class="sd-content"><ul><li class="share-bluesky"><a rel="nofollow noopener noreferrer"
1334				data-shared="sharing-bluesky-568"
1335				class="share-bluesky sd-button share-icon"
1336				href="https://toppa.com/archives/?share=bluesky"
1337				target="_blank"
1338				aria-labelledby="sharing-bluesky-568"
1339				>
1340				<span id="sharing-bluesky-568" hidden>Share on Bluesky (Opens in new window)</span>
1341				<span>Bluesky</span>
1342			</a></li><li class="share-mastodon"><a rel="nofollow noopener noreferrer"
1343				data-shared="sharing-mastodon-568"
1344				class="share-mastodon sd-button share-icon"
1345				href="https://toppa.com/archives/?share=mastodon"
1346				target="_blank"
1347				aria-labelledby="sharing-mastodon-568"
1348				>
1349				<span id="sharing-mastodon-568" hidden>Share on Mastodon (Opens in new window)</span>
1350				<span>Mastodon</span>
1351			</a></li><li class="share-print"><a rel="nofollow noopener noreferrer"
1352				data-shared="sharing-print-568"
1353				class="share-print sd-button share-icon"
1354				href="https://toppa.com/archives/#print?share=print"
1355				target="_blank"
1356				aria-labelledby="sharing-print-568"
1357				>
1358				<span id="sharing-print-568" hidden>Print (Opens in new window)</span>
1359				<span>Print</span>
1360			</a></li><li class="share-email"><a rel="nofollow noopener noreferrer"
1361				data-shared="sharing-email-568"
1362				class="share-email sd-button share-icon"
1363				href="mailto:?subject=%5BShared%20Post%5D%20Archives&#038;body=https%3A%2F%2Ftoppa.com%2Farchives%2F&#038;share=email"
1364				target="_blank"
1365				aria-labelledby="sharing-email-568"
1366				data-email-share-error-title="Do you have email set up?" data-email-share-error-text="If you&#039;re having problems sharing via email, you might not have email set up for your browser. You may need to create a new email yourself." data-email-share-nonce="7b6898fe30" data-email-share-track-url="https://toppa.com/archives/?share=email">
1367				<span id="sharing-email-568" hidden>Email a link to a friend (Opens in new window)</span>
1368				<span>Email</span>
1369			</a></li><li><a href="#" class="sharing-anchor sd-button share-more"><span>More</span></a></li><li class="share-end"></li></ul><div class="sharing-hidden"><div class="inner" style="display: none;"><ul><li class="share-linkedin"><a rel="nofollow noopener noreferrer"
1370				data-shared="sharing-linkedin-568"
1371				class="share-linkedin sd-button share-icon"
1372				href="https://toppa.com/archives/?share=linkedin"
1373				target="_blank"
1374				aria-labelledby="sharing-linkedin-568"
1375				>
1376				<span id="sharing-linkedin-568" hidden>Share on LinkedIn (Opens in new window)</span>
1377				<span>LinkedIn</span>
1378			</a></li><li class="share-facebook"><a rel="nofollow noopener noreferrer"
1379				data-shared="sharing-facebook-568"
1380				class="share-facebook sd-button share-icon"
1381				href="https://toppa.com/archives/?share=facebook"
1382				target="_blank"
1383				aria-labelledby="sharing-facebook-568"
1384				>
1385				<span id="sharing-facebook-568" hidden>Share on Facebook (Opens in new window)</span>
1386				<span>Facebook</span>
1387			</a></li><li class="share-threads"><a rel="nofollow noopener noreferrer"
1388				data-shared="sharing-threads-568"
1389				class="share-threads sd-button share-icon"
1390				href="https://toppa.com/archives/?share=threads"
1391				target="_blank"
1392				aria-labelledby="sharing-threads-568"
1393				>
1394				<span id="sharing-threads-568" hidden>Share on Threads (Opens in new window)</span>
1395				<span>Threads</span>
1396			</a></li><li class="share-twitter"><a rel="nofollow noopener noreferrer"
1397				data-shared="sharing-twitter-568"
1398				class="share-twitter sd-button share-icon"
1399				href="https://toppa.com/archives/?share=twitter"
1400				target="_blank"
1401				aria-labelledby="sharing-twitter-568"
1402				>
1403				<span id="sharing-twitter-568" hidden>Share on X (Opens in new window)</span>
1404				<span>X</span>
1405			</a></li><li class="share-reddit"><a rel="nofollow noopener noreferrer"
1406				data-shared="sharing-reddit-568"
1407				class="share-reddit sd-button share-icon"
1408				href="https://toppa.com/archives/?share=reddit"
1409				target="_blank"
1410				aria-labelledby="sharing-reddit-568"
1411				>
1412				<span id="sharing-reddit-568" hidden>Share on Reddit (Opens in new window)</span>
1413				<span>Reddit</span>
1414			</a></li><li class="share-tumblr"><a rel="nofollow noopener noreferrer"
1415				data-shared="sharing-tumblr-568"
1416				class="share-tumblr sd-button share-icon"
1417				href="https://toppa.com/archives/?share=tumblr"
1418				target="_blank"
1419				aria-labelledby="sharing-tumblr-568"
1420				>
1421				<span id="sharing-tumblr-568" hidden>Share on Tumblr (Opens in new window)</span>
1422				<span>Tumblr</span>
1423			</a></li><li class="share-end"></li></ul></div></div></div></div></div>		</div>
1424
1425		<div class="content" id="blog-archives">
1426			<h2>Categories</h2>
1427			<ul>	<li class="cat-item cat-item-189"><a href="https://toppa.com/category/coding/">Coding</a>
1428<ul class='children'>
1429	<li class="cat-item cat-item-141"><a href="https://toppa.com/category/coding/agile/">Agile</a>
1430</li>
1431	<li class="cat-item cat-item-147"><a href="https://toppa.com/category/coding/conferences/">Conferences</a>
1432</li>
1433	<li class="cat-item cat-item-190"><a href="https://toppa.com/category/coding/pairing-with-ai/">Pairing with AI</a>
1434</li>
1435	<li class="cat-item cat-item-144"><a href="https://toppa.com/category/coding/ruby-on-rails/">Ruby on Rails</a>
1436</li>
1437</ul>
1438</li>
1439	<li class="cat-item cat-item-149"><a href="https://toppa.com/category/japan-and-travel/">Japan and Travel</a>
1440<ul class='children'>
1441	<li class="cat-item cat-item-168"><a href="https://toppa.com/category/japan-and-travel/2007-living-in-tokyo/">2007: Living in Tokyo</a>
1442</li>
1443	<li class="cat-item cat-item-170"><a href="https://toppa.com/category/japan-and-travel/2010-tokyo/">2010: Tokyo</a>
1444</li>
1445</ul>
1446</li>
1447	<li class="cat-item cat-item-133"><a href="https://toppa.com/category/personal/">Personal</a>
1448<ul class='children'>
1449	<li class="cat-item cat-item-160"><a href="https://toppa.com/category/personal/stuff-and-nonsense/">Stuff and Nonsense</a>
1450</li>
1451	<li class="cat-item cat-item-164"><a href="https://toppa.com/category/personal/tv-movies-and-music/">TV, Movies, &amp; Music</a>
1452	<ul class='children'>
1453	<li class="cat-item cat-item-173"><a href="https://toppa.com/category/personal/tv-movies-and-music/big-country/">Big Country</a>
1454</li>
1455	</ul>
1456</li>
1457</ul>
1458</li>
1459</ul>
1460
1461			<h2>By Month</h2>
1462			<ul>	<li><a href='https://toppa.com/2026/09/'>September 2026</a></li>
1463	<li><a href='https://toppa.com/2026/08/'>August 2026</a></li>
1464	<li><a href='https://toppa.com/2026/07/'>July 2026</a></li>
1465	<li><a href='https://toppa.com/2026/06/'>June 2026</a></li>
1466	<li><a href='https://toppa.com/2024/09/'>September 2024</a></li>
1467	<li><a href='https://toppa.com/2024/02/'>February 2024</a></li>
1468	<li><a href='https://toppa.com/2022/03/'>March 2022</a></li>
1469	<li><a href='https://toppa.com/2019/03/'>
1469March 2019</a></li>
1470	<li><a href='https://toppa.com/2018/12/'>December 2018</a></li>
1471	<li><a href='https://toppa.com/2018/11/'>November 2018</a></li>
1472	<li><a href='https://toppa.com/2018/04/'>April 2018</a></li>
1473	<li><a href='https://toppa.com/2018/03/'>March 2018</a></li>
1474</ul>
1475		</div>
1476	</div>
1477
1478		
1479
1480
1481		
1482			
1483			<div id="footer-widgets">
1484	<div id="footer-widgets-wrapper">
1485		<div id="block-3" class="cell widget widget_block widget_custom_html">
1486<ul class="footer-nav"><li><a href="/ask-kosh/">Ask Kosh</a></li><li><a href="/bc/">Big Country Fan Poll</a></li></ul>
1487
1488<div class="mobilenav-enhance" hidden>
1489<script>
1490(function () {
1491  function frameEl() { return document.querySelector('.mobile-nav-frame'); }
1492  function isOpen() {
1493    // .mobile-nav-frame is position:fixed (offsetParent is always null for fixed
1494    // elements), so test computed display: the plugin .hide()s it when closed.
1495    var f = frameEl();
1496    return (f && getComputedStyle(f).display !== 'none') ? f : null;
1497  }
1498  function closeFrame(f) {
1499    var x = f.querySelector('.title .close');
1500    if (x) { x.click(); }
1501  }
1502  // (1) Make "Menu" a toggle. The plugin's handler only opens; pre-empt it in
1503  // the capture phase and stop propagation so it never re-opens.
1504  document.addEventListener('click', function (e) {
1505    if (!e.target || !e.target.closest) return;
1506    if (!e.target.closest('a.mobilenav-main-link')) return;
1507    var f = isOpen();
1508    if (f) { e.preventDefault(); e.stopImmediatePropagation(); closeFrame(f); }
1509  }, true);
1510  // (2) Tap outside the menu list (empty drawer area, title, or the scrim/page
1511  // behind) closes.
1512  document.addEventListener('click', function (e) {
1513    var f = isOpen();
1514    if (!f || !e.target || !e.target.closest) return;
1515    if (e.target.closest('.slides-container')) return;          // a menu item
1516    if (e.target.closest('a.mobilenav-main-link')) return;      // the toggle (handled above)
1517    if (e.target.closest('.title .close, .title .back')) return; // native buttons
1518    closeFrame(f);
1519  });
1520  // (3) Escape closes.
1521  document.addEventListener('keydown', function (e) {
1522    if (e.key === 'Escape' || e.keyCode === 27) {
1523      var f = isOpen();
1524      if (f) { closeFrame(f); }
1525    }
1526  });
1527
1528  // (4) Right-edge DRAWER animation. The plugin slides the panel in from off the
1529  // LEFT (animates `right` from the document width to 0), which reads as "flying
1530  // across the page". Override its two slide helpers to slide a partial-width
1531  // panel in/out from the RIGHT edge with a dimming scrim. jQuery + the plugin
1532  // load in <head>, so this ready-callback (registered from the footer) runs
1533  // AFTER the plugin's and safely redefines $.fn.mnShowFrame / mnHideFrame.
1534  if (window.jQuery) jQuery(function ($) {
1535    if (!$.fn.mnShowFrame) return;
1536    function ensureScrim() {
1537      if (document.querySelector('.mobilenav-scrim')) return;
1538      var s = document.createElement('div');
1539      s.className = 'mobilenav-scrim';
1540      document.body.appendChild(s);
1541    }
1542    // The panel is pinned flush right in CSS and slid with a transform toggled by
1543    // `.mn-open`; the resting open state is the class, so it always docks exactly
1544    // at the edge regardless of any stray mobile resize during the slide.
1545    $.fn.mnShowFrame = function () {
1546      var $$ = $(this);
1547      ensureScrim();
1548      $$.css({ display: 'block' });
1549      if ($$[0]) { void $$[0].offsetWidth; }          // reflow at translateX(100%)
1550      $('.mobilenav-scrim').addClass('is-visible');
1551      $$.addClass('mn-open');
1552      return $$;
1553    };
1554    $.fn.mnHideFrame = function () {
1555      var $$ = $('.mobile-nav-frame');
1556      $('.mobilenav-scrim').removeClass('is-visible');
1557      $$.removeClass('mn-open');
1558      // Hide after the slide-out finishes so an off-screen panel can't add
1559      // horizontal overflow; skip if it was reopened in the meantime.
1560      window.setTimeout(function () {
1561        if (!$$.hasClass('mn-open')) { $$.css({ display: 'none' }); }
1562      }, 300);
1563      $('body').css({ 'padding-left': 0 });
1564      return $$;
1565    };
1566  });
1567})();
1568</script>
1568
1569</div>
1570</div><div id="block-2" class="cell widget widget_block widget_custom_html">
1571<ul class="footer-social"><li><a href="https://mastodon.cloud/@toppa" rel="me" aria-label="Mastodon"><svg viewBox="0 0 24 24" width="22" height="22" aria-hidden="true" focusable="false"><path d="M23.268 5.313c-.35-2.578-2.617-4.61-5.304-5.004C17.51.242 15.792 0 11.813 0h-.03c-3.98 0-4.835.242-5.288.309C3.882.692 1.496 2.518.917 5.127.64 6.412.61 7.837.661 9.143c.074 1.874.088 3.745.26 5.611.118 1.24.325 2.47.62 3.68.55 2.237 2.777 4.098 4.96 4.857 2.336.792 4.849.923 7.256.38.265-.061.527-.132.786-.213.585-.184 1.27-.39 1.774-.753a.057.057 0 0 0 .023-.043v-1.809a.052.052 0 0 0-.02-.041.053.053 0 0 0-.046-.01 20.282 20.282 0 0 1-4.709.545c-2.73 0-3.463-1.284-3.674-1.818a5.593 5.593 0 0 1-.319-1.433.053.053 0 0 1 .066-.054c1.517.363 3.072.546 4.632.546.376 0 .75 0 1.125-.01 1.57-.044 3.224-.124 4.768-.422.038-.008.077-.015.11-.024 2.435-.464 4.753-1.92 4.989-5.604.008-.145.03-1.52.03-1.67.002-.512.167-3.63-.024-5.545zm-3.748 9.195h-2.561V8.29c0-1.309-.55-1.976-1.67-1.976-1.23 0-1.846.79-1.846 2.35v3.403h-2.546V8.663c0-1.56-.617-2.35-1.848-2.35-1.112 0-1.668.668-1.67 1.977v6.218H4.822V8.102c0-1.31.337-2.35 1.011-3.12.696-.77 1.608-1.164 2.74-1.164 1.311 0 2.302.504 2.962 1.51l.638 1.07.638-1.07c.66-1.006 1.65-1.51 2.96-1.51 1.13 0 2.043.394 2.74 1.164.675.77 1.012 1.81 1.012 3.12z"/></svg></a></li><li><a href="https://www.linkedin.com/in/toppa/" rel="me" aria-label="LinkedIn"><svg viewBox="0 0 24 24" width="22" height="22" aria-hidden="true" focusable="false"><path d="M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433a2.062 2.062 0 0 1-2.063-2.065 2.064 2.064 0 1 1 2.063 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z"/></svg></a></li><li><a href="https://bsky.app/profile/mtoppa.bsky.social" rel="me" aria-label="Bluesky"><svg viewBox="0 0 24 24" width="22" height="22" aria-hidden="true" focusable="false"><path d="M12 10.8c-1.087-2.114-4.046-6.053-6.798-7.995C2.566.944 1.561 1.266.902 1.565.139 1.908 0 3.08 0 3.768c0 .69.378 5.65.624 6.479.815 2.736 3.713 3.66 6.383 3.364.136-.02.275-.039.415-.056-.138.022-.276.04-.415.056-3.912.58-7.387 2.005-2.83 7.078 5.013 5.19 6.87-1.113 7.823-4.308.953 3.195 2.05 9.271 7.733 4.308 4.267-4.308 1.172-6.498-2.74-7.078a8.741 8.741 0 0 1-.415-.056c.14.017.279.036.415.056 2.67.297 5.568-.628 6.383-3.364.246-.828.624-5.789.624-6.479 0-.688-.139-1.86-.902-2.203-.659-.298-1.664-.62-4.3 1.24C16.046 4.748 13.087 8.687 12 10.8z"/></svg></a></li></ul>
1572</div>		<div class="clear"></div>
1573	</div>
1574</div>
1575			
1576		
1577		
1578	</div>
1579
1580	
1581	
1582	<div id="footer">
1583			<div class="copyright">Copyright Michael Toppa</div>
1584	
1585	<div class="designed">Theme By <a href="http://siteorigin.com">SiteOrigin</a></div>	<div class="clear"></div>
1586</div>
1587	
1588</div>
1589
1590<script type="speculationrules">
1591{"prefetch":[{"source":"document","where":{"and":[{"href_matches":"/*"},{"not":{"href_matches":["/wp-*.php","/wp-admin/*","/wp-content/uploads/*","/wp-content/*","/wp-content/plugins/*","/wp-content/themes/origami/*","/*\\?(.+)"]}},{"not":{"selector_matches":"a[rel~=\"nofollow\"]"}},{"not":{"selector_matches":".no-prefetch, .no-prefetch a"}}]},"eagerness":"conservative"}]}
1592</script>
1592
1593		<style>
1594			:root {
1595				-webkit-user-select: none;
1596				-webkit-touch-callout: none;
1597				-ms-user-select: none;
1598				-moz-user-select: none;
1599				user-select: none;
1600			}
1601		</style>
1602		
1602<script type="text/javascript">
1603			/*<![CDATA[*/
1604			document.oncontextmenu = function(event) {
1605				if (event.target.tagName != 'INPUT' && event.target.tagName != 'TEXTAREA') {
1606					event.preventDefault();
1607				}
1608			};
1609			document.ondragstart = function() {
1610				if (event.target.tagName != 'INPUT' && event.target.tagName != 'TEXTAREA') {
1611					event.preventDefault();
1612				}
1613			};
1614			/*]]>*/
1615		</script>
1615
1616		
1617	
1617<script type="text/javascript">
1618		window.WPCOM_sharing_counts = {"https://toppa.com/archives/":568};
1619	</script>
1619
1620				
1620<script id="wp-hooks-js" src="https://toppa.com/wp-includes/js/dist/hooks.min.js?ver=7496969728ca0f95732d"></script>
vendor: 1 bytes, line 1620
1620
1621<script id="wp-i18n-js" src="https://toppa.com/wp-includes/js/dist/i18n.min.js?ver=781d11515ad3d91786ec"></script>
vendor: 1 bytes, line 1621
1621
1622<script id="wp-i18n-js-after">
1623wp.i18n.setLocaleData( { 'text direction\u0004ltr': [ 'ltr' ] } );
1624//# sourceURL=wp-i18n-js-after
1625</script>
vendor: 1 bytes, line 1625
1625
1626<script id="swv-js" src="https://toppa.com/wp-content/plugins/contact-form-7/includes/swv/js/index.js?ver=6.1.7"></script>
vendor: 1 bytes, line 1626
1626
1627<script id="contact-form-7-js-before">
1628var wpcf7 = {
1629    "api": {
1630        "root": "https:\/\/toppa.com\/wp-json\/",
1631        "namespace": "contact-form-7\/v1"
1632    },
1633    "cached": 1
1634};
1635//# sourceURL=contact-form-7-js-before
1636</script>
vendor: 1 bytes, line 1636
1636
1637<script id="contact-form-7-js" src="https://toppa.com/wp-content/plugins/contact-form-7/includes/js/index.js?ver=6.1.7"></script>
vendor: 1 bytes, line 1637
1637
1638<script async data-wp-strategy="async" fetchpriority="low" id="comment-reply-js" src="https://toppa.com/wp-includes/js/comment-reply.min.js?ver=d2126fa4b831f581e91c64a56fa882f9"></script>
vendor: 1 bytes, line 1638
1638
1639<script id="jetpack-stats-js-before">
1640_stq = window._stq || [];
1641_stq.push([ "view", {"v":"ext","blog":"1556069","post":"568","tz":"-5","srv":"toppa.com","j":"1:16.2"} ]);
1642_stq.push([ "clickTrackerInit", "1556069", "568" ]);
1643//# sourceURL=jetpack-stats-js-before
1644</script>
vendor: 1 bytes, line 1644
1644
1645<script data-wp-strategy="defer" defer fetchpriority="low" id="jetpack-stats-js" src="https://stats.wp.com/e-202640.js"></script>
vendor: 1 bytes, line 1645
1645
1646<script id="sharing-js-js-extra">
1647var sharing_js_options = {"lang":"en","counts":"1","is_stats_active":"1"};
1648//# sourceURL=sharing-js-js-extra
1649</script>
vendor: 1 bytes, line 1649
1649
1650<script id="sharing-js-js" src="https://toppa.com/wp-content/plugins/jetpack/_inc/build/sharedaddy/sharing.min.js?ver=16.2"></script>
vendor: 1 bytes, line 1650
1650
1651<script id="sharing-js-js-after">
1652window.WPCOM_sharing_popups = window.WPCOM_sharing_popups || {};
1653window.WPCOM_sharing_popups[ "bluesky" ] = "menubar=1,resizable=1,width=600,height=400";
1654window.WPCOM_sharing_popups = window.WPCOM_sharing_popups || {};
1655window.WPCOM_sharing_popups[ "mastodon" ] = "menubar=1,resizable=1,width=460,height=400";
1656window.WPCOM_sharing_popups = window.WPCOM_sharing_popups || {};
1657window.WPCOM_sharing_popups[ "linkedin" ] = "menubar=1,resizable=1,width=580,height=450";
1658window.WPCOM_sharing_popups = window.WPCOM_sharing_popups || {};
1659window.WPCOM_sharing_popups[ "facebook" ] = "menubar=1,resizable=1,width=600,height=400";
1660window.WPCOM_sharing_popups = window.WPCOM_sharing_popups || {};
1661window.WPCOM_sharing_popups[ "threads" ] = "menubar=1,resizable=1,width=600,height=400";
1662window.WPCOM_sharing_popups = window.WPCOM_sharing_popups || {};
1663window.WPCOM_sharing_popups[ "twitter" ] = "menubar=1,resizable=1,width=600,height=350";
1664window.WPCOM_sharing_popups = window.WPCOM_sharing_popups || {};
1665window.WPCOM_sharing_popups[ "tumblr" ] = "menubar=1,resizable=1,width=450,height=450";
1666//# sourceURL=sharing-js-js-after
1667</script>
vendor: 1 bytes, line 1667
1667
1668<script id="wp-emoji-settings" type="application/json">
1669{"baseUrl":"https://s.w.org/images/core/emoji/17.0.2/72x72/","ext":".png","svgUrl":"https://s.w.org/images/core/emoji/17.0.2/svg/","svgExt":".svg","source":{"concatemoji":"https://toppa.com/wp-includes/js/wp-emoji-release.min.js?ver=d2126fa4b831f581e91c64a56fa882f9"}}
1670</script>
vendor: 1 bytes, line 1670
1670
1671<script type="module">
1672/*! This file is auto-generated */
1673var e="script#wp-emoji-settings",t=document.querySelector(e);if(!(t instanceof HTMLScriptElement))throw new Error("Element missing: "+e);const r=JSON.parse(t.text),s=(window._wpemojiSettings=r,"wpEmojiSettingsSupports"),o=["flag","emoji"];function i(e){try{var t={supportTests:e,timestamp:(new Date).valueOf()};sessionStorage.setItem(s,JSON.stringify(t))}catch(e){}}function c(e,t,n){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);t=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data);e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(n,0,0);const r=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data);return t.every((e,t)=>e===r[t])}function p(e,t){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);var n=e.getImageData(16,16,1,1);for(let e=0;e<n.data.length;e++)if(0!==n.data[e])return!1;return!0}function u(e,t,n,r){switch(t){case"flag":return n(e,"\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f","\ud83c\udff3\ufe0f\u200b\u26a7\ufe0f")?!1:!n(e,"\ud83c\udde8\ud83c\uddf6","\ud83c\udde8\u200b\ud83c\uddf6")&&!n(e,"\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f","\ud83c\udff4\u200b\udb40\udc67\u200b\udb40\udc62\u200b\udb40\udc65\u200b\udb40\udc6e\u200b\udb40\udc67\u200b\udb40\udc7f");case"emoji":return!r(e,"\ud83e\u1fac8")}return!1}function f(e,t,n,r){let a;const s=(a="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?new OffscreenCanvas(300,150):document.createElement("canvas")).getContext("2d",{willReadFrequently:!0}),o=(s.textBaseline="top",s.font="600 32px Arial",{});return e.forEach(e=>{o[e]=t(s,e,n,r)}),o}function a(e){var t=document.createElement("script");t.src=e,t.defer=!0,document.head.appendChild(t)}r.supports={everything:!0,everythingExceptFlag:!0},new Promise(t=>{let n=function(){try{var e=JSON.parse(sessionStorage.getItem(s));if("object"==typeof e&&"number"==typeof e.timestamp&&(new Date).valueOf()<e.timestamp+604800&&"object"==typeof e.supportTests)return e.supportTests}catch(e){}return null}();if(!n){if("undefined"!=typeof Worker&&"undefined"!=typeof OffscreenCanvas&&"undefined"!=typeof URL&&URL.createObjectURL&&"undefined"!=typeof Blob)try{var e="postMessage("+f.toString()+"("+[JSON.stringify(o),u.toString(),c.toString(),p.toString()].join(",")+"));",r=new Blob([e],{type:"text/javascript"});const a=new Worker(URL.createObjectURL(r),{name:"wpTestEmojiSupports"});return void(a.onmessage=e=>{i(n=e.data),a.terminate(),t(n)})}catch(e){}i(n=f(o,u,c,p))}t(n)}).then(e=>{for(const n in e)r.supports[n]=e[n],r.supports.everything=r.supports.everything&&r.supports[n],"flag"!==n&&(r.supports.everythingExceptFlag=r.supports.everythingExceptFlag&&r.supports[n]);var t;r.supports.everythingExceptFlag=r.supports.everythingExceptFlag&&!r.supports.flag,r.supports.everything||((t=r.source||{}).concatemoji?a(t.concatemoji):t.wpemoji&&t.twemoji&&(a(t.twemoji),a(t.wpemoji)))});
1674//# sourceURL=https://toppa.com/wp-includes/js/wp-emoji-loader.min.js
1675</script>
vendor: 1 bytes, line 1675
1675
1676<script>(function(){function c(){var b=a.contentDocument||(a.contentWindow&&a.contentWindow.document);if(b){var d=b.createElement('script');d.innerHTML="window.__CF$cv$params={r:'a440641b5b14c5db',t:'MTc5MDkwOTMzNg=='};var a=document.createElement('script');a.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);";b.getElementsByTagName('head')[0].appendChild(d)}}if(document.body){var a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&&(document.onreadystatechange=e,c())}}}})();</script>
1676</body>
1677</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.