/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial}}}@layer theme{:root,:host{--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-body);--default-mono-font-family:var(--font-mono);--ease-smooth:var(--ease-smooth)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring:where(:not(iframe)){outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}html{scroll-behavior:smooth;scroll-padding-top:5.25rem}body{color:var(--content);min-height:100vh}.post-content ul{list-style:outside}.post-content ol{list-style:decimal}.post-content img{max-width:100%;height:auto}.main{max-width:calc(var(--main-width) + var(--gap) * 2);padding:var(--gap);min-height:calc(100vh - 12rem);margin:auto;position:relative}.top-link{z-index:42;visibility:hidden;opacity:0;place-items:center;width:2rem;height:2rem;transition:opacity .3s,visibility .3s;display:grid;position:fixed;bottom:3rem;right:2rem}.top-link svg{width:12px;height:6px}.pagination-nav{display:flex}#searchbox input{display:block}}@layer components;@layer utilities{.collapse{visibility:collapse}.visible{visibility:visible}.relative{position:relative}.static{position:static}.container{width:100%}@media(min-width:40rem){.container{max-width:40rem}}@media(min-width:48rem){.container{max-width:48rem}}@media(min-width:64rem){.container{max-width:64rem}}@media(min-width:80rem){.container{max-width:80rem}}@media(min-width:96rem){.container{max-width:96rem}}.block{display:block}.grid{display:grid}.hidden{display:none}.inline{display:inline}.table{display:table}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.resize{resize:both}.border{border-style:var(--tw-border-style);border-width:1px}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}}:root{--theme:#fdfdfc;--entry:#fff;--primary:#111;--content:#000000a3;--secondary:#0006;--soft:#0000004d;--code-color:#000000bf;--heading-h4:#0000008c;--img-shadow:none;--line-1:#f2f2f2;--line-2:#ededed;--line-3:#d9d9d9;--border:var(--line-1);--hairline:var(--line-1);--hover-bg:#0000000a;--code-bg:#f8f8f8;--code-inline:#0000000a;--link-underline:var(--line-3);--accent:oklch(55% .13 45);--accent-light:oklch(65% .12 45);--status-live:oklch(53% .12 165);--main-width:592px;--rhythm:1rem;--gap:24px;--ease-smooth:cubic-bezier(.19, 1, .22, 1)}:root[data-theme=dark]{--theme:#121212;--entry:#1b1b1a;--primary:#eceae6;--content:#ffffffa8;--secondary:#ffffff73;--soft:#ffffff47;--code-color:#ffffffc7;--heading-h4:#ffffff8c;--line-1:#ffffff14;--line-2:#ffffff1f;--line-3:#fff3;--hover-bg:#ffffff0d;--code-bg:#1b1b1a;--code-inline:#ffffff12;--accent:oklch(71% .12 45);--accent-light:oklch(79% .1 45);--status-live:oklch(72% .14 165)}body{background-color:var(--theme);background-image:none;transition:background-color .25s,color .25s}.post-entry{background:0 0}::selection{background:var(--line-2);color:var(--primary)}:root{--font-body:"Inter", -apple-system, BlinkMacSystemFont, "PingFang SC", "HarmonyOS Sans SC", "Microsoft YaHei", "Source Han Sans SC", "Noto Sans CJK SC", system-ui, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-display:var(--font-body);--font-quote:"LXGW WenKai", "Kaiti SC", STKaiti, KaiTi, "楷体", serif;--font-mono:ui-monospace, "SF Mono", SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace}body{font-family:var(--font-body);font-feature-settings:"kern" 1;text-spacing-trim:normal;font-size:16px;line-height:1.85}.post-content{color:var(--content);hanging-punctuation:first allow-end last;word-break:normal;overflow-wrap:anywhere;line-break:strict;font-size:1rem;line-height:1.85}.post-content>*+*{margin-top:var(--rhythm)}.post-content strong{color:var(--primary);font-weight:600}.post-content em{font-family:var(--font-quote);color:var(--primary);font-size:1.0625em;font-style:normal}.post-content blockquote{border-left:2px solid var(--line-3);font-family:var(--font-quote);color:var(--secondary);margin:1.25rem 0 0;padding:.2rem 0 .2rem 1.1rem;font-size:1rem}.post-content blockquote p{margin:0}.post-content blockquote p+p{margin-top:.5rem}.post-title,.post-header h1,.post-content h1,.post-content h2,.post-content h3,.post-content h4,.home-title{font-family:var(--font-body);text-wrap:balance;letter-spacing:0;word-break:keep-all;overflow-wrap:anywhere;color:var(--primary)}.post-title{margin-bottom:0;font-size:1.0625rem;font-weight:600;line-height:1.6}.post-content h1{font-size:1.0625rem;font-weight:600;line-height:1.6}.post-content h2{align-items:center;gap:.6rem;font-size:1rem;font-weight:600;line-height:1.6;display:flex;margin-top:calc(var(--rhythm) * 3)!important}.post-content h2:after{content:"";border-top:1px solid var(--line-1);flex:1}.post-content h2+*{margin-top:calc(var(--rhythm) * 1.25)}.post-content h3{color:var(--content);font-size:1rem;font-weight:600;margin-top:calc(var(--rhythm) * 2)!important}.post-content h4{color:var(--heading-h4);font-size:.9375rem;font-weight:600}.post-content a:not(.glightbox){color:inherit;text-decoration:underline;-webkit-text-decoration-color:var(--line-3);text-decoration-color:var(--line-3);text-underline-offset:3px;transition:text-decoration-color .2s var(--ease-smooth);text-decoration-thickness:1px}.post-content a:not(.glightbox):hover{-webkit-text-decoration-color:var(--secondary);text-decoration-color:var(--secondary)}.post-content ul,.post-content ol{padding-inline-start:1.3em}.post-content li+li{margin-top:.35em}.post-content li::marker{color:var(--line-3)}.post-content code{font-family:var(--font-mono);background:var(--code-inline);color:var(--code-color);border-radius:.25rem;padding:.12em .4em;font-size:.85em}.post-content pre{background:var(--code-bg);border:none;border-radius:.5rem}.post-content pre code{color:var(--code-color);background:0 0;padding:.875rem 1rem;font-size:.8125rem;line-height:1.55}.post-content .highlight,.post-content .highlight pre{border-radius:.5rem;background:var(--code-bg)!important}.post-content table{font-size:.875rem}.post-content table th,.post-content table td{border-color:var(--line-1)}.post-content hr{height:0;margin:calc(var(--rhythm) * 2) 0 0;border:none}.post-meta{color:var(--secondary);font-variant-numeric:tabular-nums;margin-top:.25rem;font-size:.8125rem}.post-summary{color:var(--secondary);font-size:.9375rem}:where(a,button,input,textarea,select,summary,[tabindex]):focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:3px;transition:outline-offset .15s}.post-content a:focus-visible{outline-offset:4px}.skip-link{z-index:10000;background:var(--theme);color:var(--primary);border:1px solid var(--accent);border-top:none;border-left:none;border-radius:0 0 6px;padding:10px 16px;font-size:.85rem;font-weight:500;text-decoration:none;transition:transform .2s;position:fixed;top:0;left:0;transform:translateY(-110%)}.skip-link:focus-visible{outline:none;transform:translateY(0)}.nav{flex-wrap:wrap;justify-content:space-between;align-items:center;display:flex}#menu{word-break:keep-all;white-space:nowrap;align-items:center;margin:0;padding:0;list-style:none;display:flex;overflow-x:auto}#menu li+li{margin-inline-start:var(--gap)}#menu a{display:block}.header{z-index:45;background:0 0;border-bottom:none;position:relative}.nav a,.logo a,#menu a,.menu-toggle,#theme-toggle,.logo-text{color:var(--secondary);transition:color .2s}.nav{margin-inline:auto;max-width:calc(var(--main-width) + 2 * var(--gap))!important;padding:1.6rem var(--gap) .4rem!important}.nav-right{order:1;align-items:center;gap:4px;margin-inline-start:var(--gap);display:flex}.menu-toggle{cursor:pointer;color:var(--secondary);background:0 0;border:none;border-radius:4px;width:28px;height:24px;padding:0;display:none;position:relative}.menu-toggle:hover{color:var(--primary)}.hamburger-line{background:currentColor;border-radius:1px;height:2px;transition:transform .35s cubic-bezier(.4,0,.2,1),opacity .2s,width .35s cubic-bezier(.4,0,.2,1);display:block;position:absolute;left:4px}.hamburger-line:first-child{width:20px;top:4px}.hamburger-line:nth-child(2){width:13px;top:11px}.hamburger-line:nth-child(3){width:16px;top:18px}.menu-toggle[aria-expanded=true] .hamburger-line:first-child{transform:translateY(7px)rotate(45deg)}.menu-toggle[aria-expanded=true] .hamburger-line:nth-child(2){opacity:0;transform:translate(8px)}.menu-toggle[aria-expanded=true] .hamburger-line:nth-child(3){width:20px;transform:translateY(-7px)rotate(-45deg)}@media screen and (max-width:640px){.nav{flex-wrap:wrap;align-items:center;padding:1rem 1rem .2rem!important}.nav-right{order:0;margin-left:auto}.menu-toggle{display:flex}#menu{flex-direction:column;order:1;gap:0;width:100%;max-height:0;margin:0;padding:0 0 4px 40px;line-height:1.4;transition:max-height .3s cubic-bezier(.4,0,.2,1);overflow:hidden;display:flex!important}#menu li+li{margin-inline-start:0}#menu li a{padding:10px 0;font-size:15px;display:block}#menu li{opacity:0;transition:opacity .12s,transform .12s;transform:translate(16px)}#menu.open{max-height:400px}#menu.open li{opacity:1;transform:translate(0)}#menu.open li:first-child{transition-delay:30ms}#menu.open li:nth-child(2){transition-delay:60ms}#menu.open li:nth-child(3){transition-delay:90ms}#menu.open li:nth-child(4){transition-delay:.12s}#menu.open li:nth-child(5){transition-delay:.15s}#menu.open li:nth-child(6){transition-delay:.18s}#menu.open li:nth-child(7){transition-delay:.21s}}.logo{align-items:center;display:flex;margin-left:0!important}.logo-link{align-items:center;gap:8px;display:flex!important}.site-avatar{clip-path:circle(50%);object-fit:cover;border-radius:50%;flex-shrink:0;width:26px;height:26px;display:block;margin:0!important;transform:none!important}.logo a{color:var(--primary);font-weight:500;font-size:.875rem!important}.logo-text{color:var(--primary);line-height:32px}#menu{margin-inline:auto 0}#menu li a{font-size:.8125rem}#menu li a:hover{color:var(--primary)}#menu li a span{align-items:center;gap:4px;display:inline-flex}#menu li a span.active{box-shadow:none;color:var(--primary)}#theme-toggle{cursor:pointer;color:var(--secondary);background:0 0;border:none;align-items:center;padding:0;display:flex}#theme-toggle:hover{color:var(--primary)}#theme-toggle svg{width:20px;height:15px}[data-theme=light] #sun{display:none}[data-theme=light] #moon{display:inline-block}[data-theme=dark] #moon{display:none}[data-theme=dark] #sun{display:inline-block}.home-page{padding-top:clamp(1rem,3vw,2.5rem)}.home-intro .home-lede{color:var(--primary);margin:0;font-size:1rem;font-weight:500;line-height:1.85}.home-intro .home-lede p{margin:0;display:inline}.home-bio{color:var(--secondary);max-width:34rem;margin-top:.9rem;font-size:.9375rem;line-height:1.9}.home-bio p{margin:0}.home-bio p+p{margin-top:.6rem}.home-links{margin:1.1rem 0 0}.home-links .social-icons{align-items:center;gap:.95rem;padding:0;display:flex}.home-links .social-icons a,.home-links .social-icons button{cursor:pointer;color:var(--secondary);transition:color .2s var(--ease-smooth);background:0 0;border:none;place-items:center;padding:0;display:grid}.home-links .social-icons a:hover,.home-links .social-icons button:hover{color:var(--primary)}.home-links .social-icons svg{width:18px;height:18px}.blink{font:inherit;color:inherit;cursor:pointer;background:0 0;border:none;padding:0;text-decoration:none;position:relative}.blink:after{content:"";border-bottom:1px solid var(--line-3);transition:border-color .2s var(--ease-smooth);position:absolute;bottom:-1px;left:0;right:0}.blink:hover:after{border-color:var(--secondary)}.home-section{margin-top:3rem}.home-section-head{justify-content:space-between;align-items:baseline;display:flex}.home-section-title{color:var(--secondary);margin:0;font-size:.875rem;font-weight:500}.home-section-more{color:var(--secondary);font-size:.8125rem;text-decoration:none}.home-section-more:hover{color:var(--primary)}.home-gallery{scrollbar-width:none;-webkit-overflow-scrolling:touch;scroll-snap-type:x proximity;gap:.5rem;height:112px;margin-top:.9rem;display:flex;overflow:auto hidden;-webkit-mask-image:linear-gradient(90deg,#000 calc(100% - 40px),#0000 100%);mask-image:linear-gradient(90deg,#000 calc(100% - 40px),#0000)}.home-gallery::-webkit-scrollbar{display:none}.home-gallery-item{width:calc(var(--ar,1) * 112px);scroll-snap-align:start;border-radius:3px;flex:none;height:100%;display:block;overflow:hidden}.home-gallery-item img{object-fit:cover;width:100%;height:100%;transition:opacity .2s;display:block}.home-gallery-item:hover img{opacity:.88}.home-cta{color:var(--secondary);margin-top:3rem;font-size:.8125rem}.home-cta a{color:var(--secondary)}.home-cta a:hover{color:var(--primary)}.ylist{--gutter:5rem;margin:.4rem 0 0;padding:0;list-style:none}.ylist .ygroup{border-bottom:1px solid var(--line-1)}.ylist .ygroup:last-child{border-bottom:none}.ylist .yrows{margin:0;padding:0;list-style:none}.ylist .yrow a{padding:.72rem 0 .72rem var(--gutter);justify-content:space-between;align-items:baseline;gap:1rem;text-decoration:none;display:flex;position:relative}.ylist .yrow a:after{content:"";left:var(--gutter);border-bottom:1px solid var(--line-1);position:absolute;bottom:0;right:0}.ylist .yrow:last-child a:after{border-bottom:none}.ylist .row-year{color:var(--secondary);font-variant-numeric:tabular-nums;visibility:hidden;font-size:.875rem;position:absolute;left:0}.ylist .yrow:first-child .row-year{visibility:visible}.ylist .row-title{color:var(--primary);min-width:0;font-size:.9375rem;font-weight:500;line-height:1.6;transition:opacity .14s}.ylist .row-date{color:var(--secondary);font-variant-numeric:tabular-nums;white-space:nowrap;flex-shrink:0;font-size:.8125rem;transition:opacity .14s}@media(hover:hover)and (min-width:520px){.ylist:hover .row-title,.ylist:hover .row-date{opacity:.3}.ylist .yrow a:hover .row-title,.ylist .yrow a:hover .row-date{opacity:1}}.b-new{color:var(--accent);margin-left:.5em;font-size:.75rem;font-weight:400}.b-note{color:var(--secondary);white-space:nowrap;margin-left:.5em;font-size:.75rem;font-weight:400}.b-live-dot{background:var(--status-live);vertical-align:.15em;border-radius:50%;width:5px;height:5px;margin-right:.3em;animation:2.2s ease-in-out infinite pulse-live;display:inline-block}@media(max-width:520px){.ylist{--gutter:3rem}.ylist .row-year{font-size:.8125rem}}.pagination-nav{color:var(--secondary);font-variant-numeric:tabular-nums;justify-content:space-between;align-items:baseline;margin-top:2rem;padding-top:1rem;font-size:.8125rem;display:flex}.pagination-nav a{color:var(--secondary);text-decoration:none}.pagination-nav a:hover{color:var(--primary)}.pagination-disabled{opacity:.35}.post-content p:has(>img:only-child),.post-content p:has(>a:only-child>img:only-child),.post-content p:has(>.md-figure:only-child){text-align:center}.post-content img{box-shadow:none;cursor:zoom-in;border-radius:4px;height:auto;margin-top:1.5rem;margin-bottom:1.5rem;display:inline-block}.post-content a.glightbox{box-shadow:none!important;border-bottom:none!important;text-decoration:none!important}.post-content .md-figure{margin-top:1.5rem;margin-bottom:1.5rem;display:inline-block}.post-content .md-figure img{margin:0 0 .6rem;display:block}.post-content .md-figcaption{text-align:center;color:var(--secondary);font-size:.75rem;line-height:1.7;font-family:var(--font-body);max-width:48ch;margin:0 auto;display:block}.photo-scroll{scrollbar-width:none;-webkit-overflow-scrolling:touch;gap:12px;width:100vw;margin-left:calc(50% - 50vw);padding:10px calc(50vw - 50%);display:flex;overflow-x:auto;-webkit-mask-image:linear-gradient(90deg,#0000 0,#000 32px calc(100% - 32px),#0000 100%);mask-image:linear-gradient(90deg,#0000 0,#000 32px calc(100% - 32px),#0000)}.photo-scroll::-webkit-scrollbar{display:none}.photo-scroll a{flex-shrink:0;display:block;box-shadow:none!important;border-bottom:none!important}.photo-scroll img{object-fit:cover;aspect-ratio:1;width:300px;height:300px;box-shadow:none;cursor:zoom-in;border-radius:4px;flex-shrink:0;margin:0!important}.post-eyebrow{flex-wrap:wrap;align-items:center;gap:.5em;margin-bottom:.5rem;font-size:.75rem;font-weight:500;line-height:1;display:flex}.post-eyebrow-dot{background:var(--secondary);border-radius:50%;flex-shrink:0;width:5px;height:5px;display:inline-block}.post-eyebrow-dot--live{background:var(--status-live);animation:2.5s ease-in-out infinite pulse-live}.post-eyebrow-label{letter-spacing:.06em;color:var(--secondary)}.post-eyebrow-label--live{color:var(--status-live)}.post-eyebrow-sep{color:var(--soft)}.post-eyebrow-lastmod{color:var(--secondary);font-variant-numeric:tabular-nums;font-weight:400}@keyframes pulse-live{0%,to{opacity:1}50%{opacity:.35}}@media(prefers-reduced-motion:reduce){.post-eyebrow-dot--live{animation:none}}.post-chip{white-space:nowrap;color:var(--secondary);align-items:center;gap:4px;margin-right:.5em;font-size:.75rem;font-weight:400;line-height:1.4;display:inline-flex}.post-chip:before{content:"";background:currentColor;border-radius:50%;flex-shrink:0;width:5px;height:5px;display:inline-block}.post-chip--live{color:var(--status-live)}.post-chip--pinned{color:var(--secondary)}.highlight{position:relative}.copy-code{font-family:var(--font-body);color:var(--secondary);background:var(--code-bg);border:1px solid var(--line-1);cursor:pointer;opacity:0;border-radius:4px;padding:3px 9px;font-size:.71875rem;font-weight:500;transition:opacity .15s,color .15s,border-color .15s;position:absolute;top:8px;right:8px}.highlight:hover .copy-code,.copy-code:focus-visible{opacity:1}.copy-code:hover{color:var(--primary);border-color:var(--line-3)}.copy-code.is-copied{color:var(--accent);border-color:var(--accent);opacity:1}@media(hover:none){.copy-code{opacity:.6}.copy-code:active{opacity:1}}.read-next{margin-top:3rem}.read-next-line{color:var(--secondary);margin:0;font-size:.875rem}.read-next-line a{color:var(--primary);transition:color .2s var(--ease-smooth);font-weight:500;box-shadow:none!important;border-bottom:none!important;text-decoration:none!important}.read-next-line a:hover{color:var(--accent)}.post-footer{margin-top:2.5rem;padding-top:1.6rem;position:relative}.post-footer:before{content:"";background:var(--line-2);width:3.125rem;height:1px;position:absolute;top:0;left:0}.post-tags{flex-wrap:wrap;gap:.4rem 1rem;margin:0;padding:0;list-style:none;display:flex}.post-tags li{margin:0}.post-tags a{color:var(--secondary);font-size:.8125rem;line-height:1.8;display:inline-block;background:0 0!important;border:none!important;padding:0!important}.post-tags a:before{content:"#";opacity:.6}.post-tags a:hover{color:var(--primary);background:0 0!important}.share-buttons{gap:.6rem;margin-top:1rem}.share-buttons svg{width:16px;height:16px;color:var(--secondary)}.share-buttons a:hover svg{color:var(--primary)}.toc-sidebar{display:none}.toc{background:0 0;border:none;margin:1.2rem 0 0;padding:0}.toc details summary{cursor:pointer;color:var(--secondary);margin-inline-start:0;font-size:.8125rem}.toc details summary:hover{color:var(--primary)}.toc .details{display:inline}.toc .inner{margin:.4rem 0 0;padding:0;font-size:.8125rem;line-height:2}.toc .inner ul{margin:0;padding-inline-start:0;list-style:none}.toc .inner ul ul{padding-inline-start:1em}.toc .inner a{color:var(--secondary);text-overflow:ellipsis;max-width:100%;text-decoration:none;display:inline-block;overflow:hidden}.toc .inner a:hover{color:var(--primary)}@media(min-width:1280px){.toc{display:none}.toc-sidebar{top:8.5rem;left:max(1.8rem,calc(50vw - var(--main-width) / 2 - 15rem));z-index:5;opacity:0;pointer-events:none;width:12rem;transition:opacity .4s var(--ease-smooth);display:block;position:fixed}.toc-sidebar[data-scrolled]{opacity:1;pointer-events:auto}.toc-sidebar .toc-content{scrollbar-width:none;max-height:calc(100vh - 12rem);font-size:.8125rem;line-height:2.1;overflow-y:auto}.toc-sidebar .toc-content::-webkit-scrollbar{display:none}.toc-sidebar #TableOfContents ul{margin:0;padding:0;list-style:none}.toc-sidebar #TableOfContents ul ul{padding-inline-start:.9em}.toc-sidebar #TableOfContents a{color:var(--secondary);white-space:nowrap;text-overflow:ellipsis;text-decoration:none;transition:color .15s;display:block;overflow:hidden}.toc-sidebar #TableOfContents a:hover,.toc-sidebar #TableOfContents a.active{color:var(--primary)}}@media(min-width:1280px)and (max-width:1440px){.toc-sidebar{width:10.5rem}}.archive-year{border-bottom:1px solid var(--line-1);grid-template-columns:5rem minmax(0,1fr);column-gap:0;margin-top:0;padding:0;display:grid}.archive-year:last-of-type{border-bottom:none}.archive-year-header{color:var(--secondary);font-variant-numeric:tabular-nums;grid-column:1;margin:0;padding-top:.72rem;font-size:.875rem;font-weight:400;line-height:1.6}.archive-count{color:var(--soft);font-size:.6875rem;top:-.2em}.archive-posts{flex-direction:column;grid-column:2;display:flex}.archive-entry{border-bottom:1px solid var(--line-1);justify-content:space-between;align-items:baseline;gap:1rem;margin:0;padding:.72rem 0;display:flex;position:relative}.archive-entry:last-child{border-bottom:none}.archive-entry-main{min-width:0}.archive-entry-title{color:var(--primary);margin:0;font-size:.9375rem;font-weight:500;line-height:1.6;transition:opacity .14s;display:inline}.archive-entry-desc,.archive-entry-tags{display:none}.archive-meta{color:var(--secondary);font-variant-numeric:tabular-nums;white-space:nowrap;flex-shrink:0;font-size:.8125rem;transition:opacity .14s}.entry-link{position:absolute;inset:0}@media(hover:hover)and (min-width:520px){.archive-posts:hover .archive-entry-title,.archive-posts:hover .archive-meta{opacity:.3}.archive-posts .archive-entry:hover .archive-entry-title,.archive-posts .archive-entry:hover .archive-meta{opacity:1}}.page-header h1{color:var(--primary);font-size:1.0625rem;font-weight:600}.page-header .post-meta{font-size:.8125rem}.archive-yearjump{z-index:20;flex-direction:column;gap:.3rem;display:none;position:fixed;top:50%;right:1.2rem;transform:translateY(-50%)}@media(min-width:1100px){.archive-yearjump{display:flex}}.archive-yearjump-link{color:var(--soft);font-variant-numeric:tabular-nums;font-size:.71875rem;text-decoration:none;transition:color .15s}.archive-yearjump-link:hover,.archive-yearjump-link.is-active{color:var(--primary)}@media(max-width:520px){.archive-year{grid-template-columns:3rem minmax(0,1fr)}.archive-year-header{font-size:.8125rem}}.archive-year>.archive-month{grid-column:2}.archive-month-header{display:none}.archive-month .archive-posts{grid-column:auto}.archive-year>.archive-month:not(:last-child) .archive-entry:last-child{border-bottom:1px solid var(--line-1)}.archive-header-link{color:inherit;text-decoration:none}.post-nav-related{margin-top:2rem}.post-nav-related h3{color:var(--secondary);margin:0 0 .5rem;font-size:.8125rem;font-weight:500}.post-nav-related ul{margin:0;padding:0;list-style:none}.post-nav-related li{justify-content:space-between;align-items:baseline;gap:1rem;padding:.35rem 0;display:flex}.post-nav-related a{color:var(--content);text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:.875rem;text-decoration:none;overflow:hidden}.post-nav-related a:hover{color:var(--primary)}.post-nav-related time{color:var(--secondary);font-variant-numeric:tabular-nums;flex-shrink:0;font-size:.75rem}.wechat-trigger{cursor:pointer;color:inherit;background:0 0;border:none;align-items:center;padding:0;display:inline-flex}.wechat-modal{z-index:9999;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);opacity:0;visibility:hidden;background:#0009;justify-content:center;align-items:center;transition:opacity .2s,visibility 0s linear .2s;display:flex;position:fixed;inset:0}.wechat-modal.active{opacity:1;visibility:visible;transition:opacity .2s,visibility linear}.wechat-modal-content{background:var(--theme);text-align:center;border-radius:12px;width:94%;max-width:680px;padding:20px;transition:transform .25s cubic-bezier(.4,0,.2,1);position:relative;transform:scale(.94);box-shadow:0 8px 32px #0000004d}.wechat-modal.active .wechat-modal-content{transform:scale(1)}@media(prefers-reduced-motion:reduce){.wechat-modal,.wechat-modal-content{transition:none}}.wechat-modal-close{color:var(--secondary);cursor:pointer;background:0 0;border:none;font-size:24px;line-height:1;position:absolute;top:8px;right:12px}.wechat-modal-close:hover{color:var(--primary)}.wechat-modal-content img{background:linear-gradient(100deg,var(--code-bg) 40%,var(--hover-bg) 50%,var(--code-bg) 60%);background-size:200% 100%;border-radius:8px;width:100%;height:auto;animation:1.4s ease-in-out infinite qr-shimmer}.wechat-modal-content img.qr-loaded{background:0 0;animation:none}@keyframes qr-shimmer{0%{background-position:120% 0}to{background-position:-20% 0}}@media(prefers-reduced-motion:reduce){.wechat-modal-content img{animation:none}}@media(max-width:640px){.wechat-modal-content{width:96%;padding:12px}}.wechat-modal-hint{color:var(--secondary);margin-top:12px;font-size:13px}.wechat-modal-hint a{color:var(--primary);text-underline-offset:2px;text-decoration:underline}.follow-cta{text-align:left;margin:.9rem 0 0}.follow-line{color:var(--secondary);margin:0;font-size:.875rem;line-height:1.9}.follow-line-link{font:inherit;cursor:pointer;color:var(--primary);transition:color .2s var(--ease-smooth);background:0 0;border:none;padding:0;font-weight:500}.follow-line-link:hover{color:var(--accent)}.page-404{text-align:center;max-width:560px;margin:clamp(3rem,6vw,6rem) auto;padding:0 1.5rem}.page-404-eyebrow{letter-spacing:.22em;color:var(--accent);margin:0 0 1rem;font-size:.72rem;font-weight:600}.page-404-title{font-family:var(--font-body);text-wrap:balance;margin:0 0 1rem;font-size:1.0625rem;font-weight:600;line-height:1.6}.page-404-desc{color:var(--secondary);text-wrap:pretty;max-width:32em;margin:0 auto 2.5rem;font-size:1rem;line-height:1.75}.page-404-nav{flex-wrap:wrap;justify-content:center;gap:.75rem;display:flex}.page-404-link{color:var(--primary);border:1px solid var(--border);border-radius:6px;padding:.55rem 1.25rem;font-size:.9rem;text-decoration:none;transition:border-color .2s,color .2s,background .2s}.page-404-link:hover{color:var(--accent);border-color:var(--accent);background:var(--accent)}@supports (color:color-mix(in lab,red,red)){.page-404-link:hover{background:color-mix(in oklch,var(--accent) 5%,transparent)}}#searchbox{max-width:680px;margin:0 auto;padding:0 1rem}#searchbox input{width:100%;font-family:var(--font-body);color:var(--primary);border:1px solid var(--border);background:0 0;border-radius:8px;padding:.75rem 1rem;font-size:1rem;font-weight:500;transition:border-color .2s,box-shadow .2s}#searchbox input::placeholder{color:var(--secondary);opacity:.65}#searchbox input:focus,#searchbox input:focus-visible{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent);outline:none}@supports (color:color-mix(in lab,red,red)){#searchbox input:focus,#searchbox input:focus-visible{box-shadow:0 0 0 3px color-mix(in oklch,var(--accent) 18%,transparent)}}#searchResults{flex-direction:column;gap:2px;margin:1.5rem 0 0;padding:0;list-style:none;display:flex}#searchResults li{color:var(--primary);border-radius:6px;margin:0;padding:12px 14px;font-size:1rem;font-weight:500;line-height:1.5;list-style:none;transition:background .15s,box-shadow .15s;position:relative}#searchResults li:hover,#searchResults .focus{background:var(--hover-bg);box-shadow:inset 3px 0 0 var(--accent);border:none;transform:none}#searchResults li:active{transform:none}#searchResults a{outline:none;width:100%;height:100%;position:absolute;inset:0}main .page-header h1:has(+.post-meta+#searchbox),.list main .page-header h1{font-family:var(--font-body);font-size:1.0625rem;font-weight:600}.comments{margin-top:2.5rem}.comments-skeleton{flex-direction:column;gap:.75rem;padding:1rem 0;display:flex}.comments-skeleton-line,.comments-skeleton-box{background:var(--primary)}@supports (color:color-mix(in lab,red,red)){.comments-skeleton-line,.comments-skeleton-box{background:color-mix(in oklch,var(--primary) 6%,transparent)}}.comments-skeleton-line,.comments-skeleton-box{border-radius:4px;animation:1.6s ease-in-out infinite comments-shimmer}.comments-skeleton-line{height:12px}.comments-skeleton-box{border-radius:8px;height:96px}@keyframes comments-shimmer{0%,to{opacity:.6}50%{opacity:1}}@media(prefers-reduced-motion:reduce){.comments-skeleton-line,.comments-skeleton-box{animation:none}}body:has(.gallery-page) .main{max-width:100%;padding:0}.gallery-page{max-width:54rem;margin:0 auto;padding:0 1.5rem}.gallery-filters{flex-wrap:wrap;align-items:baseline;gap:.4rem 1.1rem;margin-top:1.2rem;margin-bottom:1.2rem;display:flex}.gallery-chip{color:var(--secondary);cursor:pointer;background:0 0;border:none;border-radius:0;padding:0;font-family:inherit;font-size:.8125rem;line-height:1.6;transition:color .15s}.gallery-chip:hover{color:var(--primary);border-color:#0000}.gallery-chip.active{color:var(--primary);background:0 0;border-color:#0000;font-weight:500}.gallery-chip-count{opacity:.7;font-variant-numeric:tabular-nums;margin-left:2px;font-size:.6875em}.gallery-chip-timeline{border-style:none;margin-left:.25rem}.gallery-section{margin-bottom:1.6rem}.gallery-section-heading{color:var(--secondary);font-variant-numeric:tabular-nums;border-bottom:none;margin:1.6rem 0 .6rem;padding-bottom:0;font-size:.875rem;font-weight:500}.gallery-count{color:var(--soft);vertical-align:super;white-space:nowrap;margin-left:4px;font-size:.6875em;font-weight:400}.gallery-year-heading{font-size:.875rem}.gallery-month-block{margin-bottom:1rem}.gallery-month-heading{color:var(--secondary);border-bottom:none;margin:.8rem 0 .5rem;padding-bottom:0;font-size:.8125rem;font-weight:400}.gallery-grid{flex-wrap:wrap;gap:.5rem;display:flex}.gallery-grid:after{content:"";flex-grow:10000}.gallery-item{flex-grow:calc(var(--ar,1) * 100);flex-basis:calc(var(--ar,1) * 180px);aspect-ratio:var(--ar,1);min-width:0;animation:.5s both rise-in;animation-delay:calc(var(--enter-stage,0) * 50ms);border-radius:3px;position:relative;overflow:hidden}.gallery-item a{aspect-ratio:auto;width:100%;height:100%;display:block;position:relative;border-bottom:none!important}.gallery-item img{object-fit:cover;width:100%;height:100%;transition:opacity .2s;display:block;box-shadow:none!important;border-radius:3px!important;margin:0!important}.gallery-item:hover img{opacity:.9;transform:none}@media(max-width:640px){.gallery-item{flex-basis:calc(var(--ar,1) * 110px)}}.gallery-overlay{opacity:0;pointer-events:none;background:linear-gradient(#0000,#0000008c);flex-direction:column;justify-content:flex-end;padding:1.6rem .6rem .5rem;transition:opacity .25s;display:flex;position:absolute;bottom:0;left:0;right:0}.gallery-item:hover .gallery-overlay,.gallery-item:focus-within .gallery-overlay{opacity:1}.gallery-overlay-title{color:#fff;font-size:.8125rem;font-weight:500;line-height:1.4}.gallery-overlay-date{color:#ffffffbf;font-variant-numeric:tabular-nums;margin-top:2px;font-size:.6875rem}@media(max-width:639px){.gallery-overlay{opacity:1}}.gallery-empty{text-align:center;color:var(--secondary);padding:4rem 1rem;font-size:.875rem}.gdesc-inner,.gslide-desc{font-family:LXGW WenKai,serif!important}.glightbox-mobile .glightbox-container .ginner-container{border-radius:4px;overflow:hidden;box-shadow:1px 2px 9px #000000a6;width:fit-content!important;max-width:100%!important;height:auto!important;margin:auto!important}.glightbox-mobile .glightbox-container .gslide-image img{max-height:75vh!important}.glightbox-mobile .glightbox-container .gslide-description{order:initial!important;background:#fff!important;flex:none!important;max-width:none!important;max-height:none!important;padding:0!important;position:relative!important;bottom:auto!important}.glightbox-mobile .glightbox-container .gdesc-inner{padding:22px 20px!important}.glightbox-mobile .glightbox-container .gslide-title{color:#000!important;margin-bottom:19px!important;font-size:1em!important;font-weight:400!important;line-height:1.4em!important}.glightbox-mobile .glightbox-container .gslide-desc{color:#000!important;margin-bottom:0!important;font-size:.86em!important;line-height:1.4em!important}.glightbox-mobile .glightbox-container .gslide-desc a{color:#000!important;font-weight:400!important}.glightbox-mobile .glightbox-container .gslide-desc *{color:inherit!important}[data-theme=dark] .goverlay{background:#000000eb}[data-theme=dark] .gdesc-inner{color:#ffffffd9}[data-theme=dark] .gclose,[data-theme=dark] .gnext,[data-theme=dark] .gprev{color:#fffc}[data-theme=dark] .gslide-description{background:var(--entry,#1e1e1e)!important}[data-theme=dark] .gslide-title{color:#ffffffd9!important}[data-theme=dark] .gslide-desc,[data-theme=dark] .gslide-desc *,[data-theme=dark] .gslide-desc a{color:#ffffffa6!important}[data-theme=dark] .glightbox-mobile .glightbox-container .gslide-description{background:var(--entry,#1e1e1e)!important}[data-theme=dark] .glightbox-mobile .glightbox-container .gslide-title{color:#ffffffd9!important}[data-theme=dark] .glightbox-mobile .glightbox-container .gslide-desc,[data-theme=dark] .glightbox-mobile .glightbox-container .gslide-desc *,[data-theme=dark] .glightbox-mobile .glightbox-container .gslide-desc a{color:#ffffffa6!important}@media(prefers-reduced-motion:reduce){.gallery-item,.gallery-filters{animation:none}.gallery-item img{transition:none}}body:before{content:"";background:linear-gradient(to bottom,var(--theme) 0%,var(--theme) 40%,var(--theme) 70%,transparent 100%);height:6rem;position:fixed;top:0;left:0;right:0}@supports (color:color-mix(in lab,red,red)){body:before{background:linear-gradient(to bottom,var(--theme) 0%,color-mix(in srgb,var(--theme) 62%,transparent) 40%,color-mix(in srgb,var(--theme) 28%,transparent) 70%,transparent 100%)}}body:before{pointer-events:none;z-index:40;transition:background .25s}@media(max-width:768px){body:before{height:2.5rem}}.footer{max-width:calc(var(--main-width) + 2 * var(--gap));padding:2.5rem var(--gap) 5rem;text-align:left;color:var(--secondary);margin-inline:auto;font-size:.8125rem}.footer:before{content:"";background:var(--line-2);width:3.125rem;height:1px;margin-bottom:2.375rem;display:block}.foot-stats{font-variant-numeric:tabular-nums;margin:0}.foot-stats a{color:var(--secondary);text-decoration:none}.foot-stats a:hover{color:var(--primary)}.foot-clock{font-variant-numeric:tabular-nums;opacity:0;justify-content:flex-start;align-items:center;gap:.4rem;margin-top:.5rem;transition:opacity .3s;display:flex}.foot-clock.on{opacity:1}.foot-clock svg{width:15px;height:15px;color:var(--secondary)}.foot-clock .icon-c-sun,.foot-clock .icon-c-moon{display:none}.foot-clock.clock-day .icon-c-sun{animation:6s ease-in-out infinite sun-float;display:block}.foot-clock.clock-night .icon-c-moon{animation:8s ease-in-out infinite sun-float;display:block}@keyframes sun-float{0%,to{transform:translateY(0)}50%{transform:translateY(-2px)}}@media(prefers-reduced-motion:no-preference){.home-intro,.home-section,.home-cta,.post-header,.post-content{animation:.5s both rise-in}.home-intro{animation-delay:0s}.home-section:first-of-type{animation-delay:60ms}.home-section:nth-of-type(2){animation-delay:.12s}.home-section:nth-of-type(3){animation-delay:.18s}.home-cta{animation-delay:.24s}.post-header{animation-delay:0s}.post-content{animation-delay:60ms}@keyframes rise-in{0%{opacity:0;transform:translateY(8px)}}}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-thumb{background:0 0;border-radius:3px}body:hover::-webkit-scrollbar-thumb{background:#80808040}.top-link{color:var(--secondary);box-shadow:none;background:0 0}.top-link:hover{color:var(--primary)}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}
