Files
micarrsim/apps/acoustic-camera/styles.css
T

536 lines
22 KiB
CSS
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
.camera-shell { min-width: 320px; }
.camera-header {
position: sticky;
z-index: 50;
top: 0;
display: grid;
grid-template-columns: auto minmax(0, 1fr) auto;
min-height: 54px;
padding: 8px clamp(14px, 2vw, 26px);
gap: 14px;
}
.header-status,
.header-actions,
.live-actions,
.overlay-toolbar,
.history-actions {
display: flex;
min-width: 0;
flex-wrap: wrap;
align-items: center;
gap: 8px;
}
.header-status { justify-content: flex-end; }
.header-actions { justify-content: flex-end; }
.run-status {
overflow: hidden;
max-width: min(42vw, 520px);
color: var(--muted);
font-size: .7rem;
text-overflow: ellipsis;
white-space: nowrap;
}
.camera-header .status-chip { min-height: 28px; padding: 4px 9px; font-size: .68rem; }
.button {
display: inline-flex;
min-height: 34px;
align-items: center;
justify-content: center;
padding: 7px 11px;
border: 1px solid var(--line);
border-radius: 9px;
color: var(--text);
background: var(--surface-raised);
cursor: pointer;
font-size: .74rem;
font-weight: 720;
transition: border-color 140ms ease, background 140ms ease, transform 140ms ease;
}
.button:hover,
.button:focus-visible,
.mini-button:hover,
.mini-button:focus-visible,
.file-choice:hover,
.file-choice:focus-within { border-color: var(--mint); outline: none; }
.button:hover:not(:disabled), .mini-button:hover:not(:disabled) { transform: translateY(-1px); }
.button:disabled { cursor: not-allowed; opacity: .45; transform: none; }
.button--primary { border-color: rgb(101 242 191 / 52%); color: #06130f; background: var(--mint); }
.button--ghost { background: rgb(255 255 255 / 3%); }
.button--full { width: 100%; }
.workflow-strip {
position: sticky;
z-index: 40;
top: 54px;
display: grid;
grid-template-columns: repeat(4, minmax(0, 1fr));
padding: 0 clamp(14px, 2vw, 26px);
border-bottom: 1px solid var(--line);
background: rgb(8 17 15 / 94%);
backdrop-filter: blur(18px);
}
.workflow-strip a {
display: grid;
grid-template-columns: 24px auto;
grid-template-rows: auto auto;
min-width: 0;
padding: 9px 12px;
border-right: 1px solid rgb(145 170 162 / 10%);
color: var(--text);
text-decoration: none;
}
.workflow-strip a:first-child { border-left: 1px solid rgb(145 170 162 / 10%); }
.workflow-strip a:hover, .workflow-strip a:focus-visible { background: rgb(101 242 191 / 5%); outline: none; }
.workflow-strip a > span {
grid-row: 1 / 3;
align-self: center;
width: 20px;
height: 20px;
border: 1px solid rgb(101 242 191 / 35%);
border-radius: 50%;
color: var(--mint);
font: 750 .62rem/18px ui-monospace, SFMono-Regular, Consolas, monospace;
text-align: center;
}
.workflow-strip strong { overflow: hidden; font-size: .72rem; text-overflow: ellipsis; white-space: nowrap; }
.workflow-strip small { overflow: hidden; color: var(--muted); font-size: .58rem; text-overflow: ellipsis; white-space: nowrap; }
.camera-layout {
--control-panel-width: 420px;
display: grid;
grid-template-columns: var(--control-panel-width) 12px minmax(0, 1fr);
width: min(1880px, 100%);
min-height: calc(100vh - 103px);
margin: 0 auto;
}
.control-panel {
position: sticky;
top: 103px;
min-width: 0;
align-self: start;
overflow-y: auto;
max-height: calc(100vh - 103px);
padding: 12px;
border-right: 1px solid var(--line);
background: rgb(12 24 21 / 88%);
backdrop-filter: blur(18px);
container-name: camera-controls;
container-type: inline-size;
scrollbar-width: thin;
}
.camera-layout > .split-handle {
position: sticky;
top: 103px;
height: calc(100vh - 103px);
align-self: start;
}
.control-panel .workflow-card {
margin: 0;
padding: 14px;
border: 1px solid var(--line);
border-radius: 14px;
background: rgb(255 255 255 / 2%);
}
.control-panel .workflow-card + .workflow-card,
.control-panel .workflow-card + .validation-card { margin-top: 10px; }
.step-heading { display: flex; align-items: flex-start; gap: 10px; }
.step-heading--horizontal { align-items: center; }
.step-number {
display: inline-grid;
width: 24px;
height: 24px;
flex: 0 0 auto;
place-items: center;
border-radius: 7px;
color: #06130f;
background: var(--mint);
font: 800 .67rem ui-monospace, SFMono-Regular, Consolas, monospace;
}
.step-heading h2 { margin: 0; font-size: .9rem; letter-spacing: -.02em; }
.step-heading p { margin: 3px 0 0; color: var(--muted); font-size: .65rem; line-height: 1.45; }
.workspace-tools { display: grid; }
.input-file-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 7px; margin-top: 12px; }
.file-choice {
position: relative;
display: grid;
grid-template-columns: 19px minmax(0, 1fr);
align-items: center;
min-height: 48px;
padding: 7px 8px;
border: 1px solid var(--line);
border-radius: 10px;
background: #0b1714;
cursor: pointer;
}
.file-choice input { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); clip-path: inset(50%); }
.file-sequence { color: var(--mint); font: 700 .58rem ui-monospace, SFMono-Regular, Consolas, monospace; }
.file-choice > span:last-of-type { min-width: 0; }
.file-choice strong, .file-choice small { display: block; min-width: 0; overflow-wrap: anywhere; }
.file-choice strong { font-size: .68rem; }
.file-choice small { margin-top: 2px; color: var(--muted); font-size: .56rem; }
.input-summary, .array-card, .band-config { margin-top: 12px; padding-top: 11px; border-top: 1px solid rgb(145 170 162 / 13%); }
.compact-section-heading, .array-heading, .inspect-heading, .mode-heading {
display: flex;
align-items: center;
justify-content: space-between;
gap: 12px;
}
.compact-section-heading h3, .array-heading h3 { margin: 0; font-size: .75rem; }
.compact-section-heading > span { color: var(--muted); font-size: .61rem; }
.example-actions { display: flex; align-items: center; gap: 8px; }
.compact-label, .mode-kicker { color: var(--mint); font: 750 .56rem ui-monospace, SFMono-Regular, Consolas, monospace; letter-spacing: .1em; }
.builder-link { color: var(--cyan); font-size: .6rem; text-decoration: none; }
.source-summary, .asset-list { display: grid; gap: 6px; margin-top: 8px; }
.source-line { display: grid; grid-template-columns: minmax(0, .85fr) minmax(0, 1.15fr); gap: 8px; color: var(--muted); font-size: .63rem; }
.source-line strong, .source-line span { min-width: 0; overflow-wrap: anywhere; }
.source-line strong { color: var(--text); }
.source-line span { text-align: right; }
.asset-status {
display: grid;
grid-template-columns: minmax(0, 1fr) auto;
align-items: center;
justify-content: space-between;
gap: 8px;
padding: 7px 8px;
border: 1px solid var(--line);
border-radius: 8px;
color: var(--muted);
font-size: .61rem;
}
.asset-status strong { min-width: 0; color: var(--text); overflow-wrap: anywhere; }
.asset-status.is-ready span { color: var(--mint); }
.asset-status.is-error span { color: var(--danger); }
.asset-empty { color: var(--muted); font-size: .62rem; }
.array-heading > strong { color: var(--mint); font: 750 .68rem ui-monospace, SFMono-Regular, Consolas, monospace; }
.field { display: grid; min-width: 0; gap: 5px; }
.field > span { color: var(--muted); font-size: .61rem; font-weight: 650; }
.field input, .field select, .band-editor input, .compact-select select {
width: 100%;
min-width: 0;
min-height: 34px;
padding: 7px 8px;
border: 1px solid var(--line);
border-radius: 8px;
color: var(--text);
background: #0b1714;
font-size: .68rem;
}
.field input:focus, .field select:focus, .band-editor input:focus, .compact-select select:focus {
border-color: var(--mint);
outline: 2px solid rgb(101 242 191 / 10%);
}
.array-card > .field { margin-top: 9px; }
.quick-field-grid, .advanced-field-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
.quick-field-grid { margin-top: 12px; }
.algorithm-options {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 8px;
margin-top: 8px;
padding: 10px;
border: 1px solid var(--line);
border-radius: 10px;
background: rgba(101, 242, 191, .04);
}
.algorithm-options[hidden] { display: none; }
.algorithm-options p {
grid-column: 1 / -1;
margin: 0;
color: var(--muted);
font-size: .78rem;
line-height: 1.45;
}
.field--wide { grid-column: 1 / -1; }
.workload-summary {
margin: 9px 0 0;
padding: 8px;
border-radius: 8px;
color: var(--muted);
background: #0b1714;
font: 600 .6rem/1.45 ui-monospace, SFMono-Regular, Consolas, monospace;
}
.workload-summary.is-warning { color: var(--amber); }
.sampling-warning {
margin: 8px 0 0;
padding: 9px 10px;
border: 1px solid rgb(255 197 110 / 28%);
border-radius: 8px;
color: var(--amber);
background: rgb(255 197 110 / 7%);
font-size: .64rem;
line-height: 1.55;
}
.acoustic-environment-summary {
margin: 8px 0 0;
color: var(--muted);
font-size: .6rem;
line-height: 1.5;
}
.mini-button, .text-button {
padding: 5px 7px;
border: 1px solid transparent;
border-radius: 7px;
color: var(--muted);
background: transparent;
cursor: pointer;
font-size: .62rem;
}
.mini-button { border-color: var(--line); }
.band-editor-list { display: grid; gap: 7px; margin-top: 8px; }
.band-editor {
display: grid;
grid-template-columns: minmax(72px, 1fr) repeat(2, minmax(58px, .72fr)) 38px 30px;
gap: 5px;
padding: 7px;
border: 1px solid var(--line);
border-radius: 9px;
background: #0b1714;
}
.band-editor input { min-width: 0; }
.band-editor input[type="color"] { padding: 3px; }
.band-editor__remove { border: 0; border-radius: 7px; color: var(--danger); background: rgb(255 123 115 / 8%); cursor: pointer; }
details > summary { list-style: none; }
details > summary::-webkit-details-marker { display: none; }
.inline-details, .advanced-settings, .utility-details, .mode-help {
margin-top: 10px;
border: 1px solid var(--line);
border-radius: 9px;
background: rgb(255 255 255 / 1.5%);
}
.inline-details > summary, .advanced-settings > summary, .utility-details > summary, .mode-help > summary {
position: relative;
padding: 9px 30px 9px 10px;
color: var(--muted);
cursor: pointer;
font-size: .64rem;
font-weight: 680;
}
.inline-details > summary::after, .advanced-settings > summary::after, .utility-details > summary::after, .mode-help > summary::after {
position: absolute;
top: 50%;
right: 10px;
color: var(--mint);
content: "+";
transform: translateY(-50%);
}
details[open] > summary::after { content: "−"; }
.advanced-settings > summary { display: flex; justify-content: space-between; gap: 10px; }
.advanced-settings > summary small, .utility-details > summary small { color: var(--muted); font-size: .57rem; font-weight: 500; }
.advanced-settings__body { display: grid; gap: 14px; padding: 11px; border-top: 1px solid var(--line); }
.advanced-group h3 { margin: 0 0 8px; color: #cfe2db; font-size: .66rem; }
#array-canvas { display: block; width: 100%; height: 180px; border-top: 1px solid var(--line); background: #07110f; }
#array-meta { margin: 0; padding: 8px; color: var(--muted); font: 600 .58rem/1.4 ui-monospace, SFMono-Regular, Consolas, monospace; }
.output-card { padding: 0; }
.output-actions { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 7px; padding: 10px 10px 0; border-top: 1px solid var(--line); }
.output-save-state { margin: 7px 0 0; padding: 0 10px 10px; color: var(--muted); font-size: .6rem; text-align: center; }
.output-save-state.is-dirty { color: var(--amber); }
.validation-card {
display: flex;
align-items: flex-start;
gap: 10px;
margin-top: 10px;
padding: 11px 12px;
border: 1px solid var(--line);
border-radius: 12px;
background: #0b1714;
}
.validation-card > :last-child { min-width: 0; }
.validation-dot { width: 9px; height: 9px; flex: 0 0 auto; margin-top: 3px; border-radius: 50%; background: var(--muted); box-shadow: 0 0 0 4px rgb(145 170 162 / 8%); }
.validation-card strong { font-size: .7rem; overflow-wrap: anywhere; }
.validation-card p { margin: 3px 0 0; color: var(--muted); font-size: .62rem; line-height: 1.45; overflow-wrap: anywhere; }
.validation-card.is-valid .validation-dot { background: var(--mint); box-shadow: 0 0 0 4px rgb(101 242 191 / 10%); }
.validation-card.is-invalid .validation-dot { background: var(--danger); box-shadow: 0 0 0 4px rgb(255 123 115 / 10%); }
.validation-card.is-warning .validation-dot { background: var(--amber); box-shadow: 0 0 0 4px rgb(255 197 110 / 10%); }
.scene-workspace { min-width: 0; padding: 16px clamp(16px, 2vw, 28px) 36px; }
.workspace-heading { display: flex; align-items: end; justify-content: space-between; gap: 16px; margin-bottom: 12px; }
.workspace-heading h1 { margin: 2px 0 0; font-size: clamp(1.25rem, 2vw, 1.65rem); letter-spacing: -.035em; }
.workspace-meta { max-width: 64%; margin: 0; color: var(--muted); font-size: .68rem; line-height: 1.45; text-align: right; }
.run-stage { padding: 13px; border: 1px solid var(--line); border-radius: 14px; background: rgb(255 255 255 / 2%); }
.mode-grid { display: grid; grid-template-columns: minmax(210px, .72fr) minmax(430px, 1.28fr); gap: 9px; margin-top: 11px; }
.mode-card { min-width: 0; padding: 12px; border: 1px solid var(--line); border-radius: 12px; background: #0b1714; }
.mode-card--snapshot { display: flex; flex-direction: column; border-color: rgb(101 242 191 / 22%); }
.mode-card--moving { border-color: rgb(88 199 232 / 24%); }
.mode-heading { align-items: flex-start; }
.mode-heading h3 { margin: 2px 0 0; font-size: .88rem; }
.mode-card > p { margin: 7px 0 10px; color: var(--muted); font-size: .64rem; line-height: 1.45; }
.mode-format { padding: 4px 7px; border-radius: 999px; color: var(--muted); background: rgb(255 255 255 / 4%); font-size: .57rem; }
.mode-actions { margin-top: auto; }
.mode-card--snapshot .mode-actions { padding-top: 8px; }
.live-actions { justify-content: flex-start; }
.live-controls { display: grid; grid-template-columns: minmax(150px, 1fr) 74px 64px; align-items: end; gap: 8px; margin-top: 9px; }
.live-scrubber, .compact-select { display: grid; gap: 5px; color: var(--muted); font-size: .59rem; font-weight: 650; }
.live-scrubber input { width: 100%; accent-color: var(--cyan); }
.mode-help { margin-top: 8px; border-color: rgb(88 199 232 / 15%); }
.mode-help > summary { padding-top: 7px; padding-bottom: 7px; font-size: .58rem; }
.live-note { margin: 0; padding: 0 9px 9px; color: var(--muted); font-size: .59rem; line-height: 1.5; }
.live-panel.is-ready { border-color: rgb(101 242 191 / 48%); }
.live-panel.is-playing { border-color: var(--cyan); box-shadow: inset 3px 0 0 var(--cyan); }
html[data-run-state="running"] #snapshot-mode { border-color: var(--mint); box-shadow: inset 3px 0 0 var(--mint); }
.inspect-stage { margin-top: 14px; }
.inspect-heading { align-items: center; margin-bottom: 10px; }
.result-chip { max-width: 46%; overflow: hidden; padding: 5px 8px; border: 1px solid var(--line); border-radius: 999px; color: var(--muted); font-size: .62rem; text-overflow: ellipsis; white-space: nowrap; }
.scene-canvas-card { position: relative; overflow: hidden; min-height: 500px; border: 1px solid var(--line); border-radius: 16px; background: #07110f; box-shadow: var(--shadow); }
#scene-canvas { display: block; width: 100%; height: clamp(500px, 66vh, 820px); }
.canvas-message { position: absolute; top: 26px; left: 50%; display: grid; width: min(390px, calc(100% - 40px)); gap: 5px; color: var(--muted); text-align: center; pointer-events: none; transform: translateX(-50%); }
.canvas-message strong { color: #cfe2db; font-size: .8rem; }
.canvas-message span { font-size: .65rem; }
.canvas-message.is-hidden { display: none; }
.canvas-badge { position: absolute; right: 12px; bottom: 12px; max-width: calc(100% - 24px); overflow: hidden; padding: 6px 9px; border: 1px solid rgb(255 255 255 / 10%); border-radius: 999px; color: #d7e8e2; background: rgb(8 17 15 / 82%); backdrop-filter: blur(10px); font: 650 .64rem ui-monospace, SFMono-Regular, Consolas, monospace; text-overflow: ellipsis; white-space: nowrap; pointer-events: none; }
.overlay-toolbar { justify-content: flex-end; margin-top: 8px; padding: 9px 10px; border: 1px solid var(--line); border-radius: 11px; background: rgb(255 255 255 / 2%); }
.band-legend { display: flex; flex: 1 1 300px; flex-wrap: wrap; gap: 6px; }
.legend-toggle { display: inline-flex; align-items: center; gap: 6px; padding: 5px 8px; border: 1px solid var(--line); border-radius: 999px; color: var(--muted); background: #0b1714; cursor: pointer; font-size: .62rem; }
.legend-toggle input { accent-color: var(--band-color, var(--mint)); }
.legend-swatch { width: 8px; height: 8px; border-radius: 50%; background: var(--band-color, var(--mint)); }
.range-field, .check-field { display: flex; align-items: center; gap: 6px; color: var(--muted); font-size: .63rem; font-weight: 650; }
.range-field input { width: 92px; accent-color: var(--mint); }
.check-field input { width: 15px; height: 15px; accent-color: var(--mint); }
.result-section { margin-top: 10px; padding: 13px; border: 1px solid var(--line); border-radius: 13px; background: rgb(255 255 255 / 2%); }
.empty-result { margin-top: 9px; padding: 12px; border: 1px dashed var(--line); border-radius: 9px; color: var(--muted); font-size: .68rem; line-height: 1.5; text-align: center; }
.metric-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(125px, 1fr)); gap: 8px; margin-top: 9px; }
.metric-card { min-width: 0; padding: 11px; border: 1px solid var(--line); border-radius: 10px; background: #0b1714; }
.metric-card span { display: block; margin-bottom: 5px; color: var(--muted); font-size: .6rem; }
.metric-card strong { display: block; min-width: 0; font-size: 1rem; letter-spacing: -.03em; overflow-wrap: anywhere; }
.metric-card small { display: block; margin-top: 4px; color: var(--muted); font-size: .57rem; }
.history-section, .help-panel { margin-top: 9px; border-radius: 11px; }
.history-section > summary, .help-panel > summary { display: flex; justify-content: space-between; gap: 12px; padding: 10px 34px 10px 11px; }
.history-body { padding: 0 11px 11px; border-top: 1px solid var(--line); }
.history-actions { justify-content: flex-end; padding-top: 8px; }
.section-copy { margin: 5px 0 0; color: var(--muted); font-size: .62rem; line-height: 1.45; }
.history-list { display: grid; gap: 7px; margin-top: 9px; }
.history-empty { padding: 10px; color: var(--muted); font-size: .65rem; text-align: center; }
.history-card { display: grid; grid-template-columns: minmax(140px, 1.5fr) repeat(4, minmax(72px, .72fr)); gap: 8px; align-items: center; padding: 10px; border: 1px solid var(--line); border-radius: 9px; background: #0b1714; }
.history-card strong, .history-card span { min-width: 0; overflow-wrap: anywhere; }
.history-card strong { font-size: .69rem; }
.history-card span { color: var(--muted); font-size: .6rem; }
.help-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; padding: 10px; border-top: 1px solid var(--line); }
.help-grid p { margin: 0; padding: 9px; border-radius: 8px; color: var(--muted); background: #0b1714; font-size: .61rem; line-height: 1.45; }
.help-grid strong { display: block; margin-bottom: 3px; color: var(--text); font-size: .63rem; }
.is-hidden { display: none !important; }
@media (max-width: 1240px) {
.mode-grid { grid-template-columns: 1fr; }
.mode-card--snapshot { display: grid; grid-template-columns: 1fr auto; gap: 0 12px; }
.mode-card--snapshot > p { grid-column: 1; }
.mode-card--snapshot .mode-actions { grid-column: 2; grid-row: 1 / 3; align-self: center; min-width: 160px; padding: 0; }
}
@media (max-width: 980px) {
.camera-layout { grid-template-columns: minmax(0, 1fr); }
.camera-layout > .split-handle { display: none; }
.control-panel, .scene-workspace { width: 100%; min-width: 0; }
.control-panel { position: static; overflow: visible; max-height: none; border-right: 0; border-bottom: 1px solid var(--line); }
.scene-workspace { padding-top: 14px; }
.control-panel .workflow-card { max-width: none; }
.input-card { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 14px; }
.input-card > .step-heading, .input-card > .input-file-grid { grid-column: 1 / -1; }
.input-summary, .array-card { margin-top: 12px; }
}
@media (max-width: 700px) {
.camera-header { grid-template-columns: 1fr auto; }
.header-status { grid-column: 1 / -1; grid-row: 2; justify-content: flex-start; }
.run-status { max-width: calc(100vw - 150px); }
.workflow-strip { top: 92px; padding: 0; }
.workflow-strip a { min-width: 0; padding: 8px; }
.workflow-strip small { display: none; }
.camera-layout { min-height: calc(100vh - 137px); }
.input-card { display: block; }
.workspace-heading, .inspect-heading { align-items: flex-start; flex-direction: column; }
.workspace-meta { max-width: none; text-align: left; }
.result-chip { max-width: 100%; }
.mode-card--snapshot { display: flex; }
.live-controls { grid-template-columns: 1fr 1fr; }
.live-scrubber { grid-column: 1 / -1; }
.scene-canvas-card { min-height: 400px; }
#scene-canvas { height: 460px; }
.help-grid { grid-template-columns: 1fr; }
.history-card { grid-template-columns: 1fr 1fr; }
.history-card strong { grid-column: 1 / -1; }
}
@media (max-width: 440px) {
.camera-header .app-brand span, .camera-header .status-chip { display: none; }
.header-status { grid-column: 1 / -1; }
.run-status { max-width: 100%; }
.workflow-strip { top: 88px; }
.input-file-grid, .quick-field-grid, .algorithm-options, .advanced-field-grid, .output-actions, .band-editor, .live-controls { grid-template-columns: 1fr; }
.field--wide, .live-scrubber { grid-column: auto; }
.band-editor__remove { min-height: 32px; }
.live-actions .button { flex: 1 1 calc(50% - 4px); }
.metric-grid { grid-template-columns: 1fr 1fr; }
.overlay-toolbar { justify-content: flex-start; }
}
@container camera-controls (max-width: 350px) {
.input-file-grid,
.quick-field-grid,
.advanced-field-grid,
.output-actions {
grid-template-columns: minmax(0, 1fr);
}
.field--wide {
grid-column: auto;
}
.source-line {
grid-template-columns: minmax(0, 1fr);
}
.source-line span {
text-align: left;
}
.advanced-settings > summary {
align-items: flex-start;
flex-direction: column;
}
.band-editor {
grid-template-columns: repeat(2, minmax(0, 1fr)) 38px 32px;
grid-template-rows: repeat(2, minmax(34px, auto));
}
.band-editor input:nth-child(1) {
grid-column: 1 / 3;
grid-row: 1;
}
.band-editor input:nth-child(2) {
grid-column: 1;
grid-row: 2;
}
.band-editor input:nth-child(3) {
grid-column: 2;
grid-row: 2;
}
.band-editor input:nth-child(4) {
grid-column: 3;
grid-row: 1 / 3;
}
.band-editor__remove {
grid-column: 4;
grid-row: 1 / 3;
}
}