:root{color:#202c35;font-synthesis:none;background:#f4f6f4;font-family:DM Sans,PingFang SC,Microsoft YaHei,sans-serif}*{box-sizing:border-box}html,body,#root{width:100%;height:100%;margin:0;overflow:hidden}button,input{font:inherit}button{cursor:pointer}.app{height:100dvh;display:flex;overflow:hidden}.workspace{background:#f7f8f6;flex-direction:column;flex:1;min-width:0;display:flex}.topbar{background:#fff;border-bottom:1px solid #e7ebe7;flex:none;justify-content:space-between;align-items:center;gap:16px;height:62px;padding:0 28px;display:flex}.brand{letter-spacing:.02em;align-items:center;gap:11px;font-size:17px;font-weight:700;display:flex}.brand-icon{color:#d9edba;background:#213d36;border-radius:9px;place-items:center;width:31px;height:31px;font-size:23px;display:grid}.brand-divider{background:#dce2dd;width:1px;height:19px;margin:0 4px}.brand-sub{color:#8a9690;font-size:12px;font-weight:400}.topbar-actions{align-items:center;gap:14px;display:flex}.top-status{color:#899690;font-size:12px}.top-status i{background:#8fbf84;border-radius:50%;width:7px;height:7px;margin-right:5px;display:inline-block}.sample-menu{position:relative}.sample-trigger{color:#5f7164;background:#fbfcfa;border:1px solid #e1e7e1;border-radius:8px;align-items:center;gap:8px;padding:8px 12px;font-size:12px;display:inline-flex}.sample-trigger:disabled{opacity:.65;cursor:default}.sample-dropdown{z-index:20;background:#fff;border:1px solid #e4e9e3;border-radius:10px;gap:2px;min-width:220px;padding:6px;display:grid;position:absolute;top:calc(100% + 6px);right:0;box-shadow:0 10px 30px #304b3518}.sample-dropdown button{text-align:left;color:#2c3a31;background:0 0;border:0;border-radius:7px;padding:10px 12px;font-size:12px}.sample-dropdown button:hover,.sample-dropdown button.selected{background:#f3f7f0}.sample-dropdown .sample-clear{color:#7d8b80;border-top:1px solid #eef1ed;border-radius:0 0 7px 7px;margin-top:4px}.eyebrow,.side-kicker{letter-spacing:.14em;color:#91a097;font-size:10px;font-weight:700}.eyebrow span{color:#c4cdc6;margin:0 5px}.lesson-bar{background:#fff;border:1px solid #e4e9e3;border-radius:14px;flex:none;margin:14px 24px 0;padding:16px 20px;box-shadow:0 4px 18px #304b3508}.lesson-bar.empty{padding:18px 20px}.lesson-bar-main{justify-content:space-between;align-items:flex-start;gap:24px;display:flex}.lesson-bar-title{flex:1;min-width:0}.lesson-bar-title h1{letter-spacing:-.03em;margin:8px 0 4px;font-size:20px}.lesson-bar-title h2{color:#355a46;margin:0 0 6px;font-size:14px;font-weight:700}.lesson-bar-title p,.narration{color:#7d8b80;margin:0;font-size:12px;line-height:1.7}.lesson-bar-side{flex-direction:column;flex:none;gap:12px;width:min(420px,42%);display:flex}.progress{background:#edf1ec;border-radius:8px;height:4px;overflow:hidden}.progress>div{background:#799e78;border-radius:8px;height:100%;transition:width .3s}.controls{flex-wrap:wrap;justify-content:flex-end;gap:6px;display:flex}.controls button{color:#697a6d;background:#fff;border:1px solid #e6ebe5;border-radius:6px;padding:8px 10px;font-size:11px}.controls button:disabled{color:#c7cfc7;cursor:default}.controls .replay{color:#859487;border-color:#0000}.canvas-wrap{background:#fff;border:1px solid #e4e9e3;border-radius:14px;flex:1;min-height:0;margin:14px 24px 0;position:relative;overflow:hidden;box-shadow:0 5px 30px #304b3510}.canvas-wrap .excalidraw{height:100%}.canvas-caption{color:#8c9a90;pointer-events:none;background:#fff;border:1px solid #e9eee9;border-radius:20px;padding:8px 12px;font-size:10px;position:absolute;bottom:22px;left:24px}.caption-dot{background:#a7caa0;border-radius:100%;width:6px;height:6px;margin-right:5px;display:inline-block}.workspace-footer{letter-spacing:.08em;color:#aeb9b0;justify-content:space-between;align-items:center;height:44px;padding:0 28px;font-size:10px;display:flex}.workspace-footer span:first-child{color:#92a397;font-weight:700}.sidebar{background:#fff;border-left:1px solid #e5ebe6;flex-direction:column;flex:none;width:400px;display:flex;overflow:hidden}.chat-sidebar{min-height:0}.side-header{border-bottom:1px solid #eef1ed;flex:none;justify-content:space-between;align-items:end;gap:12px;padding:22px 24px 18px;display:flex}.side-header h2{letter-spacing:-.03em;margin:8px 0 0;font-size:20px}.side-header h2 span{color:#b4cfa2;margin-left:4px;font-size:17px}.chat-section{border:0;flex-direction:column;flex:1;min-height:0;padding:18px 24px 20px;display:flex}.chat-list{flex:1;min-height:0;padding-right:4px;overflow:auto}.welcome{gap:10px;margin:2px 0 17px;display:flex}.ai-avatar,.message>span{color:#72956d;background:#edf4e9;border-radius:9px;flex:none;place-items:center;width:28px;height:28px;display:grid}.welcome b{color:#526657;font-size:11px}.welcome p{color:#8a998d;margin:6px 0;font-size:11px;line-height:1.8}.message{gap:9px;margin:12px 0;font-size:12px;line-height:1.6;display:flex}.message p{color:#526459;word-break:break-word;background:#f4f7f2;border-radius:2px 10px 10px;margin:0;padding:9px 11px}.message.user{flex-direction:row-reverse}.message.user>span{color:#83918e;background:#edf0f4}.message.user p{background:#e8f0e5;border-radius:10px 2px 10px 10px}.message em{color:#95a795;font-style:normal}.error{color:#b44c48;background:#fff1ef;border-radius:7px;padding:10px;font-size:11px;line-height:1.5}.chat-form{background:#fff;border:1px solid #dce6da;border-radius:9px;flex:none;margin-top:12px;padding:5px;display:flex}.chat-form:focus-within{border-color:#99b69a}.chat-form input{color:#34443a;border:0;outline:0;width:100%;min-width:0;padding:7px 6px;font-size:12px}.chat-form input::placeholder{color:#b3beb4}.chat-form button{color:#fff;background:#365d46;border:0;border-radius:6px;width:29px;height:29px;font-size:18px}.chat-form button:disabled{background:#d8e3d7}.chat-hint{text-align:center;color:#bac5ba;margin:9px 0 0;font-size:9px}.chat-hint span{padding:0 5px}.new-topic{color:#6f8972;white-space:nowrap;background:#f8faf7;border:1px solid #e3eae1;border-radius:6px;padding:6px 10px;font-size:11px}.new-topic:disabled{cursor:default;opacity:.65}.new-topic-hint{color:#69806c;background:#f2f7ef;border-radius:6px;margin-bottom:12px;padding:8px;font-size:10px}@media (width<=980px){.lesson-bar-main{flex-direction:column}.lesson-bar-side{width:100%}.controls{justify-content:flex-start}.sidebar{width:340px}}@media (width<=650px){.app:not(.viewer){height:auto;min-height:100vh;display:block;overflow:visible}.app:not(.viewer) .workspace{height:70vh;min-height:520px}.sidebar{width:100%;min-height:420px;overflow:visible}.app:not(.viewer) .canvas-wrap{min-height:250px}.chat-list{min-height:160px}}.lesson-bar{border-radius:12px;margin:10px 24px 0;padding:10px 14px 0;overflow:hidden}.lesson-bar-main{align-items:center;gap:16px}.lesson-bar-title h2{align-items:baseline;gap:8px;margin:0 0 2px;font-size:13px;display:flex}.lesson-bar-title .step-count{color:#91a097;font-variant-numeric:tabular-nums;font-size:11px;font-weight:600}.lesson-bar-title .narration{margin:0 0 10px;font-size:12px;line-height:1.55}.lesson-bar .controls{flex-wrap:nowrap;flex:none;margin-bottom:10px}.lesson-bar .controls button{padding:6px 10px;font-size:12px}.lesson-bar .progress{border-radius:0;height:3px;margin:0 -14px}.lesson-bar .progress>div{border-radius:0}.canvas-wrap{margin:10px 24px 16px}.chat-section{padding:12px 16px 16px}.chat-toolbar{flex:none;justify-content:flex-end;margin-bottom:4px;display:flex}.new-topic-icon{color:#697a6d;cursor:pointer;background:#fff;border:1px solid #e6ebe5;border-radius:8px;width:28px;height:28px;padding:0;font-size:16px;line-height:1}.new-topic-icon:hover{background:#f3f7f0}.new-topic-icon:disabled{opacity:.5;cursor:default}.chat-list:empty{min-height:40px}.lesson-bar-title .narration-full{white-space:pre-wrap;word-break:break-word;color:#5a6b60;max-height:7.5em;padding-right:4px;font-size:12.5px;line-height:1.65;overflow-y:auto}.lesson-bar-title .narration-full::-webkit-scrollbar{width:4px}.lesson-bar-title .narration-full::-webkit-scrollbar-thumb{background:#d0d8cf;border-radius:4px}.app.viewer .workspace{background:#f7f8f6}.canvas-wrap-full{border-radius:14px;margin:16px}.steps-sidebar{width:380px;min-height:0}.steps-toolbar{background:#fff;border-bottom:1px solid #eef1ed;flex-direction:column;flex:none;gap:10px;padding:14px 16px 12px;display:flex}.steps-meta{justify-content:space-between;align-items:baseline;gap:10px;min-width:0;display:flex}.steps-title{color:#2c3a31;text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:13px;overflow:hidden}.steps-count{color:#91a097;font-variant-numeric:tabular-nums;flex:none;font-size:11px}.steps-empty-label{color:#8a9690;font-size:12px}.steps-toolbar .controls{justify-content:flex-start}.steps-toolbar .progress{border-radius:0;height:3px;margin:0 -16px -12px}.step-cards{background:#fafbf9;flex-direction:column;flex:1;gap:10px;min-height:0;padding:12px 14px 20px;display:flex;overflow:auto}.step-cards-empty{color:#8a9690;text-align:center;padding:18px 10px;font-size:12px;line-height:1.7}.step-card{text-align:left;cursor:pointer;color:inherit;background:#fff;border:1px solid #e4e9e3;border-radius:12px;padding:14px 16px;transition:border-color .15s,box-shadow .15s,background .15s;box-shadow:0 2px 8px #304b3506}.step-card:hover{background:#fbfcf9;border-color:#c9d7c6}.step-card.active{background:#f4f9f1;border-color:#7aa078;box-shadow:0 0 0 2px #7aa07833,0 4px 14px #304b3510}.step-card-head{grid-template-columns:28px minmax(0,1fr) auto;align-items:start;column-gap:10px;margin-bottom:8px;display:grid}.step-card-index{color:#5f7f5b;font-variant-numeric:tabular-nums;background:#edf4e9;border-radius:8px;flex:none;place-items:center;width:28px;min-width:28px;height:28px;padding:0;font-size:13px;font-weight:700;display:inline-grid}.step-card.active .step-card-index{color:#fff;background:#355a46}.step-card-title{color:#355a46;padding-top:2px;font-size:16.5px;font-weight:700;line-height:1.45}.step-card-narration{color:#4f6156;word-break:break-word;margin:0;font-size:15.5px;line-height:1.7}.step-card-narration>:first-child{margin-top:0}.step-card-narration>:last-child{margin-bottom:0}.step-card-narration p{margin:0 0 .6em}.step-card-narration p:last-child{margin-bottom:0}.step-card-narration ul,.step-card-narration ol{margin:.25em 0 .6em;padding-left:1.4em}.step-card-narration li{margin:.2em 0}.step-card-narration li>p{margin:0}.step-card-narration strong{color:#3f5a48;font-weight:700}.step-card-narration code{color:#355a46;background:#edf2eb;border-radius:5px;padding:.12em .4em;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.88em}.step-card:focus-visible{outline-offset:2px;outline:2px solid #7aa078}@media (width<=980px){.steps-sidebar{width:320px}}:root,html[data-theme=light]{--bg:#f3f4f6;--panel:#fff;--panel-2:#f7f7f8;--card:#fff;--card-hover:#fafafa;--border:#e3e4e8;--border-strong:#cfd1d6;--text:#222;--text-2:#666;--text-3:#9a9a9a;--btn-bg:#fff;--btn-text:#444;--btn-disabled:#c4c4c4;--code-bg:#f0f1f3;--code-text:#333;--accent:#3b82f6;--accent-text:#fff;--track:#e8e9ec;--shadow:0 1px 4px #0000000d}html[data-theme=dark]{--bg:#0b0b0b;--panel:#121212;--panel-2:#0b0b0b;--card:#181818;--card-hover:#1e1e1e;--border:#2a2a2a;--border-strong:#3a3a3a;--text:#e8e8e8;--text-2:#a0a0a0;--text-3:#707070;--btn-bg:#1c1c1c;--btn-text:#d0d0d0;--btn-disabled:#555;--code-bg:#2a2a2a;--code-text:#e0e0e0;--accent:#60a5fa;--accent-text:#0b0b0b;--track:#262626;--shadow:0 1px 6px #0006;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}html,body{color:var(--text);background:var(--bg)}.app.viewer .workspace,.workspace{background:var(--bg)}.canvas-wrap,.canvas-wrap-full{border-color:var(--border);box-shadow:var(--shadow)}html[data-theme=dark] .canvas-wrap{background:#121212}.sidebar,.steps-sidebar{background:var(--panel);border-left-color:var(--border)}.steps-toolbar{background:var(--panel);border-bottom-color:var(--border)}.steps-title{color:var(--text)}.steps-count,.steps-empty-label,.step-cards-empty{color:var(--text-2)}.steps-toolbar .controls{align-items:center;width:100%}.controls button{border-color:var(--border);background:var(--btn-bg);color:var(--btn-text)}.controls button:hover:not(:disabled){border-color:var(--border-strong)}.controls button:disabled{color:var(--btn-disabled);background:var(--btn-bg);border-color:var(--border)}.controls .play-button{color:var(--panel);background:var(--text);border-color:var(--text)}.controls .play-button:disabled{color:var(--btn-disabled);background:var(--btn-bg);border-color:var(--border)}.controls .replay{color:var(--text-2);background:0 0;border-color:#0000}.theme-toggle{border-radius:8px;place-items:center;width:32px;height:32px;margin-left:auto;padding:0;font-size:15px;line-height:1;display:inline-grid}.progress{background:var(--track)}.progress>div{background:var(--accent)}.step-cards{background:var(--panel-2)}.step-card{border-color:var(--border);background:var(--card);color:var(--text);box-shadow:var(--shadow);flex:none;position:relative;overflow:hidden}.step-card:hover{border-color:var(--border-strong);background:var(--card-hover)}.step-card.active{border-color:var(--border-strong);background:var(--card);box-shadow:var(--shadow)}.step-card.active:before{content:"";background:var(--accent);width:3px;position:absolute;top:0;bottom:0;left:0}.step-card-index{background:var(--code-bg);color:var(--text-2)}.step-card.active .step-card-index{background:var(--accent);color:var(--accent-text)}.step-card-title,.step-card-narration,.step-card-narration strong{color:var(--text)}.step-card-narration code{background:var(--code-bg);color:var(--code-text)}.step-card:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.step-cards:before,.step-cards:after{content:"";flex:none;height:28vh}.step-card-toggle{border:1px solid var(--border);color:var(--text-2);cursor:pointer;background:0 0;border-radius:999px;flex:none;margin-left:auto;padding:4px 8px;font-size:12px;line-height:1}.step-card-toggle:hover{border-color:var(--border-strong);color:var(--text)}.step-points{border-left:2px solid var(--border);flex-direction:column;gap:6px;margin-top:10px;margin-left:10px;padding-left:10px;display:flex}.step-point{border:1px solid var(--border);background:var(--panel-2);cursor:pointer;border-radius:10px;padding:8px 10px;transition:border-color .15s,background .15s;position:relative}.step-point:hover{border-color:var(--border-strong);background:var(--card-hover)}.step-point.active{border-color:var(--accent);background:var(--card)}.step-point:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.step-point-head{grid-template-columns:40px minmax(0,1fr);align-items:start;column-gap:8px;display:grid}.step-point-index{box-sizing:border-box;min-width:40px;height:22px;color:var(--text-2);border:1px solid var(--border);font-variant-numeric:tabular-nums;white-space:nowrap;background:0 0;border-radius:6px;flex:none;place-items:center;padding:0 5px;font-size:11.5px;font-weight:650;line-height:1;display:inline-grid}.step-point.active .step-point-index{background:var(--accent);border-color:var(--accent);color:var(--accent-text)}.step-point-title{color:var(--text);padding-top:2px;font-size:14.5px;font-weight:600;line-height:1.45}.step-point-text{margin-top:6px;margin-left:48px;font-size:14.5px}.canvas-wrap{position:relative}.canvas-wrap.dl-hover canvas{cursor:pointer!important}.dl-pop{z-index:20;box-sizing:border-box;background:var(--card,#fff);width:320px;max-height:min(420px,70vh);color:var(--text,#1f2937);border:1px solid var(--border-strong,#d0d7de);border-radius:12px;padding:12px 14px;font-size:13.5px;line-height:1.6;animation:.14s ease-out dl-pop-in;position:absolute;overflow:auto;box-shadow:0 10px 30px #0f172a29,0 2px 6px #0f172a14}@keyframes dl-pop-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}@media (prefers-reduced-motion:reduce){.dl-pop{animation:none}}.dl-pop-head{align-items:center;gap:8px;margin-bottom:4px;display:flex}.dl-pop-tag{background:var(--accent);color:var(--accent-text);font-variant-numeric:tabular-nums;border-radius:6px;padding:2px 7px;font-size:11.5px;font-weight:650}.dl-pop-hint{color:var(--text-2);font-size:11.5px}.dl-pop-close{color:var(--text-2);cursor:pointer;background:0 0;border:0;margin-left:auto;padding:0 2px;font-size:18px;line-height:1}.dl-pop-close:hover{color:var(--text)}.dl-pop-title{color:var(--text);margin:2px 0 4px;font-size:14.5px;font-weight:650}.dl-pop-body{font-size:13.5px}.dl-pop-body p{margin:0 0 6px}.dl-pop-more{color:var(--text-2);margin-top:2px;font-size:12px}.dl-pop-refs{border-top:1px solid var(--border);flex-wrap:wrap;gap:6px;margin-top:8px;padding-top:8px;display:flex}.dl-pop-ref{text-overflow:ellipsis;white-space:nowrap;border:1px solid var(--border);max-width:100%;color:var(--text-2);cursor:pointer;background:0 0;border-radius:999px;padding:3px 8px;font-size:12px;overflow:hidden}.dl-pop-ref b{font-variant-numeric:tabular-nums;color:var(--text);margin-right:2px}.dl-pop-ref:hover{border-color:var(--border-strong);color:var(--text)}.dl-pop-ref.on{border-color:var(--accent);color:var(--accent)}.dl-pop-ref.on b{color:var(--accent)}.dl-pop-head{cursor:grab;-webkit-user-select:none;user-select:none;touch-action:none;border-radius:12px 12px 0 0;margin:-12px -14px 4px;padding:8px 14px 4px}.dl-pop.dragging .dl-pop-head,.dl-pop.dragging{cursor:grabbing}.dl-pop.dragging{animation:none;box-shadow:0 16px 40px #0f172a3d}.dl-pop-grip{color:var(--text-3);letter-spacing:-2px;margin-right:-2px;font-size:12px}.dl-pop-head:hover .dl-pop-grip{color:var(--text-2)}.dl-pop-close{cursor:pointer;border-radius:6px;width:22px;height:22px}.dl-pop-close:hover{background:var(--card-hover)}.app.viewer .canvas-wrap-full{box-shadow:none;border:0;border-radius:0;margin:0}.dl-toc{z-index:15;box-sizing:border-box;border:1px solid var(--border);background:color-mix(in srgb, var(--panel) 88%, transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);width:340px;max-width:calc(100% - 24px);max-height:calc(100% - 96px);color:var(--text);border-radius:12px;flex-direction:column;display:flex;position:absolute;top:12px;right:12px;overflow:hidden;box-shadow:0 8px 28px #0f172a24,0 1px 4px #0f172a0f}html[data-theme=dark] .dl-toc{box-shadow:0 8px 28px #00000080,0 1px 4px #0006}.dl-toc-mini{border-radius:10px;width:auto;max-height:none}.dl-toc-open{color:var(--text);cursor:pointer;background:0 0;border:0;align-items:center;gap:6px;padding:7px 12px;font-size:13px;font-weight:600;display:flex}.dl-toc-open:hover{color:var(--accent)}.dl-toc-mini-count{color:var(--text-2);font-variant-numeric:tabular-nums;font-weight:500}.dl-toc-head{border-bottom:1px solid var(--border);flex-direction:column;flex:none;gap:8px;padding:10px 12px 8px;display:flex}.dl-toc-meta{align-items:center;gap:8px;min-width:0;display:flex}.dl-toc-title{white-space:nowrap;text-overflow:ellipsis;min-width:0;color:var(--text);flex:1;font-size:13px;font-weight:650;overflow:hidden}.dl-toc-count{color:var(--text-2);font-variant-numeric:tabular-nums;flex:none;font-size:12px}.dl-toc-empty-label{color:var(--text-2);flex:1;font-size:13px}.dl-toc-collapse{width:24px;height:24px;color:var(--text-2);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:6px;flex:none;padding:0;font-size:13px;line-height:1}.dl-toc-collapse:hover{border-color:var(--border);color:var(--text)}.dl-toc-controls{align-items:center;gap:6px;display:flex}.dl-toc-controls button{border:1px solid var(--border);background:var(--btn-bg);min-width:32px;height:28px;color:var(--btn-text);cursor:pointer;border-radius:7px;padding:0 8px}.dl-toc-controls .theme-toggle{width:28px;min-width:0;height:28px}.dl-toc .progress{background:var(--track);border-radius:2px;height:3px;overflow:hidden}.dl-toc .progress>div{background:var(--accent);height:100%}.dl-toc-list{-webkit-overflow-scrolling:touch;overscroll-behavior:contain;flex-direction:column;flex:1;gap:1px;min-height:0;padding:6px;display:flex;overflow:auto}.dl-toc-empty{color:var(--text-2);padding:10px;font-size:12.5px;line-height:1.6}.dl-toc-row{box-sizing:border-box;width:100%;min-width:0;color:var(--text);text-align:left;cursor:pointer;font:inherit;background:0 0;border:0;border-radius:7px;flex:none;align-items:baseline;gap:8px;padding:5px 8px;font-size:13px;line-height:1.45;display:flex}.dl-toc-row:hover{background:var(--card-hover)}html[data-theme=dark] .dl-toc-row:hover{background:#ffffff0d}.dl-toc-row:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.dl-toc-sub{padding-left:26px;font-size:12.5px}.dl-toc-intro{flex:none;min-width:0;margin:0 8px 3px 38px}.dl-toc-intro-toggle{color:var(--text-2);cursor:pointer;font:inherit;text-align:left;background:0 0;border:0;border-radius:6px;padding:4px 6px;font-size:12px}.dl-toc-intro-toggle:hover{color:var(--accent);background:var(--card-hover)}.dl-toc-intro-toggle:focus-visible,.dl-demo:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.dl-toc-intro-body{color:var(--text);overflow-wrap:anywhere;padding:2px 6px 7px;font-size:12.5px;line-height:1.65}.dl-toc-intro-body p{margin:4px 0}.dl-toc-intro-body pre{max-width:100%;overflow:auto}.dl-toc-scope{background:var(--card-hover);overflow-wrap:anywhere;border-radius:6px;padding:6px 8px;font-size:12.5px;line-height:1.6}.dl-toc-scope p,.dl-toc-scope li{white-space:pre-line}.dl-toc-scope pre{max-width:100%;overflow:auto}.dl-demo-footer{border-top:1px solid var(--border);flex:none;padding:8px 14px 2px}.dl-demo{border:1px solid var(--border);background:var(--btn-bg);width:100%;color:var(--btn-text);font:inherit;cursor:pointer;border-radius:7px;padding:7px 10px;font-size:12.5px}.dl-demo:hover,.dl-demo[aria-pressed=true]{color:var(--accent);border-color:var(--accent)}html[data-theme=dark] .dl-motion-layer{filter:invert(93%)hue-rotate(180deg)}.dl-toc-idx{min-width:22px;color:var(--text-3);font-variant-numeric:tabular-nums;white-space:nowrap;flex:none;font-size:11.5px;font-weight:650}.dl-toc-sub .dl-toc-idx{min-width:30px}.dl-toc-text{white-space:normal;overflow-wrap:anywhere;text-overflow:clip;flex:1;min-width:0;overflow:visible}.dl-toc-sub .dl-toc-text{white-space:normal;overflow-wrap:anywhere;text-overflow:clip;overflow:visible}.dl-toc-name{font-weight:600}.dl-toc-sub .dl-toc-name{font-weight:500}.dl-toc-desc{color:var(--text-3);margin-left:8px;font-weight:400}.dl-toc-row.in:not(.on) .dl-toc-idx{color:var(--accent)}.dl-toc-row.on{background:color-mix(in srgb, var(--accent) 14%, transparent);box-shadow:inset 3px 0 0 var(--accent)}.dl-toc-row.on .dl-toc-idx,.dl-toc-row.on .dl-toc-name{color:var(--accent)}@keyframes dl-toc-flash{0%{background:color-mix(in srgb, var(--accent) 34%, transparent)}to{background:color-mix(in srgb, var(--accent) 14%, transparent)}}.dl-toc-row.on{animation:.6s ease-out dl-toc-flash}.dl-pop{flex-direction:column;width:auto;min-width:280px;max-width:min(420px,100% - 24px);max-height:60vh;padding:10px 0;display:flex;overflow:hidden}.dl-pop .dl-pop-head{flex:none;margin:-10px 0 4px;padding:8px 12px 4px 14px}.dl-pop-scroll{-webkit-overflow-scrolling:touch;overscroll-behavior:contain;flex:1;min-height:0;padding:0 14px;overflow:auto}.dl-pop .dl-pop-refs{flex:none;padding:6px 14px 0}.dl-pop-count{color:var(--text-3);font-variant-numeric:tabular-nums;margin-left:auto;font-size:11.5px}.dl-pop-count+.dl-pop-close{margin-left:4px}.dl-pop-point{border-left:3px solid var(--accent);background:color-mix(in srgb, var(--accent) 8%, transparent);border-radius:8px;margin-top:8px;padding:8px 10px}.dl-pop-point-head{color:var(--text);margin-bottom:2px;font-size:13.5px;font-weight:650}.dl-pop-point-head b{color:var(--accent);font-variant-numeric:tabular-nums;margin-right:4px}.dl-link{color:var(--accent);text-underline-offset:3px;cursor:pointer;border-radius:3px;text-decoration:underline;text-decoration-thickness:1px}.dl-link:hover{background:color-mix(in srgb, var(--accent) 12%, transparent);text-decoration-style:solid}.dl-link:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.dl-term-link{color:var(--accent);font:inherit;line-height:inherit;text-align:inherit;cursor:pointer;text-underline-offset:3px;background:0 0;border:0;border-radius:2px;padding:0;text-decoration-line:underline;text-decoration-style:dotted;text-decoration-thickness:1.5px;display:inline}.dl-term-link:hover{background:color-mix(in srgb, var(--accent) 12%, transparent)}.dl-term-link:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.dl-term-popover{z-index:100;border:1px solid var(--border-strong);background:var(--card);width:min(340px,100vw - 24px);max-height:min(440px,100dvh - 24px);color:var(--text);overflow-wrap:anywhere;border-radius:12px;flex-direction:column;padding:14px 16px 16px;font-size:13.5px;line-height:1.6;display:flex;position:fixed;top:12px;left:12px;overflow:hidden;box-shadow:0 10px 32px #0003,0 2px 8px #0002}.dl-term-head{flex:none;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:9px;display:flex}.dl-term-label{color:var(--text-2);letter-spacing:.03em;font-size:11px;font-weight:600}.dl-term-title{color:var(--text);margin:2px 0 0;font-size:15px;line-height:1.4}.dl-term-close{width:32px;height:32px;color:var(--text-2);background:0 0;border:0;border-radius:6px;flex:none;margin:-4px -6px 0 0;font-size:20px;line-height:1}.dl-term-close:hover{background:var(--card-hover);color:var(--text)}.dl-term-close:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.dl-term-body{overscroll-behavior:contain;touch-action:pan-y;-webkit-overflow-scrolling:touch;min-height:0;overflow:auto}.dl-term-body pre{max-width:100%;overflow:auto}@media (width<700px),(height<520px){.dl-term-popover{width:min(420px,100vw - 24px);max-height:min(60dvh,440px);padding-bottom:max(16px, env(safe-area-inset-bottom))}}.dl-kind{letter-spacing:.02em;border-radius:999px;flex:none;padding:0 6px;font-size:10.5px;font-weight:600;line-height:16px}.dl-kind.k-module{color:#1971c2;background:#1971c221}.dl-kind.k-detail{color:var(--muted,#868e96);background:#868e9621}.dl-toc-row.k-module:not(.dl-toc-sub){box-shadow:inset 3px 0 #1971c28c}.dl-toc-row.k-module.on:not(.dl-toc-sub){box-shadow:inset 3px 0 0 var(--accent)}.dl-toc-ovrow{flex-wrap:wrap;gap:4px;padding:1px 8px 4px 40px;display:flex}.dl-toc-ov{cursor:pointer;color:#1971c2;background:0 0;border:1px solid #1971c280;border-radius:999px;padding:0 8px;font-size:11px;line-height:18px}.dl-toc-ov:hover{background:#1971c21a}.dl-toc-ov.on{background:color-mix(in srgb, var(--accent) 18%, transparent);border-style:solid;border-color:var(--accent);color:var(--accent)}.dl-ov-mark{color:#1971c2}.dl-pop-head .dl-kind{margin-right:2px}.dl-toc-controls .dim-toggle{opacity:.55}.dl-toc-controls .dim-toggle.on{opacity:1;color:var(--accent);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--accent) 45%, transparent)}.dl-edge-tip{z-index:40;pointer-events:none;background:color-mix(in srgb, var(--panel,#fff) 94%, transparent);max-width:360px;color:var(--text,#1e293b);border:1px solid color-mix(in srgb, var(--text,#000) 12%, transparent);border-radius:6px;padding:4px 8px;font-size:12px;line-height:1.4;position:fixed;box-shadow:0 2px 10px #0000002e}.dl-edge-tip[hidden]{display:none}.dl-pop-edge{background:color-mix(in srgb, var(--accent) 8%, transparent);border-radius:8px;margin:0 0 8px;padding:6px 8px}.dl-pop-edge-route{flex-wrap:wrap;align-items:center;gap:6px;font-size:13px;display:flex}.dl-pop-edge-arrow{opacity:.6}.dl-pop-edge-label{margin-top:2px;font-size:12.5px}.dl-muted{opacity:.6;font-weight:400}.dl-swatch{vertical-align:middle;flex:none}:root[data-theme=dark] .dl-swatch{filter:invert(93%)hue-rotate(180deg)}.dl-legend{border-top:1px solid color-mix(in srgb, var(--text,#000) 10%, transparent);flex:none;padding:4px 6px 6px}.dl-legend-head{all:unset;cursor:pointer;border-radius:6px;width:calc(100% - 8px);padding:3px 4px;font-size:12px;font-weight:600;display:block}.dl-legend-head:hover{background:color-mix(in srgb, var(--accent) 8%, transparent)}.dl-legend-list{max-height:180px;padding:2px 4px;overflow:auto}.dl-legend-row{align-items:flex-start;gap:8px;font-size:12px;line-height:20px;display:flex}.dl-legend-name{white-space:normal;overflow-wrap:anywhere;flex:1;min-width:0}.dl-legend-row .dl-swatch{flex:none;margin-top:3px}.dl-legend-list:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.dl-legend-n{opacity:.5;font-size:11px}.dl-legend-note{overflow-wrap:anywhere;padding:4px 0;font-size:12px;line-height:1.6}.dl-legend-note.with-rows{border-top:1px solid var(--border);margin-top:5px}.dl-legend-note p,.dl-legend-note li{white-space:pre-line}.dl-legend-note pre{max-width:100%;overflow:auto}.dl-pop-crumb{text-overflow:ellipsis;white-space:nowrap;max-width:100%;color:var(--muted,#64748b);cursor:pointer;text-align:left;background:0 0;border:0;margin:0 0 4px;padding:0;font-size:11.5px;display:block;overflow:hidden}.dl-pop-crumb:hover{color:var(--accent);text-decoration:underline}.dl-pop-pnum{color:var(--accent);font-variant-numeric:tabular-nums;margin-right:4px}.dl-point-more{border-top:1px solid var(--border);margin:10px 0 2px}.dl-point-more>summary{min-height:34px;color:var(--text);cursor:pointer;align-items:center;gap:6px;padding:4px 2px;font-size:13px;font-weight:600;list-style:none;display:flex}.dl-point-more>summary::-webkit-details-marker{display:none}.dl-point-more>summary:before{content:"▸";color:var(--accent)}.dl-point-more[open]>summary:before{content:"▾"}.dl-point-more>summary:hover{color:var(--accent)}.dl-point-more>summary:focus-visible,.dl-point-more-content:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.dl-point-more-content{overscroll-behavior:contain;-webkit-overflow-scrolling:touch;touch-action:pan-y;scrollbar-width:thin;scrollbar-color:var(--border-strong) transparent;max-height:min(240px,30vh);padding:2px 3px 8px;overflow:auto}.dl-point-more-content pre{max-width:100%;overflow:auto}.dl-pop-sublist{border-top:1px solid color-mix(in srgb, var(--text) 18%, transparent);flex-direction:column;gap:2px;margin-top:8px;padding-top:6px;display:flex}.dl-pop-sub{text-align:left;color:var(--text);cursor:pointer;background:0 0;border:0;border-radius:6px;padding:3px 6px;font-size:13px}.dl-pop-sub:hover{background:color-mix(in srgb, var(--accent) 10%, transparent)}.dl-pop-sub b{color:var(--accent);font-variant-numeric:tabular-nums;margin-right:4px}.dl-pop-subov{flex-wrap:wrap;gap:6px;padding:2px 6px;display:flex}.dl-legend.dl-legend-float{z-index:6;background:var(--panel,#fff);border-top:0;border:1px solid color-mix(in srgb, var(--text,#000) 12%, transparent);border-radius:10px;flex-direction:column;width:220px;max-height:calc(100% - 148px);padding:4px 6px 6px;display:flex;position:absolute;top:72px;left:16px;box-shadow:0 6px 22px #0f172a1f,0 1px 3px #0f172a14}html[data-theme=dark] .dl-legend.dl-legend-float{box-shadow:0 8px 28px #00000080,0 1px 4px #0006}.dl-legend.dl-legend-float.mini{width:auto;padding:2px 4px}.dl-legend.dl-legend-float.mini .dl-legend-head{width:auto;padding:4px 8px}.dl-legend.dl-legend-float .dl-legend-list{flex:1;min-height:0;max-height:none}.dl-diagram-tabs{z-index:18;border:1px solid var(--border);background:var(--panel);max-width:calc(100% - 760px);box-shadow:var(--shadow);border-radius:12px;gap:4px;padding:4px;display:flex;position:absolute;top:12px;left:50%;overflow-x:auto;transform:translate(-50%)}.dl-diagram-tab{text-overflow:ellipsis;white-space:nowrap;max-width:220px;color:var(--text-2);cursor:pointer;background:0 0;border:0;border-radius:8px;flex:none;align-items:center;gap:6px;padding:7px 12px;font-size:13px;display:flex;overflow:hidden}.dl-diagram-tab:hover{background:var(--card-hover);color:var(--text)}.dl-diagram-tab.on{background:color-mix(in srgb, var(--accent) 14%, transparent);color:var(--accent)}.dl-diagram-tab:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.dl-diagram-tab-full,.dl-diagram-tab-short{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.dl-diagram-tab-short{display:none}.dl-diagram-select{width:100%;min-width:0;color:var(--text);font:inherit;background:0 0;border:0;border-radius:8px;flex:1 1 0;padding:4px 8px}.dl-diagram-select:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.dl-diagram-dot{border-radius:50%;flex:none;width:7px;height:7px}.dl-diagram-dot.k-module{background:#1971c2}.dl-diagram-dot.k-detail{background:#868e96}.dl-diagram-empty{z-index:5;color:var(--text-2);background:var(--panel);border:1px solid var(--border);pointer-events:none;border-radius:10px;padding:12px 18px;position:absolute;top:44%;left:40%;transform:translate(-50%,-50%)}.app.viewer{--vh:1vh;--edge-top:max(8px, env(safe-area-inset-top));--edge-bottom:max(8px, env(safe-area-inset-bottom));--edge-left:max(8px, env(safe-area-inset-left));--edge-right:max(8px, env(safe-area-inset-right));height:100dvh;min-height:0;display:flex;overflow:hidden}@supports (height:100dvh){.app.viewer{--vh:1dvh}}.app.viewer .workspace{width:100%;height:100%;min-height:0;overflow:hidden}.app.viewer .canvas-wrap-full{width:100%;height:100dvh;min-height:0;padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);flex:none}.canvas-wrap-full>.excalidraw{width:100%;height:100%;position:absolute;inset:0}.viewer .excalidraw,.viewer .excalidraw canvas{touch-action:none}.viewer .excalidraw .layer-ui__wrapper,.viewer .excalidraw .App-bottom-bar,.viewer .excalidraw .main-menu-trigger,.viewer .excalidraw .mobile-misc-tools-container{display:none!important}.dl-toc,.dl-pop,.dl-legend.dl-legend-float,.dl-diagram-tabs,.dl-edge-tip,.dl-diagram-empty,.dl-zoom,.dl-toc-fab,.dl-legend-fab{max-width:calc(100vw - 16px)}.dl-toc{top:max(12px, env(safe-area-inset-top));right:max(12px, env(safe-area-inset-right));max-height:calc(100% - max(12px, env(safe-area-inset-top)) - var(--edge-bottom) - 64px)}.dl-pop{overflow-wrap:anywhere;min-width:0;max-width:min(420px,100vw - 16px)}.dl-legend.dl-legend-float{left:max(16px, env(safe-area-inset-left));top:calc(var(--edge-top) + 64px);max-height:min(260px, calc(32 * var(--vh)));overflow:hidden}.dl-legend-head{box-sizing:border-box;flex:none}.dl-diagram-tabs{top:var(--edge-top);max-width:min(calc(100vw - 16px), calc(100% - 760px - 2 * env(safe-area-inset-right)));overscroll-behavior:contain;touch-action:pan-x;flex-wrap:nowrap}.dl-edge-tip{max-width:min(360px,100vw - 16px)}@media (width<=1100px){.dl-diagram-tabs{left:max(72px, calc(env(safe-area-inset-left) + 8px));right:calc(364px + max(12px, env(safe-area-inset-right)));max-width:calc(100vw - 16px);transform:none}}.dl-toc-list,.dl-pop-scroll,.dl-pop-refs,.dl-legend-list{touch-action:pan-y;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}.dl-pop .dl-pop-refs{max-height:calc(20 * var(--vh));flex-shrink:1;min-height:0;overflow:auto}.dl-toc-row,.dl-toc-ovrow{flex:none}.dl-toc-fab,.dl-legend-fab,.dl-zoom{z-index:22;border:1px solid var(--border);background:var(--panel);color:var(--text);box-shadow:var(--shadow);border-radius:10px;position:absolute}.dl-zoom{left:var(--edge-left);bottom:var(--edge-bottom);display:flex;overflow:hidden}.dl-zoom button{color:inherit;background:0 0;border:0;border-radius:0;min-width:40px;height:40px;padding:0 8px;font-size:13px}.dl-zoom .dl-code-toggle{border-left:1px solid var(--border);white-space:nowrap;padding:0 12px;font-size:12px}.dl-zoom .dl-code-toggle[aria-pressed=true]{color:var(--accent);background:color-mix(in srgb, var(--accent) 13%, var(--panel));font-weight:650}.dl-zoom .dl-source-settings-toggle{border-left:1px solid var(--border);font-size:16px}.dl-source-entry-hint{color:var(--text-2);font-size:12px;line-height:1.4}.dl-source-entry-hint:not(.floating){padding:4px 0 8px}.dl-source-entry-hint.floating{z-index:19;left:var(--edge-left);bottom:calc(var(--edge-bottom) + 48px);border:1px solid var(--border);background:var(--panel);max-width:calc(100vw - 16px);box-shadow:var(--shadow);pointer-events:none;border-radius:7px;padding:5px 8px;position:absolute}.dl-source-card{border:1px solid var(--border);background:var(--panel-2);border-radius:10px;margin:0 0 12px;padding:10px}.dl-source-heading{color:var(--text);font-size:13px;font-weight:700}.dl-source-group{margin-top:7px}.dl-source-side{color:var(--text-2);font-size:12px;font-weight:650}.dl-source-group ul{margin:0;padding:0;list-style:none}.dl-source-row{min-width:0;padding:5px 0}.dl-source-row+.dl-source-row{border-top:1px solid var(--border)}.dl-source-name{color:var(--text);overflow-wrap:anywhere;font-size:12px;display:block}.dl-source-path{color:var(--accent);overflow-wrap:anywhere;-webkit-user-select:text;user-select:text;margin-top:3px;font-size:12px;line-height:1.45;display:block}.dl-source-actions{flex-wrap:wrap;align-items:center;gap:5px 10px;margin-top:5px;display:flex}.dl-source-action{color:var(--accent);font:inherit;text-underline-offset:2px;cursor:pointer;background:0 0;border:0;padding:0;font-size:12px;text-decoration:underline}.dl-source-action:hover,.dl-source-path:hover{text-decoration-thickness:2px}.dl-source-setup-hint{color:var(--text-2);text-decoration:none}.dl-copy-wrap{flex-wrap:wrap;align-items:center;gap:5px;display:inline-flex}.dl-copy-status{color:var(--text-2);font-size:12px}.dl-source-version{border-top:1px solid var(--border);color:var(--text-2);margin-top:8px;padding-top:8px;font-size:12px;line-height:1.5}.dl-source-version p{margin:0 0 5px}.dl-source-version code{color:var(--text);-webkit-user-select:text;user-select:text;overflow-wrap:anywhere}.dl-source-dialog{border:1px solid var(--border);background:var(--panel);width:min(420px,100vw - 32px);max-height:calc(100dvh - 32px);color:var(--text);box-shadow:var(--shadow);border-radius:14px;padding:18px;overflow:auto}.dl-source-dialog::backdrop{background:#0f172a7a}.dl-source-dialog form{flex-direction:column;gap:8px;display:flex}.dl-source-dialog-head{align-items:center;gap:12px;display:flex}.dl-source-dialog h2{flex:1;margin:0;font-size:16px}.dl-source-dialog-close{color:var(--text-2);background:0 0;border:0;font-size:22px;line-height:1}.dl-source-dialog p{color:var(--text-2);margin:0 0 4px;font-size:13px;line-height:1.5}.dl-source-dialog label{color:var(--text);font-size:13px;font-weight:650}.dl-source-dialog input,.dl-source-dialog select{border:1px solid var(--border-strong);background:var(--panel);width:100%;min-height:40px;color:var(--text);font:inherit;border-radius:7px;padding:8px}.dl-source-dialog .dl-source-settings-hint{font-size:12px}.dl-source-dialog .dl-source-error{color:#bd3b32}.dl-source-dialog-actions{justify-content:flex-end;gap:8px;margin-top:5px;display:flex}.dl-source-dialog-actions button{border:1px solid var(--border);background:var(--btn-bg);min-height:36px;color:var(--btn-text);border-radius:7px;padding:0 14px}.dl-source-dialog-actions button[type=submit]{border-color:var(--accent);background:var(--accent);color:var(--accent-text)}.dl-zoom button:hover,.dl-toc-fab:hover,.dl-legend-fab:hover{background:var(--card-hover)}.dl-toc-fab:focus-visible,.dl-legend-fab:focus-visible,.dl-zoom button:focus-visible,.dl-legend-head:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}@media (width>=700px) and (height>=520px){.dl-toc.dl-panel:not(.dl-toc-mini){width:var(--dl-panel-width,360px);max-height:none;top:12px;bottom:12px}.dl-panel-resize{z-index:2;cursor:col-resize;touch-action:none;width:8px;position:absolute;top:0;bottom:0;left:0}.dl-panel-resize:after{content:"";background:var(--border-strong);border-radius:2px;width:2px;height:32px;position:absolute;top:50%;left:3px;transform:translateY(-50%)}.dl-panel-resize:hover:after,.dl-panel-resize:focus-visible:after{background:var(--accent)}.dl-panel-resize:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.dl-panel-tabs{border-bottom:1px solid var(--border);flex:none;gap:4px;padding:6px 12px;display:flex}.dl-panel-tabs button{color:var(--text-2);font:inherit;cursor:pointer;background:0 0;border:0;border-radius:7px;flex:1;padding:6px 8px;font-size:13px}.dl-panel-tabs button:hover:not(:disabled){background:var(--card-hover);color:var(--text)}.dl-panel-tabs button[aria-selected=true]{background:color-mix(in srgb, var(--accent) 14%, transparent);color:var(--accent);font-weight:650}.dl-panel-tabs button:disabled{opacity:.5;cursor:default}.dl-panel-tabs button:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.dl-panel-pages{flex:1;grid-template:minmax(0,1fr)/minmax(0,1fr);min-height:0;display:grid}.dl-panel-page{flex-direction:column;grid-area:1/1;min-width:0;min-height:0;display:flex}.dl-panel-page[hidden]{visibility:hidden;display:flex}.dl-panel-narr{overflow-wrap:anywhere;flex-direction:column;flex:1;min-height:0;font-size:13.5px;line-height:1.6;display:flex}.dl-panel-narr .dl-pop-head{cursor:default;-webkit-user-select:auto;user-select:auto;touch-action:auto;border-radius:0;flex:none;margin:0;padding:12px 14px 4px}.dl-panel-narr-scroll{touch-action:pan-y;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;flex:1;min-height:0;padding:6px 14px 16px;overflow:auto}.dl-panel-narr-scroll:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.canvas-wrap-full:has(.dl-panel:not(.dl-toc-mini)) .dl-diagram-tabs{left:calc((100% - var(--dl-panel-width,360px) - max(12px, env(safe-area-inset-right)) - 12px + max(72px, calc(env(safe-area-inset-left) + 8px))) / 2);max-width:max(0px, calc(100% - var(--dl-panel-width,360px) - max(12px, env(safe-area-inset-right)) - 12px - max(72px, calc(env(safe-area-inset-left) + 8px))));right:auto;transform:translate(-50%)}}@media (width<700px),(height<520px){.canvas-wrap-full{--pop-limit:calc(35 * var(--vh));--card-bottom:calc(var(--edge-bottom) + 50px);--float-top:calc(var(--edge-top) + 56px)}.dl-toc-fab,.dl-legend-fab{top:var(--edge-top);white-space:nowrap;height:44px;padding:0 10px;font-size:13px;font-weight:600}.dl-toc-fab{right:var(--edge-right);text-overflow:ellipsis;width:104px;overflow:hidden}.dl-legend-fab{left:var(--edge-left);width:56px}.dl-diagram-tabs{top:var(--edge-top);left:calc(var(--edge-left) + 64px);right:calc(var(--edge-right) + 112px);scrollbar-width:none;border-radius:10px;width:auto;max-width:calc(100vw - 16px);height:44px;padding:1px;overflow:auto hidden;transform:none}.dl-diagram-tabs::-webkit-scrollbar{display:none}.dl-diagram-tab{max-width:180px;min-height:40px;padding:4px 8px}.dl-pop{left:var(--edge-left);right:var(--edge-right);top:auto;bottom:var(--card-bottom);width:calc(100% - var(--edge-left) - var(--edge-right));min-width:0;max-width:calc(100vw - 16px);max-height:min(var(--pop-limit), calc(100 * var(--vh) - var(--float-top) - var(--card-bottom) - 104px))}.dl-pop .dl-pop-head{cursor:default;touch-action:pan-y}.dl-pop .dl-pop-crumb-head{flex:1 1 0;min-width:0;margin:0}.dl-pop-grip{display:none}.dl-pop-scroll:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.dl-pop-scroll .dl-pop-refs{max-height:none;padding:6px 0 0;overflow:visible}.dl-pop-actions{border-top:1px solid var(--border);flex:none;align-items:stretch;gap:8px;padding:6px 14px 0;display:flex}.dl-pop-actions:empty{display:none}.dl-pop-actions .dl-demo-footer{border:0;flex:1 1 0;min-width:0;padding:0}.dl-pop-actions .dl-demo{white-space:nowrap;padding:3px 4px;font-size:11px}.dl-pop-read,.dl-pop-object{border:1px solid var(--border);background:var(--btn-bg);min-width:0;min-height:40px;color:var(--accent);font:inherit;cursor:pointer;border-radius:7px;flex:1 1 0;padding:5px 8px;font-size:12.5px}.dl-pop-read:hover,.dl-pop-object:hover{border-color:var(--accent)}.dl-pop-read:focus-visible,.dl-pop-object:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.dl-focus-menu{z-index:2;background:var(--panel);flex-direction:column;display:flex;position:absolute;inset:0}.dl-focus-menu-head{justify-content:space-between;align-items:center;padding:4px 12px;display:flex}.dl-focus-menu-head button,.dl-focus-menu-list button{min-height:40px;color:var(--text);font:inherit;cursor:pointer}.dl-focus-menu-list{padding:0 12px 8px;overflow:auto}.dl-focus-menu-list button{text-align:left;border:0;border-bottom:1px solid var(--border);background:0 0;width:100%;display:block}.dl-point-more-content{max-height:none;overflow:visible}.dl-legend.dl-legend-float{top:var(--float-top);left:var(--edge-left);width:220px;max-height:min(calc(50 * var(--vh)), calc(100 * var(--vh) - var(--float-top) - var(--card-bottom) - var(--pop-limit) - 8px))}.dl-drawer-mask{z-index:30;touch-action:none;background:#0f172a6b;position:absolute;inset:0}.dl-toc:not(.dl-toc-mini){z-index:31;top:auto;bottom:0;left:var(--edge-left);right:var(--edge-right);width:calc(100% - var(--edge-left) - var(--edge-right));max-height:calc(70 * var(--vh));padding-bottom:env(safe-area-inset-bottom);background:var(--panel);border-radius:16px 16px 0 0;animation:.18s ease-out dl-drawer-up}.dl-toc-head{touch-action:pan-y;overscroll-behavior:contain;max-height:100%;overflow:auto}.dl-toc-controls{flex-wrap:wrap}.dl-drawer-open .dl-pop{visibility:hidden;pointer-events:none}.dl-drawer-open .dl-legend-fab,.dl-drawer-open .dl-diagram-tabs,.dl-drawer-open .dl-zoom,.dl-drawer-open .dl-toc-fab{visibility:hidden}}@media (width<700px){.dl-diagram-tabs{box-sizing:border-box;touch-action:manipulation;height:auto;min-height:44px;overflow:hidden}.dl-diagram-tabs .dl-diagram-tab{flex:1 1 0;justify-content:center;gap:0;min-width:0;max-width:none;padding:4px 2px}.dl-diagram-tab-full,.dl-diagram-dot{display:none}.dl-diagram-tab-short{text-overflow:clip;white-space:normal;overflow-wrap:anywhere;text-align:center;line-height:1.25;display:block;overflow:visible}.dl-diagram-tabs-wide{top:calc(var(--edge-top) + 50px);left:var(--edge-left);right:var(--edge-right)}.canvas-wrap-full:has(.dl-diagram-tabs){--float-top:max(calc(var(--edge-top) + 56px), var(--diagram-tabs-bottom,0px))}}@media (width<700px) and (orientation:landscape),(height<520px) and (orientation:landscape){.canvas-wrap-full{--pop-limit:calc(55 * var(--vh))}.canvas-wrap-full:has(.dl-legend-float.open){--pop-limit:calc(40 * var(--vh))}.dl-pop{width:min(420px,60vw);right:auto}.dl-toc:not(.dl-toc-mini){left:auto;right:var(--edge-right);top:env(safe-area-inset-top);bottom:env(safe-area-inset-bottom);width:min(340px,50vw);height:calc(100 * var(--vh) - env(safe-area-inset-top) - env(safe-area-inset-bottom));max-height:calc(100 * var(--vh) - env(safe-area-inset-top) - env(safe-area-inset-bottom));border-radius:12px 0 0 12px;padding-bottom:0;animation:.18s ease-out dl-drawer-left}}@media (height<520px){.dl-pop{max-height:min(var(--pop-limit), calc(100 * var(--vh) - var(--float-top) - var(--card-bottom) - 8px));padding:4px 0}.dl-pop .dl-pop-head{margin:-4px 0 0;padding:4px 12px 0 14px}.dl-pop-actions{padding:2px 10px 0}.dl-pop .dl-demo-footer{padding-top:2px;padding-bottom:0}.dl-pop .dl-demo{white-space:nowrap;padding:3px 4px;font-size:11px}}@media (width<700px) and (orientation:portrait){.dl-pop{max-height:min(var(--pop-limit), max(0px, calc(50 * var(--vh) - var(--float-top) - var(--card-bottom))))}}@media (width<700px) and (height<620px) and (orientation:portrait){.dl-pop{padding:4px 0}.dl-pop .dl-pop-head{margin:-4px 0 0;padding:4px 12px 0 14px}.dl-pop-actions{padding:2px 10px 0}}@keyframes dl-drawer-up{0%{transform:translateY(100%)}to{transform:none}}@keyframes dl-drawer-left{0%{transform:translate(100%)}to{transform:none}}@media (prefers-reduced-motion:reduce){.dl-toc:not(.dl-toc-mini),.dl-toc-row.on{animation:none}.progress>div{transition:none}}@media (pointer:coarse){.dl-diagram-tab,.dl-toc-row,.dl-toc-ov,.dl-pop-ref,.dl-pop-sub,.dl-pop-crumb,.dl-toc-intro-toggle,.dl-point-more>summary,.dl-demo,.dl-toc-open,.dl-legend-head,.dl-toc-controls button,.dl-toc-controls .theme-toggle,.dl-pop-close,.dl-toc-collapse{box-sizing:border-box;min-width:40px;min-height:40px}}.dl-note-layer{z-index:5;pointer-events:none;position:absolute;inset:0;overflow:hidden}.dl-note-world{transform-origin:0 0;width:0;height:0;position:absolute;top:0;left:0}.dl-note{box-sizing:border-box;white-space:nowrap;color:#27374a;pointer-events:auto;background:#fff;border:0;border-radius:4px;align-items:center;gap:5px;padding:2px 8px;font:500 14px/20px DM Sans,PingFang SC,Microsoft YaHei,sans-serif;display:flex;position:absolute;overflow:hidden}.dl-note[hidden]{display:none}.dl-note-step{color:#174e92;cursor:pointer;background:#e8f1ff}.dl-note-point{color:#694710;cursor:pointer;background:#fff6dd}.dl-note-number{font-variant-numeric:tabular-nums;flex:none;font-size:12px}.dl-note-takeaway{color:#285c55;pointer-events:none;background:#f4f8f7}.dl-note-takeaway[data-direction=outbound]{color:#155b9c;background:#e7f2ff}.dl-note-takeaway[data-direction=return]{color:#995022;background:#fff0e2}.dl-note-group{color:#285c55;background:0 0;padding:0 3px}.dl-note:focus-visible{outline-offset:2px;outline:2px solid #206bd1}html[data-theme=dark] .dl-note{color:#e4edf3;background:#26323b}html[data-theme=dark] .dl-note-step{color:#cfe1ff;background:#203b60}html[data-theme=dark] .dl-note-point{color:#f5dcaa;background:#4a391e}html[data-theme=dark] .dl-note-takeaway{color:#b6e1d3;background:#233d36}html[data-theme=dark] .dl-note-takeaway[data-direction=outbound]{color:#b9d8ff;background:#233d5b}html[data-theme=dark] .dl-note-takeaway[data-direction=return]{color:#ffd1aa;background:#56371f}html[data-theme=dark] .dl-note-group{background:0 0}.dl-note-toolbar{z-index:12;left:var(--edge-left);bottom:calc(var(--edge-bottom) + 50px);border:1px solid var(--border);background:var(--panel);max-width:calc(100% - 16px);box-shadow:var(--shadow);border-radius:10px;flex-wrap:wrap;gap:4px;padding:4px;display:flex;position:absolute}.dl-note-toolbar button{min-height:32px;color:var(--text);background:0 0;border:0;border-radius:6px;padding:4px 9px;font-size:12px}.dl-note-toolbar button:hover,.dl-note-toolbar button[aria-pressed=true]{color:var(--accent);background:var(--card-hover)}.dl-note-toolbar button:disabled{color:var(--btn-disabled);cursor:wait}.dl-note-export-status{color:var(--text-2);padding:7px;font-size:12px}.dl-note-toolbar button:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.dl-note-summary{overscroll-behavior:contain;flex:1;min-height:0;padding:8px 12px 16px;overflow:auto}.dl-note-explainer,.dl-note-empty{color:var(--text-2);margin:4px 0 10px;font-size:12px;line-height:1.5}.dl-note-summary h3{color:var(--text-2);margin:13px 0 6px;font-size:12px}.dl-note-summary-step{width:100%;color:var(--text);text-align:left;background:0 0;border:0;border-radius:6px;gap:9px;padding:7px;font-size:13px;line-height:1.4;display:flex}.dl-note-summary-step:hover{background:var(--card-hover)}.dl-note-summary-step b{min-width:22px;color:var(--accent);font-variant-numeric:tabular-nums;flex:none}.dl-note-summary-take{flex-wrap:wrap;gap:4px 7px;padding:6px 7px;font-size:12px;line-height:1.45;display:flex}.dl-note-summary-owner{color:var(--text-2);text-overflow:ellipsis;white-space:nowrap;max-width:100%;overflow:hidden}.dl-note-direction{font-weight:650}.dl-note-direction:empty{display:none}.dl-note-direction.d-outbound{color:#2775c3}.dl-note-direction.d-return{color:#b9672b}.dl-note-direction.d-both{color:var(--accent)}.dl-note-unlocated{color:var(--text-2);margin:12px 0;font-size:12px}.dl-note-unlocated summary{cursor:pointer}.dl-sequence-guide{margin:10px 0;font-size:12px;line-height:1.45}.dl-sequence-guide h3{color:var(--text);margin:8px 0 4px;font-size:12px}.dl-sequence-guide p{color:var(--text-2);margin:4px 0 8px}.dl-sequence-guide-row{overflow-wrap:anywhere;align-items:baseline;gap:5px;padding:3px 0;display:flex}.dl-sequence-guide-row bdi{flex:1;min-width:0}.dl-sequence-bar{vertical-align:middle;border-radius:2px;flex:none;width:16px;height:5px;display:inline-block}.dl-sequence-bar.outbound{background:#1971c2}.dl-sequence-bar.return{background:#b85b22}.dl-sequence-layer{z-index:6;pointer-events:none;position:absolute;inset:0;overflow:hidden}.dl-sequence-marker{color:#fff;white-space:nowrap;font-variant-numeric:tabular-nums;background:#155b9c;border-radius:10px;padding:1px 3px;font:700 16px/20px DM Sans,PingFang SC,Microsoft YaHei,sans-serif;position:absolute;transform:translate(-50%,-50%)}.dl-sequence-marker[data-direction=回程]{background:#995022}.dl-return-on-graph{z-index:8;left:var(--edge-left);bottom:calc(var(--edge-bottom) + 100px);box-sizing:border-box;border:1px solid var(--border);background:var(--panel);width:min(320px,100% - 24px);max-height:20vh;color:var(--text);border-radius:8px;padding:8px 10px;font-size:12px;line-height:1.45;position:absolute;overflow:auto}.dl-return-on-graph p{white-space:pre-line;overflow-wrap:anywhere;margin:4px 0 0}.dl-mainline{z-index:7;overscroll-behavior:contain;background:var(--panel);color:var(--text);border:1px solid var(--border);border-radius:12px;position:absolute;inset:64px 16px 108px;overflow:auto}.canvas-wrap-full:has(.dl-panel:not(.dl-toc-mini)) .dl-mainline{right:calc(var(--dl-panel-width,360px) + 24px)}.canvas-wrap-full:has(.dl-mainline) .dl-legend.dl-legend-float{z-index:9}.dl-mainline-page{max-width:920px;margin:0 auto;padding:12px 24px 18px;font-size:14px;line-height:1.45}.dl-mainline-page h2{margin:2px 0;font-size:21px;line-height:1.25}.dl-mainline-page h3{margin:8px 0 4px;font-size:15px}.dl-mainline-page header p{margin:2px 0}.dl-mainline-eyebrow{color:var(--accent);font-weight:700}.dl-mainline-legend{color:var(--text-2);flex-wrap:wrap;gap:5px 16px;padding:5px 0;display:flex}.dl-mainline-legend span{align-items:center;gap:6px;display:inline-flex}.dl-mainline-scope p,.dl-mainline-return p{white-space:pre-line;overflow-wrap:anywhere;margin:4px 0}.dl-mainline-muted,.dl-mainline-page footer{color:var(--text-2)}.dl-mainline-page footer{overflow-wrap:anywhere;margin-top:14px}.dl-mainline-edges{gap:4px;display:grid}.dl-mainline-edge{direction:ltr;grid-template-columns:minmax(0,1fr) minmax(180px,2fr) minmax(0,1fr);align-items:center;gap:8px;display:grid}.dl-mainline-node{border:1px solid var(--border);background:var(--card-hover);text-align:center;overflow-wrap:anywhere;border-radius:7px;min-width:0;padding:8px 10px}.dl-mainline-bridge{text-align:center;min-width:0}.dl-mainline-arrow{justify-content:center;align-items:center;min-height:20px;margin:0 5px;display:flex;position:relative}.dl-mainline-arrow:before{content:"";border-top:2px solid var(--mainline-edge-color);position:absolute;top:50%;left:0;right:2px}.dl-mainline-arrow.cross-process:before{border-top-style:dashed}.dl-mainline-arrow:after{content:"";border-top:2px solid var(--mainline-edge-color);border-right:2px solid var(--mainline-edge-color);width:7px;height:7px;position:absolute;top:calc(50% - 4px);right:0;transform:rotate(45deg)}.dl-mainline-number{z-index:1;background:var(--panel);color:#155b9c;padding:0 4px;font-weight:700;position:relative}.dl-mainline-number[data-direction=回程]{color:#995022}html[data-theme=dark] .dl-mainline-number{color:#b9d8ff}html[data-theme=dark] .dl-mainline-number[data-direction=回程]{color:#ffd1aa}.dl-mainline-description{overflow-wrap:anywhere;flex-wrap:wrap;justify-content:center;align-items:baseline;gap:3px;display:flex}.dl-mainline-description bdi{min-width:0}@media (width<700px),(height<520px){.dl-mainline{top:var(--float-top,60px);bottom:115px;left:8px;right:8px}.canvas-wrap-full:has(.dl-panel:not(.dl-toc-mini)) .dl-mainline{top:var(--float-top,60px);bottom:115px;left:8px;right:8px}.dl-mainline-page{padding:12px}.dl-mainline-edge{grid-template-columns:minmax(65px,1fr) minmax(105px,1.7fr) minmax(65px,1fr);gap:4px}.dl-mainline-node{padding:6px 4px}.canvas-wrap-full:has(.dl-pop) .dl-note-toolbar{bottom:auto;top:var(--float-top)}.dl-drawer-open .dl-note-toolbar{visibility:hidden}.dl-note-toolbar button{min-height:40px}}.dl-source-github{display:none}@media (width>=700px) and (height>=520px){.dl-toc-controls button{padding:0 6px;font-size:12px}.dl-point-nav{border-top:1px solid var(--border);flex:none;padding:9px 14px}.dl-point-progress{color:var(--text-2);margin-bottom:7px;font-size:12px}.dl-point-nav-buttons{justify-content:space-between;gap:8px;display:flex}.dl-point-nav button{border:1px solid var(--border);background:var(--btn-bg);min-height:34px;color:var(--btn-text);font:inherit;cursor:pointer;border-radius:7px;padding:6px 9px;font-size:12px}.dl-point-nav .dl-point-next{color:var(--accent);border-color:color-mix(in srgb, var(--accent) 45%, var(--border));margin-left:auto}.dl-point-nav button:hover{background:var(--card-hover)}.dl-point-nav button:focus-visible,.dl-point-sources>summary:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.dl-point-end{color:var(--text-2);align-self:center;font-size:12px}.dl-point-sources{border:1px solid var(--border);border-radius:7px;margin:8px 0;padding:7px 9px}.dl-point-sources>summary{color:var(--accent);cursor:pointer;font-size:12.5px}.dl-source-object{overflow-wrap:anywhere;margin:10px 0 6px;font-size:13px;font-weight:600}.dl-point-sources .dl-source-card{margin-bottom:6px}.dl-source-name{-webkit-user-select:text;user-select:text;font-size:13.5px;line-height:1.6}.dl-source-actions{gap:9px 12px}.dl-source-action{font-size:12.5px}.dl-source-github{display:inline}}
