/* GM Console (CC_037) */
.gm-console-layout { display: flex; flex-direction: column; gap: 1rem; padding: 1rem; }
.gm-tabs { display: flex; flex-wrap: wrap; gap: 0.5rem; border-bottom: 2px solid var(--accent-cyan, #00e5ff); padding-bottom: 0.5rem; }
.gm-tab { background: transparent; border: 1px solid var(--accent-cyan, #00e5ff); color: var(--accent-cyan, #00e5ff); padding: 0.4rem 1rem; cursor: pointer; border-radius: 4px 4px 0 0; transition: background 0.2s; }
.gm-tab:hover, .gm-tab.active { background: var(--accent-cyan, #00e5ff); color: #000; }
.gm-content { padding: 1rem; border: 1px solid var(--accent-cyan, #00e5ff); border-top: none; min-height: 400px; }
.gm-panel { display: flex; flex-direction: column; gap: 1rem; }
.gm-panel .panel-title { color: var(--accent-cyan, #00e5ff); font-size: 1.2rem; margin: 0; }
.session-info { display: grid; grid-template-columns: 1fr 1fr; gap: 0.5rem; }
.info-row { display: flex; flex-direction: column; }
.info-row .label { font-size: 0.75rem; opacity: 0.7; }
.info-row .value { font-size: 1rem; font-weight: bold; }
.session-controls { display: flex; flex-wrap: wrap; gap: 0.5rem; }
.session-state { font-size: 1.5rem; font-weight: bold; }
.alert-buttons { display: flex; gap: 1rem; }
.btn-alert { padding: 0.75rem 1.5rem; border: 2px solid; cursor: pointer; font-weight: bold; border-radius: 4px; opacity: 0.7; transition: opacity 0.2s; }
.btn-alert.active { opacity: 1; }
.btn-alert-green { border-color: #00c853; color: #00c853; background: transparent; }
.btn-alert-green.active { background: #00c853; color: #000; }
.btn-alert-yellow { border-color: #ffd600; color: #ffd600; background: transparent; }
.btn-alert-yellow.active { background: #ffd600; color: #000; }
.btn-alert-red { border-color: #d50000; color: #d50000; background: transparent; }
.btn-alert-red.active { background: #d50000; color: #fff; }
.event-trigger-form, .npc-spawn-form, .broadcast-form { display: flex; flex-wrap: wrap; gap: 0.5rem; align-items: center; }
.form-textarea { width: 100%; background: rgba(0,0,0,0.5); border: 1px solid var(--accent-cyan, #00e5ff); color: inherit; padding: 0.5rem; resize: vertical; }
.npc-table { width: 100%; border-collapse: collapse; }
.npc-table th, .npc-table td { border: 1px solid rgba(255,255,255,0.2); padding: 0.4rem 0.6rem; text-align: left; }
.npc-table th { background: rgba(0,229,255,0.1); }
.broadcast-confirm { background: rgba(0,200,83,0.2); border: 1px solid #00c853; padding: 0.75rem; border-radius: 4px; }
.inline-form { display: inline-flex; gap: 0.5rem; align-items: center; }
.form-input.coord { width: 70px; }
.active-events { display: flex; flex-direction: column; gap: 0.5rem; }
.event-card { display: flex; gap: 1rem; padding: 0.5rem; background: rgba(255,255,255,0.05); border-radius: 4px; }
/* CC_049: Overlay mode selector */
.overlay-current { display: flex; align-items: center; gap: 1rem; margin-bottom: 1rem; }
.overlay-mode-label-sm { color: #888; font-size: 0.85rem; }
.overlay-mode-value { color: #00e5ff; font-size: 1.1rem; letter-spacing: 0.1em; }
.overlay-mode-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 0.5rem; margin-bottom: 1rem; }
.overlay-mode-btn { padding: 0.6rem 0.4rem; border: 1px solid rgba(0,229,255,0.3); background: transparent; color: #aaa; cursor: pointer; border-radius: 4px; font-size: 0.82rem; text-transform: uppercase; letter-spacing: 0.08em; transition: all 0.15s; }
.overlay-mode-btn:hover { border-color: rgba(0,229,255,0.7); color: #eee; background: rgba(0,229,255,0.08); }
.overlay-mode-btn.active { border-color: #00e5ff; color: #00e5ff; background: rgba(0,229,255,0.12); font-weight: bold; }
.overlay-link-row { margin-top: 0.75rem; }

/* CC_037 P3: Event-Scheduling und Aktivitaetsprotokoll */
.event-schedule-form { border-top: 1px dashed rgba(255,255,255,0.15); padding-top: 0.5rem; margin-top: 0.5rem; }
.form-input-sm { width: 60px; background: rgba(0,0,0,0.5); border: 1px solid rgba(255,255,255,0.3); color: inherit; font-size: 0.8rem; padding: 0.2rem; }
.form-label-sm { font-size: 0.8rem; color: rgba(255,255,255,0.6); }
.btn-warning { background: rgba(255,214,0,0.15); border: 1px solid #ffd600; color: #ffd600; }
.btn-warning:hover { background: rgba(255,214,0,0.3); }
.scheduled-info { background: rgba(0,229,255,0.1); border: 1px solid var(--accent-cyan,#00e5ff); border-radius: 4px; padding: 0.4rem 0.6rem; font-size: 0.85rem; color: var(--accent-cyan,#00e5ff); margin: 0.4rem 0; }
.gm-activity-list { max-height: 350px; overflow-y: auto; display: flex; flex-direction: column; gap: 0.2rem; }
.gm-activity-entry { display: grid; grid-template-columns: 70px 140px 1fr; gap: 0.4rem; align-items: start; font-size: 0.8rem; padding: 0.2rem 0.3rem; border-bottom: 1px solid rgba(255,255,255,0.05); }
.gm-activity-time { color: rgba(255,255,255,0.5); font-family: monospace; }
.gm-activity-action { font-weight: bold; font-size: 0.75rem; padding: 0.1rem 0.3rem; border-radius: 3px; background: rgba(255,255,255,0.08); }
.gm-activity-details { color: rgba(255,255,255,0.8); word-break: break-word; }
.action-alert { color: #ff5252; }
.action-event, .action-event-scheduled, .action-event-scheduled-fired { color: #ffd600; }
.action-npc-spawn, .action-npc-despawn { color: #69f0ae; }
.action-broadcast { color: var(--accent-cyan,#00e5ff); }
.action-overlay { color: #ce93d8; }


.player-link-badge {
    display: inline-block; padding: 2px 8px; border-radius: 3px;
    background: #1a3d2e; color: #34d399; font-size: 0.82em; font-weight: bold;
}

/* ── T-28: GM Comms Panel (offene Hails + Scan-Signal) ─────────────────────── */
.gm-comms .panel-title { margin-top: 1rem; }
.gm-comms-empty, .gm-signal-status { color: #8aa; font-size: 0.88em; padding: 0.4rem 0; }
.gm-hail-list { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 0.5rem; }
.gm-hail-item { background: #11202b; border-left: 3px solid #29b6f6; border-radius: 4px; padding: 0.5rem 0.6rem; }
.gm-hail-head { display: flex; justify-content: space-between; font-size: 0.8em; }
.gm-hail-target { font-weight: bold; color: #e0f0ff; }
.gm-hail-channel { font-family: monospace; color: #7fb; }
.gm-hail-content { margin: 0.3rem 0; color: #cde; }
.gm-hail-reply { display: flex; gap: 0.4rem; flex-wrap: wrap; }
.gm-hail-reply .form-input { flex: 1 1 160px; }
.gm-signal-found { color: #34d399; font-weight: bold; }
.gm-signal-form { display: flex; gap: 0.4rem; flex-wrap: wrap; align-items: center; margin-top: 0.4rem; }

/* ── T-30: GM Customs / Smuggling Panel ────────────────────────────────────── */
.gm-customs-empty { color: #8aa; font-size: 0.88em; padding: 0.4rem 0; }
.gm-customs-list { list-style: none; padding: 0; margin: 0 0 0.6rem; display: flex; flex-direction: column; gap: 0.4rem; }
.gm-customs-item { display: flex; gap: 0.5rem; align-items: center; background: #11202b; border-left: 3px solid #888; border-radius: 4px; padding: 0.4rem 0.6rem; font-size: 0.85em; }
.gm-customs-item.concealed { border-left-color: #34d399; }
.gm-customs-name { font-weight: bold; color: #e0f0ff; }
.gm-customs-slot { font-family: monospace; color: #7fb; }
.gm-customs-state { margin-left: auto; font-size: 0.78em; color: #9ab; }
.gm-customs-result { margin-top: 0.6rem; padding: 0.5rem 0.7rem; border-radius: 4px; }
.gm-customs-result.passed { background: rgba(52,211,153,0.12); color: #34d399; }
.gm-customs-result.busted { background: rgba(213,0,0,0.12); color: #ff6b6b; }

/* ── Demo-Modus Schalter ────────────────────────────────────────────────────── */
.gm-tab--demo { border-color: #ce93d8; color: #ce93d8; }
.gm-tab--demo:hover, .gm-tab--demo.active { background: #ce93d8; color: #000; }

.gm-demo-panel { gap: 1.2rem; }
.demo-status-row { display: flex; align-items: center; gap: 1rem; }
.demo-status-label { font-size: 0.8rem; opacity: 0.7; }
.demo-badge { display: inline-block; padding: 0.2rem 0.8rem; border-radius: 3px; font-weight: bold; font-size: 0.85rem; letter-spacing: 0.1em; }
.demo-badge--active { background: rgba(52,211,153,0.18); color: #34d399; border: 1px solid #34d399; }
.demo-badge--off { background: rgba(255,255,255,0.06); color: #888; border: 1px solid #555; }
.demo-description { font-size: 0.88rem; color: rgba(255,255,255,0.7); line-height: 1.5; margin: 0; }
.demo-controls { display: flex; gap: 0.75rem; }
.demo-toggle-btn { min-width: 220px; }
.demo-crew-section { border-top: 1px dashed rgba(255,255,255,0.15); padding-top: 1rem; }
.demo-crew-title { color: #ce93d8; font-size: 0.95rem; margin: 0 0 0.6rem; }
.demo-crew-table { width: 100%; border-collapse: collapse; font-size: 0.83rem; }
.demo-crew-table th, .demo-crew-table td { border: 1px solid rgba(255,255,255,0.12); padding: 0.35rem 0.55rem; text-align: left; }
.demo-crew-table th { background: rgba(206,147,216,0.1); color: #ce93d8; }
.demo-crew-table tr:hover td { background: rgba(255,255,255,0.04); }
.demo-crew-note { font-size: 0.78rem; color: rgba(255,255,255,0.45); margin: 0.6rem 0 0; font-style: italic; }
.action-demo { color: #ce93d8; }

/* ── CC_187: Beamer-Fenster (Startrampe fuer die Cockpit-Sichten) ─────────── */
.gm-beamer-panel .beamer-description { color: rgba(255,255,255,0.75); font-size: 0.88rem; line-height: 1.5; margin: 0; max-width: 70ch; }
.beamer-options { display: flex; flex-wrap: wrap; align-items: center; gap: 0.75rem; padding: 0.5rem 0; border-bottom: 1px dashed rgba(255,255,255,0.15); }
.beamer-ship-select { width: auto; text-transform: capitalize; }
.beamer-live-label { display: inline-flex; align-items: center; gap: 0.3rem; font-size: 0.8rem; color: rgba(255,255,255,0.6); }
.beamer-group-title { color: rgba(0,229,255,0.8); font-size: 0.85rem; letter-spacing: 0.08em; text-transform: uppercase; margin: 0.5rem 0 0; }
.beamer-link-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(190px, 1fr)); gap: 0.5rem; }
.beamer-link { display: flex; flex-direction: column; gap: 0.15rem; padding: 0.6rem 0.7rem; border: 1px solid rgba(0,229,255,0.3); border-radius: 4px; text-decoration: none; color: #aaa; transition: all 0.15s; }
.beamer-link:hover { border-color: #00e5ff; color: #eee; background: rgba(0,229,255,0.1); }
.beamer-link-label { color: var(--accent-cyan, #00e5ff); font-weight: bold; font-size: 0.9rem; }
.beamer-link-hint { font-size: 0.75rem; opacity: 0.7; }
.beamer-actions, .beamer-angle-row { display: flex; flex-wrap: wrap; align-items: center; gap: 0.5rem; }
.beamer-note { font-size: 0.75rem; color: rgba(255,255,255,0.5); }

/* GM-Flugwerte: Manoevrierkennwerte von Spielerschiff und NPCs */
.flight-section { display: flex; flex-direction: column; gap: 0.5rem; }
.flight-subtitle { margin: 0; display: flex; align-items: center; gap: 0.75rem; }
.flight-badge { font-size: 0.75rem; padding: 0.1rem 0.5rem; border-radius: 3px; border: 1px solid rgba(255,255,255,0.3); color: rgba(255,255,255,0.7); }
.flight-badge--on { border-color: #ffd600; color: #ffd600; }
.flight-input { width: 90px; }
.flight-actions { display: flex; gap: 0.5rem; margin-top: 0.5rem; }
/* Vorlagen je Schiffstyp ueber dem Flugwerte-Formular */
.flight-preset { display: flex; flex-wrap: wrap; align-items: center; gap: 0.5rem 0.75rem; margin: 0.5rem 0; }
.flight-preset label { font-weight: 600; }
.flight-preset-select { width: auto; min-width: 16rem; }
.flight-preset-desc { font-size: 0.8125rem; }
.flight-preset-pending { color: var(--accent-yellow, #e0b341); }
.flight-hint { font-size: 0.8rem; margin: 0.25rem 0 0; }
.flight-loss { display: flex; flex-wrap: wrap; align-items: center; gap: 0.5rem; margin: 0.5rem 0; padding: 0.5rem 0.75rem; border-left: 3px solid var(--accent-red, #ef4444); background: rgba(239, 68, 68, 0.14); }
.flight-loss strong { color: var(--accent-red, #ef4444); text-transform: uppercase; }

/* Kiosk-Modus: Panels sperren, Geräte beobachten, Startbefehle */
.gm-kiosk-badge { display: inline-block; min-width: 1.2em; margin-left: 0.3rem; padding: 0 0.35em; border-radius: 999px; background: #ff5252; color: #fff; font-size: 0.72rem; font-weight: bold; line-height: 1.45; text-align: center; }
.gm-kiosk-panel .kiosk-description { color: rgba(255,255,255,0.75); font-size: 0.88rem; line-height: 1.5; margin: 0; max-width: 75ch; }
.kiosk-group-title { color: rgba(0,229,255,0.8); font-size: 0.85rem; letter-spacing: 0.08em; text-transform: uppercase; margin: 0.5rem 0 0; }
.kiosk-note { font-size: 0.78rem; color: rgba(255,255,255,0.5); margin: 0; line-height: 1.45; max-width: 80ch; }
.kiosk-sub { display: block; font-size: 0.72rem; color: rgba(255,255,255,0.45); }
.kiosk-table { width: 100%; border-collapse: collapse; font-size: 0.83rem; }
.kiosk-table th, .kiosk-table td { border: 1px solid rgba(255,255,255,0.12); padding: 0.35rem 0.55rem; text-align: left; vertical-align: top; }
.kiosk-table th { background: rgba(0,229,255,0.08); color: #00e5ff; }
.kiosk-row--problem td { background: rgba(255,82,82,0.12); }
.kiosk-chip { display: inline-block; margin-left: 0.35rem; padding: 0 0.4rem; border: 1px solid #ffd600; border-radius: 3px; color: #ffd600; font-size: 0.68rem; }
.kiosk-status { font-weight: bold; }
.kiosk-status--ok { color: #34d399; }
.kiosk-status--unfocused, .kiosk-status--no_fullscreen { color: #ffd600; }
.kiosk-status--hidden, .kiosk-status--closed, .kiosk-status--offline { color: #ff5252; }
.kiosk-actions { display: flex; flex-wrap: wrap; gap: 0.5rem; margin-bottom: 0.5rem; }
.kiosk-panel-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(170px, 1fr)); gap: 0.4rem; margin-bottom: 0.5rem; }
.kiosk-toggle { display: flex; flex-direction: column; align-items: flex-start; gap: 0.1rem; padding: 0.45rem 0.6rem; border: 1px solid rgba(255,255,255,0.2); border-radius: 4px; background: transparent; color: #ccc; text-align: left; cursor: pointer; font: inherit; }
.kiosk-toggle:hover { border-color: #00e5ff; background: rgba(0,229,255,0.08); }
.kiosk-toggle--on { border-color: #ffd600; background: rgba(255,214,0,0.1); }
.kiosk-toggle-name { font-weight: bold; font-size: 0.85rem; }
.kiosk-toggle-state { font-size: 0.72rem; text-transform: uppercase; letter-spacing: 0.06em; color: rgba(255,255,255,0.55); }
.kiosk-toggle--on .kiosk-toggle-state { color: #ffd600; }
.kiosk-launch-form { display: flex; flex-wrap: wrap; align-items: center; gap: 0.5rem; }
.kiosk-launch-form select.form-input-sm { width: auto; max-width: 100%; }
.kiosk-launch-form input.form-input-sm { width: 11rem; max-width: 100%; }
.kiosk-launch-form input.kiosk-base-input { width: 16rem; }
.kiosk-recipe { border: 1px solid rgba(255,255,255,0.15); border-radius: 4px; padding: 0.4rem 0.7rem; }
.kiosk-recipe[open] { border-color: rgba(0,229,255,0.4); }
.kiosk-recipe summary { cursor: pointer; }
.kiosk-recipe-title { color: var(--accent-cyan, #00e5ff); font-weight: bold; }
.kiosk-lock-level { font-size: 0.82rem; color: rgba(255,255,255,0.7); margin: 0.5rem 0; line-height: 1.45; }
.kiosk-steps { font-size: 0.83rem; margin: 0 0 0.5rem 1.2rem; padding: 0; line-height: 1.5; }
.kiosk-file { margin: 0.4rem 0; }
.kiosk-file-head { display: flex; justify-content: space-between; align-items: center; gap: 0.5rem; font-size: 0.78rem; color: rgba(255,255,255,0.6); font-family: monospace; }
.kiosk-code { margin: 0.25rem 0 0; padding: 0.5rem; max-height: 22rem; overflow: auto; background: rgba(0,0,0,0.35); border: 1px solid rgba(255,255,255,0.1); border-radius: 3px; font-size: 0.75rem; white-space: pre; }
.kiosk-recipes { display: flex; flex-direction: column; gap: 0.5rem; }

/* ── Reiter „Medizin“: Live-Verschlechterung am Patientenmonitor ───────── */
.gm-med-lead { color: var(--text-secondary, #9ca3af); font-size: 0.85rem; margin: 0 0 0.75rem; }
.gm-med-lead a { color: var(--accent-cyan, #22d3ee); }
.gm-med-trigger {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-end;
    gap: 0.6rem 1rem;
    padding: 0.75rem;
    border: 1px solid var(--border-color, #1f2937);
    border-radius: 6px;
}
.gm-med-field { display: flex; flex-direction: column; gap: 0.25rem; font-size: 0.8rem; color: var(--text-secondary, #9ca3af); }
.gm-med-field select { min-width: 12rem; }
.gm-med-radios { border: 0; margin: 0; padding: 0; display: flex; gap: 0.6rem; align-items: center; }
.gm-med-radios legend { width: 100%; margin-bottom: 0.25rem; }
.gm-med-radios label { color: var(--text-primary, #e5e7eb); display: inline-flex; gap: 0.25rem; align-items: center; }
.gm-medical .btn-danger {
    background: rgba(239, 68, 68, 0.2);
    border: 1px solid #ef4444;
    color: #fca5a5;
    padding: 0.45rem 1rem;
    border-radius: 4px;
    font-weight: 700;
    cursor: pointer;
}
.gm-medical .btn-danger:hover { background: rgba(239, 68, 68, 0.35); }
.gm-med-quick { display: flex; flex-wrap: wrap; align-items: center; gap: 0.5rem; margin: 0.75rem 0; font-size: 0.85rem; }
.gm-med-sub { margin: 1rem 0 0.4rem; }
.gm-med-empty, .gm-med-muted { color: var(--text-secondary, #9ca3af); font-size: 0.8rem; }
.gm-med-muted { display: block; }
.gm-med-table { width: 100%; }
.gm-med-table a { color: var(--accent-cyan, #22d3ee); }
.gm-med-table tr.gm-med-active td { background: rgba(239, 68, 68, 0.08); }
.gm-med-bar { display: block; height: 4px; margin: 0.25rem 0 0.1rem; background: #1f2937; border-radius: 2px; overflow: hidden; min-width: 5rem; }
.gm-med-bar span { display: block; height: 100%; background: #ef4444; transition: width 0.4s; }
.gm-med-actions { display: flex; gap: 0.35rem; flex-wrap: wrap; }
.gm-med-status { overflow-x: auto; }

/* Verletzung festlegen (fragments/gm-medical-injury.html) */
.gm-med-injury { margin-bottom: 1.25rem; padding-bottom: 0.75rem; border-bottom: 1px solid var(--border-color, #1f2937); }
.gm-inj-cause { flex: 1 1 16rem; }
.gm-inj-cause input { width: 100%; }
.gm-inj-error { color: #fca5a5; font-weight: 700; font-size: 0.85rem; }
.gm-inj-groups { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(20rem, 100%), 1fr)); gap: 0.75rem; margin: 0.75rem 0; }
.gm-inj-group { display: flex; flex-direction: column; gap: 0.35rem; }
.gm-inj-group-title { font-size: 0.75rem; text-transform: uppercase; letter-spacing: 0.05em; color: var(--text-secondary, #9ca3af); }
.gm-inj-preset { display: flex; justify-content: space-between; align-items: center; gap: 0.5rem; flex-wrap: wrap;
    padding: 0.35rem 0.5rem; border: 1px solid var(--border-color, #1f2937); border-radius: 4px; }
.gm-inj-preset-label { display: flex; flex-direction: column; font-size: 0.85rem; }
.gm-inj-preset-buttons { display: flex; flex-wrap: wrap; gap: 0.3rem; }
.gm-inj-custom { margin: 0.5rem 0; font-size: 0.85rem; }
.gm-inj-custom summary { cursor: pointer; color: var(--accent-cyan, #22d3ee); margin-bottom: 0.5rem; }
.gm-inj-label { min-width: 10rem; }

/* Funkgerät-Werkzeuge (fragments/gm-radio.html) */
.gm-radio { display: flex; flex-direction: column; gap: 0.6rem; }
.gm-radio-form { display: flex; flex-wrap: wrap; gap: 0.4rem; align-items: center; }
.gm-radio-form .form-input { flex: 1 1 120px; }
.gm-radio-form textarea.form-input { flex: 1 1 100%; }
.gm-radio-status { font-size: 0.85rem; opacity: 0.9; }
.gm-radio-error { color: #ff6b6b; font-weight: bold; }
.gm-radio-beacon { border: 1px solid #ff6b6b; padding: 0.5rem; border-radius: 4px; background: rgba(255,80,80,0.08); display: flex; flex-direction: column; gap: 0.4rem; }
.gm-radio-field { display: flex; flex-direction: column; gap: 0.15rem; font-size: 0.75rem; opacity: 0.9; flex: 1 1 120px; }
.gm-radio-field .form-input { width: 100%; }

/* Fehlermeldungen der Reiter (Session, Events, NPCs, Broadcast, CIWS) */
.gm-error { color: #ff6b6b; font-weight: bold; border: 1px solid #ff6b6b; border-radius: 4px; padding: 0.4rem 0.6rem; background: rgba(255,80,80,0.08); margin: 0.4rem 0; }
/* Broadcast: Zuschauer-Bildschirm */
.gm-spectator { display: flex; flex-direction: column; gap: 0.4rem; border-top: 1px dashed rgba(255,255,255,0.15); padding-top: 0.5rem; }
.gm-spectator h4 { margin: 0; }
.gm-spectator-row { display: flex; flex-wrap: wrap; gap: 0.75rem; align-items: center; }
.gm-spectator-on { color: #00c853; font-weight: bold; }
.gm-spectator-off { color: #ff6b6b; font-weight: bold; }
/* Events: angekuendigtes Auto-Ereignis */
.event-card--pending { border: 1px solid #ffd600; background: rgba(255,214,0,0.08); align-items: center; }
/* Overlay: Automatik-Schalter */
.overlay-auto-row { display: flex; align-items: center; gap: 0.75rem; margin-bottom: 0.75rem; }
