@font-face { font-display: swap; font-family: 'Share Tech Mono'; font-style: normal; font-weight: 400; src: url('/assets/fonts/share-tech-mono-v15-latin-regular.woff2') format('woff2'); } @font-face { font-display: swap; font-family: 'Ubuntu'; font-style: normal; font-weight: 400; src: url('/assets/fonts/ubuntu-v20-latin-regular.woff2') format('woff2'); } @font-face { font-display: swap; font-family: 'Ubuntu'; font-style: normal; font-weight: 700; src: url('/assets/fonts/ubuntu-v20-latin-700.woff2') format('woff2'); } * { box-sizing: border-box; } body { font-family: Ubuntu, sans-serif; padding: 0; margin: 0; background: #eee; } @media screen and (max-device-width: 560px) { body { margin: 0; } } h1.primary { position: relative; font-family: 'Share Tech Mono', monospace; text-align: center; font-size: 100px; color: #555; font-weight: 400; display: block; margin-left: auto; margin-right: auto; } h1.primary > a { color: inherit; text-decoration: none; } @media screen and (max-device-width: 930px) { h1.primary { width: 500px; } } @media screen and (max-device-width: 560px) { h1.primary { font-size: 55px; max-width: 240px; width: auto; } } a { color: #3a5be6; } a:visited { color: revert; } a[href^="https://"]:not(:has(*))::after { content: ''; display: inline-block; vertical-align: super; width: 8px; height: 7px; mask-image: url("data:image/svg+xml,%3Csvg width='56.6' height='56.6' viewBox='0 0 56.6 56.6' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M 41.7 23.3 L 8.3 56.6 L 0 48.3 L 33.3 15 L 0.4 12.7 L 13.1 0 L 54.3 2.4 L 56.6 43.5 L 43.9 56.2 L 41.7 23.3 Z'/%3E%3C/svg%3E"); mask-size: contain; mask-repeat: no-repeat; mask-position: center; background-color: currentColor; } img { display: block; width: 100%; height: auto; object-fit: scale-down; } svg { object-fit: contain; object-position: 50% 50%; } ul { list-style-type: circle; } iframe { border: 0; display: block; background: ghostwhite; } x-3d-model { display: block; background: #fafafa; width: 100%; aspect-ratio: 5/3; } x-3d-model > canvas { width: 100% !important; height: 100% !important; } x-post-list { position: relative; display: block; background: #FFF; padding: 20px; max-width: 800px; margin: 0 auto 50px; } x-post-list a { text-decoration: none; } x-post-list > article { align-items: center; display: flex; padding: 12px; } x-post-list > article time { color: #707070; font-size: 0.9rem; font-family: 'Share Tech Mono', monospace; text-wrap: nowrap; min-width: 60px; } x-post-list > article h1 { display: inline-block; margin: 0 0 0 20px; font-weight: 400; font-size: 1.3rem; } x-post-list > article x-tag-list { flex-grow: 2; margin-left: 20px; text-align: right; font-size: 0.7rem; color: #707070; } @media screen and (max-device-width: 760px) { x-post-list { margin-bottom: 0; } x-post-list > article x-tag-list { display: none; } } x-post-list > .rss-feed-link { position: absolute; top: 4px; right: 4px; width: 16px; height: 16px; } x-year-separator { display: block; text-align: center; margin: 25px 0 25px; font-family: 'Share Tech Mono', monospace; } x-year-separator { overflow: hidden; text-align: center; } x-year-separator::before, x-year-separator::after { background-color: #cdcdcd; content: ""; display: inline-block; height: 1px; position: relative; vertical-align: middle; width: 50%; margin-top: -3px } x-year-separator::before { right: 0.5em; margin-left: -50%; } x-year-separator::after { left: 0.5em; margin-right: -50%; } x-post-list x-year-separator:first-child { margin-top: 0; } body > article { box-sizing: border-box; background-color: #FFF; color: #444; margin: 0 auto 50px; max-width: 700px; padding: 40px 70px 30px; } body > article:has( x-body > :last-child > img, x-body > pre:last-child, x-body > .full-bleed:last-child, x-body > :last-child > x-3d-model, x-body > svg:last-child, x-body > table:last-child ) { padding-bottom: 0; } @media screen and (max-device-width: 560px) { body > article { padding-left: 20px; padding-right: 20px; padding-bottom: 10px; margin-bottom: 0; } } body > article h1 { font-weight: 400; text-align: center; margin: 0 0 40px; font-size: 2.5rem; text-wrap: balance; } body > article h2 { margin-top: 5rem; margin-bottom: 1.6rem; font-size: 1.6rem; } body > article time { display: block; text-align: center; font-size: 0.85rem; margin-bottom: 10px; } body > article x-tag-list { text-align: center; font-size: 0.85rem; color: #8c8c8c; margin-bottom: 50px; } body > article x-body { line-height: 200%; } body > article x-body a { color: #258fb8; } body > article x-body hr { margin: 2rem -50px; border: none; border-top: 1px solid #cdcdcd; } body > article x-body pre { overflow-x: auto; padding: 12px; } body > article x-body > pre { overflow-x: auto; padding: 12px 12px 12px 70px; } body > article x-body table { background: linear-gradient(to bottom, #f8f9fa, #f8f8fa); text-align: left; margin: 0 -70px 0; border-collapse: collapse; font-size: 0.9rem; } body > article x-body table tbody tr { border-top: 1px solid #e4e1e4; } body > article x-body table td, body > article x-body table th { padding: 0 8px; } body > article x-body table tr td:first-child, body > article x-body table tr th:first-child { padding-right: 15px; padding-left: 70px; } body > article x-body img, body > article x-body svg { background: #fafafa; margin: 20px 0; } body > article x-body > blockquote { position: relative; width: calc(100% + 140px); margin: 2rem -70px; padding: 2rem 70px; background-color: #f7f9fb; line-height: 180%; text-align: justify; text-wrap: pretty; } body > article x-body > blockquote::before { content: "\201C"; font-family: 'Share Tech Mono', monospace; position: absolute; top: 10px; left: 20px; color: #258fb8; font-size: 4rem; opacity: 0.2; line-height: 1; } body > article x-body > blockquote::after { content: "\201D"; font-family: 'Share Tech Mono', monospace; position: absolute; bottom: -25px; right: 20px; color: #258fb8; font-size: 4rem; opacity: 0.2; line-height: 1; } body > article x-body > blockquote p { margin: 0; position: relative; } @media screen and (max-device-width: 560px) { body > article x-body > blockquote { width: calc(100% + 40px); margin: 2rem -20px; padding: 1.8rem 20px; } body > article x-body > blockquote::before { left: 10px; top: 5px; font-size: 3rem; } body > article x-body > blockquote::after { right: 10px; bottom: -20px; font-size: 3rem; } } .full-bleed, body > article x-body > pre, body > article x-body img, body > article x-body x-3d-model, body > article x-body table, body > article x-body svg { width: calc(100% + 140px); margin-right: -70px; margin-left: -70px; } @media screen and (max-device-width: 560px) { body > article x-body pre, body > article x-body table { padding-left: 20px; margin-right: -20px; margin-left: -20px; } .full-bleed, body > article x-body pre, body > article x-body table, body > article x-body img, body > article x-body x-3d-model, body > article x-body svg { margin-right: -20px; margin-left: -20px; width: calc(100% + 40px); } body > article x-body img { max-height: 250px; } } x-tag-list { display: block; text-wrap: balance; font-family: 'Share Tech Mono', monospace; } x-tag { display: inline-block; margin-right: 4px; text-transform: uppercase; font-family: 'Share Tech Mono', monospace; } x-tag::before { content: "<"; padding-right: 1px; margin-top: 1px; } x-tag::after { content: ">"; padding-left: 1px; margin-top: 1px; } magic-sparkle { display: inline; color: transparent; background: linear-gradient(90deg, #ff00cc, #3300ff, #00ccff, #ff00cc); background-clip: text; animation: shift 2s linear infinite; } @keyframes shift { to {filter: hue-rotate(360deg);} } @media (prefers-reduced-motion: reduce) { magic-sparkle {animation: none;} } word-definition { display: block; margin: 2rem -70px; padding: 1.5rem 70px; color: #333; line-height: 1.6; background: linear-gradient(to right, rgba(248, 250, 252, 0.8), white); } word-definition > word-syllables { font-family: 'Georgia', serif; display: inline-block; font-size: 2rem; margin-bottom: 0.5rem; color: #2c3e50; letter-spacing: 0.02em; } word-definition > word-type { position: relative; top: -4px; font-family: 'Helvetica', 'Arial', sans-serif; display: inline-block; font-size: 0.85rem; font-style: italic; color: #555; margin-left: 1rem; background: #f5f5f5; padding: 0.2rem 0.6rem; border-radius: 3px; } word-definition > dl { margin: 0.5rem 0 0; padding-left: 0; } word-definition > dl > dd { margin-left: 1.2rem; margin-bottom: 0.8rem; position: relative; line-height: 1.7; }