/*
 * StarshipOS — Taktik (Lagebild) & CIC-Feuerleitung
 *
 * Ein Stylesheet fuer beide Stationen, weil beide dasselbe Radar zeigen.
 * Ersetzt cic.css und die Taktik-Regeln aus styles.css (die dort unter
 * .tactical-layout / .radar-* liegen und hier nicht mehr benutzt werden).
 *
 * Farben: IFF (Freund/Feind/…) und Waffenart sind Identitaet, Zustaende
 * (bereit/Abkuehlung/…) und Hitze sind Signal — beides getrennt halten.
 * Alle Klassen tragen das Praefix tac-, damit globale Regeln wie
 * .contact-friendly aus styles.css/ciws-radar.css nicht hineinfunken.
 */

.tac-station {
    --iff-friendly: var(--accent-blue, #60a5fa);
    --iff-hostile: var(--accent-red, #f87171);
    --iff-unknown: var(--accent-yellow, #fbbf24);
    --iff-neutral: #cbd5e1;
    --kind-energie: var(--accent-cyan, #22d3ee);
    --kind-torpedo: var(--accent-violet, #c4b5fd);
    --kind-rakete: #f0abfc;
    --kind-nahbereich: var(--accent-green, #34d399);
    --kind-munition: var(--accent-yellow, #fbbf24);
    --scope-bg: #03100d;
    --scope-line: rgba(34, 211, 238, 0.22);
    --well: var(--bg-primary, #080b12);
}

/* ── Layout ─────────────────────────────────────────────────── */
.tac-layout {
    display: grid;
    grid-template-columns: minmax(0, 1.15fr) minmax(320px, 1fr);
    gap: var(--space-lg, 24px);
    align-items: start;
}
.tac-scope-area { min-width: 0; position: sticky; top: var(--space-md, 16px); display: flex; flex-direction: column; gap: var(--space-md, 16px); }
.tac-side-area { min-width: 0; display: flex; flex-direction: column; gap: var(--space-lg, 24px); }

@media (max-width: 1000px) {
    .tac-layout { grid-template-columns: minmax(0, 1fr); }
    .tac-scope-area { position: static; }
}

.tac-station .tac-mini-label {
    font-size: var(--text-xs, 0.75rem); font-weight: 600; letter-spacing: var(--tracking-label, 0.08em);
    text-transform: uppercase; color: var(--text-muted, #8c9bb3);
}
.tac-station .tac-empty { margin: 0; color: var(--text-secondary, #a7b3c7); font-size: var(--text-sm, 0.8125rem); }
.tac-link { font-size: var(--text-sm, 0.8125rem); color: var(--accent-cyan, #22d3ee); text-decoration: none; align-self: flex-end; }
.tac-link:hover { text-decoration: underline; }

/* ── Radar ──────────────────────────────────────────────────── */
.tac-scope-body { display: flex; flex-direction: column; align-items: center; gap: var(--space-sm, 8px); }
.tac-scope { width: 100%; max-width: 640px; display: block; font-family: var(--font-mono, monospace); }
.tac-scope-bg { fill: var(--scope-bg); stroke: rgba(34, 211, 238, 0.35); stroke-width: 1.5; }
.tac-rings circle, .tac-rings line { fill: none; stroke: var(--scope-line); stroke-width: 1; }
.tac-ring-labels text { font-size: 11px; fill: rgba(34, 211, 238, 0.55); }
.tac-bearings text { font-size: 12px; fill: var(--text-muted, #8c9bb3); text-anchor: middle; dominant-baseline: middle; letter-spacing: 0.06em; }

.tac-own-ship { fill: var(--accent-cyan, #22d3ee); filter: drop-shadow(0 0 4px rgba(34, 211, 238, 0.8)); }

.tac-range circle { fill: none; stroke-width: 1.25; stroke-dasharray: 6 5; opacity: 0.7; }
.tac-range text { font-size: 11px; opacity: 0.85; }
.tac-range.is-busy circle { opacity: 0.3; }
.tac-range.kind-energie circle    { stroke: var(--kind-energie); }    .tac-range.kind-energie text    { fill: var(--kind-energie); }
.tac-range.kind-torpedo circle    { stroke: var(--kind-torpedo); }    .tac-range.kind-torpedo text    { fill: var(--kind-torpedo); }
.tac-range.kind-nahbereich circle { stroke: var(--kind-nahbereich); } .tac-range.kind-nahbereich text { fill: var(--kind-nahbereich); }
.tac-range.kind-munition circle   { stroke: var(--kind-munition); }   .tac-range.kind-munition text   { fill: var(--kind-munition); }
.tac-range.kind-rakete circle     { stroke: var(--kind-rakete); }     .tac-range.kind-rakete text     { fill: var(--kind-rakete); }

.tac-lock { stroke-width: 1.5; }
.tac-lock.in-range { stroke: var(--accent-green, #34d399); opacity: 0.8; }
.tac-lock.out-of-range { stroke: var(--accent-red, #f87171); stroke-dasharray: 4 4; opacity: 0.6; }

.tac-trail { fill: none; stroke-width: 1.5; stroke-dasharray: 3 3; opacity: 0.6; }
.tac-trail.iff-friendly { stroke: var(--iff-friendly); }
.tac-trail.iff-hostile  { stroke: var(--iff-hostile); }
.tac-trail.iff-unknown  { stroke: var(--iff-unknown); }
.tac-trail.iff-neutral  { stroke: var(--iff-neutral); }

.tac-contact .tac-hit { fill: transparent; }
.tac-contact .tac-mark { stroke-width: 2; stroke: rgba(255, 255, 255, 0.75); }
.tac-contact.iff-friendly .tac-mark { fill: var(--iff-friendly); }
.tac-contact.iff-hostile  .tac-mark { fill: var(--iff-hostile); }
.tac-contact.iff-unknown  .tac-mark { fill: var(--iff-unknown); }
.tac-contact.iff-neutral  .tac-mark { fill: var(--iff-neutral); }
.tac-contact.is-clickable { cursor: pointer; }
.tac-contact.is-clickable:hover .tac-hit { fill: rgba(34, 211, 238, 0.12); stroke: rgba(34, 211, 238, 0.5); }
.tac-contact.is-jammed { opacity: 0.15; animation: tac-flicker 0.9s steps(2) infinite; }
.tac-contact.is-edge { opacity: 0.5; }
.tac-contact.is-hit .tac-mark { filter: drop-shadow(0 0 8px #fff); fill: #fff; }
@keyframes tac-flicker { 50% { opacity: 0.45; } }

.tac-label { font-size: 13px; font-weight: 600; fill: var(--text-primary, #e0e7ff); paint-order: stroke; stroke: var(--scope-bg); stroke-width: 3px; }
.tac-sublabel { font-size: 11px; fill: var(--text-muted, #8c9bb3); paint-order: stroke; stroke: var(--scope-bg); stroke-width: 3px; }

.tac-primary { fill: none; stroke: var(--accent-red, #f87171); stroke-width: 2; stroke-dasharray: 5 4; animation: tac-spin 6s linear infinite; transform-box: fill-box; transform-origin: center; }
.tac-primary-label { font-size: 10px; font-weight: 700; letter-spacing: 0.14em; fill: var(--accent-red, #f87171); text-anchor: middle; }
@keyframes tac-spin { to { transform: rotate(360deg); } }

.tac-legend {
    display: flex; flex-wrap: wrap; justify-content: center; gap: 6px 16px;
    font-size: var(--text-xs, 0.75rem); letter-spacing: 0.06em; text-transform: uppercase; color: var(--text-muted, #8c9bb3);
}
.tac-legend span { display: inline-flex; align-items: center; gap: 6px; }
.tac-dot { width: 9px; height: 9px; border-radius: 50%; }
.tac-dot.iff-friendly { background: var(--iff-friendly); }
.tac-dot.iff-hostile  { background: var(--iff-hostile); }
.tac-dot.iff-unknown  { background: var(--iff-unknown); }
.tac-dot.iff-neutral  { background: var(--iff-neutral); }
.tac-dash { width: 16px; border-top: 1.5px dashed var(--kind-energie); }
.tac-legend-hint { color: var(--accent-cyan, #22d3ee); }

.tac-jamming {
    margin: 0; padding: var(--space-sm, 8px) var(--space-md, 16px);
    border-left: 3px solid var(--accent-yellow, #fbbf24); background: var(--tint-yellow, rgba(251,191,36,.14));
    color: var(--accent-yellow, #fbbf24); font-size: var(--text-sm, 0.8125rem); font-weight: 700;
    letter-spacing: 0.08em; text-transform: uppercase;
}

/* ── Gefechtsmeldungen ──────────────────────────────────────── */
.tac-feed { display: flex; flex-direction: column; gap: 6px; }
.tac-feed:empty { display: none; }
.tac-feed-line, .tac-msg {
    margin: 0; padding: 8px 12px; font-size: var(--text-base, 0.875rem);
    border-left: 3px solid; border-radius: var(--radius-sm, 4px);
}
.tone-hit  { color: #6ee7b7; background: var(--tint-green, rgba(52,211,153,.14));  border-left-color: var(--accent-green, #34d399); }
.tone-miss { color: #fcd34d; background: var(--tint-yellow, rgba(251,191,36,.14)); border-left-color: var(--accent-yellow, #fbbf24); }
.tone-kill, .tone-error { color: #fca5a5; background: var(--tint-red, rgba(248,113,113,.16)); border-left-color: var(--accent-red, #f87171); }

/* ── Badges ─────────────────────────────────────────────────── */
.tac-iff-badge, .tac-state, .tac-primary-badge, .tac-jam-badge {
    display: inline-flex; align-items: center; padding: 2px 8px; border: 1px solid;
    border-radius: var(--radius-sm, 4px); font-size: var(--text-xs, 0.75rem); font-weight: 700;
    letter-spacing: var(--tracking-label, 0.08em); text-transform: uppercase; white-space: nowrap;
}
.tac-iff-badge.iff-friendly { color: var(--iff-friendly); border-color: var(--iff-friendly); background: var(--tint-blue, rgba(96,165,250,.14)); }
.tac-iff-badge.iff-hostile  { color: var(--iff-hostile);  border-color: var(--iff-hostile);  background: var(--tint-red, rgba(248,113,113,.16)); }
.tac-iff-badge.iff-unknown  { color: var(--iff-unknown);  border-color: var(--iff-unknown);  background: var(--tint-yellow, rgba(251,191,36,.14)); }
.tac-iff-badge.iff-neutral  { color: var(--iff-neutral);  border-color: var(--border-strong, #3a4a60); background: var(--bg-raised, #1b2533); }
.tac-primary-badge { color: var(--accent-red, #f87171); border-color: var(--accent-red, #f87171); border-style: dashed; }
.tac-jam-badge { color: var(--accent-yellow, #fbbf24); border-color: var(--accent-yellow, #fbbf24); }
/* Zielscan: Stand je Kontakt, Verdacht (Schmuggelware) */
.tac-scan-badge { display: inline-flex; align-items: center; padding: 0 5px; border: 1px solid var(--accent-cyan, #22d3ee);
    color: var(--accent-cyan, #22d3ee); border-radius: var(--radius-sm, 4px); font-size: 0.68rem; flex: none; white-space: nowrap; }
.tac-jam-badge.tac-sus-badge { color: #fb923c; border-color: #fb923c; }
.tac-scan-line { color: var(--text-secondary, #cfd6e4); font-size: 0.8rem; }

.tac-state.state-ready    { color: var(--accent-green, #34d399);  border-color: var(--accent-green, #34d399);  background: var(--tint-green, rgba(52,211,153,.14)); }
.tac-state.state-firing   { color: #fdba74; border-color: #fb923c; background: rgba(251, 146, 60, 0.16); }
.tac-state.state-cooldown { color: var(--accent-blue, #60a5fa);   border-color: var(--accent-blue, #60a5fa);   background: var(--tint-blue, rgba(96,165,250,.14)); }
.tac-state.state-charging { color: var(--accent-yellow, #fbbf24); border-color: var(--accent-yellow, #fbbf24); background: var(--tint-yellow, rgba(251,191,36,.14)); }
.tac-state.state-jammed,
.tac-state.state-empty    { color: var(--accent-red, #f87171);    border-color: var(--accent-red, #f87171);    background: var(--tint-red, rgba(248,113,113,.16)); }
.tac-state.state-offline  { color: var(--text-muted, #8c9bb3);    border-color: var(--border-strong, #3a4a60); background: var(--bg-raised, #1b2533); }

/* ── Primaerziel (Taktik) ───────────────────────────────────── */
.tac-target-panel.has-target { border-left: 3px solid var(--iff-unknown); }
.tac-target-panel.iff-hostile { border-left-color: var(--iff-hostile); }
.tac-target-panel.iff-friendly { border-left-color: var(--iff-friendly); }
.tac-target-panel.iff-neutral { border-left-color: var(--iff-neutral); }
.tac-target-head { display: flex; align-items: center; gap: var(--space-sm, 8px); margin-bottom: var(--space-sm, 8px); }
.tac-target-name { font-size: var(--text-lg, 1.1rem); font-weight: 700; color: var(--text-primary, #e0e7ff); }

.tac-target-stats, .tac-solution-stats {
    display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--space-sm, 8px); margin: 0;
}
.tac-target-stats dt, .tac-solution-stats dt {
    font-size: var(--text-xs, 0.75rem); letter-spacing: 0.08em; text-transform: uppercase; color: var(--text-muted, #8c9bb3);
}
.tac-target-stats dd, .tac-solution-stats dd {
    margin: 0; font-family: var(--font-mono, monospace); font-weight: 600; font-variant-numeric: tabular-nums;
    color: var(--text-primary, #e0e7ff); white-space: nowrap;
}
.tac-target-stats dd { font-size: 1.15rem; }
.tac-solution-stats dd.is-bad { color: var(--accent-red, #f87171); }

.tac-target-warn {
    margin: var(--space-sm, 8px) 0 0; padding: 6px 10px; font-size: var(--text-sm, 0.8125rem);
    color: var(--accent-yellow, #fbbf24); background: var(--tint-yellow, rgba(251,191,36,.14)); border-radius: var(--radius-sm, 4px);
}
.tac-target-weapons { margin-top: var(--space-md, 16px); }
.tac-target-weapons ul { list-style: none; margin: 6px 0 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 150px), 1fr)); gap: 3px 12px; }
.tac-target-weapons li { display: flex; justify-content: space-between; gap: 8px; font-size: var(--text-xs, 0.75rem); padding: 3px 8px; border-radius: var(--radius-sm, 4px); background: var(--well); }
.tac-target-weapons li span { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.tac-target-iff { display: flex; width: 100%; margin-top: 10px; }
.tac-target-iff .tac-iff-btn { flex: 1; padding: 0 4px; }
.tac-target-weapons li.is-in strong { color: var(--accent-green, #34d399); }
.tac-target-weapons li.is-out strong { color: var(--text-dim, #5b6980); }
.tac-target-actions { display: flex; flex-wrap: wrap; gap: var(--space-sm, 8px); margin-top: var(--space-md, 16px); }
.tac-target-actions > * { flex: 1; justify-content: center; text-align: center; }

/* ── Kontaktzeilen: Aktionen in der aufgeklappten Zeile ─────── */
.tac-card-actions { display: flex; align-items: center; flex-wrap: wrap; gap: 8px; }
.tac-card-buttons { display: flex; flex-wrap: wrap; gap: 8px; }

.tac-iff-controls .tac-iff-btn { padding: 0 10px; font-size: var(--text-xs, 0.75rem); }
.tac-iff-controls .tac-iff-btn.is-active { color: #0a0f16; }
.tac-iff-controls .tac-iff-btn.iff-friendly.is-active { background: var(--iff-friendly); }
.tac-iff-controls .tac-iff-btn.iff-hostile.is-active  { background: var(--iff-hostile); }
.tac-iff-controls .tac-iff-btn.iff-unknown.is-active  { background: var(--iff-unknown); }
.tac-iff-controls .tac-iff-btn.iff-neutral.is-active  { background: var(--iff-neutral); }

.tac-btn-scan { border-color: var(--accent-violet, #c4b5fd); color: var(--accent-violet, #c4b5fd); background: rgba(196, 181, 253, 0.12); }
.tac-btn-target { border-color: var(--accent-red, #f87171); color: var(--accent-red, #f87171); background: var(--tint-red, rgba(248,113,113,.16)); }

/* ── Feuerleitung: gemeinsame Bausteine (Karten unten bei „CIC Feuerleitung v2“) ── */
.tac-primary-meta { font-family: var(--font-mono, monospace); font-size: var(--text-sm, 0.8125rem); color: var(--text-secondary, #a7b3c7); font-variant-numeric: tabular-nums; }
.tac-kind-dot { width: 10px; height: 10px; border-radius: 2px; background: var(--kind); flex: none; }
.tac-select { flex: 1; min-width: 0; min-height: var(--control-h-md, 40px); }

.tac-range-bar { position: relative; height: 8px; background: var(--well); border: 1px solid var(--border-color, #2a3648); border-radius: 4px; overflow: hidden; }
.tac-range-bar i { display: block; height: 100%; background: var(--accent-green, #34d399); transition: width 400ms ease; }
.tac-range-bar.out-of-range i { background: var(--accent-red, #f87171); }
.tac-range-bar.is-idle i { width: 0 !important; }

.tac-gauge { display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: 8px; }
.tac-gauge-track { height: 6px; background: var(--well); border: 1px solid var(--border-color, #2a3648); border-radius: 3px; overflow: hidden; }
.tac-gauge-track i { display: block; height: 100%; background: var(--accent-cyan, #22d3ee); transition: width 400ms ease; }
.tac-gauge-value { font-family: var(--font-mono, monospace); font-size: var(--text-sm, 0.8125rem); font-variant-numeric: tabular-nums; min-width: 5ch; text-align: right; }
.tac-gauge.heat-warm .tac-gauge-track i { background: var(--accent-yellow, #fbbf24); }
.tac-gauge.heat-hot .tac-gauge-track i,
.tac-gauge.heat-overheated .tac-gauge-track i { background: var(--accent-red, #f87171); }
.tac-gauge.heat-hot .tac-gauge-value,
.tac-gauge.heat-overheated .tac-gauge-value { color: var(--accent-red, #f87171); font-weight: 700; }
.tac-gauge.ammo .tac-gauge-track i { background: var(--kind); }
.tac-gauge.ammo.is-empty .tac-gauge-value { color: var(--accent-red, #f87171); font-weight: 700; }

.tac-fire {
    flex: 1; min-height: 48px; border-radius: var(--radius-md, 6px); cursor: pointer;
    border: 1px solid var(--accent-red, #f87171); background: var(--accent-red, #f87171); color: #1a0606;
    font-family: var(--font-mono, monospace); font-size: var(--text-md, 0.9375rem); font-weight: 800;
    letter-spacing: 0.14em; text-transform: uppercase;
}
.tac-fire:hover:not(:disabled) { background: #fca5a5; }
.tac-fire:disabled {
    background: transparent; color: var(--text-muted, #8c9bb3); border-color: var(--border-strong, #3a4a60);
    border-style: dashed; letter-spacing: 0.04em; font-weight: 600; font-size: var(--text-xs, 0.75rem);
    padding: 0 4px; cursor: not-allowed; opacity: 1;
}
.tac-reload { min-height: 48px; }

@media (max-width: 640px) {
    .tac-card-buttons { width: 100%; }
    .tac-card-buttons > * { flex: 1; }
    .tac-iff-controls { width: 100%; }
    .tac-iff-controls .tac-iff-btn { flex: 1; padding: 0 4px; }
}

/* ── Flugleitung: Einsatz beim Hangar anfordern ─────────────────────── */
.tac-hangar-actions { margin-top: 0.4rem; }
.tac-hangar-label {
    font-size: var(--text-xs);
    font-weight: 600;
    letter-spacing: var(--tracking-label);
    text-transform: uppercase;
    color: var(--text-secondary);
}
.tac-btn-hangar { border-color: var(--accent-cyan); background: var(--tint-cyan); color: var(--accent-cyan); }
.tac-hangar-pending {
    font-size: var(--text-xs);
    color: var(--accent-cyan);
    border: 1px dashed var(--accent-cyan);
    border-radius: var(--radius-xs);
    padding: 0.1rem 0.45rem;
}
.tac-hangar-error { color: var(--accent-red); font-size: var(--text-sm); margin: 0.4rem 0 0; }

.tac-turret-badge {
    display: inline-flex; align-items: center; padding: 2px 6px; border: 1px solid var(--accent-red, #f87171);
    border-radius: var(--radius-sm, 4px); font-size: var(--text-xs, 0.75rem); color: var(--accent-red, #f87171); white-space: nowrap;
}
.tac-systems { list-style: none; margin: 6px 0 0; padding: 0; display: flex; flex-direction: column; gap: 3px; font-size: var(--text-xs, 0.75rem); }
.tac-systems li { display: grid; grid-template-columns: 8.5em minmax(0, 1fr) 6em; gap: 8px; align-items: center; }
.tac-systems li > span:last-child { text-align: right; color: var(--text-muted, #8c9bb3); }
.tac-system-bar { height: 4px; background: var(--bg-raised, #1b2533); border-radius: 2px; overflow: hidden; }
.tac-system-bar > span { display: block; height: 100%; background: var(--accent-green, #34d399); }
.tac-systems li.is-hit .tac-system-bar > span { background: var(--accent-yellow, #fbbf24); }
.tac-systems li.is-down { color: var(--accent-red, #f87171); }
.tac-systems li.tac-heat .tac-system-bar > span { background: var(--accent-blue, #60a5fa); }
.tac-systems li.tac-heat.is-hit .tac-system-bar > span { background: var(--accent-yellow, #fbbf24); }
.tac-systems li.tac-heat.is-down .tac-system-bar > span { background: var(--accent-red, #f87171); }


/* ══ Taktik-Tafel (/bridge/tactical) ═════════════════════════════════════
 * Desktop ab 1280 px: drei Spalten (Radar | Kontakte | Ziel + Bewaffnung).
 * Tablet 760–1279 px: zwei Spalten (Radar, Ziel, Bewaffnung | Kontakte).
 * Smartphone: Reiter Lage / Kontakte / Waffen (tactical-station.js setzt data-tab).
 * Die Kontaktliste rollt ab Tablet in sich — hundert Kontakte strecken die Seite nicht.
 */
.station-main:has(.tac-board) { max-width: 1800px; }

.tac-board {
    display: grid;
    gap: var(--space-md, 16px);
    align-items: start;
    grid-template-columns: minmax(0, 1fr);
    grid-template-areas: "tabs" "scope" "target" "contacts" "weapons";
}
.tac-tabs { grid-area: tabs; }
.tac-area { min-width: 0; display: flex; flex-direction: column; gap: var(--space-md, 16px); }
.tac-area-scope { grid-area: scope; }
.tac-area-target { grid-area: target; }
.tac-area-contacts { grid-area: contacts; }
.tac-area-weapons { grid-area: weapons; }

/* Smartphone: ein Reiter sichtbar, Primärziel bei Lage und Waffen */
@media (max-width: 759px) {
    .tac-tabs {
        /* unter der stehenden Alarmleiste, nicht hinter ihr (Höhe: tactical-station.js) */
        display: flex; position: sticky; top: var(--alert-bar-h, 0px); z-index: 5;
        box-shadow: 0 6px 12px rgba(0, 0, 0, 0.35);
    }
    .tac-tabs .sos-seg { flex: 1; }
    .tac-board[data-tab="scope"] .tac-tabs [data-tac-tab="scope"],
    .tac-board[data-tab="contacts"] .tac-tabs [data-tac-tab="contacts"],
    .tac-board[data-tab="weapons"] .tac-tabs [data-tac-tab="weapons"] {
        background: var(--station-accent, var(--accent-cyan)); color: #06131c;
    }
    .tac-board[data-tab="scope"] .tac-area-contacts,
    .tac-board[data-tab="scope"] .tac-area-weapons,
    .tac-board[data-tab="contacts"] .tac-area-scope,
    .tac-board[data-tab="contacts"] .tac-area-target,
    .tac-board[data-tab="contacts"] .tac-area-weapons,
    .tac-board[data-tab="weapons"] .tac-area-scope,
    .tac-board[data-tab="weapons"] .tac-area-contacts { display: none; }
    .tac-board[data-tab="scope"] { grid-template-areas: "tabs" "scope" "target"; }
    .tac-board[data-tab="contacts"] { grid-template-areas: "tabs" "contacts"; }
    .tac-board[data-tab="weapons"] { grid-template-areas: "tabs" "target" "weapons"; }
}

/* Tablet */
@media (min-width: 760px) {
    .tac-tabs { display: none; }
    .tac-board {
        grid-template-columns: minmax(0, 1fr) minmax(340px, 1fr);
        grid-template-rows: auto auto 1fr;
        grid-template-areas: "scope contacts" "target contacts" "weapons contacts";
    }
    .tac-area-contacts { position: sticky; top: var(--space-md, 16px); }
    .tac-rows { max-height: calc(100vh - 230px); overflow-y: auto; overscroll-behavior: contain; }
}

/* Desktop */
@media (min-width: 1280px) {
    .tac-board {
        grid-template-columns: minmax(0, 1.05fr) minmax(380px, 1fr) minmax(340px, 0.85fr);
        grid-template-rows: auto 1fr;
        grid-template-areas: "scope contacts target" "scope contacts weapons";
    }
    .tac-area-scope { position: sticky; top: var(--space-md, 16px); }
}

/* Breite Bildschirme ab 1800 px (Referenz 2560 × 1070, 1920 × 1080): Seite breiter als die
 * Standardhülle, Spalten füllen bis unten, die Kontaktliste rollt in sich. Die Bewaffnung bekommt
 * die breiteste Spalte und legt Türme | Feuerleitung nebeneinander (Container-Query an
 * .tac-area-weapons). Darunter bleibt der Desktop wie oben (Radar klebt beim Rollen). */
@media (min-width: 1800px) {
    .station-main:has(.tac-board) { max-width: min(2800px, 100%); display: flex; flex-direction: column; }
    .tac-board {
        flex: 1 0 auto; align-items: stretch;
        grid-template-columns: minmax(0, 1fr) minmax(400px, 0.9fr) minmax(0, 1.7fr);
    }
    .tac-area > :last-child, .tac-area-scope > .tac-scope-panel { flex: 1 0 auto; }
    .tac-board .station-panel > .panel-section:last-child { flex: 1 0 auto; }
    .tac-area-scope { position: static; }
    .tac-scope { max-width: 600px; }
    /* Liste endet über dem unteren Rand (Kopf, Filter, Suche und Spaltenköpfe stehen darüber) */
    .tac-rows { max-height: calc(100vh - 400px); }
    .tac-area-weapons { container: tac-weapons / inline-size; }
}
@container tac-weapons (min-width: 720px) {
    .tac-armament-panel {
        display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
        grid-template-rows: auto auto auto 1fr; align-content: stretch; column-gap: var(--space-md, 16px);
    }
    .tac-armament-panel > .panel-header { grid-column: 1 / -1; }
    /* Links „Alle aufs Primärziel“ über den Türmen, rechts Feuerleitung über dem Nahbereich */
    .tac-armament-panel > .tac-arm-primary { grid-column: 1; grid-row: 2; }
    .tac-armament-panel > .tac-arm-group:nth-of-type(1) { grid-column: 1; grid-row: 3 / span 2; }
    .tac-armament-panel > .tac-arm-group:nth-of-type(2) { grid-column: 2; grid-row: 2 / span 2; }
    .tac-armament-panel > .tac-arm-group:nth-of-type(3) { grid-column: 2; grid-row: 4; }
    .tac-armament-panel > .tac-arm-group + .tac-arm-group { border-top: 0; }
    .tac-armament-panel .tac-turret-form:not(.tac-fc-form) { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
    /* Grund der Sperre zweizeilig statt die Zielwahl zu quetschen */
    .tac-armament-panel .tac-fc-row .tac-arm-verdict { max-width: 11em; white-space: normal; text-align: right; line-height: 1.25; }
}

/* Radar: Namen nur für Feinde, Unbekannte und das Primärziel, außer „Alle Namen“ */
.tac-board[data-labels="key"] .tac-contact.is-minor text { display: none; }
.tac-label-toggle {
    padding: 2px 10px; border: 1px solid var(--border-strong, #3a4a60); border-radius: var(--radius-sm, 4px);
    background: transparent; color: var(--text-secondary, #a7b3c7); font: inherit; cursor: pointer;
}
.tac-label-toggle[aria-pressed="true"] { border-color: var(--accent-cyan, #22d3ee); color: var(--accent-cyan, #22d3ee); }

/* ── Kontakte: Filter und Zeilen ─────────────────────────────── */
.tac-filter { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; padding: 0 var(--space-md, 16px) var(--space-sm, 8px); }
.tac-filter-iff { display: flex; width: 100%; }
.tac-filter-iff .sos-seg { flex: 1; padding: 0 4px; font-size: var(--text-xs, 0.75rem); }
.tac-board[data-iff-filter="all"] [data-tac-filter="all"],
.tac-board[data-iff-filter="hostile"] [data-tac-filter="hostile"],
.tac-board[data-iff-filter="unknown"] [data-tac-filter="unknown"],
.tac-board[data-iff-filter="neutral"] [data-tac-filter="neutral"],
.tac-board[data-iff-filter="friendly"] [data-tac-filter="friendly"] {
    background: var(--station-accent, var(--accent-cyan)); color: #06131c;
}
.tac-filter-search {
    flex: 1 1 100%; min-width: 0; min-height: var(--control-h-md, 40px); padding: 0 10px;
    background: var(--bg-raised, #1b2533); color: inherit;
    border: 1px solid var(--border-strong, #3a4a60); border-radius: var(--radius-sm, 4px);
}
.tac-board[data-iff-filter="hostile"] .tac-row:not(.iff-hostile),
.tac-board[data-iff-filter="unknown"] .tac-row:not(.iff-unknown),
.tac-board[data-iff-filter="neutral"] .tac-row:not(.iff-neutral),
.tac-board[data-iff-filter="friendly"] .tac-row:not(.iff-friendly) { display: none; }

.tac-contacts-body { padding-top: 0; }
.tac-contact-head, .tac-row-line {
    display: grid; align-items: center; gap: 8px;
    grid-template-columns: 14px minmax(0, 1fr) 3.4em 4.6em 3em 3.6em;
}
.tac-contact-head {
    padding: 0 10px 4px; font-size: var(--text-xs, 0.75rem); letter-spacing: 0.08em;
    text-transform: uppercase; color: var(--text-muted, #8c9bb3);
}
.tac-contact-head span:nth-child(n+3) { text-align: right; }
.tac-rows { display: flex; flex-direction: column; gap: 2px; }

.tac-row { border-left: 3px solid var(--iff-neutral); border-radius: var(--radius-sm, 4px); background: var(--well); }
.tac-row.iff-friendly { border-left-color: var(--iff-friendly); }
.tac-row.iff-hostile  { border-left-color: var(--iff-hostile); }
.tac-row.iff-unknown  { border-left-color: var(--iff-unknown); }
.tac-row.is-primary { box-shadow: inset 0 0 0 1px rgba(248, 113, 113, 0.55); }
.tac-row.is-jammed { opacity: 0.6; }
.tac-row[open] { background: var(--bg-secondary, #141c28); }

.tac-row-line {
    list-style: none; cursor: pointer; min-height: 36px; padding: 4px 10px;
    font-size: var(--text-sm, 0.8125rem);
}
.tac-row-line::-webkit-details-marker { display: none; }
.tac-row-line:hover { background: rgba(34, 211, 238, 0.06); }
.tac-row-name { display: flex; align-items: center; gap: 6px; min-width: 0; overflow: hidden; }
.tac-row-title {
    font-weight: 700; color: var(--text-primary, #e0e7ff);
    overflow: hidden; text-overflow: ellipsis; white-space: nowrap; min-width: 0; flex: 0 1 auto;
}
/* Kennung: vier Ziffern + Buchstabe, unabhängig vom Namen; ansagbar */
.tac-registry {
    flex: none; font-family: var(--font-mono, monospace); font-size: 0.72rem; white-space: nowrap;
    color: var(--text-secondary, #a7b3c7); letter-spacing: 0.02em;
}
.tac-row-name .tac-primary-badge, .tac-row-name .tac-jam-badge, .tac-row-name .tac-turret-badge { padding: 0 5px; font-size: 0.68rem; flex: none; }
.tac-num {
    text-align: right; font-family: var(--font-mono, monospace); font-variant-numeric: tabular-nums;
    white-space: nowrap; color: var(--text-secondary, #a7b3c7);
}
.tac-health.is-none { color: var(--text-dim, #5b6980); }
.tac-health.is-hit { color: var(--accent-yellow, #fbbf24); }
.tac-health.is-down { color: var(--accent-red, #f87171); font-weight: 700; }

/* IFF-Symbol wie im Radar: Feind Raute, Unbekannt Dreieck, sonst Kreis */
.tac-sym { width: 10px; height: 10px; border-radius: 50%; background: var(--iff-neutral); justify-self: center; }
.tac-sym.iff-friendly { background: var(--iff-friendly); }
.tac-sym.iff-hostile  { background: var(--iff-hostile); border-radius: 1px; transform: rotate(45deg); width: 9px; height: 9px; }
.tac-sym.iff-unknown  { background: var(--iff-unknown); border-radius: 0; clip-path: polygon(50% 0, 100% 100%, 0 100%); }

.tac-row-body { display: flex; flex-direction: column; gap: 10px; padding: 4px 10px 12px 34px; }
.tac-row-extra { margin: 0; font-size: var(--text-sm, 0.8125rem); color: var(--text-secondary, #a7b3c7); }
.tac-row-extra strong { font-family: var(--font-mono, monospace); color: var(--text-primary, #e0e7ff); }

@media (max-width: 759px) {
    /* Fahrt ausblenden, sonst passt die Zeile nicht */
    .tac-contact-head, .tac-row-line { grid-template-columns: 14px minmax(0, 1fr) 3.2em 4.4em 3.4em; }
    .tac-contact-head span:nth-child(5), .tac-row-line > :nth-child(5) { display: none; }
    .tac-row-line { min-height: 44px; }
    .tac-row-body { padding-left: 10px; }
}

/* ── Bewaffnung: Türme, Feuerleitung, CIWS ───────────────────── */
.tac-arm-group + .tac-arm-group { border-top: 1px solid var(--border-color, #2a3648); }
.tac-arm-title {
    margin: 0 0 8px; font-size: var(--text-xs, 0.75rem); font-weight: 700; letter-spacing: var(--tracking-label, 0.08em);
    text-transform: uppercase; color: var(--text-secondary, #a7b3c7);
}
.tac-arm-title small { margin-left: 6px; font-weight: 400; letter-spacing: 0; text-transform: none; color: var(--text-muted, #8c9bb3); }
.tac-arm-list { list-style: none; margin: 0 0 var(--space-sm, 8px); padding: 0; display: flex; flex-direction: column; gap: 4px; }
.tac-arm-row {
    --kind: var(--border-strong, #3a4a60);
    display: grid; grid-template-columns: minmax(0, 1fr) auto; grid-template-areas: "name state" "meta meta";
    gap: 2px 10px; align-items: center; padding: 6px 10px; border-radius: var(--radius-md, 6px);
    background: var(--well); border: 1px solid var(--border-color, #2a3648); border-left: 3px solid var(--kind);
}
.tac-arm-row.kind-torpedo    { --kind: var(--kind-torpedo); }
.tac-arm-row.kind-rakete     { --kind: var(--kind-rakete); }
.tac-arm-row.kind-munition   { --kind: var(--kind-munition); }
.tac-arm-row.kind-energie    { --kind: var(--kind-energie); }
.tac-arm-row.kind-nahbereich { --kind: var(--kind-nahbereich); }
.tac-arm-row.can-fire { border-color: rgba(52, 211, 153, 0.5); border-left-color: var(--kind); }
.tac-arm-row.has-target { border-color: rgba(248, 113, 113, 0.45); }
.tac-arm-name { grid-area: name; display: flex; gap: 8px; align-items: baseline; min-width: 0; }
.tac-arm-name strong { font-family: var(--font-mono, monospace); color: var(--text-primary, #e0e7ff); flex: none; }
.tac-arm-name span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--text-secondary, #a7b3c7); }
.tac-arm-row > .tac-state { grid-area: state; justify-self: end; }
.tac-arm-meta {
    grid-area: meta; display: flex; flex-wrap: wrap; gap: 2px 12px;
    font-size: var(--text-xs, 0.75rem); color: var(--text-muted, #8c9bb3);
}
.tac-arm-ammo { font-family: var(--font-mono, monospace); font-variant-numeric: tabular-nums; }
.tac-arm-verdict { margin-left: auto; }
.tac-arm-row.can-fire .tac-arm-verdict { color: var(--accent-green, #34d399); font-weight: 700; }
.tac-arm-link { grid-column: 1 / -1; justify-self: end; }

/* Türme kompakt: Kennung | Ziel + Bereich | Zustand, darunter Bedienung · Munition */
.tac-turret-row {
    grid-template-columns: 2.6em minmax(0, 1fr) auto;
    grid-template-areas: "name form state" ". meta meta";
    gap: 4px 8px; padding: 4px 8px;
}
.tac-turret-form { grid-area: form; display: grid; grid-template-columns: minmax(0, 1.6fr) minmax(0, 1fr); gap: 6px; margin: 0; }
/* Feuerleitung wie die Türme: Kennung | Ziel | Feuerlösung, darunter Waffe · Munition */
.tac-fc-row {
    grid-template-columns: 5.5em minmax(0, 1fr) auto;
    grid-template-areas: "name form verdict" ". meta meta";
    gap: 4px 8px; padding: 4px 8px;
}
.tac-fc-form { grid-template-columns: minmax(0, 1fr); }
.tac-arm-target { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.tac-arm-target.is-bad { color: var(--accent-red, #f87171); }
.tac-fc-row .tac-arm-verdict { grid-area: verdict; margin: 0; max-width: 16em; overflow: hidden; text-overflow: ellipsis; font-size: var(--text-xs, 0.75rem); color: var(--text-muted, #8c9bb3); white-space: nowrap; }
.tac-arm-release.is-free { color: var(--accent-green, #34d399); }
.tac-arm-head-link { margin-left: auto; font-size: var(--text-xs, 0.75rem); }
/* Alle aufs Primärziel */
.tac-arm-primary { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 12px; }
.tac-arm-primary .tac-msg, .tac-arm-primary .tac-hangar-error { flex-basis: 100%; margin: 0; }
.tac-arm-hint { font-size: var(--text-xs, 0.75rem); color: var(--text-muted, #8c9bb3); }
@media (max-width: 759px) {
    .tac-turret-row { grid-template-columns: minmax(0, 1fr) auto; grid-template-areas: "name state" "form form" "meta meta"; }
    /* Grund der Sperre ganz lesen statt „Keine Freigabe des Kapitä…“ */
    .tac-fc-row { grid-template-columns: minmax(0, 1fr) auto; grid-template-areas: "name verdict" "form form" "meta meta"; }
    .tac-fc-row .tac-arm-verdict { max-width: none; white-space: normal; text-align: right; }
    .tac-arm-primary .tac-arm-assign-all { flex: 1 1 100%; min-height: 44px; }
}
.tac-turret-form select {
    min-width: 0; padding: 4px 6px; background: var(--bg-raised, #1b2533); color: inherit;
    border: 1px solid var(--border-strong, #3a4a60); border-radius: var(--radius-sm, 4px);
}
.tac-turret-form select:disabled { opacity: 0.5; }
@media (pointer: coarse) { .tac-turret-form select { min-height: 40px; } }


/* ══ CIC Feuerleitung v2 (/cic/weapons) ═══════════════════════════════════
 * Links Primärziel + Salve und alle Waffen ohne Scrollen, rechts Massentreiber, Türme & CIWS,
 * Gefechtsmeldungen. Drei Ansichten derselben Karten (data-view am .cic-board, tactical-station.js):
 *   zeilen  eine Zeile je Waffe   ·   kacheln  Gruppen nebeneinander   ·   rumpf  Backbord | Bug | Steuerbord
 * Smartphone (unter 760 px): Reiter Waffen / Lage, kompakte Karten, Ansicht fest.
 */
.station-main:has(.cic-board) { max-width: 1800px; }

.cic-board {
    display: grid; gap: 12px; align-items: start;
    grid-template-columns: minmax(0, 1fr) clamp(260px, 24vw, 340px);
    grid-template-areas: "main aside";
}
.cic-tabs { display: none; grid-area: tabs; }
.cic-main { grid-area: main; min-width: 0; }
.cic-aside { grid-area: aside; min-width: 0; display: flex; flex-direction: column; gap: 12px; position: sticky; top: var(--space-md, 16px); }
.cic-matrix { display: flex; flex-direction: column; gap: 12px; }
.cic-short { display: none; }

/* Primärziel, Aufschalten, Salve */
.cic-primary {
    flex-direction: row !important; flex-wrap: wrap; align-items: center; gap: 10px 16px;
    padding: 10px 16px; border-left: 3px solid var(--border-strong, #3a4a60);
}
.cic-primary.is-hostile { border-left-color: var(--iff-hostile); }
.cic-primary.is-other { border-left-color: var(--iff-unknown); }
.cic-primary-info { flex: 1 1 240px; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.cic-primary-line { display: flex; align-items: baseline; flex-wrap: wrap; gap: 4px 12px; min-width: 0; }
.cic-primary-line strong { font-size: var(--text-lg, 1.1rem); color: var(--text-primary, #e0e7ff); }
.cic-primary.is-none .cic-primary-line strong { color: var(--text-muted, #8c9bb3); }
.cic-primary-warn { font-size: var(--text-xs, 0.75rem); color: var(--accent-yellow, #fbbf24); }
.cic-primary-weak { font-size: var(--text-xs, 0.75rem); color: var(--accent-cyan, #06b6d4); }
.tac-scan-weak { color: var(--accent-cyan, #06b6d4); }
.cic-primary-actions { flex: 1 1 auto; display: flex; justify-content: flex-end; flex-wrap: wrap; gap: 8px; }
.cic-salvo {
    flex: 1 0 auto; max-width: 260px; min-height: 44px; padding: 0 20px; cursor: pointer;
    border-radius: var(--radius-md, 6px); border: 1px solid var(--accent-red, #f87171);
    background: var(--accent-red, #f87171); color: #1a0606;
    font-family: var(--font-mono, monospace); font-size: var(--text-base, 0.875rem); font-weight: 800;
    letter-spacing: 0.14em; text-transform: uppercase;
}
.cic-salvo:hover:not(:disabled) { filter: brightness(1.18); }
.cic-salvo:disabled {
    background: transparent; color: var(--text-muted, #8c9bb3); border: 1px dashed var(--border-strong, #3a4a60);
    cursor: not-allowed;
}
.cic-msgs { display: flex; flex-direction: column; gap: 6px; }
.cic-msgs:not(:has(*)) { display: none; }

/* Waffen-Tafel */
.cic-weapons-head { flex-wrap: wrap; gap: 8px 16px; }
.cic-weapons-title { display: flex; align-items: baseline; flex-wrap: wrap; gap: 4px 12px; min-width: 0; }
.cic-views .sos-seg { padding: 0 12px; font-size: var(--text-xs, 0.75rem); }
.cic-board[data-view="zeilen"] [data-cic-view="zeilen"],
.cic-board[data-view="kacheln"] [data-cic-view="kacheln"],
.cic-board[data-view="rumpf"] [data-cic-view="rumpf"] { background: var(--station-accent, var(--accent-cyan)); color: #06131c; }

.cic-weapons-body { display: flex; flex-direction: column; gap: 10px; }
.cic-groups { display: flex; flex-direction: column; gap: 12px; }
.cic-group { min-width: 0; display: flex; flex-direction: column; gap: 4px; }
.cic-group-head { display: flex; align-items: center; gap: 10px; min-height: 28px; }
.cic-group-title { white-space: nowrap; font-size: var(--text-xs, 0.75rem); font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; }
.cic-group-sub { font-size: var(--text-xs, 0.75rem); color: var(--text-muted, #8c9bb3); }
.cic-group-rule { flex: 1; border-top: 1px solid var(--border-color, #2a3648); }
.cic-group-fire {
    white-space: nowrap; min-height: 28px; padding: 0 12px; cursor: pointer;
    border-radius: var(--radius-sm, 4px); border: 1px solid var(--accent-red, #f87171);
    background: transparent; color: var(--accent-red, #f87171);
    font-family: var(--font-mono, monospace); font-size: var(--text-xs, 0.75rem); font-weight: 700;
    letter-spacing: 0.08em; text-transform: uppercase;
}
.cic-group-fire:hover:not(:disabled) { background: var(--tint-red, rgba(248,113,113,.16)); }
.cic-group-fire:disabled { opacity: 0.45; cursor: not-allowed; }
.cic-group-cards { display: flex; flex-direction: column; gap: 4px; }
.cic-side-label, .cic-hull, .cic-colhead { display: none; }

/* Eine Waffe */
.cic-weapon {
    --kind: var(--kind-energie);
    min-width: 0; padding: 6px 10px; font-size: var(--text-sm, 0.8125rem);
    background: var(--well); border: 1px solid var(--border-color, #2a3648);
    border-left: 3px solid var(--kind); border-radius: var(--radius-sm, 4px);
}
.cic-weapon.kind-torpedo    { --kind: var(--kind-torpedo); }
.cic-weapon.kind-nahbereich { --kind: var(--kind-nahbereich); }
.cic-weapon.kind-munition   { --kind: var(--kind-munition); }
.cic-weapon.kind-rakete     { --kind: var(--kind-rakete); }
.cic-weapon.can-fire { border-color: rgba(52, 211, 153, 0.45); border-left-color: var(--kind); }
.cic-weapon.state-offline { opacity: 0.6; }
.cic-weapon .is-bad { color: var(--accent-red, #f87171); }

.cic-w-id { display: flex; align-items: center; flex-wrap: wrap; gap: 4px 8px; min-width: 0; }
.cic-w-names { display: flex; flex-direction: column; min-width: 0; flex: 1 1 7em; }
.cic-w-names strong { font-family: var(--font-mono, monospace); letter-spacing: 0.04em; color: var(--text-primary, #e0e7ff); }
.cic-w-names span { font-size: var(--text-xs, 0.75rem); color: var(--text-muted, #8c9bb3); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cic-w-compact { display: none; }
.cic-w-target { min-width: 0; margin: 0; display: flex; align-items: center; }
.cic-w-target-name { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--text-primary, #e0e7ff); }
.cic-w-target-name.is-idle { color: var(--text-muted, #8c9bb3); }
.cic-w-target-name.is-bad { color: var(--accent-red, #f87171); }
.cic-targets-link { display: inline-flex; align-items: center; font-size: var(--text-xs, 0.75rem); }
.cic-w-solution { display: flex; flex-direction: column; gap: 4px; min-width: 0; }
.cic-w-solution .tac-range-bar { height: 6px; }
.cic-w-solution-line { display: flex; justify-content: space-between; gap: 6px; font-size: var(--text-xs, 0.75rem); font-variant-numeric: tabular-nums; white-space: nowrap; }
.cic-w-flight, .cic-w-axis { color: var(--text-muted, #8c9bb3); }
.cic-w-axis { font-size: var(--text-xs, 0.75rem); }
.cic-w-gauges { display: flex; flex-direction: column; gap: 4px; min-width: 0; }
.cic-w-gauges .tac-gauge { grid-template-columns: 3.4em minmax(0, 1fr) auto; gap: 6px; }
.cic-w-gauges .tac-gauge-track { height: 5px; }
.cic-w-gauges .tac-gauge-value { font-size: var(--text-xs, 0.75rem); min-width: 4.5ch; }
.cic-w-actions { display: flex; gap: 6px; min-width: 0; }
.cic-w-actions .tac-fire { min-height: 40px; font-size: var(--text-base, 0.875rem); }
.cic-w-actions .tac-fire:disabled { font-size: var(--text-xs, 0.75rem); }
.cic-w-actions .tac-reload { min-height: 40px; padding: 0 8px; font-size: var(--text-xs, 0.75rem); }

/* Ansicht Zeilen: Waffe · Ziel · Lösung · Hitze/Munition · Laden/Feuer */
.cic-board[data-view="zeilen"] .cic-colhead,
.cic-board[data-view="zeilen"] .cic-weapon {
    display: grid; align-items: center; gap: 10px;
    grid-template-columns: minmax(0, 1.1fr) minmax(0, 1.1fr) minmax(0, 1fr) 8em 10em;
}
.cic-board[data-view="zeilen"] .cic-weapon { min-height: 56px; }
.cic-board[data-view="zeilen"] .cic-colhead {
    padding: 0 10px; font-size: var(--text-xs, 0.75rem); letter-spacing: 0.08em; text-transform: uppercase;
    color: var(--text-muted, #8c9bb3);
}

/* Ansicht Kacheln: Gruppen nebeneinander, Waffen als Kacheln */
.cic-board[data-view="kacheln"] .cic-groups {
    display: grid; gap: 16px; align-items: stretch;
    grid-template-columns: repeat(auto-fit, minmax(min(100%, 300px), 1fr));
}
.cic-board[data-view="kacheln"] .cic-group-head {
    display: grid; grid-template-columns: minmax(0, 1fr) auto; grid-template-areas: "title fire" "sub fire";
    align-items: center; gap: 0 8px; min-height: 40px;
}
.cic-board[data-view="kacheln"] .cic-group-title { grid-area: title; }
.cic-board[data-view="kacheln"] .cic-group-sub { grid-area: sub; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cic-board[data-view="kacheln"] .cic-group-fire { grid-area: fire; }
.cic-board[data-view="kacheln"] .cic-group-rule { display: none; }
.cic-board[data-view="kacheln"] .cic-group-cards {
    flex: 1; display: grid; grid-auto-flow: column; grid-auto-columns: minmax(0, 1fr); gap: 8px;
}
.cic-board[data-view="kacheln"] .cic-weapon,
.cic-board[data-view="rumpf"] .cic-weapon {
    display: flex; flex-direction: column; gap: 8px; padding: 10px 12px;
    background: var(--bg-panel, #111827); border-radius: var(--radius-md, 6px);
}
.cic-board[data-view="kacheln"] .cic-w-actions,
.cic-board[data-view="rumpf"] .cic-w-actions { margin-top: auto; }
.cic-board[data-view="kacheln"] .tac-reload,
.cic-board[data-view="rumpf"] .tac-reload { order: 1; min-height: 46px; }
.cic-board[data-view="kacheln"] .tac-fire,
.cic-board[data-view="rumpf"] .tac-fire { min-height: 46px; }

/* Ansicht Rumpf: Seite aus der Lafette (WeaponCard.side) */
.cic-board[data-view="rumpf"] .cic-groups {
    display: grid; gap: 10px 16px; align-items: start; grid-auto-flow: row dense;
    grid-template-columns: minmax(0, 1fr) minmax(200px, 0.9fr) minmax(0, 1fr);
}
.cic-board[data-view="rumpf"] .cic-group,
.cic-board[data-view="rumpf"] .cic-group-cards { display: contents; }
.cic-board[data-view="rumpf"] .cic-group-head { display: none; }
.cic-board[data-view="rumpf"] .cic-side-label {
    display: block; grid-row: 1; font-size: var(--text-xs, 0.75rem); font-weight: 700;
    letter-spacing: 0.08em; text-transform: uppercase; color: var(--text-muted, #8c9bb3);
}
.cic-side-label.side-port { grid-column: 1; }
.cic-side-label.side-axis { grid-column: 2; text-align: center; }
.cic-side-label.side-starboard { grid-column: 3; text-align: right; }
.cic-board[data-view="rumpf"] .cic-weapon.side-port { grid-column: 1; }
.cic-board[data-view="rumpf"] .cic-weapon.side-axis { grid-column: 2; }
.cic-board[data-view="rumpf"] .cic-weapon.side-starboard { grid-column: 3; }
.cic-board[data-view="rumpf"] .cic-hull { display: block; grid-column: 2; width: 100%; max-height: 320px; }

.cic-hull-outline { fill: var(--well); stroke: var(--border-color, #2a3648); stroke-width: 1.5; }
.cic-hull-axis { stroke: var(--border-color, #2a3648); stroke-dasharray: 3 3; }
.cic-hull-mark circle { fill: var(--text-muted, #8c9bb3); }
.cic-hull-mark.is-ready circle { fill: var(--accent-green, #34d399); }
.cic-hull-mark.state-firing circle { fill: #fb923c; }
.cic-hull-mark.state-cooldown circle { fill: var(--accent-blue, #60a5fa); }
.cic-hull-mark.state-offline circle { fill: var(--text-dim, #5b6980); }
.cic-hull-mark.is-other circle { fill: none; stroke: var(--text-muted, #8c9bb3); }
.cic-hull-mark text { font-size: 7px; fill: var(--text-muted, #8c9bb3); text-anchor: middle; font-family: var(--font-mono, monospace); }
.cic-hull-mark text.is-axis { text-anchor: start; }
.cic-hull-note { font-size: 7px; fill: var(--text-dim, #5b6980); text-anchor: middle; font-family: var(--font-mono, monospace); }

/* Rechte Spalte: Türme & CIWS, Gefechtsmeldungen */
.cic-mini-list { list-style: none; margin: 0 0 8px; padding: 0; display: flex; flex-direction: column; gap: 3px; }
.cic-mini-row {
    display: grid; grid-template-columns: 3.4em minmax(0, 1fr) auto; align-items: center; gap: 8px;
    padding: 4px 8px; background: var(--well); border-radius: var(--radius-sm, 4px); font-size: var(--text-xs, 0.75rem);
}
.cic-mini-row strong { font-family: var(--font-mono, monospace); font-size: var(--text-sm, 0.8125rem); color: var(--text-primary, #e0e7ff); }
.cic-mini-row.is-ciws { border-left: 2px solid var(--accent-green, #34d399); margin-top: 3px; }
.cic-mini-text { display: flex; flex-direction: column; min-width: 0; }
.cic-mini-text > span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cic-mini-sub { color: var(--text-muted, #8c9bb3); }
.cic-mini-row .tac-state { padding: 1px 6px; }
/* Feuerfreigabe je Turm */
.cic-mini-row:has(.cic-release) { grid-template-columns: 3.4em minmax(0, 1fr) auto auto; }
.cic-release {
    min-width: 6.5em; min-height: 32px; padding: 0 8px; cursor: pointer; border-radius: var(--radius-sm, 4px);
    font-family: var(--font-mono, monospace); font-size: var(--text-xs, 0.75rem); font-weight: 700; text-transform: uppercase;
    background: transparent; color: var(--text-secondary, #a7b3c7); border: 1px solid var(--border-strong, #3a4a60);
}
.cic-release.is-free { background: var(--accent-red, #f87171); border-color: var(--accent-red, #f87171); color: #1a0606; }
.cic-release-all { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 8px; }
.cic-release-all .btn-action { flex: 1 1 auto; min-height: 36px; }
@media (pointer: coarse) { .cic-release { min-height: 40px; } }
.cic-turrets-panel .panel-subtitle.tac-link { font-size: var(--text-xs, 0.75rem); }
/* Massentreiber in der schmalen Spalte: Kopf darf umbrechen */
.cic-aside .sos-panel__header { flex-wrap: wrap; gap: 6px 12px; }
.cic-aside .sos-badge { white-space: normal; max-width: 100%; }
.cic-feed-panel .tac-feed { max-height: 45vh; overflow-y: auto; overscroll-behavior: contain; }
.cic-feed-panel:has(.tac-feed-line) .cic-feed-empty { display: none; }
.cic-board .tac-feed-line { padding: 6px 10px; font-size: var(--text-xs, 0.75rem); }
.tac-feed-line time { margin-right: 8px; color: var(--text-muted, #8c9bb3); font-variant-numeric: tabular-nums; }

/* Schmaler Desktop / Tablet quer */
@media (min-width: 760px) and (max-width: 1199px) {
    .cic-board { grid-template-columns: minmax(0, 1fr) 270px; }
    .cic-board[data-view="zeilen"] .cic-colhead,
    .cic-board[data-view="zeilen"] .cic-weapon {
        grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) minmax(0, 0.9fr) 7em 8.5em; gap: 8px;
    }
}

/* Smartphone: Reiter Waffen / Lage, kompakte Karten */
@media (max-width: 759px) {
    .cic-board { grid-template-columns: minmax(0, 1fr); grid-template-areas: "tabs" "main" "aside"; gap: 8px; }
    .cic-tabs { display: flex; position: sticky; top: var(--alert-bar-h, 0px); z-index: 5; box-shadow: 0 6px 12px rgba(0, 0, 0, 0.35); }
    .cic-tabs .sos-seg { flex: 1; min-height: 44px; }
    .cic-board[data-tab="waffen"] [data-cic-tab="waffen"],
    .cic-board[data-tab="lage"] [data-cic-tab="lage"] { background: var(--station-accent, var(--accent-cyan)); color: #06131c; }
    .cic-board[data-tab="waffen"] .cic-aside,
    .cic-board[data-tab="lage"] .cic-main { display: none; }
    .cic-aside { position: static; }
    [data-cic-count]:not(:empty)::before { content: " · "; }

    .cic-long, .cic-primary-info .tac-mini-label, .cic-primary .tac-iff-badge { display: none; }
    .cic-short { display: inline; }
    .cic-primary { flex-wrap: nowrap; gap: 8px; padding: 6px 10px; }
    .cic-primary-info { flex: 1 1 auto; }
    .cic-primary-line { flex-direction: column; gap: 0; }
    .cic-primary-line strong { font-size: var(--text-sm, 0.8125rem); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 100%; }
    .cic-primary-line .tac-primary-meta { font-size: var(--text-xs, 0.75rem); }
    .cic-primary-actions { flex: none; flex-wrap: nowrap; }
    .cic-primary-actions > * { min-height: 36px; padding: 0 10px; font-size: var(--text-xs, 0.75rem); }
    .cic-salvo { flex: none; letter-spacing: 0.1em; }

    .cic-views, .cic-board[data-view] .cic-colhead,
    .cic-board[data-view] .cic-side-label, .cic-board[data-view] .cic-hull { display: none; }
    .cic-weapons-body { padding: 8px; }
    .cic-board[data-view] .cic-groups { display: flex; flex-direction: column; gap: 8px; }
    .cic-board[data-view] .cic-group,
    .cic-board[data-view] .cic-group-cards { display: flex; flex-direction: column; gap: 4px; }
    .cic-board[data-view] .cic-group-head { display: flex; flex-wrap: nowrap; }
    .cic-board[data-view] .cic-group-rule { display: block; }
    .cic-board[data-view] .cic-group-sub { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; min-width: 0; }

    .cic-board[data-view] .cic-weapon {
        display: grid; gap: 4px 6px; padding: 5px 8px; min-height: 0;
        grid-template-columns: minmax(0, 1fr) auto 88px;
        grid-template-areas: "id id fire" "tgt rel fire";
        background: var(--well); border-radius: var(--radius-sm, 4px);
    }
    .cic-w-id { grid-area: id; flex-wrap: nowrap; overflow: hidden; }
    .cic-w-names { flex: none; }
    .cic-w-names span { display: none; }
    .cic-w-id .tac-state { padding: 0 5px; }
    .cic-w-compact {
        display: flex; gap: 6px; min-width: 0; overflow: hidden; white-space: nowrap;
        font-size: var(--text-xs, 0.75rem); font-variant-numeric: tabular-nums;
    }
    .cic-w-solution, .cic-w-gauges { display: none; }
    .cic-w-target { grid-area: tgt; }
    .cic-board[data-view] .cic-w-actions { display: contents; }
    .cic-board[data-view] .tac-reload { grid-area: rel; order: 0; min-height: 36px; }
    .cic-board[data-view] .tac-fire { grid-area: fire; min-height: 60px; }
}


/* ══ Geschützstände (/weapons/turrets): eine Karte je Turm ════════════════ */
.station-main:has(.turret-board) { max-width: 1800px; }
.turret-board { display: flex; flex-direction: column; gap: 12px; }
.turret-intro { margin: 0; font-size: var(--text-xs, 0.75rem); color: var(--text-muted, #8c9bb3); }
.turret-intro a { color: var(--accent-cyan, #22d3ee); }
.turret-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 280px), 1fr)); gap: 12px; }
.turret-card {
    display: flex; flex-direction: column; background: var(--bg-panel, #111827);
    border: 1px solid var(--border-color, #2a3648); border-radius: var(--radius-md, 6px);
    gap: 10px !important; padding: 12px; border-left: 3px solid var(--border-color, #2a3648); }
.turret-card.has-target { border-left-color: var(--accent-red, #f87171); }
.turret-head { display: flex; align-items: center; gap: 8px; }
.turret-head strong { font-family: var(--font-mono, monospace); font-size: var(--text-lg, 1.1rem); color: var(--text-primary, #e0e7ff); }
.turret-weapon { flex: 1; min-width: 0; font-size: var(--text-xs, 0.75rem); color: var(--text-muted, #8c9bb3); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.turret-mode { display: flex; }
.turret-mode .sos-seg { flex: 1; min-height: 36px; display: inline-flex; align-items: center; justify-content: center; text-align: center; text-decoration: none; font-size: var(--text-xs, 0.75rem); }
.turret-mode .sos-seg.is-active { background: var(--station-accent, var(--accent-cyan)); color: #0a0f16; opacity: 1; }
.turret-mode .sos-seg:disabled { cursor: default; }
.turret-body { display: grid; grid-template-columns: 96px minmax(0, 1fr); gap: 12px; align-items: center; }
.turret-dial { width: 96px; height: 96px; }
.turret-dial-bg { fill: var(--scope-bg); stroke: rgba(34, 211, 238, 0.35); }
.turret-dial-ring { fill: none; stroke: var(--scope-line); }
.turret-dial-arc { stroke: rgba(34, 211, 238, 0.35); stroke-dasharray: 3 3; }
.turret-dial-label { font-size: 8px; fill: var(--text-muted, #8c9bb3); text-anchor: middle; font-family: var(--font-mono, monospace); }
.turret-dial-barrel { stroke: var(--accent-green, #34d399); stroke-width: 3; stroke-linecap: round; }
.turret-dial-barrel.state-jammed, .turret-dial-barrel.state-empty { stroke: var(--accent-red, #f87171); }
.turret-dial-barrel.state-offline, .turret-dial-barrel.state-charging { stroke: var(--text-muted, #8c9bb3); }
.turret-dial-hub { fill: var(--accent-cyan, #22d3ee); }
.turret-facts { margin: 0; display: flex; flex-direction: column; gap: 6px; font-size: var(--text-xs, 0.75rem); min-width: 0; }
.turret-facts div { display: flex; justify-content: space-between; gap: 8px; }
.turret-facts dt { color: var(--text-muted, #8c9bb3); letter-spacing: 0.08em; text-transform: uppercase; }
.turret-facts dd { margin: 0; text-align: right; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.turret-target { font-weight: 700; }
.turret-ammo { --kind: var(--accent-yellow, #fbbf24); font-size: var(--text-xs, 0.75rem); }
.turret-ammo .tac-gauge-track i { background: var(--accent-yellow, #fbbf24); }
.turret-ammo .tac-gauge-value { font-size: var(--text-xs, 0.75rem); }
.turret-ammo.is-empty .tac-gauge-value { color: var(--accent-red, #f87171); font-weight: 700; }
.turret-actions { display: flex; flex-wrap: wrap; gap: 8px; }
.turret-actions > * { flex: 1 1 auto; justify-content: center; }
