Files
dsp-thomann-interface/src/features/dsp408/components/MiscellaneousSection/LinkChannelsModal.css
T

212 lines
3.8 KiB
CSS

.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;
}
}