@import"https://fonts.googleapis.com/css2?family=Geist:wght@300;400;500;600;700&family=JetBrains+Mono:wght@400;500;600&display=swap";*{box-sizing:border-box;margin:0;padding:0}html,body{background:var(--bg);color:var(--fg);scroll-behavior:smooth}a{color:inherit;text-decoration:none}[data-lang=ko] .lang-en,[data-lang=en] .lang-ko{display:none}[data-theme=dark] body{background:var(--bg);color:var(--fg)}.page{max-width:1280px;margin:0 auto;padding:0 64px}@media (max-width: 880px){.page{padding:0 24px}}.btn{font-family:var(--sans);font-size:14px;font-weight:500;padding:11px 18px;min-height:40px;border:1px solid var(--ink);background:var(--ink);color:var(--white);cursor:pointer;letter-spacing:-.005em;display:inline-flex;align-items:center;gap:8px;transition:all .15s var(--ease);border-radius:var(--r-sm)}.btn:hover{background:var(--graphite)}[data-theme=dark] .btn{background:var(--accent);border-color:var(--accent)}[data-theme=dark] .btn:hover{background:var(--accent-d);border-color:var(--accent-d)}.btn.accent{background:var(--accent);border-color:var(--accent)}.btn.accent:hover{background:var(--accent-d);border-color:var(--accent-d)}.btn.secondary{background:var(--surface);color:var(--fg);border-color:var(--divider-s)}.btn.secondary:hover{background:var(--surface-3)}.btn.lg{padding:13px 22px;font-size:15px;min-height:46px}.btn.ghost-d{background:transparent;color:var(--white);border-color:#ffffff52}.btn.ghost-d:hover{background:#ffffff0f;border-color:var(--white)}.btn .arr{font-family:var(--mono);font-size:12px}.section-mark{display:flex;align-items:center;gap:12px;font-family:var(--mono);font-size:11px;font-weight:500;color:var(--fg-3);text-transform:uppercase;letter-spacing:.1em;margin-bottom:28px}.section-mark .dot{width:6px;height:6px;background:var(--accent);flex-shrink:0}.section-mark .line{flex:1;height:1px;background:var(--divider)}.section.dark .section-mark{color:var(--silver)}.section.dark .section-mark .line{background:#ffffff1f}.section{padding:104px 0;border-top:1px solid var(--divider);position:relative}.section.paper{background:var(--surface-2)}.section.dark{background:var(--ink);color:var(--white);border-top:0}.section.dark h2{color:var(--white)}.section-head{display:grid;grid-template-columns:1fr 1.25fr;gap:64px;align-items:end;margin-bottom:56px}@media (max-width: 880px){.section{padding:64px 0}.section-head{grid-template-columns:1fr;gap:24px;margin-bottom:40px}}.section-head h2{font-size:46px;font-weight:500;letter-spacing:-.025em;line-height:1.12;color:var(--fg)}[data-lang=ko] .section-head h2{font-size:38px;line-height:1.22}@media (max-width: 880px){.section-head h2{font-size:32px}}.section-head .lead{font-size:17px;line-height:1.65;color:var(--fg-2);max-width:540px}[data-lang=ko] .section-head .lead{font-size:15px;line-height:1.75}h2 em,h1 em{font-style:normal;color:var(--accent);font-weight:inherit}.hero{position:relative;overflow:hidden;padding:96px 0 112px;border-bottom:1px solid var(--divider)}.hero:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background-image:linear-gradient(to right,var(--divider) 1px,transparent 1px),linear-gradient(to bottom,var(--divider) 1px,transparent 1px);background-size:64px 64px;mask-image:radial-gradient(ellipse 70% 80% at 78% 50%,black 18%,transparent 72%);-webkit-mask-image:radial-gradient(ellipse 70% 80% at 78% 50%,black 18%,transparent 72%);pointer-events:none}.hero-inner{position:relative;z-index:1;display:grid;grid-template-columns:1.05fr 1fr;gap:64px;align-items:center}@media (max-width: 880px){.hero-inner{grid-template-columns:1fr;gap:40px}.hero{padding:56px 0 64px}}.hero-tag{display:inline-flex;align-items:center;gap:8px;padding:6px 11px;background:var(--accent-l);border:1px solid rgba(46,128,255,.24);font-family:var(--mono);font-size:11px;font-weight:600;color:var(--accent);letter-spacing:.12em;text-transform:uppercase;margin-bottom:28px;border-radius:var(--r-sm)}[data-theme=dark] .hero-tag{background:#2e80ff1f}.hero-tag:before{content:"";width:6px;height:6px;background:var(--accent)}.hero h1{font-size:78px;font-weight:300;letter-spacing:-.04em;line-height:1;color:var(--fg)}[data-lang=ko] .hero h1{font-size:60px;font-weight:400;letter-spacing:-.03em;line-height:1.12}@media (max-width: 880px){.hero h1{font-size:48px}[data-lang=ko] .hero h1{font-size:40px}}.hero h1 em{color:var(--slate)}.hero .sub{margin-top:26px;font-size:18px;line-height:1.6;color:var(--fg-2);max-width:480px}[data-lang=ko] .hero .sub{font-size:16px;line-height:1.7}.hero .cta{display:flex;gap:10px;margin-top:34px;flex-wrap:wrap}.hero-meta{margin-top:52px;padding-top:22px;border-top:1px solid var(--divider);display:flex;align-items:center;gap:24px;font-family:var(--mono);font-size:11px;color:var(--fg-3);letter-spacing:.08em;text-transform:uppercase;flex-wrap:wrap}.hero-meta b{color:var(--fg);font-weight:500}.hero-canvas{position:relative;aspect-ratio:1.02 / 1;background:var(--surface-2);border:1px solid var(--divider-s)}[data-theme=dark] .hero-canvas{background:var(--surface)}.hero-canvas .anchor{position:absolute;width:11px;height:11px;background:var(--surface);border:1.5px solid var(--ink)}[data-theme=dark] .hero-canvas .anchor{border-color:var(--paper);background:var(--surface)}.hero-canvas .anchor.tl{top:-6px;left:-6px}.hero-canvas .anchor.tr{top:-6px;right:-6px}.hero-canvas .anchor.bl{bottom:-6px;left:-6px}.hero-canvas .anchor.br{bottom:-6px;right:-6px}.hero-canvas .stamp{position:absolute;top:22px;left:22px;font-family:var(--mono);font-size:10px;letter-spacing:.12em;color:var(--fg-3);text-transform:uppercase;font-weight:500;display:flex;align-items:center;gap:6px;background:var(--surface);padding:4px 8px;border:1px solid var(--divider);border-radius:var(--r-sm)}.hero-canvas .stamp:before{content:"";width:4px;height:4px;background:var(--accent)}.proof{padding:36px 0;border-top:1px solid var(--divider);background:var(--surface)}.proof-inner{display:flex;align-items:center;gap:40px;justify-content:space-between;flex-wrap:wrap}.proof .lbl{font-family:var(--mono);font-size:10.5px;letter-spacing:.12em;color:var(--fg-3);text-transform:uppercase;font-weight:500;max-width:180px;line-height:1.5}.proof .logos{display:flex;gap:32px;align-items:center;flex-wrap:wrap}.proof .logos span{font-family:var(--sans);font-size:17px;font-weight:600;color:var(--fg-3);letter-spacing:-.01em;opacity:.7}.grid{display:grid;gap:0;border:1px solid var(--divider-s)}.grid.c2{grid-template-columns:1fr 1fr}.grid.c3{grid-template-columns:repeat(3,1fr)}.grid.c4{grid-template-columns:repeat(4,1fr)}@media (max-width: 880px){.grid.c3,.grid.c4{grid-template-columns:1fr 1fr}}@media (max-width: 560px){.grid.c2,.grid.c3,.grid.c4{grid-template-columns:1fr}}.cell{padding:32px 28px;background:var(--surface);border-right:1px solid var(--divider);border-bottom:1px solid var(--divider);display:flex;flex-direction:column;gap:14px;min-height:200px}.cell .num{font-family:var(--mono);font-size:11px;font-weight:600;letter-spacing:.14em;color:var(--accent);text-transform:uppercase}.cell h4{font-size:18px;font-weight:500;letter-spacing:-.012em;color:var(--fg);line-height:1.35}[data-lang=ko] .cell h4{font-size:16px;line-height:1.5}.cell p{font-size:13.5px;line-height:1.65;color:var(--fg-2)}[data-lang=ko] .cell p{line-height:1.75}.cell .ico{width:32px;height:32px}.steps{display:grid;grid-template-columns:repeat(4,1fr);gap:0;border:1px solid var(--divider-s)}@media (max-width: 880px){.steps{grid-template-columns:1fr 1fr}}@media (max-width: 560px){.steps{grid-template-columns:1fr}}.step-cell{padding:32px 26px;background:var(--surface);border-right:1px solid var(--divider);display:flex;flex-direction:column;gap:16px;position:relative;min-height:240px}.step-cell:last-child{border-right:0}.step-cell .n{width:34px;height:34px;border:1.5px solid var(--ink);background:var(--surface);display:inline-flex;align-items:center;justify-content:center;font-family:var(--mono);font-size:13px;font-weight:600;color:var(--ink);border-radius:var(--r-sm)}[data-theme=dark] .step-cell .n{border-color:var(--fg);color:var(--fg)}.step-cell .mid{font-family:var(--mono);font-size:10px;letter-spacing:.12em;color:var(--accent);text-transform:uppercase;font-weight:600}.step-cell h4{font-size:18px;font-weight:500;letter-spacing:-.012em;color:var(--fg)}[data-lang=ko] .step-cell h4{font-size:16px}.step-cell p{font-size:13px;line-height:1.6;color:var(--fg-2)}[data-lang=ko] .step-cell p{line-height:1.7}.step-cell .arrow{position:absolute;top:44px;right:-9px;z-index:2;width:18px;height:18px;background:var(--surface);display:flex;align-items:center;justify-content:center;color:var(--fg-3);font-family:var(--mono);font-size:12px}.step-cell:last-child .arrow{display:none}@media (max-width: 880px){.step-cell .arrow{display:none}}.mod{padding:22px 22px 20px;background:var(--surface);border-right:1px solid var(--divider);border-bottom:1px solid var(--divider);display:flex;flex-direction:column;gap:12px;min-height:0;transition:background .15s var(--ease);position:relative}.mod:hover{background:var(--surface-3)}.grid.c3 .mod:nth-child(3n){border-right:0}.grid.c3 .mod:nth-child(n+4){border-bottom:0}.mod.featured{border-left:2px solid var(--accent);padding-left:20px;background:#2e80ff08}.mod.future{background:var(--surface-2)}.mod .mhd{display:flex;align-items:center;gap:11px}.mod .ibox{width:34px;height:34px;flex-shrink:0;border:1px solid var(--divider-s);border-radius:var(--r-sm);display:inline-flex;align-items:center;justify-content:center;background:var(--surface-2);transition:border-color .15s var(--ease)}.mod:hover .ibox{border-color:var(--fg-3)}.mod.featured .ibox{border-color:#2e80ff66;background:#2e80ff0f}.mod .ibox .ico{width:18px;height:18px}.mod .mid{font-family:var(--mono);font-size:10px;font-weight:600;letter-spacing:.12em;color:var(--accent);text-transform:uppercase;display:flex;align-items:center;gap:7px}.mod.future .mid{color:var(--fg-3)}.mod .mid .status{color:var(--fg-3);font-weight:500}.mod .mid .status:before{content:"";display:inline-block;width:5px;height:5px;border-radius:50%;background:var(--spark);margin-right:5px;vertical-align:middle}.mod .mid .status.beta:before{background:var(--signal)}.mod .mid .status.wedge:before{background:var(--accent)}.mod .mid .status.future:before{background:var(--mist)}.mod h5{font-size:16px;font-weight:500;letter-spacing:-.01em;color:var(--fg)}.mod.future h5{color:var(--fg-3)}.mod p{font-size:12.5px;line-height:1.55;color:var(--fg-2)}[data-lang=ko] .mod p{font-size:12px;line-height:1.65}.ai-grid{display:grid;grid-template-columns:1fr 1.1fr;gap:64px;align-items:start}@media (max-width: 880px){.ai-grid{grid-template-columns:1fr;gap:40px}.ai-card,.ai-results,.ai-input,.ai-suggest{min-width:0}.ai-input input{width:100%}.ai-r{grid-template-columns:minmax(0,1fr) auto}.ai-r .desc,.ai-r .id{min-width:0;overflow-wrap:anywhere}}.ai-card{background:#ffffff08;border:1px solid var(--hair-light);padding:28px;display:flex;flex-direction:column;gap:14px}.ai-input{display:flex;border:1px solid var(--accent);background:#ffffff0a}.ai-input .tag{display:flex;align-items:center;padding:0 12px;background:#ffffff0a;border-right:1px solid rgba(255,255,255,.12)}.ai-input .tag .pill{background:var(--accent);color:var(--white);padding:2px 6px;font-family:var(--mono);font-size:10px;font-weight:600;letter-spacing:.06em}.ai-input input{flex:1;border:0;outline:0;padding:14px 16px;background:transparent;color:var(--white);font-family:var(--sans);font-size:14px;min-width:0}.ai-input button{border:0;background:var(--accent);color:var(--white);font-family:var(--sans);font-size:13px;font-weight:500;padding:0 18px;cursor:pointer;letter-spacing:-.005em;white-space:nowrap}.ai-input button:hover{background:var(--accent-d)}.ai-results{display:flex;flex-direction:column;gap:2px}.ai-r{display:grid;grid-template-columns:1fr auto;padding:14px 18px;gap:20px;align-items:center;background:#ffffff0a;border-left:2px solid transparent}.ai-r.top{background:#2e80ff1a;border-left-color:var(--accent)}.ai-r .id{font-family:var(--mono);color:var(--silver);font-size:12.5px;margin-right:10px}.ai-r.top .id{color:var(--accent)}.ai-r .desc{font-size:14px;color:var(--white);font-weight:500}.ai-r .meta{font-family:var(--mono);font-size:12.5px;color:var(--silver)}.ai-r.top .meta{color:var(--accent)}.ai-suggest{display:flex;flex-wrap:wrap;gap:5px}.ai-suggest button{background:#ffffff0f;color:var(--silver);border:1px solid rgba(255,255,255,.16);font-family:var(--sans);font-size:11.5px;padding:4px 10px;cursor:pointer;letter-spacing:-.005em}.ai-suggest button:hover{background:#ffffff1a;color:var(--white)}.sol-tabs{display:flex;gap:4px;border-bottom:1px solid var(--divider);margin-bottom:32px;flex-wrap:wrap}.sol-tab{padding:12px 18px;background:transparent;border:0;border-bottom:2px solid transparent;margin-bottom:-1px;font-family:var(--sans);font-size:14.5px;font-weight:500;color:var(--fg-3);cursor:pointer;letter-spacing:-.005em;display:inline-flex;align-items:center;gap:8px}.sol-tab:hover{color:var(--fg)}.sol-tab.on{color:var(--fg);border-bottom-color:var(--ink)}[data-theme=dark] .sol-tab.on{border-bottom-color:var(--accent)}.sol-tab .mid{font-family:var(--mono);font-size:10px;color:var(--fg-3);letter-spacing:.08em}.sol-panel{display:none;grid-template-columns:1fr 1fr;gap:48px;align-items:center}.sol-panel.on{display:grid}@media (max-width: 880px){.sol-panel.on{grid-template-columns:1fr;gap:32px}}.sol-panel h3{font-size:32px;font-weight:500;letter-spacing:-.022em;line-height:1.15;color:var(--fg)}[data-lang=ko] .sol-panel h3{font-size:26px;line-height:1.25}.sol-panel .body{font-size:15px;line-height:1.7;color:var(--fg-2);margin-top:18px}[data-lang=ko] .sol-panel .body{font-size:14px;line-height:1.8}.sol-panel ul{list-style:none;margin-top:20px;display:flex;flex-direction:column;gap:10px}.sol-panel li{display:grid;grid-template-columns:20px 1fr;gap:12px;font-size:13.5px;line-height:1.55;color:var(--fg);align-items:baseline}.sol-panel li .ic{color:var(--spark-d);font-family:var(--mono);font-weight:600}.sol-fig{aspect-ratio:4/3;background:var(--surface);border:1px solid var(--divider-s);padding:18px;position:relative}.sol-fig .anchor{position:absolute;width:9px;height:9px;background:var(--surface);border:1.5px solid var(--ink)}.sol-fig .anchor.tl{top:-5px;left:-5px}.sol-fig .anchor.tr{top:-5px;right:-5px}.sol-fig .anchor.bl{bottom:-5px;left:-5px}.sol-fig .anchor.br{bottom:-5px;right:-5px}.sec-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:0;border:1px solid var(--divider-s)}@media (max-width: 880px){.sec-grid{grid-template-columns:1fr}}.sec-cell{padding:28px;background:var(--surface);border-right:1px solid var(--divider);border-bottom:1px solid var(--divider);display:flex;flex-direction:column;gap:12px}.sec-grid .sec-cell:nth-child(3n){border-right:0}.sec-grid .sec-cell:nth-child(n+4){border-bottom:0}@media (max-width: 880px){.sec-cell{border-right:0}}.sec-cell .ico{width:26px;height:26px;color:var(--fg)}.sec-cell h4{font-size:15.5px;font-weight:500;color:var(--fg);letter-spacing:-.008em}.sec-cell p{font-size:12.5px;line-height:1.6;color:var(--fg-2)}.sec-badges{margin-top:36px;display:flex;gap:8px;flex-wrap:wrap;justify-content:center}.sec-badges span{font-family:var(--mono);font-size:11px;padding:6px 12px;background:var(--surface);border:1px solid var(--divider-s);color:var(--fg-2);letter-spacing:.06em;text-transform:uppercase;font-weight:500;border-radius:var(--r-sm)}.quote-grid{display:grid;grid-template-columns:1.3fr 1fr;gap:64px;align-items:center}@media (max-width: 880px){.quote-grid{grid-template-columns:1fr;gap:40px}}.quote-q{font-size:40px;font-weight:300;letter-spacing:-.022em;line-height:1.25;color:var(--white)}[data-lang=ko] .quote-q{font-size:32px;font-weight:400;line-height:1.4}.quote-q:before{content:"“";display:block;font-size:96px;line-height:.4;color:var(--accent);margin-bottom:28px}[data-lang=ko] .quote-q:before{content:"“"}.quote-attr{margin-top:40px;display:flex;align-items:center;gap:18px}.quote-attr .av{width:56px;height:56px;background:var(--accent);border-radius:50%;display:inline-flex;align-items:center;justify-content:center;font-family:var(--mono);font-size:16px;font-weight:600;color:var(--white)}.quote-attr .name{font-size:17px;font-weight:500;color:var(--white)}.quote-attr .role{font-family:var(--mono);font-size:12px;color:var(--silver);letter-spacing:.08em;text-transform:uppercase;margin-top:4px}.quote-side{background:#ffffff0a;border:1px solid rgba(255,255,255,.12);padding:32px;display:flex;flex-direction:column;gap:8px}.quote-side .lbl{font-family:var(--mono);font-size:11px;letter-spacing:.14em;color:var(--accent);text-transform:uppercase;font-weight:600;margin-bottom:8px}.quote-side .kv{display:grid;grid-template-columns:1fr auto;gap:18px;padding:12px 0;border-top:1px solid rgba(255,255,255,.08);align-items:baseline}.quote-side .kv .k{font-family:var(--mono);font-size:12px;color:var(--silver);letter-spacing:.06em;text-transform:uppercase}.quote-side .kv .v{font-size:20px;font-weight:500;color:var(--white);letter-spacing:-.012em}.quote-side .kv .v .delta{font-family:var(--mono);font-size:13px;color:var(--spark);margin-left:6px}.quote-side .kv .v.accent{color:var(--accent)}.stats-band{display:grid;grid-template-columns:repeat(4,1fr);gap:0;border:1px solid var(--divider-s)}@media (max-width: 880px){.stats-band{grid-template-columns:1fr 1fr}}.stat-cell{padding:32px 28px;background:var(--surface);border-right:1px solid var(--divider);display:flex;flex-direction:column;gap:6px}.stats-band .stat-cell:last-child{border-right:0}@media (max-width: 880px){.stats-band .stat-cell:nth-child(2n){border-right:0}.stats-band .stat-cell:nth-child(-n+2){border-bottom:1px solid var(--divider)}}.stat-cell .v{font-size:48px;font-weight:300;letter-spacing:-.03em;color:var(--fg);font-variant-numeric:tabular-nums;line-height:1}.stat-cell .v em{color:var(--accent);font-style:normal}.stat-cell .v .u{font-size:22px;color:var(--fg-3);font-weight:400}.stat-cell .l{font-family:var(--mono);font-size:11px;color:var(--fg-3);letter-spacing:.1em;text-transform:uppercase;font-weight:500;margin-top:4px}.dev-grid{display:grid;grid-template-columns:1fr 1.1fr;gap:56px;align-items:center}@media (max-width: 880px){.dev-grid{grid-template-columns:1fr;gap:36px}}.code-card{background:var(--ink);border:1px solid var(--hair-light);border-radius:var(--r-md);overflow:hidden}.code-hd{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-bottom:1px solid rgba(255,255,255,.08)}.code-tabs{display:flex;gap:4px}.code-tabs button{background:transparent;border:0;color:var(--silver);font-family:var(--mono);font-size:11px;padding:4px 10px;cursor:pointer;letter-spacing:.04em;border-radius:var(--r-sm)}.code-tabs button.on{background:#ffffff14;color:var(--white)}.code-hd .file{font-family:var(--mono);font-size:10.5px;color:var(--silver);letter-spacing:.06em}.code-body{padding:20px 22px;font-family:var(--mono);font-size:13px;line-height:1.8;overflow-x:auto}.code-body .ln{display:block;white-space:pre;color:var(--silver)}.code-body .kw{color:var(--glow)}.code-body .st{color:var(--spark)}.code-body .cm{color:var(--slate)}.code-body .fn{color:var(--accent)}.code-body .nm{color:var(--white)}.price-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:0;border:1px solid var(--divider-s)}@media (max-width: 880px){.price-grid{grid-template-columns:1fr 1fr}}@media (max-width: 560px){.price-grid{grid-template-columns:1fr}}.price-cell{padding:28px 24px;background:var(--surface);border-right:1px solid var(--divider);display:flex;flex-direction:column;gap:12px}.price-grid .price-cell:last-child{border-right:0}.price-cell.featured{background:var(--ink);color:var(--white)}.price-cell .pn{font-family:var(--mono);font-size:11px;letter-spacing:.12em;color:var(--fg-3);text-transform:uppercase;font-weight:600}.price-cell.featured .pn{color:var(--accent)}.price-cell .amt{font-size:34px;font-weight:300;letter-spacing:-.025em;color:var(--fg);font-variant-numeric:tabular-nums}.price-cell.featured .amt{color:var(--white)}.price-cell .amt .cur{font-size:16px;color:var(--fg-3)}.price-cell .amt .per{font-family:var(--mono);font-size:10.5px;color:var(--fg-3);letter-spacing:.06em;text-transform:uppercase;display:block;margin-top:4px}.price-cell .desc{font-size:12.5px;line-height:1.6;color:var(--fg-2);flex:1}.price-cell.featured .desc{color:var(--silver)}.cta-final{padding:120px 0;border-top:1px solid var(--divider);position:relative;overflow:hidden}.cta-final:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background-image:linear-gradient(to right,var(--divider) 1px,transparent 1px),linear-gradient(to bottom,var(--divider) 1px,transparent 1px);background-size:64px 64px;mask-image:radial-gradient(ellipse 60% 80% at 50% 50%,black 20%,transparent 80%);-webkit-mask-image:radial-gradient(ellipse 60% 80% at 50% 50%,black 20%,transparent 80%);pointer-events:none}.cta-final .page{position:relative;z-index:1;text-align:center}.cta-final h2{font-size:72px;font-weight:300;letter-spacing:-.04em;line-height:1;color:var(--fg)}[data-lang=ko] .cta-final h2{font-size:56px;font-weight:400;letter-spacing:-.03em;line-height:1.1}@media (max-width: 880px){.cta-final h2{font-size:44px}}.cta-final .sub{margin:22px auto 0;max-width:560px;font-size:19px;line-height:1.55;color:var(--fg-2)}[data-lang=ko] .cta-final .sub{font-size:17px}.cta-final .cta{margin-top:36px;display:inline-flex;gap:10px}.cta-banner{margin:18px auto 0;padding:10px 16px;border-left:2px solid var(--spark-d);background:var(--spark-l);color:var(--spark-d);font-family:var(--mono);font-size:11.5px;letter-spacing:.06em;text-transform:uppercase;font-weight:600;width:fit-content;display:none}footer{padding:56px 0 48px;border-top:1px solid var(--divider);background:var(--surface-2)}.foot-grid{display:grid;grid-template-columns:1.6fr 1fr 1fr 1fr 1.2fr;gap:40px}@media (max-width: 880px){.foot-grid{grid-template-columns:1fr 1fr;gap:32px}}footer h6{font-family:var(--mono);font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--fg-3);margin-bottom:14px;font-weight:600}footer ul{list-style:none;display:flex;flex-direction:column;gap:9px}footer ul a{color:var(--fg-2);font-size:13px}footer ul a:hover{color:var(--fg)}footer .desc{font-size:12.5px;line-height:1.7;color:var(--fg-2);max-width:280px;margin-top:14px}.news{display:flex;border:1px solid var(--divider-s);border-radius:var(--r-sm);overflow:hidden;margin-top:12px}.news input{flex:1;border:0;outline:0;padding:9px 12px;background:var(--surface);color:var(--fg);font-family:var(--sans);font-size:12.5px;min-width:0}.news button{border:0;background:var(--ink);color:var(--white);font-family:var(--mono);font-size:11px;padding:0 14px;cursor:pointer;letter-spacing:.06em;text-transform:uppercase}[data-theme=dark] .news button{background:var(--accent)}.foot-bot{margin-top:44px;padding-top:22px;border-top:1px solid var(--divider);display:flex;justify-content:space-between;align-items:center;font-family:var(--mono);font-size:11px;color:var(--fg-3);letter-spacing:.06em;flex-wrap:wrap;gap:12px}.foot-bot .status{display:flex;align-items:center;gap:8px}.foot-bot .status:before{content:"";width:6px;height:6px;background:var(--spark);border-radius:50%}.foot-bot .socials{display:flex;gap:8px}.foot-bot .socials span{width:24px;height:24px;border:1px solid var(--divider-s);display:inline-flex;align-items:center;justify-content:center;color:var(--fg-3);border-radius:var(--r-sm);font-family:var(--mono);font-size:9px;font-weight:600;cursor:pointer}.foot-bot .socials span:hover{color:var(--fg);border-color:var(--fg-3)}.proof .logos.rolling{overflow:hidden;-webkit-mask-image:linear-gradient(90deg,transparent,black 8%,black 92%,transparent);mask-image:linear-gradient(90deg,transparent,black 8%,black 92%,transparent)}.proof .logos.rolling .track{display:inline-flex;gap:32px;white-space:nowrap;animation:proof-marquee 32s linear infinite}.proof .logos.rolling .track:hover{animation-play-state:paused}@keyframes proof-marquee{0%{transform:translate(0)}to{transform:translate(-50%)}}@media (prefers-reduced-motion: reduce){.proof .logos.rolling .track{animation:none}}.proof .logos .co{display:inline-flex;align-items:center;color:inherit}.proof .logos .co img{height:22px;width:auto;object-fit:contain;opacity:.7;filter:grayscale(1);transition:opacity .15s,filter .15s}.proof .logos .co:hover img{opacity:1;filter:none}.btn:focus-visible,a.btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.nf{min-height:100vh;display:flex;flex-direction:column;background:var(--bg);color:var(--fg);position:relative}.nf-top{display:flex;align-items:center;justify-content:space-between;padding:18px 40px;border-bottom:1px solid var(--divider)}.nf-brand{display:inline-flex;align-items:center;gap:9px;font-weight:500;font-size:14.5px;letter-spacing:-.01em;color:var(--fg)}.nf-sys{font-family:var(--mono);font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--fg-3)}.nf-sys b{color:var(--spark-d);font-weight:600}.nf-main{flex:1;display:flex;align-items:center;max-width:1100px;width:100%;margin:0 auto;padding:48px 40px}.nf-layout{display:grid;grid-template-columns:1.1fr .9fr;gap:48px;align-items:center;width:100%}@media (max-width: 820px){.nf-layout{grid-template-columns:1fr;gap:28px}.nf-code{display:none}}.nf-mark{font-family:var(--mono);font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--accent);font-weight:600;display:inline-flex;align-items:center;gap:8px}.nf-mark:before{content:"";width:6px;height:6px;background:var(--accent)}.nf-main h1{font-size:44px;font-weight:400;letter-spacing:-.03em;line-height:1.12;margin-top:20px;color:var(--fg)}.nf-main h1 em{font-style:normal;color:var(--accent)}.nf-lead{margin-top:16px;font-size:15px;line-height:1.65;color:var(--fg-2);max-width:460px}.nf-cta{margin-top:28px;display:inline-flex;gap:10px;flex-wrap:wrap}.nf-btn{display:inline-flex;align-items:center;gap:8px;padding:13px 22px;border-radius:var(--r-sm);font-family:var(--sans);font-size:14px;font-weight:500;text-decoration:none;cursor:pointer;border:1px solid var(--ink);background:var(--ink);color:var(--white);transition:background .15s var(--ease)}.nf-btn:hover{background:var(--graphite)}.nf-btn.ghost{background:var(--surface);color:var(--fg);border-color:var(--divider-s)}.nf-btn.ghost:hover{background:var(--surface-3)}.nf-btn .arr{font-family:var(--mono);font-size:12px}.nf-code{font-size:168px;font-weight:300;letter-spacing:-.04em;line-height:1;color:var(--fg);font-variant-numeric:tabular-nums}.nf-code em{font-style:normal;color:var(--accent)}.nf-detail{margin-top:28px;border:1px solid var(--divider-s);border-radius:var(--r-md);padding:16px 18px;background:var(--surface)}.nf-detail .lbl{font-family:var(--mono);font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--fg-3);font-weight:600}.nf-kv{display:flex;justify-content:space-between;gap:16px;padding:7px 0;border-top:1px solid var(--divider);margin-top:8px;font-family:var(--mono);font-size:11.5px}.nf-kv:first-of-type{border-top:0;margin-top:10px}.nf-kv .k{color:var(--fg-3);letter-spacing:.06em}.nf-kv .v{color:var(--fg)}.nf-kv .v.bad{color:var(--critical)}.nf-kv .v.accent{color:var(--accent)}.nf-foot{display:flex;justify-content:space-between;padding:16px 40px;border-top:1px solid var(--divider);font-family:var(--mono);font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--fg-3)}.nf-foot .ok{color:var(--spark-d);font-weight:600}.nf-foot a{color:var(--fg-3)}@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}
