.link-channels-overlay { position: fixed; inset: 0; z-index: 1000; display: flex; align-items: center; justify-content: center; padding: var(--space-5); background: rgba(0, 0, 0, 0.5); animation: link-channels-fade-in var(--dur-base) var(--ease-standard); } @keyframes link-channels-fade-in { from { opacity: 0; } to { opacity: 1; } } .link-channels-modal { width: 100%; max-width: 480px; max-height: 90vh; overflow-y: auto; animation: link-channels-scale-in var(--dur-base) var(--ease-standard); } @keyframes link-channels-scale-in { from { opacity: 0; transform: scale(0.96); } to { opacity: 1; transform: scale(1); } } .link-channels-modal__header { margin-bottom: var(--space-4); } .link-channels-modal__header h2 { margin: 0; font-size: var(--font-md); font-weight: var(--font-weight-semibold); color: var(--text-primary); } .link-channels-modal__header p { margin: var(--space-1) 0 0; font-size: var(--font-sm); line-height: 1.4; color: var(--text-muted); } /* Mode toggle */ .link-channels-modal__mode-toggle { display: inline-flex; padding: var(--space-1); margin-bottom: var(--space-5); background: var(--bg-panel); border: var(--border-width) solid var(--border-hairline); border-radius: var(--radius-sm); } .link-channels-modal__mode-btn { padding: var(--space-2) var(--space-4); background: transparent; color: var(--text-muted); border: none; border-radius: var(--radius-sm); font-family: var(--font-ui); font-size: var(--font-sm); font-weight: var(--font-weight-semibold); cursor: pointer; transition: background var(--dur-base) var(--ease-standard), color var(--dur-base) var(--ease-standard); } .link-channels-modal__mode-btn.is-active { background: var(--accent-brand); color: var(--bg-panel); } /* Triangular link matrix */ .link-matrix { display: grid; gap: var(--space-1); margin-bottom: var(--space-5); } .link-matrix__corner { width: var(--space-6); } .link-matrix__col-label, .link-matrix__row-label { display: flex; align-items: center; justify-content: center; font-family: var(--font-mono); font-size: var(--font-sm); color: var(--text-muted); } .link-matrix__row-label { justify-content: flex-start; padding-right: var(--space-2); } .link-matrix__row { display: contents; } .link-matrix__cell { aspect-ratio: 1 / 1; min-width: 32px; border-radius: var(--radius-sm); } .link-matrix__cell--empty { background: transparent; } .link-matrix__cell--toggle { display: flex; align-items: center; justify-content: center; padding: 0; background: var(--bg-panel); border: var(--border-width) solid var(--border-hairline); cursor: pointer; transition: background var(--dur-base) var(--ease-standard), border-color var(--dur-base) var(--ease-standard); } .link-matrix__cell--toggle:hover { border-color: var(--accent-brand); } .link-matrix__cell--toggle.is-active { background: var(--accent-brand); border-color: var(--accent-brand); cursor: default; } .link-matrix__cell--toggle:disabled:hover { border-color: var(--accent-brand); } /* A row whose channel is itself following another channel can't also lead others - its other tiles are locked rather than just inactive. */ .link-matrix__cell--unavailable { background: repeating-linear-gradient( 45deg, var(--border-hairline), var(--border-hairline) 2px, transparent 2px, transparent 6px ); border-color: var(--border-hairline); cursor: not-allowed; } .link-matrix__cell--unavailable:hover { border-color: var(--border-hairline); } /* Footer actions */ .link-channels-modal__actions { display: flex; justify-content: flex-end; gap: var(--space-3); } @media (max-width: 600px) { .link-matrix__cell { min-width: 26px; } }