:root{--bg:#fbfaf7;--surface:#fff;--text:#1f1f1d;--muted:#6b6a65;--line:#e3e1da;--accent:#2f6fd6;--accent-soft:#e8f0fc;--code-bg:#f1efe9;--cds-text-primary:var(--text);--cds-text-secondary:var(--muted);--cds-chart-axis:#c4c1b6;--cds-chart-grid:#e5e3dc;--cds-chart-reference-tint:#edebe5;--cds-chart-categorical-1:#2f6fd6;--cds-chart-categorical-2:#e8743b;--cds-chart-categorical-3:#23a37d;--cds-chart-categorical-4:#2c4a72;--cds-chart-status-critical:#d93838;color-scheme:light}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#1a1a19;--surface:#222221;--text:#ecebe6;--muted:#a6a59f;--line:#3a3a37;--accent:#6ea2ff;--accent-soft:#1f2d45;--code-bg:#2a2a28;--cds-chart-axis:#5f5e59;--cds-chart-grid:#3a3a37;--cds-chart-reference-tint:#2c2c2a;--cds-chart-categorical-1:#6ea2ff;--cds-chart-categorical-2:#f0915e;--cds-chart-categorical-3:#45c79c;--cds-chart-categorical-4:#9cb4d8;--cds-chart-status-critical:#f06262;color-scheme:dark}}:root[data-theme=dark]{--bg:#1a1a19;--surface:#222221;--text:#ecebe6;--muted:#a6a59f;--line:#3a3a37;--accent:#6ea2ff;--accent-soft:#1f2d45;--code-bg:#2a2a28;--cds-chart-axis:#5f5e59;--cds-chart-grid:#3a3a37;--cds-chart-reference-tint:#2c2c2a;--cds-chart-categorical-1:#6ea2ff;--cds-chart-categorical-2:#f0915e;--cds-chart-categorical-3:#45c79c;--cds-chart-categorical-4:#9cb4d8;--cds-chart-status-critical:#f06262;color-scheme:dark}*{box-sizing:border-box}html{scroll-behavior:smooth}body{background:var(--bg);color:var(--text);word-break:keep-all;overflow-wrap:break-word;-webkit-font-smoothing:antialiased;margin:0;font-family:Pretendard Variable,Pretendard,-apple-system,BlinkMacSystemFont,Apple SD Gothic Neo,Noto Sans KR,sans-serif;font-size:17px;line-height:1.75}a{color:var(--accent);text-underline-offset:3px}code{background:var(--code-bg);border-radius:5px;padding:2px 6px;font-family:ui-monospace,SF Mono,Menlo,Consolas,monospace;font-size:.88em}pre{background:var(--code-bg);border-radius:10px;padding:16px 18px;font-size:14px;line-height:1.6;overflow-x:auto}pre code{background:0 0;padding:0}.wrap{max-width:1040px;margin:0 auto;padding:0 24px}.site-head{border-bottom:1px solid var(--line)}.site-head .wrap{justify-content:space-between;align-items:center;height:64px;display:flex}.brand{letter-spacing:-.02em;color:var(--text);font-size:19px;font-weight:800;text-decoration:none}.site-nav{align-items:center;gap:20px;font-size:15px;display:flex}.site-nav a{color:var(--muted);text-decoration:none}.site-nav a:hover{color:var(--text)}.theme-toggle{border:1px solid var(--line);color:var(--muted);cursor:pointer;background:0 0;border-radius:8px;place-items:center;width:34px;height:34px;font-size:15px;display:inline-grid}.theme-toggle:hover{color:var(--text);border-color:var(--muted)}.site-foot{border-top:1px solid var(--line);color:var(--muted);margin-top:96px;padding:28px 0 48px;font-size:13px}.site-foot a{color:var(--muted)}.intro{padding:56px 0 32px}.intro h1{letter-spacing:-.02em;margin:0 0 8px;font-size:clamp(28px,4vw,36px)}.intro p{color:var(--muted);margin:0}.post-list{margin:0;padding:0;list-style:none}.post-list li{border-top:1px solid var(--line);padding:26px 0}.post-list a.title{color:var(--text);letter-spacing:-.01em;font-size:21px;font-weight:700;line-height:1.45;text-decoration:none}.post-list a.title:hover{color:var(--accent)}.post-list p{color:var(--muted);margin:6px 0 10px;font-size:16px}.meta{color:var(--muted);flex-wrap:wrap;align-items:center;gap:12px;font-size:14px;display:flex}.tag{background:var(--code-bg);color:var(--muted);border-radius:999px;padding:1px 10px;font-size:13px;text-decoration:none;display:inline-block}.tag:hover{color:var(--accent)}.article-head{border-bottom:1px solid var(--line);margin-bottom:36px;padding:56px 0 28px}.article-head h1{letter-spacing:-.02em;margin:0 0 14px;font-size:clamp(28px,4.2vw,40px);font-weight:750;line-height:1.3}.article-head .lede{color:var(--muted);max-width:760px;margin:0 0 16px;font-size:18px}nav.toc{background:var(--surface);border:1px solid var(--line);border-radius:12px;margin:0 0 40px;padding:18px 22px}nav.toc p{color:var(--muted);margin:0 0 8px;font-size:13px;font-weight:600}nav.toc ol{columns:2;column-gap:32px;margin:0;padding-left:20px;font-size:15px}nav.toc li{break-inside:avoid}nav.toc a{color:var(--text);text-decoration:none}nav.toc a:hover{color:var(--accent)}.prose>p,.prose>ul,.prose>ol,.prose>.math,.prose>pre,.prose>blockquote{max-width:760px}.prose h2{letter-spacing:-.015em;border-top:2px solid var(--text);margin:72px 0 18px;padding-top:22px;scroll-margin-top:16px;font-size:26px;line-height:1.35}.prose h3{margin:48px 0 12px;scroll-margin-top:16px;font-size:20px;line-height:1.4}.prose h4{margin:28px 0 8px;font-size:17px}.prose p{margin:0 0 16px}.prose ul,.prose ol{margin:0 0 18px;padding-left:22px}.prose li{margin:4px 0}.prose li>p{margin:0 0 6px}.prose blockquote{border-left:3px solid var(--line);color:var(--muted);margin:0 0 18px;padding:4px 18px}.prose .table-wrap,.prose table{margin:8px 0 24px}.prose table{border-collapse:collapse;background:var(--surface);border:1px solid var(--line);border-radius:10px;width:100%;font-size:15px;line-height:1.6;display:block;overflow:auto hidden}.prose th,.prose td{text-align:left;vertical-align:top;border-bottom:1px solid var(--line);padding:10px 14px}.prose th{background:var(--code-bg);white-space:nowrap;font-weight:650}.prose tr:last-child td{border-bottom:0}.math{margin:8px 0 18px;overflow-x:auto}@media (width<=640px){body{font-size:16px}.wrap{padding:0 16px}nav.toc ol{columns:1}.prose h2{margin-top:56px}}.cat-nav{flex-wrap:wrap;gap:8px;margin:0 0 24px;display:flex}.cat-nav a{border:1px solid var(--line);color:var(--muted);background:var(--surface);border-radius:999px;padding:5px 12px;font-size:14px;text-decoration:none}.cat-nav a span{color:var(--muted);opacity:.7;margin-left:2px;font-size:13px}.cat-nav a:hover{color:var(--text);border-color:var(--muted)}.cat-nav a[aria-current=page]{background:var(--text);border-color:var(--text);color:var(--bg)}.cat-nav a[aria-current=page] span{color:var(--bg)}a.cat{color:var(--accent);font-size:14px;font-weight:650;text-decoration:none}a.cat:hover{text-decoration:underline}.article-head a.cat{margin-bottom:10px;display:inline-block}.cat-list{margin:0;padding:0;list-style:none}.cat-list li{border-top:1px solid var(--line);padding:20px 0}.cat-list a.title{color:var(--text);font-size:20px;font-weight:700;text-decoration:none}.cat-list a.title:hover{color:var(--accent)}.cat-list .count{color:var(--muted);margin-left:8px;font-size:14px}.cat-list p{color:var(--muted);margin:4px 0 0;font-size:15px}.author-box{border:1px solid var(--line);background:var(--surface);max-width:760px;color:var(--muted);border-radius:12px;margin:72px 0 0;padding:20px 22px;font-size:15px}.author-box p{margin:0}.author-box .name{color:var(--text);margin-bottom:4px;font-size:16px;font-weight:700}.author-box .name a{color:var(--text);text-decoration:none}.author-box .name a:hover{color:var(--accent)}.author-box .name span{color:var(--muted);margin-left:4px;font-size:14px;font-weight:400}.page .prose>*{max-width:760px}.page .prose h2:first-child{margin-top:0}@media (width<=640px){.site-nav{gap:14px}}.page .article-head{border-bottom:0;margin-bottom:0;padding-bottom:8px}.page .contact{flex-wrap:wrap;gap:8px;margin:0 0 8px;display:flex}.page .contact a{border:1px solid var(--line);color:var(--text);background:var(--surface);border-radius:999px;padding:4px 12px;font-size:14px;text-decoration:none}.page .contact a:hover{border-color:var(--accent);color:var(--accent)}.page .prose h3{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:12px;max-width:760px;margin-top:40px;margin-bottom:2px;display:flex}.page .when{color:var(--muted);white-space:nowrap;font-size:14px;font-weight:500}.page li .when{margin-left:6px}.page .role{color:var(--muted);margin:0 0 14px;font-size:15px}.page .prose p>strong:only-child{margin-top:20px;display:block}.page .skills{grid-template-columns:170px 1fr;gap:8px 20px;max-width:760px;margin:0 0 8px;font-size:16px;display:grid}.page .skills dt{font-weight:650}.page .skills dd{color:var(--muted);margin:0}@media (width<=640px){.page .skills{grid-template-columns:1fr;gap:0}.page .skills dd{margin-bottom:10px}}@media print{.site-head,.site-foot,.theme-toggle{display:none}body{color:#000;background:#fff;font-size:13px}.intro,.article-head{padding-top:0}.prose h2{border-top-width:1px;margin-top:28px}a{color:inherit;text-decoration:none}}
