/* Interactive car systems diagram. Consumes the site's tokens so dark mode
   flips with [data-theme="dark"] like every other page. */

.cs-wrap {
    max-width: 72rem;
    margin: 0 auto;
    padding: 2rem 1.5rem 3.5rem;
}

.cs-hint {
    color: var(--muted);
    font-size: 0.95rem;
    margin: 0 0 1rem;
}

.cs-layers {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin-bottom: 1.25rem;
}

.cs-layer {
    font-family: var(--font-mono);
    font-size: 0.78rem;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    padding: 8px 14px;
    border: 1px solid var(--line);
    background: var(--paper);
    color: var(--muted);
    border-radius: 6px;
    cursor: pointer;
}

.cs-layer:hover { color: var(--heading); }

.cs-layer.is-active {
    background: var(--blue);
    border-color: var(--blue);
    color: #fff;
}

.cs-diagram {
    border: 1px solid var(--line);
    background: var(--wash);
    border-radius: 10px;
    padding: 12px;
    overflow-x: auto;
}

.cs-diagram svg {
    display: block;
    width: 100%;
    min-width: 640px;
    height: auto;
}

/* wires */
.cs-wire {
    fill: none;
    stroke-width: 2.5;
    transition: opacity 150ms ease;
}

.cs-w-sense { stroke: var(--blue); }
.cs-w-cmd { stroke: #b02a2a; }
.cs-w-power { stroke: #b8860b; }

.cs-wire-label {
    font-family: var(--font-mono);
    font-size: 12px;
    fill: var(--muted);
    transition: opacity 150ms ease;
}

/* nodes */
.cs-node rect {
    fill: var(--paper);
    stroke: var(--navy);
    stroke-width: 2;
    transition: fill 150ms ease, stroke 150ms ease;
}

.cs-node { cursor: pointer; outline: none; }

.cs-node:hover rect,
.cs-node:focus-visible rect {
    fill: var(--blue);
}

.cs-node:hover text,
.cs-node:focus-visible text { fill: #fff; }

.cs-node.is-selected rect {
    fill: var(--navy);
    stroke: var(--blue);
}

.cs-node.is-selected text { fill: #fff; }

.cs-node-name {
    font-size: 15px;
    font-weight: 700;
    fill: var(--heading);
    text-anchor: middle;
}

.cs-node-sub {
    font-family: var(--font-mono);
    font-size: 11px;
    fill: var(--muted);
    text-anchor: middle;
}

/* layer dimming */
.cs-diagram[data-active-layer="sense"] .cs-w-cmd,
.cs-diagram[data-active-layer="sense"] .cs-w-power,
.cs-diagram[data-active-layer="cmd"] .cs-w-sense,
.cs-diagram[data-active-layer="cmd"] .cs-w-power,
.cs-diagram[data-active-layer="power"] .cs-w-sense,
.cs-diagram[data-active-layer="power"] .cs-w-cmd {
    opacity: 0.12;
}

/* detail panel */
.cs-detail {
    margin-top: 1.25rem;
    border: 2px solid var(--onb-frame, var(--navy));
    background: var(--wash);
    padding: 18px 22px;
}

.cs-detail-title {
    margin: 0 0 0.5rem;
    font-size: 1.25rem;
    color: var(--heading);
}

.cs-detail-body { margin: 0 0 0.75rem; color: var(--text); }

.cs-detail ul {
    margin: 0 0 0.75rem 1.1rem;
    padding: 0;
}

.cs-detail li { margin-bottom: 0.3rem; }

.cs-detail code, .cs-chain code {
    font-family: var(--font-mono);
    font-size: 0.88em;
    background: var(--paper);
    border: 1px solid var(--line);
    border-radius: 4px;
    padding: 1px 5px;
}

/* chain in words */
.cs-chain { margin-top: 2.5rem; }

.cs-chain-title { font-size: 1.4rem; color: var(--heading); }

.cs-chain-list li { margin-bottom: 0.6rem; }

.cs-src { color: var(--muted); font-size: 0.9rem; }

@media (max-width: 640px) {
    .cs-wrap { padding: 1.5rem 1rem 2.5rem; }
    .cs-detail { padding: 14px 16px; }
}
