:root{--color-bg:#fff;--color-bg-secondary:#f5f5f5;--color-text:#1a1a1a;--color-text-secondary:#666;--color-primary:#06c;--color-primary-hover:#0052a3;--color-border:#e0e0e0;--color-text-muted:#999;--font-sans:"Pretendard Variable",Pretendard,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Apple SD Gothic Neo","Noto Sans KR",sans-serif;--font-mono:"JetBrains Mono","D2Coding","Fira Code",ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;--font-heading:"JetBrains Mono","Pretendard Variable",Pretendard,"Apple SD Gothic Neo","Noto Sans KR",sans-serif;--font-size-xs:0.75rem;--font-size-sm:0.875rem;--font-size-base:1rem;--font-size-lg:1.25rem;--font-size-xl:1.5rem;--font-size-2xl:2rem;--spacing-xs:0.25rem;--spacing-sm:0.5rem;--spacing-md:1rem;--spacing-lg:1.5rem;--spacing-xl:2rem;--spacing-2xl:3rem;--max-width:1200px;--content-width:768px;--transition-fast:150ms ease;--transition-normal:300ms ease;--radius-sm:4px;--radius-md:8px;--radius-lg:12px;--shadow-sm:0 1px 2px rgb(0 0 0/5%);--shadow-md:0 4px 6px rgba(0,0,0,.1);--shadow-lg:0 10px 15px rgba(0,0,0,.15)}@media(prefers-color-scheme:dark){:root{--color-bg:#1a1a1a;--color-bg-secondary:#2a2a2a;--color-text:#f0f0f0;--color-text-secondary:#a0a0a0;--color-primary:#66b3ff;--color-primary-hover:#9cf;--color-border:#404040;--color-text-muted:#777}}.post-header{margin:0 auto;padding:72px 12px 4px;text-align:left;width:clamp(0px,760px,100%)}.post-header__breadcrumb{color:var(--palette-comment-text);font-family:var(--font-mono);font-size:.78rem}.post-header__path{color:var(--palette-theme)}.post-header__tags{display:flex;flex-wrap:wrap;font-family:var(--font-mono);font-size:.8125rem;gap:14px;margin-top:22px}.post-header__tags a{color:var(--palette-theme)}@media(any-hover:hover)and (any-pointer:fine){.post-header__tags a:hover{text-decoration:underline}}.post-header__title{font-family:var(--font-heading);font-weight:700;letter-spacing:-.02em;line-height:1.25;margin:14px 0 16px}.post-header__meta{align-items:center;color:var(--palette-comment-text);display:flex;flex-wrap:wrap;font-family:var(--font-mono);font-size:.78rem;gap:8px;letter-spacing:.01em}.post-header__category a{color:var(--palette-sub)}@media(any-hover:hover)and (any-pointer:fine){.post-header__category a:hover{color:var(--palette-text)}}.post-header__sep{opacity:.5}.post__cover{margin:28px auto 0;padding:0 12px;position:relative;width:clamp(0px,1080px,100%)}.post__cover:before{backdrop-filter:blur(3px);background:var(--palette-navigation-background);border:1px solid var(--palette-sub-opacity);border-radius:3px;color:var(--palette-grayscale-700);content:"› " attr(data-filename);font-family:var(--font-mono);font-size:11px;left:22px;padding:3px 8px;position:absolute;top:10px;z-index:2}.post__cover img{aspect-ratio:16/9;border:1px solid var(--palette-sub-opacity);border-radius:6px;display:block;height:auto;-o-object-fit:cover;object-fit:cover;width:100%}.post__updated{color:var(--palette-grayscale-400);font-family:var(--font-mono);font-size:.75rem;padding:28px 12px 0}.post__body,.post__updated{margin:0 auto;width:clamp(0px,760px,100%)}.post__body{color:var(--palette-list-text);font-size:1rem;line-height:1.625rem;line-height:1.85;padding:44px 12px 12px;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;word-wrap:break-word}.post__body h1{font-size:2.0275rem;line-height:3.04125rem}.post__body h1,.post__body h2{color:var(--palette-grayscale-900);font-family:var(--font-heading);font-weight:700;letter-spacing:-.02em;margin-bottom:.7em;margin-top:1.8em;scroll-margin-top:90px}.post__body h2{font-size:1.801875rem;line-height:2.7028125rem}.post__body h3{font-size:1.601875rem;line-height:2.4028125rem}.post__body h3,.post__body h4{color:var(--palette-grayscale-900);font-family:var(--font-heading);font-weight:700;letter-spacing:-.02em;margin-bottom:.7em;margin-top:1.8em;scroll-margin-top:90px}.post__body h4{font-size:1.42375rem;line-height:2.135625rem}.post__body h5{font-size:1.265625rem;line-height:1.8984375rem}.post__body h5,.post__body h6{color:var(--palette-grayscale-900);font-family:var(--font-heading);font-weight:700;letter-spacing:-.02em;margin-bottom:.7em;margin-top:1.8em;scroll-margin-top:90px}.post__body h6{font-size:1.125rem;line-height:1.6875rem}.post__body h2:before,.post__body h3:before{color:var(--palette-theme);font-weight:500;opacity:.65}.post__body h2:before{content:"## "}.post__body h3:before{content:"### "}.post__body p{font-size:1rem;line-height:1.625rem;line-height:1.85}.post__body ol,.post__body p,.post__body ul{margin-bottom:1em}.post__body img,.post__body video{height:auto;max-width:100%}.post__body iframe{height:auto;width:100%}.post__body b,.post__body strong{font-weight:600}.post__body small{font-size:90%}.post__body sub{bottom:-.25em}.post__body sup{top:-.5em}.post__body a{color:var(--palette-link);text-decoration:underline;text-decoration-style:dotted;text-underline-offset:3px}@media(any-hover:hover)and (any-pointer:fine){.post__body a:hover{text-decoration-style:solid}}.post__body figure{margin-bottom:1.5em}.post__body code{background-color:var(--palette-main-opacity);border:1px solid var(--palette-sub-opacity);border-radius:2px;color:var(--palette-link);font-family:var(--font-mono);font-size:.86em;padding:1px 6px}.post__body pre code{background-color:inherit;border:0;color:inherit;display:block;padding:0}.post__body hr{background-color:var(--palette-grayscale-200);border:0;height:1px;margin:32px 0}.post__body ol{list-style:decimal;margin-left:1.5em}.post__body ul{list-style:disc;margin-left:1.5em}.post__body blockquote{border-left:2px solid var(--palette-theme);color:var(--palette-sub);margin:0 0 1em;padding:.4em 1em}.post__body blockquote p:last-child{margin-bottom:0}.post__body table{border:1px solid var(--palette-sub-opacity);border-collapse:collapse;border-spacing:0;margin-bottom:1em;width:100%}.post__body table td,.post__body table th{border:1px solid var(--palette-sub-opacity);padding:.5em 1em}.post__body table th{background-color:var(--palette-sub-opacity);font-weight:700}.post__body figure.image-block figcaption{font-size:.79rem;line-height:1.027rem;margin-top:.2em;text-align:center}.post__body .table{overflow-x:auto}.post__body .iframe-container{aspect-ratio:var(--aspect-w,16)/var(--aspect-h,9);margin-bottom:1em;position:relative;width:100%}.post__body .iframe-container iframe{height:100%;left:0;position:absolute;top:0;width:100%}.post-related-posts{margin:0 auto;padding-bottom:32px;width:clamp(0px,880px,100%)}.post-related-posts__more,.post-related-posts__text,.post-related-posts__title{text-align:center}.post-related-posts__title{font-weight:700;margin-bottom:16px}.post-related-posts__title a{text-decoration:underline}.post-related-posts__text{margin-bottom:24px}.post-related-posts__more i{display:inline-block;transition:transform .15s ease-in-out}@media(any-hover:hover)and (any-pointer:fine){.post-related-posts__more a:hover i{transform:translateX(4px)}}.post-toc{background:var(--palette-background-dimmed);border:1px solid var(--palette-sub-opacity);border-radius:6px;margin:18px auto 44px;overflow:hidden;width:clamp(0px,760px,100%)}.post-toc__bar{align-items:center;background:var(--palette-main-opacity);border-bottom:1px solid var(--palette-sub-opacity);color:var(--palette-comment-text);display:flex;font-family:var(--font-mono);font-size:.6875rem;gap:8px;padding:9px 14px}.post-toc__icon{color:var(--palette-theme)}.post-toc__list{display:flex;flex-direction:column;font-family:var(--font-mono);font-size:.84rem;gap:2px;list-style:none;margin:0;padding:12px 16px}.post-toc__item--h3{font-size:.78rem;padding-left:18px}.post-toc__link{color:var(--palette-sub);display:block;padding:4px 0;text-decoration:none;transition:color .15s ease}.post-toc__link:before{content:"· ";opacity:.4}@media(any-hover:hover)and (any-pointer:fine){.post-toc__link:hover{color:var(--palette-text)}}.post-toc__link--active{color:var(--palette-theme)}.post-toc__link--active:before{content:"▸ ";opacity:.7}.post-toc__item--h3 .post-toc__link:before{content:"└ "}.post-toc__item--h3 .post-toc__link--active:before{content:"▸ "}.post-share{align-items:center;display:flex;flex-wrap:wrap;gap:8px;margin:32px auto;max-width:880px}.post-share__label{color:var(--palette-sub);font-family:var(--font-mono);font-size:.8125rem;letter-spacing:.04em;margin-right:4px;text-transform:uppercase}.post-share__button{align-items:center;background:transparent;border:1px solid var(--palette-grayscale-300);border-radius:2px;color:var(--palette-text);cursor:pointer;display:inline-flex;gap:4px;padding:4px 8px;text-decoration:none;transition:all .15s ease}.post-share__button:hover{border-color:var(--palette-theme);color:var(--palette-theme)}pre{background-color:var(--syntax-bg,var(--palette-background-dimmed));border:1px solid var(--palette-sub-opacity);border-radius:4px;font-size:.84rem;line-height:1.7;margin:24px 0;overflow-wrap:anywhere;overflow-x:hidden;padding:46px 24px 24px;position:relative;white-space:pre-wrap}pre:before{background-color:var(--palette-main-opacity);background-image:radial-gradient(circle 4px at 16px 16px,#5a5d64 99%,transparent 100%),radial-gradient(circle 4px at 33px 16px,#5a5d64 99%,transparent 100%),radial-gradient(circle 4px at 50px 16px,var(--palette-theme) 99%,transparent 100%);background-repeat:no-repeat;border-bottom:1px solid var(--palette-sub-opacity);content:"";height:32px;left:0;position:absolute;right:0;top:0}pre code{background:none;font-size:inherit;padding:0;white-space:inherit}.copy-code{background-color:var(--palette-background);border:1px solid var(--palette-sub-opacity);border-radius:2px;color:var(--palette-sub);cursor:pointer;font-family:var(--font-mono);font-size:.7rem;opacity:0;padding:4px 8px;position:absolute;right:8px;top:5px;transition:opacity .15s;z-index:1}.copy-code:focus-visible,pre:hover .copy-code{opacity:1}.copy-code:hover{border-color:var(--palette-theme);color:var(--palette-theme)}:not(pre)>code{background-color:var(--palette-background-dimmed);border-radius:2px;font-size:.875em;padding:.15em .4em}.athl,.hljs{--syntax-bg:#fff;--syntax-fg:#24292e;--syntax-comment:#6a737d;--syntax-string:#032f62;--syntax-keyword:#d73a49;--syntax-function:#6f42c1;--syntax-type:#005cc5;--syntax-constant:#005cc5;--syntax-variable:#e36209;--syntax-operator:#d73a49;--syntax-punctuation:#24292e;--syntax-property:#005cc5;--syntax-tag:#22863a;--syntax-attribute:#6f42c1;--syntax-number:#005cc5;--syntax-boolean:#005cc5;--syntax-error:#cb2431;--syntax-diff-plus:#22863a;--syntax-diff-minus:#cb2431;--syntax-diff-delta:#6f42c1}html[data-theme=dark] .athl,html[data-theme=dark] .hljs{--syntax-bg:#08090c;--syntax-fg:#a9b1d6;--syntax-comment:#565f89;--syntax-string:#9ece6a;--syntax-keyword:#bb9af7;--syntax-function:#7aa2f7;--syntax-type:#2ac3de;--syntax-constant:#ff9e64;--syntax-variable:#c0caf5;--syntax-operator:#89ddff;--syntax-punctuation:#a9b1d6;--syntax-property:#73daca;--syntax-tag:#f7768e;--syntax-attribute:#bb9af7;--syntax-number:#ff9e64;--syntax-boolean:#ff9e64;--syntax-error:#f7768e;--syntax-diff-plus:#9ece6a;--syntax-diff-minus:#f7768e;--syntax-diff-delta:#e0af68}html[data-theme=sepia] .athl,html[data-theme=sepia] .hljs{--syntax-bg:#fdf6e3;--syntax-fg:#657b83;--syntax-comment:#93a1a1;--syntax-string:#2aa198;--syntax-keyword:#859900;--syntax-function:#268bd2;--syntax-type:#b58900;--syntax-constant:#cb4b16;--syntax-variable:#cb4b16;--syntax-operator:#657b83;--syntax-punctuation:#657b83;--syntax-property:#268bd2;--syntax-tag:#268bd2;--syntax-attribute:#b58900;--syntax-number:#d33682;--syntax-boolean:#cb4b16;--syntax-error:#dc322f;--syntax-diff-plus:#859900;--syntax-diff-minus:#dc322f;--syntax-diff-delta:#b58900}.athl,.hljs{background-color:var(--syntax-bg);color:var(--syntax-fg)}.hljs .comment,.hljs .comment-documentation,.hljs .comment-error,.hljs .comment-hint,.hljs .comment-note,.hljs .comment-todo,.hljs .comment-warning{color:var(--syntax-comment);font-style:italic}.hljs .character,.hljs .character-special,.hljs .string,.hljs .string-documentation,.hljs .string-escape,.hljs .string-plain-css,.hljs .string-regexp,.hljs .string-special,.hljs .string-special-path,.hljs .string-special-symbol,.hljs .string-special-symbol-ruby,.hljs .string-special-url,.hljs .string-special-url-html{color:var(--syntax-string)}.hljs .keyword,.hljs .keyword-conditional,.hljs .keyword-conditional-ternary,.hljs .keyword-coroutine,.hljs .keyword-debug,.hljs .keyword-directive,.hljs .keyword-directive-css,.hljs .keyword-directive-define,.hljs .keyword-exception,.hljs .keyword-export,.hljs .keyword-function,.hljs .keyword-import,.hljs .keyword-import-c,.hljs .keyword-import-cpp,.hljs .keyword-modifier,.hljs .keyword-operator,.hljs .keyword-repeat,.hljs .keyword-return,.hljs .keyword-type{color:var(--syntax-keyword);font-weight:600}.hljs .function,.hljs .function-builtin,.hljs .function-builtin-bash,.hljs .function-call,.hljs .function-macro,.hljs .function-method,.hljs .function-method-call,.hljs .function-method-call-php,.hljs .function-method-php{color:var(--syntax-function)}.hljs .constructor,.hljs .constructor-lua,.hljs .constructor-python,.hljs .type,.hljs .type-builtin,.hljs .type-css,.hljs .type-definition,.hljs .type-tag-css{color:var(--syntax-type)}.hljs .constant,.hljs .constant-builtin,.hljs .constant-java,.hljs .constant-macro{color:var(--syntax-constant)}.hljs .variable,.hljs .variable-builtin,.hljs .variable-member,.hljs .variable-parameter,.hljs .variable-parameter-bash,.hljs .variable-parameter-builtin{color:var(--syntax-variable)}.hljs .operator{color:var(--syntax-operator)}.hljs .punctuation-bracket,.hljs .punctuation-delimiter,.hljs .punctuation-delimiter-regex,.hljs .punctuation-special{color:var(--syntax-punctuation)}.hljs .property,.hljs .property-class-css,.hljs .property-css,.hljs .property-id-css,.hljs .property-json,.hljs .property-scss,.hljs .property-toml,.hljs .property-yaml{color:var(--syntax-property)}.hljs .tag,.hljs .tag-attribute,.hljs .tag-builtin,.hljs .tag-delimiter{color:var(--syntax-tag)}.hljs .attribute,.hljs .attribute-builtin{color:var(--syntax-attribute)}.hljs .number,.hljs .number-css,.hljs .number-float{color:var(--syntax-number)}.hljs .boolean{color:var(--syntax-boolean)}.hljs .error{color:var(--syntax-error)}.hljs .diff-plus{color:var(--syntax-diff-plus)}.hljs .diff-minus{color:var(--syntax-diff-minus)}.hljs .diff-delta{color:var(--syntax-diff-delta)}.hljs .label,.hljs .label-yaml{color:var(--syntax-property)}.hljs .import,.hljs .module,.hljs .module-builtin,.hljs .namespace{color:var(--syntax-type)}.hljs .markup,.hljs .markup-environment,.hljs .markup-environment-name{color:var(--syntax-fg)}.hljs .markup-heading,.hljs .markup-heading-1,.hljs .markup-heading-2,.hljs .markup-heading-3,.hljs .markup-heading-4,.hljs .markup-heading-5,.hljs .markup-heading-6{color:var(--syntax-keyword);font-weight:600}.hljs .markup-italic{font-style:italic}.hljs .markup-strong{font-weight:700}.hljs .markup-strikethrough{text-decoration:line-through}.hljs .markup-underline{text-decoration:underline}.hljs .markup-link,.hljs .markup-link-label,.hljs .markup-link-label-html,.hljs .markup-link-url,.hljs .markup-raw,.hljs .markup-raw-block{color:var(--syntax-string)}.hljs .markup-quote{color:var(--syntax-comment);font-style:italic}.hljs .markup-list,.hljs .markup-list-checked,.hljs .markup-list-unchecked{color:var(--syntax-punctuation)}.hljs .markup-math{color:var(--syntax-number)}.prev-next-post{display:flex;flex-wrap:wrap;gap:12px;margin:48px auto;padding:0 16px;width:clamp(0px,880px,100%)}.prev-next-post-post{background:var(--palette-background-dimmed);border:1px solid var(--palette-sub-opacity);border-radius:6px;display:flex;flex:1 1 240px;flex-direction:column;justify-content:center;min-width:0;overflow:hidden;position:relative;text-align:right;transition:border-color .18s ease,transform .18s ease}.prev-next-post-post,.prev-next-post-post:hover{color:var(--palette-text)}.prev-next-post-post--previous{text-align:left}@media(any-hover:hover)and (any-pointer:fine){.prev-next-post-post:hover{border-color:color-mix(in srgb,var(--palette-theme) 55%,transparent);transform:translateY(-2px)}.prev-next-post-post:hover .prev-next-post-post__cover{opacity:.16}}.prev-next-post-post__meta{padding:18px;position:relative;width:100%;z-index:1}.prev-next-post-post__label{align-items:center;color:var(--palette-comment-text);display:flex;flex-direction:row-reverse;font-family:var(--font-mono)}.prev-next-post-post__label i{margin-left:4px}.prev-next-post-post--previous .prev-next-post-post__label{flex-direction:row}.prev-next-post-post--previous .prev-next-post-post__label i{margin-left:0;margin-right:4px}.prev-next-post-post__title{color:var(--palette-grayscale-900);display:block;font-family:var(--font-heading);font-weight:700;margin-top:6px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.prev-next-post-post__cover{inset:0;opacity:.1;pointer-events:none;position:absolute;transition:opacity .18s ease;z-index:0}.prev-next-post-post__cover,.prev-next-post-post__cover img{height:100%;-o-object-fit:cover;object-fit:cover;width:100%}.post-comment{font-family:var(--font-mono);margin:40px auto 0;padding:0 20px 48px;width:clamp(0px,760px,100%)}.post-comment [x-cloak]{display:none!important}.comment-thread__log{padding:18px 18px 10px}.comment-thread__note{color:var(--palette-grayscale-400);font-size:.6875rem;margin:0 0 16px;text-align:center}.comment-composer{background:var(--palette-background);border-bottom:1px solid var(--palette-sub-opacity);padding:16px 18px}.comment-composer__form{display:flex;flex-direction:column;gap:10px}.comment-composer__replying{align-items:center;color:var(--palette-sub);display:flex;font-size:.72rem;gap:6px}.comment-composer__reply-mark,.comment-composer__reply-to{color:var(--palette-theme)}.comment-composer__cancel{background:none;border:0;color:var(--palette-comment-text);cursor:pointer;font-family:var(--font-mono);margin-left:4px;padding:0}@media(any-hover:hover)and (any-pointer:fine){.comment-composer__cancel:hover{color:var(--palette-theme)}}.comment-composer__ids{display:flex;flex-wrap:wrap;gap:10px}.comment-composer__field{align-items:center;background:var(--palette-background-dimmed);border:1px solid var(--palette-sub-opacity);border-radius:4px;display:flex;flex:1;gap:9px;min-width:150px;padding:0 12px}.comment-composer__field:focus-within{border-color:var(--palette-theme)}.comment-composer__sigil{color:var(--palette-theme);flex:none;font-size:.78rem;font-weight:700}.comment-composer__sigil--at{color:var(--palette-comment-text);font-weight:400}.comment-composer__input{background:transparent;border:0;color:var(--palette-text);flex:1;font-family:var(--font-mono);font-size:.8125rem;min-width:0;outline:none;padding:10px 0}.comment-composer__input::-moz-placeholder{color:var(--palette-comment-text)}.comment-composer__input::placeholder{color:var(--palette-comment-text)}.comment-composer__row{align-items:flex-end;display:flex;gap:10px}.comment-composer__avatar{background:var(--palette-background-dimmed);border:1px solid var(--palette-sub-opacity);border-radius:4px;flex:none;height:42px;margin:0;overflow:hidden;width:42px}.comment-composer__avatar img{display:block;height:100%;-o-object-fit:cover;object-fit:cover;width:100%}.comment-composer__textarea{background:var(--palette-background-dimmed);border:1px solid var(--palette-sub-opacity);border-radius:4px;color:var(--palette-text);flex:1;font-family:var(--font-sans);font-size:.875rem;line-height:1.5;max-height:200px;min-height:76px;min-width:0;outline:none;overflow-y:auto;padding:11px 14px;resize:vertical}.comment-composer__textarea:focus{border-color:var(--palette-theme)}.comment-composer__textarea::-moz-placeholder{color:var(--palette-comment-text)}.comment-composer__textarea::placeholder{color:var(--palette-comment-text)}.comment-composer__send{align-self:flex-end;background:var(--palette-main-opacity);border:1px solid var(--palette-sub-opacity);border-radius:4px;color:var(--palette-theme);cursor:pointer;flex:none;font-family:var(--font-mono);font-size:.8125rem;font-weight:700;height:42px;letter-spacing:.02em;padding:0 18px;transition:border-color .15s ease,background-color .15s ease}@media(any-hover:hover)and (any-pointer:fine){.comment-composer__send:not(:disabled):hover{background:color-mix(in srgb,var(--palette-theme) 12%,transparent);border-color:var(--palette-theme)}}.comment-composer__send:disabled{color:var(--palette-comment-text);cursor:not-allowed}.comment-list{list-style:none;margin:0;padding:0}.comment-list>ul{list-style:none;margin:0;padding-left:46px}.comment-list__empty,.comment-list__error{color:var(--palette-comment-text);font-size:.8125rem;padding:20px;text-align:center}.comment-list__error{color:var(--palette-theme)}.comment-bubble{display:flex;gap:12px;list-style:none;padding:16px 0}.comment-bubble--border{border-top:1px solid var(--palette-sub-opacity)}.comment-bubble--author{flex-direction:row-reverse}.comment-bubble__avatar{background:var(--palette-background-dimmed);border:1px solid var(--palette-sub-opacity);border-radius:4px;flex:none;height:38px;margin:0;overflow:hidden;width:38px}.comment-bubble__avatar img{display:block;height:100%;-o-object-fit:cover;object-fit:cover;width:100%}.comment-bubble__body{display:flex;flex-direction:column;max-width:82%;min-width:0}.comment-bubble--author .comment-bubble__body{align-items:flex-end}.comment-bubble__head{align-items:center;display:flex;flex-wrap:wrap;gap:8px;margin-bottom:6px}.comment-bubble--author .comment-bubble__head{flex-direction:row-reverse}.comment-bubble__name{color:var(--palette-theme);font-size:.8125rem;font-weight:700}.comment-bubble__op{border:1px solid color-mix(in srgb,var(--palette-theme) 45%,transparent);border-radius:9999px;color:var(--palette-theme);font-size:.6rem;letter-spacing:.08em;padding:1px 6px}.comment-bubble__site{color:var(--palette-comment-text);font-size:.6875rem;text-decoration:none}@media(any-hover:hover)and (any-pointer:fine){.comment-bubble__site:hover{color:var(--palette-theme)}}.comment-bubble__text{background:var(--palette-background-dimmed);border:1px solid var(--palette-sub-opacity);border-radius:3px 11px 11px 11px;color:var(--palette-text);font-family:var(--font-sans);font-size:.875rem;line-height:1.55;padding:11px 15px;white-space:pre-wrap;word-break:break-word}.comment-bubble--author .comment-bubble__text{background:color-mix(in srgb,var(--palette-theme) 14%,transparent);border-color:color-mix(in srgb,var(--palette-theme) 32%,transparent);border-radius:11px 3px 11px 11px}.comment-bubble__footer{align-items:center;color:var(--palette-comment-text);display:flex;font-size:.6875rem;gap:8px;margin-top:7px}.comment-bubble--author .comment-bubble__footer{flex-direction:row-reverse}.comment-bubble__sep{opacity:.5}.comment-bubble__reply-btn{background:none;border:0;color:var(--palette-comment-text);cursor:pointer;font-family:var(--font-mono);font-size:.6875rem;padding:0}@media(any-hover:hover)and (any-pointer:fine){.comment-bubble__reply-btn:hover{color:var(--palette-theme)}}.post-like{display:flex;justify-content:center;margin:24px 0}.post-like__button{align-items:center;background:transparent;border:1px solid var(--palette-grayscale-300);border-radius:9999px;color:var(--palette-text);cursor:pointer;display:flex;gap:4px;padding:8px 16px;transition:all .15s ease}.post-like__button:hover:not(:disabled){border-color:var(--palette-theme);color:var(--palette-theme)}.post-like__button:disabled{cursor:not-allowed;opacity:.6}.post-like__button--liked{border-color:var(--palette-theme);color:var(--palette-theme)}.post-like__button--liked .post-like__icon{animation:like-pop .3s ease}.post-like__icon{height:20px;width:20px}.post-like__count{min-width:1.5em;text-align:center}@keyframes like-pop{0%{transform:scale(1)}50%{transform:scale(1.3)}to{transform:scale(1)}}.post-grid{display:grid;gap:18px;grid-template-columns:repeat(auto-fill,minmax(310px,1fr))}.post-grid__more{margin-top:16px;text-align:center}.post-grid__more a>i,.post-grid__more button>i{margin-left:4px}.post-card{background:var(--palette-grayscale-50);border:1px solid var(--palette-sub-opacity);border-radius:6px;display:flex;flex-direction:column;overflow:hidden;transition:transform .18s ease,border-color .18s ease,box-shadow .18s ease}@media(any-hover:hover)and (any-pointer:fine){.post-card:hover{border-color:color-mix(in srgb,var(--palette-theme) 55%,transparent);box-shadow:0 10px 30px -12px rgba(0,0,0,.7);transform:translateY(-3px)}.post-card:hover .post-card__image img{transform:scale(1.06)}}.post-card__image-link{display:block}.post-card__image{border-bottom:1px solid var(--palette-sub-opacity);height:0;overflow:hidden;padding-bottom:52%;position:relative;width:100%}.post-card__image:before{backdrop-filter:blur(3px);background:var(--palette-navigation-background);border:1px solid var(--palette-sub-opacity);border-radius:3px;box-sizing:border-box;color:var(--palette-grayscale-700);content:"› " attr(data-filename);font-family:var(--font-mono);font-size:10px;left:10px;letter-spacing:.3px;max-width:calc(100% - 20px);overflow:hidden;padding:2px 7px;position:absolute;text-overflow:ellipsis;top:8px;white-space:nowrap;z-index:2}.post-card__image img{display:block;height:100%;inset:0;-o-object-fit:cover;object-fit:cover;position:absolute;transition:transform .18s ease;width:100%}.post-card__body{display:flex;flex:1;flex-direction:column;gap:10px;padding:16px}.post-card__tags{display:flex;flex-wrap:wrap;font-family:var(--font-mono);font-size:11px;gap:8px}.post-card__tags a{color:var(--palette-sub)}@media(any-hover:hover)and (any-pointer:fine){.post-card__tags a:hover{color:var(--palette-text)}}.post-card__hash{color:var(--palette-theme);opacity:.8}.post-card__title{color:var(--palette-grayscale-900);font-family:var(--font-heading);font-size:1.03rem;font-weight:700;letter-spacing:-.01em;line-height:1.35}.post-card__description,.post-card__title{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.post-card__description{color:var(--palette-sub);font-size:.84rem;line-height:1.6}.post-card__footer{align-items:center;border-top:1px solid var(--palette-sub-opacity);color:var(--palette-comment-text);display:flex;font-family:var(--font-mono);font-size:11px;gap:8px;justify-content:space-between;margin-top:auto;padding-top:10px}.post-card__date{align-items:center;display:inline-flex;gap:6px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.post-card__sep{opacity:.5}.post-card__read{color:var(--palette-theme);flex-shrink:0;opacity:.85}.related-posts{border-top:1px solid var(--palette-sub-opacity);margin-top:2em;padding-top:1.5em}.related-posts__title{font-size:1.5em;font-weight:700;margin:0 0 1.5em}.react-island{border-radius:8px;min-height:100px;overflow:hidden;position:relative}.react-island:not(.react-island--hydrated){align-items:center;background:var(--bg-secondary);display:flex;justify-content:center}.react-island:not(.react-island--hydrated):after{animation:island-spin 1s linear infinite;border:2px solid var(--color-primary);border-radius:50%;border-top:2px solid transparent;content:"";height:24px;width:24px}.react-island__fallback{background:var(--bg-code);border-radius:8px;font-family:var(--font-mono);font-size:14px;overflow:auto;padding:16px;white-space:pre-wrap}@keyframes island-spin{to{transform:rotate(1turn)}}.chart{background:var(--bg-secondary);border-radius:8px;padding:16px}.chart__title{color:var(--text-primary);font-size:1rem;font-weight:600;margin:0 0 12px}.chart__svg{height:auto;min-height:100px;width:100%}.chart__labels{color:var(--text-secondary);display:flex;font-size:12px;justify-content:space-between;margin-top:8px}.chart--empty{color:var(--text-secondary);padding:24px;text-align:center}