.knowledge-map {
    margin-top: 2rem;
    margin-bottom: 3rem;
    display: grid;
    gap: 1.5rem;
}

.knowledge-map__header {
    display: grid;
    gap: 0.5rem;
}

.knowledge-map__header h1 {
    margin: 0;
    font-size: clamp(1.6rem, 1.2rem + 1vw, 2.2rem);
}

.knowledge-map__lead {
    color: var(--text-muted, #666);
    font-size: 1rem;
    margin: 0;
    max-width: 60ch;
}

.knowledge-map__results {
    display: grid;
    gap: 1.25rem;
}

.knowledge-map__status {
    margin-bottom: 0.25rem;
    color: var(--text-muted, #666);
    font-size: 0.95rem;
    transition: color 0.2s ease;
}

.knowledge-map__status[data-variant="success"] {
    color: #047857;
}

.knowledge-map__status[data-variant="warning"] {
    color: #b45309;
}

.knowledge-map__status[data-variant="error"] {
    color: #b91c1c;
}

.knowledge-map__visualization {
    display: grid;
    grid-template-columns: minmax(0, 2fr) minmax(0, 1fr);
    gap: 1.5rem;
    align-items: start;
}

.knowledge-map__graph {
    position: relative;
    min-height: 520px;
    max-height: min(80vh, 840px);
    border-radius: 16px;
    border: 1px solid var(--border-color, #dfe4ea);
    background: linear-gradient(180deg, rgba(248, 250, 252, 0.9) 0%, rgba(237, 242, 247, 0.9) 100%);
    box-shadow: 0 12px 36px rgba(15, 23, 42, 0.08);
    overflow: auto;
}

.knowledge-map__graph svg {
    display: block;
}

.knowledge-map__graph .km-link {
    stroke: rgba(59, 130, 246, 0.35);
    stroke-width: 1.6;
    transition: opacity 0.2s ease, stroke 0.2s ease;
}

.knowledge-map__graph .km-link--incoming {
    stroke-dasharray: 4 6;
    stroke: rgba(245, 158, 11, 0.45);
}

.knowledge-map__graph .km-link.is-highlighted {
    stroke-width: 2.4;
    opacity: 1;
}

.knowledge-map__graph .km-link.is-dimmed {
    opacity: 0.15;
}

.knowledge-map__graph .km-node {
    cursor: pointer;
    transition: opacity 0.2s ease;
}

.knowledge-map__graph .km-node circle {
    r: 20;
    stroke: rgba(15, 23, 42, 0.15);
    stroke-width: 1.6;
    fill: #64748b;
    transition: stroke 0.2s ease, stroke-width 0.2s ease, transform 0.2s ease;
}

.knowledge-map__graph .km-node text {
    font-size: 13px;
    text-anchor: middle;
    dominant-baseline: hanging;
    fill: #0f172a;
    pointer-events: none;
    font-weight: 600;
}

.knowledge-map__graph .km-node--source circle {
    r: 28;
    fill: #1d4ed8;
    stroke: rgba(17, 24, 39, 0.45);
    stroke-width: 2.5;
}

.knowledge-map__graph .km-node.is-highlighted circle {
    stroke: #0f172a;
    stroke-width: 3;
}

.knowledge-map__graph .km-node.is-dimmed {
    opacity: 0.25;
}

.km-node[data-type="notes.topic"] circle {
    fill: #2563eb;
}

.km-node[data-type="notes.conspect"] circle {
    fill: #7c3aed;
}

.km-node[data-type="special_notes.specialconspect"] circle {
    fill: #059669;
}

.km-node[data-type="tasks.item"] circle {
    fill: #ea580c;
}

.km-node[data-type="tests.question"] circle {
    fill: #e11d48;
}

.knowledge-map__details {
    border-radius: 16px;
    border: 1px solid var(--border-color, #dfe4ea);
    background: linear-gradient(180deg, #ffffff 0%, #f8fafc 100%);
    box-shadow: 0 10px 28px rgba(15, 23, 42, 0.08);
    padding: 1.5rem;
    display: flex;
    flex-direction: column;
    gap: 1rem;
    max-height: min(80vh, 840px);
    overflow: auto;
}

.knowledge-map__details-title {
    font-size: 1.1rem;
    font-weight: 700;
    margin: 0;
}

.knowledge-map__details-body {
    font-size: 0.95rem;
    color: var(--text-muted, #4b5563);
    line-height: 1.5;
    display: grid;
    gap: 0.65rem;
}

.knowledge-map__details-meta {
    font-size: 0.85rem;
    color: var(--text-muted, #6b7280);
}

.knowledge-map__details-body a {
    color: #1d4ed8;
    text-decoration: none;
}

.knowledge-map__details-body a:hover,
.knowledge-map__details-body a:focus {
    text-decoration: underline;
}

.knowledge-map__relations {
    list-style: none;
    padding: 0;
    margin: 0;
    display: grid;
    gap: 0.4rem;
}

.knowledge-map__relations-item {
    font-size: 0.9rem;
    color: var(--text-muted, #475569);
}

.knowledge-map__relations-item strong {
    color: #0f172a;
}

.knowledge-map__legend {
    margin-top: auto;
}

.knowledge-map__legend-title {
    font-size: 0.9rem;
    font-weight: 600;
    margin-bottom: 0.6rem;
    color: var(--text-muted, #4b5563);
}

.knowledge-map__legend-list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-wrap: wrap;
    gap: 0.6rem 1.1rem;
}

.knowledge-map__legend-item {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    font-size: 0.9rem;
    color: var(--text-muted, #4b5563);
}

.knowledge-map__legend-swatch {
    width: 14px;
    height: 14px;
    border-radius: 50%;
    flex-shrink: 0;
    box-shadow: inset 0 0 0 1px rgba(15, 23, 42, 0.08);
}

@media (max-width: 1024px) {
    .knowledge-map__visualization {
        grid-template-columns: 1fr;
    }

    .knowledge-map__details {
        order: -1;
        max-height: none;
    }
}

@media (max-width: 768px) {
    .knowledge-map__graph {
        min-height: 380px;
    }
}
