41554 blogs · [ { "id": "01a0874d-236f-732f-a1b7-761b55c59099", "title": "My 2025 in CSS", "url": "https://blog.kizu.dev/my-2025-in-css/", "published_at": "2025-12-31T00:00:00+00:00" }, { "id": "01a0874d-236f-732f-a1b7-761b551f2ce3", "title": "Third Complete November", "url": "https://blog.kizu.dev/third-complete-november/", "published_at": "2025-11-30T00:00:00+00:00" }, { "id": "01a0874d-236f-732f-a1b7-761b54dc62e9", "title": "Build Bridges", "url": "https://blog.kizu.dev/build-bridges/", "published_at": "2025-11-29T00:00:00+00:00" }, { "id": "01a0874d-236f-732f-a1b7-761b54a080ac", "title": "Bolder Links", "url": "https://blog.kizu.dev/bolder-links/", "published_at": "2025-11-28T00:00:00+00:00" }, { "id": "01a0874d-236f-732f-a1b7-761b53ff26a3", "title": "Conditional JSX in Astro", "url": "https://blog.kizu.dev/conditional-jsx-in-astro/", "published_at": "2025-11-27T00:00:00+00:00" }, { "id": "01a0874d-236f-732f-a1b7-761b594a7e66", "title": "Border: 2px double", "url": "https://blog.kizu.dev/border-2px-double/", "published_at": "2025-11-26T00:00:00+00:00" }, { "id": "01a0874d-236f-732f-a1b7-761b5374babe", "title": "Responsive Cyclic Margins", "url": "https://blog.kizu.dev/responsive-cyclic-margins/", "published_at": "2025-11-25T00:00:00+00:00" }, { "id": "01a0874d-236f-732f-a1b7-761b53115882", "title": "Play With Inherit Function", "url": "https://blog.kizu.dev/play-with-inherit-function/", "published_at": "2025-11-24T00:00:00+00:00" }, { "id": "01a0874d-236f-732f-a1b7-761b530c9873", "title": "Photo Walk, April", "url": "https://blog.kizu.dev/walk-april-2025/", "published_at": "2025-11-23T00:00:00+00:00" }, { "id": "01a0874d-236f-732f-a1b7-761b527a26aa", "title": "On Perfectionism and Chaotic Messes", "url": "https://blog.kizu.dev/on-perfectionism-and-chaotic-messes/", "published_at": "2025-11-22T00:00:00+00:00" }, { "id": "01a0874d-236f-732f-a1b7-761b5269e337", "title": "I Want to Rewrite Everything", "url": "https://blog.kizu.dev/i-want-to-rewrite-everything/", "published_at": "2025-11-21T00:00:00+00:00" }, { "id": "01a0874d-236f-732f-a1b7-761b5245ae7d", "title": "Scope for Examples", "url": "https://blog.kizu.dev/scope-for-examples/", "published_at": "2025-11-20T00:00:00+00:00" }, { "id": "01a0874d-236f-732f-a1b7-761b5230eb9e", "title": "Anchoring to a Containing Block", "url": "https://blog.kizu.dev/anchoring-to-a-containing-block/", "published_at": "2025-11-19T00:00:00+00:00" }, { "id": "01a0874d-236f-732f-a1b7-761b5221dd6e", "title": "Minimal Reproductions", "url": "https://blog.kizu.dev/minimal-reproductions/", "published_at": "2025-11-18T00:00:00+00:00" }, { "id": "01a0874d-236f-732f-a1b7-761b516ef6d3", "title": "Whitespace in Code", "url": "https://blog.kizu.dev/whitespace-in-code/", "published_at": "2025-11-17T00:00:00+00:00" }, { "id": "01a0874d-236f-732f-a1b7-761b51497fca", "title": "Preparing Images For Pixelfed", "url": "https://blog.kizu.dev/preparing-images-for-pixelfed/", "published_at": "2025-11-16T00:00:00+00:00" }, { "id": "01a0874d-236f-732f-a1b7-761b511bf4cf", "title": "My Most-Used Obsidian Plugins", "url": "https://blog.kizu.dev/my-most-used-obsidian-plugins/", "published_at": "2025-11-15T00:00:00+00:00" }, { "id": "01a0874d-236f-732f-a1b7-761b51038fb5", "title": "It is OK to Say “CSS Variables” Instead of (or Alongside) “Custom Properties”", "url": "https://blog.kizu.dev/css-variables/", "published_at": "2025-11-14T00:00:00+00:00" }, { "id": "01a0874d-236f-732f-a1b7-761b50e047ae", "title": "Styles For Secondary Interactive Elements", "url": "https://blog.kizu.dev/styles-for-secondary-interactive-elements/", "published_at": "2025-11-13T00:00:00+00:00" }, { "id": "01a0874d-236f-732f-a1b7-761b50bf37a5", "title": "Responsive tab-size", "url": "https://blog.kizu.dev/responsive-tab-size/", "published_at": "2025-11-12T00:00:00+00:00" }, { "id": "01a0874d-236f-732f-a1b7-761b4fd163cf", "title": "Named Container Presence Check", "url": "https://blog.kizu.dev/named-container-presence-check/", "published_at": "2025-11-11T00:00:00+00:00" }, { "id": "01a0874d-236f-732f-a1b7-761b4facf061", "title": "Uneven Inline Paddings", "url": "https://blog.kizu.dev/uneven-inline-paddings/", "published_at": "2025-11-10T00:00:00+00:00" }, { "id": "01a0874d-236f-732f-a1b7-761b4f17e9f5", "title": "Photo Walk, End of March", "url": "https://blog.kizu.dev/walk-end-of-march-2025/", "published_at": "2025-11-09T00:00:00+00:00" }, { "id": "01a0874d-236f-732f-a1b7-761b4e4f7852", "title": "Embedding Bandcamp Tracks", "url": "https://blog.kizu.dev/embedding-bandcamp-tracks/", "published_at": "2025-11-08T00:00:00+00:00" }, { "id": "01a0874d-236f-732f-a1b7-761b4de0237d", "title": "Fixing Baselines", "url": "https://blog.kizu.dev/fixing-baselines/", "published_at": "2025-11-07T00:00:00+00:00" }, { "id": "01a0874d-236f-732f-a1b7-761b58f1f4be", "title": "Box-Decoration-Break", "url": "https://blog.kizu.dev/box-decoration-break/", "published_at": "2025-11-06T00:00:00+00:00" }, { "id": "01a0874d-236f-732f-a1b7-761b4d51f960", "title": "Zombie Styles", "url": "https://blog.kizu.dev/zombie-styles/", "published_at": "2025-11-05T00:00:00+00:00" }, { "id": "01a0874d-236f-732f-a1b7-761b4d0e935b", "title": "Renaming Outer Variables in CSS Functions", "url": "https://blog.kizu.dev/renaming-outer-variables-in-functions/", "published_at": "2025-11-04T00:00:00+00:00" }, { "id": "01a0874d-236f-732f-a1b7-761b4c7779d5", "title": "Inline Custom Identifiers", "url": "https://blog.kizu.dev/inline-custom-identifiers/", "published_at": "2025-11-03T00:00:00+00:00" }, { "id": "01a0874d-236f-732f-a1b7-761b4c57d864", "title": "Photo Walk in March", "url": "https://blog.kizu.dev/walk-march-2025/", "published_at": "2025-11-02T00:00:00+00:00" }, { "id": "01a0874d-236f-732f-a1b7-761b4bde5055", "title": "November, Again", "url": "https://blog.kizu.dev/november-again/", "published_at": "2025-11-01T00:00:00+00:00" }, { "id": "01a0874d-236f-732f-a1b7-761b4b9e73fc", "title": "Fit-to-Width Status Update: Prototype and Issues", "url": "https://blog.kizu.dev/text-fit-update/", "published_at": "2025-10-02T00:00:00+00:00" }, { "id": "01a0874d-236f-732f-a1b7-761b4b00d275", "title": "Functional Capturing", "url": "https://blog.kizu.dev/functional-capturing/", "published_at": "2025-06-03T00:00:00+00:00" }, { "id": "01a0874d-236f-732f-a1b7-761b4a0d3bde", "title": "Future-Proofing Indirect Cyclic Conditions", "url": "https://blog.kizu.dev/future-proofing-indirect-cyclic-conditions/", "published_at": "2025-05-31T00:00:00+00:00" }, { "id": "01a0874d-236f-732f-a1b7-761b58917404", "title": "Fit-to-Width Discussions & Feedback", "url": "https://blog.kizu.dev/fit-to-width-discussions-and-feedback/", "published_at": "2025-05-01T00:00:00+00:00" }, { "id": "01a0874d-236f-732f-a1b7-761b49ab6fed", "title": "Intent to Experiment for Longer", "url": "https://blog.kizu.dev/intent-to-experiment-for-longer/", "published_at": "2025-02-25T00:00:00+00:00" }, { "id": "01a0874d-236f-732f-a1b7-761b49707f2e", "title": "CSS Mixins Everywhere", "url": "https://blog.kizu.dev/css-mixins-everywhere/", "published_at": "2025-01-29T00:00:00+00:00" }, { "id": "01a0874d-236f-732f-a1b7-761b498e8ec4", "title": "Photo Walk in December", "url": "https://blog.kizu.dev/walk-december-2024/", "published_at": "2025-01-15T00:00:00+00:00" }, { "id": "01a0874d-236f-732f-a1b7-761b58309560", "title": "My 2024 in CSS", "url": "https://blog.kizu.dev/my-2024-in-css/", "published_at": "2024-12-31T00:00:00+00:00" }, { "id": "01a0874d-236f-732f-a1b7-761b4873f0f0", "title": "Splash Colour Mixin", "url": "https://blog.kizu.dev/splash-colour-mixin/", "published_at": "2024-12-26T00:00:00+00:00" }, { "id": "01a0874d-236f-732f-a1b7-761b47da49b6", "title": "Embedding Pixelfed, part 3", "url": "https://blog.kizu.dev/embedding-pixelfed-part-3/", "published_at": "2024-11-30T00:00:00+00:00" }, { "id": "01a0874d-236f-732f-a1b7-761b46e3d446", "title": "CSS Math Eval, now Better and Weirder", "url": "https://blog.kizu.dev/css-math-eval-2/", "published_at": "2024-11-29T00:00:00+00:00" }, { "id": "01a0874d-236f-732f-a1b7-761b45e56f07", "title": "Observation: CSS Math Eval", "url": "https://blog.kizu.dev/css-math-eval/", "published_at": "2024-11-28T00:00:00+00:00" }, { "id": "01a0874d-236f-732f-a1b7-761b45aa906a", "title": "Short Lines, Bad Breaks, and CSS", "url": "https://blog.kizu.dev/short-lines-bad-breaks-and-css/", "published_at": "2024-11-27T00:00:00+00:00" }, { "id": "01a0874d-236f-732f-a1b7-761b459f1d05", "title": "Every :has() in my Blog’s CSS", "url": "https://blog.kizu.dev/every-has-in-my-blog-css/", "published_at": "2024-11-26T00:00:00+00:00" }, { "id": "01a0874d-236f-732f-a1b7-761b4531d4dc", "title": "Observation: Sticky Anchor Navigation", "url": "https://blog.kizu.dev/sticky-anchor-navigation/", "published_at": "2024-11-25T00:00:00+00:00" }, { "id": "01a0874d-236f-732f-a1b7-761b44e68eed", "title": "Embedding Pixelfed, part 2", "url": "https://blog.kizu.dev/embedding-pixelfed-part-2/", "published_at": "2024-11-24T00:00:00+00:00" }, { "id": "01a0874d-236f-732f-a1b7-761b447aa177", "title": "Idea: Self-Boosting Image Mastodon Bot", "url": "https://blog.kizu.dev/self-boost-bot/", "published_at": "2024-11-23T00:00:00+00:00" }, { "id": "01a0874d-236f-732f-a1b7-761b442ccf9b", "title": "Managing Bookmarks, part 2", "url": "https://blog.kizu.dev/managing-bookmarks-part-2/", "published_at": "2024-11-22T00:00:00+00:00" }, { "id": "01a0874d-236f-732f-a1b7-761b43bbfe35", "title": "Recent CSS Bookmarks 21: Anchor Positioning", "url": "https://blog.kizu.dev/recent-css-bookmarks-021/", "published_at": "2024-11-21T00:00:00+00:00" }, { "id": "01a0874d-236f-732f-a1b7-761b42deab2f", "title": "Transitions of Inherited Properties", "url": "https://blog.kizu.dev/transitions-of-inherited-properties/", "published_at": "2024-11-20T00:00:00+00:00" }, { "id": "01a0874d-236f-732f-a1b7-761b425d96bd", "title": "Recent CSS Bookmarks 20: Just Three Links", "url": "https://blog.kizu.dev/recent-css-bookmarks-020/", "published_at": "2024-11-19T00:00:00+00:00" }, { "id": "01a0874d-236f-732f-a1b7-761b424e2b86", "title": "Writing About Experiments", "url": "https://blog.kizu.dev/writing-about-experiments/", "published_at": "2024-11-18T00:00:00+00:00" }, { "id": "01a0874d-236f-732f-a1b7-761b418ce2c3", "title": "Repetition and Attribution", "url": "https://blog.kizu.dev/repetition-and-attribution/", "published_at": "2024-11-17T00:00:00+00:00" }, { "id": "01a0874d-236f-732f-a1b7-761b4123120d", "title": "The Problem of Embeddable Interactions", "url": "https://blog.kizu.dev/embedded-interactions/", "published_at": "2024-11-16T00:00:00+00:00" }, { "id": "01a0874d-236f-732f-a1b7-761b579b19ae", "title": "I Added Lightning CSS to This Blog", "url": "https://blog.kizu.dev/added-lightning-css/", "published_at": "2024-11-15T00:00:00+00:00" }, { "id": "01a0874d-236f-732f-a1b7-761b40eb861c", "title": "A good way to hide non-defined custom elements", "url": "https://blog.kizu.dev/non-defined-custom-elements/", "published_at": "2024-11-14T00:00:00+00:00" }, { "id": "01a0874d-236f-732f-a1b7-761b403518fa", "title": "Observation: Inherited Visibility Transition", "url": "https://blog.kizu.dev/inherited-visibility-transition/", "published_at": "2024-11-13T00:00:00+00:00" }, { "id": "01a0874d-236f-732f-a1b7-761b3fc65dc6", "title": "I Will Not Delete My Twitter Account", "url": "https://blog.kizu.dev/i-will-not-delete-my-twitter-account/", "published_at": "2024-11-12T00:00:00+00:00" }, { "id": "01a0874d-236f-732f-a1b7-761b3f2158ef", "title": "Managing Bookmarks, part 1", "url": "https://blog.kizu.dev/managing-bookmarks-part-1/", "published_at": "2024-11-11T00:00:00+00:00" }, { "id": "01a0874d-236f-732f-a1b7-761b572c50b8", "title": "Updated Scroll Markers in the Table of Contents", "url": "https://blog.kizu.dev/toc-scroll-markers/", "published_at": "2024-11-10T00:00:00+00:00" }, { "id": "01a0874d-236f-732f-a1b7-761b3e2d0bd6", "title": "My Mastodon Starter Pack", "url": "https://blog.kizu.dev/my-mastodon-starter-pack/", "published_at": "2024-11-09T00:00:00+00:00" }, { "id": "01a0874d-236f-732f-a1b7-761b3e229832", "title": "Moving to Firefox: the First Anniversary", "url": "https://blog.kizu.dev/moving-to-firefox-first-anniversary/", "published_at": "2024-11-08T00:00:00+00:00" }, { "id": "01a0874d-236f-732f-a1b7-761b3d8d03f3", "title": "Beyond Tellerrand: Quick Notes on Physicality", "url": "https://blog.kizu.dev/notes-on-physicality/", "published_at": "2024-11-07T00:00:00+00:00" }, { "id": "01a0874d-236f-732f-a1b7-761b3c737055", "title": "Recent CSS Bookmarks 19: Container Queries", "url": "https://blog.kizu.dev/recent-css-bookmarks-019/", "published_at": "2024-11-06T00:00:00+00:00" }, { "id": "01a0874d-236f-732f-a1b7-761b3d0a64cf", "title": "Observation: Forced Wrapping", "url": "https://blog.kizu.dev/forced-wrapping/", "published_at": "2024-11-05T00:00:00+00:00" }, { "id": "01a0874d-236f-732f-a1b7-761b3c132b74", "title": "Recent CSS Bookmarks 18: 12 Days of Web CFP, CSS Resets, and Selectors", "url": "https://blog.kizu.dev/recent-css-bookmarks-018/", "published_at": "2024-11-04T00:00:00+00:00" }, { "id": "01a0874d-236f-732f-a1b7-761b3bfa7efd", "title": "Embedding Pixelfed, part 1", "url": "https://blog.kizu.dev/embedding-pixelfed-part-1/", "published_at": "2024-11-03T00:00:00+00:00" }, { "id": "01a0874d-236f-732f-a1b7-761b3be38dc9", "title": "Current Music", "url": "https://blog.kizu.dev/current-music/", "published_at": "2024-11-02T00:00:00+00:00" }, { "id": "01a0874d-236f-732f-a1b7-761b3b102910", "title": "Some Plans", "url": "https://blog.kizu.dev/some-plans/", "published_at": "2024-11-01T00:00:00+00:00" }, { "id": "01a0874d-236f-732f-a1b7-761b3a3d9c61", "title": "Captured Custom Properties", "url": "https://blog.kizu.dev/captured-custom-properties/", "published_at": "2024-09-02T00:00:00+00:00" }, { "id": "01a0874d-236f-732f-a1b7-761b388d6564", "title": "Querying the Color Scheme", "url": "https://blog.kizu.dev/querying-the-color-scheme/", "published_at": "2024-08-29T00:00:00+00:00" }, { "id": "01a0874d-236f-732f-a1b7-761b39a452aa", "title": "Recent CSS Bookmarks 17: Layouts", "url": "https://blog.kizu.dev/recent-css-bookmarks-017/", "published_at": "2024-08-11T00:00:00+00:00" }, { "id": "01a0874d-236f-732f-a1b7-761b38c2d2b6", "title": "Custom Properties and CSS-Wide Keywords", "url": "https://blog.kizu.dev/variables-and-css-wide-keywords/", "published_at": "2024-06-19T00:00:00+00:00" }, { "id": "01a0874d-236f-732f-a1b7-761b38728290", "title": "Recent CSS Bookmarks 16", "url": "https://blog.kizu.dev/recent-css-bookmarks-016/", "published_at": "2024-05-18T00:00:00+00:00" }, { "id": "01a0874d-236e-7342-9b3c-9256be85f9b1", "title": "Recent CSS Bookmarks 15", "url": "https://blog.kizu.dev/recent-css-bookmarks-015/", "published_at": "2024-04-04T00:00:00+00:00" }, { "id": "01a0874d-236e-7342-9b3c-9256bd9f93f1", "title": "Two Invitations", "url": "https://blog.kizu.dev/two-invitations/", "published_at": "2024-03-09T00:00:00+00:00" }, { "id": "01a0874d-236e-7342-9b3c-9256bdc7ffbd", "title": "Weekly Bookmarks 14", "url": "https://blog.kizu.dev/weekly-bookmarks-014/", "published_at": "2024-03-05T00:00:00+00:00" }, { "id": "01a0874d-236e-7342-9b3c-9256bd66b6ae", "title": "Weekly Bookmarks 13", "url": "https://blog.kizu.dev/weekly-bookmarks-013/", "published_at": "2024-02-26T00:00:00+00:00" }, { "id": "01a0874d-236e-7342-9b3c-9256bd107bb7", "title": "Weekly Bookmarks 12", "url": "https://blog.kizu.dev/weekly-bookmarks-012/", "published_at": "2024-02-19T00:00:00+00:00" }, { "id": "01a0874d-236e-7342-9b3c-9256bc9f36b0", "title": "Weekly Bookmarks 11: The Backlog", "url": "https://blog.kizu.dev/weekly-bookmarks-011/", "published_at": "2024-02-11T00:00:00+00:00" }, { "id": "01a0874d-236e-7342-9b3c-9256bbb1b6d9", "title": "Notes on Using Logical Properties and Values", "url": "https://blog.kizu.dev/logical-props/", "published_at": "2024-01-07T00:00:00+00:00" }, { "id": "01a0874d-236e-7342-9b3c-9256bade0a25", "title": "Cap-Height Vertical Align", "url": "https://blog.kizu.dev/cap-height-align/", "published_at": "2024-01-03T00:00:00+00:00" }, { "id": "01a0874d-236e-7342-9b3c-9256b8414541", "title": "My year in CSS", "url": "https://blog.kizu.dev/my-2023-in-css/", "published_at": "2023-12-31T00:00:00+00:00" }, { "id": "01a0874d-236e-7342-9b3c-9256b8a22093", "title": "A Christmas Tree Selector: Prototyping the :nth-sibling() with CSS Nesting", "url": "https://blog.kizu.dev/nth-sibling-christmas-tree/", "published_at": "2023-12-25T00:00:00+00:00" }, { "id": "01a0874d-236e-7342-9b3c-9256ba62f60a", "title": "Weekly Bookmarks 10", "url": "https://blog.kizu.dev/weekly-bookmarks-010/", "published_at": "2023-12-24T00:00:00+00:00" }, { "id": "01a0874d-236e-7342-9b3c-9256b7f29b85", "title": "CSS Scope Issues", "url": "https://blog.kizu.dev/css-scope-issues/", "published_at": "2023-12-21T00:00:00+00:00" }, { "id": "01a0874d-236e-7342-9b3c-9256b9a54b41", "title": "Weekly Bookmarks 9: CSS (as Usual)", "url": "https://blog.kizu.dev/weekly-bookmarks-009/", "published_at": "2023-12-17T00:00:00+00:00" }, { "id": "01a0874d-236e-7342-9b3c-9256b836c909", "title": "My LiveJournal Anniversary", "url": "https://blog.kizu.dev/lj-20-years/", "published_at": "2023-12-12T00:00:00+00:00" }, { "id": "01a0874d-236e-7342-9b3c-9256b99d16bf", "title": "Weekly Bookmarks 8: Mostly CSS", "url": "https://blog.kizu.dev/weekly-bookmarks-008/", "published_at": "2023-12-10T00:00:00+00:00" }, { "id": "01a0874d-236e-7342-9b3c-9256b8df2a58", "title": "Weekly Bookmarks 7: CSS and HTML", "url": "https://blog.kizu.dev/weekly-bookmarks-007/", "published_at": "2023-12-03T00:00:00+00:00" }, { "id": "01a0874d-236e-7342-9b3c-9256b0cc75f2", "title": "One Month of Writing", "url": "https://blog.kizu.dev/one-month-of-writing/", "published_at": "2023-11-30T00:00:00+00:00" }, { "id": "01a0874d-236e-7342-9b3c-9256ab83e27e", "title": "Observation: color-mix and currentColor", "url": "https://blog.kizu.dev/color-mix-current-color/", "published_at": "2023-11-29T00:00:00+00:00" }, { "id": "01a0874d-236e-7342-9b3c-9256b57386ad", "title": "My VS Code Monaspace Font Setup", "url": "https://blog.kizu.dev/vs-code-monaspace-setup/", "published_at": "2023-11-28T00:00:00+00:00" }, { "id": "01a0874d-236e-7342-9b3c-9256b2204b4a", "title": "Scope Selector Nuance", "url": "https://blog.kizu.dev/scope-selector-nuance/", "published_at": "2023-11-27T00:00:00+00:00" }, { "id": "01a0874d-236e-7342-9b3c-9256b76030e4", "title": "Weekly Bookmarks 6: CSS, Typography and Design", "url": "https://blog.kizu.dev/weekly-bookmarks-006/", "published_at": "2023-11-26T00:00:00+00:00" }, { "id": "01a0874d-236e-7342-9b3c-9256b4708a2c", "title": "Space Variable Placeholders", "url": "https://blog.kizu.dev/space-toggle-placeholders/", "published_at": "2023-11-25T00:00:00+00:00" }, { "id": "01a0874d-236e-7342-9b3c-9256ad4ca396", "title": "Extra Nesting Specificity", "url": "https://blog.kizu.dev/extra-nesting-specificity/", "published_at": "2023-11-24T00:00:00+00:00" }, { "id": "01a0874d-236e-7342-9b3c-9256a9f2bd10", "title": "Calculated Fractions (Report the Bugs!)", "url": "https://blog.kizu.dev/calc-fr-unit/", "published_at": "2023-11-23T00:00:00+00:00" }, { "id": "01a0874d-236e-7342-9b3c-9256b472350d", "title": "Space Toggles for Scoping", "url": "https://blog.kizu.dev/space-toggle-scoping/", "published_at": "2023-11-22T00:00:00+00:00" } ] posts Claim your blog
Back to blog.kizu.dev
Blog · corpus.blog/blogs/blog.kizu.dev/posts

blog.kizu.dev

blog.kizu.dev

2025

2024

2023