:root{--bg:#ffffff;--fg:#111111;--muted:#6b6b6b;--border:#e5e5e5;--link:#0b57d0;--code-bg:#eff1f5;--w:800px;--pad:24px;--font:"Pretendard Variable", Pretendard, -apple-system, BlinkMacSystemFont, system-ui, sans-serif;--mono:ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace}@media(prefers-color-scheme:dark){html:not([data-theme=light]){--bg:#000000;--fg:#e6e6e6;--muted:#8a8a8a;--border:#222222;--link:#7aa2f7;--code-bg:#1e1e2e}}html[data-theme=dark]{--bg:#000000;--fg:#e6e6e6;--muted:#8a8a8a;--border:#222222;--link:#7aa2f7;--code-bg:#1e1e2e}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;background:var(--bg);color:var(--fg);font-family:var(--font);font-size:16px;line-height:1.7;font-weight:400}.wrap{max-width:var(--w);margin:0 auto;padding-left:var(--pad);padding-right:var(--pad)}a{color:var(--link);text-decoration:underline;text-underline-offset:2px}a:hover{color:var(--fg)}.site-header{border-bottom:1px solid var(--border)}.site-header .wrap{display:flex;align-items:baseline;justify-content:space-between;gap:16px;padding-top:24px;padding-bottom:16px}.brand{font-weight:600;font-size:1.3125rem;color:var(--fg);text-decoration:none;letter-spacing:-.02em}.site-nav{display:flex;align-items:baseline;gap:16px;font-size:.9rem}.site-nav a{color:var(--muted);text-decoration:none}.site-nav a:hover,.site-nav a[aria-current=page]{color:var(--fg)}.lang{display:inline-flex;align-items:baseline;gap:5px;color:var(--border)}.lang a{color:var(--muted)}.lang a.on{color:var(--fg)}.theme-toggle{background:0 0;border:0;padding:0;font:inherit;font-size:.9rem;line-height:1;color:var(--muted);cursor:pointer}.theme-toggle:hover{color:var(--fg)}.site-footer{border-top:1px solid var(--border);margin-top:64px}.site-footer .wrap{display:flex;justify-content:space-between;gap:16px;padding-top:16px;padding-bottom:40px;font-size:.85rem;color:var(--muted)}.site-footer a{color:var(--muted);text-decoration:none}.site-footer a:hover{color:var(--fg)}.site-footer nav{display:flex;gap:14px}main{padding-top:64px}.post-list li:first-child{padding-top:0}.post-list{list-style:none;margin:0;padding:0}.post-list li{padding:15px 0}.post-list time{color:var(--muted);font-size:.8125rem;font-variant-numeric:tabular-nums}.entry-title{display:inline-block;font-size:1.125rem;font-weight:600;line-height:1.45;letter-spacing:-.012em;color:var(--fg);text-decoration:none}.entry-title:hover{text-decoration:underline;text-underline-offset:3px}.entry-summary{margin:5px 0 0;color:var(--muted);font-size:.9rem;line-height:1.6}.post-list time{display:block;margin-bottom:3px}.list-year{color:var(--muted);font-size:.8rem;margin:28px 0 6px}.list-year:first-child{margin-top:0}article h1{font-size:1.6rem;line-height:1.35;font-weight:600;letter-spacing:-.015em;margin:0 0 8px}.post-meta{color:var(--muted);font-size:.85rem;margin-bottom:36px}.post-meta a{color:var(--muted);text-decoration:none}.post-meta a:hover{color:var(--fg);text-decoration:underline}article h2{font-size:1.25rem;font-weight:600;margin:44px 0 12px;letter-spacing:-.01em}article h3{font-size:1.05rem;font-weight:600;margin:32px 0 10px}article p{margin:0 0 18px}article ul,article ol{margin:0 0 18px;padding-left:1.4em}article li{margin:4px 0}article blockquote{margin:0 0 18px;padding-left:16px;border-left:2px solid var(--border);color:var(--muted)}article img{max-width:100%;height:auto;display:block}article hr{border:0;border-top:1px solid var(--border);margin:40px 0}.table-wrap{overflow-x:auto;margin:0 0 18px}article table{border-collapse:collapse;font-size:.9rem;min-width:100%}article th,article td{text-align:left;padding:7px 14px 7px 0;border-bottom:1px solid var(--border);white-space:nowrap}article th{font-weight:600}code{font-family:var(--mono);font-size:.9em}:not(pre)>code{background:var(--code-bg);padding:.1em .35em;border-radius:3px}.highlight{margin:0 0 18px}.highlight pre.chroma,pre.chroma{margin:0;padding:16px 18px;overflow-x:auto;border-radius:4px;font-size:.9375rem;line-height:1.6;tab-size:4}.term-list{list-style:none;margin:0;padding:0}.term-list li{padding:4px 0}.term-list a{color:var(--fg);text-decoration:none}.term-list a:hover{text-decoration:underline}.term-list .count{color:var(--muted);font-size:.85rem}.notfound{padding:40px 0 80px;color:var(--muted)}@media(max-width:640px){:root{--pad:16px}.site-header .wrap{flex-direction:column;align-items:flex-start;gap:10px;padding-top:18px}.site-nav{gap:14px;width:100%}.site-nav .theme-toggle{margin-left:auto}main{padding-top:44px}.post-list li{padding:13px 0}.entry-title{font-size:1.0625rem}article h1{font-size:1.4rem}article h2{font-size:1.15rem;margin-top:36px}.site-footer .wrap{flex-direction:column;gap:8px}}.post-nav{display:flex;justify-content:space-between;gap:16px}.translation-note{margin:0 0 28px;color:var(--muted);font-size:.875rem}.bg{color:#4c4f69;background-color:#eff1f5}.chroma{color:#4c4f69;background-color:#eff1f5;-webkit-text-size-adjust:none}.chroma .x{color:#4c4f69}.chroma .err{color:#d20f39}.chroma .cl{color:#4c4f69}.chroma .lnlinks{outline:none;text-decoration:none;color:inherit}.chroma .lntd{vertical-align:top;padding:0;margin:0;border:0}.chroma .lntable{border-spacing:0;padding:0;margin:0;border:0}.chroma .hl{background-color:#bcc0cc}.chroma .lnt{white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#8c8fa1}.chroma .ln{white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#8c8fa1}.chroma .line{display:flex}.chroma .k{color:#8839ef}.chroma .kc{color:#fe640b}.chroma .kd{color:#d20f39}.chroma .kn{color:#179299}.chroma .kp{color:#8839ef}.chroma .kr{color:#8839ef}.chroma .kt{color:#d20f39}.chroma .na{color:#1e66f5}.chroma .nc{color:#df8e1d}.chroma .no{color:#df8e1d}.chroma .nd{color:#1e66f5;font-weight:700}.chroma .ni{color:#179299}.chroma .ne{color:#fe640b}.chroma .nl{color:#04a5e5}.chroma .nn{color:#fe640b}.chroma .nx{color:#4c4f69}.chroma .py{color:#fe640b}.chroma .nt{color:#8839ef}.chroma .nb{color:#04a5e5}.chroma .bp{color:#04a5e5}.chroma .nv{color:#dc8a78}.chroma .vc{color:#dc8a78}.chroma .vg{color:#dc8a78}.chroma .vi{color:#dc8a78}.chroma .vm{color:#dc8a78}.chroma .nf{color:#1e66f5}.chroma .fm{color:#1e66f5}.chroma .ld{color:#4c4f69}.chroma .s{color:#40a02b}.chroma .sa{color:#d20f39}.chroma .sb{color:#40a02b}.chroma .sc{color:#40a02b}.chroma .dl{color:#1e66f5}.chroma .sd{color:#9ca0b0}.chroma .s2{color:#40a02b}.chroma .se{color:#1e66f5}.chroma .sh{color:#9ca0b0}.chroma .si{color:#40a02b}.chroma .sx{color:#40a02b}.chroma .sr{color:#179299}.chroma .s1{color:#40a02b}.chroma .ss{color:#40a02b}.chroma .m{color:#fe640b}.chroma .mb{color:#fe640b}.chroma .mf{color:#fe640b}.chroma .mh{color:#fe640b}.chroma .mi{color:#fe640b}.chroma .il{color:#fe640b}.chroma .mo{color:#fe640b}.chroma .o{color:#04a5e5;font-weight:700}.chroma .ow{color:#04a5e5;font-weight:700}.chroma .or{color:#04a5e5;font-weight:700}.chroma .c{color:#9ca0b0;font-style:italic}.chroma .ch{color:#acb0be;font-style:italic}.chroma .cm{color:#9ca0b0;font-style:italic}.chroma .c1{color:#9ca0b0;font-style:italic}.chroma .cs{color:#9ca0b0;font-style:italic}.chroma .cp{color:#9ca0b0;font-style:italic}.chroma .cpf{color:#9ca0b0;font-weight:700;font-style:italic}.chroma .gd{color:#d20f39;background-color:#ccd0da}.chroma .ge{font-style:italic}.chroma .gr{color:#d20f39}.chroma .gh{color:#fe640b;font-weight:700}.chroma .gi{color:#40a02b;background-color:#ccd0da}.chroma .go{color:#4c4f69}.chroma .gp{color:#4c4f69}.chroma .gs{font-weight:700}.chroma .gu{color:#fe640b;font-weight:700}.chroma .gt{color:#d20f39}.chroma .gl{text-decoration:underline}@media(prefers-color-scheme:dark){html:not([data-theme=light]) .bg{color:#cdd6f4;background-color:#1e1e2e}html:not([data-theme=light]) .chroma{color:#cdd6f4;background-color:#1e1e2e;-webkit-text-size-adjust:none}html:not([data-theme=light]) .chroma .x{color:#cdd6f4}html:not([data-theme=light]) .chroma .err{color:#f38ba8}html:not([data-theme=light]) .chroma .cl{color:#cdd6f4}html:not([data-theme=light]) .chroma .lnlinks{outline:none;text-decoration:none;color:inherit}html:not([data-theme=light]) .chroma .lntd{vertical-align:top;padding:0;margin:0;border:0}html:not([data-theme=light]) .chroma .lntable{border-spacing:0;padding:0;margin:0;border:0}html:not([data-theme=light]) .chroma .hl{background-color:#45475a}html:not([data-theme=light]) .chroma .lnt{white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#7f849c}html:not([data-theme=light]) .chroma .ln{white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#7f849c}html:not([data-theme=light]) .chroma .line{display:flex}html:not([data-theme=light]) .chroma .k{color:#cba6f7}html:not([data-theme=light]) .chroma .kc{color:#fab387}html:not([data-theme=light]) .chroma .kd{color:#f38ba8}html:not([data-theme=light]) .chroma .kn{color:#94e2d5}html:not([data-theme=light]) .chroma .kp{color:#cba6f7}html:not([data-theme=light]) .chroma .kr{color:#cba6f7}html:not([data-theme=light]) .chroma .kt{color:#f38ba8}html:not([data-theme=light]) .chroma .na{color:#89b4fa}html:not([data-theme=light]) .chroma .nc{color:#f9e2af}html:not([data-theme=light]) .chroma .no{color:#f9e2af}html:not([data-theme=light]) .chroma .nd{color:#89b4fa;font-weight:700}html:not([data-theme=light]) .chroma .ni{color:#94e2d5}html:not([data-theme=light]) .chroma .ne{color:#fab387}html:not([data-theme=light]) .chroma .nl{color:#89dceb}html:not([data-theme=light]) .chroma .nn{color:#fab387}html:not([data-theme=light]) .chroma .nx{color:#cdd6f4}html:not([data-theme=light]) .chroma .py{color:#fab387}html:not([data-theme=light]) .chroma .nt{color:#cba6f7}html:not([data-theme=light]) .chroma .nb{color:#89dceb}html:not([data-theme=light]) .chroma .bp{color:#89dceb}html:not([data-theme=light]) .chroma .nv{color:#f5e0dc}html:not([data-theme=light]) .chroma .vc{color:#f5e0dc}html:not([data-theme=light]) .chroma .vg{color:#f5e0dc}html:not([data-theme=light]) .chroma .vi{color:#f5e0dc}html:not([data-theme=light]) .chroma .vm{color:#f5e0dc}html:not([data-theme=light]) .chroma .nf{color:#89b4fa}html:not([data-theme=light]) .chroma .fm{color:#89b4fa}html:not([data-theme=light]) .chroma .ld{color:#cdd6f4}html:not([data-theme=light]) .chroma .s{color:#a6e3a1}html:not([data-theme=light]) .chroma .sa{color:#f38ba8}html:not([data-theme=light]) .chroma .sb{color:#a6e3a1}html:not([data-theme=light]) .chroma .sc{color:#a6e3a1}html:not([data-theme=light]) .chroma .dl{color:#89b4fa}html:not([data-theme=light]) .chroma .sd{color:#6c7086}html:not([data-theme=light]) .chroma .s2{color:#a6e3a1}html:not([data-theme=light]) .chroma .se{color:#89b4fa}html:not([data-theme=light]) .chroma .sh{color:#6c7086}html:not([data-theme=light]) .chroma .si{color:#a6e3a1}html:not([data-theme=light]) .chroma .sx{color:#a6e3a1}html:not([data-theme=light]) .chroma .sr{color:#94e2d5}html:not([data-theme=light]) .chroma .s1{color:#a6e3a1}html:not([data-theme=light]) .chroma .ss{color:#a6e3a1}html:not([data-theme=light]) .chroma .m{color:#fab387}html:not([data-theme=light]) .chroma .mb{color:#fab387}html:not([data-theme=light]) .chroma .mf{color:#fab387}html:not([data-theme=light]) .chroma .mh{color:#fab387}html:not([data-theme=light]) .chroma .mi{color:#fab387}html:not([data-theme=light]) .chroma .il{color:#fab387}html:not([data-theme=light]) .chroma .mo{color:#fab387}html:not([data-theme=light]) .chroma .o{color:#89dceb;font-weight:700}html:not([data-theme=light]) .chroma .ow{color:#89dceb;font-weight:700}html:not([data-theme=light]) .chroma .or{color:#89dceb;font-weight:700}html:not([data-theme=light]) .chroma .c{color:#6c7086;font-style:italic}html:not([data-theme=light]) .chroma .ch{color:#585b70;font-style:italic}html:not([data-theme=light]) .chroma .cm{color:#6c7086;font-style:italic}html:not([data-theme=light]) .chroma .c1{color:#6c7086;font-style:italic}html:not([data-theme=light]) .chroma .cs{color:#6c7086;font-style:italic}html:not([data-theme=light]) .chroma .cp{color:#6c7086;font-style:italic}html:not([data-theme=light]) .chroma .cpf{color:#6c7086;font-weight:700;font-style:italic}html:not([data-theme=light]) .chroma .gd{color:#f38ba8;background-color:#313244}html:not([data-theme=light]) .chroma .ge{font-style:italic}html:not([data-theme=light]) .chroma .gr{color:#f38ba8}html:not([data-theme=light]) .chroma .gh{color:#fab387;font-weight:700}html:not([data-theme=light]) .chroma .gi{color:#a6e3a1;background-color:#313244}html:not([data-theme=light]) .chroma .go{color:#cdd6f4}html:not([data-theme=light]) .chroma .gp{color:#cdd6f4}html:not([data-theme=light]) .chroma .gs{font-weight:700}html:not([data-theme=light]) .chroma .gu{color:#fab387;font-weight:700}html:not([data-theme=light]) .chroma .gt{color:#f38ba8}html:not([data-theme=light]) .chroma .gl{text-decoration:underline}}html[data-theme=dark] .bg{color:#cdd6f4;background-color:#1e1e2e}html[data-theme=dark] .chroma{color:#cdd6f4;background-color:#1e1e2e;-webkit-text-size-adjust:none}html[data-theme=dark] .chroma .x{color:#cdd6f4}html[data-theme=dark] .chroma .err{color:#f38ba8}html[data-theme=dark] .chroma .cl{color:#cdd6f4}html[data-theme=dark] .chroma .lnlinks{outline:none;text-decoration:none;color:inherit}html[data-theme=dark] .chroma .lntd{vertical-align:top;padding:0;margin:0;border:0}html[data-theme=dark] .chroma .lntable{border-spacing:0;padding:0;margin:0;border:0}html[data-theme=dark] .chroma .hl{background-color:#45475a}html[data-theme=dark] .chroma .lnt{white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#7f849c}html[data-theme=dark] .chroma .ln{white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#7f849c}html[data-theme=dark] .chroma .line{display:flex}html[data-theme=dark] .chroma .k{color:#cba6f7}html[data-theme=dark] .chroma .kc{color:#fab387}html[data-theme=dark] .chroma .kd{color:#f38ba8}html[data-theme=dark] .chroma .kn{color:#94e2d5}html[data-theme=dark] .chroma .kp{color:#cba6f7}html[data-theme=dark] .chroma .kr{color:#cba6f7}html[data-theme=dark] .chroma .kt{color:#f38ba8}html[data-theme=dark] .chroma .na{color:#89b4fa}html[data-theme=dark] .chroma .nc{color:#f9e2af}html[data-theme=dark] .chroma .no{color:#f9e2af}html[data-theme=dark] .chroma .nd{color:#89b4fa;font-weight:700}html[data-theme=dark] .chroma .ni{color:#94e2d5}html[data-theme=dark] .chroma .ne{color:#fab387}html[data-theme=dark] .chroma .nl{color:#89dceb}html[data-theme=dark] .chroma .nn{color:#fab387}html[data-theme=dark] .chroma .nx{color:#cdd6f4}html[data-theme=dark] .chroma .py{color:#fab387}html[data-theme=dark] .chroma .nt{color:#cba6f7}html[data-theme=dark] .chroma .nb{color:#89dceb}html[data-theme=dark] .chroma .bp{color:#89dceb}html[data-theme=dark] .chroma .nv{color:#f5e0dc}html[data-theme=dark] .chroma .vc{color:#f5e0dc}html[data-theme=dark] .chroma .vg{color:#f5e0dc}html[data-theme=dark] .chroma .vi{color:#f5e0dc}html[data-theme=dark] .chroma .vm{color:#f5e0dc}html[data-theme=dark] .chroma .nf{color:#89b4fa}html[data-theme=dark] .chroma .fm{color:#89b4fa}html[data-theme=dark] .chroma .ld{color:#cdd6f4}html[data-theme=dark] .chroma .s{color:#a6e3a1}html[data-theme=dark] .chroma .sa{color:#f38ba8}html[data-theme=dark] .chroma .sb{color:#a6e3a1}html[data-theme=dark] .chroma .sc{color:#a6e3a1}html[data-theme=dark] .chroma .dl{color:#89b4fa}html[data-theme=dark] .chroma .sd{color:#6c7086}html[data-theme=dark] .chroma .s2{color:#a6e3a1}html[data-theme=dark] .chroma .se{color:#89b4fa}html[data-theme=dark] .chroma .sh{color:#6c7086}html[data-theme=dark] .chroma .si{color:#a6e3a1}html[data-theme=dark] .chroma .sx{color:#a6e3a1}html[data-theme=dark] .chroma .sr{color:#94e2d5}html[data-theme=dark] .chroma .s1{color:#a6e3a1}html[data-theme=dark] .chroma .ss{color:#a6e3a1}html[data-theme=dark] .chroma .m{color:#fab387}html[data-theme=dark] .chroma .mb{color:#fab387}html[data-theme=dark] .chroma .mf{color:#fab387}html[data-theme=dark] .chroma .mh{color:#fab387}html[data-theme=dark] .chroma .mi{color:#fab387}html[data-theme=dark] .chroma .il{color:#fab387}html[data-theme=dark] .chroma .mo{color:#fab387}html[data-theme=dark] .chroma .o{color:#89dceb;font-weight:700}html[data-theme=dark] .chroma .ow{color:#89dceb;font-weight:700}html[data-theme=dark] .chroma .or{color:#89dceb;font-weight:700}html[data-theme=dark] .chroma .c{color:#6c7086;font-style:italic}html[data-theme=dark] .chroma .ch{color:#585b70;font-style:italic}html[data-theme=dark] .chroma .cm{color:#6c7086;font-style:italic}html[data-theme=dark] .chroma .c1{color:#6c7086;font-style:italic}html[data-theme=dark] .chroma .cs{color:#6c7086;font-style:italic}html[data-theme=dark] .chroma .cp{color:#6c7086;font-style:italic}html[data-theme=dark] .chroma .cpf{color:#6c7086;font-weight:700;font-style:italic}html[data-theme=dark] .chroma .gd{color:#f38ba8;background-color:#313244}html[data-theme=dark] .chroma .ge{font-style:italic}html[data-theme=dark] .chroma .gr{color:#f38ba8}html[data-theme=dark] .chroma .gh{color:#fab387;font-weight:700}html[data-theme=dark] .chroma .gi{color:#a6e3a1;background-color:#313244}html[data-theme=dark] .chroma .go{color:#cdd6f4}html[data-theme=dark] .chroma .gp{color:#cdd6f4}html[data-theme=dark] .chroma .gs{font-weight:700}html[data-theme=dark] .chroma .gu{color:#fab387;font-weight:700}html[data-theme=dark] .chroma .gt{color:#f38ba8}html[data-theme=dark] .chroma .gl{text-decoration:underline}