:root{--bg-app:#e8eaed;--bg-surface:#fff;--bg-panel:#f4f5f7;--bg-muted:#eef0f3;--border:#dde1e6;--text-primary:#1a1d23;--text-secondary:#6b7280;--text-muted:#9ca3af;--accent:#2563eb;--accent-hover:#1d4ed8;--accent-subtle-bg:#2563eb1a;--accent-subtle-border:#2563eb4d;--success:#22c55e;--overlay:#0f172a73;--caret:#1a1d23;--width-content:760px;--width-session:1000px;--width-result:840px;--radius-sm:6px;--radius-md:8px;--radius-lg:12px;--radius-xl:16px;--font-mono:"Roboto Mono", ui-monospace, monospace;--kb-tray-bg:var(--bg-surface);--kb-tray-shadow:none;--kb-tray-radius:var(--radius-lg);--kb-tray-border:1px solid var(--border);--kb-key-bg:var(--bg-muted);--kb-key-bg-pressed:#e0e3e8;--kb-key-text:var(--text-primary);--kb-key-modifier-bg:transparent;--kb-key-modifier-text:var(--text-muted);--kb-key-shadow:none;--kb-key-shadow-pressed:none;--kb-key-border:1px solid var(--border);--kb-key-next-ring:var(--accent);--kb-key-error-bg:#fef2f2;--kb-key-error-ring:#ef4444;--kb-key-home-marker:var(--text-muted);--kb-key-home-ring:#6b728073;--kb-heat-1:#fbbf2459;--kb-heat-2:#fb923c73;--kb-heat-3:#f8717180;--kb-heat-4:#ef444499;--kb-finger-left-pinky:#e74c3c;--kb-finger-left-ring:#f39c12;--kb-finger-left-middle:#f1c40f;--kb-finger-left-index:#2ecc71;--kb-finger-right-index:#2ecc71;--kb-finger-right-middle:#3498db;--kb-finger-right-ring:#9b59b6;--kb-finger-right-pinky:#e91e63;--kb-finger-thumb:#8e8e93}.dark{--bg-app:#111318;--bg-surface:#1c1f26;--bg-panel:#262a33;--bg-muted:#1c1f26;--border:#343a46;--text-primary:#e8eaed;--text-secondary:#9ca3af;--text-muted:#6b7280;--accent:#3b82f6;--accent-hover:#2563eb;--accent-subtle-bg:#3b82f626;--accent-subtle-border:#3b82f659;--success:#4ade80;--overlay:#0009;--caret:#e8eaed;--kb-tray-bg:var(--bg-surface);--kb-tray-shadow:none;--kb-tray-border:1px solid var(--border);--kb-key-bg:var(--bg-panel);--kb-key-bg-pressed:#323845;--kb-key-text:var(--text-primary);--kb-key-modifier-bg:transparent;--kb-key-modifier-text:var(--text-muted);--kb-key-shadow:none;--kb-key-shadow-pressed:none;--kb-key-border:1px solid var(--border);--kb-key-next-ring:var(--accent);--kb-key-error-bg:#3a2a2a;--kb-key-error-ring:#ef4444;--kb-key-home-marker:var(--text-muted);--kb-key-home-ring:#9ca3af66;--kb-heat-1:#fbbf2440;--kb-heat-2:#fb923c59;--kb-heat-3:#f8717166;--kb-heat-4:#ef444480}*,:before,:after{box-sizing:border-box}html,body,#app{height:100%;overflow:hidden}body{background:var(--bg-app);color:var(--text-primary);-webkit-font-smoothing:antialiased;margin:0;font-family:ui-sans-serif,system-ui,sans-serif}.char-done{color:var(--text-primary)}.char-current{color:var(--text-muted);position:relative}.char-current:before{content:"";background:var(--caret);border-radius:1px;width:2px;animation:1.1s step-end infinite caret-blink;position:absolute;top:.1em;bottom:.1em;left:0}@keyframes caret-blink{50%{opacity:0}}@media (prefers-reduced-motion:reduce){.char-current:before{animation:none}}.char-pending{color:var(--text-muted)}.btn[data-v-c5432aac]{border-radius:var(--radius-lg);cursor:pointer;border:1px solid #0000;justify-content:center;align-items:center;font-weight:600;transition:background-color .15s,border-color .15s,color .15s;display:inline-flex}.btn[data-v-c5432aac]:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.btn[data-v-c5432aac]:disabled{cursor:not-allowed;opacity:.5}.btn.primary[data-v-c5432aac]{background:var(--accent);color:#fff}.btn.primary[data-v-c5432aac]:hover:not(:disabled){background:var(--accent-hover)}.btn.secondary[data-v-c5432aac]{background:var(--bg-panel);border-color:var(--border);color:var(--text-primary)}.btn.secondary[data-v-c5432aac]:hover:not(:disabled){background:var(--bg-muted)}.btn.ghost[data-v-c5432aac]{color:var(--text-secondary);background:0 0}.btn.ghost[data-v-c5432aac]:hover:not(:disabled){background:var(--bg-panel)}.btn.sm[data-v-c5432aac]{padding:6px 12px;font-size:12px}.btn.md[data-v-c5432aac]{padding:10px 16px;font-size:14px}.btn.lg[data-v-c5432aac]{padding:12px 20px;font-size:16px}.btn.block[data-v-c5432aac]{width:100%}.chip[data-v-b3b6726a]{border-radius:var(--radius-md);color:var(--text-muted);cursor:pointer;background:0 0;border:1px solid #0000;padding:6px 12px;font-size:14px;font-weight:500;transition:color .15s,background-color .15s}.chip[data-v-b3b6726a]:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.chip[data-v-b3b6726a]:hover:not(.active){color:var(--text-secondary);background:var(--bg-muted)}.chip.active[data-v-b3b6726a]{color:var(--text-primary);background:var(--bg-muted)}.modal[data-v-8da5faa1]{z-index:30;background:var(--overlay);place-items:center;padding:16px;display:grid;position:fixed;inset:0}.dialog[data-v-8da5faa1]{border-radius:var(--radius-xl);background:var(--bg-surface);width:100%;padding:24px;box-shadow:0 20px 40px #0f172a33}.dialog.sm[data-v-8da5faa1]{max-width:400px}.dialog.md[data-v-8da5faa1]{max-width:512px}.dialog.lg[data-v-8da5faa1]{max-width:var(--width-result)}.dialog.scrollable[data-v-8da5faa1]{max-height:90vh;overflow-y:auto}.title[data-v-8da5faa1]{color:var(--text-primary);margin:0 0 8px;font-size:20px;font-weight:700}.body[data-v-8da5faa1]{color:var(--text-secondary);font-size:14px}.actions[data-v-8da5faa1]{flex-direction:column;gap:8px;margin-top:20px;display:flex}.badge[data-v-b0324c61]{border:1px solid var(--border);background:var(--bg-panel);color:var(--text-secondary);border-radius:999px;align-items:center;padding:2px 10px;font-size:12px;font-weight:600;display:inline-flex}.badge.accent[data-v-b0324c61]{border-color:var(--accent-subtle-border);background:var(--accent-subtle-bg);color:var(--accent)}.row[data-v-4c996acc]{border:none;border-bottom:1px solid var(--border);text-align:left;cursor:pointer;background:0 0;border-radius:0;align-items:center;gap:12px;width:100%;padding:10px 8px;transition:background-color .15s;display:flex}.row[data-v-4c996acc]:last-child{border-bottom:none}.row[data-v-4c996acc]:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.row[data-v-4c996acc]:hover:not(.active){background:var(--bg-muted)}.row.active .order[data-v-4c996acc],.row.active .title[data-v-4c996acc]{color:var(--accent)}.row .order[data-v-4c996acc]{font-variant-numeric:tabular-nums;width:1.5rem;color:var(--text-muted);text-align:center;flex-shrink:0;font-size:13px;font-weight:600}.row .content[data-v-4c996acc]{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.row .title[data-v-4c996acc]{color:var(--text-primary);font-weight:600}.row .desc[data-v-4c996acc]{color:var(--text-muted);font-size:13px}.segmented[data-v-f67cd6ba]{align-items:center;gap:2px;display:inline-flex}.segmented .option[data-v-f67cd6ba]{color:var(--text-muted);cursor:pointer;background:0 0;border:none;font-weight:500;transition:color .15s}.segmented .option[data-v-f67cd6ba]:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:4px}.segmented .option[data-v-f67cd6ba]:hover:not(:disabled):not(.active){color:var(--text-secondary)}.segmented .option.active[data-v-f67cd6ba]{color:var(--text-primary)}.segmented .option[data-v-f67cd6ba]:disabled{cursor:not-allowed}.segmented.disabled[data-v-f67cd6ba]{opacity:.5}.segmented.md .option[data-v-f67cd6ba]{padding:8px 12px;font-size:14px}.segmented.sm .option[data-v-f67cd6ba]{padding:4px 6px;font-size:14px}.lesson-picker[data-v-24742ad2]{flex-direction:column;gap:20px;display:flex}.lesson-picker .duration[data-v-24742ad2]{flex-direction:column;display:flex}.lesson-picker .label[data-v-24742ad2]{color:var(--text-muted);margin-bottom:10px;font-size:13px;display:block}.lesson-picker .chips[data-v-24742ad2]{flex-wrap:wrap;gap:8px;display:flex}.lesson-picker .lessons[data-v-24742ad2]{flex-direction:column;max-height:50vh;display:flex;overflow-y:auto}.key[data-v-8c681972]{background:var(--kb-key-bg);border:var(--kb-key-border);border-radius:var(--radius-sm);min-width:42px;height:42px;color:var(--kb-key-text);text-align:center;box-shadow:var(--kb-key-shadow);justify-content:center;align-items:center;font-size:13px;font-weight:500;line-height:1.2;transition:background 80ms,border-color 80ms,box-shadow 80ms;display:flex;position:relative;overflow:hidden}.key.pressed[data-v-8c681972]{background:var(--kb-key-bg-pressed);color:var(--kb-key-text);box-shadow:var(--kb-key-shadow-pressed)}.key.next[data-v-8c681972]{border-color:var(--kb-key-next-ring);box-shadow:0 0 0 1px var(--kb-key-next-ring)}.key.error[data-v-8c681972]{background:var(--kb-key-error-bg);border-color:var(--kb-key-error-ring);box-shadow:0 0 0 1px var(--kb-key-error-ring);animation:.25s ease-in-out shake-8c681972}@keyframes shake-8c681972{0%,to{transform:translate(0)}25%,75%{transform:translate(-3px)}50%{transform:translate(3px)}}.wide-key[data-v-8c681972]{min-width:76px}.extra-wide-key[data-v-8c681972]{min-width:90px}.space-key[data-v-8c681972]{min-width:220px}.label[data-v-8c681972]{flex-direction:column;align-items:center;gap:1px;display:flex}.label.single[data-v-8c681972]{font-size:12px}.sub[data-v-8c681972]{opacity:.7;font-size:10px}.home-key[data-v-8c681972]{border:2px solid var(--kb-key-home-ring)}.home-key[data-code=KeyF][data-v-8c681972]:after,.home-key[data-code=KeyJ][data-v-8c681972]:after{content:"";background:var(--kb-key-home-marker);border-radius:1px;width:4px;height:2px;position:absolute;bottom:7px;left:50%;transform:translate(-50%)}.key[data-finger=leftPinky][data-v-8c681972]:before,.key[data-finger=leftRing][data-v-8c681972]:before,.key[data-finger=leftMiddle][data-v-8c681972]:before,.key[data-finger=leftIndex][data-v-8c681972]:before,.key[data-finger=rightIndex][data-v-8c681972]:before,.key[data-finger=rightMiddle][data-v-8c681972]:before,.key[data-finger=rightRing][data-v-8c681972]:before,.key[data-finger=rightPinky][data-v-8c681972]:before,.key[data-finger=thumb][data-v-8c681972]:before{content:"";opacity:.55;border-radius:1px;height:2px;position:absolute;bottom:0;left:4px;right:4px}.key[data-finger=leftPinky][data-v-8c681972]:before{background:var(--kb-finger-left-pinky)}.key[data-finger=leftRing][data-v-8c681972]:before{background:var(--kb-finger-left-ring)}.key[data-finger=leftMiddle][data-v-8c681972]:before{background:var(--kb-finger-left-middle)}.key[data-finger=leftIndex][data-v-8c681972]:before{background:var(--kb-finger-left-index)}.key[data-finger=rightIndex][data-v-8c681972]:before{background:var(--kb-finger-right-index)}.key[data-finger=rightMiddle][data-v-8c681972]:before{background:var(--kb-finger-right-middle)}.key[data-finger=rightRing][data-v-8c681972]:before{background:var(--kb-finger-right-ring)}.key[data-finger=rightPinky][data-v-8c681972]:before{background:var(--kb-finger-right-pinky)}.key[data-finger=thumb][data-v-8c681972]:before{background:var(--kb-finger-thumb)}.modifier-key[data-v-8c681972]{background:var(--kb-key-modifier-bg);color:var(--kb-key-modifier-text);font-size:11px}.modifier-key.pressed[data-v-8c681972]{background:var(--kb-key-bg-pressed);color:var(--kb-key-modifier-text)}.modifier-key.next[data-v-8c681972]{color:var(--kb-key-modifier-text)}.key.heat-1[data-v-8c681972]:after,.key.heat-2[data-v-8c681972]:after,.key.heat-3[data-v-8c681972]:after,.key.heat-4[data-v-8c681972]:after{content:"";border-radius:inherit;pointer-events:none;position:absolute;inset:0}.key.heat-1[data-v-8c681972]:after{background:var(--kb-heat-1)}.key.heat-2[data-v-8c681972]:after{background:var(--kb-heat-2)}.key.heat-3[data-v-8c681972]:after{background:var(--kb-heat-3)}.key.heat-4[data-v-8c681972]:after{background:var(--kb-heat-4)}@container kb (width<=700px){.key[data-v-8c681972]{border-radius:4px;min-width:34px;height:34px;font-size:11px}.wide-key[data-v-8c681972]{min-width:62px}.extra-wide-key[data-v-8c681972]{min-width:74px}.space-key[data-v-8c681972]{min-width:180px}.label.single[data-v-8c681972]{font-size:10px}.sub[data-v-8c681972]{font-size:9px}}.keyboard[data-v-22013dbf]{flex-direction:column;align-items:center;width:100%;min-width:0;max-width:100%;display:flex;container:kb/inline-size}.keyboard-container[data-v-22013dbf]{background:var(--kb-tray-bg);border:var(--kb-tray-border);border-radius:var(--kb-tray-radius);box-shadow:var(--kb-tray-shadow);font-family:var(--font-mono);-webkit-user-select:none;user-select:none;box-sizing:border-box;max-width:100%;padding:10px 12px}.keyboard-row[data-v-22013dbf]{justify-content:center;gap:4px;margin-bottom:4px;display:flex}.keyboard-row[data-v-22013dbf]:last-child{margin-bottom:0}.progress-panel[data-v-2ff71363]{flex-direction:column;gap:28px;display:flex}.progress-panel .summary[data-v-2ff71363]{flex-wrap:wrap;justify-content:center;gap:28px 36px;display:flex}.progress-panel .summary-item[data-v-2ff71363]{flex-direction:column;align-items:center;gap:2px;display:flex}.progress-panel .summary-value[data-v-2ff71363]{font-variant-numeric:tabular-nums;color:var(--text-primary);font-size:24px;font-weight:600;line-height:1.1}.progress-panel .summary-label[data-v-2ff71363]{color:var(--text-muted);font-size:12px;font-weight:500}.progress-panel .section-title[data-v-2ff71363]{color:var(--text-secondary);margin:0 0 12px;font-size:14px;font-weight:600}.progress-panel .empty[data-v-2ff71363]{color:var(--text-muted);margin:0;font-size:14px}.progress-panel .history[data-v-2ff71363]{margin:0;padding:0;list-style:none}.progress-panel .history-item[data-v-2ff71363]{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:12px;padding:12px 0;display:flex}.progress-panel .history-item[data-v-2ff71363]:last-child{border-bottom:none}.progress-panel .history-main[data-v-2ff71363]{min-width:0}.progress-panel .history-label[data-v-2ff71363]{color:var(--text-primary);text-overflow:ellipsis;white-space:nowrap;max-width:min(420px,55vw);font-weight:500;display:block;overflow:hidden}.progress-panel .history-date[data-v-2ff71363]{color:var(--text-muted);font-size:12px}.progress-panel .history-stats[data-v-2ff71363]{font-variant-numeric:tabular-nums;color:var(--text-secondary);flex-shrink:0;align-items:center;gap:10px;font-size:13px;font-weight:500;display:flex}.progress-panel .heatmap-hint[data-v-2ff71363]{color:var(--text-muted);margin:0 0 12px;font-size:13px}@media (width<=640px){.progress-panel .history-item[data-v-2ff71363]{flex-direction:column;align-items:flex-start}}.stats[data-v-e8d2695f]{flex-wrap:wrap;justify-content:center;gap:28px 36px;display:flex}.stats .item[data-v-e8d2695f]{flex-direction:column;align-items:center;gap:2px;display:flex}.stats .value[data-v-e8d2695f]{font-variant-numeric:tabular-nums;color:var(--text-primary);font-size:28px;font-weight:600;line-height:1.1}.stats .label[data-v-e8d2695f]{color:var(--text-muted);font-size:12px;font-weight:500}.result-panel[data-v-4e6ed661]{flex-direction:column;align-items:center;gap:24px;display:flex}.result-panel .heading[data-v-4e6ed661]{text-align:center;color:var(--text-primary);margin:0;font-size:20px;font-weight:600}.result-panel .heatmap[data-v-4e6ed661]{width:100%}.result-panel .heatmap-label[data-v-4e6ed661]{color:var(--text-muted);text-align:center;margin:0 0 12px;font-size:13px}.result-panel .success[data-v-4e6ed661]{color:var(--success);margin:0;font-size:14px;font-weight:500}.result-panel .actions[data-v-4e6ed661]{flex-wrap:wrap;justify-content:center;gap:8px;width:100%;display:flex}.toggle[data-v-a03f08c4]{border:1px solid var(--border);background:var(--bg-muted);cursor:pointer;border-radius:999px;flex-shrink:0;width:40px;height:24px;padding:0;transition:background-color .15s,border-color .15s;position:relative}.toggle[data-v-a03f08c4]:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.toggle[data-v-a03f08c4]:hover:not(:disabled):not(.on){border-color:var(--text-muted)}.toggle.on[data-v-a03f08c4]{background:var(--accent);border-color:var(--accent)}.toggle[data-v-a03f08c4]:disabled{cursor:not-allowed;opacity:.5}.toggle .thumb[data-v-a03f08c4]{background:#fff;border-radius:50%;width:18px;height:18px;transition:transform .15s;position:absolute;top:2px;left:2px;box-shadow:0 1px 2px #00000026}.toggle.on .thumb[data-v-a03f08c4]{transform:translate(16px)}.calibration[data-v-2dce6bc4]{border:1px dashed var(--border);border-radius:var(--radius-lg);background:var(--bg-panel);margin-top:12px;padding:14px}.calibration .heading[data-v-2dce6bc4]{color:var(--text-primary);margin:0 0 8px;font-size:14px;font-weight:600}.calibration .intro[data-v-2dce6bc4]{color:var(--text-secondary);margin:0 0 8px;font-size:14px}.calibration .steps[data-v-2dce6bc4]{color:var(--text-muted);margin:0 0 8px;padding-left:20px;font-size:14px}.calibration .steps .active[data-v-2dce6bc4]{color:var(--accent);font-weight:600}.calibration .current[data-v-2dce6bc4]{color:var(--text-secondary);margin:0 0 8px;font-size:14px}.calibration .error[data-v-2dce6bc4]{color:#ef4444;margin:0;font-size:14px}.calibration .success[data-v-2dce6bc4]{color:var(--success);margin:0;font-size:14px}.settings-panel .hint[data-v-7627da90]{border-radius:var(--radius-lg);background:var(--bg-panel);color:var(--text-secondary);margin:0 0 12px;padding:12px;font-size:14px}.settings-panel .row[data-v-7627da90]{color:var(--text-secondary);border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:12px;padding:8px 0;font-size:14px;display:flex}.settings-panel .row.last[data-v-7627da90]{border-bottom:none}.settings-panel .actions[data-v-7627da90]{flex-wrap:wrap;gap:8px;padding:8px 0;display:flex}.settings-panel .status[data-v-7627da90]{color:var(--text-muted);margin:0 0 8px;font-size:12px}.settings-panel .message[data-v-7627da90]{color:var(--text-secondary);margin:0 0 8px;font-size:12px}.zen-library[data-v-0bd6f2d8]{flex-direction:column;gap:20px;display:flex}.toolbar[data-v-0bd6f2d8]{flex-wrap:wrap;gap:8px;display:flex}.section[data-v-0bd6f2d8]{flex-direction:column;gap:8px;display:flex}.section-title[data-v-0bd6f2d8]{color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em;margin:0;font-size:13px;font-weight:600}.hint[data-v-0bd6f2d8]{color:var(--text-muted);margin:0;font-size:13px}.list[data-v-0bd6f2d8]{border-top:1px solid var(--border);flex-direction:column;max-height:28vh;margin:0;padding:0;list-style:none;display:flex;overflow-y:auto}.item[data-v-0bd6f2d8]{border-bottom:1px solid var(--border);align-items:center;gap:8px;display:flex}.item-main[data-v-0bd6f2d8]{text-align:left;cursor:pointer;background:0 0;border:none;flex-direction:column;flex:1;align-items:flex-start;gap:2px;min-width:0;padding:10px 4px;display:flex}.item-main:hover .item-title[data-v-0bd6f2d8]{color:var(--text-primary)}.item-main[data-v-0bd6f2d8]:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:4px}.item-title[data-v-0bd6f2d8]{text-overflow:ellipsis;white-space:nowrap;max-width:100%;color:var(--text-secondary);font-size:14px;font-weight:500;overflow:hidden}.item-meta[data-v-0bd6f2d8]{color:var(--text-muted);font-size:12px}.item-delete[data-v-0bd6f2d8]{color:var(--text-muted);cursor:pointer;background:0 0;border:none;flex-shrink:0;padding:6px 4px;font-size:12px}.item-delete[data-v-0bd6f2d8]:hover{color:var(--text-primary)}.item-delete[data-v-0bd6f2d8]:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:4px}.form[data-v-0bd6f2d8]{border-top:1px solid var(--border);padding-top:4px}.field[data-v-0bd6f2d8]{color:var(--text-muted);flex-direction:column;gap:6px;font-size:13px;display:flex}:is(.input,.textarea)[data-v-0bd6f2d8]{border:1px solid var(--border);border-radius:var(--radius-md);background:var(--bg-panel);width:100%;color:var(--text-primary);font:inherit;resize:vertical;padding:8px 10px}:is(.input,.textarea)[data-v-0bd6f2d8]:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.form-row[data-v-0bd6f2d8]{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;display:flex}.counter[data-v-0bd6f2d8]{color:var(--text-muted);font-size:12px}.counter.warn[data-v-0bd6f2d8]{color:var(--text-secondary)}.form-actions[data-v-0bd6f2d8]{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.file-btn[data-v-0bd6f2d8]{border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--bg-panel);color:var(--text-primary);cursor:pointer;align-items:center;padding:6px 10px;font-size:13px;font-weight:600;display:inline-flex}.file-btn[data-v-0bd6f2d8]:hover{background:var(--bg-muted)}.error[data-v-0bd6f2d8]{color:var(--text-secondary);margin:0;font-size:13px}.duration-chips[data-v-dc67141b]{flex-wrap:wrap;gap:8px;display:flex}.layout[data-v-ed26248b]{background:var(--bg-app);flex-direction:column;min-width:0;height:100dvh;display:flex;overflow:hidden}.route[data-v-ed26248b]{width:100%;min-height:0;max-width:var(--width-session);flex-direction:column;flex:1 1 0;align-items:center;margin:0 auto;display:flex}.route[data-v-ed26248b] .canvas{flex:1 1 0;min-height:0}
