:root{--bg:oklch(0.965 0.005 100);--bg-deep:oklch(0.94 0.006 100);--paper:oklch(1.00 0.003 100);--paper-2:oklch(0.985 0.004 100);--ink:oklch(0.18 0.010 200);--ink-soft:oklch(0.34 0.010 200);--ink-mute:oklch(0.55 0.010 200);--ink-faint:oklch(0.75 0.008 200);--rule:oklch(0.90 0.008 200);--rule-2:oklch(0.82 0.010 200);--accent:oklch(0.36 0.09 155);--accent-soft:oklch(0.36 0.09 155/0.14);--accent-2:oklch(0.50 0.08 240);--shadow-card:oklch(0.2 0.03 200/0.18);--font-sans:"Pretendard Variable",Pretendard,ui-sans-serif,system-ui,-apple-system,"Apple SD Gothic Neo","Noto Sans KR",sans-serif;--font-serif:var(--font-sans);--font-mono:"JetBrains Mono",ui-monospace,SFMono-Regular,Menlo,monospace;--pane-w:520px;--stack-overlap:18px;--stage-pad:18px;--pane-gap:12px;--header-h:56px;--rail-h:40px;--ease:cubic-bezier(0.2,0.65,0.3,1)}*{box-sizing:border-box}body,html{margin:0;padding:0;background:var(--bg);color:var(--ink);font-family:var(--font-sans);font-size:16px;line-height:1.55;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;font-feature-settings:"ss01","ss02","tnum";word-break:keep-all;overflow-wrap:break-word}body{min-height:100dvh;overflow-x:hidden}a{color:inherit}::selection{background:oklch(.36 .09 155/.22);color:var(--ink)}@media (max-width:720px){.brand .by{display:none}}.app{min-height:100dvh}.app,.header{background:var(--bg)}.header{height:var(--header-h);display:flex;align-items:center;gap:16px;padding:0 20px;flex-shrink:0;position:relative;z-index:10}.brand{display:flex;align-items:baseline;gap:9px;white-space:nowrap;font-family:var(--font-serif);font-weight:500;font-size:17px;letter-spacing:-.01em;color:var(--ink);cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;min-width:0;overflow:hidden;text-overflow:ellipsis}.brand .mark{display:inline-block;width:7px;height:7px;background:var(--accent);border-radius:50%;transform:translateY(-1px)}.nav{margin-left:auto;display:flex;gap:2px;align-items:center;flex-shrink:0}.nav button{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;background:transparent;color:var(--ink-mute);font:inherit;font-size:12.5px;padding:6px 11px;border-radius:6px;cursor:pointer;font-family:var(--font-sans);transition:color .15s var(--ease)}.nav button:hover{color:var(--ink)}.stage{width:100%;overflow-x:auto;overflow-y:visible;position:relative;scroll-behavior:smooth;scrollbar-width:none;isolation:isolate}.stage::-webkit-scrollbar{display:none}.stage-inner{display:flex;align-items:flex-start;height:100%;width:max-content;min-width:100%;column-gap:var(--pane-gap);padding:8px var(--stage-pad) 25vh var(--stage-pad);box-sizing:border-box}.stage-inner:after{content:"";flex-shrink:0;width:50vw;height:100%}.pane{position:-webkit-sticky;position:sticky;flex-shrink:0;width:var(--pane-w);align-self:flex-start;z-index:1;perspective:3000px}.pane-3d,.pane-clip{position:relative;transform-style:preserve-3d}.pane-3d{transition:transform .7s var(--ease)}.pane.flipped .pane-3d{transform:rotateY(180deg)}.pane-face{display:flex;flex-direction:column;background:var(--paper);border-radius:14px;overflow:hidden;backface-visibility:hidden;-webkit-backface-visibility:hidden;box-shadow:0 0 0 1px oklch(0 0 0/.03),0 14px 36px -18px var(--shadow-card),0 3px 8px -4px oklch(0 0 0/.06);min-height:280px}.pane-face.front{position:relative}.pane-face.back{position:absolute;inset:0;transform:rotateY(180deg);background:var(--paper-2);min-height:0;max-height:none}.pane-handle{position:absolute;left:0;top:0;width:var(--stack-overlap);height:100%;z-index:5;cursor:pointer;border-top-left-radius:14px;border-bottom-left-radius:14px;transition:background .15s var(--ease)}.pane-handle:hover{background:oklch(0 0 0/.04)}.pane.flipped .pane-handle{display:none}.pane-main{flex:1 1;display:flex;flex-direction:column;overflow:hidden;min-width:0;padding-left:var(--stack-overlap)}.pane-head{display:flex;align-items:flex-start;gap:12px;padding:26px 22px 14px 14px;flex-shrink:0}.pane-head .meta{flex:1 1;min-width:0}.pane-head h1{font-family:var(--font-serif);font-weight:600;font-size:24px;line-height:1.25;letter-spacing:-.018em;color:var(--ink);margin:0;text-wrap:balance}.tags{display:flex;flex-wrap:wrap;gap:4px 8px;margin-top:10px}.tag{font-family:var(--font-mono);font-size:11px;letter-spacing:.01em;color:var(--ink-mute);-webkit-user-select:none;-moz-user-select:none;user-select:none}.flip-btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;background:transparent;color:var(--ink-faint);width:26px;height:26px;border-radius:6px;display:flex;align-items:center;justify-content:center;cursor:pointer;flex-shrink:0;transition:color .15s var(--ease),transform .2s var(--ease);margin-top:-2px}.flip-btn:hover{color:var(--accent);transform:rotate(-20deg)}.flip-btn svg{width:15px;height:15px}.flip-btn-back{position:absolute;top:18px;right:18px;z-index:3}.pane-body{flex:0 0 auto;padding:14px 24px 28px 16px;scroll-behavior:smooth}.pane-body p{margin:0 0 16px;font-size:16px;line-height:1.7;color:var(--ink);text-wrap:pretty}.pane-body p.lede{font-family:var(--font-serif);font-size:18px;line-height:1.6;color:var(--ink-soft);font-weight:400;letter-spacing:-.005em;margin-bottom:20px}.pane-body h3{font-family:var(--font-sans);font-weight:600;font-size:13px;letter-spacing:.02em;color:var(--ink-soft);margin:26px 0 12px;text-transform:uppercase}.pane-body blockquote{margin:16px 0 20px;padding:0 0 0 14px;border-left:2px solid var(--accent);font-family:var(--font-serif);font-style:italic;font-size:16px;color:var(--ink-soft);line-height:1.6}.pane-body code{font-family:var(--font-mono);font-size:14px;background:oklch(.92 .005 200);padding:1.5px 5px;border-radius:4px;color:var(--ink)}.pane-body ul{margin:0 0 16px;padding-left:1em}.pane-body ul li{font-size:16px;line-height:1.65;margin-bottom:6px}.pane-body ul li::marker{color:var(--ink-faint)}.nlink{display:inline;position:relative;color:var(--accent);font-weight:500;padding:0 1px;text-decoration:none;cursor:pointer;transition:color .15s var(--ease),background .15s var(--ease);background:none}.nlink:hover{background:linear-gradient(180deg,transparent 58%,var(--accent-soft) 58%)}.nlink-inert{cursor:default}@keyframes paneSlideIn{0%{opacity:0;transform:translateX(28px)}to{opacity:1;transform:translateX(0)}}.pane.entering .pane-face.front{animation:paneSlideIn .42s var(--ease) both}.graph-wrap{position:relative;width:100%;height:100%;display:flex;flex-direction:column;background:radial-gradient(circle at 50% 45%,oklch(.96 .005 200) 0,var(--paper-2) 70%)}.graph-head-min{padding:20px 22px 6px}.graph-head-min .kicker{font-family:var(--font-mono);font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-faint)}.graph-svg{flex:1 1;width:100%;min-height:0;display:block;touch-action:none}.graph-svg .edge{fill:none;stroke:var(--rule-2);stroke-width:1;transition:stroke .2s var(--ease),stroke-width .2s var(--ease)}.graph-svg .edge-d1.outgoing{stroke:oklch(.55 .12 40/.55)}.graph-svg .edge-d1.incoming{stroke:oklch(.55 .1 195/.55);stroke-dasharray:3 3}.graph-svg .edge-d2{stroke:var(--ink-faint);stroke-width:.6;opacity:.45}.graph-svg .edge.linked{stroke-width:1.4;opacity:1}.graph-svg .node{cursor:pointer;transition:r .18s var(--ease),fill .18s var(--ease)}.graph-svg .node-center{fill:var(--ink);cursor:default}.graph-svg .node-d1{fill:var(--ink-soft)}.graph-svg .node-d2{fill:var(--ink-faint)}.graph-svg .node.hovered,.graph-svg .node:hover{fill:var(--accent)}.graph-svg .node.dim{opacity:.35}.graph-svg .hover-label-bg{fill:var(--ink);fill-opacity:.95}.graph-svg .hover-label-text{font-family:var(--font-sans);font-size:11px;fill:var(--paper);font-weight:500;letter-spacing:-.005em}.graph-backlinks{flex-shrink:0;padding:10px 22px 16px;border-top:1px solid var(--rule);max-height:38%;overflow-y:auto;scrollbar-width:thin;scrollbar-color:var(--rule-2) transparent}.graph-backlinks .foot-label{font-family:var(--font-mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-faint);margin-bottom:6px;display:flex;align-items:center;gap:8px}.graph-backlinks .foot-label .count{font-feature-settings:"tnum";font-variant-numeric:tabular-nums;color:var(--ink-mute)}.backlink{display:block;text-align:left;width:100%;-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;background:transparent;font-family:var(--font-sans);padding:4px 0;margin:0;cursor:pointer;font-size:13px;color:var(--ink-soft);transition:color .15s var(--ease)}.backlink:hover{color:var(--accent)}.backlink .bl-title{font-weight:500;color:inherit}@media (max-width:780px){:root{--pane-w:calc(100vw - 20px);--stack-overlap:12px;--stage-pad:10px;--pane-gap:12px;--header-h:52px;--rail-h:36px}.stage{overflow-x:hidden;overflow-y:auto}.stage-inner{flex-direction:column;width:100%;min-width:0;row-gap:12px;padding:10px 10px 30vh}.stage-inner:after{display:none}.pane{position:relative;width:100%;height:auto;left:0!important;align-self:stretch;scroll-snap-align:none}.pane-face{min-height:0;max-height:none}.pane-body{overflow-y:visible;overflow-x:visible;flex:0 0 auto}.pane-handle{display:none}.header{padding:0 14px}}.scroll-indicator{flex:0 1 auto;max-width:320px;min-width:80px;display:flex;align-items:center;justify-content:center}.indicator-track{position:relative;height:28px;width:100%;cursor:pointer;display:flex;align-items:center;-webkit-user-select:none;-moz-user-select:none;user-select:none;touch-action:none}.indicator-track:active{cursor:-webkit-grabbing;cursor:grabbing}.indicator-inner{position:relative;width:100%;height:100%;margin:0 10px}.indicator-rail{position:absolute;left:0;right:0;height:1.5px;background:var(--rule);border-radius:2px;top:50%;transform:translateY(-50%);pointer-events:none}.indicator-node{position:absolute;width:8px;height:8px;top:50%;margin-left:-4px;margin-top:-4px;border-radius:50%;background:var(--ink-faint);border:0;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;padding:0;z-index:1;transition:background .15s var(--ease),transform .15s var(--ease)}.indicator-node:hover{background:var(--ink-soft);transform:scale(1.6)}.indicator-marker{position:absolute;width:14px;height:14px;top:50%;margin-left:-7px;margin-top:-7px;border-radius:50%;background:var(--accent);z-index:2;pointer-events:none;box-shadow:0 0 0 3px var(--bg);transition:left .2s var(--ease)}.indicator-track:active .indicator-marker{transition:none}@media (max-width:780px){.scroll-indicator{display:none}}.scroll-top{display:none}@media (max-width:780px){.scroll-top{position:fixed;bottom:18px;right:14px;z-index:60;display:flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:50%;background:oklch(from var(--paper) l c h/.85);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);color:var(--ink-soft);border:1px solid var(--rule);box-shadow:0 6px 20px -8px var(--shadow-card),0 0 0 1px oklch(0 0 0/.02);cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;opacity:0;pointer-events:none;transform:translateY(8px);transition:opacity .2s var(--ease),transform .2s var(--ease),color .15s var(--ease)}.scroll-top.visible{opacity:1;pointer-events:auto;transform:translateY(0)}.scroll-top svg{width:16px;height:16px}.scroll-top:active{transform:scale(.94)}.scroll-top:hover{color:var(--accent)}}.hover-preview{position:fixed;z-index:50;width:280px;background:var(--paper);border:1px solid var(--rule-2);border-radius:10px;padding:12px 14px;box-shadow:0 18px 40px -16px oklch(.2 .03 200/.3);pointer-events:none;transition:opacity .12s var(--ease),transform .12s var(--ease);transform-origin:top left}.hover-preview .hp-title{font-family:var(--font-serif);font-weight:500;font-size:15px;color:var(--ink);margin-bottom:5px;letter-spacing:-.01em;line-height:1.25}.hover-preview .hp-sub{font-size:12.5px;line-height:1.45;color:var(--ink-mute);display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.overlay{position:fixed;inset:0;background:oklch(.2 .02 200/.32);z-index:100;display:flex;align-items:center;justify-content:center;padding:40px;animation:fadeIn .2s var(--ease) both}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.overlay-panel{width:100%;max-width:560px;background:var(--paper);border:1px solid var(--rule-2);border-radius:14px;box-shadow:0 30px 80px -20px oklch(.2 .03 200/.4);max-height:80vh;display:flex;flex-direction:column}.overlay-head{padding:16px 20px 12px;border-bottom:1px solid var(--rule);display:flex;align-items:center;gap:12px}.overlay-head h2{margin:0;font-family:var(--font-serif);font-weight:500;font-size:17px;letter-spacing:-.01em;flex:1 1}.overlay-head .close{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;background:transparent;color:var(--ink-mute);font-size:13px;cursor:pointer;font-family:var(--font-mono);padding:4px 8px;border-radius:6px}.overlay-head .close:hover{background:var(--bg-deep);color:var(--ink)}.overlay-body{padding:8px;overflow-y:auto}.index-item{display:flex;align-items:baseline;gap:14px;padding:12px 14px;border-radius:8px;cursor:pointer;text-align:left;width:100%;-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;background:transparent;font:inherit;color:inherit}.index-item:hover{background:var(--bg-deep)}.index-item .ix-num{font-family:var(--font-mono);font-size:11px;color:var(--ink-mute);letter-spacing:.04em;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;min-width:24px}.index-item .ix-title{font-family:var(--font-serif);font-weight:500;font-size:16px;color:var(--ink);letter-spacing:-.01em;flex:1 1}.index-item .ix-meta{font-family:var(--font-mono);font-size:10.5px;color:var(--ink-faint);letter-spacing:.04em}