.visibility-matrix[data-v-7146d6ec]{padding:2rem;max-width:1400px;margin:0 auto}.matrix-header[data-v-7146d6ec]{display:flex;justify-content:space-between;align-items:center;margin-bottom:1.5rem;flex-wrap:wrap;gap:1rem}.matrix-header h1[data-v-7146d6ec]{font-size:2rem;color:#2c3e50;margin:0}.header-controls[data-v-7146d6ec]{display:flex;gap:1rem}.btn[data-v-7146d6ec]{padding:.75rem 1.5rem;border:none;border-radius:8px;cursor:pointer;font-weight:600;transition:all .3s;text-decoration:none;display:inline-block}.btn-primary[data-v-7146d6ec]{background:#3498db;color:#fff}.btn-secondary[data-v-7146d6ec]{background:#95a5a6;color:#fff}.btn-outline[data-v-7146d6ec]{background:#fff;color:#3498db;border:2px solid #3498db}.btn[data-v-7146d6ec]:hover:not(:disabled){opacity:.9;transform:translateY(-2px)}.btn[data-v-7146d6ec]:disabled{opacity:.6;cursor:not-allowed}.breadcrumb[data-v-7146d6ec]{display:flex;align-items:center;gap:8px;margin-bottom:1rem;font-size:.875rem}.breadcrumb-link[data-v-7146d6ec]{color:#3498db;text-decoration:none}.breadcrumb-link[data-v-7146d6ec]:hover{text-decoration:underline}.breadcrumb-current[data-v-7146d6ec],.breadcrumb-sep[data-v-7146d6ec]{color:#95a5a6}.matrix-legend[data-v-7146d6ec]{display:flex;gap:2rem;margin-bottom:1.5rem;padding:1rem;background:#fff;border-radius:8px;box-shadow:0 2px 8px rgba(0,0,0,.1);flex-wrap:wrap}.legend-item[data-v-7146d6ec]{display:flex;align-items:center;gap:.5rem}.legend-box[data-v-7146d6ec]{width:30px;height:30px;border-radius:4px;border:1px solid #ddd}.legend-box.covered[data-v-7146d6ec]{background:#27ae60}.legend-box.detectable[data-v-7146d6ec]{background:#f39c12}.legend-box.not-applicable[data-v-7146d6ec]{background:#bdc3c7}.error-state[data-v-7146d6ec],.loading-state[data-v-7146d6ec]{text-align:center;padding:4rem 2rem}.loader[data-v-7146d6ec]{border:4px solid #f3f3f3;border-top:4px solid #3498db;border-radius:50%;width:50px;height:50px;animation:spin-7146d6ec 1s linear infinite;margin:0 auto 1rem}@keyframes spin-7146d6ec{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.error-icon[data-v-7146d6ec]{font-size:2rem;width:50px;height:50px;line-height:50px;border-radius:50%;background:#e74c3c;color:#fff;margin:0 auto 1rem;font-weight:700}.matrix-content[data-v-7146d6ec]{background:#fff;border-radius:12px;padding:1rem;box-shadow:0 2px 8px rgba(0,0,0,.1)}.master-detail[data-v-7146d6ec]{display:flex;gap:1rem;min-height:60vh}.tactics-sidebar[data-v-7146d6ec]{width:320px;flex-shrink:0;display:flex;flex-direction:column;gap:4px;overflow-y:auto;max-height:calc(100vh - 300px)}.tactic-item[data-v-7146d6ec]{padding:12px 14px;border:1px solid #e0e6ed;border-radius:8px;cursor:pointer;transition:all .2s;-webkit-user-select:none;-moz-user-select:none;user-select:none;background:#fafbfc}.tactic-item[data-v-7146d6ec]:hover{background:#f0f4f8}.tactic-item.active[data-v-7146d6ec]{background:#eaf6ff;border-color:#3498db;box-shadow:0 0 0 1px #3498db,0 4px 12px rgba(52,152,219,.12)}.tactic-item-top[data-v-7146d6ec]{display:flex;align-items:center;gap:8px;margin-bottom:6px}.tactic-name[data-v-7146d6ec]{font-weight:700;font-size:.95rem;color:#2c3e50;flex:1}.tactic-item.active .tactic-name[data-v-7146d6ec]{color:#3498db}.technique-count-badge[data-v-7146d6ec]{font-size:.75rem;background:rgba(0,0,0,.06);padding:2px 10px;border-radius:12px;color:#555;font-weight:600;flex-shrink:0}.tactic-item-bar[data-v-7146d6ec]{display:flex;align-items:center;gap:8px;margin-bottom:6px}.tactic-progress-bar[data-v-7146d6ec]{flex:1;height:6px;background:#ecf0f1;border-radius:3px;overflow:hidden}.tactic-progress-fill[data-v-7146d6ec]{height:100%;background:#27ae60;transition:width .3s}.tactic-coverage-pct[data-v-7146d6ec]{font-weight:700;font-size:.8rem;min-width:36px;text-align:right;color:#2c3e50}.tactic-status-tags[data-v-7146d6ec]{display:flex;gap:4px;flex-wrap:wrap}.status-tag[data-v-7146d6ec]{font-size:.65rem;font-weight:600;padding:2px 8px;border-radius:10px;color:#fff;white-space:nowrap}.status-tag.covered[data-v-7146d6ec]{background:#27ae60}.status-tag.detectable[data-v-7146d6ec]{background:#f39c12}.status-tag.not-applicable[data-v-7146d6ec]{background:#95a5a6}.techniques-panel[data-v-7146d6ec]{flex:1;min-width:0}.techniques-empty[data-v-7146d6ec]{display:flex;align-items:center;justify-content:center;height:100%;min-height:40vh;border:1px solid #e0e6ed;border-radius:8px;background:#fafbfc}.empty-prompt[data-v-7146d6ec]{display:flex;flex-direction:column;align-items:center;gap:12px;color:#95a5a6}.empty-prompt svg[data-v-7146d6ec]{opacity:.4}.empty-prompt p[data-v-7146d6ec]{font-size:.95rem;margin:0}.techniques-panel-header[data-v-7146d6ec]{display:flex;align-items:center;gap:10px;padding:12px 16px;background:#2c3e50;color:#fff;border-radius:8px 8px 0 0}.techniques-panel-header h2[data-v-7146d6ec]{font-size:1.1rem;margin:0;font-weight:700}.techniques-panel-header .technique-count-badge[data-v-7146d6ec]{background:hsla(0,0%,100%,.15);color:#fff}.tactic-techniques[data-v-7146d6ec]{display:flex;flex-direction:column;border:1px solid #e0e6ed;border-top:none;border-radius:0 0 8px 8px;max-height:calc(100vh - 380px);overflow-y:auto}.technique-row[data-v-7146d6ec]{display:flex;justify-content:space-between;align-items:center;padding:.75rem 1.25rem;border-bottom:1px solid #f0f0f0;cursor:pointer;transition:background .15s}.technique-row[data-v-7146d6ec]:last-child{border-bottom:none}.technique-row[data-v-7146d6ec]:hover{background:#f8f9fa}.technique-row.covered[data-v-7146d6ec]{border-left:4px solid #27ae60}.technique-row.detectable[data-v-7146d6ec]{border-left:4px solid #f39c12}.technique-row.not_applicable[data-v-7146d6ec]{border-left:4px solid #bdc3c7}.technique-row.empty[data-v-7146d6ec]{border-left:4px solid #f0f0f0}.technique-info[data-v-7146d6ec]{display:flex;align-items:center;gap:.75rem;flex:1;min-width:0}.technique-id[data-v-7146d6ec]{font-family:monospace;font-size:.85rem;font-weight:600;color:#2c3e50;white-space:nowrap}.technique-name-text[data-v-7146d6ec]{font-size:.9rem;color:#555;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.technique-meta[data-v-7146d6ec]{display:flex;align-items:center;gap:.5rem;flex-shrink:0}.quality-indicator[data-v-7146d6ec]{font-size:.75rem;font-weight:600;padding:2px 8px;border-radius:4px;background:#ecf0f1;color:#2c3e50}.status-pill[data-v-7146d6ec]{font-size:.7rem;font-weight:600;padding:3px 10px;border-radius:12px;color:#fff}.status-pill.covered[data-v-7146d6ec]{background:#27ae60}.status-pill.detectable[data-v-7146d6ec]{background:#f39c12}.status-pill.not_applicable[data-v-7146d6ec]{background:#95a5a6}.gap-indicator[data-v-7146d6ec]{font-size:.7rem;font-weight:600;padding:3px 10px;border-radius:12px;background:#e74c3c;color:#fff}.modal-overlay[data-v-7146d6ec]{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.5);display:flex;align-items:center;justify-content:center;z-index:1000;padding:20px}.modal-content[data-v-7146d6ec]{background:#fff;border-radius:12px;max-width:700px;width:100%;max-height:85vh;overflow-y:auto}.modal-header[data-v-7146d6ec]{display:flex;justify-content:space-between;align-items:flex-start;padding:1.5rem;border-bottom:1px solid #eee}.modal-header h2[data-v-7146d6ec]{font-size:1.3rem;color:#2c3e50;margin:0;flex:1}.close-btn[data-v-7146d6ec]{background:none;border:none;font-size:2rem;cursor:pointer;color:#7f8c8d;padding:0;width:40px;height:40px;line-height:1}.close-btn[data-v-7146d6ec]:hover{color:#2c3e50}.modal-body[data-v-7146d6ec]{padding:1.5rem;display:flex;flex-direction:column;gap:1.25rem}.status-badge[data-v-7146d6ec]{display:inline-block;padding:.5rem 1rem;border-radius:20px;font-weight:600;color:#fff;align-self:flex-start}.status-badge.covered[data-v-7146d6ec]{background:#27ae60}.status-badge.detectable[data-v-7146d6ec]{background:#f39c12}.status-badge.not_applicable[data-v-7146d6ec]{background:#95a5a6}.detail-section h3[data-v-7146d6ec]{font-size:1.1rem;color:#2c3e50;margin-bottom:.5rem}.quality-badge[data-v-7146d6ec]{display:inline-block;padding:.5rem 1rem;border-radius:20px;font-weight:600;color:#fff}.quality-badge.full[data-v-7146d6ec]{background:#27ae60}.quality-badge.partial[data-v-7146d6ec]{background:#f39c12}.quality-badge.minimal[data-v-7146d6ec]{background:#e74c3c}.coverage-progress-container[data-v-7146d6ec]{display:flex;flex-direction:column;gap:.5rem}.coverage-progress-bar[data-v-7146d6ec]{height:12px;background:#ecf0f1;border-radius:6px;overflow:hidden}.coverage-progress-fill[data-v-7146d6ec]{height:100%;background:#27ae60;transition:width .3s}.coverage-progress-text[data-v-7146d6ec]{font-size:.85rem;color:#7f8c8d}.type-coverage-hint[data-v-7146d6ec]{font-size:.85rem;color:#7f8c8d;margin:0 0 .75rem}.type-coverage-list[data-v-7146d6ec]{display:flex;flex-direction:column;gap:8px}.type-coverage-row[data-v-7146d6ec]{display:flex;align-items:center;gap:10px}.type-coverage-label[data-v-7146d6ec]{min-width:160px;display:flex;align-items:center;gap:6px}.type-name[data-v-7146d6ec]{font-size:.85rem;font-weight:600;color:#2c3e50}.type-count[data-v-7146d6ec]{font-size:.75rem;color:#7f8c8d}.type-coverage-bar[data-v-7146d6ec]{flex:1;height:10px;background:#ecf0f1;border-radius:5px;overflow:hidden}.type-coverage-fill[data-v-7146d6ec]{height:100%;border-radius:5px;transition:width .3s}.type-coverage-fill.full[data-v-7146d6ec]{background:#27ae60}.type-coverage-fill.partial[data-v-7146d6ec]{background:#f39c12}.type-coverage-fill.none[data-v-7146d6ec]{background:#e74c3c}.type-coverage-pct[data-v-7146d6ec]{min-width:36px;text-align:right;font-size:.8rem;font-weight:700;color:#2c3e50}.gap-analysis-section[data-v-7146d6ec]{background:#fafbfc;border:1px solid #e0e6ed;border-radius:8px;padding:1.25rem}.gap-analysis-section h3[data-v-7146d6ec]{color:#e74c3c;margin-bottom:1rem}.gap-analysis-section h4[data-v-7146d6ec]{font-size:.9rem;color:#2c3e50;margin:.75rem 0 .5rem}.gap-loading[data-v-7146d6ec]{color:#7f8c8d;font-style:italic;padding:1rem 0}.gap-datasource-list[data-v-7146d6ec]{display:flex;flex-direction:column;gap:6px}.gap-datasource-item[data-v-7146d6ec]{display:flex;align-items:center;gap:.75rem;padding:.6rem .75rem;border-radius:6px;font-size:.85rem}.gap-datasource-item.actionable[data-v-7146d6ec]{background:#fff3e0;border:1px solid #ffe0b2}.gap-datasource-item.enabled[data-v-7146d6ec]{background:#e8f5e9;border:1px solid #c8e6c9}.ds-name[data-v-7146d6ec]{flex:1;font-weight:600;color:#2c3e50}.ds-quality[data-v-7146d6ec]{font-size:.75rem;padding:2px 8px;border-radius:4px;background:#ecf0f1;color:#555}.ds-status-tag[data-v-7146d6ec]{font-size:.7rem;font-weight:600;padding:2px 10px;border-radius:12px;color:#fff}.ds-status-tag.not-enabled[data-v-7146d6ec]{background:#f39c12}.ds-status-tag.enabled[data-v-7146d6ec]{background:#27ae60}.no-datasources[data-v-7146d6ec]{text-align:center;color:#95a5a6;padding:1rem}.no-datasources p[data-v-7146d6ec]{margin:0}.modal-actions[data-v-7146d6ec]{display:flex;gap:1rem;margin-top:.5rem}@media (max-width:900px){.master-detail[data-v-7146d6ec]{flex-direction:column}.tactics-sidebar[data-v-7146d6ec]{width:100%;max-height:none;flex-direction:row;flex-wrap:wrap;overflow-y:visible}.tactic-item[data-v-7146d6ec]{flex:1 1 auto;min-width:160px}.techniques-empty[data-v-7146d6ec]{min-height:20vh}.tactic-techniques[data-v-7146d6ec]{max-height:none}.matrix-legend[data-v-7146d6ec]{flex-direction:column;gap:.5rem}.header-controls[data-v-7146d6ec]{flex-direction:column}.technique-row[data-v-7146d6ec]{flex-direction:column;align-items:flex-start;gap:.5rem}.technique-meta[data-v-7146d6ec]{flex-wrap:wrap}}