.sitemap_tags { display: flex; flex-direction: row; gap: 0.5rem; align-items: center; margin-left: auto; } .sitemap_tag { padding: 0.2rem; background: transparent; color: var(--color); border-radius: 0; font-size: 0.7rem; font-style: italic; border: 1.5px solid var(--theme-btn-border); opacity: 0.7; } .sitemap_tag p { margin: 0; display: flex; align-items: center; flex-wrap: wrap; gap: 0.5rem; font-size: 0.75rem; } .org-ul { list-style: none; padding: 0; } .org-ul > li { display: flex; flex-direction: row; flex-wrap: wrap; align-items: center; gap: 0.25rem; position: relative; margin-bottom: 1rem; } .org-ul > li > p { margin: 0; font-size: 0.5rem; width: 100%; } .org-ul > li > p > a { color: var(--link-color); text-decoration: none; font-weight: 600; font-size: 1rem; } .org-ul > li > p > a:hover { text-decoration: underline; } .org-ul > li > p > a:after { text-decoration: underline; } .org-article-title { width: 100%; text-align: right; } #tag-filter-container { display: flex; flex-direction: row; flex-wrap: wrap; gap: 0.75rem; } .tag-filter-item { display: inline-flex; align-items: center; padding: 0.2rem 0.6rem; background: transparent; color: var(--color); font-size: 0.75rem; font-style: italic; border: 1.5px solid var(--color); cursor: pointer; user-select: none; transition: opacity 0.15s ease; } .tag-filter-item:hover { opacity: 0.7; } .tag-filter-item.disabled { opacity: 0.3; text-decoration: line-through; } .tag-filter-item.disabled:hover { opacity: 0.5; } .post-date { position: absolute; bottom: 0.75rem; right: 1rem; font-size: 0.75rem; color: var(--color); opacity: 0.6; font-style: italic; } .org-ul > li > .sitemap_date, .org-ul > li > .sitemap_tag { display: inline-flex; } .sitemap_date { font-size: 0.8rem; color: var(--color); font-style: italic; opacity: 0.6; } .sitemap_date p { margin: 0; } .sitemap_date p::before { content: 'created on '; } .org-ul > li > .sitemap_date + .sitemap_tag { margin-left: 0.75rem; } /* --- Reading list (src/pages/reading.astro) --- */ .reading-year { margin-bottom: 2.5rem; } .reading-year > h2 { margin-bottom: 1rem; } .reading-year-body { padding-left: 1.5rem; } /* The shared .org-ul > li > p is 0.5rem, so vertical-align can't center the status dot against the 1rem title. Flex the row instead. */ .reading-year-body .org-ul > li > p { display: flex; align-items: center; flex-wrap: wrap; } .reading-year-body .org-ul > li > p > a { min-width: 0; } .reading-subhead { margin-top: 1.5rem; margin-bottom: 1rem; opacity: 0.8; } /* .org-ul > li > p shrinks to 0.5rem so the anchor can set its own size; these siblings have to restate theirs. */ .reading-title { font-size: 1rem; font-weight: 600; } .reading-author { font-size: 0.9rem; font-style: italic; opacity: 0.75; margin-left: 0.4rem; } .reading-note { width: 100%; font-size: 0.8rem; font-style: italic; color: var(--color); opacity: 0.6; } .reading-isbn { width: 100%; font-size: 0.75rem; opacity: 0.55; } .reading-isbn a { color: var(--color); text-decoration: none; font-family: monospace; } .reading-isbn a:hover { text-decoration: underline; opacity: 1; } /* Status dot sitting to the left of the title. Sized in rem because the enclosing .org-ul > li > p drops to 0.5rem. */ .reading-status { display: inline-flex; align-items: center; justify-content: center; position: relative; flex: 0 0 auto; width: 0.9rem; height: 0.9rem; border-radius: 50%; margin-right: 0.5rem; vertical-align: middle; } .reading-status--done { background: #3fa34d; opacity: 0.8; } .reading-status--done svg { width: 70%; height: 70%; fill: none; stroke: #fff; stroke-width: 2.4; stroke-linecap: round; stroke-linejoin: round; } /* "Recording" indicator: a slow pulse plus an expanding halo. */ .reading-status--reading { background: #e2543a; animation: reading-blink 2.4s ease-in-out infinite; } .reading-status--reading::after { content: ''; position: absolute; inset: 0; border-radius: 50%; animation: reading-halo 2.4s ease-out infinite; } @keyframes reading-blink { 0%, 100% { opacity: 1; } 50% { opacity: 0.4; } } @keyframes reading-halo { 0% { box-shadow: 0 0 0 0 rgba(226, 84, 58, 0.5); } 70% { box-shadow: 0 0 0 0.45rem rgba(226, 84, 58, 0); } 100% { box-shadow: 0 0 0 0 rgba(226, 84, 58, 0); } } @media (prefers-reduced-motion: reduce) { .reading-status--reading, .reading-status--reading::after { animation: none; } }