:root{--paper:#FCFCFA;--ink:#1A1A18;--ink-2:#6E6E68;--hair:#E4E4DE;--seal:#C0392B;--code-str:#57724E;--code-num:#566A7E;--serif:"Noto Serif TC", serif;--sans:"Noto Sans TC", sans-serif;--mono:"JetBrains Mono", "Sarasa Mono TC", monospace}:root[data-theme=dark]{--paper:#14161A;--ink:#D6D4CE;--ink-2:#8B8A84;--hair:#2A2D33;--seal:#D45444;--code-str:#94A98C;--code-num:#8FA3B8}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--paper:#14161A;--ink:#D6D4CE;--ink-2:#8B8A84;--hair:#2A2D33;--seal:#D45444;--code-str:#94A98C;--code-num:#8FA3B8}}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;background:var(--paper);color:var(--ink);font:17px/1.9 var(--sans)}html.theme-fade body,html.theme-fade body *{transition:background-color .2s ease,color .2s ease,border-color .2s ease}a{color:inherit;text-decoration:none}a:focus-visible,button:focus-visible{outline:2px solid var(--seal);outline-offset:2px}@media(prefers-reduced-motion:reduce){*,*::before,*::after{transition:none!important;animation:none!important}}.col{max-width:728px;margin:0 auto;padding:48px 24px 0}@media(min-width:760px){.col{padding-top:88px}}.mono{font-family:var(--mono)}.u-slide{background-image:linear-gradient(var(--seal),var(--seal));background-size:0% 1px;background-position:0 100%;background-repeat:no-repeat;transition:background-size .25s}.u-slide:hover{background-size:100% 1px}.seal{display:flex;align-items:center;justify-content:center;background:var(--seal);color:var(--paper);font-family:var(--serif);font-weight:600;flex:none}.home-header{display:flex;justify-content:space-between;align-items:flex-start;gap:24px;margin-bottom:56px}@media(min-width:760px){.home-header{margin-bottom:88px}}.home-brand{display:flex;flex-direction:column;gap:20px}.home-brand-row{display:flex;align-items:center;gap:16px}.home-brand-row .seal{width:44px;height:44px;font-size:24px}.home-title{margin:0;font:600 30px var(--serif);letter-spacing:.06em}.home-author{font-family:var(--mono);font-size:12.5px;color:var(--ink-2);letter-spacing:.02em}.home-author a:hover{color:var(--seal)}.poem{display:flex;flex-direction:column;gap:10px;font-family:var(--serif);font-size:14px;line-height:1;letter-spacing:.32em;color:var(--ink-2);text-align:right;padding-right:8px;flex:none}@media(max-width:560px){.poem{font-size:12px}}.site-links{display:flex;gap:20px;font-size:13px;color:var(--ink-2)}.site-links a:hover{color:var(--seal)}.top-nav{margin-bottom:48px;display:flex;justify-content:space-between;align-items:center;gap:24px}@media(min-width:760px){.top-nav{margin-bottom:72px}}.top-nav>a{display:inline-flex;align-items:center;gap:12px}.top-nav .seal{width:26px;height:26px;font-size:15px}.top-nav .site-name{font:600 16px var(--serif);letter-spacing:.06em}.year-rule{display:flex;align-items:center;gap:16px;margin:0 0 28px}.year-rule span{font-family:var(--mono);font-size:12px;color:var(--ink-2)}.year-rule::after{content:"";flex:1;height:1px;background:var(--hair)}.post-rows{display:flex;flex-direction:column;gap:22px;margin:0 0 44px;padding:0;list-style:none}.post-row{display:flex;gap:20px;align-items:center;justify-content:space-between}.post-row-text{display:flex;gap:28px;align-items:baseline;min-width:0}.post-row time{font-family:var(--mono);font-size:13px;color:var(--ink-2);flex:0 0 92px}.post-row a{font:17px/1.6 var(--serif)}.row-thumb{width:56px;height:56px;object-fit:contain;padding:3px;border:1px solid var(--hair);flex:none;background:var(--paper)}@media(max-width:560px){.post-row-text{flex-direction:column;gap:5px}.post-row time{flex:none}.row-thumb{width:48px;height:48px}}.page-title{margin:0 0 12px;font:600 26px/1.4 var(--serif)}.page-meta{font-family:var(--mono);font-size:12.5px;color:var(--ink-2);margin-bottom:56px}@media(max-width:560px){.page-title{font-size:22px}.page-meta{font-size:11.5px;margin-bottom:40px}}.article-title{margin:0 0 16px;font:600 34px/1.5 var(--serif)}.article-meta{font-family:var(--mono);font-size:12.5px;color:var(--ink-2);margin-bottom:56px}.article-meta a:hover{color:var(--seal)}@media(max-width:560px){.article-title{font-size:26px}.article-meta{margin-bottom:40px}}.cover{margin:0 0 48px}.cover img{display:block;max-width:100%;max-height:280px;border:1px solid var(--hair);background:var(--paper);padding:12px}.series-box{border:1px solid var(--hair);padding:16px 20px;margin-bottom:40px}.series-box .series-line{font-family:var(--mono);font-size:12px;color:var(--ink-2)}.series-box .series-siblings{display:flex;justify-content:space-between;gap:20px;margin-top:8px;font-size:13px;color:var(--ink-2)}.series-box .series-siblings a:hover{color:var(--seal)}@media(max-width:560px){.series-box .series-siblings{display:none}}.prose{text-wrap:pretty}.prose p{margin:0 0 32px}.prose a{background-image:linear-gradient(var(--seal),var(--seal));background-size:100% 1px;background-position:0 100%;background-repeat:no-repeat}.prose a:hover{color:var(--seal)}.prose h1,.prose h2{font:600 23px/1.5 var(--serif);margin:56px 0 24px}.prose h3{font:600 19px/1.5 var(--serif);margin:44px 0 20px}.prose h1:first-child{margin-top:0}@media(max-width:560px){.prose h1,.prose h2{font-size:20px}.prose h3{font-size:17.5px}}.prose ul,.prose ol{margin:0 0 32px;padding-left:1.4em}.prose li{margin-bottom:8px}.prose blockquote{margin:0 0 32px;padding-left:20px;border-left:2px solid var(--hair);color:var(--ink-2)}.prose img{max-width:100%;height:auto}.prose hr{border:0;border-top:1px solid var(--hair);margin:48px 0}.prose table{border-collapse:collapse;margin:0 0 32px;font-size:15px;display:block;overflow-x:auto}.prose th,.prose td{border:1px solid var(--hair);padding:8px 14px;text-align:left}.prose code{font-family:var(--mono);font-size:14.5px}.prose pre code{font-size:14px}.prose .highlight{position:relative;margin:0 0 32px}.prose .highlight pre{margin:0;padding:20px 24px;border:1px solid var(--hair);background:0 0!important;overflow-x:auto;font:14px/1.7 var(--mono)}.prose .highlight pre code{font-size:14px}.prose .highlight[data-lang]::before{content:attr(data-lang);position:absolute;top:10px;right:14px;font:500 10px var(--mono);text-transform:uppercase;letter-spacing:.14em;color:var(--ink-2);pointer-events:none}.prose>pre{margin:0 0 32px;padding:20px 24px;border:1px solid var(--hair);overflow-x:auto;font:14px/1.7 var(--mono)}@media(min-width:900px){.prose .highlight,.prose>pre{width:760px;margin-left:-40px}}@media(max-width:560px){.prose .highlight,.prose>pre{width:100vw;margin-left:-24px}.prose .highlight pre,.prose>pre{border-left:0;border-right:0}}.chroma .c,.chroma .c1,.chroma .cm,.chroma .ch,.chroma .cs{color:var(--ink-2);font-style:italic}.chroma .k,.chroma .kd,.chroma .kn,.chroma .kr,.chroma .kt,.chroma .kc{font-weight:600}.chroma .s,.chroma .s1,.chroma .s2,.chroma .sb,.chroma .sx,.chroma .sr{color:var(--code-str)}.chroma .m,.chroma .mi,.chroma .mf,.chroma .mh,.chroma .kc{color:var(--code-num)}.chroma .err{color:inherit}.toc{display:none}@media(min-width:1200px){.toc{display:block;position:fixed;top:120px;left:calc(50% + 340px + 88px);width:168px}.toc-label{font:500 10px var(--mono);text-transform:uppercase;letter-spacing:.14em;color:var(--ink-2);margin-bottom:14px}.toc nav ul{margin:0;padding:0;list-style:none}.toc nav ul ul{padding-left:14px}.toc nav li{margin-bottom:9px}.toc nav a{font-size:12px;line-height:1.5;color:var(--ink-2);display:inline-block}.toc nav a:hover{color:var(--ink)}.toc nav a.current{color:var(--ink);position:relative}.toc nav a.current::before{content:"";position:absolute;left:-14px;top:7px;width:5px;height:5px;background:var(--seal)}}.pagenav{display:flex;justify-content:space-between;gap:24px;border-top:1px solid var(--hair);margin-top:72px;padding-top:32px}.pagenav>div{display:flex;flex-direction:column;gap:6px;max-width:46%}.pagenav .pn-label{font-family:var(--mono);font-size:11px;color:var(--ink-2)}.pagenav .pn-next{text-align:right;margin-left:auto}.pagenav a{font:15px/1.6 var(--serif)}@media(max-width:560px){.pagenav{flex-direction:column}.pagenav>div{max-width:100%}.pagenav .pn-next{text-align:left;margin-left:0}}.comments{margin-top:72px}.comments h2{font:600 18px var(--serif);margin:0 0 20px}.comments-placeholder{border:1px solid var(--hair);padding:40px 24px;text-align:center;font-size:13px;color:var(--ink-2)}.archive-groups{display:grid;grid-template-columns:140px 1fr;column-gap:32px;row-gap:56px}.archive-year{font:44px/1 var(--serif);color:var(--ink-2);margin-left:-70px}.archive-groups .post-rows{margin-bottom:0;gap:20px}.archive-groups .post-row a{font:16px/1.6 var(--sans)}@media(max-width:899px){.archive-groups{grid-template-columns:1fr;row-gap:20px}.archive-year{font-size:32px;margin:24px 0 4px}.archive-year:first-child{margin-top:0}}.tag-prose{margin-top:72px;padding-top:40px;border-top:1px solid var(--hair)}.tag-prose h2{font:600 18px var(--serif);margin:0 0 16px}.tag-prose p{margin:0;font-size:15px;line-height:2.1}.tag-prose a:hover{color:var(--seal)}.tag-prose .count{font-family:var(--mono);font-size:12px;color:var(--ink-2)}.tag-prose .t-lg{font-size:17px;font-family:var(--serif)}.tag-prose .t-md{font-size:15px}.tag-prose .t-sm{font-size:13.5px;color:var(--ink-2)}.tag-prose .t-sm+.count{font-size:11px}.contact-rows{display:flex;flex-direction:column;gap:12px;margin-top:56px;padding-top:40px;border-top:1px solid var(--hair)}.contact-row{display:flex;gap:28px;align-items:baseline}.contact-row .label{font-family:var(--mono);font-size:13px;color:var(--ink-2);flex:0 0 92px}.contact-row a{font-size:15px}.contact-row a:hover{color:var(--seal)}@media(max-width:560px){.contact-row .label{flex-basis:64px;font-size:12px}.contact-row a{font-size:14.5px}}.anim .home-brand-row .seal,.anim .home-title,.anim .home-author,.anim .home-brand .site-links,.anim .poem div,.anim .year-rule,.anim .post-row,.anim .archive-year,.anim .article-title,.anim .article-meta,.anim .page-title,.anim .page-meta,.anim .series-box,.anim .cover{opacity:0}.foot{display:flex;align-items:center;gap:24px;flex-wrap:wrap;border-top:1px solid var(--hair);margin-top:96px;padding:24px 0 48px}.foot a{font-size:13px;color:var(--ink-2)}.foot a:hover{color:var(--seal)}.theme-toggle{margin-left:auto;background:0 0;border:0;padding:4px;cursor:pointer;color:var(--ink-2);display:flex}.theme-toggle:hover{color:var(--ink)}.theme-toggle svg{width:16px;height:16px}:root[data-theme=dark] .icon-sun{display:none}:root:not([data-theme=dark]) .icon-moon{display:none}@media(prefers-color-scheme:dark){:root:not([data-theme=light]) .icon-sun{display:none}:root:not([data-theme=light]) .icon-moon{display:block}}