:root{--b1:oklch(24.35% 0 0);--b2:oklch(22.65% 0 0);--b3:oklch(20.94% 0 0);--bc:oklch(84.87% 0 0);--text-muted:oklch(66.87% 0 0);--primary:#1c4e80;--primary-content:oklch(88.34% .0198 251.47);--secondary:#7c909a;--secondary-content:oklch(12.82% .0055 229.39);--accent:#ea6947;--neutral:#23282e;--neutral-content:oklch(85.49% .0027 253.04);--warning:#dbae59;--warning-content:oklch(15.5% .0231 81.52);--link:oklch(72% .1 251.47);--border:color-mix(in oklch, var(--bc) 15%, transparent);--hover:color-mix(in oklch, var(--bc) 10%, transparent);--shadow:0 20px 25px -5px #00000059, 0 8px 10px -6px #00000059;--rounded-box:.25rem;--rounded-btn:.125rem;--rounded-badge:.125rem;--sidebar-width:19rem;--content-width:56.25rem;--article-width:46.875rem;--font-sans:"Pretendard", "Apple SD Gothic Neo", "Malgun Gothic", "Noto Sans KR", system-ui, sans-serif;--font-mono:"JetBrains Mono", "D2Coding", Menlo, Consolas, monospace;color-scheme:dark}:root[data-theme=light]{--b1:oklch(100% 0 0);--b2:oklch(93% 0 0);--b3:oklch(86% 0 0);--bc:oklch(22.39% .0313 278.07);--text-muted:oklch(45.67% .022 278.07);--primary:oklch(60.39% .228 269.1);--primary-content:oklch(12.08% .0456 269.1);--secondary:#7b92b2;--secondary-content:oklch(13.07% .011 256.69);--accent:#67cba0;--neutral:#181a2a;--neutral-content:#edf2f7;--warning:oklch(84.71% .199 83.87);--warning-content:oklch(16.94% .0398 83.87);--link:oklch(52% .22 269.1);--shadow:0 20px 25px -5px #0000001a, 0 8px 10px -6px #0000001a;color-scheme:light}*,:before,:after{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:5.5rem}body{background:var(--b1);color:var(--bc);font-family:var(--font-sans);word-break:keep-all;overflow-wrap:anywhere;-webkit-font-smoothing:antialiased;margin:0;font-size:1rem;line-height:1.75}a{color:var(--link);text-underline-offset:.2em}button,input,select{font:inherit}button,select{cursor:pointer}svg{vertical-align:middle;flex-shrink:0}img{max-width:100%;height:auto;display:block}h1,h2,h3{letter-spacing:-.025em;line-height:1.35}:where(a,button,input,select,summary):focus-visible{outline:2px solid var(--link);outline-offset:3px}[hidden]{display:none!important}.sr-only{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.skip-link{z-index:100;border-radius:var(--rounded-btn);background:var(--primary);color:var(--primary-content);padding:.65rem 1rem;position:fixed;top:-6rem;left:1rem}.skip-link:focus{top:1rem}.eyebrow{color:var(--text-muted);letter-spacing:.04em;text-transform:uppercase;margin:0 0 .5rem;font-size:.8125rem;font-weight:600}.layout{min-height:100vh}.drawer-side{background:var(--b2);color:var(--bc)}.sidebar{flex-direction:column;min-height:100%;padding:.5rem .5rem 0;display:flex}.sidebar-brand{color:var(--bc);text-align:center;flex-direction:column;align-items:center;gap:.25rem;margin:1.25rem auto 1.5rem;text-decoration:none;display:flex}.sidebar-avatar{background:var(--primary);width:6.5rem;height:6.5rem;color:var(--primary-content);border-radius:50%;justify-content:center;align-items:center;margin-bottom:.75rem;transition:transform .15s ease-in-out;display:inline-flex}.sidebar-avatar svg{width:3.25rem;height:3.25rem}.sidebar-brand:hover .sidebar-avatar{transform:scale(1.02)}.sidebar-title{letter-spacing:-.02em;font-size:1.375rem;font-weight:700}.sidebar-description{color:var(--text-muted);font-size:.8125rem}.icon-button.sidebar-close{display:none}.menu,.menu ul{margin:0;padding:0;list-style:none}.menu{flex:auto;padding:.5rem}.menu a,.menu summary{border-radius:var(--rounded-btn);min-height:2.75rem;color:var(--bc);cursor:pointer;align-items:center;gap:.5rem;padding:.5rem 1rem;font-size:1rem;line-height:1.4;text-decoration:none;display:flex}.menu summary{list-style:none}.menu summary::-webkit-details-marker{display:none}.menu a:hover,.menu summary:hover{background:var(--hover)}.menu a[aria-current=page]{background:var(--b3);font-weight:600}.menu-arrow{width:1rem;height:1rem;color:var(--text-muted);margin-left:auto;transition:transform .2s}.menu details[open]>summary .menu-arrow{transform:rotate(180deg)}.menu details ul{border-left:1px solid var(--border);margin:.125rem 0 .25rem 1rem;padding-left:.5rem;position:relative}.menu details ul a{min-height:2.5rem;padding-block:.4rem;font-size:.9375rem}.menu-divider{background:var(--border);height:1px;margin:.75rem 1rem}.sidebar-footer{background:var(--b2);justify-content:center;gap:.75rem;padding:.5rem 1rem 1.25rem;display:flex;position:sticky;bottom:0}.sidebar-footer:before{content:"";background:linear-gradient(transparent, var(--b2));pointer-events:none;position:absolute;inset:-2.5rem 0 100%}.icon-button{border-radius:var(--rounded-btn);width:2.75rem;height:2.75rem;color:var(--bc);background:0 0;border:0;justify-content:center;align-items:center;padding:0;display:inline-flex}.icon-button:hover{background:var(--hover)}.icon-button svg{width:1.375rem;height:1.375rem}.theme-toggle-icon{display:inline-flex}.theme-toggle[data-effective-theme=dark] .theme-toggle-moon,.theme-toggle[data-effective-theme=light] .theme-toggle-sun{display:none}.mobile-header{z-index:30;background:color-mix(in oklch, var(--b1) 90%, transparent);backdrop-filter:blur(8px);grid-template-columns:3rem 1fr 3rem;align-items:center;height:4rem;padding-inline:.5rem;display:grid;position:sticky;top:0;box-shadow:0 1px 2px #00000026}.mobile-title{color:var(--bc);justify-content:center;align-items:center;gap:.5rem;font-size:1.25rem;font-weight:700;text-decoration:none;display:inline-flex}.mobile-title svg{width:1.375rem;height:1.375rem}.menu-button,.drawer-overlay{display:none}.drawer-content{flex-direction:column;min-width:0;min-height:100vh;display:flex}.site-main{width:100%;max-width:var(--content-width);flex:1;margin-inline:auto;padding:2.5rem 1.5rem 3rem}.site-main.wide{max-width:82rem}.button{border:1px solid var(--b2);border-radius:var(--rounded-btn);background:var(--b2);min-height:3rem;color:var(--bc);justify-content:center;align-items:center;gap:.5rem;padding:0 1rem;font-size:.875rem;font-weight:600;line-height:1;text-decoration:none;transition:background .2s,border-color .2s,color .2s;display:inline-flex}.button:hover{background:var(--b3);border-color:var(--b3)}.button svg{width:1rem;height:1rem}.button-primary{border-color:var(--primary);background:var(--primary);color:var(--primary-content)}.button-primary:hover{border-color:color-mix(in oklch, var(--primary) 85%, black);background:color-mix(in oklch, var(--primary) 85%, black)}.button-outline{color:var(--bc);background:0 0;border-color:currentColor}.button-outline:hover{border-color:var(--bc);background:var(--bc);color:var(--b1)}.badge{border-radius:var(--rounded-badge);white-space:nowrap;border:1px solid #0000;align-items:center;min-height:1.375rem;padding:.0625rem .5625rem;font-size:.8125rem;line-height:1.3;text-decoration:none;display:inline-flex}.badge-secondary{background:var(--secondary);color:var(--secondary-content)}.badge-outline{color:inherit;border-color:currentColor}a.badge-outline:hover{background:var(--hover)}.divider{background:var(--border);border:0;height:1px;margin:.25rem 0}.home-intro{padding:.75rem 0 3rem}.home-greeting{margin:0;font-size:1.25rem}.home-title{margin:0;font-size:clamp(2.5rem,6vw,3rem);font-weight:700;line-height:1.15}.home-subtitle{margin:0;padding-block:.75rem;font-size:clamp(1.5rem,3.5vw,1.875rem);font-weight:700;line-height:1.3}.home-lead{max-width:44rem;margin:.5rem 0 0;font-size:1.125rem}.home-actions{flex-wrap:wrap;gap:1.25rem;margin-top:2rem;display:flex}.section-block{padding-block:1.5rem 3rem}.section-heading{justify-content:space-between;align-items:end;gap:1rem;margin-bottom:1.25rem;display:flex}.section-heading :is(h1,h2){margin:0;font-size:1.875rem;font-weight:700}.section-heading>p{color:var(--text-muted);text-align:right;margin:0;font-size:.9375rem}#posts{scroll-margin-top:4.5rem}.featured-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:1.5rem;display:grid}.card{border-radius:var(--rounded-box);background:var(--b1);height:100%;box-shadow:0 0 0 1px var(--border);transition:transform .15s ease-in-out,box-shadow .15s ease-in-out}.card-link{height:100%;color:inherit;flex-direction:column;text-decoration:none;display:flex}.card-cover{aspect-ratio:16/9;border-radius:var(--rounded-box) var(--rounded-box) 0 0;background:var(--b2);overflow:hidden}.card-cover img{object-fit:cover;width:100%;height:100%}.card-body{flex-direction:column;flex:1;gap:.5rem;padding:1.5rem;display:flex}.card-body h3{margin:0;font-size:1.25rem;font-weight:700}.card-body p{color:var(--text-muted);margin:0;font-size:.9375rem}.post-list{margin:0;padding:0;list-style:none}.post-list>li+li{border-top:1px solid var(--border)}.post-list>li{padding-block:.25rem}.horizontal-card{border-radius:var(--rounded-box);background:var(--b1);transition:transform .15s ease-in-out,box-shadow .15s ease-in-out}.horizontal-card-link{color:inherit;align-items:center;gap:1.5rem;padding:1rem;text-decoration:none;display:flex}.horizontal-card-cover{aspect-ratio:16/9;border-radius:var(--rounded-box);background:var(--b2);flex:0 0 13rem;overflow:hidden}.horizontal-card-cover img{object-fit:cover;width:100%;height:100%}.horizontal-card-body{flex:1;min-width:0}.horizontal-card-body h3{margin:0;font-size:1.25rem;font-weight:700}.horizontal-card-body>p{margin:.25rem 0 0;font-size:.9375rem}.card-meta{color:var(--text-muted);flex-wrap:wrap;align-items:center;gap:.5rem;margin-bottom:.375rem;font-size:.8125rem;display:flex}.card-tags{color:var(--text-muted);flex-wrap:wrap;justify-content:flex-end;gap:.375rem;margin:.625rem 0 0;padding:0;list-style:none;display:flex}.cover-art{height:100%;color:var(--text-muted);flex-direction:column;justify-content:center;align-items:center;gap:.5rem;font-size:.8125rem;display:flex}.cover-art svg{width:2.5rem;height:2.5rem}@media (hover:hover){.card:hover,.horizontal-card:hover{box-shadow:var(--shadow);transform:scale(1.02)}}.explorer-controls{flex-direction:column;gap:.75rem;margin-bottom:.75rem;display:flex}.category-filters{flex-wrap:wrap;gap:.375rem;display:flex}.filter-button{border:1px solid var(--border);border-radius:var(--rounded-btn);min-height:2.25rem;color:var(--bc);background:0 0;padding:.25rem .75rem;font-size:.875rem}.filter-button:hover{background:var(--hover)}.filter-button[aria-pressed=true]{border-color:var(--primary);background:var(--primary);color:var(--primary-content)}.search-field{border:1px solid var(--border);border-radius:var(--rounded-btn);background:var(--b1);min-height:3rem;color:var(--text-muted);align-items:center;gap:.5rem;padding:0 1rem;display:flex}.search-field:focus-within{outline:2px solid var(--border);outline-offset:2px}.search-field input{min-width:0;color:var(--bc);background:0 0;border:0;outline:0;flex:1;padding:.5rem 0;font-size:.9375rem}.search-status{color:var(--text-muted);margin:0 0 .5rem;font-size:.8125rem}.empty-state{border-left:4px solid var(--secondary);background:var(--b2);padding:1.25rem 1.5rem}.empty-state :is(h2,h3){margin:0 0 .25rem;font-size:1.0625rem;font-weight:700}.empty-state p{color:var(--text-muted);margin:0 0 1rem;font-size:.9375rem}.empty-state p:last-child{margin-bottom:0}.topic-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;display:grid}.topic-card{border-radius:var(--rounded-box);background:var(--b2);padding:1.5rem}.topic-card-header{align-items:center;gap:.75rem;display:flex}.topic-icon{border-radius:var(--rounded-box);background:var(--primary);width:2.5rem;height:2.5rem;color:var(--primary-content);justify-content:center;align-items:center;display:inline-flex}.topic-icon svg{width:1.25rem;height:1.25rem}.topic-card h3{margin:0;font-size:1.125rem}.topic-card h3 a{color:inherit;text-decoration:none}.topic-card h3 a:hover{text-decoration:underline}.topic-card>p{color:var(--text-muted);margin:.75rem 0;font-size:.875rem}.topic-links{flex-wrap:wrap;gap:.375rem;margin:0;padding:0;list-style:none;display:flex}.topic-links a{border:1px solid var(--border);border-radius:var(--rounded-badge);min-height:2rem;color:var(--bc);align-items:center;padding:.125rem .625rem;font-size:.8125rem;text-decoration:none;display:inline-flex}.topic-links a:hover{background:var(--hover)}.reading-note{border-left:4px solid var(--primary);background:var(--b2);align-items:center;gap:1.25rem;margin-top:1rem;padding:1.5rem;display:flex}.reading-note h2{margin:0 0 .25rem;font-size:1.0625rem}.reading-note p{color:var(--text-muted);margin:0;font-size:.875rem}.reading-note>a{white-space:nowrap;margin-left:auto}.article-layout{display:block}.post{width:100%;max-width:var(--article-width);min-width:0;margin-inline:auto}.article-toc{max-width:var(--article-width);border-radius:var(--rounded-box);background:var(--b2);margin:0 auto 2rem;padding:1rem 1.25rem}.article-toc h2{margin:0 0 .5rem;font-size:.875rem}.article-toc ol{margin:0;padding:0;list-style:none}.article-toc a{color:var(--text-muted);padding-block:.3rem;font-size:.875rem;line-height:1.5;text-decoration:none;display:block}.article-toc a:hover{color:var(--bc)}.toc-nested{border-left:1px solid var(--border);padding-left:.8rem}.breadcrumbs{color:var(--text-muted);flex-wrap:wrap;gap:.5rem;margin-bottom:1.5rem;font-size:.875rem;display:flex}.breadcrumbs a{color:inherit}.breadcrumbs a:hover{color:var(--bc)}.post-header h1{margin:.5rem 0;font-size:clamp(1.875rem,4vw,2.25rem);font-weight:700}.post-description{color:var(--text-muted);margin:0 0 1rem;font-size:1.125rem}.post-meta{color:var(--text-muted);flex-wrap:wrap;gap:.25rem 1.25rem;margin:0;font-size:.875rem;display:flex}.post-meta div{gap:.375rem;display:flex}.post-meta dd{color:var(--bc);margin:0}.post-meta dt:after{content:":"}.post-header .divider{margin-block:1rem 2rem}.article-cover{margin:0 0 1.5rem}figure.article-cover img{object-fit:cover;border-radius:var(--rounded-box);border:0;width:100%;max-height:32rem}.article-cover figcaption{color:var(--text-muted);text-align:center;margin-top:.5rem;font-size:.8125rem;line-height:1.6}.prose{font-size:1.125rem;line-height:1.8}.prose h1{margin-block:0 1.5rem;font-size:2.25rem}.prose h2{margin:2.75rem 0 1rem;font-size:1.625rem}.prose h3{margin:2rem 0 .75rem;font-size:1.3125rem}.prose p{margin:0 0 1.25rem}.prose li{margin-bottom:.5rem}.prose :is(ul,ol){padding-left:1.5rem}.prose strong{color:var(--bc);font-weight:700}.prose hr{border:0;border-top:1px solid var(--border);margin-block:2.5rem}.prose table{border-collapse:collapse;max-width:100%;margin-block:2rem;font-size:.9375rem;display:block;overflow-x:auto}.prose th,.prose td{border:1px solid var(--border);padding:.6rem .9rem}.prose th{background:var(--b2)}.prose blockquote{border-left:4px solid var(--border);color:var(--text-muted);margin:2rem 0;padding:.5rem 1.25rem}.prose blockquote p:last-child{margin-bottom:0}.prose blockquote:has(>p:first-child>strong:only-child):has(>ul){border-radius:0 var(--rounded-box) var(--rounded-box) 0;background:var(--b2);border-left-width:2px;margin:-.4rem 0 1.75rem;padding:.85rem 1.1rem;font-size:.875rem;line-height:1.7}.prose blockquote:has(>p:first-child>strong:only-child):has(>ul)>p:first-child{color:var(--bc);margin-bottom:.4rem;font-size:.8125rem}.prose blockquote:has(>p:first-child>strong:only-child):has(>ul) ul{margin:0;padding-left:1.1rem}.prose blockquote:has(>p:first-child>strong:only-child):has(>ul) li{margin-bottom:.3rem}.prose blockquote:has(>p:first-child>strong:only-child):has(>ul) li:last-child{margin-bottom:0}.prose code{border-radius:var(--rounded-btn);background:var(--hover);font-family:var(--font-mono);padding:.125rem .375rem;font-size:.875em}.prose pre{border:1px solid var(--border);border-radius:var(--rounded-box);tab-size:2;margin:1.75rem 0;padding:1rem 1.25rem;font-size:.875rem;line-height:1.7;overflow-x:auto}.prose pre code{font-size:inherit;background:0 0;padding:0}:root[data-theme=light] .astro-code,:root[data-theme=light] .astro-code span{background-color:var(--shiki-light-bg)!important;color:var(--shiki-light)!important;font-style:var(--shiki-light-font-style)!important;font-weight:var(--shiki-light-font-weight)!important;text-decoration:var(--shiki-light-text-decoration)!important}.prose img{border:1px solid var(--border);border-radius:var(--rounded-box);margin-inline:auto}.prose p:has(>img:only-child){margin-block:2.25rem .75rem}.prose p:has(>img:only-child)+p:has(>em:only-child){color:var(--text-muted);text-align:center;text-wrap:balance;margin-bottom:2.25rem;font-size:.875rem;line-height:1.6}.prose p:has(>img:only-child)+p:has(>em:only-child) em{font-style:normal}.post-sources{border-radius:var(--rounded-box);background:var(--b2);margin-top:3rem;padding:1.25rem 1.5rem;font-size:.9375rem}.post-sources h2{margin:0 0 .5rem;font-size:1.125rem}.post-sources ol{margin:0;padding-left:1.25rem}.post-sources li+li{margin-top:.5rem}.post-tags{color:var(--text-muted);flex-wrap:wrap;gap:.5rem;margin-block:1.5rem;padding:0;list-style:none;display:flex}.article-back{margin-top:2.5rem}.tag-cloud{flex-wrap:wrap;gap:.625rem;margin:0;padding:0;list-style:none;display:flex}.tag-cloud a{border:1px solid var(--border);border-radius:var(--rounded-btn);min-height:2.75rem;color:var(--bc);align-items:center;gap:.5rem;padding:.375rem .875rem;font-size:.9375rem;text-decoration:none;display:inline-flex}.tag-cloud a:hover{background:var(--hover)}.tag-count{border-radius:var(--rounded-badge);background:var(--b3);color:var(--text-muted);padding:0 .4rem;font-size:.75rem}.post-count{border-radius:var(--rounded-badge);background:var(--hover);color:var(--text-muted);white-space:nowrap;vertical-align:.1em;margin-left:.375rem;padding:0 .4rem;font-size:.75rem;font-weight:400;line-height:1.5;display:inline-block}.menu .post-count{margin-left:0}.filter-button[aria-pressed=true] .post-count{background:color-mix(in oklch, var(--primary-content) 20%, transparent);color:inherit}.draft-badge{border-radius:var(--rounded-badge);background:var(--warning);color:var(--warning-content);vertical-align:middle;margin-right:.5rem;padding:.0625rem .5rem;font-size:.75rem;font-weight:700;display:inline-block}.version-notice{border-radius:var(--rounded-box);background:var(--warning);color:var(--warning-content);margin:0 0 1.25rem;padding:.75rem 1rem;font-size:.9375rem}.version-notice a{color:inherit;font-weight:700}.error-page{text-align:center;padding-block:3rem}.error-code{color:var(--text-muted);margin:0 0 1.5rem;font-size:clamp(5rem,18vw,8rem);font-weight:800;line-height:1}.error-page h1{font-size:clamp(1.5rem,4vw,2.25rem)}.error-page>p:not(.error-code){color:var(--text-muted)}.site-footer{color:var(--bc);text-align:center;padding:2.5rem 1.5rem 1.25rem;font-size:.875rem}.site-footer p{margin:0 0 .5rem}.footer-note{max-width:40rem;color:var(--text-muted);font-size:.8125rem;margin-inline:auto!important}.footer-links{flex-wrap:wrap;justify-content:center;gap:.25rem 1rem;display:flex}.footer-links a{color:var(--bc)}.footer-credits{color:var(--text-muted);opacity:.75;font-size:.75rem}.footer-credits a{color:inherit;font-weight:700}@media (width>=64rem){.layout{grid-template-columns:var(--sidebar-width) minmax(0, 1fr);display:grid}.drawer-side{height:100dvh;position:sticky;top:0;overflow-y:auto}.mobile-header{display:none}}@media (width>=85rem){.article-layout.has-toc{grid-template-columns:minmax(0, var(--article-width)) 13rem;justify-content:center;gap:3rem;display:grid}.article-layout.has-toc .post{grid-area:1/1;margin-inline:0}.article-layout.has-toc .article-toc{background:0 0;grid-area:1/2;margin:0;padding:0}.article-toc nav{max-height:calc(100dvh - 5rem);position:sticky;top:2.5rem;overflow-y:auto}}@media (width<=63.999rem){:root[data-js] .menu-button{display:inline-flex}:root[data-js] .sidebar-close{display:inline-flex;position:absolute;top:.5rem;right:.5rem}:root[data-js] .drawer-side{z-index:40;width:min(var(--sidebar-width), 85vw);visibility:hidden;transition:transform .3s ease-out,visibility 0s linear .3s;position:fixed;inset:0 auto 0 0;overflow-y:auto;transform:translate(-100%)}:root[data-js] .layout.drawer-open .drawer-side{visibility:visible;transition:transform .3s ease-out;transform:none}:root[data-js] .layout.drawer-open .drawer-overlay{z-index:35;cursor:pointer;background:#0006;border:0;display:block;position:fixed;inset:0}:root[data-js] .layout.drawer-open{overflow:hidden}}@media (width<=48rem){.site-main{padding:1.5rem 1rem 2.5rem}.featured-grid,.topic-grid{grid-template-columns:1fr}.section-heading{flex-direction:column;align-items:start;gap:.25rem}.section-heading>p{text-align:left}.section-heading>p br{display:none}.horizontal-card-link{flex-direction:column;align-items:stretch;gap:1rem;padding:1rem .25rem}.horizontal-card-cover{flex-basis:auto;width:100%}.card-tags{justify-content:flex-start}.reading-note{flex-direction:column;align-items:start}.reading-note>a{margin-left:0}.prose{font-size:1.0625rem}}@media (width<=36rem){.home-actions{gap:.75rem}.home-actions .button{flex:auto}.post-meta{flex-direction:column}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition:none!important;animation:none!important}}
