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 » Feed" href="https://toppa.com/feed/" /> 35<link rel="alternate" type="application/rss+xml" title="Nothing But Words » Comments Feed" href="https://toppa.com/comments/feed/" /> 36<link rel="alternate" type="application/rss+xml" title="Nothing But Words » 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&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&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's blog" class="logo-link"> 1310 <h1 class="logo">Nothing But Words</h1><br/> 1311 <h3 class="logo">Michael Toppa'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&body=https%3A%2F%2Ftoppa.com%2Farchives%2F&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'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, & 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.