@property --p-deep{syntax:"<color>";inherits:true;initial-value:#232626}@property --p-mid{syntax:"<color>";inherits:true;initial-value:#607b99}@property --p-glow{syntax:"<color>";inherits:true;initial-value:#486290}:root{color-scheme:light;--p-deep:#232626;--p-mid:#607b99;--p-glow:#486290;--paper:#f4f2ec;--panel:#fffefb;--wash:#ebe8e1;--plane:#faf8f3;--ink:#1b1a17;--ink-2:#5b584f;--ink-3:#8d8a80;--line:#e4e0d7;--line-strong:#d3cec2;--focus:#0e7c63;--focus-press:#0a6851;--accent-tint:#e3efe9;--accent-ring:#0e7c6329;--accent-bright:#45b695;--on-accent:#fff;--danger:#d13b2e;--chrome:#16201e;--chrome-2:#27332f;--chrome-ink:#eef0ec;--chrome-ink-2:#a7b0ac;--chrome-ink-3:#7c8683;--chrome-line:#303d39;--chrome-line-strong:#43514d;--font-ui:"Pretendard Variable", Pretendard, -apple-system, BlinkMacSystemFont, "Segoe UI", "Apple SD Gothic Neo", "Malgun Gothic", sans-serif;--font-mono:"IBM Plex Mono", "SF Mono", Consolas, monospace;--sp-1:4px;--sp-2:8px;--sp-3:12px;--sp-4:16px;--sp-5:24px;--sp-6:32px;--r-ctrl:6px;--r-item:9px;--r-card:13px;--sh-1:0 1px 2px #1b1a170f, 0 1px 1px #1b1a170a;--sh-2:0 2px 8px #1b1a1712, 0 1px 2px #1b1a170d;--sh-pop:0 12px 32px #1b1a1724, 0 2px 6px #1b1a170f;--btn-face:linear-gradient(180deg, #fffefb, #f6f4ef);--btn-border:var(--line-strong);--primary-face:linear-gradient(180deg, #13896d, #0e7c63);--primary-face-hover:linear-gradient(180deg, #179676, #0f8268);--primary-border:#0a6851;--page-w:1180px;--read-w:704px;--nav-h:60px;--gutter:clamp(16px, 4vw, 40px)}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){color-scheme:dark;--paper:#211e1a;--panel:#2b2823;--wash:#161512;--plane:#282520;--ink:#eae8e2;--ink-2:#a7a49b;--ink-3:#7c7a72;--line:#37332c;--line-strong:#4d4840;--focus:#45b695;--focus-press:#37a183;--accent-tint:#12352c;--accent-ring:#45b69538;--on-accent:#06231b;--danger:#e05a4b;--chrome:#101614;--chrome-2:#1f2a27;--chrome-line:#27322f;--chrome-line-strong:#3a4642;--sh-1:0 1px 2px #0000004d;--sh-2:0 2px 8px #00000059;--sh-pop:0 12px 32px #00000073;--btn-face:linear-gradient(180deg, #34302a, #2b2823);--primary-face:linear-gradient(180deg, #4fc2a0, #45b695);--primary-face-hover:linear-gradient(180deg, #5ccdab, #4fbe9d);--primary-border:#37a183}}:root[data-theme=dark]{color-scheme:dark;--paper:#211e1a;--panel:#2b2823;--wash:#161512;--plane:#282520;--ink:#eae8e2;--ink-2:#a7a49b;--ink-3:#7c7a72;--line:#37332c;--line-strong:#4d4840;--focus:#45b695;--focus-press:#37a183;--accent-tint:#12352c;--accent-ring:#45b69538;--on-accent:#06231b;--danger:#e05a4b;--chrome:#101614;--chrome-2:#1f2a27;--chrome-line:#27322f;--chrome-line-strong:#3a4642;--sh-1:0 1px 2px #0000004d;--sh-2:0 2px 8px #00000059;--sh-pop:0 12px 32px #00000073;--btn-face:linear-gradient(180deg, #34302a, #2b2823);--primary-face:linear-gradient(180deg, #4fc2a0, #45b695);--primary-face-hover:linear-gradient(180deg, #5ccdab, #4fbe9d);--primary-border:#37a183}:root{--floor:color-mix(in oklab, var(--p-deep) 38%, var(--chrome));--floor-deep:color-mix(in oklab, var(--p-deep) 50%, #0b0f0e);transition:--p-deep 1.2s,--p-mid 1.2s,--p-glow 1.2s}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;scroll-padding-top:calc(var(--nav-h) + 16px)}body{background:var(--paper);color:var(--ink);font-family:var(--font-ui);letter-spacing:-.01em;-webkit-font-smoothing:antialiased;flex-direction:column;min-height:100svh;margin:0;font-size:1rem;font-weight:450;line-height:1.6;display:flex;overflow-x:hidden}main{flex:1 0 auto}:lang(ko){word-break:keep-all;overflow-wrap:anywhere}img,svg,iframe{max-width:100%;display:block}a{color:var(--focus);text-underline-offset:3px;text-decoration-thickness:1px}a:hover{color:var(--focus-press)}:focus-visible{outline:3px solid var(--accent-ring);outline-offset:0;border-radius:var(--r-ctrl)}h1,h2,h3{letter-spacing:-.025em;text-wrap:balance;margin:0;font-weight:700;line-height:1.2}p{text-wrap:pretty;margin:0}.skip{z-index:100;background:var(--panel);border-radius:var(--r-ctrl);padding:8px 14px;position:absolute;top:-60px;left:12px}.skip:focus{top:12px}.wrap{width:100%;max-width:calc(var(--page-w) + var(--gutter) * 2);padding:0 var(--gutter);margin:0 auto}.sr{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.eyebrow{color:var(--ink-3);align-items:center;gap:8px;font-size:.8125rem;font-weight:600;display:inline-flex}.eyebrow:before{content:"";background:linear-gradient(90deg, var(--p-mid), var(--p-glow));border-radius:2px;width:18px;height:2px}.mono{font-family:var(--font-mono);letter-spacing:.06em;font-variant-numeric:tabular-nums;font-size:.75rem}.display{font-size:clamp(2rem,4.6vw,3.5rem)}.title{font-size:clamp(1.625rem,3vw,2.375rem)}.lead{color:var(--ink-2);font-size:clamp(1.0625rem,1.4vw,1.1875rem);line-height:1.65}.btn{--h:44px;height:var(--h);border:1px solid var(--btn-border);background:var(--btn-face);color:var(--ink);font:600 .9375rem/1 var(--font-ui);letter-spacing:-.01em;white-space:nowrap;cursor:pointer;box-shadow:var(--sh-1), inset 0 1px 0 #fff9;border-radius:10px;justify-content:center;align-items:center;gap:8px;padding:0 18px;text-decoration:none;transition:transform 60ms ease-out,box-shadow .12s ease-out,background .12s ease-out,border-color .12s;display:inline-flex}.btn:hover{color:var(--ink);border-color:var(--ink-3)}.btn:active{transform:translateY(.5px);box-shadow:inset 0 1px 3px #1b1a172e}.btn-primary{background:var(--primary-face);border-color:var(--primary-border);color:var(--on-accent);box-shadow:var(--sh-1), inset 0 1px 0 #ffffff38}.btn-primary:hover{background:var(--primary-face-hover);color:var(--on-accent);border-color:var(--primary-border)}.btn-glass{color:var(--chrome-ink);-webkit-backdrop-filter:blur(12px)saturate(1.4);background:#ffffff14;border-color:#ffffff2e;box-shadow:inset 0 1px #ffffff24,0 6px 20px #0000002e}.btn-glass:hover,.btn-glass[aria-current=page]{color:#fff;background:#ffffff24;border-color:#ffffff47}.btn-sm{--h:34px;border-radius:8px;padding:0 13px;font-size:.875rem}.btn[aria-disabled=true]{opacity:.5;pointer-events:none}.btn .g{flex:none;width:18px;height:18px}.icon-btn{width:36px;height:36px;color:var(--chrome-ink-2);cursor:pointer;background:#ffffff0f;border:1px solid #ffffff29;border-radius:999px;place-items:center;transition:background .12s,color .12s,transform 60ms;display:inline-grid}.icon-btn:hover{color:#fff;background:#ffffff24}.icon-btn:active{transform:translateY(.5px)}.icon-btn .g{width:16px;height:16px}.nav{z-index:50;height:var(--nav-h);color:var(--chrome-ink);background:color-mix(in srgb, var(--chrome) 62%, transparent);-webkit-backdrop-filter:blur(22px)saturate(1.5);transition:background .2s ease-out;position:fixed;inset:0 0 auto;box-shadow:inset 0 -1px #ffffff0f,0 10px 30px #00000014}.nav[data-top=true]{box-shadow:none;-webkit-backdrop-filter:none;background:0 0}.nav-in{align-items:center;gap:20px;height:100%;display:flex}.brand{color:var(--chrome-ink);letter-spacing:-.02em;align-items:center;gap:10px;font-size:1.0625rem;font-weight:700;text-decoration:none;display:inline-flex}.brand:hover{color:#fff}.brand svg{width:28px;height:28px}.nav-links{align-items:center;gap:4px;margin-left:12px;display:flex}.nav-links a{color:var(--chrome-ink-2);border-radius:999px;padding:7px 12px;font-size:.9375rem;font-weight:500;text-decoration:none;transition:color .12s,background .12s}.nav-links a:hover{color:var(--chrome-ink);background:#ffffff0f}.nav-links a[aria-current=page]{color:#fff;background:#ffffff1a;box-shadow:inset 0 1px #ffffff1f,0 2px 8px #00000029}.nav-end{align-items:center;gap:8px;margin-left:auto;display:flex}.lang{color:var(--chrome-ink-3);font-family:var(--font-mono);letter-spacing:.08em;border-radius:6px;padding:6px 8px;font-size:.75rem;text-decoration:none}.lang:hover{color:var(--chrome-ink)}.nav-toggle{display:none}@media (width<=760px){.nav-toggle{display:inline-grid}.nav-links{top:var(--nav-h);padding:8px var(--gutter) 16px;background:color-mix(in srgb, var(--chrome) 94%, transparent);-webkit-backdrop-filter:blur(22px);flex-direction:column;align-items:stretch;gap:2px;margin:0;display:none;position:absolute;left:0;right:0;box-shadow:0 16px 30px #00000040}.nav[data-open=true]{background:color-mix(in srgb, var(--chrome) 94%, transparent)}.nav[data-open=true] .nav-links{display:flex}.nav-links a{border-radius:var(--r-item);padding:12px 14px}.nav-end .btn{display:none}}.fade{background:linear-gradient(180deg, var(--floor) 0%, color-mix(in oklab, var(--p-mid) 40%, var(--floor)) 22%, color-mix(in oklab, var(--p-glow) 30%, var(--paper)) 58%, var(--paper) 100%);height:clamp(120px,16vw,240px)}.dl-buttons{grid-template-columns:repeat(2,minmax(0,260px));gap:12px;margin-top:16px;display:grid}.dl-card{border-radius:var(--r-card);text-align:left;color:var(--chrome-ink);-webkit-backdrop-filter:blur(14px)saturate(1.4);background:#ffffff12;border:1px solid #ffffff24;align-items:center;gap:14px;padding:16px 18px;text-decoration:none;transition:background .12s,border-color .12s,transform 60ms;display:flex;box-shadow:inset 0 1px #ffffff1f,0 10px 30px #0003}.dl-card:hover{color:#fff;background:#ffffff1f;border-color:#ffffff3d}.dl-card:active{transform:translateY(.5px)}.dl-card[data-mine=true]{border-color:color-mix(in oklab, var(--accent-bright) 60%, transparent);box-shadow:inset 0 1px #ffffff1f,0 0 0 3px #45b69529,0 10px 30px #0003}.dl-card[aria-disabled=true]{opacity:.55;pointer-events:none}.dl-card .g{width:26px;height:26px;color:var(--chrome-ink-2);flex:none}.dl-card b{font-size:1.0625rem;font-weight:700;display:block}.dl-card small{color:var(--chrome-ink-3);font-size:.8125rem;display:block}.dl-card .arrow{width:18px;height:18px;color:var(--chrome-ink-3);margin-left:auto}.dl-meta{color:var(--chrome-ink-3);min-height:1.2em;font-size:.8125rem}.dl-meta a{color:var(--accent-bright)}@media (width<=560px){.dl-buttons{grid-template-columns:1fr;width:100%}}.on-paper .dl-card{color:var(--ink);background:var(--panel);border-color:var(--line-strong);box-shadow:var(--sh-2);-webkit-backdrop-filter:none}.on-paper .dl-card:hover{color:var(--ink);border-color:var(--ink-3)}.on-paper .dl-card[data-mine=true]{border-color:var(--focus);box-shadow:0 0 0 3px var(--accent-ring), var(--sh-2)}.on-paper .dl-card .g,.on-paper .dl-card .arrow,.on-paper .dl-card small,.on-paper .dl-meta{color:var(--ink-3)}.on-paper .dl-meta a{color:var(--focus)}.foot{background:var(--floor);color:var(--chrome-ink-3);border-top:1px solid #ffffff0f;padding:48px 0 40px;font-size:.875rem}.foot-grid{grid-template-columns:1.6fr 1fr 1fr;gap:32px;display:grid}.foot .brand{margin-bottom:10px}.foot h4{color:var(--chrome-ink-2);margin:0 0 10px;font-size:.8125rem;font-weight:600}.foot ul{gap:6px;margin:0;padding:0;list-style:none;display:grid}.foot a{color:var(--chrome-ink-3);text-decoration:none}.foot a:hover{color:var(--chrome-ink)}.foot-bottom{border-top:1px solid #ffffff0f;flex-wrap:wrap;justify-content:space-between;gap:12px;margin-top:40px;padding-top:20px;display:flex}@media (width<=640px){.foot-grid{grid-template-columns:1fr 1fr}.foot-grid>:first-child{grid-column:1/-1}}.page-head{color:var(--chrome-ink);background:radial-gradient(80% 140% at 85% 0%, color-mix(in oklab, var(--p-glow) 32%, transparent), transparent 65%), linear-gradient(180deg, var(--floor-deep), var(--floor));padding:calc(var(--nav-h) + clamp(36px, 6vw, 72px)) 0 clamp(28px, 4vw, 44px);position:relative}.page-head h1{color:#fff;font-size:clamp(1.875rem,3.6vw,2.75rem)}.page-head .lead{color:var(--chrome-ink-2);max-width:640px;margin-top:12px}.page-head .eyebrow{color:var(--chrome-ink-2);margin-bottom:12px}.page-head+.fade{height:clamp(56px,8vw,110px)}.docs{grid-template-columns:232px minmax(0,1fr);gap:clamp(24px,4vw,56px);padding-bottom:96px;display:grid}.docs-nav{top:calc(var(--nav-h) + 24px);max-height:calc(100svh - var(--nav-h) - 48px);align-self:start;font-size:.9375rem;position:sticky;overflow-y:auto}.docs-nav h2{color:var(--ink-3);letter-spacing:0;margin:18px 10px 6px;font-size:.75rem;font-weight:600}.docs-nav h2:first-child{margin-top:0}.docs-nav ul{gap:1px;margin:0;padding:0;list-style:none;display:grid}.docs-nav a{border-radius:var(--r-item);color:var(--ink-2);padding:6px 10px;font-weight:500;text-decoration:none;display:block}.docs-nav a:hover{color:var(--ink);background:color-mix(in srgb, var(--ink) 5%, transparent)}.docs-nav a[aria-current=page]{color:var(--ink);background:var(--panel);box-shadow:var(--sh-1), inset 0 0 0 1px var(--line)}.docs-body{max-width:var(--read-w);min-width:0}.docs-pager{border-top:1px solid var(--line);justify-content:space-between;gap:12px;margin-top:56px;padding-top:24px;display:flex}.docs-pager a{border-radius:var(--r-item);color:var(--ink);box-shadow:inset 0 0 0 1px var(--line);flex-direction:column;gap:2px;max-width:48%;padding:12px 16px;text-decoration:none;display:flex}.docs-pager a:hover{background:var(--panel);color:var(--ink)}.docs-pager small{color:var(--ink-3);font-size:.8125rem}.docs-pager .next{text-align:right;margin-left:auto}.note{color:var(--ink-3);margin-top:40px;font-size:.875rem}@media (width<=860px){.docs{grid-template-columns:1fr}.docs-nav{border-radius:var(--r-card);background:var(--panel);max-height:none;box-shadow:inset 0 0 0 1px var(--line);padding:12px;position:static}.docs-nav ul{grid-template-columns:repeat(auto-fill,minmax(140px,1fr))}}.cards{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px;display:grid}.card{border-radius:var(--r-card);background:var(--panel);box-shadow:var(--sh-1), inset 0 0 0 1px var(--line);color:var(--ink);flex-direction:column;gap:6px;padding:18px 18px 20px;text-decoration:none;transition:box-shadow .16s ease-out,transform .16s ease-out;display:flex}.card:hover{color:var(--ink);box-shadow:var(--sh-pop), inset 0 0 0 1px var(--line-strong);transform:translateY(-1px)}.card b{font-size:1.0625rem;font-weight:700}.card span{color:var(--ink-2);font-size:.9063rem;line-height:1.5}.card-lead{background:radial-gradient(70% 140% at 100% 0%, color-mix(in oklab, var(--p-glow) 18%, transparent), transparent 70%), var(--panel);flex-direction:row;grid-column:1/-1;align-items:center;gap:16px;padding:22px}.card-lead .g{width:28px;height:28px;color:var(--focus)}.docs-group{margin:44px 0 14px;font-size:1.1875rem}.docs-group:first-child{margin-top:0}.prose{color:var(--ink);font-size:1rem;line-height:1.75}.prose>:first-child{margin-top:0}.prose h1{margin:0 0 20px;font-size:clamp(1.75rem,3vw,2.25rem)}.prose h2{margin:48px 0 14px;padding-top:8px;font-size:1.375rem}.prose h3{margin:32px 0 10px;font-size:1.125rem}.prose p,.prose ul,.prose ol,.prose table,.prose blockquote,.prose pre{margin:0 0 16px}.prose ul,.prose ol{padding-left:1.3em}.prose li+li{margin-top:6px}.prose li::marker{color:var(--ink-3)}.prose strong{font-weight:650}.prose code{font-family:var(--font-mono);background:var(--wash);letter-spacing:0;border-radius:4px;padding:1px 5px;font-size:.85em}.prose pre{border-radius:var(--r-item);box-shadow:inset 0 0 0 1px var(--line);padding:14px 16px;font-size:.875rem;overflow-x:auto;background:var(--panel)!important}.prose pre code{background:0 0;padding:0}.prose table{border-collapse:collapse;max-width:100%;font-size:.9375rem;line-height:1.55;display:block;overflow-x:auto}.prose th,.prose td{border-bottom:1px solid var(--line);text-align:left;vertical-align:top;padding:10px 14px 10px 0}.prose th{color:var(--ink-3);white-space:nowrap;border-bottom-color:var(--line-strong);font-size:.8125rem;font-weight:600}.prose td:first-child{white-space:nowrap;font-weight:600}.prose blockquote{border-left:2px solid var(--line-strong);color:var(--ink-2);padding:2px 0 2px 16px}.prose hr{border:0;border-top:1px solid var(--line);margin:40px 0}.prose img{border-radius:var(--r-item)}.posts{gap:0;max-width:760px;margin:0;padding:0;list-style:none;display:grid}.posts li{border-top:1px solid var(--line)}.posts li:last-child{border-bottom:1px solid var(--line)}.posts a{color:var(--ink);grid-template-columns:120px 1fr;gap:4px 24px;padding:26px 0;text-decoration:none;display:grid}.posts a:hover h2{color:var(--focus)}.posts time{color:var(--ink-3);grid-row:span 2;padding-top:6px}.posts h2{font-size:1.3125rem;transition:color .12s}.posts p{color:var(--ink-2)}@media (width<=600px){.posts a{grid-template-columns:1fr}.posts time{grid-row:auto}}.article{max-width:var(--read-w);margin:0 auto;padding-bottom:96px}.article-back{align-items:center;gap:6px;margin-bottom:28px;font-size:.875rem;font-weight:600;text-decoration:none;display:inline-flex}.article-back .g{width:14px;height:14px}.acct{max-width:640px;margin:0 auto;padding-bottom:96px}.panel{border-radius:var(--r-card);background:var(--panel);box-shadow:var(--sh-2), inset 0 0 0 1px var(--line);padding:28px}.panel+.panel{margin-top:14px}.acct-login{flex-direction:column;align-items:flex-start;gap:16px;display:flex}.acct-row{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;display:flex}.acct-email{word-break:break-all;font-size:1.125rem;font-weight:700}.acct-sub{color:var(--ink-3);font-size:.875rem}.tag{font-family:var(--font-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--focus);background:color-mix(in srgb, currentColor 10%, transparent);border-radius:4px;padding:2px 7px;font-size:.6875rem;font-weight:450;display:inline-block}.meters{gap:18px;margin:18px 0 0;padding:0;list-style:none;display:grid}.meter-top{justify-content:space-between;align-items:baseline;gap:12px;display:flex}.meter-top b{font-weight:600}.meter-top small{color:var(--ink-3);margin-left:6px;font-size:.8125rem}.meter-num{color:var(--ink-2);letter-spacing:0}.meter-bar{background:var(--wash);border-radius:999px;height:6px;margin-top:8px;overflow:hidden}.meter-bar i{height:100%;width:var(--w,0%);border-radius:inherit;background:linear-gradient(90deg, var(--p-mid), var(--p-glow));transition:width .6s ease-out;display:block}.meter[data-full=true] .meter-bar i{background:var(--danger)}.acct-state{color:var(--ink-3)}.acct-error{color:var(--danger)}.lost{text-align:center;place-items:center;min-height:60svh;padding:80px 0;display:grid}@media (prefers-reduced-motion:reduce){:root{transition:none}*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}@media (prefers-reduced-transparency:reduce){.nav,.btn-glass,.dl-card{-webkit-backdrop-filter:none}.nav{background:var(--chrome)}}@media (width>=761px){.nav-login-m[data-astro-cid-wpvy4v7s]{display:none}}
