@import"https://fonts.googleapis.com/css2?family=Geist:wght@300;400;500;600;700&family=JetBrains+Mono:wght@400;500;600&display=swap";@font-face{font-family:Pretendard;font-weight:300;font-style:normal;font-display:swap;src:url(/assets/Pretendard-Light-BSr3DBFh.woff) format("woff")}@font-face{font-family:Pretendard;font-weight:400;font-style:normal;font-display:swap;src:url(/assets/Pretendard-Regular-D5CgADJ9.woff) format("woff")}@font-face{font-family:Pretendard;font-weight:500;font-style:normal;font-display:swap;src:url(/assets/Pretendard-Medium-Cs2k_Pp2.woff) format("woff")}@font-face{font-family:Pretendard;font-weight:600;font-style:normal;font-display:swap;src:url(/assets/Pretendard-SemiBold-SXfe8JY8.woff) format("woff")}@font-face{font-family:Pretendard;font-weight:700;font-style:normal;font-display:swap;src:url(/assets/Pretendard-Bold-DD7wHHNl.woff) format("woff")}@font-face{font-family:Pretendard;font-weight:800;font-style:normal;font-display:swap;src:url(/assets/Pretendard-ExtraBold-DkRXFB8B.woff) format("woff")}@font-face{font-family:Geist Mono Local;font-weight:100 900;font-style:normal;font-display:swap;src:url(/assets/GeistMono-VariableFont_wght-0unNFQBi.ttf) format("truetype-variations")}@font-face{font-family:Geist Mono Local;font-weight:100 900;font-style:italic;font-display:swap;src:url(/assets/GeistMono-Italic-VariableFont_wght-BHC1nfs1.ttf) format("truetype-variations")}@font-face{font-family:Montserrat Alt;font-weight:400;font-style:normal;font-display:swap;src:url(/assets/Montserrat-Regular-BdMzRefO.ttf) format("truetype")}@font-face{font-family:Montserrat Alt;font-weight:500;font-style:normal;font-display:swap;src:url(/assets/Montserrat-Medium-DZarjTSE.ttf) format("truetype")}@font-face{font-family:Montserrat Alt;font-weight:600;font-style:normal;font-display:swap;src:url(/assets/Montserrat-SemiBold-C0-6BeuA.ttf) format("truetype")}@font-face{font-family:Montserrat Alt;font-weight:700;font-style:normal;font-display:swap;src:url(/assets/Montserrat-Bold-D4JCkd3k.ttf) format("truetype")}:root{--ink: #0A0E1C;--graphite: #141931;--steel: #2A3046;--slate: #4E5468;--silver: #646C80;--silver-ghost: #9CA3B4;--mist: #DDE3EE;--fog: #F1F4F9;--paper: #FAFBFC;--white: #FFFFFF;--accent: #2E80FF;--accent-d: #1B68DC;--accent-600: #1F6FEB;--accent-l: #E8F1FF;--glow: #6FB6FF;--lumen: #00C2D6;--spark: #00D9A6;--spark-d: #007A5C;--spark-l: #E0F8F0;--signal: #FF8A3D;--signal-d: #B0531B;--signal-l: #FFEDD9;--critical: #C0432D;--critical-d:#8B2D1B;--critical-l:#FAE3DD;--hair: rgba(10, 14, 28, .08);--hair-strong: rgba(10, 14, 28, .16);--hair-light: rgba(255, 255, 255, .1);--hair-light-strong: rgba(255, 255, 255, .16);--sans: "Geist", "Pretendard", "Noto Sans KR", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--sans-kr: "Pretendard", "Geist", "Noto Sans KR", sans-serif;--mono: "JetBrains Mono", "Geist Mono Local", ui-monospace, monospace;--display-alt: "Montserrat Alt", "Geist", sans-serif;--s-1: 4px;--s-2: 8px;--s-3: 12px;--s-4: 16px;--s-5: 24px;--s-6: 32px;--s-7: 48px;--s-8: 64px;--s-9: 96px;--s-10: 128px;--r-0: 0px;--r-sm: 4px;--r-md: 6px;--r-lg: 10px;--r-pill: 999px;--bw-hair: 1px;--bw-emph: 1.5px;--bw-rule: 2px;--shadow-card: 0 1px 2px rgba(10, 14, 28, .04);--shadow-pop: 0 32px 80px -40px rgba(10, 14, 28, .2);--shadow-deep: 0 40px 80px -40px rgba(10, 14, 28, .28);--ease: cubic-bezier(.2, .6, .2, 1);--dur-fast: .15s;--dur-mid: .2s;--dur-slow: .32s;--page-max: 1280px;--page-pad: 64px;--grid-cell: 64px;--auth-card-max: 400px;--bg: var(--white);--fg: var(--ink);--fg-2: var(--steel);--fg-3: var(--slate);--fg-mute: var(--silver);--muted: var(--slate);--surface: var(--white);--surface-2: var(--paper);--surface-3: var(--fog);--divider: var(--hair);--divider-s: var(--hair-strong);--overlay: rgba(10,14,28,.4)}[data-theme=dark]{--bg: #07091A;--fg: #F4F6FB;--fg-2: #C2C8D5;--fg-3: #8A92A6;--fg-mute: #828AA0;--surface: #11142A;--surface-2: #0A0D1E;--surface-3: #1B2042;--divider: rgba(255,255,255,.08);--divider-s: rgba(255,255,255,.16);--overlay: rgba(0,0,0,.6);--ink: #F4F6FB;--graphite: #E4E8F0;--steel: #C2C8D5;--slate: #8A92A6;--silver: #5C6478;--mist: #2A3046;--fog: #1B2042;--paper: #0A0D1E;--white: #11142A;--hair: rgba(255, 255, 255, .09);--hair-strong: rgba(255, 255, 255, .18);--accent-l: rgba(46, 128, 255, .18)}[data-theme=dark] body{background:var(--bg)}*,*:before,*:after{box-sizing:border-box}html,body{margin:0;padding:0}html,body{background:var(--bg);color:var(--fg);font-family:var(--sans);font-size:15px;font-weight:400;line-height:1.6;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;font-feature-settings:"ss01","tnum","kern";word-break:keep-all;overflow-wrap:anywhere;line-break:strict;font-optical-sizing:auto}::selection{background:var(--ink);color:var(--white)}html[lang=en] body{word-break:normal;line-break:auto}html[lang=ko] body,[data-lang=ko]{line-height:1.7;letter-spacing:-.005em}a{color:inherit}[data-theme=dark] body{color:var(--fg);background:var(--bg)}[data-theme=dark] ::selection{background:var(--accent);color:var(--white)}h1,.t-h1{font-family:var(--sans);font-size:clamp(44px,7vw,80px);font-weight:300;letter-spacing:-.04em;line-height:1;color:var(--ink);margin:0}[data-lang=ko] h1,.t-h1-ko{font-size:clamp(36px,5.5vw,60px);font-weight:400;letter-spacing:-.03em;line-height:1.15}h2,.t-h2{font-family:var(--sans);font-size:clamp(30px,4.5vw,44px);font-weight:500;letter-spacing:-.025em;line-height:1.15;color:var(--ink);margin:0}[data-lang=ko] h2,.t-h2-ko{font-size:clamp(27px,4vw,38px);line-height:1.22}h3,.t-h3{font-family:var(--sans);font-size:clamp(21px,3.2vw,26px);font-weight:500;letter-spacing:-.018em;line-height:1.25;color:var(--ink);margin:0}[data-lang=ko] h3,.t-h3-ko{font-size:clamp(20px,3vw,24px);line-height:1.32}h4,.t-h4{font-family:var(--sans);font-size:17px;font-weight:500;letter-spacing:-.01em;line-height:1.4;color:var(--ink);margin:0}[data-lang=ko] h4,.t-h4-ko{line-height:1.45}h5,.t-h5{font-family:var(--sans);font-size:13px;font-weight:500;line-height:1.4;letter-spacing:-.005em;color:var(--ink);margin:0}.t-display{font-family:var(--sans);font-size:clamp(60px,11vw,128px);font-weight:300;letter-spacing:-.04em;line-height:.95;color:var(--ink)}[data-lang=ko] .t-display,.t-display-ko{font-size:clamp(46px,8.5vw,92px);font-weight:400;letter-spacing:-.035em;line-height:1.05}p,.t-body{font-family:var(--sans);font-size:15px;font-weight:400;line-height:1.6;color:var(--steel);margin:0}.t-lead{font-family:var(--sans);font-size:19px;font-weight:400;line-height:1.55;color:var(--steel);max-width:640px}[data-lang=ko] .t-lead{font-size:17px;line-height:1.7}.t-meta{font-family:var(--sans);font-size:13px;line-height:1.55;color:var(--slate)}.t-micro{font-family:var(--mono);font-size:11px;font-weight:500;letter-spacing:.1em;text-transform:uppercase;color:var(--slate);line-height:1.4}code,.t-code{font-family:var(--mono);font-size:12.5px;letter-spacing:.02em;color:var(--ink);background:var(--fog);padding:1px 6px}pre,.t-pre{font-family:var(--mono);font-size:13px;line-height:1.7;color:var(--code-fg);background:var(--graphite);padding:24px 28px;border-left:var(--bw-rule) solid var(--accent);overflow-x:auto;margin:0}.t-num{font-variant-numeric:tabular-nums;font-feature-settings:"tnum"}em{font-style:normal;color:var(--slate);font-weight:300}[data-lang=ko] em{font-weight:400}strong,b{font-weight:500;color:var(--ink)}.bg-grid{background-image:linear-gradient(to right,var(--hair) 1px,transparent 1px),linear-gradient(to bottom,var(--hair) 1px,transparent 1px);background-size:var(--grid-cell) var(--grid-cell)}.bg-grid--fade{-webkit-mask-image:radial-gradient(ellipse 70% 60% at 50% 30%,black 30%,transparent 90%);mask-image:radial-gradient(ellipse 70% 60% at 50% 30%,black 30%,transparent 90%)}.rule{height:1px;background:var(--hair);border:0}.rule--strong{height:1px;background:var(--hair-strong);border:0}.section-mark{display:flex;align-items:center;gap:12px;font-family:var(--mono);font-size:11px;font-weight:500;color:var(--slate);text-transform:uppercase;letter-spacing:.1em;margin-bottom:28px}.section-mark .dot{width:6px;height:6px;background:var(--ink);flex-shrink:0}.section-mark .line{flex:1;height:1px;background:var(--hair)}.anchored{position:relative;border:1px solid var(--hair-strong);background:var(--paper)}.anchored:before,.anchored:after,.anchored>.ac1,.anchored>.ac2{content:"";position:absolute;width:9px;height:9px;border:1.5px solid var(--ink);background:var(--white);z-index:2}.anchored:before{top:-5px;left:-5px}.anchored:after{top:-5px;right:-5px}.anchored>.ac1{bottom:-5px;left:-5px}.anchored>.ac2{bottom:-5px;right:-5px}@keyframes cad-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}@keyframes cad-spin{to{transform:rotate(360deg)}}:where(a,button,input,select,textarea,summary,[tabindex]):focus-visible{outline:var(--bw-emph) solid var(--accent);outline-offset:2px}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}@media (pointer: coarse){button{min-height:40px}}@media (max-width: 880px){.md-cols-1{grid-template-columns:1fr!important}.md-cols-2{grid-template-columns:repeat(2,1fr)!important}.md-cols-3{grid-template-columns:repeat(3,1fr)!important}}@media (max-width: 560px){.sm-cols-1{grid-template-columns:1fr!important}.sm-cols-2{grid-template-columns:repeat(2,1fr)!important}}:root{--type-code: #2E80FF;--type-code-fg: var(--ink);--type-service: #0E8FA6;--type-service-fg: var(--ink);--type-frontend: #5D5FE0;--type-frontend-fg: #FFFFFF;--type-repo: #00946F;--type-repo-fg: var(--ink);--type-control: #B0531B;--type-control-fg: #FFFFFF;--status-todo: #5C6478;--status-todo-fg: #FFFFFF;--status-progress: #B0531B;--status-progress-fg: #FFFFFF;--status-review: #5D5FE0;--status-review-fg: #FFFFFF;--status-done: #00946F;--status-done-fg: var(--ink);--status-blocked: #8B2D1B;--status-blocked-fg: #FFFFFF;--status-misc: #9CA3B4;--status-misc-fg: var(--ink);--status-new: var(--status-todo);--status-new-fg: var(--status-todo-fg);--status-indeterminate: var(--status-progress);--status-indeterminate-fg: var(--status-progress-fg);--status-review-cat: var(--status-review);--status-review-cat-fg: var(--status-review-fg);--status-done-cat: var(--status-done);--status-done-cat-fg: var(--status-done-fg);--role-impl: #2E80FF;--role-impl-fg: var(--ink);--role-verify: #5D5FE0;--role-verify-fg: #FFFFFF;--role-exec: #B0531B;--role-exec-fg: #FFFFFF;--role-research: #0E8FA6;--role-research-fg: var(--ink);--role-other: #5C6478;--role-other-fg: #FFFFFF;--module-tkernel: #00946F;--module-tkernel-fg: var(--ink);--module-td: #2E80FF;--module-td-fg: var(--ink);--module-tv: #B0531B;--module-tv-fg: #FFFFFF;--module-ta: #5D5FE0;--module-ta-fg: #FFFFFF;--module-bimrv: #0E8FA6;--module-bimrv-fg: var(--ink);--module-tifc: #7A7A1E;--module-tifc-fg: #FFFFFF;--module-step: #6B4A38;--module-step-fg: #FFFFFF;--module-tp: #C0432D;--module-tp-fg: #FFFFFF;--module-mech: #2A3046;--module-mech-fg: #FFFFFF;--module-tprc: #3F3AA6;--module-tprc-fg: #FFFFFF;--module-dweb: #1B68DC;--module-dweb-fg: #FFFFFF;--module-vjs: #00B38A;--module-vjs-fg: var(--ink);--module-stepweb: #8B5A2B;--module-stepweb-fg: #FFFFFF;--module-bimrvweb: #147A8C;--module-bimrvweb-fg: #FFFFFF;--module-web: #5C6478;--module-web-fg: #FFFFFF;--module-default: #9CA3B4;--module-default-fg: var(--ink);--r-full: 9999px;--surface-glass: rgba(250, 251, 252, .72);--scrim-on-dark: rgba(10, 14, 28, .56);--scrim-light: rgba(255, 255, 255, .64);--overlay-08: rgba(10, 14, 28, .08);--overlay-12: rgba(10, 14, 28, .12);--figure-ink: #0A0E1C;--figure-paper: #FAFBFC;--figure-accent: #2E80FF;--figure-hair: rgba(10, 14, 28, .12);--fs-title: 1.5rem;--lh-title: 1.25;--fs-body: 1rem;--lh-body: 1.6;--fs-caption: .78rem;--lh-caption: 1.45;--code-fg: #C2C8D5;--measure: 68ch}[data-theme=dark]{--figure-ink: #F4F6FB;--figure-paper: #0A0D1E;--figure-accent: #6FB6FF;--figure-hair: rgba(255, 255, 255, .14);--surface-glass: rgba(17, 20, 42, .72);--scrim-on-dark: rgba(0, 0, 0, .64);--scrim-light: rgba(17, 20, 42, .64);--overlay-08: rgba(255, 255, 255, .08);--overlay-12: rgba(255, 255, 255, .12)}html:root{--mono: "JetBrains Mono", "Geist Mono Local", "Pretendard", "Noto Sans KR", ui-monospace, monospace}
