:root{--tsuki-bg:#fbfaf7;--tsuki-fg:#1a1a1a;--tsuki-fg-muted:#666;--tsuki-fg-subtle:#6b6b6b;--tsuki-border:#e5e3dd;--tsuki-accent:#4a6fa5;--tsuki-accent-hover:#2c4a7a;--tsuki-code-bg:#f1efe9;--tsuki-selection-bg:#d4dff0;--tsuki-shadow:0 1px 2px rgb(0 0 0 / 0.04), 0 4px 12px rgb(0 0 0 / 0.04);--tsuki-font-sans:"Inter", "Be Vietnam Pro", system-ui, -apple-system, "Segoe UI", "Helvetica Neue", Arial, sans-serif;--tsuki-font-mono:"JetBrains Mono", ui-monospace, "SF Mono", "Cascadia Mono", Menlo, Consolas, monospace;--tsuki-font-serif:"Source Serif 4", Georgia, "Iowan Old Style", serif;--tsuki-fs-xs:0.8125rem;--tsuki-fs-sm:0.9375rem;--tsuki-fs-base:1rem;--tsuki-fs-lg:1.125rem;--tsuki-fs-xl:1.375rem;--tsuki-fs-2xl:1.75rem;--tsuki-fs-3xl:2.25rem;--tsuki-lh-tight:1.3;--tsuki-lh-body:1.7;--tsuki-space-1:0.25rem;--tsuki-space-2:0.5rem;--tsuki-space-3:0.75rem;--tsuki-space-4:1rem;--tsuki-space-6:1.5rem;--tsuki-space-8:2rem;--tsuki-space-12:3rem;--tsuki-space-16:4rem;--tsuki-radius:0.375rem;--tsuki-radius-lg:0.625rem;--tsuki-content-width:42rem;--tsuki-wide-width:64rem;--tsuki-transition:180ms ease}:where([data-theme=dark]){--tsuki-bg:#14151a;--tsuki-fg:#ececec;--tsuki-fg-muted:#a0a0a0;--tsuki-fg-subtle:#777;--tsuki-border:#2a2c33;--tsuki-accent:#8ab0ea;--tsuki-accent-hover:#b1c8f0;--tsuki-code-bg:#1c1e25;--tsuki-selection-bg:#2a3a5a;--tsuki-shadow:0 1px 2px rgb(0 0 0 / 0.2), 0 4px 12px rgb(0 0 0 / 0.25)}@media(prefers-color-scheme:dark){:where(:root:not([data-theme=light])){--tsuki-bg:#14151a;--tsuki-fg:#ececec;--tsuki-fg-muted:#a0a0a0;--tsuki-fg-subtle:#777;--tsuki-border:#2a2c33;--tsuki-accent:#8ab0ea;--tsuki-accent-hover:#b1c8f0;--tsuki-code-bg:#1c1e25;--tsuki-selection-bg:#2a3a5a;--tsuki-shadow:0 1px 2px rgb(0 0 0 / 0.2), 0 4px 12px rgb(0 0 0 / 0.25)}}*,*::before,*::after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;min-height:100vh;font-family:var(--tsuki-font-sans);background:var(--tsuki-bg);color:var(--tsuki-fg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility}img,picture,svg,video,canvas{display:block;max-width:100%;height:auto}button{font:inherit;cursor:pointer}a{color:var(--tsuki-accent);text-decoration:none}a:hover{color:var(--tsuki-accent-hover);text-decoration:underline}::selection{background:var(--tsuki-selection-bg)}ul,ol{padding-inline-start:1.25rem}p,h1,h2,h3,h4,h5,h6{overflow-wrap:break-word}@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}body{font-size:var(--tsuki-fs-base);line-height:var(--tsuki-lh-body);font-feature-settings:"kern","liga","calt","ss01"}h1,h2,h3,h4,h5,h6{line-height:var(--tsuki-lh-tight);font-weight:650;letter-spacing:-.01em;margin-block:var(--tsuki-space-8)var(--tsuki-space-3)}h1{font-size:var(--tsuki-fs-3xl)}h2{font-size:var(--tsuki-fs-2xl)}h3{font-size:var(--tsuki-fs-xl)}h4{font-size:var(--tsuki-fs-lg)}p{margin-block:0 var(--tsuki-space-4)}blockquote{margin-inline:0;padding-inline-start:var(--tsuki-space-4);border-inline-start:3px solid var(--tsuki-border);color:var(--tsuki-fg-muted);font-style:italic}code{font-family:var(--tsuki-font-mono);font-size:.9em;background:var(--tsuki-code-bg);padding:.125em .375em;border-radius:var(--tsuki-radius)}pre{font-family:var(--tsuki-font-mono);font-size:var(--tsuki-fs-sm);line-height:1.55;background:var(--tsuki-code-bg);padding:var(--tsuki-space-4);border-radius:var(--tsuki-radius);overflow-x:auto;position:relative}pre code{background:0 0;padding:0;font-size:inherit}hr{border:none;border-top:1px solid var(--tsuki-border);margin-block:var(--tsuki-space-12)}table{width:100%;border-collapse:collapse;margin-block:var(--tsuki-space-6)}th,td{text-align:start;padding:var(--tsuki-space-2)var(--tsuki-space-3);border-bottom:1px solid var(--tsuki-border)}th{font-weight:600}body{display:grid;grid-template-rows:auto 1fr auto}.site-header,main,.site-footer{padding-inline:var(--tsuki-space-6)}.site-header{display:flex;align-items:center;gap:var(--tsuki-space-4);flex-wrap:wrap;max-width:var(--tsuki-wide-width);margin-inline:auto;width:100%;padding-block:var(--tsuki-space-6);border-bottom:1px solid var(--tsuki-border)}.site-title{font-weight:650;font-size:var(--tsuki-fs-lg);letter-spacing:-.01em;color:var(--tsuki-fg);text-decoration:none}.site-title:hover{text-decoration:none;color:var(--tsuki-accent)}.site-nav{margin-inline-start:auto}.site-nav ul{display:flex;gap:var(--tsuki-space-4);list-style:none;padding:0;margin:0}.site-nav a{color:var(--tsuki-fg-muted)}.site-nav a:hover{color:var(--tsuki-fg)}.site-nav a[aria-current=page]{color:var(--tsuki-fg);font-weight:550}.lang-switcher{display:flex;gap:var(--tsuki-space-2);list-style:none;padding:0;margin:0;font-size:var(--tsuki-fs-sm)}.lang-switcher a{color:var(--tsuki-fg-muted);padding:var(--tsuki-space-1)var(--tsuki-space-2)}.lang-switcher a:hover{color:var(--tsuki-fg)}.lang-switcher a[aria-current=page]{color:var(--tsuki-fg);font-weight:550;text-decoration:none}.site-header-actions{display:flex;align-items:center;gap:var(--tsuki-space-2);margin-inline-start:var(--tsuki-space-3)}.search-button{display:inline-grid;place-items:center;min-width:2.5rem;min-height:2.5rem;border:1px solid var(--tsuki-border);border-radius:999px;color:var(--tsuki-fg-muted);transition:var(--tsuki-transition)}.search-button:hover{color:var(--tsuki-fg);border-color:var(--tsuki-fg-muted);text-decoration:none}.search-button svg{width:1rem;height:1rem}.theme-toggle{background:0 0;border:1px solid var(--tsuki-border);border-radius:999px;min-width:2.5rem;min-height:2.5rem;display:inline-grid;place-items:center;color:var(--tsuki-fg-muted);transition:var(--tsuki-transition)}.theme-toggle:hover{color:var(--tsuki-fg);border-color:var(--tsuki-fg-muted)}main{max-width:var(--tsuki-content-width);margin-inline:auto;width:100%;padding-block:var(--tsuki-space-12)var(--tsuki-space-16)}body.home main,body.list main{max-width:var(--tsuki-wide-width)}.site-footer{max-width:var(--tsuki-wide-width);margin-inline:auto;width:100%;padding-block:var(--tsuki-space-8);border-top:1px solid var(--tsuki-border);color:var(--tsuki-fg-muted);font-size:var(--tsuki-fs-sm);display:flex;justify-content:space-between;flex-wrap:wrap;gap:var(--tsuki-space-3)}.site-footer p{margin:0}.site-footer a{display:inline-block;padding-block:var(--tsuki-space-1)}.list-header{margin-block-end:var(--tsuki-space-8);border-block-end:1px solid var(--tsuki-border);padding-block-end:var(--tsuki-space-6)}.list-title{font-size:var(--tsuki-fs-2xl);margin:0}.list-description{margin:var(--tsuki-space-2)0 0;color:var(--tsuki-fg-muted)}:focus-visible{outline:2px solid var(--tsuki-accent);outline-offset:2px}.skip-link{position:absolute;inset-inline-start:var(--tsuki-space-3);inset-block-start:-3rem;z-index:100;padding:var(--tsuki-space-2)var(--tsuki-space-4);background:var(--tsuki-bg);color:var(--tsuki-fg);border:1px solid var(--tsuki-border);border-radius:var(--tsuki-radius);transition:var(--tsuki-transition)}.skip-link:focus{inset-block-start:var(--tsuki-space-3);text-decoration:none}.post-card{padding-block:var(--tsuki-space-6);border-block-end:1px solid var(--tsuki-border)}.post-card:last-child{border-block-end:none}.post-card-title{font-size:var(--tsuki-fs-xl);margin:0 0 var(--tsuki-space-2);line-height:var(--tsuki-lh-tight)}.post-card-title a{color:var(--tsuki-fg)}.post-card-title a:hover{color:var(--tsuki-accent);text-decoration:none}.post-card-date{display:block;color:var(--tsuki-fg-subtle);font-size:var(--tsuki-fs-sm);margin-block-end:var(--tsuki-space-2)}.post-card-summary{color:var(--tsuki-fg-muted);margin:0}.post-list{list-style:none;padding:0;margin:0}.post-list li{display:block}.post-header{margin-block-end:var(--tsuki-space-8);border-block-end:1px solid var(--tsuki-border);padding-block-end:var(--tsuki-space-6)}.post-title{font-size:var(--tsuki-fs-3xl);margin:0 0 var(--tsuki-space-3);line-height:var(--tsuki-lh-tight)}.post-description{color:var(--tsuki-fg-muted);font-size:var(--tsuki-fs-lg);margin:var(--tsuki-space-3)0 0}.post-meta{display:flex;flex-wrap:wrap;gap:var(--tsuki-space-3);color:var(--tsuki-fg-subtle);font-size:var(--tsuki-fs-sm);align-items:baseline}.post-meta .post-date,.post-meta .reading-time{color:var(--tsuki-fg-subtle)}.post-meta .post-tags a{color:var(--tsuki-fg-muted);margin-inline-end:var(--tsuki-space-1)}.post-content{font-size:var(--tsuki-fs-lg)}.post-content :is(h2,h3,h4){scroll-margin-block-start:6rem}.post-footer{margin-block-start:var(--tsuki-space-12);padding-block-start:var(--tsuki-space-6);border-block-start:1px solid var(--tsuki-border)}.post-tag-list{list-style:none;padding:0;margin:0;display:flex;flex-wrap:wrap;gap:var(--tsuki-space-2)}.post-tag-list a{display:inline-block;padding:var(--tsuki-space-1)var(--tsuki-space-3);background:var(--tsuki-code-bg);border-radius:var(--tsuki-radius);color:var(--tsuki-fg-muted);font-size:var(--tsuki-fs-sm)}.post-tag-list a:hover{color:var(--tsuki-fg);text-decoration:none}.terms-list{list-style:none;padding:0;margin:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(12rem,1fr));gap:var(--tsuki-space-3)}.term-link{display:flex;justify-content:space-between;align-items:baseline;padding:var(--tsuki-space-3)var(--tsuki-space-4);border:1px solid var(--tsuki-border);border-radius:var(--tsuki-radius);color:var(--tsuki-fg);transition:var(--tsuki-transition)}.term-link:hover{border-color:var(--tsuki-accent);text-decoration:none;color:var(--tsuki-accent)}.term-name{font-weight:550}.term-count{color:var(--tsuki-fg-subtle);font-size:var(--tsuki-fs-sm);font-variant-numeric:tabular-nums}.term-prefix{color:var(--tsuki-fg-subtle);margin-inline-end:.125em}.pagination{display:flex;justify-content:center;align-items:center;gap:var(--tsuki-space-3);margin-block-start:var(--tsuki-space-12);font-size:var(--tsuki-fs-sm)}.pagination-pages{display:flex;gap:var(--tsuki-space-2);list-style:none;padding:0;margin:0}.pagination a,.pagination .pagination-current{display:inline-flex;align-items:center;justify-content:center;min-width:2.75rem;min-height:2.75rem;padding-inline:var(--tsuki-space-3);border-radius:var(--tsuki-radius)}.pagination .pagination-current{background:var(--tsuki-fg);color:var(--tsuki-bg);font-weight:600}.pagination .disabled{color:var(--tsuki-fg-muted);cursor:not-allowed}.code-copy{position:absolute;inset-block-start:var(--tsuki-space-2);inset-inline-end:var(--tsuki-space-2);background:var(--tsuki-bg);border:1px solid var(--tsuki-border);border-radius:var(--tsuki-radius);padding:.125rem .5rem;font-size:var(--tsuki-fs-xs);color:var(--tsuki-fg-muted);opacity:0;transition:var(--tsuki-transition)}pre:hover .code-copy,.code-copy:focus-visible{opacity:1}.code-copy:hover{color:var(--tsuki-fg)}.related-posts{margin-block-start:var(--tsuki-space-12);padding-block-start:var(--tsuki-space-6);border-block-start:1px solid var(--tsuki-border)}.related-heading{font-size:var(--tsuki-fs-xl);margin:0 0 var(--tsuki-space-4)}.related-list{list-style:none;padding:0;margin:0;display:grid;gap:0}.related-list .post-card{padding-block:var(--tsuki-space-4)}.heading-anchor{margin-inline-end:var(--tsuki-space-2);color:var(--tsuki-fg-subtle);opacity:0;transition:var(--tsuki-transition);text-decoration:none;font-weight:400}:is(h2,h3,h4):hover .heading-anchor,.heading-anchor:focus-visible{opacity:1}@view-transition{navigation: auto; }@media(prefers-reduced-motion:no-preference){::view-transition-old(root),::view-transition-new(root){animation-duration:180ms;animation-timing-function:cubic-bezier(.2,0,.2,1)}::view-transition-old(root){animation-name:tsuki-fade-out}::view-transition-new(root){animation-name:tsuki-fade-in}}@media(prefers-reduced-motion:reduce){::view-transition-old(root),::view-transition-new(root){animation:none}}@keyframes tsuki-fade-out{to{opacity:0}}@keyframes tsuki-fade-in{from{opacity:0}}