@import"https://cdn.jsdelivr.net/gh/orioncactus/pretendard@v1.3.9/dist/web/variable/pretendardvariable-dynamic-subset.min.css";@import"https://cdn.jsdelivr.net/npm/@fontsource/jetbrains-mono@5/index.css";:root{--ink: #161513;--ink-2: #312d2a;--muted: #6b6762;--faint: #a19c95;--paper: #fbf9f8;--paper-2: #f1efed;--card: #ffffff;--rule: #e4e1dd;--rule-2: #cfcac3;--red: #c74634;--red-2: #a63a2a;--red-fill: #fbedea;--hi: #fff1c2;--hi-2: #f7c948;--mem: #e8eef7;--disk: #f8ece0;--v1: #1f6fa6;--v1-fill: #e4eef7;--v1-soft: #f1f6fb;--v2: #1c7c66;--v2-fill: #e1f1ec;--v2-soft: #f0f8f5;--v3: #c74634;--v3-fill: #fbe9e5;--v3-soft: #fdf4f2;--v0: #6b6762;--v0-fill: #eceae6;--v0-soft: #f5f4f2;--v4: #6a4c9c;--v4-fill: #ece6f5;--v4-soft: #f6f3fa;--v5: #a8640f;--v5-fill: #f6ebdb;--v5-soft: #fbf6ee;--v6: #a8466e;--v6-fill: #f5e4ec;--v6-soft: #faf2f6;--stuck: #7a5cb8;--stuck-fill: #efeaf8;--sans: "Pretendard Variable", Pretendard, "Malgun Gothic", "Apple SD Gothic Neo", "Noto Sans KR", system-ui, sans-serif;--mono: "JetBrains Mono", "D2Coding", Consolas, "Cascadia Mono", "Noto Sans Mono CJK KR", monospace;--w: 920px;--r: 6px;--shadow: 0 1px 2px rgba(22, 21, 19, .05), 0 4px 14px -8px rgba(22, 21, 19, .14);--shadow-2: 0 2px 4px rgba(22, 21, 19, .06), 0 12px 28px -12px rgba(22, 21, 19, .2)}*{box-sizing:border-box}html{scroll-behavior:smooth}html,body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--sans);font-size:16px;line-height:1.75;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;word-break:keep-all;overflow-wrap:anywhere}a{color:var(--red);text-decoration:none;text-underline-offset:.18em}a:hover{text-decoration:underline}::selection{background:#f9d6cf}code,pre,.mono{font-family:var(--mono);font-size:.88em;font-feature-settings:"liga" 0,"calt" 0;font-variant-ligatures:none}code{background:var(--paper-2);border:1px solid var(--rule);padding:.05em .38em;border-radius:5px;color:var(--ink-2)}pre{background:var(--paper-2);border:1px solid var(--rule);border-radius:8px;padding:.9em 1.1em;overflow-x:auto;line-height:1.55}pre code{background:none;border:0;padding:0;color:var(--ink)}h1,h2,h3,h4{line-height:1.28;font-weight:700;margin:1.7em 0 .6em;letter-spacing:-.012em}h1{font-size:2rem;margin-top:.5em}h2{font-size:1.32rem;margin-top:2.2em;padding-bottom:.35em;border-bottom:1px solid var(--rule)}h2:before{content:"";display:inline-block;width:.5em;height:.5em;border-radius:1px;background:var(--vc, var(--red));margin-right:.55em;vertical-align:.1em}h3{font-size:1.08rem}p{margin:.75em 0}b,strong{font-weight:650}ol,ul{padding-left:1.4em}li{margin:.25em 0}table{border-collapse:collapse;width:100%;margin:1.1em 0;font-size:.94em;border:1px solid var(--rule);border-radius:8px;overflow:hidden}th,td{padding:.5em .75em;text-align:left;vertical-align:top;border-top:1px solid var(--rule)}thead th{background:var(--paper-2);font-weight:650;border-top:0;color:var(--ink-2);font-size:.92em;letter-spacing:.01em}tbody tr:nth-child(2n) td{background:#fbfaf7}blockquote{margin:1.2em 0;padding:.8em 1.2em;border-left:4px solid var(--vc, var(--red));background:var(--vf, var(--paper-2));border-radius:0 8px 8px 0;font-size:1.04em}hr{border:0;border-top:1px solid var(--rule);margin:2.4em 0}small,.muted{color:var(--muted)}small{font-size:.88em}input{font:inherit}.top{position:sticky;top:0;z-index:10;background:var(--ink-2);border-bottom:3px solid var(--red)}.top .in{max-width:var(--w);margin:0 auto;padding:.65em 20px;display:flex;gap:1.6em;align-items:center;flex-wrap:wrap}.top .brand{font-weight:700;color:#fff;letter-spacing:-.01em;display:inline-flex;align-items:center;gap:.6em}.top .brand:hover{text-decoration:none}.top .brand:before{content:"";width:1.1em;height:1.1em;border-radius:2px;background:var(--red);box-shadow:inset 0 0 0 2px #fff3,0 0 0 1px #0004}.top nav{display:flex;gap:.1em;flex-wrap:wrap;margin-left:auto}.top nav a{color:#d9d4cd;padding:.3em .65em;border-radius:4px;font-size:.93em;font-weight:500;border-bottom:2px solid transparent}.top nav a:hover{background:#ffffff14;text-decoration:none;color:#fff}.top nav a.active{color:#fff;border-bottom-color:var(--red);background:#ffffff10;font-weight:650}main{max-width:var(--w);margin:0 auto;padding:1.2em 20px 5em}footer{border-top:1px solid var(--rule);margin-top:4em;background:var(--ink-2)}footer .in code{background:#ffffff14;border-color:#fff2;color:#f3efe9}footer .in{max-width:var(--w);margin:0 auto;padding:1.4em 20px;color:#c9c3bb;font-size:.88em}.crumbs{color:var(--muted);font-size:.88em;margin-top:1.2em}.crumbs a{color:var(--muted)}.v1{--vc: var(--v1);--vf: var(--v1-fill);--vs: var(--v1-soft)}.v2{--vc: var(--v2);--vf: var(--v2-fill);--vs: var(--v2-soft)}.v3{--vc: var(--v3);--vf: var(--v3-fill);--vs: var(--v3-soft)}.v0{--vc: var(--v0);--vf: var(--v0-fill);--vs: var(--v0-soft)}.v4{--vc: var(--v4);--vf: var(--v4-fill);--vs: var(--v4-soft)}.v5{--vc: var(--v5);--vf: var(--v5-fill);--vs: var(--v5-soft)}.v6{--vc: var(--v6);--vf: var(--v6-fill);--vs: var(--v6-soft)}.tag{display:inline-block;font-size:.76em;font-weight:600;padding:.05em .55em;border:1px solid var(--vc, var(--v0));color:var(--vc, var(--v0));border-radius:999px;line-height:1.7;white-space:nowrap;background:var(--card)}.tag.fill{background:var(--vf, var(--v0-fill));border-color:transparent}a.tag:hover{text-decoration:none;filter:brightness(.95)}.dot{display:inline-block;width:.65em;height:.65em;border-radius:50%;background:var(--vc, var(--v0));margin-right:.4em;vertical-align:0}.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:1em;margin:1.2em 0}.card{position:relative;border:1px solid var(--rule);border-radius:var(--r);padding:1.1em 1.25em 1.05em;background:var(--card);box-shadow:var(--shadow);transition:transform .15s ease,box-shadow .15s ease}.card:before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;border-radius:var(--r) 0 0 var(--r);background:var(--vc, var(--red))}.card:hover{transform:translateY(-2px);box-shadow:var(--shadow-2)}.card h3{margin:0 0 .45em;font-size:1.06rem}.card h3 a{color:var(--ink)}.card .goal{color:var(--muted);font-size:.92em;margin:.3em 0}.card.static:hover{transform:none;box-shadow:var(--shadow)}.box{border:1px solid var(--rule);border-radius:var(--r);margin:1.4em 0;background:var(--card);box-shadow:var(--shadow);overflow:hidden}.box>.title{display:flex;align-items:center;gap:.55em;padding:.5em 1em;font-weight:650;background:var(--vf, var(--v1-fill));color:var(--vc, var(--v1));border-bottom:1px solid var(--rule);font-size:.96em}.box>.title:before{content:"■";font-size:.7em;opacity:.8}.box>.body{padding:.6em 1.05em .5em}.box>.body>:first-child{margin-top:.3em}.box.work>.title:before{content:"✎";font-size:1em}.box.observe{--vc: var(--v0);--vf: var(--v0-fill)}.box.observe>.title:before{content:"◎";font-size:1em}.box.stuck{--vc: var(--stuck);--vf: var(--stuck-fill)}.box.stuck>.title:before{content:"?";font-weight:800;width:1.3em;height:1.3em;border-radius:50%;background:var(--stuck);color:#fff;display:inline-flex;align-items:center;justify-content:center;font-size:.8em}.box.predict{--vc: #8a5a00;--vf: #fff3d6;background:#fffcf4}.box.predict>.title:before{content:"→"}.box.predict details{margin:.2em 0 .4em}.box.predict summary{cursor:pointer;font-weight:650;color:var(--vc);list-style:none;display:inline-flex;align-items:center;gap:.4em}.box.predict summary:before{content:"▸";transition:transform .15s}.box.predict details[open] summary:before{transform:rotate(90deg)}.box.predict summary::-webkit-details-marker{display:none}.box .box{box-shadow:none}.stepper{display:grid;grid-template-columns:repeat(6,1fr);gap:.5em;margin:1.2em 0;position:relative}.stepper button,.stepper a{position:relative;border:1px solid var(--rule-2);background:var(--card);padding:.75em .3em .6em;cursor:pointer;font:inherit;border-radius:10px;line-height:1.3;text-align:center;color:var(--ink);box-shadow:var(--shadow);transition:transform .12s,box-shadow .12s,border-color .12s}.stepper button:hover{transform:translateY(-1px);box-shadow:var(--shadow-2);text-decoration:none}.stepper button.on,.stepper a.on{background:var(--red-fill);border-color:var(--red);border-width:1px;box-shadow:0 0 0 3px #c7463422,var(--shadow)}.stepper .k{display:block;font-size:1.35em;font-weight:700;line-height:1.2}.stepper .t{display:block;font-size:.88em;color:var(--ink-2)}.switch{display:inline-flex;border:1px solid var(--rule-2);border-radius:999px;overflow:hidden;margin:.6em 0;background:var(--card);padding:3px;gap:3px}.switch button{border:0;background:transparent;padding:.3em 1em;cursor:pointer;font:inherit;border-radius:999px;color:var(--muted);font-weight:550}.switch button.on{background:var(--red);color:#fff}.fnlist{display:flex;flex-wrap:wrap;gap:.45em;align-items:center;row-gap:.5em}.fn{font-family:var(--mono);font-size:.86em;border:1px solid var(--vc, var(--v0));background:var(--vf, var(--v0-fill));color:var(--ink);padding:.05em .5em;border-radius:6px}.fn.ghost{opacity:.32}.arrow{color:var(--faint)}.plan{display:grid;grid-template-columns:1fr 1fr;gap:1.2em}@media(max-width:720px){.plan{grid-template-columns:1fr}.stepper{grid-template-columns:repeat(3,1fr)}}.figtabs{display:flex;gap:.4em;flex-wrap:wrap;margin:1em 0 .6em}.figtabs button,.filters button{border:1px solid var(--rule-2);background:var(--card);padding:.3em .85em;cursor:pointer;font:inherit;font-size:.92em;border-radius:999px;color:var(--ink-2)}.figtabs button:hover,.filters button:hover{background:var(--paper-2)}.figtabs button.on,.filters button.on{background:var(--ink-2);color:#fff;border-color:var(--ink-2)}.filters{display:flex;gap:.4em;flex-wrap:wrap;margin:.4em 0 1em;align-items:center}.filters input{padding:.3em .7em;border:1px solid var(--rule-2);border-radius:999px;background:var(--card);min-width:12em}.figwrap{border:1px solid var(--rule);border-radius:var(--r);background:var(--card);padding:.8em;overflow-x:auto;box-shadow:var(--shadow)}svg.fig{width:100%;height:auto;font-family:var(--sans);font-size:13px}svg.fig .box{cursor:pointer;margin:0;border:0;box-shadow:none;overflow:visible}svg.fig .box rect{stroke-width:1;transition:opacity .15s}svg.fig .box.dim rect{opacity:.22}svg.fig .box.dim text{opacity:.3}svg.fig .box.none rect{stroke-dasharray:4 3;fill:#f4f3ef}svg.fig .box.on rect{stroke-width:2.5;filter:drop-shadow(0 2px 3px rgba(0,0,0,.12))}svg.fig text{fill:var(--ink)}svg.fig .sub{fill:var(--muted);font-size:11px}svg.fig .mono{font-family:var(--mono)}.legend{display:flex;gap:1.2em;flex-wrap:wrap;font-size:.88em;margin:.7em 0;color:var(--muted)}.detail{border:1px solid var(--rule);border-radius:var(--r);padding:.8em 1.1em;margin:.9em 0;background:var(--card);min-height:4.2em;box-shadow:var(--shadow)}.detail .code{font-family:var(--mono);font-size:.88em}.growth{display:flex;height:38px;border:1px solid var(--rule-2);border-radius:8px;margin:.9em 0 .3em;overflow:hidden;background:var(--card)}.growth .seg{position:relative;border-right:1px solid #fff;cursor:pointer;transition:filter .12s}.growth .seg:hover{filter:brightness(.9)}.growth .seg span{position:absolute;left:4px;top:9px;font-size:10px;font-weight:600;color:var(--ink-2);white-space:nowrap;overflow:hidden;max-width:100%}.ticks{display:flex;justify-content:space-between;font-size:.8em;color:var(--muted);font-family:var(--mono)}.sec{border:1px solid var(--rule);border-radius:8px;padding:.6em .9em;margin:.55em 0;background:var(--card);border-left:4px solid var(--vc, var(--v0))}.sec .head{display:flex;gap:.7em;align-items:baseline;flex-wrap:wrap}.sec .head .lines{color:var(--muted);font-size:.82em;font-family:var(--mono);margin-left:auto}.chips{display:flex;flex-wrap:wrap;gap:.3em;margin-top:.4em}.chip{font-family:var(--mono);font-size:.78em;padding:.05em .45em;border-radius:5px;border:1px solid var(--vc, var(--v0));background:var(--vf, var(--v0-fill));cursor:pointer;transition:transform .1s}.chip:hover{transform:translateY(-1px)}.chip.const{border-style:dotted}.chip.dim{opacity:.2}.chip.on{outline:2px solid var(--red)}.bars{display:grid;grid-template-columns:6em 1fr 3em;gap:.35em .7em;align-items:center;font-size:.9em}.bars .bar{height:12px;background:var(--vc, var(--v0));border-radius:3px}.codebox{border:1px solid var(--rule);border-radius:var(--r);margin:1.2em 0;overflow:hidden;box-shadow:var(--shadow);background:var(--card)}.codebox .head{display:flex;justify-content:space-between;gap:1em;padding:.4em .9em;background:var(--paper-2);border-bottom:1px solid var(--rule);font-size:.86em;flex-wrap:wrap;color:var(--ink-2)}.codebox .head code{background:none;border:0;padding:0;color:var(--ink);font-weight:600}.codebox pre{border:0;margin:0;background:var(--card);border-radius:0;padding:.6em 0}.codebox .line{display:block;min-height:1.55em;white-space:pre;padding:0 1em 0 .4em;border-left:3px solid transparent}.codebox .ln{display:inline-block;width:3.6em;color:var(--faint);text-align:right;padding-right:1.1em;-webkit-user-select:none;user-select:none;font-size:.9em}.codebox .mark{background:var(--hi);border-left-color:var(--hi-2)}.progress{height:8px;border-radius:999px;background:var(--paper-2);border:1px solid var(--rule);margin:.5em 0 .2em;overflow:hidden}.progress i{display:block;height:100%;background:var(--vc, var(--v1));border-radius:999px}.status{font-size:.74em;font-weight:600;padding:.05em .6em;border-radius:999px;border:1px solid var(--rule-2);color:var(--muted);background:var(--card)}.status.done{border-color:transparent;color:var(--v2);background:var(--v2-fill)}.status.reviewing{border-color:transparent;color:var(--stuck);background:var(--stuck-fill)}.units{list-style:none;padding:0;margin:.5em 0}.units li{display:grid;grid-template-columns:5.5em 1fr auto;gap:.9em;padding:.6em 0;border-bottom:1px solid var(--rule);align-items:baseline}.units li:last-child{border-bottom:0}.units li .q{color:var(--muted);font-size:.9em}.kv{display:grid;grid-template-columns:9.5em 1fr;gap:.45em 1.2em;border:1px solid var(--rule);border-radius:var(--r);padding:.9em 1.1em;background:var(--card)}.kv dt{font-weight:650;color:var(--ink-2)}.kv dd{margin:0}.two{display:grid;grid-template-columns:1fr 1fr;gap:1.6em}@media(max-width:760px){.two,.kv{grid-template-columns:1fr}}.hero{position:relative;border:1px solid var(--rule);border-radius:14px;padding:1.8em 2em 1.6em;margin:1.4em 0 1.8em;background:linear-gradient(180deg,#ffffff,var(--paper-2));box-shadow:var(--shadow);overflow:hidden}.hero:after{content:"";position:absolute;right:-60px;top:-60px;width:220px;height:220px;border-radius:50%;background:radial-gradient(closest-side,#f9d6cfaa,transparent 70%);pointer-events:none}.hero h1{margin:0 0 .5em;font-size:2.1rem;letter-spacing:-.02em}.hero .lead{font-size:1.04em;color:var(--ink-2)}.hero .sql{font-family:var(--mono);font-size:1.12em;background:var(--ink-2);color:#f3efe9;border-radius:8px;padding:.55em 1em;display:inline-block;margin:.3em 0 .6em;box-shadow:var(--shadow)}.hero .sql .kw{color:#ff9d8a}.hero .stats{display:flex;gap:1.6em;flex-wrap:wrap;margin-top:1em;padding-top:1em;border-top:1px dashed var(--rule-2)}.hero .stat b{display:block;font-size:1.4em;letter-spacing:-.02em;line-height:1.1}.hero .stat small{color:var(--muted)}.num{display:inline-flex;align-items:center;justify-content:center;width:1.7em;height:1.7em;border-radius:3px;background:var(--red);color:#fff;font-weight:700;font-size:.85em;margin-right:.5em;flex:none}.h-step{display:flex;align-items:center;gap:.6em}.box.note>.title:before{content:none}.plan table td:last-child{text-align:right;width:5.5em;font-weight:600}.box .fnlist{margin:.2em 0 .4em}.term{border-radius:8px;overflow:hidden;margin:.8em 0;box-shadow:0 8px 24px -12px #16151373;border:1px solid #2a2725}.term .bar{display:flex;align-items:center;gap:.8em;padding:.45em .9em;background:#2d2a27;color:#a39d95;font-size:.8em}.term .dots{display:inline-flex;gap:6px}.term .dots i{width:11px;height:11px;border-radius:50%;background:#5b5652;display:inline-block}.term .dots i:nth-child(1){background:#d96b5f}.term .dots i:nth-child(2){background:#e0b04f}.term .dots i:nth-child(3){background:#6fb96a}.term pre{margin:0;border:0;border-radius:0;background:#1e1c1a;color:#d9d3cb;padding:1em 1.2em 1.1em;font-size:.84em;line-height:1.6}.term .cmd{color:#fff;font-weight:600}.term .ps{color:#8a847c;font-weight:400}.term .prompt{color:#8a847c}.term .in{color:#fff;font-weight:600}.term .out{color:#cfc8bf}.term .dim{color:#6f6961}.term .err{color:#f0917f}.cb{border:1px solid var(--rule);border-radius:8px;overflow:hidden;margin:.6em 0 .9em;background:var(--card)}.cb-bar{display:flex;justify-content:space-between;align-items:center;padding:.25em .8em;background:var(--paper-2);border-bottom:1px solid var(--rule);font-size:.78em;color:var(--muted);font-weight:600;letter-spacing:.02em}.cb-bar button{font:inherit;font-size:.95em;border:1px solid var(--rule-2);background:var(--card);color:var(--ink-2);border-radius:999px;padding:.05em .7em;cursor:pointer}.cb-bar button:hover{border-color:var(--red);color:var(--red)}.cb pre{margin:0;border:0;border-radius:0;background:var(--card);padding:.7em 1em;font-size:.84em;line-height:1.5}.cb.lang-bash pre{background:#f6f4f1}.cb.lang-text pre{background:#fffdf7;color:var(--ink-2)}.cb.lang-text .cb-bar{background:#fbf5e3;color:#8a5a00}.box.work .edit{margin:.4em 0 .6em;padding-left:.9em;border-left:2px solid var(--rule)}.box.work .edit p{margin:.45em 0}.box.work.done{--vc: var(--v2);--vf: var(--v2-fill)}.box.work.done>.title:before{content:"✔"}.umap{border:1px solid var(--rule);border-radius:var(--r);background:var(--card);padding:.7em .9em .6em;margin:1em 0 .4em;box-shadow:var(--shadow)}.umap-head{display:flex;justify-content:space-between;font-size:.9em;margin-bottom:.45em}.umap-strip{list-style:none;padding:0;margin:0;display:flex;gap:.35em;flex-wrap:wrap}.umap-strip li a{display:block;border:1px solid var(--rule-2);border-radius:6px;padding:.25em .55em;color:var(--ink-2);background:var(--paper-2);font-size:.82em;line-height:1.3;min-width:6.5em}.umap-strip li a:hover{text-decoration:none;border-color:var(--red)}.umap-strip li a .k{display:block;font-family:var(--mono);font-size:.85em;color:var(--muted)}.umap-strip li a .t{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:11em}.umap-strip li.done a{background:var(--v2-fill);border-color:transparent}.umap-strip li.on a{background:var(--red-fill);border-color:var(--red);color:var(--ink);font-weight:650}.umap-now{margin-top:.55em;font-size:.92em;border-top:1px dashed var(--rule);padding-top:.45em}.umap-now .tag{margin-right:.3em}.sublist td .q{color:var(--muted);font-size:.9em;margin-top:.15em}.sublist .tag{white-space:normal}.top .in{max-width:1200px}.top nav .nav-sep{width:1px;align-self:stretch;background:#ffffff30;margin:.3em .4em}.top nav a.nav-space{color:#fff;font-weight:600}.top nav a.nav-space:before{content:"";display:inline-block;width:.6em;height:.6em;border-radius:50%;margin-right:.4em;vertical-align:.02em;background:conic-gradient(var(--v4) 0 33%,var(--v5) 0 66%,var(--v6) 0);box-shadow:0 0 0 1.5px #fff5}.space-hero{background:linear-gradient(135deg,#ffffff 0%,var(--paper-2) 58%,#f2edf8 100%)}.space-hero:after{background:radial-gradient(closest-side,#d8cbee99,transparent 70%)}.kicker{margin:0 0 .2em;font-size:.78em;font-weight:750;letter-spacing:.16em;color:var(--red)}.logo-row{display:flex;flex-wrap:wrap;gap:6px;margin:1.1em 0 .1em}.space-q{font-size:1.04em;font-weight:650;color:var(--ink-2);margin:.55em 0}.space-q:before{content:"Q.";color:var(--vc, var(--red));font-weight:800;margin-right:.4em}.flip{display:grid;grid-template-columns:1fr auto 1fr;gap:.9em;align-items:center;margin:.7em 0 .8em;padding:.7em 1em;background:var(--vs, var(--paper-2));border:1px solid var(--rule);border-radius:var(--r);font-size:.94em;line-height:1.55}.flip-arrow{font-size:1.6em;font-weight:700;color:var(--vc, var(--red));line-height:1}@media(max-width:640px){.flip{grid-template-columns:1fr}.flip-arrow{justify-self:center;transform:rotate(90deg)}}.mini-units{list-style:none;padding:0;margin:.5em 0 0;font-size:.92em}.mini-units li{margin:.2em 0}.mini-units b{display:inline-block;min-width:1.7em;color:var(--vc);font-variant-numeric:tabular-nums}.unitcard{margin:1em 0}.unitcard h3{display:flex;flex-wrap:wrap;align-items:baseline;gap:.5em}.unit-no{font-weight:800;color:var(--vc);font-variant-numeric:tabular-nums}svg.spacemap{font-size:14px}svg.spacemap .snode{cursor:pointer;outline:none;transition:opacity .15s}svg.spacemap .snode:hover>rect:first-of-type,svg.spacemap .snode:focus-visible>rect:first-of-type{filter:drop-shadow(0 3px 6px rgba(22,21,19,.2))}svg.spacemap .snode.dim{opacity:.22}svg.spacemap .snode-t{font-size:14.5px;font-weight:700;fill:var(--ink)}svg.spacemap .snode-s{font-size:12px;fill:var(--muted)}svg.spacemap .snode-mark{font-size:7.5px;font-weight:800;fill:var(--ink-2)}svg.spacemap .center-t{font-size:17px;font-weight:800;fill:#fff}svg.spacemap .center-s{font-size:12.5px;fill:#d9d4cd}svg.spacemap .center-m{font-size:11.5px;fill:#ff9d8a;font-family:var(--mono)}.ci-tile{display:inline-flex;align-items:center;justify-content:center;flex:none;border-radius:22%;vertical-align:middle;box-shadow:inset 0 0 0 1px #00000017}.ci-tile.ci-text{background:var(--paper-2);color:var(--ink-2);font-weight:800;letter-spacing:-.03em;line-height:1;box-shadow:inset 0 0 0 1px var(--rule-2)}.ci-chips{display:inline-flex;flex-wrap:wrap;gap:.35em;vertical-align:middle}.ci-chip{display:inline-flex;align-items:center;gap:.4em;padding:.12em .65em .12em .15em;border:1px solid var(--rule);border-radius:999px;background:var(--card);color:var(--ink-2);font-size:.86em;line-height:1.55;white-space:nowrap}.ci-chip:hover{text-decoration:none;background:var(--paper-2);border-color:var(--rule-2)}.ci-chip .ci-tile{border-radius:50%}.ci-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(285px,1fr));gap:1em;margin:1em 0}.ci-card{display:flex;flex-direction:column;gap:.55em;padding:1em 1.1em .8em;border:1px solid var(--rule);border-radius:var(--r);background:var(--card);box-shadow:var(--shadow);scroll-margin-top:5em}.ci-head{display:flex;align-items:center;gap:.8em}.ci-name b{display:block;font-size:1.05em;line-height:1.3}.ci-name small{color:var(--muted)}.ci-note{margin:0;font-size:.85em;color:var(--muted);line-height:1.55}.ci-kv{display:grid;grid-template-columns:5.4em 1fr;gap:.3em .7em;margin:0;font-size:.87em;line-height:1.55}.ci-kv dt{color:var(--muted);font-weight:600}.ci-kv dd{margin:0}.ci-lic{list-style:none;margin:.3em 0 .1em;padding:0 0 0 .6em;border-left:2px solid var(--rule-2)}.ci-lic li{margin:.1em 0;color:var(--ink-2)}.ci-lic .mono{color:var(--muted);margin-right:.35em}.ci-foot{display:flex;flex-wrap:wrap;align-items:center;gap:.35em;margin-top:auto;padding-top:.6em;border-top:1px dashed var(--rule)}.ci-links{display:inline-flex;gap:.8em;margin-left:auto;font-size:.8em}.tm-note{margin-top:1.4em;line-height:1.6}.tline{position:relative;list-style:none;margin:1em 0 1.4em;padding:0}.tline:before{content:"";position:absolute;left:4.75em;top:.6em;bottom:.6em;width:2px;background:var(--rule)}.tline li{--tl: var(--ink-2);display:grid;grid-template-columns:3.9em 1.7em 1fr;align-items:start;margin:0;padding:.3em 0}.tl-year{padding-top:.12em;text-align:right;font-family:var(--mono);font-size:.9em;font-weight:700;color:var(--ink-2)}.tl-dot{position:relative;z-index:1;width:.8em;height:.8em;margin:.5em auto 0;border-radius:50%;background:var(--tl);box-shadow:0 0 0 3px var(--paper)}.tl-body{display:flex;flex-wrap:wrap;align-items:center;gap:.35em .55em}.tl-text{color:var(--ink)}.strategies{display:grid;grid-template-columns:repeat(auto-fit,minmax(275px,1fr));gap:1em;margin:1em 0}.strat{--vc: var(--ink-2);display:flex;flex-direction:column}.strat h3{display:flex;align-items:center}.strat p{margin:.35em 0}.strat .who{margin:0 0 .3em;font-size:.86em;font-weight:650;color:var(--red)}.strat .trade{font-size:.87em}.strat .ci-chips{margin-top:auto;padding-top:.4em}figure.diagram{margin:1.5em 0;padding:1em 1em .7em;border:1px solid var(--rule);border-radius:var(--r);background:var(--card);box-shadow:var(--shadow)}.diagram-svg{overflow-x:auto;text-align:center}.diagram-svg svg{max-width:100%;height:auto}.diagram-src{margin:0;font-size:.8em;white-space:pre}.diagram figcaption{margin-top:.6em;text-align:center;font-size:.88em;color:var(--muted)}.diagram-code{margin-top:.45em;font-size:.85em}.diagram-code summary{cursor:pointer;color:var(--muted)}.diagram-code pre{margin:.45em 0 0;font-size:.82em}table.ddia td:nth-child(3){min-width:11em}svg.arch{min-width:720px}svg.arch text{fill:var(--ink)}svg.arch .rl{font-size:12.5px;font-weight:600;fill:var(--ink-2)}svg.arch .rl-b{font-size:13.5px;font-weight:700;fill:var(--ink)}svg.arch .an{font-size:13.5px;font-weight:650}svg.arch .ae{font-size:12px;fill:#3d3a36}svg.arch .as{font-size:11.5px;fill:var(--muted)}svg.arch .mono{font-family:var(--mono)}svg.arch .fl{font-size:11.5px;fill:var(--ink-2);paint-order:stroke;stroke:#fff;stroke-width:4px;stroke-linejoin:round;cursor:default}svg.arch .fl.lit{fill:var(--red);font-weight:700}svg.arch .flb{fill:#fff;fill-opacity:.94}svg.arch .anote{font-size:12.5px;font-weight:700;paint-order:stroke;stroke:#fff;stroke-width:4px;stroke-linejoin:round}svg.arch .bn{font-size:11px;font-weight:700;fill:#fff}svg.arch .ab{cursor:pointer;outline:none}svg.arch .ab:focus-visible rect{stroke:var(--red);stroke-width:2.4}svg.arch .ab.on rect{filter:drop-shadow(0 2px 3px rgba(0,0,0,.14))}.arch-legend{display:flex;flex-wrap:wrap;gap:.45em 1.2em;font-size:.88em;color:var(--ink-2);margin:.6em 0 .8em}.arch-legend>span{display:inline-flex;align-items:center;gap:.4em}.arch-legend.compact{font-size:.8em;color:var(--muted);gap:.3em 1em}.arch-meta{display:flex;flex-wrap:wrap;gap:.4em;align-items:center}.arch-steps{padding-left:0;list-style:none}.arch-steps li{display:flex;gap:.6em;padding:.35em .6em;border-radius:8px;margin:.15em 0;cursor:default;outline:none}.arch-steps li.on,.arch-steps li:focus-visible{background:#fbe9e6}.arch-n{font-weight:700;color:var(--red);min-width:1.2em}.hi-dot{display:inline-block;width:.8em;height:.8em;border-radius:3px;background:#f6d860;border:1px solid #8a6d00;margin:0 .4em 0 .2em;vertical-align:-.05em}.arch-hi .title{background:#fff3c4!important;color:var(--ink)!important}table.arch-compare tr.on td{background:#fff8de}table.arch-commit td:first-child{white-space:nowrap}.arch-sys{display:inline-flex;align-items:center;gap:.45em;font-weight:600}.arch-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:.8em;margin:.6em 0 1.2em}.arch-card{display:flex;flex-direction:column;gap:.55em;border:1px solid var(--rule);border-top:3px solid var(--vc, var(--ink-2));border-radius:var(--r);background:var(--card);padding:.8em .95em;color:var(--ink);text-decoration:none;box-shadow:var(--shadow);transition:transform .12s}.arch-card:hover{transform:translateY(-2px);text-decoration:none}.arch-card-head{display:flex;gap:.6em;align-items:flex-start}.arch-card-head b{display:block;font-size:1.02em}.arch-card-head small{display:block;color:var(--muted);line-height:1.5}.arch-card-hi{font-size:.86em;color:var(--ink-2)}.arch-card-units{display:flex;gap:.3em;flex-wrap:wrap}.figwrap.arch-wrap{width:min(1180px,calc(100vw - 48px));position:relative;left:50%;transform:translate(-50%);box-sizing:border-box}@media(max-width:968px){.figwrap.arch-wrap{width:auto;left:auto;transform:none}}.arch-links{display:inline-flex;flex-wrap:wrap;gap:.3em;vertical-align:middle}.unit-pages{list-style:none;padding-left:0}.unit-pages li{display:flex;gap:.8em;align-items:flex-start;padding:.55em 0;border-bottom:1px solid var(--rule)}.unit-page-no{flex:none;width:1.8em;height:1.8em;border-radius:50%;background:var(--vf, var(--paper-2));color:var(--vc, var(--ink-2));display:inline-flex;align-items:center;justify-content:center;font-weight:700;font-variant-numeric:tabular-nums}.lab-code .ln{display:inline-block;min-width:2.2em;margin-right:1em;color:#8a847c;text-align:right;-webkit-user-select:none;user-select:none}.lab-code .ln-gap{color:#8a847c}.lab-parts{margin:.3em 0 .6em}.flip-box{border:1px solid var(--rule);border-radius:var(--r);background:var(--card);padding:.8em 1em .4em;margin:1em 0;box-shadow:var(--shadow)}.flip-box .flip{margin:0}.flip-p1{margin:.5em 0 .2em}.arch-block{margin:1.2em 0}.arch-cap{font-size:.92em;color:var(--ink-2)}.ddia-read{background:var(--paper-2);border-radius:8px;padding:.6em .9em}
