:root{--fg:#16191d;--fg-soft:#4a5158;--muted:#767e87;--line:#e3e6ea;--line-soft:#eef0f3;--accent:#1257c4;--accent-soft:#eaf1fd;--bg:#fff;--bg-soft:#f7f8fa;--code-bg:#f4f6f8;--warn-bg:#fdf6e7;--warn-line:#e0a93a;--radius:10px;--wrap:720px}@media (prefers-color-scheme:dark){:root{--fg:#e8edf2;--fg-soft:#b9c2cc;--muted:#8b939d;--line:#2a3038;--line-soft:#21262d;--accent:#5b9dff;--accent-soft:#17253c;--bg:#0f1216;--bg-soft:#161a20;--code-bg:#171c22;--warn-bg:#241f14;--warn-line:#a8802a}}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}body{background:var(--bg);color:var(--fg);word-break:keep-all;overflow-wrap:break-word;-webkit-font-smoothing:antialiased;margin:0;font-family:Pretendard,-apple-system,BlinkMacSystemFont,system-ui,Segoe UI,Apple SD Gothic Neo,Malgun Gothic,sans-serif;font-size:17px;line-height:1.78}.wrap{max-width:var(--wrap);margin:0 auto;padding:0 20px}.wrap-wide{max-width:940px;margin:0 auto;padding:0 20px}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}img{max-width:100%;height:auto}.site-header{border-bottom:1px solid var(--line);background:var(--bg);z-index:20;position:sticky;top:0}.site-header .bar{align-items:center;gap:20px;height:58px;display:flex}.brand{letter-spacing:-.02em;color:var(--fg);flex-shrink:0;font-size:20px;font-weight:800}.brand:hover{text-decoration:none}.brand span{color:var(--accent)}.nav{scrollbar-width:none;gap:2px;margin-left:auto;display:flex;overflow-x:auto}.nav::-webkit-scrollbar{display:none}.nav a{color:var(--fg-soft);white-space:nowrap;border-radius:7px;padding:6px 10px;font-size:14.5px;font-weight:500}.nav a:hover{background:var(--bg-soft);color:var(--fg);text-decoration:none}.nav a[aria-current=page]{color:var(--accent);background:var(--accent-soft)}.site-footer{border-top:1px solid var(--line);background:var(--bg-soft);color:var(--muted);margin-top:72px;padding:32px 0 48px;font-size:14px}.site-footer .links{flex-wrap:wrap;gap:8px 18px;margin-bottom:14px;display:flex}.site-footer .links a{color:var(--fg-soft);font-weight:500}.site-footer p{margin:4px 0;line-height:1.65}.site-footer .disclaimer{color:var(--muted);margin-top:12px;font-size:13px}.hero{border-bottom:1px solid var(--line-soft);padding:44px 0 30px}.hero h1{letter-spacing:-.03em;margin:0 0 10px;font-size:30px;font-weight:800;line-height:1.35}.hero p{color:var(--fg-soft);margin:0;font-size:16px}.chips{flex-wrap:wrap;gap:8px;margin:22px 0 8px;display:flex}.chip{border:1px solid var(--line);color:var(--fg-soft);background:var(--bg);border-radius:999px;padding:6px 13px;font-size:13.5px;font-weight:600}.chip:hover{border-color:var(--accent);color:var(--accent);text-decoration:none}.chip .n{color:var(--muted);margin-left:4px;font-weight:500}.post-list{margin:8px 0 0;padding:0;list-style:none}.post-list li{border-bottom:1px solid var(--line-soft);padding:22px 0}.post-list h2{letter-spacing:-.02em;margin:6px 0 7px;font-size:19px;font-weight:700;line-height:1.45}.post-list h2 a{color:var(--fg)}.post-list h2 a:hover{color:var(--accent);text-decoration:none}.post-list .excerpt{color:var(--fg-soft);margin:0 0 8px;font-size:15px;line-height:1.65}.cat{letter-spacing:.02em;color:var(--accent);background:var(--accent-soft);border-radius:5px;padding:3px 9px;font-size:12px;font-weight:700;display:inline-block}.cat:hover{text-decoration:none}.meta{color:var(--muted);font-size:13.5px}.meta span+span:before{content:"·";margin:0 7px}.post-header{padding:40px 0 22px}.post-header h1{letter-spacing:-.03em;margin:12px 0 14px;font-size:31px;font-weight:800;line-height:1.38}.toc{background:var(--bg-soft);border:1px solid var(--line);border-radius:var(--radius);margin:26px 0;padding:16px 20px}.toc strong{letter-spacing:-.01em;margin-bottom:8px;font-size:14px;display:block}.toc ol{margin:0;padding-left:20px}.toc li{margin:4px 0;font-size:14.5px}.toc a{color:var(--fg-soft)}.toc a:hover{color:var(--accent)}.prose{font-size:17px}.prose>:first-child{margin-top:0}.prose h2{letter-spacing:-.025em;border-bottom:1px solid var(--line);margin:2.4em 0 .7em;padding-bottom:.4em;scroll-margin-top:76px;font-size:22px;font-weight:750;line-height:1.45}.prose h3{letter-spacing:-.02em;margin:1.9em 0 .6em;scroll-margin-top:76px;font-size:18px;font-weight:700}.prose p{margin:1em 0}.prose ol,.prose ul{margin:1em 0;padding-left:1.35em}.prose li{margin:.55em 0}.prose li>ol,.prose li>ul{margin:.5em 0}.prose strong{font-weight:700}.prose hr{border:0;border-top:1px solid var(--line-soft);margin:2.6em 0}.prose pre{background:var(--code-bg);border:1px solid var(--line);border-radius:var(--radius);margin:1.1em 0;padding:14px 16px;font-size:14.5px;line-height:1.65;overflow-x:auto}.prose :not(pre)>code{background:var(--code-bg);border:1px solid var(--line-soft);border-radius:5px;padding:.12em .4em;font-size:.88em}.prose blockquote{border-left:3px solid var(--warn-line);background:var(--warn-bg);border-radius:0 var(--radius) var(--radius) 0;color:var(--fg-soft);margin:1.4em 0;padding:14px 18px;font-size:15.5px}.prose blockquote p{margin:.3em 0}.prose table{border-collapse:collapse;width:100%;margin:1.2em 0;font-size:15px;display:block;overflow-x:auto}.prose th,.prose td{border:1px solid var(--line);text-align:left;padding:9px 12px}.prose th{background:var(--bg-soft);font-weight:700}.post-notice{border:1px solid var(--line);border-radius:var(--radius);background:var(--bg-soft);color:var(--muted);margin:36px 0 0;padding:16px 18px;font-size:14px;line-height:1.7}.related{margin-top:40px}.related h2{letter-spacing:-.02em;margin:0 0 12px;font-size:17px;font-weight:750}.related ul{margin:0;padding:0;list-style:none}.related li{border-top:1px solid var(--line-soft)}.related li a{color:var(--fg);padding:13px 0;font-size:15.5px;font-weight:500;line-height:1.55;display:block}.related li a:hover{color:var(--accent);text-decoration:none}.page{padding:40px 0 0}.page h1{letter-spacing:-.03em;margin:0 0 8px;font-size:28px;font-weight:800}.page .lead{color:var(--fg-soft);margin:0}.page .prose>:first-child{margin-top:1.9em}.ad{text-align:center;margin:30px 0;overflow:hidden}.ad small{color:var(--muted);letter-spacing:.1em;margin-bottom:5px;font-size:10.5px;display:block}.notfound{text-align:center;padding:80px 0}.notfound h1{letter-spacing:-.03em;margin:0 0 8px;font-size:46px}.notfound p{color:var(--fg-soft);margin:0 0 22px}@media (width<=640px){body{font-size:16.5px}.hero{padding:32px 0 24px}.hero h1{font-size:25px}.post-header{padding:28px 0 18px}.post-header h1{font-size:25px}.prose h2{font-size:20px}.site-header .bar{gap:12px;height:54px}}
