:root{--bg: #fdfdfc;--ink: #17181a;--mut: rgba(23, 24, 26, .62);--faint: rgba(23, 24, 26, .42);--line: rgba(23, 24, 26, .16);--strong: #17181a;--btntext: #fdfdfc;--hoverbg: rgba(23, 24, 26, .035);--accent: #c2410c}[data-theme=dark]{--bg: #141416;--ink: #f0efec;--mut: rgba(240, 239, 236, .62);--faint: rgba(240, 239, 236, .42);--line: rgba(240, 239, 236, .15);--strong: rgba(240, 239, 236, .85);--btntext: #141416;--hoverbg: rgba(240, 239, 236, .05)}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font-family:IBM Plex Sans KR,sans-serif}::selection{background:var(--accent);color:#fff}a{text-decoration:none;color:inherit}@keyframes fadeUp{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.mono{font-family:IBM Plex Mono,monospace}.serif{font-family:"Noto Serif KR",serif}.fade-up{animation:fadeUp .6s ease both}.d1{animation-delay:.06s}.d2{animation-delay:.12s}.d3{animation-delay:.18s}.d4{animation-delay:.24s}.container{max-width:1080px;margin:0 auto;padding-left:48px;padding-right:48px}.nav{position:sticky;top:0;z-index:10;display:flex;align-items:center;justify-content:space-between;padding:20px 48px;border-bottom:1px solid var(--strong);background:var(--bg)}.nav-logo{font:700 17px "Noto Serif KR",serif;cursor:pointer}.nav-links{display:flex;gap:30px}.nav-link{font-size:14px;color:var(--faint);padding-bottom:2px;border-bottom:2px solid transparent;transition:color .2s}.nav-link:hover{color:var(--ink)}.nav-link.active{color:var(--ink);border-bottom-color:var(--accent)}.btn-fill{display:inline-block;padding:14px 28px;background:var(--ink);color:var(--btntext);font:500 14px IBM Plex Sans KR,sans-serif;cursor:pointer;transition:background .2s,color .2s}.btn-fill:hover{background:var(--accent);color:#fff}.btn-line{display:inline-block;padding:14px 28px;border:1px solid var(--line);color:var(--ink);font:400 14px IBM Plex Sans KR,sans-serif;cursor:pointer;transition:border-color .2s,color .2s}.btn-line:hover{border-color:var(--accent);color:var(--accent)}.btn-fill:disabled{opacity:.55;cursor:not-allowed}.btn-fill:disabled:hover{background:var(--ink);color:var(--btntext)}.input{padding:12px 14px;border:1px solid var(--line);background:var(--bg);color:var(--ink);font:400 15px IBM Plex Sans KR,sans-serif;outline:none;transition:border-color .2s}.input:focus{border-color:var(--accent)}.post-row{display:grid;grid-template-columns:110px 1fr auto;gap:24px;align-items:baseline;padding:26px 12px;margin:0 -12px;border-bottom:1px solid var(--line);cursor:pointer;transition:background .2s}.post-row:hover{background:var(--hoverbg)}.article-body p{margin:18px 0;font:300 16.5px/1.9 IBM Plex Sans KR,sans-serif;color:var(--mut);text-wrap:pretty}.article-body h1{margin:0 0 20px;font:700 32px/1.35 "Noto Serif KR",serif;color:var(--ink)}.article-body h2{margin:44px 0 4px;font:700 24px/1.4 "Noto Serif KR",serif;color:var(--ink)}.article-body h3{margin:32px 0 4px;font:700 19px/1.4 "Noto Serif KR",serif;color:var(--ink)}.article-body ul,.article-body ol{margin:18px 0;padding-left:22px;font:300 16.5px/1.9 IBM Plex Sans KR,sans-serif;color:var(--mut)}.article-body li{margin:6px 0}.article-body blockquote{margin:24px 0;padding:4px 20px;border-left:3px solid var(--accent);color:var(--faint);font-style:italic}.article-body a{color:var(--accent);text-decoration:underline}.article-body strong{color:var(--ink);font-weight:700}.article-body code{font-family:IBM Plex Mono,monospace;font-size:.9em;background:var(--hoverbg);padding:2px 6px}.article-body pre code{background:none;padding:0}.article-body table{width:100%;border-collapse:collapse;margin:24px 0;font-size:14.5px}.article-body th,.article-body td{border:1px solid var(--line);padding:8px 12px;text-align:left}.article-body pre{margin:24px 0;padding:20px 24px;background:var(--hoverbg);border:1px solid var(--line);overflow-x:auto;font:400 13.5px/1.7 IBM Plex Mono,monospace;color:var(--ink);white-space:pre-wrap}.footer-link{font:400 12px IBM Plex Mono,monospace;color:var(--faint);cursor:pointer}.footer-link:hover{color:var(--accent)}@media (max-width: 720px){.container{padding-left:24px;padding-right:24px}.nav{padding:16px 24px}.post-row{grid-template-columns:1fr;gap:8px}.about-grid{grid-template-columns:1fr!important}}
