:root,.light{--background:#fff;--surface:#fff;--surface-muted:#f9fafb;--foreground:#171717;--muted:#6b7280;--subtle:#9ca3af;--border:#e5e7eb;--border-strong:#d1d5db;--primary:#2563eb;--primary-hover:#1d4ed8;--primary-foreground:#fff;--danger:#dc2626;--success:#16a34a;--warning:#d97706;--accent:#2dd4bf;--point:#7c3aed;--dx-font-sans:"Pretendard", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif}.dark{--background:#0b0f17;--surface:#141a22;--surface-muted:#1b222c;--foreground:#e6e8eb;--muted:#9aa3af;--subtle:#6b7280;--border:#232b36;--border-strong:#313b48;--primary:#3b82f6;--primary-hover:#60a5fa;--primary-foreground:#0b0f17;--danger:#ef4444;--success:#22c55e;--warning:#f59e0b;--accent:#2dd4bf;--point:#8b5cf6}.scrollbar-thin{scrollbar-width:thin;scrollbar-color:var(--border-strong) transparent}.scrollbar-thin::-webkit-scrollbar{width:8px;height:8px}.scrollbar-thin::-webkit-scrollbar-track{background:0 0}.scrollbar-thin::-webkit-scrollbar-thumb{background-color:var(--border-strong);background-clip:padding-box;border:2px solid #0000;border-radius:9999px}.scrollbar-thin::-webkit-scrollbar-thumb:hover{background-color:var(--muted)}.brand-logo{letter-spacing:.03em;font-family:Pretendard,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-weight:850}
.dx-btn{color:var(--foreground);cursor:pointer;white-space:nowrap;background:0 0;border:1px solid #0000;border-radius:4px;justify-content:center;align-items:center;gap:6px;padding:4px 10px;font-size:14px;font-weight:500;transition:all .15s;display:inline-flex}.dx-btn:active:not(:disabled){transform:scale(.95)}.dx-btn:disabled{pointer-events:none;opacity:.5}.dx-btn--sm{gap:4px;padding:2px 8px;font-size:12px}.dx-btn--default{border-color:var(--border-strong);background:var(--surface)}.dx-btn--default:hover:not(:disabled){background:var(--surface-muted)}.dx-btn--primary{background:var(--primary);color:var(--primary-foreground)}.dx-btn--primary:hover:not(:disabled){background:var(--primary-hover)}.dx-btn--ghost{color:var(--foreground)}.dx-btn--ghost:hover:not(:disabled){background:var(--surface-muted)}.dx-btn--danger{background:var(--danger);color:#fff}.dx-btn--danger:hover:not(:disabled){opacity:.9}.dx-iconbtn{width:26px;height:26px;color:var(--subtle);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:6px;justify-content:center;align-items:center;padding:0;transition:all .15s;display:inline-flex}.dx-iconbtn:hover:not(:disabled){background:var(--surface-muted);color:var(--foreground)}.dx-iconbtn:active:not(:disabled){transform:scale(.95)}.dx-iconbtn:disabled{pointer-events:none;opacity:.4}.dx-iconbtn--danger:hover:not(:disabled){color:var(--danger)}.dx-input{width:100%;color:var(--foreground);background:var(--surface);border:1px solid var(--border-strong);box-sizing:border-box;border-radius:4px;outline:none;padding:4px 10px;font-size:14px;transition:background-color .15s,border-color .15s}.dx-input:hover:not(:disabled){background:var(--surface-muted)}.dx-input:focus:not(:disabled){border-color:var(--muted);background:var(--surface)}.dx-input:disabled{cursor:not-allowed;border-color:var(--border);background:var(--surface-muted);color:var(--subtle);opacity:.6}textarea.dx-input{resize:vertical;padding:8px 10px;line-height:1.6}select.dx-input{appearance:none;background-image:linear-gradient(45deg, transparent 50%, var(--subtle) 50%), linear-gradient(135deg, var(--subtle) 50%, transparent 50%);background-position:calc(100% - 15px),calc(100% - 10px);background-repeat:no-repeat;background-size:5px 5px,5px 5px;padding-right:28px}.dx-badge{white-space:nowrap;background:var(--surface-muted);max-width:100%;color:var(--muted);border-radius:9999px;align-items:center;gap:4px;padding:2px 8px;font-size:12px;font-weight:500;display:inline-flex}.dx-badge>span{text-overflow:ellipsis;min-width:0;overflow:hidden}.dx-badge--info{background:color-mix(in srgb, var(--primary) 10%, transparent);color:var(--primary)}.dx-badge--success{background:color-mix(in srgb, var(--success) 10%, transparent);color:var(--success)}.dx-badge--warning{background:color-mix(in srgb, var(--warning) 10%, transparent);color:var(--warning)}.dx-badge--danger{background:color-mix(in srgb, var(--danger) 10%, transparent);color:var(--danger)}.dx-card{border:1px solid var(--border);background:var(--surface);border-radius:12px;overflow:hidden}.dx-box{border:1px solid var(--border);background:var(--surface);border-radius:12px;padding:16px}.dx-stack>*+*{margin-top:12px}.dx-panel{border:1px solid var(--border);background:var(--surface-muted);border-radius:12px;padding:16px}.dx-empty{text-align:center;border:1px dashed var(--border);background:color-mix(in srgb, var(--surface) 50%, transparent);color:var(--subtle);border-radius:12px;flex-direction:column;align-items:center;gap:12px;padding:32px 24px;font-size:13px;display:flex}.dx-backdrop{z-index:50;background:#0003;place-items:center;display:grid;position:fixed;inset:0}.dx-dialog{border:1px solid var(--border);background:var(--surface);border-radius:12px;flex-direction:column;width:min(32rem,100vw - 2rem);max-height:calc(100vh - 4rem);display:flex;overflow:hidden;box-shadow:0 20px 25px -5px #0000001a,0 8px 10px -6px #0000001a}.dx-dialog__head{border-bottom:1px solid var(--border);flex:none;padding:16px 20px}.dx-dialog__body{flex:auto;min-height:0;padding:16px 20px;overflow-y:auto}.dx-dialog__foot{border-top:1px solid var(--border);background:var(--surface-muted);flex:none;justify-content:flex-end;gap:8px;padding:12px 20px;display:flex}.dx-item{text-align:left;width:100%;color:var(--muted);cursor:pointer;background:0 0;border:none;border-radius:6px;align-items:center;gap:8px;padding:6px 10px;font-size:13px;transition:background-color .15s,color .15s;display:flex}.dx-item:hover{background:var(--surface-muted);color:var(--foreground)}.dx-item--on{background:var(--surface-muted);color:var(--foreground);font-weight:600}.dx-add{width:18px;height:18px;color:var(--subtle);cursor:pointer;background:0 0;border:none;border-radius:4px;justify-content:center;align-items:center;padding:0;transition:background-color .15s,color .15s;display:inline-flex}.dx-add:hover:not(:disabled){background:var(--surface-muted);color:var(--foreground)}.dx-add:disabled{pointer-events:none;opacity:.4}.dx-link{color:var(--muted);cursor:pointer;background:0 0;border:none;padding:0;font-size:13px;text-decoration:underline;transition:color .15s}.dx-link:hover{color:var(--foreground)}
*,:before,:after{box-sizing:border-box;margin:0;padding:0}html,body{background:var(--background);color:var(--foreground);font-family:var(--dx-font-sans);-webkit-font-smoothing:antialiased;font-size:14px;line-height:1.65}:where(button,a,input,select,textarea):focus-visible{outline:2px solid var(--accent);outline-offset:1px}input,select,textarea,button{font:inherit;color:inherit}code,pre,.mono{font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,monospace}a{color:var(--primary)}.row-actions{opacity:0;transition:opacity .12s}.row:hover .row-actions,.row:focus-within .row-actions{opacity:1}@media (hover:none){.row-actions{opacity:1}}.row:hover{background:var(--surface-muted)}.row--plain:hover{background:0 0}.dx-srcline svg{transition:opacity .12s}.dx-srcline:hover svg{color:var(--foreground);opacity:1!important}.dx-srcline:disabled{cursor:default}.dx-chip{white-space:nowrap;background:hsl(var(--hue) 60% 50% / var(--chip-fill));border:1px solid hsl(var(--hue) 60% 50% / var(--chip-edge));color:hsl(var(--hue) var(--chip-sat) var(--chip-lit));border-radius:9999px;align-items:center;padding:1px 7px;font-size:11px;font-weight:600;line-height:1.5;display:inline-flex}:root,.light{--chip-fill:.1;--chip-edge:.22;--chip-sat:55%;--chip-lit:34%}.dark{--chip-fill:.16;--chip-edge:.28;--chip-sat:65%;--chip-lit:72%}:root{--site-top:56px}.site-top{z-index:20;position:sticky;top:0}.site-header{border-bottom:1px solid var(--border);background:color-mix(in srgb, var(--surface) 88%, transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);justify-content:space-between;align-items:center;gap:8px;height:56px;padding:0 16px;display:flex}.site-brand{white-space:nowrap;letter-spacing:.03em;text-transform:uppercase;color:var(--foreground);-webkit-user-select:none;user-select:none;flex-shrink:0;font-size:17px;font-weight:850;line-height:1}.site-brand a{color:inherit;text-decoration:none;transition:color .15s}.site-brand a:hover{color:var(--primary)}.site-brand-sub{font-weight:300}.site-header-right{flex-shrink:0;align-items:center;gap:8px;min-width:0;display:flex}.site-header-nav{align-items:center;gap:10px;display:none}.site-header-sep{background:var(--border-strong);flex-shrink:0;width:1px;height:12px;display:none}@media (min-width:640px){.site-header{gap:16px;padding:0 24px}.site-brand{font-size:19px}.site-header-right{gap:12px}.site-header-nav{display:flex}.site-header-sep{display:block}}.site-header-link{white-space:nowrap;color:var(--muted);font-size:12px;font-weight:600;text-decoration:none;transition:color .15s}.site-header-link:hover{color:var(--foreground)}.site-pill{white-space:nowrap;border:1px solid var(--border-strong);font:inherit;color:var(--muted);cursor:pointer;background:0 0;border-radius:9999px;flex-shrink:0;align-items:center;gap:5px;padding:4px 10px;font-size:12px;font-weight:600;line-height:1.5;text-decoration:none;transition:color .15s,border-color .15s;display:inline-flex}.site-pill:hover{color:var(--primary);border-color:color-mix(in oklab, var(--primary) 50%, transparent)}.site-theme-toggle{border:1px solid var(--border-strong);width:32px;height:32px;color:var(--muted);cursor:pointer;background:0 0;border-radius:9999px;flex-shrink:0;justify-content:center;align-items:center;padding:0;transition:color .15s,border-color .15s;display:inline-flex}.site-theme-toggle:hover{color:var(--foreground);border-color:var(--subtle)}.site-lock{white-space:nowrap;color:var(--muted);align-items:center;gap:6px;font-size:12px;display:inline-flex}.site-lock-dot{background:var(--subtle);border-radius:50%;width:7px;height:7px;transition:background .2s}.site-lock[data-unlocked] .site-lock-dot{background:var(--success)}.site-badge{letter-spacing:.1em;white-space:nowrap;border-radius:4px;padding:3px 7px;font-size:10px;font-weight:700}.site-badge-warn{background:color-mix(in srgb, var(--warning) 18%, transparent);color:var(--warning)}@media (max-width:639px){.site-badge-warn{display:none}}.vault-shell{align-items:flex-start;display:flex}.vault-side{top:var(--site-top);height:calc(100vh - var(--site-top));flex-shrink:0;position:sticky}.vault-side>nav{height:100%}.vault-main{flex:1;min-width:0;padding:24px 32px 64px}.vault-mbar{display:none}@media (max-width:767px){.vault-side{z-index:25;top:var(--site-top);visibility:hidden;height:auto;transition:transform .22s;position:fixed;bottom:0;left:0;transform:translate(-100%)}.vault-side.is-open{visibility:visible;transform:none;box-shadow:8px 0 32px #0000002e}.vault-scrim{z-index:24;inset:var(--site-top,56px) 0 0 0;background:#0006;border:0;padding:0;position:fixed}.vault-main{padding:0 16px 48px}.vault-mbar{z-index:15;top:var(--site-top,56px);background:var(--background);border-bottom:1px solid var(--border);align-items:center;gap:12px;min-height:48px;margin:0 -16px 16px;padding:8px 16px;display:flex;position:sticky}.vault-mbar button{border:1px solid var(--border-strong);background:var(--surface);height:32px;font:inherit;color:var(--foreground);cursor:pointer;border-radius:8px;flex-shrink:0;align-items:center;gap:6px;padding:0 12px;font-size:13px;font-weight:600;display:inline-flex}.vault-mbar span{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--muted);font-size:13px;font-weight:600;overflow:hidden}.vault-main table{min-width:560px}.vault-main td{word-break:keep-all}}@media (max-width:767px) and (prefers-reduced-motion:reduce){.vault-side{transition:none}}.vs-bone{background:linear-gradient(90deg, var(--surface-muted) 0%, var(--border) 50%, var(--surface-muted) 100%) 0 0 / 300% 100%;border-radius:4px;flex-shrink:0;animation:1.4s ease-in-out infinite vsShimmer;display:block}@keyframes vsShimmer{0%{background-position:100% 0}to{background-position:0 0}}.vs-side{border-right:1px solid var(--border);background:var(--surface);flex-direction:column;flex-shrink:0;width:232px;padding:8px 8px 16px;display:flex}.vs-side-row{justify-content:space-between;align-items:center;gap:12px;height:30px;padding:0 10px;display:flex}.vs-list-row{justify-content:space-between;align-items:center;gap:16px;height:30px;display:flex}@media (prefers-reduced-motion:reduce){.vs-bone{background-position:50% 0;animation:none}}.kl{--kl-bg:#fff;--kl-band:#f6f6f6;--kl-ink:#111;--kl-mid:#3a3a3a;--kl-dim:#8a8a8a;--kl-line:#e6e6e6;--kl-plate:#ededed;--kl-cta:#0f9f8f;background:var(--kl-bg);color:var(--kl-ink)}.dark .kl{--kl-bg:#111113;--kl-band:#19191c;--kl-ink:#f2f2f2;--kl-mid:#c9c9c9;--kl-dim:#8b8b90;--kl-line:#2a2a2e;--kl-plate:#1f1f23;--kl-cta:#2dd4bf}body:has(.kl){background:#fff}.dark body:has(.kl){background:#111113}body:has(.kl) .site-header{background:#ffffffe0;border-bottom-color:#ededed}.dark body:has(.kl) .site-header{background:#111113d6;border-bottom-color:#2a2a2e}.kl code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.kl-shot{background:var(--kl-plate);object-fit:cover;border-radius:6px;width:100%;height:auto;display:block}.kl-shot-empty{text-align:center;word-break:break-all;color:var(--kl-dim);place-items:center;padding:12px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;display:grid}.fade-shot{position:relative;overflow:hidden}.fade-shot-lqip{filter:blur(14px);background-position:50%;background-size:cover;transition:opacity .45s;position:absolute;inset:0;transform:scale(1.08)}.fade-shot>img{object-fit:cover;object-position:inherit;opacity:0;width:100%;height:100%;transition:opacity .45s;display:block;position:relative}.fade-shot.is-loaded>img{opacity:1}.fade-shot.is-loaded .fade-shot-lqip{opacity:0}@media (prefers-reduced-motion:reduce){.fade-shot>img,.fade-shot-lqip{transition:none}}.kl-hero{min-height:clamp(560px, calc(100svh - var(--site-top,56px)), 860px);background:var(--kl-band);grid-template-columns:minmax(0,1fr) minmax(0,1fr);display:grid}.kl-hero-copy{flex-direction:column;justify-content:center;padding:64px 24px 64px max(24px,50vw - 536px);display:flex}.kl-hero h1{letter-spacing:-.03em;word-break:keep-all;margin:0;font-size:clamp(36px,4.4vw,58px);font-weight:800;line-height:1.3}.kl-h1-dim{color:var(--kl-dim)}.kl-h1-mid{color:var(--kl-mid)}.kl-note{color:var(--kl-dim);word-break:keep-all;margin:56px 0 0;font-size:13px;line-height:1.6}.kl-note b{color:var(--kl-ink);font-weight:700}.kl-hero-shot{position:relative;overflow:hidden}.kl-hero-shot .kl-shot{border-radius:0;width:100%;height:100%;position:absolute;inset:0;aspect-ratio:auto!important}.kl-actions{flex-wrap:wrap;gap:12px;margin-top:40px;display:flex}.kl-center{justify-content:center}.kl-btn{border:1.5px solid var(--kl-ink);height:56px;color:var(--kl-ink);background:0 0;border-radius:4px;align-items:center;gap:8px;padding:0 24px;font-size:16px;font-weight:600;text-decoration:none;transition:background .15s,color .15s;display:inline-flex}.kl-btn:hover{background:var(--kl-ink);color:var(--kl-bg)}.kl-sec{text-align:center;max-width:720px;margin:0 auto;padding:128px 24px 0}.kl-h2{letter-spacing:-.03em;word-break:keep-all;margin:0;font-size:clamp(28px,3.4vw,44px);font-weight:800;line-height:1.35}.kl-sub{color:var(--kl-dim);word-break:keep-all;margin:24px 0 0;font-size:17px;font-weight:600;line-height:1.7}.kl-sub b{color:var(--kl-ink)}.kl-pair{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:16px;margin-top:48px;display:grid}.kl-wide{margin-top:48px}.kl-caption{color:var(--kl-mid);margin:20px 0 0;font-size:14px}.kl-caption a{white-space:nowrap;color:var(--kl-dim);text-underline-offset:3px;margin-left:6px}.kl-caption a:hover{color:var(--kl-cta)}.kl-end{background:var(--kl-band);text-align:center;margin-top:160px;padding:64px 24px 0;overflow:hidden}.kl-icon{width:100px;height:100px;color:var(--kl-ink);background:linear-gradient(145deg,#fff,#dcdcdc);border-radius:24px;place-items:center;display:inline-grid;box-shadow:0 1px #0000000a}.dark .kl-icon{background:linear-gradient(145deg,#2c2c31,#18181b)}.kl-word{letter-spacing:.03em;margin:20px 0 0;font-size:24px;font-weight:850}.kl-word b{font-weight:300}.kl-end .kl-actions{margin-top:28px}.kl-device{border-radius:28px 28px 0 0;max-width:360px;height:420px;margin:48px auto 0;overflow:hidden;box-shadow:0 20px 60px #00000014}.kl-foot{background:var(--kl-band);border-top:1px solid var(--kl-line);color:var(--kl-dim);padding:48px 24px 56px;font-size:13px}.kl-foot-in{max-width:1120px;margin:0 auto}.kl-foot-in>b{margin-bottom:20px;font-size:14px;display:block}.kl-foot-in p{margin:4px 0 0;line-height:1.7}.kl-foot-in p span{color:var(--kl-line);margin:0 10px}.kl-foot a{color:inherit;text-decoration:none}.kl-foot a:hover{color:var(--kl-ink)}.kl-foot-end{border-top:1px solid var(--kl-line);justify-content:space-between;align-items:center;margin-top:36px;padding-top:28px;display:flex}.kl-word-sm{color:var(--kl-dim);margin:0;font-size:16px}.km{background:var(--kl-bg);height:100%;color:var(--kl-dim);text-align:left;font-size:12px}.km code{color:var(--kl-ink);font-size:11px}.km-bar{border-bottom:1px solid var(--kl-line);align-items:center;height:48px;padding:0 18px;display:flex}.km-title{letter-spacing:.04em;color:var(--kl-ink);font-size:13px;font-weight:850}.km-title b{font-weight:300}.km-lock{align-items:center;gap:6px;margin-left:auto;font-size:11px;display:inline-flex}.km-lock i{background:var(--kl-dim);border-radius:50%;width:6px;height:6px}.km-head{align-items:center;gap:6px;padding:16px 18px 10px;display:flex}.km-head b{color:var(--kl-ink);margin-right:auto;font-size:15px}.km-env{border:1px solid var(--kl-line);border-radius:999px;padding:3px 10px;font-size:11px}.km-env.is-on{color:var(--kl-cta);border-color:color-mix(in srgb, var(--kl-cta) 45%, transparent)}.km-row{border-top:1px solid var(--kl-line);grid-template-rows:auto auto;grid-template-columns:minmax(0,1fr) auto;column-gap:12px;padding:12px 18px;display:grid}.km-row code{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.km-src{grid-row:2;font-size:11px}.km-mask{background:repeating-linear-gradient(90deg, var(--kl-dim) 0 5px, transparent 5px 9px);opacity:.6;border-radius:4px;grid-area:1/2/3;align-self:center;width:72px;height:8px}@media (max-width:900px){.kl-hero{grid-template-columns:minmax(0,1fr);min-height:0}.kl-hero-copy{padding:56px 24px}.kl-hero-shot{aspect-ratio:4/3}.kl-note{margin-top:32px}.kl-sec{padding-top:96px}.kl-end{margin-top:112px}}@media (max-width:560px){.kl-pair{gap:8px}.kl-btn{height:48px;padding:0 18px;font-size:15px}.kl-sub{font-size:15px}.kl-foot-in p span{margin:0 6px}.kl-foot-end{flex-direction:column;align-items:flex-start;gap:12px}}@media (prefers-reduced-motion:reduce){.kl-btn{transition:none}}
