: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{flex-wrap:wrap;gap:6px;margin-top:12px;padding-top:4px;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-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:10px;padding:6px 10px 6px 12px;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:52px;font-size:12.5px}html[data-theme=dark] .dl-motion-layer,html[data-theme=dark] .dl-edge-flow{filter:invert(93%)hue-rotate(180deg)}.dl-edge-flow{pointer-events:none;z-index:3;contain:strict;will-change:transform;width:100%;height:100%;position:absolute;inset:0;overflow:hidden}.dl-edge-flow path{fill:none;stroke-linecap:butt;stroke-linejoin:round}.dl-edge-flow-dash{stroke-dasharray:8 6;animation:1.4s linear infinite dl-edge-flow}.dl-edge-flow path.dl-edge-flow-hit{stroke:#0000}@keyframes dl-edge-flow{to{stroke-dashoffset:-14px}}@media (prefers-reduced-motion:reduce){.dl-edge-flow-dash{animation:none}}.dl-toc-idx{text-align:right;width:2em;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{width:2.6em}.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.on{background:color-mix(in srgb, var(--accent) 14%, transparent);box-shadow:inset 3px 0 0 var(--accent)}.dl-toc-row.on:hover{background:color-mix(in srgb, var(--accent) 18%, transparent)}.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,.dl-pr-card{z-index:100;overflow-wrap:anywhere;flex-direction:column;width:min(340px,100vw - 24px);max-height:min(440px,100dvh - 24px);font-size:13.5px;line-height:1.6;display:flex;position:fixed;top:12px;left:12px;overflow:hidden}.dl-term-head,.dl-pr-head{flex:none;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:9px;display:flex}.dl-term-label,.dl-pr-count{color:var(--text-2);letter-spacing:.03em;font-size:11px;font-weight:600}.dl-term-title,.dl-pr-title{color:var(--text);margin:2px 0 0;font-size:15px;line-height:1.4}.dl-term-close,.dl-pr-close{cursor:pointer;background:0 0;border:0;flex:none;width:32px;height:32px;line-height:1}.dl-term-close:focus-visible,.dl-pr-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-ov-mark{color:#1971c2}.dl-pop-head .dl-kind{margin-right:2px}.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-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-pop-sublist{flex-direction:column;gap:2px;margin-top:14px;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-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-diagram-tabs,.dl-edge-tip,.dl-diagram-empty,.dl-zoom,.dl-toc-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-diagram-tabs{top:var(--edge-top);overscroll-behavior:contain;touch-action:pan-x;flex-wrap:nowrap;max-width:calc(100% - 160px)}.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:var(--edge-right);max-width:calc(100vw - 16px);transform:none}}.dl-toc-list,.dl-pop-scroll,.dl-pop-refs{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{flex:none}.dl-toc-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}.dl-zoom>button:first-child{border-radius:9px 0 0 9px}.dl-zoom>button:last-child{border-radius:0 9px 9px 0}.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-right:1px solid var(--border);place-items:center;padding:0;display:grid}[data-tip]{position:relative}[data-tip]:after{content:attr(data-tip);z-index:40;background:var(--text);color:var(--card);white-space:nowrap;pointer-events:none;opacity:0;border-radius:6px;padding:4px 8px;font-size:12px;font-weight:500;line-height:16px;transition:opacity .12s .25s;position:absolute;bottom:calc(100% + 8px);left:50%;transform:translate(-50%)}[data-tip]:hover:after,[data-tip]:focus-visible:after{opacity:1}@media (hover:none){[data-tip]:hover:not(:focus-visible):after{opacity:0}}@media (pointer:coarse){.dl-zoom button{min-width:44px;height:44px}}.dl-zoom button:hover,.dl-toc-fab:hover{background:var(--card-hover)}.dl-toc-fab:focus-visible,.dl-zoom button:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}@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{top:var(--edge-top);white-space:nowrap;height:44px;right:var(--edge-right);text-overflow:ellipsis;width:104px;padding:0 10px;font-size:13px;font-weight:600;overflow:hidden}.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-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-drawer-mask{z-index:30;touch-action:none;background:#0f172a6b;position:absolute;inset:0}.dl-toc{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-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))}.dl-pop{width:min(420px,60vw);right:auto}.dl-toc{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}}@media (width<700px) and (orientation:portrait){.canvas-wrap-full{--pop-limit:calc(28 * var(--vh))}.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,.dl-toc-row.on{animation:none}.progress>div{transition:none}}@media (pointer:coarse){.dl-diagram-tab,.dl-toc-row,.dl-pop-ref,.dl-pop-sub,.dl-pop-crumb,.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-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-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-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-point-frame-text{overflow-wrap:anywhere;max-height:24vh;font-size:13px;line-height:1.6;overflow-y:auto}.dl-point-frame-text p{margin:6px 0}.dl-teaching{z-index:8;left:12px;right:12px;bottom:calc(var(--edge-bottom,8px) + 104px);background:var(--panel);color:var(--text);box-shadow:var(--shadow);border:1px solid #adb5bd;border-radius:12px;flex-direction:column;gap:8px;max-height:34%;padding:12px 16px;display:flex;position:absolute}.dl-teaching header,.dl-teaching footer{flex-shrink:0;justify-content:space-between;align-items:center;gap:12px;display:flex}.dl-teaching button{min-height:40px;color:inherit;cursor:pointer;background:0 0;border:1px solid #adb5bd;border-radius:8px;padding:6px 16px}.dl-teaching button:disabled{opacity:.55;cursor:default}.dl-teaching-body{overscroll-behavior:contain;overflow:auto}.dl-teaching h3,.dl-teaching p{margin:0 0 6px}[data-theme=dark] .dl-teaching{color:#f1f3f5;background:#202124;border-color:#5f6368}@media (width<=699px){.dl-teaching{max-height:30%;right:12px}}.dl-stream-slot{z-index:23;top:var(--edge-top);right:var(--edge-right);position:absolute}.dl-stream-status{border:1px solid var(--border);background:var(--btn-bg);border-radius:7px;flex:none;place-items:center;width:28px;height:28px;display:inline-grid;position:relative}.dl-stream-status button{border-radius:inherit;width:100%;height:100%;min-height:0;color:inherit;cursor:pointer;background:0 0;border:0;padding:0;position:absolute;inset:0}.dl-stream-status button:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.dl-stream-status-mark{background:#868e96;border-radius:50%;width:8px;height:8px}.dl-stream-status[data-state=synced] .dl-stream-status-mark{background:#2b8a3e}.dl-stream-status[data-state=connecting] .dl-stream-status-mark{background:var(--accent)}.dl-stream-status[data-state=cached] .dl-stream-status-mark{background:0 0;box-shadow:inset 0 0 0 2px #e67700}.dl-stream-status[data-state=error] .dl-stream-status-mark{box-shadow:none;background:#e03131;border-radius:1px}@media (pointer:coarse){.dl-stream-status{width:40px;height:40px}}@media (prefers-reduced-motion:no-preference){.dl-stream-status[data-state=connecting] .dl-stream-status-mark{animation:1.2s ease-in-out infinite dl-stream-pulse}}@keyframes dl-stream-pulse{50%{opacity:.35}}.dl-reading-nav{flex:none;justify-content:space-between;gap:8px;padding:2px 10px;display:flex}.dl-reading-nav button{max-width:50%;min-height:44px;color:var(--accent);font:inherit;cursor:pointer;background:0 0;border:0;border-radius:6px;font-size:12px}.dl-reading-nav button:disabled{color:var(--text-2);cursor:default}.dl-reading-nav button:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.dl-point-frame-text{max-height:none;overflow:visible}@media (width<700px) and (height<620px),(height<520px){.dl-pop .dl-pop-head{box-sizing:border-box;min-height:44px;padding-right:164px}.dl-pop .dl-pop-head>.dl-kind,.dl-pop .dl-pop-count,.dl-pop .dl-pop-hint{display:none}.dl-pop .dl-pop-close{width:44px;height:44px;position:absolute;top:0;right:12px}.dl-pop .dl-reading-nav{gap:8px;width:100px;padding:0;position:absolute;top:0;right:56px}.dl-pop .dl-reading-nav button{width:46px;min-height:44px;font-size:0}.dl-pop .dl-reading-nav button span{display:none}.dl-pop .dl-reading-nav button:after{content:"↑";font-size:18px}.dl-pop .dl-reading-nav button:last-child:after{content:"↓"}}.dl-toc-controls-gap{flex:1}.dl-view-link{all:unset;color:var(--accent);cursor:pointer;text-decoration:underline;text-decoration-thickness:1px;-webkit-text-decoration-color:color-mix(in srgb, var(--accent) 55%, transparent);text-decoration-color:color-mix(in srgb, var(--accent) 55%, transparent);text-underline-offset:3px;border-radius:3px}.dl-view-link:hover{background:color-mix(in srgb, var(--accent) 12%, transparent)}.dl-view-link.on{-webkit-text-decoration-color:var(--accent);text-decoration-color:var(--accent);background:color-mix(in srgb, var(--accent) 10%, transparent);font-weight:650;text-decoration-thickness:2px}.dl-ext-icon{vertical-align:-.05em;margin-left:2px;display:inline-block}.dl-pop-body :is(h1,h2,h3,h4),.dl-term-body :is(h1,h2,h3,h4){font-size:1em;line-height:inherit;margin:12px 0 4px;font-weight:650}.dl-pop-body :is(h1,h2){font-size:calc(1em + 1px)}.dl-takeaway{border-left:3px solid var(--accent);background:color-mix(in srgb, var(--accent) 7%, transparent);border-radius:4px;margin:0 0 10px;padding:8px 10px}.dl-takeaway strong{margin-bottom:2px;font-size:12px;display:block}.dl-takeaway span{font-weight:650}.step-card-narration .dl-reader-direction{background:var(--card-hover);border-radius:4px;padding:6px 8px 6px 12px;position:relative}.dl-direction-swatch{border-radius:3px;width:4px;position:absolute;top:0;bottom:0;left:0}html[data-theme=dark] .dl-direction-swatch{filter:invert(93%)hue-rotate(180deg)}.step-card-narration .dl-reader-hint{border:1px solid var(--border-strong);background:var(--card-hover);border-radius:6px;padding:8px 10px}.dl-view-link:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.dl-pr-card{z-index:30;transform-origin:50%;width:min(560px,100% - 28px);font-size:15px;line-height:1.6;position:absolute;top:20px;left:14px;overflow:visible}.dl-pr-card .dl-pr-body.dl-pop-body,.dl-pr-card .dl-point-frame-text{font-size:inherit;line-height:inherit}@media (width<=1180px){.dl-pr-card{width:min(500px,100% - 28px);font-size:14px}}.dl-pr-card[data-side=right]{transform-origin:0}.dl-pr-card[data-side=left]{transform-origin:100%}.dl-pr-head>div{min-width:0}.dl-pr-count{font-variant-numeric:tabular-nums}.dl-pr-summary-hidden{clip-path:inset(50%);width:1px;height:1px;margin:-1px;padding:0;position:absolute}.dl-pr-body{overscroll-behavior:contain;touch-action:pan-y;-webkit-overflow-scrolling:touch;min-height:0;padding:0 2px;overflow:auto}.dl-pr-body pre{max-width:100%;overflow:auto}.dl-pr-body .dl-pop-refs{max-height:none;padding:8px 0 0;overflow:visible}.dl-pr-foot{flex:none;justify-content:space-between;align-items:center;gap:8px;margin-top:10px;display:flex}.dl-pr-nav{gap:6px;display:flex}.dl-pr-nav button{border:1px solid var(--border);background:var(--btn-bg);min-width:32px;height:32px;color:var(--btn-text);cursor:pointer;border-radius:6px;padding:0 10px;font-size:13px}.dl-pr-nav button:hover:not(:disabled){border-color:var(--accent)}.dl-pr-nav button:disabled{opacity:.4;cursor:default}.dl-pr-bar{z-index:34;border:1px solid var(--border-strong);background:var(--card);color:var(--text);border-radius:999px;align-items:center;gap:6px;max-width:calc(100% - 400px);padding:5px 8px;display:flex;position:absolute;bottom:14px;left:50%;transform:translate(-50%);box-shadow:0 4px 16px #0002}.dl-pr-toc-btn{min-width:32px;height:32px;color:var(--text-2);cursor:pointer;background:0 0;border:0;border-radius:999px;flex:none;justify-content:center;align-items:center;gap:5px;padding:0;font-size:13px;display:flex}.dl-pr-toc-btn:hover,.dl-pr-toc-btn[aria-expanded=true]{background:var(--card-hover);color:var(--text)}.dl-pr-dots{overscroll-behavior:contain;scrollbar-width:none;-webkit-overflow-scrolling:touch;scroll-snap-type:none;touch-action:pan-x;align-items:center;min-width:0;display:flex;overflow:auto hidden}.dl-pr-dots::-webkit-scrollbar{width:0;height:0;display:none}.dl-pr-dot{cursor:pointer;background:0 0;border:0;border-radius:8px;flex:none;place-items:center;width:26px;height:32px;padding:0;display:grid}.dl-pr-dot:after{content:"";background:var(--border-strong);border-radius:999px;width:8px;height:8px;transition:width .16s,background .16s}.dl-pr-dot.done:after{background:color-mix(in srgb, var(--accent) 45%, var(--border-strong))}.dl-pr-dot.on:after{background:var(--accent);width:20px}.dl-pr-dot:hover:after{background:var(--accent)}.dl-pr-filter{background:color-mix(in srgb, var(--accent) 10%, transparent);min-width:0;max-width:240px;height:26px;color:var(--text);white-space:nowrap;border-radius:999px;flex:0 auto;align-items:center;padding:0 2px 0 10px;font-size:12px;display:flex}.dl-pr-filter-name{text-overflow:ellipsis;min-width:0;font-weight:500;overflow:hidden}.dl-pr-filter-n{white-space:pre;color:var(--text-2);font-variant-numeric:tabular-nums;flex:none}.dl-pr-filter-x{width:22px;height:22px;color:var(--text-2);cursor:pointer;background:0 0;border:0;border-radius:999px;flex:none;place-items:center;margin-left:4px;padding:0;display:grid;position:relative}.dl-pr-filter-x:hover{background:var(--card-hover);color:var(--text)}.dl-pr-dots.filtered{flex:auto;min-width:96px}.dl-pr-dots.filtered .dl-pr-dot.dim:after{opacity:.4;width:5px;height:5px}.dl-pr-dots.filtered .dl-pr-dot.dim.on:after{width:5px}.dl-pr-dot.hit:after{display:none}.dl-pr-dot-n{box-sizing:border-box;background:color-mix(in srgb, var(--accent) 14%, transparent);min-width:18px;height:18px;color:var(--accent);font-variant-numeric:tabular-nums;border-radius:999px;place-items:center;padding:0 3px;font-size:10.5px;font-weight:600;line-height:1;transition:background .16s,color .16s;display:grid}.dl-pr-dot.hit.on .dl-pr-dot-n{background:var(--accent);color:var(--accent-text)}.dl-pr-dot.hit:hover .dl-pr-dot-n{background:color-mix(in srgb, var(--accent) 28%, transparent)}.dl-pr-dot.hit.on:hover .dl-pr-dot-n{background:var(--accent)}.dl-pr-toc-mask{z-index:31;background:0 0;position:absolute;inset:0}.dl-pr-toc.dl-toc{z-index:33;border:1px solid var(--border-strong);background:var(--card);border-radius:12px;flex-direction:column;width:380px;max-width:calc(100% - 28px);max-height:60%;display:flex;position:absolute;inset:auto auto 76px 50%;transform:translate(-50%);box-shadow:0 10px 32px #0003,0 2px 8px #0002}.dl-pr-toc-head{border-bottom:1px solid var(--border);flex:none;align-items:center;gap:8px;padding:12px 14px 8px;display:flex}.dl-pr-toc-head b{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-size:14px;overflow:hidden}.dl-pr-toc-close{width:32px;height:32px;color:var(--text-2);cursor:pointer;background:0 0;border:0;border-radius:6px;flex:none;font-size:20px}.dl-pr-toc .dl-toc-row{border-radius:6px}.dl-pr-toc .dl-toc-sub{padding-left:26px}.dl-pr-card button:focus-visible,.dl-pr-body:focus-visible,.dl-pr-toc button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.dl-pr-bar button:focus{outline:none}.dl-pr-bar button:focus-visible{background:color-mix(in srgb, var(--accent) 10%, transparent);outline:none}.canvas-wrap:focus-visible{outline:2px solid var(--accent);outline-offset:-3px}@media (pointer:coarse){.dl-pr-dot{width:44px;height:44px}.dl-pr-toc-btn{min-width:44px;min-height:44px}.dl-pr-filter-x:before{content:"";position:absolute;inset:-11px}}@media (prefers-reduced-motion:reduce){.dl-pr-dot:after,.dl-pr-dot-n{transition:none}}.dl-corner{z-index:36;top:var(--edge-top);right:var(--edge-right);align-items:center;gap:8px;display:flex;position:absolute}.dl-status-slot{z-index:23;top:calc(var(--edge-top) + 6px);left:calc(var(--edge-left) + 6px);position:absolute}.dl-status-slot .dl-stream-status{width:24px;height:24px;box-shadow:none;background:0 0;border:0;border-radius:50%}@media (pointer:coarse){.dl-status-slot .dl-stream-status{width:44px;height:44px}.dl-status-slot{top:var(--edge-top);left:var(--edge-left)}}.dl-gear{display:block}.dl-settings-row{justify-content:space-between;align-items:center;gap:16px;padding:6px 6px 6px 10px;font-size:13px;display:flex}.dl-settings-row>span{white-space:nowrap}.dl-seg{background:var(--card-hover);border-radius:8px;gap:2px;padding:2px;display:inline-flex}.dl-seg .dl-seg-btn{width:32px;height:28px;min-height:0;color:var(--text-2);cursor:pointer;background:0 0;border:0;border-radius:6px;place-content:center;place-items:center;padding:0;display:grid}.dl-seg.dl-locale-seg{flex-shrink:0}.dl-seg.dl-locale-seg .dl-seg-btn{white-space:nowrap;width:auto;min-width:44px;padding:0 8px}.dl-seg .dl-seg-btn[aria-checked=true]{background:var(--card);color:var(--text);box-shadow:0 1px 3px #0002}.dl-seg .dl-seg-btn:focus-visible{outline:2px solid var(--accent);outline-offset:1px}@media (pointer:coarse){.dl-seg .dl-seg-btn{width:44px;height:40px}}.dl-settings{position:relative}.dl-corner-btn{border:1px solid var(--border);background:var(--panel);width:36px;height:36px;color:var(--text-2);box-shadow:var(--shadow);cursor:pointer;border-radius:10px;place-items:center;padding:0;display:grid}.dl-corner-btn:hover,.dl-corner-btn[aria-expanded=true]{background:var(--card-hover);color:var(--text)}.dl-corner-btn:focus-visible,.dl-settings-item:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.dl-settings-menu{border:1px solid var(--border);background:var(--panel);min-width:188px;color:var(--text);transform-origin:100% 0;border-radius:12px;padding:6px;animation:.16s ease-out both dlSettingsIn;position:absolute;top:calc(100% + 8px);right:0;box-shadow:0 12px 32px -8px #0f172a33,0 2px 8px #0f172a14}html[data-theme=dark] .dl-settings-menu{box-shadow:0 12px 32px -6px #000000b3}@keyframes dlSettingsIn{0%{opacity:0;transform:translateY(-4px)scale(.97)}to{opacity:1;transform:none}}@media (prefers-reduced-motion:reduce){.dl-settings-menu{animation:none}}.dl-settings-item{width:100%;min-height:36px;color:var(--text);cursor:pointer;background:0 0;border:0;border-radius:8px;justify-content:space-between;align-items:center;gap:12px;padding:0 10px;font-size:13px;display:flex}.dl-settings-item:hover{background:var(--card-hover)}.dl-switch{background:var(--border-strong);border-radius:999px;width:30px;height:18px;transition:background .15s;position:relative}.dl-switch i{background:#fff;border-radius:50%;width:14px;height:14px;transition:transform .15s;position:absolute;top:2px;left:2px}.dl-switch.on{background:var(--accent)}.dl-switch.on i{transform:translate(12px)}@media (pointer:coarse){.dl-corner-btn,.dl-corner .dl-stream-status{width:44px;height:44px}.dl-settings-item{min-height:44px}}:root{--corner-reserve:88px}@media (pointer:coarse){:root{--corner-reserve:104px}}@media (width>=700px) and (height>=520px){.dl-diagram-tabs{max-width:calc(100% - 2 * (var(--edge-right) + var(--corner-reserve)))}}@media (700px<=width<=1100px) and (height>=520px){.dl-diagram-tabs{right:calc(var(--edge-right) + var(--corner-reserve));max-width:none}}:root,html[data-theme=light]{--float-bg:#fff;--float-line:#0f172a14;--float-title:#0f172a;--float-text:#334155;--float-muted:#64748b;--float-faint:#94a3b8;--float-hover:#0f172a0d;--float-btn:#0f172a0f;--float-btn-hover:#0f172a1a;--float-link:#2563eb;--float-shadow:0 0 0 1px #0f172a0f, 0 1px 2px #0f172a0f, 0 8px 24px -6px #0f172a24, 0 24px 56px -16px #0f172a2e;--float-radius:14px;--float-fade:22px}html[data-theme=dark]{--float-bg:#1b1c1f;--float-line:#ffffff14;--float-title:#f4f4f5;--float-text:#d4d4d8;--float-muted:#a1a1aa;--float-faint:#71717a;--float-hover:#ffffff0f;--float-btn:#ffffff12;--float-btn-hover:#ffffff1f;--float-link:#7aa7ff;--float-shadow:0 0 0 1px #ffffff12, inset 0 1px 0 #ffffff0d, 0 10px 30px -6px #0009, 0 28px 64px -18px #000000b3}@keyframes dl-float-in{0%{opacity:0;transform:translateY(3px)scale(.985)}to{opacity:1;transform:none}}.dl-float.dl-float{background:var(--float-bg);border-radius:var(--float-radius);box-shadow:var(--float-shadow);color:var(--float-text);border:0;line-height:1.7;animation:.2s cubic-bezier(.2,.8,.2,1) both dl-float-in}.dl-pr-card.dl-float{padding:16px 20px 14px}.dl-term-popover.dl-float{padding:14px 18px 16px}.dl-float.dl-float:before{content:"";background:var(--float-bg);z-index:-1;width:12px;height:12px;box-shadow:-1px 1px 0 0 var(--float-line);border:0;border-radius:2px;display:none;position:absolute;transform:rotate(45deg)}.dl-float.dl-float[data-side=right]:before{left:-6px;top:calc(var(--tail) - 6px);display:block}.dl-float.dl-float[data-side=left]:before{right:-6px;top:calc(var(--tail) - 6px);box-shadow:1px -1px 0 0 var(--float-line);display:block}.dl-float.dl-float[data-side=bottom]:before{top:-6px;left:calc(var(--tail) - 6px);box-shadow:-1px -1px 0 0 var(--float-line);display:block}.dl-float.dl-float[data-side=top]:before{bottom:-6px;left:calc(var(--tail) - 6px);box-shadow:1px 1px 0 0 var(--float-line);display:block}.dl-pr-icon{flex:none;display:block}.dl-float .dl-pr-head,.dl-float .dl-term-head{margin-bottom:8px}.dl-float .dl-pr-count,.dl-float .dl-term-label{color:var(--float-muted);letter-spacing:0;font-size:12px;font-weight:500}.dl-float .dl-pr-title,.dl-float .dl-term-title{color:var(--float-title);letter-spacing:-.01em;margin-top:3px;font-size:1.1em;font-weight:600;line-height:1.45}.dl-float .dl-pr-close,.dl-float .dl-term-close{width:32px;height:32px;color:var(--float-muted);border-radius:8px;place-items:center;margin:-6px -10px 0 0;display:grid}.dl-float .dl-pr-close:hover,.dl-float .dl-term-close:hover{background:var(--float-hover);color:var(--float-title)}.dl-float .dl-pr-body,.dl-float .dl-term-body{scrollbar-width:thin;scrollbar-color:var(--float-line) transparent}.dl-float .dl-pr-body[data-more=true],.dl-float .dl-term-body[data-more=true]{-webkit-mask-image:linear-gradient(to bottom, #000 calc(100% - var(--float-fade)), transparent);-webkit-mask-image:linear-gradient(to bottom, #000 calc(100% - var(--float-fade)), transparent);mask-image:linear-gradient(to bottom, #000 calc(100% - var(--float-fade)), transparent)}.dl-float a,.dl-float .dl-term-link{color:var(--float-link)}.dl-float .step-card-narration .dl-reader-direction{background:0 0;border-radius:0;padding:2px 0 2px 12px}.dl-float .dl-direction-swatch{width:3px;top:4px;bottom:4px}.dl-float .step-card-narration .dl-reader-hint{color:var(--float-muted);background:0 0;border:0;padding:0}.dl-float .dl-takeaway{background:var(--float-hover);border:0;border-radius:10px;padding:10px 12px}.dl-float .dl-takeaway strong{color:var(--float-muted);font-weight:500}.dl-float .dl-takeaway span{color:var(--float-title);font-weight:600}.dl-pr-card.dl-float{max-height:min(45dvh,440px)}@media (width<=1180px){.dl-pr-card.dl-float{max-height:min(45dvh,400px)}}.dl-pr-card .dl-pr-body{flex:auto;padding-bottom:4px}.dl-pr-card .dl-pr-body>:first-child,.dl-pr-card .dl-pr-body>:first-child>:first-child{margin-top:0}.dl-pr-card .dl-pr-head{align-items:center}.dl-pr-card .dl-pr-heading{flex:auto;min-width:0}.dl-pr-card .dl-pr-heading .dl-pr-title{overflow-wrap:anywhere;margin:0}.dl-pr-card .dl-pr-heading .dl-pr-count{margin:2px 0 0}.dl-pr-tools{flex:none;align-self:center;align-items:center;gap:2px;margin:0 -8px 0 0;display:flex}.dl-float .dl-pr-tools .dl-pr-close{width:28px;height:28px;margin:0}.dl-pr-card .dl-pr-nav{gap:2px;display:flex}.dl-pr-card .dl-pr-nav button{width:28px;min-width:28px;height:28px;color:var(--float-muted);cursor:pointer;background:0 0;border:0;border-radius:8px;place-items:center;padding:0;transition:background .12s,color .12s;display:grid;position:relative}.dl-pr-card .dl-pr-nav button:hover:not(:disabled){background:var(--float-hover);color:var(--float-title)}.dl-pr-card .dl-pr-nav button:active:not(:disabled){transform:scale(.96)}.dl-pr-card .dl-pr-nav button:disabled{opacity:1;color:var(--float-faint);cursor:not-allowed;background:0 0}.dl-pr-card .dl-pr-nav button:disabled .dl-pr-icon{opacity:.55}@media (pointer:coarse){.dl-pr-tools,.dl-pr-card .dl-pr-nav{gap:16px}.dl-pr-card .dl-pr-nav button:before,.dl-float .dl-pr-tools .dl-pr-close:before{content:"";position:absolute;inset:-8px}.dl-float .dl-pr-tools .dl-pr-close{position:relative}}@media (prefers-reduced-motion:reduce){.dl-float.dl-float{animation:none}}@media (width<700px),(height<520px){.dl-term-popover.dl-float{padding-bottom:max(16px, env(safe-area-inset-bottom))}}.dl-pr-card .dl-pr-body{scrollbar-width:none;overflow-anchor:none}.dl-pr-card .dl-pr-body::-webkit-scrollbar{width:0;height:0;display:none}.dl-pr-card.has-vdots{padding-right:30px}.dl-pr-vdots{flex-direction:column;justify-content:center;align-items:center;gap:0;display:flex;position:absolute;top:50px;bottom:12px;right:6px;overflow:hidden}.dl-pr-vdot{cursor:pointer;background:0 0;border:0;border-radius:6px;flex:0 12px;place-items:center;width:20px;height:12px;min-height:7px;padding:0;display:grid}.dl-pr-vdot:after{content:"";background:var(--border-strong);border-radius:999px;width:6px;height:min(6px,100%);transition:height .16s,background .16s}.dl-pr-vdot.on{flex:0 24px;height:24px;min-height:12px}.dl-pr-vdot.on:after{background:var(--accent);height:calc(100% - 4px);max-height:18px}.dl-pr-vdot:hover:after{background:var(--accent)}.dl-pr-vdot:focus{outline:none}.dl-pr-vdot:focus-visible{background:color-mix(in srgb, var(--accent) 10%, transparent);outline:none}@media (pointer:coarse){.dl-pr-vdot{flex-basis:14px;width:26px;height:14px}.dl-pr-vdot.on{flex-basis:26px;height:26px}}@media (prefers-reduced-motion:reduce){.dl-pr-vdot:after{transition:none}}.dl-pr-card.sized{flex-direction:column;display:flex}.dl-pr-card.sized .dl-pr-body{flex:auto}.dl-pr-resize{z-index:2;touch-action:none;width:16px;height:16px;position:absolute}.dl-pr-resize-nw{cursor:nwse-resize;top:-4px;left:-4px}.dl-pr-resize-se{cursor:nwse-resize;bottom:-4px;right:-4px}.dl-pr-resize-ne{cursor:nesw-resize;top:-4px;right:-4px}.dl-pr-resize-sw{cursor:nesw-resize;bottom:-4px;left:-4px}@media (pointer:coarse){.dl-pr-resize{width:28px;height:28px}.dl-pr-resize-nw,.dl-pr-resize-sw{left:-10px}.dl-pr-resize-ne,.dl-pr-resize-se{right:-10px}.dl-pr-resize-nw,.dl-pr-resize-ne{top:-10px}.dl-pr-resize-sw,.dl-pr-resize-se{bottom:-10px}}.dl-pr-sec{display:flow-root}.dl-pr-sec+.dl-pr-sec{border-top:1px solid var(--border);margin-top:18px;padding-top:14px}.dl-pr-sec-title{color:var(--text);margin:0 0 6px;font-size:14.5px;font-weight:600;line-height:1.4}.dl-pr-sec:not(.on){opacity:.78;transition:opacity .2s}.dl-pr-card .dl-pr-body:has(.dl-pr-sec){scroll-padding-top:0}.dl-pr-frame-pinned{flex:none;max-height:20vh;margin:0 0 6px;padding:0 2px;overflow-y:auto}.dl-pr-sec.on .dl-pr-sec-title{color:var(--accent)}.dl-pr-card.dl-float .dl-pr-head{cursor:grab;touch-action:none}
