.page { min-height: 100vh; padding: 0 28px 48px; background: #0b0c10; color: var(--foreground); font-family: var(--font-family-base); } .topbar, .intro, .notice, .noticeError, .workspace, .queuePanel { width: min(1220px, 100%); margin-inline: auto; } .topbar { min-height: 82px; display: grid; grid-template-columns: 1fr auto 1fr; align-items: center; gap: 20px; border-bottom: 1px solid #252932; } .backLink { display: inline-flex; align-items: center; gap: 7px; width: fit-content; color: #9aa4b1; text-decoration: none; font-size: .78rem; } .backLink:hover { color: #fff; } .brandLogo { display: block; width: 250px; max-height: 62px; object-fit: contain; } .topStatus { justify-self: end; color: #6e7885; font: .68rem/1 var(--font-family-monospace); } .intro { display: flex; justify-content: space-between; align-items: end; gap: 28px; padding: 28px 0 22px; } .kicker, .original span { display: block; color: #667688; font: 500 .62rem/1.2 var(--font-family-monospace); letter-spacing: .12em; } .intro h1 { margin: 7px 0 7px; font: 600 clamp(2rem, 4vw, 3rem)/1 var(--font-family-display); letter-spacing: -.035em; } .intro p { max-width: 680px; margin: 0; color: #88929e; font-size: .86rem; line-height: 1.6; } .summary { display: flex; gap: 28px; flex: 0 0 auto; } .summary strong, .summary span { display: block; } .summary strong { font: 600 1.1rem/1 var(--font-family-display); } .summary span { margin-top: 4px; color: #66717d; font-size: .65rem; } .notice, .noticeError { margin-top: 6px; padding: 9px 11px; border: 1px solid #2f3a42; background: #121a1d; color: #9bcdd2; font-size: .75rem; } .noticeError { color: #f1a6bc; background: #1c1218; border-color: #49303a; } .workspace { display: grid; grid-template-columns: minmax(0, 1fr) 300px; gap: 18px; margin-top: 18px; } .sourcePanel, .settingsPanel, .queuePanel { background: #111319; border: 1px solid #2a2f39; } .sourcePanel, .settingsPanel { padding: 18px; } .panelHeading, .settingsHeading { display: flex; align-items: center; gap: 10px; } .panelHeading { margin-bottom: 14px; } .panelHeading > svg, .settingsHeading > svg { color: var(--primary); } .panelHeading strong, .panelHeading span { display: block; } .panelHeading strong, .settingsHeading strong { font-size: .86rem; } .panelHeading span { margin-top: 3px; color: #737d89; font-size: .7rem; } .actionRow { display: flex; gap: 8px; margin-top: 14px; flex-wrap: wrap; } .settingsHeading { margin-bottom: 16px; } .fieldLabel { display: block; margin-bottom: 6px; color: #8b95a1; font-size: .7rem; } .settingsPanel > p { margin: 7px 0 16px; color: #626d79; font: .63rem/1.5 var(--font-family-monospace); } .settingLine { display: flex; align-items: center; gap: 8px; min-height: 34px; border-top: 1px solid #252932; color: #86909b; font-size: .7rem; } .settingLine svg { color: #6ecfd9; } .queuePanel { margin-top: 18px; } .queueHeader { min-height: 66px; display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 0 16px; background: #15181f; border-bottom: 1px solid #2a2f39; } .queueHeader strong { display: block; margin-top: 4px; font-size: .9rem; } .emptyState { min-height: 230px; display: grid; place-items: center; align-content: center; gap: 7px; color: #68727e; text-align: center; } .emptyState strong { color: #d8dde3; font-size: .86rem; } .emptyState span { font-size: .72rem; } .trackList { width: 100%; } .trackCard { display: grid; grid-template-columns: 34px 42px minmax(220px, .85fr) minmax(420px, 1.7fr); gap: 12px; align-items: center; min-height: 88px; padding: 11px 14px; background: #111319; border-bottom: 1px solid #242831; } .trackCard:last-child { border-bottom: 0; } .trackCard:hover { background: #15181f; } .selectCell { display: grid; place-items: center; } .trackIndex { color: #5e6874; font: .68rem/1 var(--font-family-monospace); } .original { min-width: 0; } .original strong, .original small { display: block; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .original strong { margin-top: 4px; font-size: .8rem; } .original small { margin-top: 3px; color: #66717d; font-size: .66rem; } .result { min-width: 0; display: grid; grid-template-columns: 48px minmax(0, 1fr) 110px; align-items: center; gap: 10px; } .artwork, .artworkFallback { width: 48px; height: 48px; border: 1px solid #303641; background: #1a1e26; } .artwork { object-fit: cover; } .artworkFallback { display: grid; place-items: center; color: #70808f; } .editFields { min-width: 0; } .editFields > :global(input) { height: 30px; font-size: .72rem; } .twoFields { display: grid; grid-template-columns: 1fr 1fr; gap: 6px; margin-top: 5px; } .advancedFields { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 6px; margin-top: 5px; } .lyricsField { min-height: 58px; margin-top: 5px; font-size: .7rem; } .editFields small { display: block; margin-top: 5px; color: #6b7580; font-size: .62rem; } .matchState, .savedState { display: flex; align-items: center; gap: 5px; justify-content: flex-end; min-width: 0; color: #7bdce5; font-size: .67rem; } .savedState { color: var(--success); } .savedState span, .matchState span { overflow: hidden; white-space: nowrap; text-overflow: ellipsis; } .waiting, .errorState { grid-column: 1 / -1; display: flex; align-items: center; gap: 8px; color: #7b8590; font-size: .72rem; } .errorState { color: #ef9ab3; } .manualState { grid-column: 1 / -1; display: flex; align-items: center; justify-content: space-between; gap: 12px; } .manualState .waiting, .manualState .errorState { grid-column: auto; } @media (max-width: 980px) { .workspace { grid-template-columns: 1fr; } .trackCard { grid-template-columns: 30px 34px 1fr; } .result { grid-column: 3; margin-top: 8px; } } @media (max-width: 900px) { .page { padding: 0 10px 84px; } .topbar { position: sticky; top: 0; z-index: 20; min-height: 58px; grid-template-columns: auto 1fr; background: rgba(11,12,16,.97); } .brandLogo { width: 132px; justify-self: end; } .backLink { font-size: 0; } .backLink svg { width: 20px; height: 20px; } .topStatus { display: none; } .intro { flex-direction: column; align-items: flex-start; gap: 12px; padding: 18px 2px 14px; } .intro h1 { font-size: 1.75rem; } .intro p { font-size: .75rem; line-height: 1.5; } .summary { width: 100%; display: grid; grid-template-columns: repeat(2, 1fr); gap: 0; border: 1px solid #282d35; } .summary > div { padding: 10px 12px; } .summary > div + div { border-left: 1px solid #282d35; } .workspace { gap: 10px; margin-top: 10px; } .sourcePanel, .settingsPanel { padding: 12px; } .settingsPanel { background: #0f1116; } .queueHeader { align-items: flex-start; flex-direction: column; gap: 9px; padding-block: 12px; } .queueHeader button { width: 100%; } .queuePanel { margin-top: 10px; border-left: 0; border-right: 0; } .trackCard { grid-template-columns: 28px 1fr; gap: 8px; padding: 10px 8px; } .trackIndex { display: none; } .original, .result { grid-column: 2; } .result { grid-template-columns: 42px minmax(0, 1fr); } .matchState, .savedState { grid-column: 2; justify-content: flex-start; } .twoFields { grid-template-columns: 1fr; } .advancedFields { grid-template-columns: 1fr 1fr; } .artwork, .artworkFallback { width: 40px; height: 40px; } .result { grid-template-columns: 40px minmax(0, 1fr); gap: 8px; } }