/* ── op-btn Design System buttons ───────────────────────────────── */
        .op-btn { padding:7px 16px; border-radius:8px; font-size:12px; font-weight:600; cursor:pointer; border:1px solid transparent; transition:all 0.15s; display:inline-flex; align-items:center; gap:6px; white-space:nowrap; }
        .op-btn svg { width:13px; height:13px; flex-shrink:0; }
        .op-btn:disabled { opacity:0.4; cursor:not-allowed; }
        .op-btn-primary { background:var(--coral); color:#fff; border-color:var(--coral); }
        .op-btn-primary:hover:not(:disabled) { background:var(--coral-hover, #e8675a); border-color:var(--coral-hover, #e8675a); }
        .op-btn-danger { background:rgba(229,73,58,0.12); color:var(--error, #e5493a); border-color:rgba(229,73,58,0.3); }
        .op-btn-danger:hover:not(:disabled) { background:rgba(229,73,58,0.22); border-color:rgba(229,73,58,0.5); }
        .op-btn-ghost { background:rgba(255,255,255,0.04); color:var(--grey-300, #b0bec5); border-color:var(--slate-light, #2a3f50); }
        .op-btn-ghost:hover:not(:disabled) { background:rgba(255,255,255,0.08); color:var(--grey-100, #eceff1); border-color:#3d5a6e; }
        .op-btn-warning { background:rgba(245,166,35,0.12); color:var(--warning, #f5a623); border-color:rgba(245,166,35,0.3); }
        .op-btn-warning:hover:not(:disabled) { background:rgba(245,166,35,0.22); }
        /* ── Confirmed link rows (record mode) ──────────────────────────────── */
        .idc-confirmed-link-row { display:flex; align-items:center; gap:8px; padding:6px 10px; border-radius:6px; font-size:13px; color:var(--grey-200); transition:background 0.12s; }
        .idc-confirmed-link-row:hover { background:var(--map-border); }
        /* Shared asset badge + name classes */
        .idc-asset-name { font-size:13px; color:var(--grey-100); font-weight:500; flex:1; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
        .idc-asset-op { color:var(--grey-400); font-weight:400; }
        .idc-match-source { margin-left:auto; font-size:10px; color:var(--grey-500); font-family:var(--font-mono); white-space:nowrap; padding-left:8px; }
        .idc-disassoc-btn { margin-left:auto; width:20px; height:20px; border-radius:4px; border:none; background:transparent; color:var(--grey-600); cursor:pointer; font-size:16px; line-height:1; display:flex; align-items:center; justify-content:center; flex-shrink:0; }
        .idc-disassoc-btn:hover { background:rgba(229,73,58,0.12); color:var(--error); }
        .idc-analyst-note { margin:0 0 10px; padding:8px 10px; border-radius:6px; background:rgba(128,191,255,0.06); border:1px solid rgba(128,191,255,0.15); font-size:11px; color:var(--grey-300); line-height:1.5; font-style:italic; }
        .idc-parent-badge { display:inline-flex; align-items:center; gap:4px; margin-bottom:8px; padding:3px 8px; border-radius:4px; background:rgba(255,255,255,0.04); border:1px solid var(--panel-border); font-size:11px; color:var(--grey-500); }
        /* ── Verify Workflow Modal (.ivw-*) ─────────────────────────────── */
        .ivw-overlay { position:fixed; inset:0; background:rgba(14,24,32,0.72); backdrop-filter:blur(3px); display:flex; align-items:center; justify-content:center; z-index:9100; opacity:0; transition:opacity 0.2s; pointer-events:none; }
        .ivw-overlay.active { opacity:1; pointer-events:all; }
        .ivw-card { width:540px; max-height:90vh; background:var(--panel-bg); border:1px solid var(--panel-border); border-radius:var(--r-lg); box-shadow:0 24px 80px rgba(0,0,0,0.6); display:flex; flex-direction:column; overflow:hidden; }
        .ivw-prog { display:flex; gap:3px; padding:7px 14px; border-bottom:1px solid var(--map-border); }
        .ivw-step { height:3px; border-radius:2px; flex:1; background:var(--panel-border); transition:background 0.3s; }
        .ivw-step.done { background:var(--success); }
        .ivw-step.on   { background:var(--coral); }
        .ivw-step.err  { background:var(--error); }
        .ivw-head { padding:11px 14px; border-bottom:1px solid var(--map-border); display:flex; align-items:center; justify-content:space-between; }
        .ivw-head-l { display:flex; align-items:center; gap:7px; }
        .ivw-type-badge { font-size:9px; font-weight:700; letter-spacing:.1em; text-transform:uppercase; padding:2px 6px; border-radius:3px; background:rgba(229,73,58,0.1); color:var(--error); border:1px solid rgba(229,73,58,0.25); }
        .ivw-sev-dot { width:6px; height:6px; border-radius:50%; flex-shrink:0; background:var(--grey-500); }
        .ivw-sev-dot.d-unverified { background:var(--grey-500); }
        .ivw-sev-dot.d-reported   { background:var(--warning); }
        .ivw-sev-dot.d-confirmed  { background:var(--success); }
        .ivw-sev-dot.d-rejected   { background:var(--error); }
        .ivw-sev-label { font-size:10px; font-weight:600; text-transform:uppercase; letter-spacing:.08em; color:var(--grey-400); }
        .ivw-header { display:flex; align-items:center; justify-content:space-between; padding:10px 14px; border-bottom:1px solid var(--map-border); flex-shrink:0; }
        .ivw-title { font-size:12px; font-weight:700; color:var(--grey-100); text-transform:uppercase; letter-spacing:0.04em; }
        .ivw-close-btn { width:22px; height:22px; border-radius:4px; background:none; border:none; cursor:pointer; display:flex; align-items:center; justify-content:center; color:var(--grey-500); }
        .ivw-close-btn:hover { background:var(--panel-bg-raised); color:var(--grey-200); }
        .ivw-body { padding:16px 18px; flex:1; overflow-y:auto; max-height:620px; }
        .ivw-body::-webkit-scrollbar { width:3px; }
        .ivw-body::-webkit-scrollbar-thumb { background:var(--panel-border); border-radius:2px; }
        .ivw-foot { padding:10px 14px; border-top:1px solid var(--map-border); display:flex; align-items:center; justify-content:space-between; gap:8px; }
        .ivw-foot-l { display:flex; gap:6px; }
        .ivw-foot-r { display:flex; gap:6px; margin-left:auto; }
        .ivw-meta { display:flex; gap:10px; margin-bottom:9px; font-size:11px; color:var(--grey-500); }
        .ivw-headline { font-size:13px; font-weight:600; color:var(--grey-100); line-height:1.4; margin-bottom:8px; }
        .ivw-note { font-size:12px; color:var(--grey-400); line-height:1.6; padding:9px 11px; background:var(--panel-bg-raised); border-radius:var(--r-md); border-left:2px solid var(--panel-border); margin-bottom:12px; }
        .ivw-section { margin-top:12px; padding-top:12px; border-top:1px solid var(--map-border); }
        .ivw-section-title { font-size:9px; font-weight:700; letter-spacing:.12em; text-transform:uppercase; color:var(--grey-500); margin-bottom:9px; }
        .ivw-section-note { font-size:11px; color:var(--grey-500); margin-bottom:9px; line-height:1.5; }
        .ivw-info-row { display:flex; justify-content:space-between; font-size:11px; color:var(--grey-500); margin-bottom:5px; }
        .ivw-info-row span:last-child { color:var(--grey-300); }
        /* Asset rows — matches intel-asset-item style */
        .ivw-asset-list { display:flex; flex-direction:column; gap:4px; margin-bottom:10px; }
        .ivw-asset-row { display:flex; align-items:center; gap:8px; padding:6px 10px; border-radius:6px; border:1px solid var(--panel-border); cursor:pointer; transition:all .15s; font-size:13px; }
        .ivw-asset-ctx  { cursor:default; background:transparent; }
        .ivw-asset-toggle, .ivw-asset-prox { cursor:pointer; }
        .ivw-asset-toggle:hover, .ivw-asset-prox:hover { border-color:#3A5468 !important; opacity:1 !important; }
        .ivw-asset-add  { color:var(--grey-500); border-style:dashed; justify-content:center; font-size:12px; }
        .ivw-asset-add:hover { color:var(--grey-300); border-color:#3A5468; }
        .ivw-asset-name { color:var(--grey-200); flex:1; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
        .ivw-asset-op   { color:var(--grey-500); font-size:11px; white-space:nowrap; }
        .ivw-asset-check { width:16px; height:16px; border-radius:50%; display:flex; align-items:center; justify-content:center; font-size:9px; color:#fff; font-weight:700; flex-shrink:0; }
        .ivw-asset-check-empty { width:16px; height:16px; border-radius:50%; border:1.5px solid var(--panel-border); flex-shrink:0; }
        /* Group items */
        .ivw-group-list { display:flex; flex-direction:column; gap:5px; }
        .ivw-group-item { display:flex; align-items:flex-start; gap:8px; padding:8px 10px; border-radius:var(--r-md); border:1px solid var(--panel-border); background:var(--panel-bg-raised); cursor:pointer; transition:all .15s; }
        .ivw-group-item:hover { border-color:#3A5468; }
        .ivw-group-item.selected { border-color:rgba(61,187,125,0.4); background:rgba(61,187,125,0.06); }
        .ivw-g-check { width:16px; height:16px; border-radius:50%; border:1.5px solid var(--panel-border); flex-shrink:0; margin-top:2px; display:flex; align-items:center; justify-content:center; }
        .ivw-group-item.selected .ivw-g-check { background:var(--success); border-color:var(--success); }
        .ivw-g-body { flex:1; min-width:0; }
        .ivw-g-head { font-size:12px; font-weight:500; color:var(--grey-200); line-height:1.35; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
        .ivw-g-meta { display:flex; gap:6px; align-items:center; margin-top:3px; font-size:10px; color:var(--grey-500); }
        .ivw-g-tag  { padding:1px 5px; border-radius:3px; background:rgba(229,73,58,0.1); color:var(--error); font-size:9px; font-weight:700; letter-spacing:.08em; text-transform:uppercase; }
        .ivw-make-parent-btn { padding:2px 7px; font-size:10px; border-radius:4px; border:1px solid var(--panel-border); background:transparent; color:var(--grey-400); cursor:pointer; margin-left:auto; white-space:nowrap; }
        .ivw-make-parent-btn:hover { border-color:var(--warning); color:var(--warning); }
        .ivw-make-parent-btn.is-parent { border-color:var(--warning); color:var(--warning); background:rgba(245,166,35,0.1); }
        .ivw-parent-lbl { font-size:9px; color:var(--warning); font-weight:700; letter-spacing:.08em; text-transform:uppercase; padding:2px 6px; border-radius:3px; background:rgba(245,166,35,0.1); }
        /* Reject panel */
        .ivw-rej-panel { margin-top:12px; padding:12px; border-radius:var(--r-md); background:rgba(229,73,58,0.06); border:1px solid rgba(229,73,58,0.2); }
        .ivw-rej-title { font-size:10px; font-weight:700; letter-spacing:.1em; text-transform:uppercase; color:var(--error); margin-bottom:10px; }
        .ivw-rej-opt   { display:flex; align-items:center; gap:8px; padding:5px 0; cursor:pointer; }
        .ivw-rej-radio { width:14px; height:14px; border-radius:50%; border:1.5px solid var(--panel-border); flex-shrink:0; display:flex; align-items:center; justify-content:center; }
        .ivw-rej-opt.selected .ivw-rej-radio { border-color:var(--error); }
        .ivw-rej-dot   { width:6px; height:6px; border-radius:50%; background:var(--error); display:none; }
        .ivw-rej-opt.selected .ivw-rej-dot { display:block; }
        /* Buttons */
        .ivw-btn { padding:7px 14px; border-radius:6px; font-size:12px; font-weight:600; cursor:pointer; border:1px solid; display:inline-flex; align-items:center; gap:5px; transition:all .15s; }
        .ivw-btn-primary { background:var(--coral); color:#fff; border-color:var(--coral); }
        .ivw-btn-primary:hover { background:var(--coral-hover, #F06B5E); border-color:var(--coral-hover, #F06B5E); }
        .ivw-btn-primary:disabled { opacity:0.5; cursor:not-allowed; }
        .ivw-btn-sec  { background:transparent; color:var(--grey-300); border-color:var(--panel-border); }
        .ivw-btn-sec:hover { border-color:#3A5468; color:var(--grey-100); }
        .ivw-btn-danger { background:rgba(229,73,58,0.1); color:var(--error); border-color:rgba(229,73,58,0.3); }
        .ivw-btn-danger:hover { background:rgba(229,73,58,0.2); }
        .ivw-btn-ghost { background:transparent; color:var(--grey-500); border-color:transparent; }
        .ivw-btn-ghost:hover { color:var(--grey-300); }
        .ivw-btn-sm { padding:4px 10px; font-size:11px; }
        /* Banner + toast */
        .ivw-banner { display:flex; align-items:center; gap:8px; padding:8px 11px; border-radius:var(--r-md); font-size:12px; margin-bottom:10px; }
        .ivw-banner-ok  { background:rgba(61,187,125,0.1);  color:var(--success); border:1px solid rgba(61,187,125,0.25); }
        .ivw-banner-err { background:rgba(229,73,58,0.1);   color:var(--error);   border:1px solid rgba(229,73,58,0.25); }
        .ivw-err-toast  { position:fixed; bottom:24px; left:50%; transform:translateX(-50%); background:var(--error); color:#fff; padding:8px 18px; border-radius:6px; font-size:12px; font-weight:600; z-index:9200; pointer-events:none; }
        .intel-detail-verified-by { padding:12px 20px; font-size:12px; color:var(--grey-500); border-top:1px solid #243845; font-family:var(--font-mono); }
        .intel-severity-selector { position:absolute; background:var(--panel-bg); border:1px solid var(--slate-light); border-radius:8px; padding:4px; z-index:9001; box-shadow:0 8px 24px rgba(0,0,0,0.4); }
        .intel-severity-option { display:flex; align-items:center; gap:8px; padding:8px 12px; border-radius:6px; cursor:pointer; font-size:13px; color:var(--grey-200); transition:background 0.1s; }
        .intel-severity-option:hover { background:var(--map-border); }
        .intel-severity-option .sev-dot { width:8px; height:8px; border-radius:50%; }

        /* ── Audit Modal ──────────────────────────────── */
        .audit-modal-overlay {
            display: none;
            position: fixed;
            top: 0; left: 0; right: 0; bottom: 0;
            background: rgba(0,0,0,0.55);
            z-index: 2500;
            backdrop-filter: blur(2px);
            justify-content: center;
            align-items: flex-start;
            padding-top: 32px;
        }
        .audit-modal-overlay.visible { display: flex; }
        .audit-modal {
            background: var(--panel-bg);
            border: 1px solid var(--panel-border);
            border-radius: var(--r-lg);
            box-shadow: 0 24px 80px rgba(0,0,0,0.6);
            width: 780px;
            max-width: 96vw;
            max-height: calc(100vh - 64px);
            display: flex;
            flex-direction: column;
        }
        .audit-modal-header {
            display: flex;
            justify-content: space-between;
            align-items: center;
            padding: 16px 22px 0;
        }
        .audit-modal-header h2 {
            font-size: 13px; font-weight: 600; color: var(--grey-100);
            margin: 0; display: flex; align-items: center; gap: 8px;
        }
        .audit-modal-close { background: none; border: 1px solid var(--map-border); color: var(--grey-400);
            border-radius: var(--r-sm); width: 26px; height: 26px;
            cursor: pointer; display: flex; align-items: center; justify-content: center; }
        .audit-modal-close:hover { color: var(--grey-100); border-color: var(--grey-500); background: rgba(255,255,255,0.04); }
        .audit-tabs {
            display: flex; gap: 0; padding: 12px 22px 0;
            border-bottom: 1px solid var(--map-border);
        }
        .audit-tab {
            padding: 8px 16px;
            font-size: 12px; font-weight: 600;
            font-family: var(--font-primary);
            color: var(--grey-400);
            background: none; border: none;
            cursor: pointer;
            border-bottom: 2px solid transparent;
            transition: all 0.15s;
        }
        .audit-tab:hover { color: var(--grey-200); }
        .audit-tab.active {
            color: var(--coral);
            border-bottom-color: var(--coral);
        }
        .audit-modal-body {
            overflow-y: auto; flex: 1;
            padding: 16px 22px;
            contain: layout style;
        }
        .audit-filter-row {
            display: flex; gap: 8px; margin-bottom: 12px; flex-wrap: wrap; align-items: center;
        }
        .audit-filter-row select,
        .audit-filter-row input {
            font-size: 11px; font-family: var(--font-primary);
            padding: 5px 8px;
            background: rgba(255,255,255,0.04);
            border: 1px solid var(--map-border);
            border-radius: var(--r-sm);
            color: var(--grey-200);
            outline: none;
        }
        .audit-filter-row select:focus,
        .audit-filter-row input:focus { border-color: var(--blue-muted); }
        .audit-entry {
            display: flex; align-items: flex-start; gap: 10px;
            padding: 10px 0;
            border-bottom: 1px solid rgba(255,255,255,0.04);
        }
        .audit-entry:last-child { border-bottom: none; }
        .audit-action-badge {
            font-size: 10px; font-weight: 700; letter-spacing: 0.5px; text-transform: uppercase;
            padding: 2px 6px; border-radius: 3px;
            white-space: nowrap;
            min-width: 50px; text-align: center;
        }
        .audit-action-badge.INSERT { background: rgba(61,187,125,0.15); color: var(--success); }
        .audit-action-badge.UPDATE { background: rgba(74,155,240,0.15); color: var(--blue-muted); }
        .audit-action-badge.DELETE { background: rgba(255,134,122,0.15); color: var(--coral); }
        .audit-action-badge.BULK { background: rgba(245,166,35,0.15); color: var(--warning); }
        .audit-entry-body {
            flex: 1; min-width: 0;
        }
        .audit-entry-title {
            font-size: 12px; font-weight: 600; color: var(--grey-200);
            margin: 0 0 2px;
        }
        .audit-entry-meta {
            font-size: 10px; color: var(--grey-500);
        }
        .audit-entry-diff {
            margin-top: 4px; padding: 4px 8px;
            background: rgba(255,255,255,0.03); border-radius: 3px;
            font-family: var(--font-mono); font-size: 10px;
            line-height: 1.5; color: var(--grey-400);
        }
        .audit-entry-diff .old { color: var(--coral); text-decoration: line-through; opacity: 0.7; }
        .audit-entry-diff .new { color: var(--success); }
        .audit-undo-btn {
            font-size: 10px; font-weight: 600; font-family: var(--font-primary);
            padding: 3px 10px;
            border: 1px solid var(--warning);
            border-radius: var(--r-sm);
            background: transparent;
            color: var(--warning);
            cursor: pointer;
            white-space: nowrap;
            transition: all 0.15s;
        }
        .audit-undo-btn:hover { background: rgba(245,166,35,0.1); }
        .audit-undo-btn:disabled {
            border-color: var(--grey-600);
            color: var(--grey-500);
            cursor: default;
        }
        .audit-undo-btn.undone {
            border-color: var(--grey-600);
            color: var(--grey-500);
            text-decoration: line-through;
        }
        /* Bulk upload cards */
        .bulk-card {
            display: flex; align-items: center; gap: 12px;
            padding: 12px 14px;
            background: rgba(255,255,255,0.02);
            border: 1px solid rgba(255,255,255,0.05);
            border-radius: var(--r-md);
            margin-bottom: 8px;
            transition: border-color 0.15s;
        }
        .bulk-card:hover { border-color: rgba(255,255,255,0.1); }
        .bulk-card-info { flex: 1; min-width: 0; }
        .bulk-card-name {
            font-size: 12px; font-weight: 600; color: var(--grey-200);
            white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
        }
        .bulk-card-meta {
            font-size: 10px; color: var(--grey-500); margin-top: 2px;
        }
        .bulk-card-count {
            font-size: 18px; font-weight: 700; color: var(--blue-muted);
            min-width: 40px; text-align: center;
        }
        .bulk-card-status {
            font-size: 10px; font-weight: 700; letter-spacing: 0.5px; text-transform: uppercase;
            padding: 2px 6px; border-radius: 3px;
        }
        .bulk-card-status.active { background: rgba(61,187,125,0.15); color: var(--success); }
        .bulk-card-status.undone { background: rgba(255,134,122,0.15); color: var(--coral); }
        .audit-empty {
            text-align: center; padding: 32px 0;
            color: var(--grey-500); font-size: 12px;
        }
        .audit-load-more {
            text-align: center; padding: 12px 0;
        }
        .audit-load-more button {
            font-size: 11px; font-family: var(--font-primary);
            padding: 5px 16px; border: 1px solid var(--map-border);
            border-radius: var(--r-sm); background: transparent;
            color: var(--grey-400); cursor: pointer;
        }
        .audit-load-more button:hover { border-color: var(--blue-muted); color: var(--blue-muted); }

        /* ── Connectivity Modal ──────────────────────── */
        .conn-modal-overlay {
            display: none;
            position: fixed;
            top: 0; left: 0; right: 0; bottom: 0;
            background: rgba(0,0,0,0.55);
            z-index: 2000;
            backdrop-filter: blur(2px);
            justify-content: center;
            align-items: center;
        }
        .conn-modal-overlay.visible {
            display: flex;
        }
        .conn-modal {
            background: var(--panel-bg);
            border: 1px solid var(--panel-border);
            box-shadow: 0 24px 80px rgba(0,0,0,0.6);
            border-radius: var(--r-lg);
            width: 640px;
            max-width: 90vw;
            max-height: 85vh;
            display: flex;
            flex-direction: column;
        }
        .conn-modal-header {
            display: flex;
            justify-content: space-between;
            align-items: flex-start;
            padding: 20px 24px 12px;
            border-bottom: 1px solid var(--map-border);
        }
        .conn-modal-header h2 {
            font-size: 13px;
            font-weight: 600;
            color: var(--grey-100);
            margin: 0 0 2px;
        }
        .conn-modal-subtitle {
            font-size: 12px;
            color: var(--grey-400);
            margin: 0;
        }
        .conn-modal-close {
            background: none; border: 1px solid var(--map-border); color: var(--grey-400);
            border-radius: var(--r-sm); width: 26px; height: 26px;
            cursor: pointer; display: flex; align-items: center; justify-content: center;
        }
        .conn-modal-close:hover { color: var(--grey-100); border-color: var(--grey-500); background: rgba(255,255,255,0.04); }
        .conn-modal-controls {
            padding: 14px 24px;
            border-bottom: 1px solid var(--map-border);
        }
        .conn-control-row {
            display: flex;
            align-items: flex-end;
            gap: 12px;
            flex-wrap: wrap;
        }
        .conn-field label {
            display: block;
            font-size: 10px;
            font-weight: 700;
            letter-spacing: 0.5px;
            text-transform: uppercase;
            color: var(--map-label);
            margin-bottom: 4px;
        }
        .conn-field input, .conn-field select {
            padding: 6px 8px;
            font-size: 13px;
            font-family: var(--font-primary);
            background: rgba(255,255,255,0.04);
            border: 1px solid var(--map-border);
            border-radius: var(--r-md);
            color: var(--grey-100);
        }
        .conn-field input:focus, .conn-field select:focus {
            outline: none;
            border-color: var(--coral);
        }
        .conn-field input[type="number"] { width: 90px; }
        .conn-modal-body {
            overflow-y: auto;
            flex: 1;
            padding: 0;
            contain: layout style;
        }
        .conn-result-table {
            width: 100%;
            border-collapse: collapse;
            font-size: 12px;
        }
        .conn-result-table th {
            position: sticky;
            top: 0;
            background: var(--sidebar-bg);
            text-align: left;
            padding: 8px 12px;
            font-size: 10px;
            font-weight: 700;
            letter-spacing: 0.5px;
            text-transform: uppercase;
            color: var(--map-label);
            border-bottom: 1px solid var(--map-border);
        }
        .conn-result-table td {
            padding: 8px 12px;
            border-bottom: 1px solid rgba(255,255,255,0.04);
            color: var(--grey-200);
        }
        .conn-result-table tr {
            cursor: pointer;
            transition: background 0.1s;
        }
        .conn-result-table tr:hover {
            background: rgba(255,255,255,0.04);
        }
        .conn-result-table tr.active {
            background: rgba(74,155,240,0.1);
        }
        .conn-dist {
            font-family: var(--font-mono);
            font-size: 11px;
            color: var(--grey-400);
        }
        .conn-type-pill {
            font-size: 10px;
            font-weight: 700;
            letter-spacing: 0.5px;
            text-transform: uppercase;
            padding: 2px 6px;
            border-radius: 3px;
            display: inline-block;
        }
        .conn-type-pill.terminal { background: rgba(61,187,125,0.15); color: var(--success); }
        .conn-type-pill.refinery { background: rgba(255,134,122,0.15); color: var(--coral); }
        .conn-type-pill.pipeline { background: rgba(128,191,255,0.15); color: var(--blue-muted); }
        .conn-type-pill.airport { background: rgba(74,155,240,0.15); color: var(--info); }
        .conn-type-pill.station { background: rgba(245,166,35,0.15); color: var(--warning); }
        .conn-type-pill.rail { background: rgba(176,190,197,0.15); color: #B0BEC5; }
        .conn-type-pill.jetty { background: rgba(78,205,196,0.15); color: var(--teal); }
        .conn-type-pill.default { background: rgba(255,255,255,0.08); color: var(--grey-400); }
        .conn-link-btn {
            font-size: 10px;
            font-weight: 700;
            font-family: var(--font-primary);
            padding: 3px 10px;
            border: 1px solid var(--success);
            background: transparent;
            color: var(--success);
            border-radius: var(--r-sm);
            cursor: pointer;
            transition: all 0.15s;
            white-space: nowrap;
        }
        .conn-link-btn:hover { background: rgba(61,187,125,0.15); }
        .conn-link-btn:disabled { opacity: 0.5; cursor: wait; }

        /* ── Bulk Tasks Modal ─────────────────────────── */
        .bulk-overlay {
            display: none; position: fixed; inset: 0; z-index: 2500;
            background: rgba(0,0,0,0.55); backdrop-filter: blur(2px);
            justify-content: center; align-items: flex-start; padding-top: 40px;
        }
        .bulk-overlay.visible { display: flex; }
        .bulk-modal {
            background: var(--panel-bg);
            border: 1px solid var(--panel-border);
            border-radius: var(--r-lg);
            box-shadow: 0 24px 80px rgba(0,0,0,0.6);
            width: 560px; max-height: 85vh; overflow-y: auto; padding: 0;
            display: flex; flex-direction: column;
        }
        .bulk-header {
            padding: 20px 24px 12px; border-bottom: 1px solid var(--map-border);
            display: flex; justify-content: space-between; align-items: flex-start; flex-shrink: 0;
        }
        .bulk-header h2 { font-size: 13px; font-weight: 600; color: var(--grey-100); margin: 0 0 2px; }
        .bulk-header p { font-size: 11px; color: var(--grey-400); margin: 0; }
        .bulk-close, .upload-close, .route-bar-close {
            background: none; border: 1px solid var(--map-border); color: var(--grey-400);
            border-radius: var(--r-sm); width: 26px; height: 26px;
            cursor: pointer; display: flex; align-items: center; justify-content: center;
        }
        .bulk-close:hover { color: var(--grey-100); border-color: var(--grey-500); background: rgba(255,255,255,0.04); }

        .bulk-tabs { display: flex; border-bottom: 1px solid var(--map-border); flex-shrink: 0; }
        .bulk-tab {
            flex: 1; padding: 10px; font-size: 12px; font-weight: 600;
            font-family: var(--font-primary); text-align: center;
            background: none; border: none; border-bottom: 2px solid transparent;
            color: var(--grey-400); cursor: pointer; transition: all 0.15s;
        }
        .bulk-tab:hover { color: var(--grey-200); background: rgba(255,255,255,0.02); }
        .bulk-tab.active { color: var(--coral); border-bottom-color: var(--coral); }

        .bulk-body { padding: 16px 24px; flex: 1; overflow-y: auto; }
        .bulk-section { margin-bottom: 16px; }
        .bulk-label {
            font-size: 10px; font-weight: 700; letter-spacing: 0.5px;
            text-transform: uppercase; color: var(--map-label); margin-bottom: 6px;
        }
        .bulk-types { display: flex; flex-wrap: wrap; gap: 6px; }
        .bulk-type-btn {
            padding: 5px 12px; font-size: 11px; font-weight: 600;
            font-family: var(--font-primary); border: 1px solid var(--map-border);
            border-radius: var(--r-sm); background: rgba(255,255,255,0.04);
            color: var(--grey-300); cursor: pointer; transition: all 0.15s;
        }
        .bulk-type-btn.selected { border-color: var(--coral); background: var(--coral-10); color: var(--coral); }
        .bulk-type-btn:hover { border-color: var(--grey-400); }

        .bulk-option {
            display: flex; align-items: center; gap: 8px; margin-bottom: 8px;
        }
        .bulk-option label { font-size: 12px; color: var(--grey-300); cursor: pointer; }
        .bulk-option input[type="checkbox"] { accent-color: var(--coral); }
        .bulk-option input[type="number"], .bulk-option select {
            width: 90px; padding: 5px 8px; font-size: 12px; font-family: var(--font-primary);
            background: rgba(255,255,255,0.04); border: 1px solid var(--map-border);
            border-radius: var(--r-sm); color: var(--grey-200); outline: none;
        }
        .bulk-option input[type="number"]:focus, .bulk-option select:focus { border-color: var(--coral); }

        .bulk-footer {
            padding: 12px 24px; border-top: 1px solid var(--map-border);
            display: flex; gap: 8px; justify-content: flex-end; flex-shrink: 0;
        }

        /* Task list / progress */
        .bt-task {
            padding: 10px 12px; border: 1px solid rgba(255,255,255,0.04);
            border-radius: var(--r-md); margin-bottom: 6px;
            transition: border-color 0.15s;
        }
        .bt-task.running { border-color: var(--blue-muted); }
        .bt-task.completed { border-color: rgba(61,187,125,0.3); }
        .bt-task.failed { border-color: rgba(229,73,58,0.3); }
        .bt-task.cancelled { border-color: var(--map-border); }
        .bt-top { display: flex; justify-content: space-between; align-items: center; margin-bottom: 6px; }
        .bt-type { font-size: 11px; font-weight: 700; color: var(--grey-200); }
        .bt-status {
            font-size: 10px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.5px;
            padding: 2px 6px; border-radius: 3px;
        }
        .bt-status.running { background: rgba(74,155,240,0.15); color: var(--blue-muted); }
        .bt-status.completed { background: rgba(61,187,125,0.15); color: var(--success); }
        .bt-status.failed { background: rgba(229,73,58,0.15); color: var(--error); }
        .bt-status.cancelled { background: rgba(255,255,255,0.06); color: var(--grey-400); }
        .bt-status.queued { background: rgba(245,166,35,0.15); color: var(--warning); }
        .bt-progress-bar {
            height: 4px; background: rgba(255,255,255,0.06); border-radius: 2px; overflow: hidden;
        }
        .bt-progress-fill { height: 100%; border-radius: 2px; transition: width 0.3s; background: var(--blue-muted); }
        .bt-progress-fill.done { background: #3DBB7D; }
        .bt-detail { font-size: 10px; color: var(--grey-500); margin-top: 4px; }
        .bt-cancel {
            font-size: 10px; padding: 2px 8px; background: none;
            border: 1px solid rgba(229,73,58,0.3); color: var(--error);
            border-radius: var(--r-sm); cursor: pointer; transition: all 0.15s;
        }
        .bt-cancel:hover { background: rgba(229,73,58,0.1); }
