/* ═══════════════════════════════════════════
   Signal intercept puzzles
   ═══════════════════════════════════════════ */

  /* ===== SIGNAL INTERCEPT ===== */
  .sig-screen { padding: 12px; height: 100%; box-sizing: border-box; }

  /* Mode tabs — matches Void Lexicon tab style */
  .sig-mode-tabs { display: flex; border-bottom: 1px solid var(--grid); margin-bottom: 16px; }
  .sig-mode-tab {
    flex: 1; padding: 8px; text-align: center;
    font-family: 'Orbitron', monospace; font-size: 9px; letter-spacing: 1.5px;
    cursor: pointer; color: var(--dim);
    background: transparent !important; border: none !important;
    border-bottom: 2px solid transparent !important;
    box-shadow: none !important; text-shadow: none !important;
    transition: color var(--dur-fast), border-color 0.15s;
  }
  .sig-mode-tab.active { color: var(--accent); border-bottom-color: var(--accent) !important; }

  /* Ring tabs */
  .sig-ring-tabs { display: flex; gap: 4px; margin-bottom: 12px; }
  .sig-ring-tab {
    flex: 1; padding: 8px 4px; text-align: center; font-size: 0.65em; font-weight: 700;
    letter-spacing: 1px; border: 1px solid var(--glass-border); border-radius: var(--r-xs);
    background: transparent; color: var(--dim); cursor: pointer;
  }
  .sig-ring-tab.active { background: var(--glass-bg); color: var(--accent); border-color: var(--accent); }
  .sig-ring-tab.locked { opacity: 0.3; cursor: default; }

  /* Track labels */
  .sig-track-label { font-size: 0.6em; letter-spacing: 2px; color: var(--dim); margin: 12px 0 8px; }

  /* Signal cards */
  .sig-signal-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(160px, 1fr)); gap: 8px; margin-bottom: 12px; }
  .sig-signal-card {
    background: var(--glass-bg); border: 1px solid var(--glass-border); border-radius: 6px;
    padding: 10px; cursor: pointer; transition: border-color var(--dur-fast);
  }
  .sig-signal-card.available:active { border-color: var(--accent); }
  .sig-signal-card.solved { border-color: rgba(0,255,136,0.2); }
  .sig-signal-card.locked { opacity: 0.35; cursor: default; }
  .sig-card-header { display: flex; justify-content: space-between; font-size: 0.55em; color: var(--dim); margin-bottom: 4px; }
  .sig-card-title { font-size: 0.75em; font-weight: 700; color: var(--white); margin-bottom: 4px; letter-spacing: 1px; }
  .sig-card-meta { display: flex; justify-content: space-between; font-size: 0.55em; color: var(--dim); margin-bottom: 2px; }
  .sig-card-sender { font-size: 0.5em; color: var(--dim); opacity: 0.6; }
  .sig-card-score { font-size: 0.55em; color: var(--green); margin-top: 4px; }
  .sig-card-status { letter-spacing: 1px; }
  .sig-signal-card.solved .sig-card-status { color: var(--green); }

  /* Meta-puzzle banner */
  .sig-meta-banner {
    padding: 12px; border-radius: 6px; text-align: center; font-size: 0.65em;
    letter-spacing: 1px; font-weight: 700; margin-top: 12px;
  }
  .sig-meta-locked { background: var(--glass-bg); color: var(--dim); border: 1px solid var(--glass-border); }
  .sig-meta-ready { background: rgba(255,179,0,0.08); color: var(--accent); border: 1px solid rgba(255,179,0,0.3); cursor: pointer; }
  .sig-meta-solved { background: rgba(0,255,136,0.06); color: var(--green); border: 1px solid rgba(0,255,136,0.2); }

  /* Free Play */
  .sig-fp-header { font-size: 0.65em; letter-spacing: 2px; color: var(--dim); margin-bottom: 12px; }
  /* Cipher type cards — system card style */
  .sig-type-grid { display: flex; flex-direction: column; gap: 2px; margin-bottom: 16px; }
  .sig-type-card {
    display: flex; align-items: center; gap: 12px;
    padding: 12px 14px; border-bottom: 1px solid var(--grid);
    cursor: pointer; transition: background 0.1s;
  }
  .sig-type-card:active { background: var(--accent-glow, rgba(255,179,0,0.06)); }
  .sig-type-card.selected { background: rgba(255,179,0,0.06); border-left: 3px solid var(--accent); }
  .sig-type-card.locked { opacity: 0.25; cursor: default; }
  .sig-type-card.locked:active { background: transparent; }
  .sig-type-icon { font-size: 1.3em; width: 32px; text-align: center; flex-shrink: 0; }
  .sig-type-info { flex: 1; min-width: 0; }
  .sig-type-name { font-size: 0.7em; font-weight: 700; letter-spacing: 1px; color: var(--white); }
  .sig-type-desc { font-size: 0.5em; color: var(--dim); margin-top: 2px; line-height: 1.4; }
  .sig-type-lock { font-size: 0.55em; color: var(--dim); flex-shrink: 0; }
  .sig-type-stat { font-size: 0.5em; color: var(--dim); margin-top: 2px; }
  .sig-type-help-btn {
    width: 28px; height: 28px; border-radius: 50%; border: 1px solid rgba(0,255,136,0.25);
    background: rgba(0,255,136,0.04); color: var(--green); font-size: 0.7em; font-weight: 700;
    cursor: pointer; flex-shrink: 0;
  }

  .sig-fp-inline-diff { display: flex; gap: 8px; margin-top: 8px; }
  .sig-fp-diff-section { text-align: center; margin-bottom: 16px; }
  .sig-fp-diff-label { font-size: 0.6em; letter-spacing: 2px; color: var(--dim); margin-bottom: 8px; }
  .sig-diff-dots { display: flex; justify-content: center; gap: 8px; }
  .sig-diff-dot {
    width: 36px; height: 36px; border-radius: 50%; border: 1px solid var(--glass-border);
    background: transparent; color: var(--white); font-size: 0.7em; font-weight: 700; cursor: pointer;
  }
  .sig-diff-dot.active { background: var(--accent); color: var(--bg); border-color: var(--accent); }
  .sig-diff-dot.locked { opacity: 0.2; cursor: default; }

  .sig-start-btn {
    display: block; width: 100%; padding: 14px; font-size: 0.75em; font-weight: 700;
    letter-spacing: 2px; text-align: center; border: 1px solid var(--accent); border-radius: 6px;
    background: rgba(255,179,0,0.1); color: var(--accent); cursor: pointer;
  }

  /* Workbench */
  .sig-workbench { display: flex; flex-direction: column; height: 100%; }
  .sig-wb-header {
    display: flex; align-items: center; gap: 8px; padding: 8px; border-bottom: 1px solid var(--glass-border);
  }
  .sig-wb-back { background: none; border: none; color: var(--dim); font-size: 1.2em; cursor: pointer; padding: 4px 8px; }
  .sig-wb-title { flex: 1; font-size: 0.7em; font-weight: 700; letter-spacing: 1px; color: var(--white); }
  .sig-wb-diff { font-size: 0.8em; color: var(--dim); font-weight: 400; margin-left: 8px; }
  .sig-font-btn {
    background: #0e0e12 !important; border: 1px solid #222 !important; color: var(--sb-text-dim) !important;
    font-family: 'JetBrains Mono', monospace; font-size: 11px !important;
    padding: 4px 8px !important; cursor: pointer; border-radius: 2px !important;
    box-shadow: none !important; text-shadow: none !important;
  }
  .sig-font-btn:active { color: var(--sb-text) !important; border-color: #333 !important; }
  .sig-wb-help {
    font-size: 0.55em; padding: 6px 10px; border: 1px solid rgba(0,255,136,0.2); border-radius: var(--r-xs);
    background: rgba(0,255,136,0.04); color: var(--green); cursor: pointer; white-space: nowrap;
    letter-spacing: 0.5px; font-weight: 600;
  }
  .sig-wb-hint {
    font-size: 0.6em; padding: 6px 10px; border: 1px solid var(--glass-border); border-radius: var(--r-xs);
    background: transparent; color: var(--accent); cursor: pointer; white-space: nowrap;
  }

  .sig-wb-encrypted {
    padding: 12px; border-bottom: 1px solid var(--glass-border); background: rgba(0,0,0,0.3);
  }
  .sig-wb-enc-label { font-size: 0.5em; letter-spacing: 2px; color: var(--dim); margin-bottom: 6px; }
  .sig-wb-enc-text {
    font-family: 'JetBrains Mono', monospace; font-size: 0.75em; color: var(--accent);
    line-height: 1.6; word-break: break-all; max-height: 120px; overflow-y: auto;
  }
  .sig-cipher-text { letter-spacing: 1px; }
  .sig-binary-text { letter-spacing: 0.5px; }
  .sig-morse-dot { color: var(--accent); font-weight: 700; }
  .sig-morse-dash { color: var(--accent); font-weight: 700; }
  .sig-morse-space { display: inline-block; width: 16px; }
  .sig-morse-gap { display: inline-block; width: 6px; }

  .sig-wb-workspace { flex: 1; padding: 12px; overflow-y: auto; min-height: 200px; }

  .sig-wb-toolbar {
    display: flex; gap: 4px; padding: 8px; border-top: 1px solid var(--glass-border);
    background: var(--glass-bg);
  }
  .sig-tool-btn {
    flex: 1; display: flex; align-items: center; justify-content: center; gap: 6px;
    padding: 10px 8px; border: 1px solid var(--glass-border); border-radius: 6px;
    background: transparent; color: var(--dim); font-size: 0.75em; cursor: pointer;
    transition: border-color var(--dur-fast), background 0.15s;
  }
  .sig-tool-btn:active { background: rgba(255,179,0,0.08); }
  .sig-tool-btn.active { border-color: var(--accent); color: var(--accent); background: rgba(255,179,0,0.06); }
  .sig-tool-btn.recommended { color: var(--white); border-color: rgba(255,255,255,0.1); }
  .sig-tool-label { font-size: 0.6em; letter-spacing: 0.5px; font-weight: 600; }

  .sig-wb-footer { padding: 8px 12px; border-top: 1px solid var(--glass-border); }
  .sig-hint-area { min-height: 0; }
  .sig-hint-text {
    font-size: 0.6em; color: var(--accent); padding: 8px 10px; margin-bottom: 6px;
    background: rgba(255,179,0,0.04); border: 1px solid rgba(255,179,0,0.15);
    border-radius: var(--r-xs); line-height: 1.5;
  }
  .sig-wb-solution { display: flex; gap: 6px; margin-bottom: 6px; }
  .sig-solution-input {
    flex: 1; padding: 10px; font-family: 'JetBrains Mono', monospace; font-size: 16px; /* 16px min prevents iOS auto-zoom */
    background: var(--glass-bg); border: 1px solid var(--glass-border); border-radius: var(--r-xs);
    color: var(--white); outline: none;
  }
  .sig-solution-input:focus { border-color: var(--accent); }
  .sig-submit-btn {
    padding: 10px 16px; font-size: 0.65em; font-weight: 700; letter-spacing: 2px;
    border: 1px solid var(--accent); border-radius: var(--r-xs);
    background: rgba(255,179,0,0.15); color: var(--accent); cursor: pointer;
  }
  .sig-wb-stats { display: flex; justify-content: space-between; font-size: 0.55em; color: var(--dim); }

  /* Tool: Caesar Interactive */
  .sig-tool-shift { padding: 8px 0; }
  .sig-caesar-instructions {
    font-size: 0.6em; color: var(--dim); line-height: 1.6; margin-bottom: 12px;
    padding: 8px; background: var(--glass-bg); border-radius: var(--r-xs); border: 1px solid var(--glass-border);
  }
  .sig-caesar-interactive {
    font-family: 'JetBrains Mono', monospace; font-size: 0.85em;
    line-height: 2.2; padding: 12px; background: rgba(0,0,0,0.3); border-radius: var(--r-xs);
    margin-bottom: 8px; word-break: break-all;
  }
  .sig-caesar-unmapped { color: var(--accent); cursor: pointer; padding: 2px 1px; border-radius: var(--r-xs); }
  .sig-caesar-unmapped:active { background: rgba(255,179,0,0.2); }
  .sig-caesar-mapped { color: var(--green); font-weight: 700; }
  .sig-caesar-space { color: var(--dim); }
  .sig-caesar-progress { font-size: 0.55em; color: var(--dim); text-align: center; margin-bottom: 12px; }
  .sig-caesar-selected {
    padding: 12px; background: var(--glass-bg); border: 1px solid var(--accent);
    border-radius: 6px; margin-bottom: 12px; text-align: center;
  }
  #sig-caesar-sel-label { font-size: 0.7em; color: var(--white); display: block; margin-bottom: 10px; }
  .sig-caesar-alphabet { display: flex; flex-wrap: wrap; gap: 4px; justify-content: center; }
  .sig-alpha-btn {
    width: 32px; height: 32px; font-family: 'JetBrains Mono', monospace; font-size: 0.7em;
    font-weight: 700; border: 1px solid var(--glass-border); border-radius: var(--r-xs);
    background: transparent; color: var(--white); cursor: pointer;
  }
  .sig-alpha-btn:active { background: var(--accent); color: var(--bg); }
  .sig-caesar-apply-btn {
    display: block; width: 100%; padding: 10px; font-size: 0.6em; font-weight: 700;
    letter-spacing: 1px; border: 1px solid var(--green); border-radius: var(--r-xs);
    background: rgba(0,255,136,0.06); color: var(--green); cursor: pointer;
  }

  /* Tool: Caesar Zoom Modal */
  .sig-zoom-overlay {
    position: fixed; top: 0; left: 0; right: 0; bottom: 0; z-index: 9999;
    background: rgba(0,0,0,0.85); display: flex; align-items: center; justify-content: center;
    opacity: 0; transition: opacity var(--dur-fast);
  }
  .sig-zoom-visible { opacity: 1; }
  .sig-zoom-modal {
    background: var(--bg2, #111); border: 1px solid var(--accent); border-radius: 8px;
    padding: 24px; max-width: 90vw; text-align: center;
  }
  .sig-zoom-label {
    font-family: 'Orbitron', monospace; font-size: 10px; letter-spacing: 2px;
    color: var(--dim); margin-bottom: 20px;
  }
  .sig-zoom-word {
    display: flex; gap: 8px; justify-content: center; flex-wrap: wrap; margin-bottom: 16px;
  }
  .sig-zoom-char {
    font-family: 'JetBrains Mono', monospace; font-size: 2.2em; font-weight: 700;
    width: 52px; height: 52px; display: flex; align-items: center; justify-content: center;
    border: 2px solid var(--glass-border); border-radius: 6px; cursor: pointer;
    transition: border-color var(--dur-fast), background 0.15s;
  }
  .sig-zoom-unmapped { color: var(--accent); }
  .sig-zoom-mapped { color: var(--green); }
  .sig-zoom-preselected { border-color: var(--accent); background: rgba(255,179,0,0.1); }
  .sig-zoom-active { border-color: var(--accent) !important; background: rgba(255,179,0,0.2) !important; box-shadow: 0 0 12px rgba(255,179,0,0.3); }
  .sig-zoom-char:active { background: rgba(255,179,0,0.15); }
  .sig-zoom-hint {
    font-size: 12px; color: var(--dim); margin-bottom: 20px;
  }
  .sig-zoom-actions { display: flex; gap: 12px; justify-content: center; }
  .sig-zoom-cancel, .sig-zoom-confirm {
    font-family: 'Orbitron', monospace; font-size: 11px; letter-spacing: 1px; font-weight: 700;
    padding: 10px 28px; border-radius: var(--r-xs); cursor: pointer; border: 1px solid;
  }
  .sig-zoom-cancel { border-color: var(--dim); background: transparent; color: var(--dim); }
  .sig-zoom-cancel:active { background: rgba(255,255,255,0.05); }
  .sig-zoom-confirm { border-color: var(--accent); background: rgba(255,179,0,0.1); color: var(--accent); }
  .sig-zoom-confirm:disabled { opacity: 0.3; pointer-events: none; }
  .sig-zoom-confirm:active { background: rgba(255,179,0,0.25); }

  /* Tool: Hex Terminal (tap to decode) */
  .sig-tool-hex { padding: 8px 0; }
  .sig-hex-label { font-size: 0.6em; letter-spacing: 1px; color: var(--dim); margin-bottom: 8px; }
  .sig-hex-bytes {
    font-family: 'JetBrains Mono', monospace; font-size: 0.8em;
    line-height: 2.4; padding: 12px; background: rgba(0,0,0,0.3); border-radius: var(--r-xs);
    margin-bottom: 10px; word-break: break-all;
  }
  .sig-hex-byte {
    color: var(--accent); cursor: pointer; padding: 3px 4px; border-radius: var(--r-xs);
    border: 1px solid transparent; transition: all var(--dur-fast);
  }
  .sig-hex-byte:active { background: rgba(255,179,0,0.2); }
  .sig-hex-byte.decoded { color: var(--green); border-color: rgba(0,255,136,0.15); cursor: default; }
  .sig-hex-byte.sig-hex-active { border-color: var(--accent); background: rgba(255,179,0,0.15); }
  .sig-hex-prompt {
    padding: 12px; margin-bottom: 10px; background: var(--glass-bg);
    border: 1px solid var(--accent); border-radius: 6px; text-align: center;
  }
  .sig-hex-prompt-code {
    font-family: 'JetBrains Mono', monospace; font-size: 1.4em; color: var(--accent);
    letter-spacing: 4px; margin-bottom: 6px; font-weight: 700;
  }
  .sig-hex-prompt-label { font-size: 0.6em; color: var(--dim); margin-bottom: 10px; }
  .sig-hex-prompt-hint { font-family: 'JetBrains Mono', monospace; font-size: 0.7em; color: var(--accent); margin-bottom: 6px; }
  .sig-hex-prompt-btns { display: flex; flex-wrap: wrap; gap: 4px; justify-content: center; }
  .sig-hex-prompt-btn {
    width: 32px; height: 32px; font-family: 'JetBrains Mono', monospace; font-size: 0.7em;
    font-weight: 700; border: 1px solid var(--glass-border); border-radius: var(--r-xs);
    background: transparent; color: var(--white); cursor: pointer;
  }
  .sig-hex-prompt-btn:active { background: var(--accent); color: var(--bg); }
  .sig-hex-prompt-sp { width: 48px; font-size: 0.6em; letter-spacing: 1px; }
  .sig-hex-progress { margin-bottom: 10px; }
  .sig-hex-progress-label { font-size: 0.55em; letter-spacing: 1px; color: var(--dim); margin-bottom: 4px; }
  .sig-hex-progress-text {
    font-family: 'JetBrains Mono', monospace; font-size: 0.8em; color: var(--green);
    padding: 10px; background: rgba(0,255,136,0.03); border-radius: var(--r-xs);
    border: 1px solid rgba(0,255,136,0.08); letter-spacing: 1px;
    overflow-x: auto; white-space: nowrap; max-width: 100%;
  }
  .sig-hex-ref { margin-top: 8px; }
  .sig-hex-ref-label { font-size: 0.55em; letter-spacing: 1px; color: var(--dim); margin-bottom: 4px; }
  .sig-hex-ref-table {
    font-family: 'JetBrains Mono', monospace; font-size: 0.6em; color: var(--dim);
    line-height: 2; display: flex; flex-wrap: wrap; gap: 2px;
  }
  .sig-ascii-entry {
    display: inline-block; padding: 2px 6px; border: 1px solid var(--glass-border);
    border-radius: var(--r-xs); min-width: 44px; text-align: center;
  }
  .sig-ascii-entry strong { color: var(--white); }
  .sig-ascii-pos-guide {
    font-family: 'JetBrains Mono', monospace; font-size: 0.65em; color: var(--accent);
    padding: 6px 8px; margin-bottom: 8px; background: rgba(255,179,0,0.05);
    border: 1px solid rgba(255,179,0,0.15); border-radius: var(--r-xs);
  }
  .sig-ascii-pos-guide code { color: var(--white); letter-spacing: 1px; }
  .sig-ascii-pos-label { color: var(--dim); font-size: 0.85em; margin-right: 8px; }

  /* Tool: Morse Decoder (tap groups to decode) */
  .sig-tool-morse { padding: 8px 0; }
  .sig-morse-label { font-size: 0.6em; letter-spacing: 1px; color: var(--dim); margin-bottom: 8px; }
  .sig-morse-groups {
    display: flex; flex-wrap: wrap; gap: 6px; padding: 12px; background: rgba(0,0,0,0.3);
    border-radius: var(--r-xs); margin-bottom: 10px; align-items: flex-end;
  }
  .sig-morse-group {
    display: flex; flex-direction: column; align-items: center; cursor: pointer;
    padding: 4px 6px; border: 1px solid transparent; border-radius: var(--r-xs);
    transition: border-color var(--dur-fast);
  }
  .sig-morse-group:active { border-color: var(--accent); background: rgba(255,179,0,0.1); }
  .sig-morse-group.decoded { border-color: rgba(0,255,136,0.2); }
  .sig-morse-code {
    font-family: 'JetBrains Mono', monospace; font-size: 0.8em; color: var(--accent);
    letter-spacing: 2px; font-weight: 700;
  }
  .sig-morse-group.decoded .sig-morse-code { color: var(--dim); }
  .sig-morse-letter {
    font-family: 'JetBrains Mono', monospace; font-size: 0.65em; margin-top: 2px;
    color: var(--dim); font-weight: 700;
  }
  .sig-morse-group.decoded .sig-morse-letter { color: var(--green); }
  .sig-morse-word-sep {
    display: flex; align-items: center; color: var(--dim); font-size: 0.8em;
    padding: 0 4px; opacity: 0.3;
  }
  .sig-morse-group.sig-morse-active { border-color: var(--accent); background: rgba(255,179,0,0.1); }
  .sig-morse-prompt {
    padding: 12px; margin-bottom: 10px; background: var(--glass-bg);
    border: 1px solid var(--accent); border-radius: 6px; text-align: center;
  }
  .sig-morse-prompt-code {
    font-family: 'JetBrains Mono', monospace; font-size: 1.4em; color: var(--accent);
    letter-spacing: 4px; margin-bottom: 6px; font-weight: 700;
  }
  .sig-morse-prompt-label { font-size: 0.6em; color: var(--dim); margin-bottom: 10px; }
  .sig-morse-prompt-btns { display: flex; flex-wrap: wrap; gap: 4px; justify-content: center; }
  .sig-morse-prompt-btn {
    width: 32px; height: 32px; font-family: 'JetBrains Mono', monospace; font-size: 0.7em;
    font-weight: 700; border: 1px solid var(--glass-border); border-radius: var(--r-xs);
    background: transparent; color: var(--white); cursor: pointer;
  }
  .sig-morse-prompt-btn:active { background: var(--accent); color: var(--bg); }
  .sig-morse-decoded-text { margin-bottom: 10px; }
  .sig-morse-decoded-label { font-size: 0.55em; letter-spacing: 1px; color: var(--dim); margin-bottom: 4px; }
  .sig-morse-decoded-preview {
    font-family: 'JetBrains Mono', monospace; font-size: 0.75em; color: var(--green);
    padding: 10px; background: rgba(0,255,136,0.03); border-radius: var(--r-xs);
    border: 1px solid rgba(0,255,136,0.08); letter-spacing: 1px;
  }
  .sig-morse-audio-only {
    padding: 20px; text-align: center; font-size: 0.65em; color: var(--dim);
    letter-spacing: 1px; border: 1px dashed var(--glass-border); border-radius: var(--r-xs); margin-bottom: 10px;
  }
  .sig-morse-controls { display: flex; gap: 6px; margin-bottom: 10px; }
  .sig-morse-play-btn, .sig-morse-stop-btn {
    flex: 1; padding: 10px; font-size: 0.65em; font-weight: 700; border-radius: 6px; cursor: pointer;
    border: 1px solid var(--glass-border); background: transparent; color: var(--accent);
    text-align: center;
  }
  .sig-morse-play-btn:active { background: rgba(255,179,0,0.1); }
  .sig-morse-stop-btn { color: var(--red); border-color: rgba(255,0,60,0.3); }
  .sig-morse-ref { margin-top: 8px; }
  .sig-morse-ref-label { font-size: 0.55em; letter-spacing: 1px; color: var(--dim); margin-bottom: 6px; }
  .sig-morse-ref-grid {
    font-family: 'JetBrains Mono', monospace; font-size: 0.6em; color: var(--dim);
    line-height: 2; display: flex; flex-wrap: wrap; gap: 2px;
  }
  .sig-morse-ref-entry {
    display: inline-block; padding: 2px 6px; border: 1px solid var(--glass-border);
    border-radius: var(--r-xs); min-width: 50px; text-align: center;
  }
  .sig-morse-ref-entry strong { color: var(--white); }

  /* Tool: Frequency Analyzer */
  .sig-tool-freq { padding: 8px 0; }
  .sig-freq-section { margin-bottom: 12px; }
  .sig-freq-label { font-size: 0.55em; letter-spacing: 1px; color: var(--dim); margin-bottom: 6px; }
  .sig-freq-bars { display: flex; align-items: flex-end; height: 80px; gap: 1px; }
  .sig-freq-col { display: flex; flex-direction: column; align-items: center; flex: 1; height: 100%; justify-content: flex-end; }
  .sig-freq-bar { width: 100%; min-height: 1px; background: var(--accent); border-radius: 1px 1px 0 0; transition: height var(--dur-fast); }
  .sig-freq-bar.eng { background: rgba(0,255,136,0.5); }
  .sig-freq-ch { font-size: 0.45em; color: var(--dim); margin-top: 2px; }
  .sig-freq-hint { font-size: 0.55em; color: var(--dim); text-align: center; margin-top: 8px; font-style: italic; }

  /* Tool: Notepad */
  .sig-tool-notepad { padding: 8px 0; }
  .sig-notepad-label { font-size: 0.55em; letter-spacing: 1px; color: var(--dim); margin-bottom: 6px; }
  .sig-notepad-textarea {
    width: 100%; min-height: 150px; padding: 10px; font-family: 'JetBrains Mono', monospace;
    font-size: 16px; /* 16px min prevents iOS auto-zoom */
    background: var(--glass-bg); border: 1px solid var(--glass-border);
    border-radius: var(--r-xs); color: var(--white); outline: none; resize: vertical;
  }

  /* Result screen */
  .sig-result { padding: 24px 16px; text-align: center; }
  .sig-result-header { font-size: 0.8em; font-weight: 700; letter-spacing: 3px; color: var(--green); margin-bottom: 12px; }
  .sig-result-score { font-size: 2em; font-weight: 700; color: var(--accent); margin-bottom: 16px; }
  .sig-result-stats { display: flex; justify-content: center; gap: 20px; font-size: 0.6em; color: var(--dim); margin-bottom: 20px; }
  .sig-result-plain { margin-bottom: 16px; }
  .sig-result-plain-label { font-size: 0.55em; letter-spacing: 2px; color: var(--dim); margin-bottom: 6px; }
  .sig-result-plain-text {
    font-family: 'JetBrains Mono', monospace; font-size: 0.7em; color: var(--green);
    padding: 12px; background: rgba(0,255,136,0.03); border-radius: var(--r-xs);
    border: 1px solid rgba(0,255,136,0.1); text-align: left; line-height: 1.6;
  }
  .sig-result-narrative { font-size: 0.65em; color: var(--white); line-height: 1.6; margin-bottom: 16px; padding: 0 8px; text-align: left; }
  .sig-result-fragment {
    font-size: 0.6em; letter-spacing: 1px; color: var(--accent); padding: 8px 12px;
    background: rgba(255,179,0,0.06); border: 1px solid rgba(255,179,0,0.15); border-radius: var(--r-xs);
    margin-bottom: 20px;
  }
  .sig-result-fragment strong { color: var(--accent); }
  .sig-result-btn {
    display: inline-block; padding: 12px 32px; font-size: 0.7em; font-weight: 700;
    letter-spacing: 2px; border: 1px solid var(--accent); border-radius: 6px;
    background: rgba(255,179,0,0.1); color: var(--accent); cursor: pointer;
  }

  /* Help overlay */
  .sig-help-overlay {
    position: fixed; inset: 0; z-index: 9999; display: flex; align-items: center; justify-content: center;
    background: rgba(0,0,0,0.8); padding: 20px;
  }
  .sig-help-panel {
    max-width: 400px; width: 100%; background: var(--bg2, #0d0b08); border: 1px solid var(--accent);
    border-radius: 8px; padding: 24px 20px; max-height: 80vh; overflow-y: auto;
  }
  .sig-help-title {
    font-size: 0.8em; font-weight: 700; letter-spacing: 2px; color: var(--accent); margin-bottom: 16px;
    text-align: center;
  }
  .sig-help-content {
    font-size: 0.65em; color: var(--white); line-height: 1.8; margin-bottom: 20px;
  }
  .sig-help-content strong { color: var(--accent); display: block; margin-top: 10px; margin-bottom: 4px; }
  .sig-help-close {
    display: block; width: 100%; padding: 12px; font-size: 0.7em; font-weight: 700;
    letter-spacing: 2px; border: 1px solid var(--accent); border-radius: 6px;
    background: rgba(255,179,0,0.1); color: var(--accent); cursor: pointer; text-align: center;
  }

  /* ═══════════════════════════════════════════════════════════
     SALVAGE GRID — Zero-cost exploration mini-game
     ═══════════════════════════════════════════════════════════ */

  /* Screen layout */
  #screen-salvage.active { display: flex; flex-direction: column; height: 100%; overflow: auto; }
  .svg-container { display: flex; flex-direction: column; padding: 16px; gap: 16px; font-family: 'JetBrains Mono', monospace; }

  /* Header */
  .svg-header { text-align: center; padding: 8px 0; }
  .svg-title { font-family: 'Orbitron', monospace; font-size: 18px; letter-spacing: 3px; color: var(--text); }
  .svg-subtitle { font-size: 11px; color: var(--dim); margin-top: 4px; letter-spacing: 1px; }

  /* Briefing stats */
  .svg-briefing { display: flex; justify-content: space-around; padding: 12px 8px;
    border: 1px solid var(--grid); border-radius: 6px; background: rgba(255,255,255,0.02); }
  .svg-briefing-stat { display: flex; flex-direction: column; align-items: center; gap: 2px; }
  .svg-stat-label { font-size: 9px; color: var(--dim); letter-spacing: 2px; }
  .svg-stat-value { font-size: 18px; color: var(--text); font-weight: bold; }

  /* Rules */
  .svg-rules { display: flex; flex-direction: column; gap: 4px; padding: 8px 0; }
  .svg-rule { font-size: 11px; color: var(--dim); letter-spacing: 0.5px; }

  /* Buttons */
  .svg-btn { display: block; width: 100%; padding: 14px; font-family: 'Orbitron', monospace;
    font-size: 14px; letter-spacing: 2px; border: 1px solid var(--accent); border-radius: 6px;
    cursor: pointer; text-align: center; background: transparent; color: var(--dim); }
  .svg-btn-primary { color: var(--accent); background: rgba(255,179,0,0.08);
    box-shadow: 0 0 8px rgba(255,179,0,0.15); }
  .svg-btn-primary:active { background: rgba(255,179,0,0.2); }
  .svg-btn-extract { color: var(--green, #4CAF50); border-color: var(--green, #4CAF50);
    background: rgba(76,175,80,0.08); }
  .svg-btn-extract:active { background: rgba(76,175,80,0.2); }

  /* Exhausted state */
  .svg-exhausted { text-align: center; font-size: 12px; color: var(--dim); padding: 20px 0;
    letter-spacing: 1px; }

  /* Results */
  .svg-results { display: flex; flex-direction: column; gap: 12px;
    border: 1px solid var(--grid); border-radius: 6px; padding: 16px; background: rgba(255,255,255,0.02); }
  .svg-results-title { font-family: 'Orbitron', monospace; font-size: 14px; color: var(--text);
    letter-spacing: 2px; text-align: center; }
  .svg-derelict-name { font-size: 11px; color: var(--dim); text-align: center; letter-spacing: 1px; }
  .svg-results-stats { display: flex; justify-content: space-around; font-size: 11px; color: var(--dim); }
  .svg-loot-list { display: flex; flex-direction: column; gap: 4px; }
  .svg-loot-item { display: flex; align-items: center; gap: 6px; font-size: 12px; padding: 4px 0;
    border-bottom: 1px solid rgba(255,255,255,0.04); }
  .svg-loot-qty { color: var(--dim); font-size: 11px; }
  .svg-loot-empty { text-align: center; font-size: 12px; color: var(--dim); padding: 8px 0; }
  .svg-logs-section { display: flex; flex-direction: column; gap: 6px; margin-top: 8px; }
  .svg-logs-title { font-size: 10px; color: var(--dim); letter-spacing: 2px; }
  .svg-log-entry { font-size: 11px; color: var(--cyan, #00bcd4); font-style: italic; padding: 4px 0;
    border-left: 2px solid var(--cyan, #00bcd4); padding-left: 8px; }

  /* ===== CONSISTENCY PASS: SIGNAL / SALVAGE / FORGE ===== */
  .sig-shell .shell-header {
    padding-bottom: 18px;
  }

  .sig-screen {
    padding: 14px;
    height: auto;
    min-height: 220px;
  }

  .sig-mode-tabs {
    gap: 8px;
    border-bottom: none;
    margin-bottom: 16px;
  }

  .sig-mode-tab {
    min-height: 38px;
    border: 1px solid rgba(255,179,0,0.08) !important;
    border-radius: 999px !important;
    background: linear-gradient(180deg, rgba(18,16,13,0.94) 0%, rgba(9,9,9,0.98) 100%) !important;
    color: rgba(176,160,128,0.76);
    letter-spacing: 2px;
    box-shadow:
      inset 0 1px 0 rgba(255,255,255,0.02),
      0 10px 22px rgba(0,0,0,0.16) !important;
  }

  .sig-mode-tab.active {
    color: var(--white);
    border-color: rgba(255,179,0,0.18) !important;
    background: rgba(255,179,0,0.07) !important;
  }

  .sig-track-label,
  .sig-fp-header,
  .sig-fp-diff-label,
  .sig-wb-enc-label,
  .sig-result-plain-label,
  .sig-help-title {
    font-family: 'Orbitron', monospace;
    font-size: 8px;
    letter-spacing: 2.6px;
    color: rgba(176,160,128,0.76);
    text-transform: uppercase;
  }

  .sig-signal-grid {
    gap: 10px;
    grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  }

  .sig-signal-card,
  .sig-type-card {
    background: linear-gradient(180deg, rgba(17,15,12,0.95) 0%, rgba(9,9,9,0.98) 100%);
    border: 1px solid rgba(255,179,0,0.08);
    border-radius: 16px;
    box-shadow:
      inset 0 1px 0 rgba(255,255,255,0.02),
      0 14px 28px rgba(0,0,0,0.16);
  }

  .sig-signal-card {
    padding: 14px;
  }

  .sig-signal-card.available:active,
  .sig-type-card:active {
    border-color: rgba(255,179,0,0.18);
  }

  .sig-signal-card.solved {
    border-color: rgba(0,255,136,0.16);
    background: linear-gradient(180deg, rgba(13,18,15,0.95) 0%, rgba(9,9,9,0.98) 100%);
  }

  .sig-card-header,
  .sig-card-meta {
    font-size: 0.58em;
    color: rgba(176,160,128,0.7);
  }

  .sig-card-title,
  .sig-type-name,
  .sig-wb-title {
    font-family: 'Orbitron', monospace;
    font-size: 0.78em;
    letter-spacing: 1.4px;
    color: var(--white);
    text-transform: uppercase;
  }

  .sig-card-sender,
  .sig-type-desc,
  .sig-type-stat,
  .sig-result-narrative,
  .sig-help-content {
    color: rgba(176,160,128,0.84);
    line-height: 1.6;
  }

  .sig-meta-banner {
    padding: 14px;
    border-radius: 16px;
  }

  .sig-type-grid {
    gap: 10px;
  }

  .sig-type-card {
    padding: 14px 16px;
    border-bottom: none;
  }

  .sig-type-card.selected {
    border-left: 3px solid rgba(255,179,0,0.58);
    background: rgba(255,179,0,0.06);
  }

  .sig-diff-dot,
  .sig-start-btn,
  .sig-submit-btn,
  .sig-result-btn,
  .sig-help-close,
  .sig-tool-btn {
    border-radius: 999px;
  }

  .sig-start-btn,
  .sig-submit-btn,
  .sig-result-btn,
  .sig-help-close {
    background: rgba(255,179,0,0.08);
    border-color: rgba(255,179,0,0.22);
    box-shadow: 0 12px 24px rgba(0,0,0,0.16);
  }

  .sig-workbench {
    min-height: 100%;
    background: linear-gradient(180deg, rgba(16,14,12,0.95) 0%, rgba(8,8,8,0.99) 100%);
  }

  .sig-wb-header,
  .sig-wb-toolbar,
  .sig-wb-footer {
    padding: 12px 14px;
    border-color: rgba(255,179,0,0.08);
    background: rgba(10,10,10,0.88);
  }

  .sig-wb-back {
    color: rgba(176,160,128,0.72);
  }

  .sig-font-btn,
  .sig-wb-help,
  .sig-wb-hint {
    min-height: 32px;
    border: 1px solid rgba(255,179,0,0.12) !important;
    border-radius: 999px !important;
    background: linear-gradient(180deg, rgba(18,16,13,0.94) 0%, rgba(9,9,9,0.98) 100%) !important;
    color: rgba(208,220,232,0.76) !important;
  }

  .sig-wb-encrypted,
  .sig-hint-text,
  .sig-caesar-instructions,
  .sig-caesar-interactive,
  .sig-hex-bytes,
  .sig-morse-groups,
  .sig-notepad-textarea,
  .sig-result-plain-text,
  .sig-help-panel,
  .sig-wb-workspace {
    border-color: rgba(255,179,0,0.08);
  }

  .sig-wb-encrypted {
    background: rgba(0,0,0,0.26);
  }

  .sig-wb-workspace {
    padding: 14px;
  }

  .sig-result {
    padding: 26px 18px;
  }

  .sig-result-header {
    letter-spacing: 3px;
  }

  .svg-container {
    padding: 14px;
    gap: 14px;
    width: min(100%, 1040px);
    margin: 0 auto;
  }

  .svg-header,
  .svg-briefing,
  .svg-results,
  .svg-rules,
  .ws-affinity-preview {
    border: 1px solid rgba(255,179,0,0.08);
    border-radius: 18px;
    background: linear-gradient(180deg, rgba(16,14,12,0.95) 0%, rgba(8,8,8,0.98) 100%);
    box-shadow:
      inset 0 1px 0 rgba(255,255,255,0.02),
      0 18px 34px rgba(0,0,0,0.18);
  }

  .svg-header {
    padding: 16px 18px;
  }

  .svg-title {
    font-size: 14px;
    letter-spacing: 3.2px;
    text-transform: uppercase;
  }

  .svg-subtitle {
    margin-top: 6px;
    font-size: 10px;
    color: rgba(176,160,128,0.82);
    letter-spacing: 0.8px;
  }

  .svg-briefing {
    padding: 16px 10px;
  }

  .svg-stat-label {
    font-size: 8px;
    letter-spacing: 2px;
  }

  .svg-stat-value {
    font-family: 'Orbitron', monospace;
    font-size: 16px;
    letter-spacing: 1.6px;
  }

  .svg-rules {
    gap: 8px;
    padding: 14px 16px;
  }

  .svg-rule {
    font-size: 10px;
    line-height: 1.6;
  }

  .svg-btn {
    min-height: 40px;
    padding: 10px 16px;
    border-radius: 999px;
    border-color: rgba(255,179,0,0.18);
    background: linear-gradient(180deg, rgba(18,16,13,0.94) 0%, rgba(9,9,9,0.98) 100%);
    color: rgba(208,220,232,0.76);
    box-shadow:
      inset 0 1px 0 rgba(255,255,255,0.03),
      0 12px 22px rgba(0,0,0,0.16);
  }

  .svg-btn-primary {
    background: rgba(255,179,0,0.08);
    color: rgba(255,214,102,0.92);
  }

  .svg-btn-extract {
    background: rgba(0,255,136,0.06);
    border-color: rgba(0,255,136,0.18);
  }

  .svg-results {
    padding: 16px;
  }

  .svg-results-title {
    font-size: 12px;
    letter-spacing: 2.6px;
  }

  .ws-gauge {
    border-color: rgba(255,179,0,0.14);
    background: rgba(255,255,255,0.03);
    border-radius: 16px;
  }

  @media (max-width: 720px) {
    .sig-mode-tabs {
      flex-direction: column;
    }

    .sig-signal-grid {
      grid-template-columns: 1fr;
    }

    .sig-type-card {
      flex-wrap: wrap;
    }

    .svg-briefing {
      flex-wrap: wrap;
      gap: 12px;
    }
  }
