
        /* Vector editor */
        .vector-editor {
            --ve-bg: #f3f3f3;
            --ve-panel: #ffffff;
            --ve-line: #111111;
            --ve-line-added: #0057ff;
            --ve-active: #0d6efd;
            --ve-border: #d8d8d8;
            --ve-muted: #666666;
        }

        .vector-editor * {
            box-sizing: border-box;
        }

        .vector-editor .ve-app {
            display: grid;
            grid-template-columns: 300px minmax(0, 1fr) 250px;
            height: calc(100vh - 32px);
            min-height: 560px;
            max-height: calc(100vh - 32px);
            gap: 0;
            overflow: hidden;
            border-radius: var(--app-card-radius);
            background: var(--ve-panel);
            box-shadow: 0 12px 24px rgba(0, 0, 0, .06);
        }

        .vector-editor .ve-sidebar {
            background: var(--ve-panel);
            border-right: 1px solid var(--ve-border);
            padding: 16px;
            overflow-y: auto;
            min-height: 0;
        }

        .vector-editor .ve-sidebar-right {
            border-right: 0;
            border-left: 1px solid var(--ve-border);
            background: linear-gradient(180deg, #ffffff 0%, #fbfbfb 100%);
        }

        .vector-editor .ve-sidebar-right .ve-panel {
            position: sticky;
            top: 16px;
            margin-bottom: 0;
        }

        .vector-editor .ve-canvas-wrap {
            display: flex;
            flex-direction: column;
            min-width: 0;
            min-height: 0;
            height: 100%;
            background: var(--ve-bg);
        }

        @media (max-width: 1199.98px) {
            .vector-editor .ve-app {
                grid-template-columns: 280px minmax(0, 1fr) 220px;
            }
        }

        @media (max-width: 991.98px) {
            .vector-editor .ve-app {
                grid-template-columns: 1fr;
                height: auto;
                max-height: none;
                min-height: 0;
                overflow: visible;
            }

            .vector-editor .ve-sidebar,
            .vector-editor .ve-sidebar-right {
                border-right: 0;
                border-left: 0;
                border-bottom: 1px solid var(--ve-border);
                max-height: none;
            }

            .vector-editor .ve-sidebar-right .ve-panel {
                position: static;
            }

            .vector-editor .ve-canvas-wrap {
                min-height: 560px;
                height: auto;
            }
        }

        .vector-editor .ve-topbar {
            padding: 10px 14px;
            border-bottom: 1px solid var(--ve-border);
            background: rgba(255, 255, 255, 0.9);
            display: flex;
            align-items: center;
            gap: 10px;
            flex-wrap: wrap;
        }

        .vector-editor .ve-topbar>span.ve-small:not(#veTopbarSubtitle) {
            display: none;
        }

        .vector-editor .ve-viewer {
            position: relative;
            flex: 1 1 0;
            overflow: hidden;
            background:
                linear-gradient(90deg, rgba(0, 0, 0, 0.03) 1px, transparent 1px),
                linear-gradient(rgba(0, 0, 0, 0.03) 1px, transparent 1px);
            background-size: 20px 20px;
            min-height: 0;
            height: auto;
        }

        .vector-editor #svgStage {
            width: 100%;
            height: 100%;
            display: block;
            cursor: crosshair;
        }

        .vector-editor .ve-panel {
            border: 1px solid var(--ve-border);
            border-radius: var(--app-card-radius);
            padding: 12px;
            margin-bottom: 12px;
            background: #fff;
        }

        .vector-editor .ve-panel h3 {
            margin: 0 0 10px 0;
            font-size: 15px;
        }

        .vector-editor label {
            display: block;
            font-size: 13px;
            margin-bottom: 6px;
        }

        .vector-editor input[type="number"],
        .vector-editor input[type="text"],
        .vector-editor input[type="file"],
        .vector-editor button,
        .vector-editor select,
        .vector-editor textarea {
            width: 100%;
            border: 1px solid var(--ve-border);
            border-radius: 8px;
            padding: 9px 10px;
            font-size: 14px;
            background: #fff;
        }

        .vector-editor button:hover {
            border-color: #bcbcbc;
        }

        .vector-editor button.primary,
        .vector-editor .tool-btn.active {
            background: var(--ve-active);
            color: white;
            border-color: var(--ve-active);
        }

        .vector-editor .tool-btn,
        .vector-editor .ve-success-btn {
            display: inline-flex;
            align-items: center;
            justify-content: center;
            gap: 8px;
        }

        .vector-editor .ve-blue-btn {
            background: #0d6efd;
            color: #ffffff;
            border-color: #0d6efd;
            font-weight: 700;
        }

        .vector-editor .ve-blue-btn:hover {
            background: #0b5ed7;
            border-color: #0b5ed7;
            color: #ffffff;
        }

        .vector-editor .ve-blue-btn.active {
            background: #0a58ca;
            border-color: #0a58ca;
            color: #ffffff;
        }

        .vector-editor .ve-red-btn {
            background: #dc3545;
            color: #ffffff;
            border-color: #dc3545;
            font-weight: 700;
        }

        .vector-editor .ve-red-btn:hover {
            background: #bb2d3b;
            border-color: #bb2d3b;
            color: #ffffff;
        }

        .vector-editor .ve-red-btn.active {
            background: #b02a37;
            border-color: #b02a37;
            color: #ffffff;
        }

        .vector-editor .ve-yellow-btn {
            background: #ffc107;
            color: #5c4300;
            border-color: #ffc107;
            font-weight: 700;
        }

        .vector-editor .ve-yellow-btn:hover {
            background: #ffca2c;
            border-color: #ffca2c;
            color: #4a3600;
        }

        .vector-editor .ve-yellow-btn.active {
            background: #e0a800;
            border-color: #e0a800;
            color: #3d2c00;
        }

        .vector-editor .ve-green-btn {
            background: #198754;
            color: #ffffff;
            border-color: #198754;
            font-weight: 700;
        }

        .vector-editor .ve-green-btn:hover {
            background: #157347;
            border-color: #157347;
            color: #ffffff;
        }

        .vector-editor .ve-green-btn.active {
            background: #146c43;
            border-color: #146c43;
            color: #ffffff;
        }

        .vector-editor .ve-success-btn {
            background: #198754;
            color: #ffffff;
            border-color: #198754;
            font-weight: 700;
        }

        .vector-editor .ve-success-btn:hover {
            background: #157347;
            border-color: #157347;
            color: #ffffff;
        }

        .vector-editor .button-row {
            display: grid;
            grid-template-columns: 1fr 1fr;
            gap: 8px;
        }

        .vector-editor .button-row>.btn-span-all {
            grid-column: 1 / -1;
        }

        .vector-editor .ve-mode-tabs {
            display: flex;
            align-items: flex-end;
            gap: 0;
            margin-left: auto;
            flex-wrap: wrap;
            background: #428bca;
            border: 1px solid #428bca;
            border-bottom: 0;
            border-radius: 4px 4px 0 0;
            padding: 5px 5px 0;
        }

        .vector-editor .ve-mode-tab {
            width: auto;
            min-width: 0;
            padding: 11px 18px 12px;
            border: 1px solid transparent;
            border-bottom: 0;
            border-radius: 4px 4px 0 0;
            background: transparent;
            color: #ffffff;
            font-weight: 500;
            font-size: 14px;
            line-height: 1.2;
            box-shadow: none;
            margin-right: 2px;
            display: inline-flex;
            align-items: center;
            justify-content: center;
            transition: background-color .16s ease, color .16s ease, border-color .16s ease;
        }

        .vector-editor .ve-mode-tab:hover:not(:disabled) {
            color: #ffffff;
            background: #3071a9;
            border-color: transparent;
        }

        .vector-editor .ve-mode-tab.active {
            background: #ffffff;
            color: #428bca;
            border-color: #428bca;
            border-bottom-color: transparent;
        }

        .vector-editor .ve-mode-tab:disabled,
        .vector-editor .ve-mode-tab.disabled {
            opacity: .58;
            background: transparent;
            color: rgba(255, 255, 255, .78);
            border-color: transparent;
        }

        .vector-editor .ve-hidden {
            display: none !important;
        }

        .vector-editor #veToolsLaser label[for="flattenStepMm"],
        .vector-editor #veToolsLaser #flattenStepMm,
        .vector-editor #veToolsLaser label[for="unitsPerMm"],
        .vector-editor #veToolsLaser #unitsPerMm {
            display: none;
        }

        .vector-editor .ve-field-grid {
            display: grid;
            grid-template-columns: 1fr 1fr;
            gap: 8px;
        }

        .vector-editor .ve-field-span-all {
            grid-column: 1 / -1;
        }

        .vector-editor .ve-field-action {
            display: flex;
            flex-direction: column;
            gap: 6px;
        }

        .vector-editor .ve-field-action .tool-btn {
            width: 100%;
            min-height: 41px;
        }

        .vector-editor .ve-small {
            font-size: 12px;
            color: var(--ve-muted);
            line-height: 1.45;
        }

        .vector-editor .status {
            padding: 10px 12px;
            border-radius: 10px;
            background: #fafafa;
            border: 1px solid var(--ve-border);
            font-size: 13px;
            line-height: 1.5;
            white-space: pre-line;
        }

        .vector-editor .ve-progress {
            display: none;
            margin-top: 8px;
        }

        .vector-editor .ve-progress.is-active {
            display: block;
        }

        .vector-editor .ve-progress .progress {
            height: 8px;
            border-radius: 999px;
            overflow: hidden;
            background: #e9ecef;
        }

        .vector-editor .ve-progress .progress-bar {
            width: 100%;
        }

        .vector-editor .sep {
            height: 1px;
            background: var(--ve-border);
            margin: 10px 0;
        }

        .vector-editor .topbar-map-actions {
            position: absolute;
            top: 12px;
            left: 12px;
            display: flex;
            flex-direction: row;
            align-items: center;
            gap: 8px;
            z-index: 20;
        }

        .vector-editor .ve-name-metrics {
            display: inline-flex;
            align-items: center;
            min-height: 42px;
            padding: 0 14px;
            border-radius: 10px;
            border: 1px solid #d7d7d7;
            background: rgba(255, 255, 255, 0.96);
            box-shadow: 0 1px 6px rgba(0, 0, 0, 0.12);
            color: #163a70;
            font-size: 16px;
            font-weight: 800;
            line-height: 1;
            white-space: nowrap;
        }

        .vector-editor .topbar-map-actions button,
        .vector-editor .viewer-tool-stack button {
            width: 42px;
            height: 42px;
            border-radius: 10px;
            border: 1px solid #d7d7d7;
            background: #ffffff;
            box-shadow: 0 1px 6px rgba(0, 0, 0, 0.18);
            cursor: pointer;
            font-size: 16px;
            font-weight: 700;
            padding: 0;
        }

        .vector-editor .topbar-map-actions button {
            font-size: 0;
        }

        .vector-editor .topbar-map-actions button:hover,
        .vector-editor .viewer-tool-stack button:hover {
            background: #f7f7f7;
        }

        .vector-editor .viewer-tool-stack button.ve-red-btn {
            background: #dc3545;
            border-color: #dc3545;
            color: #ffffff;
        }

        .vector-editor .viewer-tool-stack button.ve-blue-btn {
            background: #0d6efd;
            border-color: #0d6efd;
            color: #ffffff;
        }

        .vector-editor .viewer-tool-stack button.ve-yellow-btn {
            background: #ffc107;
            border-color: #ffc107;
            color: #5c4300;
        }

        .vector-editor .viewer-tool-stack button.ve-green-btn {
            background: #198754;
            border-color: #198754;
            color: #ffffff;
        }

        .vector-editor .viewer-tool-stack .ve-red-btn:hover {
            background: #bb2d3b;
            border-color: #bb2d3b;
            color: #ffffff;
        }

        .vector-editor .viewer-tool-stack .ve-blue-btn:hover {
            background: #0b5ed7;
            border-color: #0b5ed7;
            color: #ffffff;
        }

        .vector-editor .viewer-tool-stack .ve-yellow-btn:hover {
            background: #ffca2c;
            border-color: #ffca2c;
            color: #4a3600;
        }

        .vector-editor .viewer-tool-stack .ve-green-btn:hover {
            background: #157347;
            border-color: #157347;
            color: #ffffff;
        }

        .vector-editor .topbar-map-actions button i,
        .vector-editor .viewer-tool-stack button i {
            font-size: 18px;
            line-height: 1;
        }

        .vector-editor .viewer-tool-stack {
            position: absolute;
            top: 64px;
            left: 12px;
            display: flex;
            flex-direction: column;
            gap: 8px;
            z-index: 20;
        }

        .vector-editor .viewer-tool-stack button[data-tooltip] {
            position: relative;
            overflow: visible;
        }

        .vector-editor .viewer-tool-stack button[data-tooltip]::before {
            content: "";
            position: absolute;
            top: 50%;
            left: calc(100% + 2px);
            transform: translateY(-50%) translateX(-6px);
            border: 6px solid transparent;
            border-right-color: rgba(15, 23, 42, 0.96);
            opacity: 0;
            pointer-events: none;
            transition: opacity .12s ease, transform .12s ease;
            transition-delay: .04s;
            z-index: 31;
        }

        .vector-editor .viewer-tool-stack button[data-tooltip]::after {
            content: attr(data-tooltip);
            position: absolute;
            top: 50%;
            left: calc(100% + 12px);
            transform: translateY(-50%) translateX(-6px);
            padding: 8px 12px;
            border-radius: 10px;
            background: rgba(15, 23, 42, 0.96);
            color: #ffffff;
            font-size: 12px;
            font-weight: 700;
            line-height: 1.15;
            white-space: nowrap;
            box-shadow: 0 10px 28px rgba(15, 23, 42, 0.28);
            opacity: 0;
            pointer-events: none;
            transition: opacity .12s ease, transform .12s ease;
            transition-delay: .04s;
            z-index: 32;
        }

        .vector-editor .viewer-tool-stack button[data-tooltip]:hover::before,
        .vector-editor .viewer-tool-stack button[data-tooltip]:hover::after,
        .vector-editor .viewer-tool-stack button[data-tooltip]:focus-visible::before,
        .vector-editor .viewer-tool-stack button[data-tooltip]:focus-visible::after {
            opacity: 1;
            transform: translateY(-50%) translateX(0);
        }

        .vector-editor .viewer-tool-stack button.active {
            box-shadow: 0 0 0 3px rgba(13, 110, 253, 0.16), 0 1px 6px rgba(0, 0, 0, 0.18);
            transform: translateY(-1px);
        }

        .vector-editor .base-path,
        .vector-editor .added-path {
            fill: none;
            stroke: #000000;
            stroke-width: 0.70;
            vector-effect: non-scaling-stroke;
            stroke-linecap: round;
            stroke-linejoin: round;
        }

        .vector-editor .preview-path {
            fill: none;
            stroke: #ff8c00;
            stroke-width: 1.00;
            stroke-dasharray: 1 1;
            vector-effect: non-scaling-stroke;
            stroke-linecap: round;
            stroke-linejoin: round;
        }

        .vector-editor .hover-marker {
            fill: rgba(255, 152, 0, 0.35);
            stroke: rgba(255, 140, 0, 0.8);
            stroke-width: 1.00;
            vector-effect: non-scaling-stroke;
        }

        .vector-editor .helper-dot {
            fill: rgba(255, 59, 48, 0.45);
            stroke: rgba(220, 38, 38, 0.75);
            stroke-width: 1.00;
            vector-effect: non-scaling-stroke;
        }

        .vector-editor .open-endpoint {
            fill: rgba(25, 135, 84, 0.22);
            stroke: rgba(25, 135, 84, 0.92);
            stroke-width: 1.10;
            vector-effect: non-scaling-stroke;
        }

        .vector-editor .open-endpoint-selected {
            fill: rgba(13, 110, 253, 0.28);
            stroke: rgba(13, 110, 253, 0.98);
            stroke-width: 1.30;
        }

        .vector-editor .guide-path {
            fill: none;
            stroke: rgba(220, 53, 69, 0.95);
            stroke-width: 1.1;
            stroke-dasharray: 4 2.2;
            vector-effect: non-scaling-stroke;
            stroke-linecap: round;
        }

        .vector-editor .preview-base-line {
            fill: none;
            stroke: rgba(255, 140, 0, 0.92);
            stroke-width: 1.00;
            stroke-dasharray: 4 2;
            vector-effect: non-scaling-stroke;
            stroke-linecap: round;
        }

        .vector-editor .reference-image {
            opacity: 0.68;
            pointer-events: none;
        }

        .vector-editor .name-reference-image {
            opacity: 0.26;
            pointer-events: none;
        }

        .vector-editor .name-guide-path {
            fill: none;
            stroke: rgba(220, 53, 69, 0.62);
            stroke-width: 1.05;
            stroke-dasharray: 4.2 3.2;
            vector-effect: non-scaling-stroke;
            stroke-linecap: round;
            pointer-events: none;
        }

        .vector-editor .ve-name-compound-box {
            padding: 0;
            background: transparent;
            border: 0;
        }

        .vector-editor .ve-name-compound-box .form-check {
            margin: 0;
        }

        .vector-editor .ve-name-compound-switch {
            display: flex;
            align-items: center;
            gap: 10px;
            min-height: 38px;
        }

        .vector-editor .ve-name-compound-switch .form-check-input {
            width: 2.35rem;
            height: 1.2rem;
            margin-top: 0;
            cursor: pointer;
        }

        .vector-editor .ve-name-compound-switch .form-check-label {
            margin: 0;
            font-weight: 600;
            cursor: pointer;
        }

        .vector-editor .ve-name-warning {
            color: #b45309;
            font-weight: 700;
        }

        .vector-editor .ve-name-font-overrides {
            border: 1px solid #dbe2ea;
            border-radius: 14px;
            padding: 12px;
            background: #f8fbff;
        }

        .vector-editor .ve-name-font-overrides-header {
            display: flex;
            align-items: center;
            justify-content: space-between;
            gap: 12px;
            margin-bottom: 8px;
        }

        .vector-editor .ve-name-font-overrides-title {
            font-weight: 700;
            color: #16355c;
        }

        .vector-editor .ve-name-font-overrides-list {
            display: grid;
            gap: 8px;
            max-height: 188px;
            overflow-y: auto;
            padding-right: 4px;
        }

        .vector-editor .ve-name-font-override-row {
            display: grid;
            grid-template-columns: 64px minmax(0, 1fr);
            gap: 10px;
            align-items: center;
        }

        .vector-editor .ve-name-font-override-char {
            display: inline-flex;
            align-items: center;
            justify-content: center;
            min-height: 38px;
            border: 1px solid #dbe2ea;
            border-radius: 10px;
            background: #fff;
            font-weight: 800;
            color: #183b67;
        }

        .vector-editor .ve-name-font-override-empty {
            border: 1px dashed #cbd5e1;
            border-radius: 10px;
            padding: 10px 12px;
            background: #fff;
        }


        /* Image vectorizer */
        .imgvec-app {
            display: grid;
            grid-template-columns: 360px 1fr;
            gap: 16px;
            align-items: start;
        }

        .imgvec-sidebar {
            display: flex;
            flex-direction: column;
            gap: 12px;
        }

        .imgvec-panel {
            border: 0;
            border-radius: var(--app-card-radius);
            box-shadow: 0 12px 24px rgba(0, 0, 0, .06);
            background: #fff;
            overflow: hidden;
        }

        .imgvec-panel .panel-head {
            padding: 14px 16px;
            border-bottom: 1px solid rgba(0, 0, 0, .06);
            font-weight: 800;
        }

        .imgvec-panel .panel-content {
            padding: 16px;
        }

        .imgvec-grid {
            display: grid;
            grid-template-columns: repeat(2, minmax(0, 1fr));
            gap: 12px;
        }

        .imgvec-grid-3 {
            display: grid;
            grid-template-columns: repeat(3, minmax(0, 1fr));
            gap: 12px;
        }

        .imgvec-stage-wrap {
            display: grid;
            grid-template-columns: repeat(3, minmax(0, 1fr));
            gap: 16px;
        }

        .imgvec-canvas-card {
            border: 0;
            border-radius: var(--app-card-radius);
            box-shadow: 0 12px 24px rgba(0, 0, 0, .06);
            background: #fff;
            overflow: hidden;
            min-width: 0;
        }

        .imgvec-canvas-head {
            padding: 12px 14px;
            border-bottom: 1px solid rgba(0, 0, 0, .06);
            font-weight: 800;
            display: flex;
            align-items: center;
            justify-content: space-between;
            gap: 10px;
        }

        .imgvec-canvas-body {
            padding: 14px;
        }

        .imgvec-preview-box {
            border-radius: 14px;
            border: 1px solid rgba(0, 0, 0, .08);
            background:
                linear-gradient(90deg, rgba(0, 0, 0, 0.03) 1px, transparent 1px),
                linear-gradient(rgba(0, 0, 0, 0.03) 1px, transparent 1px),
                #fafafa;
            background-size: 16px 16px;
            min-height: 420px;
            position: relative;
            overflow: hidden;
            user-select: none;
            touch-action: none;
            cursor: grab;
        }

        .imgvec-preview-box.is-panning {
            cursor: grabbing;
        }

        .imgvec-preview-stage {
            position: absolute;
            inset: 0;
        }

        .imgvec-preview-box canvas,
        .imgvec-preview-box svg {
            position: absolute;
            left: 0;
            top: 0;
            display: block;
            max-width: none;
            max-height: none;
            background: #fff;
            box-shadow: 0 6px 18px rgba(0, 0, 0, .08);
            transform-origin: top left;
            will-change: transform;
            pointer-events: none;
        }

        .imgvec-preview-scrollbar {
            margin-top: 10px;
            padding: 0 2px;
        }

        .imgvec-pan-range {
            margin: 0;
        }

        .imgvec-pan-range:disabled {
            opacity: .45;
        }

        .imgvec-actions {
            display: grid;
            grid-template-columns: repeat(2, minmax(0, 1fr));
            gap: 10px;
        }

        .imgvec-mode-tabs {
            display: grid;
            grid-template-columns: repeat(3, minmax(0, 1fr));
            gap: 10px;
            margin-bottom: 14px;
        }

        .imgvec-mode-tabs .btn {
            min-height: 40px;
            white-space: normal;
            line-height: 1.15;
        }

        .imgvec-mode-tabs .btn.active {
            box-shadow: 0 0 0 0.18rem rgba(13, 110, 253, .14);
            transform: translateY(-1px);
        }

        .imgvec-role-tools {
            display: grid;
            grid-template-columns: repeat(3, minmax(0, 1fr));
            gap: 10px;
            margin-top: 10px;
        }

        .imgvec-role-tools .btn.active {
            box-shadow: 0 0 0 0.18rem rgba(13, 110, 253, .14);
            transform: translateY(-1px);
        }

        .imgvec-mode-hint {
            margin-bottom: 12px;
            border-radius: 12px;
            border: 1px solid rgba(0, 0, 0, .07);
            background: #fafafa;
            color: #5b6168;
            font-size: 12px;
            line-height: 1.5;
            padding: 10px 12px;
        }

        .imgvec-actions .btn-span-all {
            grid-column: 1 / -1;
        }

        .imgvec-edit-tools {
            display: grid;
            grid-template-columns: repeat(2, minmax(0, 1fr));
            gap: 10px;
        }

        .imgvec-edit-tools .btn.active {
            box-shadow: 0 0 0 0.2rem rgba(13, 110, 253, .14);
            transform: translateY(-1px);
        }

        .imgvec-preview-box.is-tool-active {
            cursor: crosshair;
        }

        .imgvec-preview-box [data-preview-overlay="true"] {
            position: absolute;
            z-index: 20;
            pointer-events: auto;
        }

        .imgvec-floating-actions {
            top: 12px;
            left: 12px;
            display: flex;
            align-items: center;
            gap: 8px;
        }

        .imgvec-floating-tools {
            top: 64px;
            left: 12px;
            display: flex;
            flex-direction: column;
            gap: 8px;
        }

        .imgvec-mini-btn {
            width: 42px;
            height: 42px;
            display: inline-flex;
            align-items: center;
            justify-content: center;
            border: 1px solid #d7d7d7;
            border-radius: 10px;
            background: #ffffff;
            box-shadow: 0 1px 6px rgba(0, 0, 0, 0.18);
            color: #212529;
            padding: 0;
        }

        .imgvec-mini-btn:hover {
            background: #f7f7f7;
        }

        .imgvec-mini-btn i {
            font-size: 18px;
            line-height: 1;
        }

        .imgvec-mini-btn.active {
            box-shadow: 0 0 0 3px rgba(13, 110, 253, 0.16), 0 1px 6px rgba(0, 0, 0, 0.18);
            transform: translateY(-1px);
        }

        .imgvec-mini-btn.imgvec-red-btn {
            background: #dc3545;
            color: #ffffff;
            border-color: #dc3545;
        }

        .imgvec-mini-btn.imgvec-red-btn:hover {
            background: #bb2d3b;
            border-color: #bb2d3b;
        }

        .imgvec-mini-btn.imgvec-blue-btn {
            background: #0d6efd;
            color: #ffffff;
            border-color: #0d6efd;
        }

        .imgvec-mini-btn.imgvec-blue-btn:hover {
            background: #0b5ed7;
            border-color: #0b5ed7;
        }

        .imgvec-mini-btn.imgvec-yellow-btn {
            background: #ffc107;
            color: #5c4300;
            border-color: #ffc107;
        }

        .imgvec-mini-btn.imgvec-yellow-btn:hover {
            background: #ffca2c;
            border-color: #ffca2c;
        }

        .imgvec-app.is-adjust-mode .imgvec-stage-wrap {
            grid-template-columns: minmax(0, 1fr);
        }

        .imgvec-app.is-adjust-mode #traceVectorCard {
            display: flex;
            flex-direction: column;
            min-height: clamp(560px, 76vh, 1080px);
        }

        .imgvec-app.is-adjust-mode #traceVectorCard .imgvec-canvas-body {
            padding: 10px 14px 14px;
            display: flex;
            flex: 1 1 auto;
            min-height: 0;
        }

        .imgvec-app.is-adjust-mode #traceVectorPreview {
            flex: 1 1 auto;
            min-height: clamp(520px, 72vh, 1020px);
            height: clamp(520px, 72vh, 1020px);
        }

        .imgvec-actions .btn,
        .imgvec-grid .form-control,
        .imgvec-grid .form-select,
        .imgvec-grid-3 .form-control,
        .imgvec-grid-3 .form-select,
        .imgvec-panel .form-control,
        .imgvec-panel .form-select {
            min-height: 42px;
        }

        .imgvec-status {
            white-space: pre-line;
            font-size: 13px;
            line-height: 1.5;
            border-radius: 12px;
            border: 1px solid rgba(0, 0, 0, .08);
            background: #fafafa;
            padding: 12px 14px;
        }

        .imgvec-loader {
            margin-top: 12px;
            padding: 12px 14px;
            border-radius: 12px;
            border: 1px solid rgba(13, 110, 253, .14);
            background: rgba(13, 110, 253, .05);
            display: none;
        }

        .imgvec-loader.is-active {
            display: block;
        }

        .imgvec-loader-head {
            display: flex;
            align-items: center;
            justify-content: space-between;
            gap: 10px;
            margin-bottom: 8px;
            font-size: 13px;
            font-weight: 700;
            color: #0d6efd;
        }

        .imgvec-loader-text {
            font-size: 12px;
            color: rgba(0, 0, 0, .68);
            margin-top: 8px;
            line-height: 1.4;
        }

        .imgvec-loader .progress {
            height: 8px;
            background: rgba(13, 110, 253, .12);
        }


        @media (max-width: 991.98px) {
            .vector-editor .ve-app {
                grid-template-columns: 1fr;
            }

            .vector-editor .ve-sidebar {
                border-right: 0;
                border-bottom: 1px solid var(--ve-border);
            }

            .imgvec-app {
                grid-template-columns: 1fr;
            }

            .imgvec-stage-wrap {
                grid-template-columns: 1fr;
            }
        }
