.header[data-astro-cid-eiyd7voq]{position:fixed;top:0;left:0;right:0;z-index:100;background:var(--header-bg, rgba(15, 23, 42, .85));backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-bottom:1px solid var(--color-border);transition:background var(--transition-base),border-color var(--transition-base)}.header[data-astro-cid-eiyd7voq].scrolled{border-bottom-color:var(--color-border-glow)}.header__nav[data-astro-cid-eiyd7voq]{display:flex;align-items:center;justify-content:space-between;height:4rem}.header__logo[data-astro-cid-eiyd7voq]{font-size:var(--text-lg);font-weight:700;color:var(--color-text-primary);text-decoration:none;letter-spacing:-.02em;transition:color var(--transition-fast)}.header__logo[data-astro-cid-eiyd7voq]:hover{color:var(--color-neon-cyan)}.header__links[data-astro-cid-eiyd7voq]{display:flex;gap:var(--space-8);list-style:none}.header__link[data-astro-cid-eiyd7voq]{font-size:var(--text-sm);font-weight:500;color:var(--color-text-secondary);text-decoration:none;transition:color var(--transition-fast);position:relative}.header__link[data-astro-cid-eiyd7voq]:after{content:"";position:absolute;bottom:-4px;left:0;width:0;height:2px;background:var(--gradient-primary);transition:width var(--transition-base)}.header__link[data-astro-cid-eiyd7voq]:hover,.header__link[data-astro-cid-eiyd7voq].active{color:var(--color-neon-cyan)}.header__link[data-astro-cid-eiyd7voq]:hover:after,.header__link[data-astro-cid-eiyd7voq].active:after{width:100%}.header__controls[data-astro-cid-eiyd7voq]{display:flex;align-items:center;gap:var(--space-2)}.header__icon-btn[data-astro-cid-eiyd7voq]{display:flex;align-items:center;justify-content:center;width:2rem;height:2rem;color:var(--color-text-secondary);border:1px solid var(--color-border);border-radius:var(--radius-md);cursor:pointer;background:none;transition:all var(--transition-base)}.header__icon-btn[data-astro-cid-eiyd7voq]:hover{color:var(--color-neon-cyan);border-color:var(--color-border-glow)}:root .icon-moon[data-astro-cid-eiyd7voq],[data-astro-cid-eiyd7voq][data-theme=dark] .icon-moon[data-astro-cid-eiyd7voq]{display:none}:root .icon-sun[data-astro-cid-eiyd7voq],[data-astro-cid-eiyd7voq][data-theme=dark] .icon-sun[data-astro-cid-eiyd7voq]{display:block}[data-astro-cid-eiyd7voq][data-theme=light] .icon-sun[data-astro-cid-eiyd7voq]{display:none}[data-astro-cid-eiyd7voq][data-theme=light] .icon-moon[data-astro-cid-eiyd7voq]{display:block}.header__menu-btn[data-astro-cid-eiyd7voq]{display:none;width:2rem;height:2rem;position:relative;cursor:pointer;background:none;border:none}.header__menu-icon[data-astro-cid-eiyd7voq],.header__menu-icon[data-astro-cid-eiyd7voq]:before,.header__menu-icon[data-astro-cid-eiyd7voq]:after{display:block;width:1.25rem;height:2px;background:var(--color-text-primary);border-radius:1px;transition:all var(--transition-base);position:absolute;left:50%;transform:translate(-50%)}.header__menu-icon[data-astro-cid-eiyd7voq]{top:50%;transform:translate(-50%,-50%)}.header__menu-icon[data-astro-cid-eiyd7voq]:before{content:"";top:-6px;left:0;transform:none}.header__menu-icon[data-astro-cid-eiyd7voq]:after{content:"";top:6px;left:0;transform:none}.header__menu-btn[data-astro-cid-eiyd7voq][aria-expanded=true] .header__menu-icon[data-astro-cid-eiyd7voq]{background:transparent}.header__menu-btn[data-astro-cid-eiyd7voq][aria-expanded=true] .header__menu-icon[data-astro-cid-eiyd7voq]:before{top:0;transform:rotate(45deg)}.header__menu-btn[data-astro-cid-eiyd7voq][aria-expanded=true] .header__menu-icon[data-astro-cid-eiyd7voq]:after{top:0;transform:rotate(-45deg)}.header__mobile-menu[data-astro-cid-eiyd7voq]{display:none;background:var(--header-bg);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border-bottom:1px solid var(--color-border);padding:var(--space-6)}.header__mobile-menu[data-astro-cid-eiyd7voq].open{display:block}.header__mobile-links[data-astro-cid-eiyd7voq]{display:flex;flex-direction:column;gap:var(--space-4);list-style:none}.header__mobile-link[data-astro-cid-eiyd7voq]{font-size:var(--text-lg);font-weight:500;color:var(--color-text-secondary);text-decoration:none;padding:var(--space-2) 0;transition:color var(--transition-fast)}.header__mobile-link[data-astro-cid-eiyd7voq]:hover,.header__mobile-link[data-astro-cid-eiyd7voq].active{color:var(--color-neon-cyan)}@media(max-width:768px){.header__links[data-astro-cid-eiyd7voq]{display:none}.header__menu-btn[data-astro-cid-eiyd7voq]{display:block}}.footer[data-astro-cid-tgc5tww7]{margin-top:var(--space-20)}.footer__inner[data-astro-cid-tgc5tww7]{display:flex;align-items:center;justify-content:space-between;padding-top:var(--space-8);padding-bottom:var(--space-8)}.footer__name[data-astro-cid-tgc5tww7]{font-size:var(--text-sm);font-weight:600;color:var(--color-text-primary);margin-bottom:var(--space-1)}.footer__copy[data-astro-cid-tgc5tww7]{font-size:var(--text-xs);color:var(--color-text-tertiary)}.footer__social[data-astro-cid-tgc5tww7]{display:flex;gap:var(--space-4)}.footer__social-link[data-astro-cid-tgc5tww7]{display:flex;align-items:center;justify-content:center;width:2.25rem;height:2.25rem;color:var(--color-text-secondary);border:1px solid var(--color-border);border-radius:var(--radius-md);transition:all var(--transition-base)}.footer__social-link[data-astro-cid-tgc5tww7]:hover{color:var(--color-neon-cyan);border-color:var(--color-border-glow);box-shadow:var(--glow-subtle)}.footer__social-link[data-astro-cid-tgc5tww7] svg{width:1rem;height:1rem}@media(max-width:768px){.footer__inner[data-astro-cid-tgc5tww7]{flex-direction:column;gap:var(--space-6);text-align:center}}:root{--header-bg: rgba(15, 23, 42, .85);--color-bg: #0f172a;--color-bg-alt: #1e293b;--color-surface: #1e293b;--color-surface-raised: #263548;--color-border: rgba(148, 163, 184, .15);--color-border-light: rgba(148, 163, 184, .08);--color-border-glow: rgba(34, 211, 238, .3);--color-text-primary: #f1f5f9;--color-text-secondary: #94a3b8;--color-text-tertiary: #64748b;--color-text-inverse: #0f172a;--color-neon-cyan: #22d3ee;--color-neon-blue: #60a5fa;--color-neon-magenta: #e879f9;--color-neon-violet: #a78bfa;--color-accent: #22d3ee;--color-accent-light: #67e8f9;--color-accent-subtle: rgba(34, 211, 238, .1);--color-accent-text: #22d3ee;--gradient-primary: linear-gradient(135deg, #22d3ee, #60a5fa);--gradient-accent: linear-gradient(135deg, #60a5fa, #e879f9);--gradient-hero: radial-gradient(ellipse at 20% 50%, rgba(34, 211, 238, .08) 0%, transparent 50%), radial-gradient(ellipse at 80% 20%, rgba(96, 165, 250, .08) 0%, transparent 50%), radial-gradient(ellipse at 60% 80%, rgba(232, 121, 249, .05) 0%, transparent 50%);--glass-bg: rgba(30, 41, 59, .6);--glass-border: rgba(148, 163, 184, .1);--glass-blur: blur(12px);--glow-cyan: 0 0 20px rgba(34, 211, 238, .3), 0 0 40px rgba(34, 211, 238, .1);--glow-blue: 0 0 20px rgba(96, 165, 250, .3), 0 0 40px rgba(96, 165, 250, .1);--glow-magenta: 0 0 20px rgba(232, 121, 249, .3), 0 0 40px rgba(232, 121, 249, .1);--glow-subtle: 0 0 15px rgba(34, 211, 238, .15);--shadow-sm: 0 1px 3px rgba(0, 0, 0, .3);--shadow-md: 0 4px 12px rgba(0, 0, 0, .4);--shadow-lg: 0 12px 32px rgba(0, 0, 0, .5);--shadow-neon: 0 4px 20px rgba(34, 211, 238, .15);--color-overlay: rgba(0, 0, 0, .6)}[data-theme=light]{--header-bg: rgba(255, 255, 255, .95);--color-bg: #f8fafc;--color-bg-alt: #f1f5f9;--color-surface: #ffffff;--color-surface-raised: #f8fafc;--color-border: rgba(15, 23, 42, .1);--color-border-light: rgba(15, 23, 42, .05);--color-border-glow: rgba(8, 145, 178, .3);--color-text-primary: #0f172a;--color-text-secondary: #475569;--color-text-tertiary: #94a3b8;--color-text-inverse: #f8fafc;--color-neon-cyan: #0891b2;--color-neon-blue: #2563eb;--color-neon-magenta: #a21caf;--color-neon-violet: #7c3aed;--color-accent: #0891b2;--color-accent-light: #06b6d4;--color-accent-subtle: rgba(8, 145, 178, .08);--color-accent-text: #0891b2;--gradient-primary: linear-gradient(135deg, #0891b2, #2563eb);--gradient-accent: linear-gradient(135deg, #2563eb, #a21caf);--gradient-hero: radial-gradient(ellipse at 20% 50%, rgba(8, 145, 178, .06) 0%, transparent 50%), radial-gradient(ellipse at 80% 20%, rgba(37, 99, 235, .06) 0%, transparent 50%), radial-gradient(ellipse at 60% 80%, rgba(162, 28, 175, .04) 0%, transparent 50%);--glass-bg: rgba(255, 255, 255, .9);--glass-border: rgba(15, 23, 42, .12);--glow-cyan: 0 0 16px rgba(8, 145, 178, .2), 0 0 32px rgba(8, 145, 178, .08);--glow-blue: 0 0 16px rgba(37, 99, 235, .2), 0 0 32px rgba(37, 99, 235, .08);--glow-magenta: 0 0 16px rgba(162, 28, 175, .2), 0 0 32px rgba(162, 28, 175, .08);--glow-subtle: 0 0 12px rgba(8, 145, 178, .12);--shadow-sm: 0 1px 3px rgba(0, 0, 0, .08);--shadow-md: 0 4px 12px rgba(0, 0, 0, .1);--shadow-lg: 0 12px 32px rgba(0, 0, 0, .12);--shadow-neon: 0 4px 20px rgba(8, 145, 178, .1);--color-overlay: rgba(15, 23, 42, .4)}@font-face{font-family:Pretendard Variable;font-weight:45 920;font-style:normal;font-display:swap;src:url(/fonts/PretendardVariable.woff2) format("woff2-variations")}:root{--font-sans: "Pretendard Variable", -apple-system, BlinkMacSystemFont, system-ui, sans-serif;--font-serif: "Noto Serif KR", "Georgia", serif;--font-mono: "SF Mono", "Fira Code", "Fira Mono", "Roboto Mono", monospace}:root{--text-xs: .75rem;--text-sm: .875rem;--text-base: 1rem;--text-lg: 1.125rem;--text-xl: 1.25rem;--text-2xl: 1.5rem;--text-3xl: 1.875rem;--text-4xl: 2.25rem;--text-5xl: 3rem;--text-6xl: 3.75rem}body{font-family:var(--font-sans);font-size:var(--text-base);line-height:1.6;color:var(--color-text-primary);word-break:keep-all;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}h1,h2,h3,h4,h5,h6{font-family:var(--font-sans);font-weight:700;line-height:1.2;color:var(--color-text-primary);letter-spacing:-.02em}.text-gradient{background:var(--gradient-primary);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.text-glow{text-shadow:0 0 20px rgba(34,211,238,.5),0 0 40px rgba(34,211,238,.2)}h1{font-size:var(--text-5xl);letter-spacing:-.03em}h2{font-size:var(--text-4xl);letter-spacing:-.025em}h3{font-size:var(--text-3xl);letter-spacing:-.02em}h4{font-size:var(--text-2xl)}h5{font-size:var(--text-xl)}h6{font-size:var(--text-lg)}p{color:var(--color-text-secondary);line-height:1.7}a{color:var(--color-accent-text);text-decoration:none;transition:color .2s ease}a:hover{color:var(--color-accent-light)}small,.text-sm{font-size:var(--text-sm)}.text-xs{font-size:var(--text-xs)}.text-lead{font-size:var(--text-lg);line-height:1.75;color:var(--color-text-secondary)}.prose{max-width:720px;line-height:1.75;font-size:var(--text-base)}.prose h2{font-size:var(--text-3xl);margin-top:2rem;margin-bottom:1rem}.prose p+h2,.prose ul+h2,.prose ol+h2,.prose table+h2,.prose blockquote+h2{margin-top:3.5rem}.prose h3{font-size:var(--text-2xl);margin-top:5rem;margin-bottom:.75rem}.prose h3:first-child,.prose>*:first-child{margin-top:0}.prose h4{font-size:var(--text-xl);margin-top:2rem;margin-bottom:.5rem}.prose p{margin-bottom:1.5rem;text-align:left}.prose ul{margin-bottom:1.5rem;padding-left:1.5rem;list-style-type:disc}.prose ol{margin-bottom:1.5rem;padding-left:1.5rem;list-style-type:decimal}.prose ul ul{list-style-type:circle;margin-bottom:0}.prose li{margin-bottom:.5rem;color:var(--color-text-secondary);display:list-item}.prose blockquote{position:relative;border-left:3px solid var(--color-neon-cyan);background:#22d3ee0d;padding:var(--space-4) var(--space-5) var(--space-4) var(--space-6);margin:var(--space-6) 0;border-radius:0 var(--radius-lg) var(--radius-lg) 0;font-style:normal;color:var(--color-text-secondary)}.prose blockquote:before{content:"“";position:absolute;top:-4px;left:var(--space-3);font-size:2.5rem;line-height:1;color:var(--color-neon-cyan);opacity:.4;font-family:Georgia,serif}.prose blockquote p{margin:0;line-height:1.7}.prose blockquote.callout-note,.prose .callout[data-callout=note]{border-left-color:var(--color-neon-blue);background:#60a5fa0f}.prose blockquote.callout-warning,.prose .callout[data-callout=warning]{border-left-color:#f59e0b;background:#f59e0b0f}.prose blockquote.callout-tip,.prose .callout[data-callout=tip]{border-left-color:#10b981;background:#10b9810f}.prose blockquote.callout-danger,.prose .callout[data-callout=danger]{border-left-color:#ef4444;background:#ef44440f}.prose code{font-family:var(--font-mono);font-size:.9em;background:var(--color-bg-alt);padding:.15em .4em;border-radius:4px}.prose pre{background:var(--color-bg-alt);border:1px solid var(--color-border);border-radius:8px;padding:1.5rem;overflow-x:auto;margin:2rem 0}.prose pre code{background:none;padding:0}.prose img{max-width:100%;border-radius:8px;margin:2rem 0}.prose figure{margin:2rem 0}.prose figure img{margin:0;width:100%}.prose figcaption{text-align:center;font-size:var(--text-sm);color:var(--color-text-tertiary);margin-top:.5rem}.prose img[src*="shields.io"],.prose img[src*="img.shields"]{display:inline;margin:0 4px 4px 0;border-radius:3px;vertical-align:middle}.prose strong{font-weight:600;color:var(--color-text-primary)}.prose hr{border:none;border-top:1px solid var(--color-border);margin:3rem 0}.prose table{width:100%;border-collapse:separate;border-spacing:0;font-size:var(--text-sm);margin:var(--space-6) 0;border:1px solid var(--color-border);border-radius:var(--radius-lg);overflow:hidden}.prose thead{background:#22d3ee0f}.prose th{padding:var(--space-3) var(--space-4);text-align:left;font-weight:700;font-size:var(--text-xs);letter-spacing:.05em;text-transform:uppercase;color:var(--color-neon-cyan);border-bottom:1px solid var(--color-border)}.prose td{padding:var(--space-3) var(--space-4);color:var(--color-text-secondary);border-bottom:1px solid var(--color-border);line-height:1.6}.prose tr:last-child td{border-bottom:none}.prose tbody tr:hover{background:#22d3ee08}@media(max-width:768px){h1{font-size:var(--text-4xl)}h2{font-size:var(--text-3xl)}h3,.prose h2{font-size:var(--text-2xl)}.prose h3{font-size:var(--text-xl)}}.prose mark{background:#22d3ee33;color:var(--color-text-primary);border-radius:3px;padding:.05em .25em}[data-theme=light] .prose mark{background:#0891b226}:root{--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.25rem;--space-6: 1.5rem;--space-8: 2rem;--space-10: 2.5rem;--space-12: 3rem;--space-16: 4rem;--space-20: 5rem;--space-24: 6rem;--space-32: 8rem}:root{--radius-sm: 4px;--radius-md: 8px;--radius-lg: 12px;--radius-full: 9999px}:root{--transition-fast: .15s ease;--transition-base: .2s ease;--transition-slow: .3s ease}.container{max-width:1200px;margin-left:auto;margin-right:auto;padding-left:var(--space-6);padding-right:var(--space-6)}.container-narrow{max-width:720px;margin-left:auto;margin-right:auto;padding-left:var(--space-6);padding-right:var(--space-6)}.section{padding-top:var(--space-20);padding-bottom:var(--space-20)}.section-sm{padding-top:var(--space-12);padding-bottom:var(--space-12)}.divider{border:none;border-top:1px solid var(--color-border);margin:var(--space-12) 0}.tag{display:inline-block;font-family:var(--font-sans);font-size:var(--text-xs);font-weight:500;color:var(--color-neon-cyan);background:#22d3ee1a;border:1px solid rgba(34,211,238,.2);padding:var(--space-1) var(--space-3);border-radius:var(--radius-full);white-space:nowrap;transition:all var(--transition-fast)}.tag:hover{background:#22d3ee33;border-color:#22d3ee66}.glass-card{background:var(--glass-bg);backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur);border:1px solid var(--glass-border);border-radius:var(--radius-lg);transition:all var(--transition-slow)}@supports not (backdrop-filter: blur(12px)){.glass-card{background:var(--color-surface)}}[data-theme=light] .glass-card{box-shadow:0 2px 16px #0f172a1a,0 1px 4px #0f172a0f}.neon-border{border:1px solid var(--color-border);transition:border-color var(--transition-base),box-shadow var(--transition-base)}.neon-border:hover{border-color:var(--color-border-glow);box-shadow:var(--glow-subtle)}.glow-hover{transition:box-shadow var(--transition-base),transform var(--transition-base)}.glow-hover:hover{box-shadow:var(--glow-cyan);transform:translateY(-2px)}.btn-primary{display:inline-flex;align-items:center;gap:var(--space-2);font-family:var(--font-sans);font-size:var(--text-sm);font-weight:600;color:var(--color-text-inverse);background:var(--gradient-primary);padding:var(--space-3) var(--space-6);border-radius:var(--radius-full);border:none;cursor:pointer;text-decoration:none;transition:all var(--transition-base)}.btn-primary:hover{box-shadow:var(--glow-cyan);transform:translateY(-1px);color:var(--color-text-inverse)}.btn-secondary{display:inline-flex;align-items:center;gap:var(--space-2);font-family:var(--font-sans);font-size:var(--text-sm);font-weight:600;color:var(--color-neon-cyan);background:var(--color-accent-subtle);padding:var(--space-3) var(--space-6);border-radius:var(--radius-full);border:1px solid rgba(34,211,238,.3);cursor:pointer;text-decoration:none;transition:all var(--transition-base)}.btn-secondary:hover{background:#22d3ee26;border-color:var(--color-neon-cyan);box-shadow:var(--glow-subtle);transform:translateY(-1px);color:var(--color-neon-cyan)}.btn-ghost{display:inline-flex;align-items:center;gap:var(--space-2);font-family:var(--font-sans);font-size:var(--text-sm);font-weight:500;color:var(--color-text-secondary);background:none;padding:var(--space-3) var(--space-6);border-radius:var(--radius-full);border:1px solid var(--color-border);cursor:pointer;text-decoration:none;transition:all var(--transition-base)}.btn-ghost:hover{color:var(--color-neon-cyan);border-color:var(--color-border-glow);transform:translateY(-1px)}.btn-sm{font-size:var(--text-xs)!important;padding:var(--space-1) var(--space-3)!important;gap:var(--space-1)!important}.btn-outline{display:inline-flex;align-items:center;gap:var(--space-2);font-family:var(--font-sans);font-size:var(--text-sm);font-weight:600;color:var(--color-neon-cyan);background:transparent;padding:var(--space-3) var(--space-6);border-radius:var(--radius-full);border:1px solid var(--color-neon-cyan);cursor:pointer;text-decoration:none;transition:all var(--transition-base)}.btn-outline:hover{background:#22d3ee1a;box-shadow:var(--glow-subtle);transform:translateY(-1px);color:var(--color-neon-cyan)}.neon-line{height:1px;background:var(--gradient-primary);border:none;opacity:.6}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.filter-bar{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-bottom:var(--space-8)}.filter-btn{font-size:var(--text-sm);font-weight:500;padding:var(--space-1) var(--space-4);border-radius:var(--radius-full);border:1px solid var(--color-border);background:none;color:var(--color-text-secondary);cursor:pointer;transition:all var(--transition-fast);line-height:1.6}.filter-btn:hover{border-color:var(--color-border-glow);color:var(--color-neon-cyan)}.filter-btn.active{background:var(--color-accent-subtle);border-color:var(--color-neon-cyan);color:var(--color-neon-cyan)}.page-header{padding-top:var(--space-16);padding-bottom:var(--space-12);border-bottom:1px solid var(--color-border);margin-bottom:var(--space-12)}.page-header h1{margin-bottom:var(--space-4)}.page-header p{font-size:var(--text-lg)}@media(max-width:768px){.container,.container-narrow{padding-left:var(--space-4);padding-right:var(--space-4)}.section{padding-top:var(--space-12);padding-bottom:var(--space-12)}.page-header{padding-top:var(--space-12);padding-bottom:var(--space-8);margin-bottom:var(--space-8)}}*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:5rem}body{background-color:var(--color-bg);min-height:100vh;overflow-x:hidden}img{max-width:100%;height:auto;display:block}ul,ol{list-style:none}button{border:none;background:none;cursor:pointer;font-family:inherit;font-size:inherit;color:inherit}input,textarea{font-family:inherit;font-size:inherit}::selection{background:#22d3ee40;color:var(--color-text-primary)}:focus-visible{outline:2px solid var(--color-neon-cyan);outline-offset:2px;border-radius:2px}[data-reveal]{opacity:0;transform:translateY(20px);transition:opacity .6s ease,transform .6s ease}[data-reveal=left]{transform:translate(-20px)}[data-reveal].revealed{opacity:1;transform:translate(0)}[data-reveal-delay="1"]{transition-delay:.1s}[data-reveal-delay="2"]{transition-delay:.2s}[data-reveal-delay="3"]{transition-delay:.3s}[data-reveal-delay="4"]{transition-delay:.4s}[data-reveal-delay="5"]{transition-delay:.5s}[data-reveal-delay="6"]{transition-delay:.6s}[data-en],html[data-lang=en] [data-ko]{display:none}html[data-lang=en] [data-en]{display:revert}body{background-image:var(--gradient-hero);background-attachment:fixed}main{padding-top:4rem}
