:root{color-scheme:light;--bg: #f2f4f1;--surface: #fcfcfa;--ink: #1a1f23;--ink-2: #4e5962;--line: #d5dad3;--line-strong: #9aa39c;--accent: #0e6b62;--on-accent: #ffffff;--mark: #b7791f;--code-bg: #eaede8;--focus: #0e6b62;--hl-keyword: #0e6b62;--hl-string: #1f4d38;--hl-comment: #6b757c;--hl-number: #3d4a7a}@media(prefers-color-scheme:dark){:root{color-scheme:dark;--bg: #111417;--surface: #171b1f;--ink: #e6e8e3;--ink-2: #9aa5ad;--line: #2a3137;--line-strong: #46505a;--accent: #55b8ab;--on-accent: #0e1614;--mark: #d9a441;--code-bg: #1c2126;--focus: #55b8ab;--hl-keyword: #55b8ab;--hl-string: #8fbfa8;--hl-comment: #8a939a;--hl-number: #a9b4e0}}*,*:before,*:after{box-sizing:border-box}html,body{margin:0;padding:0;max-width:100%;background:var(--bg);color:var(--ink)}html{-webkit-text-size-adjust:100%}body{font-family:Pretendard Variable,Pretendard,-apple-system,BlinkMacSystemFont,system-ui,sans-serif;font-size:17px;line-height:1.75;font-optical-sizing:auto;min-height:100dvh}::selection{background:color-mix(in srgb,var(--accent) 22%,var(--bg));color:var(--ink)}:focus-visible{outline:2px solid var(--focus);outline-offset:2px}a{color:var(--accent);text-decoration-thickness:1px;text-underline-offset:3px}img,svg,video,iframe{max-width:100%}#app{min-width:0;max-width:100%}.shell{width:min(1120px,100%);margin:0 auto;padding:20px 20px 72px;min-width:0}@media(max-width:639px){.shell{padding:16px 16px 88px}}.display{font-family:Gowun Batang,"Noto Serif KR",serif;font-weight:700;letter-spacing:-.01em;line-height:1.25}.masthead{margin-bottom:36px}.masthead-row{display:flex;align-items:flex-end;justify-content:space-between;gap:16px}.masthead-brand{display:flex;align-items:flex-end;gap:14px;min-width:0}.brand{color:var(--ink);text-decoration:none;font-family:Gowun Batang,"Noto Serif KR",serif;font-weight:700;font-size:1.85rem;letter-spacing:-.01em;line-height:1.2}.masthead-stats{margin:0 0 .18em;font-size:.9rem;line-height:1.3;color:var(--ink-2);white-space:nowrap}.masthead-tools{display:flex;align-items:center;gap:14px;font-size:15px;flex-shrink:0}.masthead-search{background:none;border:0;padding:0;color:var(--ink);cursor:pointer;font-size:15px}.masthead-search:hover{color:var(--accent)}.masthead-rules{margin-top:12px;border-top:1px solid var(--line-strong);padding-top:3px;border-bottom:1px solid var(--line)}.auth{display:flex;align-items:center;gap:10px;font-size:14px;color:var(--ink-2);min-width:0}.auth .email{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:18ch}.auth a{color:var(--ink);text-decoration:none}.auth a:hover{color:var(--accent)}button,input,select,textarea{font:inherit;color:inherit}button{background:var(--surface);border:1px solid var(--line-strong);border-radius:3px;padding:6px 12px;cursor:pointer;font-size:14px}button:hover{border-color:var(--ink-2)}button.text{background:none;border:0;padding:0;color:var(--ink)}button.text:hover{color:var(--accent)}button.primary{background:var(--accent);color:var(--on-accent);border-color:var(--accent)}button.primary:hover{filter:brightness(1.05)}input[type=search],input[type=email],input[type=text],input[type=datetime-local],input[type=number]{width:100%;height:40px;background:var(--surface);border:1px solid var(--line-strong);border-radius:3px;padding:8px 10px;min-width:0;font-size:15px}.list-layout{display:flex;flex-direction:column;gap:28px}.list-layout .rail{order:0}.list-layout .list-main{order:1;min-width:0}.rail{min-width:0}.rail-title{margin:22px 0 10px;font-family:Pretendard Variable,Pretendard,sans-serif;font-size:.85rem;font-weight:600;color:var(--ink-2)}.tag-index{list-style:none;margin:0;padding:0;display:flex;flex-direction:row;flex-wrap:nowrap;gap:8px;overflow-x:auto;-webkit-overflow-scrolling:touch}.tag-index a{display:inline-flex;align-items:baseline;gap:8px;color:var(--ink);text-decoration:none;font-size:.8rem;line-height:1.4;padding:4px 8px;border:1px solid var(--line);border-radius:3px;white-space:nowrap}.tag-index a:hover{border-color:var(--line-strong)}.tag-index .count{color:var(--ink-2);font-variant-numeric:tabular-nums}.tag-index a.is-current{border-color:var(--line-strong);color:var(--accent)}.list{display:grid;grid-template-columns:1fr;gap:0}.card{display:grid;grid-template-columns:88px minmax(0,1fr) auto;gap:10px 14px;align-items:start;min-width:0;padding:18px 0;border-bottom:1px solid var(--line);background:none;color:inherit;text-decoration:none}.card-date{display:block;width:88px;max-width:88px;margin:.35em 0 0;font-size:.85rem;line-height:1.4;color:var(--ink-2);font-variant-numeric:tabular-nums;font-family:Pretendard Variable,Pretendard,sans-serif}.card-body{min-width:0}.card h2{margin:0;font-family:Gowun Batang,"Noto Serif KR",serif;font-size:1.25rem;font-weight:700;letter-spacing:-.01em;line-height:1.35;overflow-wrap:break-word}.card h2 a{color:inherit;text-decoration:none}.card h2 a:hover{color:var(--accent)}.doc-mark{font-family:Gowun Batang,"Noto Serif KR",serif;font-weight:400;font-size:.8rem;color:var(--ink-2);margin-right:.4em}.card .summary{margin:6px 0 0;font-size:.95rem;line-height:1.5;color:var(--ink-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.card-vis{justify-self:end;padding-top:.4em}.vis{display:inline-flex;align-items:center;gap:6px;font-size:.8rem;color:var(--ink-2);white-space:nowrap}.vis-dot{width:7px;height:7px;border-radius:50%;background:var(--ink-2);flex:0 0 auto}.vis-private .vis-dot{background:var(--ink-2)}.vis-link .vis-dot{background:var(--accent)}.vis-public .vis-dot{background:var(--mark)}.vis-ended .vis-dot{background:var(--ink-2)}.chips{display:flex;flex-wrap:wrap;gap:6px;list-style:none;margin:10px 0 0;padding:0}.chip{display:inline-block;font-size:.8rem;line-height:1.4;padding:2px 8px;border-radius:3px;background:transparent;color:var(--ink);text-decoration:none;border:1px solid var(--line)}.chip:hover{border-color:var(--line-strong)}h1{margin:0 0 8px;font-family:Gowun Batang,"Noto Serif KR",serif;font-weight:700;font-size:1.65rem;letter-spacing:-.01em;line-height:1.25;overflow-wrap:break-word}.post-kicker{margin:0 0 8px;font-family:Gowun Batang,"Noto Serif KR",serif;font-weight:400;font-size:.8rem;color:var(--ink-2)}.page-meta{display:flex;flex-wrap:wrap;align-items:baseline;margin:0 0 28px;font-size:.9rem;line-height:1.5;color:var(--ink-2)}.page-meta span{padding:0 10px;border-left:1px solid var(--line)}.page-meta span:first-child{padding-left:0;border-left:0}.share-banner{margin:0 0 28px;padding:8px 12px;background:var(--code-bg);font-size:.85rem;color:var(--ink-2)}.one-line{margin:48px 0;font-size:16px;color:var(--ink)}.post-layout{display:flex;flex-direction:column;gap:28px}.post-main{min-width:0;max-width:68ch}.post-rail{display:none}.mermaid svg{max-width:100%;height:auto}.toc-mobile-host{margin:0 0 24px}.toc-mobile{display:block;margin:0;border:1px solid var(--line);border-radius:3px;padding:8px 12px;font-size:.85rem}.toc-mobile summary{cursor:pointer;color:var(--ink-2);font-weight:600}.toc{list-style:none;margin:0;padding:0}.toc a{display:block;color:var(--ink-2);text-decoration:none;font-size:.85rem;line-height:1.45;padding:4px 0}.toc a.is-current{color:var(--accent)}.toc .toc-h3{padding-left:12px}.prose{min-width:0;overflow-wrap:break-word;word-break:keep-all;max-width:68ch}.prose>*:first-child{margin-top:0}.prose h1,.prose h2,.prose h3,.prose h4{letter-spacing:-.01em;line-height:1.3}.prose h2{font-family:Gowun Batang,"Noto Serif KR",serif;font-weight:700;font-size:1.45rem;margin:2.2em 0 .6em}.prose h3{font-family:Pretendard Variable,Pretendard,sans-serif;font-weight:700;font-size:1.2rem;margin:1.6em 0 .5em}.prose p,.prose li{word-break:keep-all}.prose a{overflow-wrap:anywhere;color:var(--accent);text-underline-offset:3px}.table-wrap,.prose pre{max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.prose table{border-collapse:collapse;font-size:14px;width:max-content;min-width:100%}.prose th,.prose td{border:1px solid var(--line);padding:8px 12px;text-align:start;vertical-align:top}.prose thead th{background:var(--code-bg);font-weight:600}.prose pre{background:var(--code-bg);border:1px solid var(--line);border-radius:4px;padding:12px 14px;font-size:13.5px;line-height:1.5;margin:1.2em 0}.prose code{font-family:ui-monospace,SF Mono,Menlo,Consolas,monospace;font-size:.88em;word-break:normal}.prose pre code{font-size:1em}.prose p code,.prose li code{background:var(--code-bg);padding:.1em .35em;border-radius:3px}.prose img{height:auto;border-radius:2px}.prose blockquote{margin:1.2em 0;padding:0 0 0 14px;border-left:2px solid var(--line-strong);color:var(--ink-2)}.html-frame{width:100%;border:1px solid var(--line);border-radius:4px;display:block;background:var(--surface);min-height:40px}.related{margin-top:48px;padding-top:8px}.related h2{margin:0 0 4px;font-family:Pretendard Variable,Pretendard,sans-serif;font-size:.85rem;font-weight:600;color:var(--ink-2)}.related .list{margin:0}.policy-fold{margin:0 0 28px;border:1px solid var(--line);border-radius:3px;background:var(--surface)}.policy-fold>summary{cursor:pointer;list-style:none;padding:12px 14px;font-size:.9rem}.policy-fold>summary::-webkit-details-marker{display:none}.policy-fold .policy-summary-kicker{display:block;font-size:.85rem;font-weight:600;color:var(--ink-2);margin-bottom:4px}.policy-fold .policy{padding:0 14px 16px;margin:0;border:0}.policy{display:grid;gap:22px}.policy h2{margin:0 0 10px;font-family:Pretendard Variable,Pretendard,sans-serif;font-size:.85rem;font-weight:600;color:var(--ink-2)}.policy form,.policy .stack{display:grid;gap:10px}.radios{display:flex;flex-wrap:wrap;gap:12px 16px;font-size:14px}.radios label{display:flex;align-items:center;gap:6px}.share-row,.grant-row{display:flex;flex-wrap:wrap;gap:8px;align-items:center;justify-content:space-between;padding:10px 0;border-bottom:1px solid var(--line);font-size:14px;min-width:0}.share-row .info,.grant-row .info{min-width:0;flex:1 1 12rem;overflow-wrap:anywhere}.actions{display:flex;flex-wrap:wrap;gap:6px}.field-label{font-size:13px;color:var(--ink-2)}.status{font-size:14px;color:var(--ink-2);margin:0}.status.err{color:var(--mark)}.login-page{display:flex;justify-content:center}.login-form{width:min(380px,100%);display:grid;gap:10px;margin-top:48px}.login-form label{font-size:15px}.login-form button.primary{height:44px;border-radius:3px}.policy-fab{position:fixed;right:16px;bottom:16px;z-index:20;height:44px;padding:0 16px;background:var(--accent);color:var(--on-accent);border:1px solid var(--accent);border-radius:3px;font-size:15px}.sheet-root{position:fixed;inset:0;z-index:40}.sheet-root[hidden]{display:none}.sheet-backdrop{position:absolute;inset:0;background:color-mix(in srgb,var(--ink) 36%,transparent)}.sheet-panel{position:absolute;left:0;right:0;bottom:0;max-height:88dvh;overflow:auto;background:var(--surface);border-top:1px solid var(--line-strong);padding:16px;transform:translateY(0);transition:transform .18s ease-out}.sheet-root.is-closing .sheet-panel{transform:translateY(100%)}.sheet-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px}.sheet-head h2{margin:0;font-size:1.05rem;font-weight:650}.hljs-keyword,.hljs-selector-tag,.hljs-title,.hljs-section,.hljs-doctag,.hljs-name,.hljs-strong{color:var(--hl-keyword)}.hljs-string,.hljs-attr,.hljs-symbol,.hljs-bullet,.hljs-addition{color:var(--hl-string)}.hljs-comment,.hljs-quote,.hljs-deletion,.hljs-meta{color:var(--hl-comment)}.hljs-number,.hljs-literal,.hljs-built_in,.hljs-type{color:var(--hl-number)}@media(min-width:900px){.brand{font-size:2.4rem}.list-layout{display:grid;grid-template-columns:1fr 260px;gap:48px;align-items:start}.list-layout .list-main{order:unset;grid-column:1;grid-row:1}.list-layout .rail{order:unset;grid-column:2;grid-row:1;position:sticky;top:16px}.tag-index{flex-direction:column;overflow:visible;gap:0}.tag-index a{display:flex;justify-content:space-between;width:100%;border:0;border-radius:0;padding:7px 0;border-bottom:1px solid var(--line);font-size:.95rem}.card{grid-template-columns:88px minmax(0,1fr) auto;gap:12px 20px}}@media(min-width:1024px){h1{font-size:2.1rem}.post-layout{display:grid;grid-template-columns:minmax(0,68ch) 240px;gap:48px;justify-content:start;align-items:start}.post-rail{display:block;position:sticky;top:16px}.toc-mobile-host,.toc-mobile,.policy-fab{display:none}.rail-toc-title{margin:0 0 10px;font-size:.85rem;font-weight:600;color:var(--ink-2)}}@media(prefers-reduced-motion:reduce){.sheet-panel{transition:none}*{animation:none!important}}
