@import "https://cdn.jsdelivr.net/gh/orioncactus/pretendard@v1.3.9/dist/web/static/pretendard.min.css";*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}:root{--font:"Pretendard", "Apple SD Gothic Neo", -apple-system, sans-serif;--bg:#f8f8f8;--header-bg:#f8f8f8e0;--white:#fff;--black:#111;--gray-50:#f5f5f5;--gray-100:#ebebeb;--gray-200:#d6d6d6;--gray-400:#9a9a9a;--gray-600:#6b6b6b;--gray-800:#2e2e2e;--accent:#6366f1;--max-w:760px}[data-theme=dark]{--bg:#111;--header-bg:#111111e0;--white:#1e1e1e;--black:#f0f0f0;--gray-50:#1a1a1a;--gray-100:#252525;--gray-200:#333;--gray-400:#6b6b6b;--gray-600:#9a9a9a;--gray-800:#d0d0d0;--accent:#818cf8}body{font-family:var(--font);background:var(--bg);color:var(--black);-webkit-font-smoothing:antialiased;line-height:1.7;transition:background .2s,color .2s}a{color:inherit;text-decoration:none}::-webkit-scrollbar{width:3px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--gray-200);border-radius:2px}#app{min-height:100vh}@media print{@page{size:A4;margin:16mm 18mm}*{-webkit-print-color-adjust:exact;print-color-adjust:exact}body{background:#fff;font-size:11pt}header,.links a[download],footer{display:none!important}.wrap{max-width:100%;margin:0;padding:0}section{break-inside:avoid;padding:28pt 0}.divider{background:#ddd}.hero{padding:0 0 28pt!important}h1{font-size:22pt!important}h3{font-size:12pt}.section-title{margin-bottom:14pt;font-size:8pt}a{color:inherit!important;text-decoration:none!important}.tag,.tech{color:#333!important;background:0 0!important;border:1px solid #ccc!important}.links a{color:#333!important;background:0 0!important;border:1px solid #999!important}}header[data-v-bdcb711e]{z-index:999;background:var(--header-bg);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border-bottom:1px solid var(--gray-100);position:fixed;top:0;left:0;right:0}.header-inner[data-v-bdcb711e]{max-width:var(--max-w);justify-content:space-between;align-items:center;height:56px;margin:0 auto;padding:0 24px;display:flex}.logo[data-v-bdcb711e]{letter-spacing:-.3px;font-size:15px;font-weight:700}.header-right[data-v-bdcb711e]{align-items:center;gap:16px;display:flex}nav[data-v-bdcb711e]{gap:24px;display:flex}nav a[data-v-bdcb711e]{color:var(--gray-600);font-size:13px;font-weight:500;transition:color .15s}nav a[data-v-bdcb711e]:hover{color:var(--black)}.theme-toggle[data-v-bdcb711e]{border:1px solid var(--gray-200);width:32px;height:32px;color:var(--gray-600);cursor:pointer;background:0 0;border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;transition:color .15s,border-color .15s,background .15s;display:flex}.theme-toggle[data-v-bdcb711e]:hover{color:var(--black);background:var(--gray-50);border-color:var(--gray-400)}@media (width<=600px){nav[data-v-bdcb711e]{display:none}}.hero[data-v-2b882489]{flex-direction:column;gap:40px;padding:64px 0 72px;display:flex}h1[data-v-2b882489]{letter-spacing:-.5px;color:var(--black);font-size:40px;font-weight:700;line-height:1.25}h1 strong[data-v-2b882489]{color:var(--accent)}.sub[data-v-2b882489]{color:var(--gray-600);max-width:480px;margin-top:16px;font-size:15px;line-height:1.7}.hero-meta[data-v-2b882489]{flex-direction:column;gap:10px;display:flex}.meta-row[data-v-2b882489]{color:var(--gray-600);flex-wrap:wrap;align-items:center;gap:8px;font-size:13px;display:flex}.meta-row a[data-v-2b882489]{color:var(--gray-600);transition:color .15s}.meta-row a[data-v-2b882489]:hover{color:var(--black)}.dot[data-v-2b882489]{color:var(--gray-200)}.links[data-v-2b882489]{flex-wrap:wrap;gap:8px;display:flex}.links a[data-v-2b882489]{border-radius:6px;align-items:center;gap:5px;padding:5px 12px;font-size:13px;font-weight:500;transition:background .15s,color .15s,border-color .15s;display:inline-flex}.link-external[data-v-2b882489]{color:var(--gray-800);border:1px solid var(--gray-200);background:var(--white)}.link-external[data-v-2b882489]:hover{border-color:var(--gray-400);color:var(--black)}.link-file[data-v-2b882489]{color:var(--white);background:var(--accent);border:1px solid var(--accent)}.link-file[data-v-2b882489]:hover{opacity:.85}.tistory-t[data-v-2b882489]{font-size:13px;font-weight:800;line-height:1}@media (width<=600px){.hero[data-v-2b882489]{padding:80px 0 48px}h1[data-v-2b882489]{font-size:28px}}.tooltip-wrap[data-v-ae146f7d]{display:inline;position:relative}.mark[data-v-ae146f7d]{color:var(--accent);cursor:default;vertical-align:super;margin-left:1px;font-size:10px;font-weight:700;line-height:1}.tooltip[data-v-ae146f7d]{visibility:hidden;opacity:0;color:#f5f5f5;white-space:nowrap;pointer-events:none;z-index:100;background:#1a1a1a;border-radius:6px;padding:6px 12px;font-size:12px;font-weight:500;transition:opacity .15s;position:absolute;bottom:calc(100% + 8px);left:50%;transform:translate(-50%)}.tooltip[data-v-ae146f7d]:after{content:"";border:5px solid #0000;border-top-color:#1a1a1a;position:absolute;top:100%;left:50%;transform:translate(-50%)}.tooltip-wrap:hover .tooltip[data-v-ae146f7d]{visibility:visible;opacity:1}.about-body[data-v-54f7d225]{flex-direction:column;gap:32px;max-width:620px;display:flex}.trait h3[data-v-54f7d225]{color:var(--black);margin-bottom:10px;font-size:15px;font-weight:700}.trait p[data-v-54f7d225]{color:var(--gray-800);font-size:14px;line-height:1.9}.trait strong[data-v-54f7d225]{color:var(--black);font-weight:700}.skills-grid[data-v-619807a0]{flex-direction:column;gap:20px;display:flex}.skill-group[data-v-619807a0]{align-items:flex-start;gap:24px;display:flex}.category[data-v-619807a0]{color:var(--gray-400);text-transform:uppercase;letter-spacing:.05em;min-width:140px;padding-top:3px;font-size:12px;font-weight:600}.tags[data-v-619807a0]{flex-wrap:wrap;gap:8px;display:flex}.tag[data-v-619807a0]{color:var(--gray-800);background:var(--white);border:1px solid var(--gray-100);border-radius:4px;padding:3px 10px;font-size:13px;font-weight:600}@media (width<=600px){.skill-group[data-v-619807a0]{flex-direction:column;gap:8px}.category[data-v-619807a0]{min-width:unset}}.project-list[data-v-d45dcffc]{flex-direction:column;gap:0;display:flex}.project-item[data-v-d45dcffc]{border-bottom:1px solid var(--gray-100);flex-direction:column;gap:16px;padding:48px 0;display:flex}.project-item[data-v-d45dcffc]:first-child{padding-top:0}.project-item[data-v-d45dcffc]:last-child{border-bottom:none;padding-bottom:0}.project-header[data-v-d45dcffc]{flex-direction:column;gap:4px;display:flex}.project-title-row[data-v-d45dcffc]{flex-wrap:wrap;align-items:baseline;gap:12px;display:flex}h3[data-v-d45dcffc]{color:var(--black);font-size:17px;font-weight:700}.period[data-v-d45dcffc]{color:var(--gray-400);font-size:12px}.sub[data-v-d45dcffc]{color:var(--gray-600);margin-top:4px;font-size:14px;line-height:1.7}.role[data-v-d45dcffc]{color:var(--gray-400);font-size:13px}.contributions[data-v-d45dcffc]{flex-direction:column;gap:14px;display:flex}.contrib-section[data-v-d45dcffc]{flex-direction:column;gap:6px;display:flex}.contrib-title[data-v-d45dcffc]{color:var(--black);font-size:13px;font-weight:700}ul[data-v-d45dcffc]{flex-direction:column;gap:4px;padding-left:18px;display:flex}li[data-v-d45dcffc]{color:var(--gray-600);font-size:14px;line-height:1.7}.tech-tags[data-v-d45dcffc]{flex-wrap:wrap;gap:6px;display:flex}.tech[data-v-d45dcffc]{color:var(--accent);background:#3b82f60f;border:1px solid #3b82f633;border-radius:4px;padding:2px 8px;font-size:12px;font-weight:700}.project-list[data-v-018c323d]{flex-direction:column;gap:28px;display:flex}.project-item[data-v-018c323d]{flex-direction:column;gap:8px;display:flex}.title-row[data-v-018c323d]{flex-wrap:wrap;align-items:center;gap:12px;display:flex}h3[data-v-018c323d]{color:var(--black);font-size:16px;font-weight:700}.link[data-v-018c323d]{color:var(--gray-800);border:1px solid var(--gray-200);background:var(--white);border-radius:6px;align-items:center;gap:4px;padding:3px 10px;font-size:12px;font-weight:500;transition:color .15s,border-color .15s;display:inline-flex}.link[data-v-018c323d]:hover{color:var(--black);border-color:var(--gray-400)}.desc[data-v-018c323d]{color:var(--gray-600);font-size:14px;line-height:1.8}.desc strong[data-v-018c323d]{color:var(--black);font-weight:700}.tech-tags[data-v-018c323d]{flex-wrap:wrap;gap:6px;display:flex}.tech[data-v-018c323d]{color:var(--accent);background:#3b82f60f;border:1px solid #3b82f633;border-radius:4px;padding:2px 8px;font-size:12px}.oss-list[data-v-831896b8]{flex-direction:column;gap:20px;display:flex}.oss-item[data-v-831896b8]{flex-direction:column;gap:4px;display:flex}.title-row[data-v-831896b8]{align-items:center;gap:10px;display:flex}.repo-link[data-v-831896b8]{color:var(--black);font-size:15px;font-weight:600;transition:color .15s}.repo-link[data-v-831896b8]:hover{color:var(--accent)}.label[data-v-831896b8]{color:var(--accent);text-transform:uppercase;letter-spacing:.05em;background:#3b82f614;border:1px solid #3b82f633;border-radius:3px;padding:1px 7px;font-size:11px;font-weight:600}.desc[data-v-831896b8]{color:var(--gray-600);font-size:14px;line-height:1.7}.award-list[data-v-d77ce852]{flex-direction:column;gap:20px;display:flex}.award-item[data-v-d77ce852]{flex-direction:column;gap:2px;display:flex}.award-header[data-v-d77ce852]{flex-wrap:wrap;align-items:baseline;gap:12px;display:flex}h3[data-v-d77ce852]{color:var(--black);font-size:16px;font-weight:700}.date[data-v-d77ce852]{color:var(--gray-400);font-size:12px}.organizer[data-v-d77ce852]{color:var(--gray-600);font-size:13px}.desc[data-v-d77ce852]{color:var(--gray-600);margin-top:4px;font-size:14px;line-height:1.7}.activity-list[data-v-843706a1]{flex-direction:column;gap:16px;display:flex}.activity-item[data-v-843706a1]{flex-direction:column;gap:2px;display:flex}.activity-header[data-v-843706a1]{flex-wrap:wrap;align-items:baseline;gap:12px;display:flex}h3[data-v-843706a1]{color:var(--black);font-size:15px;font-weight:600}.period[data-v-843706a1]{color:var(--gray-400);font-size:12px}.desc[data-v-843706a1]{color:var(--gray-600);font-size:14px;line-height:1.7}.edu-list[data-v-4610c671]{flex-direction:column;gap:24px;display:flex}.edu-item[data-v-4610c671]{flex-direction:column;gap:2px;display:flex}.edu-header[data-v-4610c671]{flex-wrap:wrap;align-items:baseline;gap:12px;display:flex}h3[data-v-4610c671]{color:var(--black);font-size:16px;font-weight:700}.period[data-v-4610c671]{color:var(--gray-400);font-size:12px}.major[data-v-4610c671]{color:var(--gray-600);font-size:14px}.cert-list[data-v-4610c671]{flex-direction:column;gap:10px;margin-top:28px;display:flex}.section-sub[data-v-4610c671]{letter-spacing:.1em;text-transform:uppercase;color:var(--gray-400);margin-bottom:4px;font-size:12px;font-weight:700}.cert-item[data-v-4610c671]{align-items:baseline;gap:12px;display:flex}.cert-name[data-v-4610c671]{color:var(--black);font-size:15px;font-weight:600}.cert-date[data-v-4610c671]{color:var(--gray-400);font-size:12px}.footer-cta[data-v-3d0d26f5]{border-top:1px solid var(--gray-100);background:var(--white)}.cta-inner[data-v-3d0d26f5]{max-width:var(--max-w);justify-content:space-between;align-items:center;gap:32px;margin:0 auto;padding:64px 24px;display:flex}.cta-label[data-v-3d0d26f5]{letter-spacing:.1em;text-transform:uppercase;color:var(--accent);margin-bottom:10px;font-size:11px;font-weight:700}.cta-title[data-v-3d0d26f5]{letter-spacing:-.3px;color:var(--black);font-size:22px;font-weight:700;line-height:1.45}.cta-actions[data-v-3d0d26f5]{flex-shrink:0;gap:8px;display:flex}.btn-download[data-v-3d0d26f5],.btn-contact[data-v-3d0d26f5]{white-space:nowrap;border-radius:8px;align-items:center;gap:6px;padding:10px 18px;font-size:13px;font-weight:600;transition:opacity .15s,background .15s,border-color .15s,color .15s;display:inline-flex}.btn-download[data-v-3d0d26f5]{background:var(--accent);color:var(--white);border:1px solid var(--accent)}.btn-download[data-v-3d0d26f5]:hover{opacity:.85}.btn-contact[data-v-3d0d26f5]{background:var(--white);color:var(--gray-800);border:1px solid var(--gray-200)}.btn-contact[data-v-3d0d26f5]:hover{border-color:var(--gray-400);color:var(--black)}.footer-bottom[data-v-3d0d26f5]{border-top:1px solid var(--gray-100)}.footer-inner[data-v-3d0d26f5]{max-width:var(--max-w);color:var(--gray-400);align-items:center;gap:8px;margin:0 auto;padding:20px 24px;font-size:12px;display:flex}.sep[data-v-3d0d26f5]{color:var(--gray-200)}a[data-v-3d0d26f5]{color:var(--gray-400);transition:color .15s}.footer-inner a[data-v-3d0d26f5]:hover{color:var(--black)}@media (width<=600px){.cta-inner[data-v-3d0d26f5]{flex-direction:column;align-items:flex-start;gap:24px;padding:48px 24px}.cta-title[data-v-3d0d26f5]{font-size:18px}.cta-actions[data-v-3d0d26f5]{flex-direction:column;width:100%}.btn-download[data-v-3d0d26f5],.btn-contact[data-v-3d0d26f5]{justify-content:center;width:100%;padding:12px 18px}}.wrap{max-width:var(--max-w);margin:0 auto;padding:0 24px}.divider{background:var(--gray-100);width:100%;height:1px}section{padding:72px 0}.section-title{letter-spacing:.1em;text-transform:uppercase;color:var(--gray-400);margin-bottom:28px;font-size:12px;font-weight:700}@media (width<=600px){section{padding:48px 0}}.floating-download{color:var(--white);background:var(--accent);border:1px solid var(--accent);z-index:999;border-radius:999px;align-items:center;gap:6px;padding:8px 16px;font-size:13px;font-weight:600;text-decoration:none;transition:opacity .15s,box-shadow .15s;display:inline-flex;position:fixed;bottom:28px;right:28px;box-shadow:0 4px 16px #3b82f659}.floating-download:hover{opacity:.85;box-shadow:0 6px 20px #3b82f673}@media print{.floating-download{display:none}}
