// _arrange.scss — Arrange page (.ar-* prefix) /* * MuseHub Page-Specific Styles * * Contains CSS that is unique to a single page and not reusable as a component. * Shared/duplicated patterns live in _components.scss and _music.scss. * * Sections (alphabetical by page): * activity, arrange, blame, blob, collaborators_settings, commit, commit_detail, * commits, explore, forks, global_search, groove_check, insights, issue_detail, * issue_list, labels, listen, motifs, * new_repo, piano_roll, proposal_detail, proposal_list, release_detail, releases, * repo_home, score, search, session_detail, sessions, settings, stash, * timeline, tree, trending, user_profile */ /* ========================================================================= Arrange page (.ar-* prefix) ========================================================================= */ /* ── Commit header ─────────────────────────────────────────────────────── */ .ar-commit-header { background: var(--bg-surface); border: 1px solid var(--border-default); border-radius: var(--radius-lg); padding: var(--space-4) var(--space-5); margin-bottom: var(--space-4); display: grid; grid-template-columns: 1fr auto; gap: var(--space-3); align-items: center; @media (max-width: 640px) { grid-template-columns: 1fr; } } .ar-commit-left { min-width: 0; } .ar-commit-message { font-size: var(--font-size-base); font-weight: var(--font-weight-semibold); color: var(--text-primary); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; margin-bottom: var(--space-2); } .ar-commit-meta { display: flex; align-items: center; gap: var(--space-3); flex-wrap: wrap; font-size: var(--font-size-xs); color: var(--text-muted); } .ar-branch-pill { display: inline-flex; align-items: center; gap: 4px; padding: 2px 9px; background: rgba(88,166,255,0.12); border: 1px solid rgba(88,166,255,0.3); border-radius: var(--radius-full); font-family: var(--font-mono); font-size: 0.7rem; color: var(--color-accent); } .ar-sha { font-family: var(--font-mono); font-size: 0.7rem; padding: 2px 6px; background: var(--bg-overlay); border-radius: 4px; color: var(--text-muted); } .ar-commit-nav { display: flex; align-items: center; gap: var(--space-2); flex-shrink: 0; } .ar-nav-btn { display: inline-flex; align-items: center; gap: var(--space-1); padding: 4px 10px; background: var(--bg-overlay); border: 1px solid var(--border-default); border-radius: var(--radius-base); font-size: var(--font-size-xs); color: var(--text-secondary); text-decoration: none; transition: border-color 0.12s, color 0.12s; &:hover { border-color: var(--color-accent); color: var(--color-accent); } &.ar-nav-btn--disabled { opacity: 0.4; pointer-events: none; } } /* ── Render status badge ───────────────────────────────────────────────── */ .ar-render-status { display: inline-flex; align-items: center; gap: 4px; font-size: 0.7rem; padding: 2px 8px; border-radius: var(--radius-full); font-weight: 600; &.ar-rs-complete { background: rgba(63,185,80,0.12); color: var(--color-success); border: 1px solid var(--color-success); } &.ar-rs-pending { background: rgba(240,136,62,0.12); color: var(--color-warning); border: 1px solid var(--color-warning); } &.ar-rs-rendering { background: rgba(88,166,255,0.12); color: var(--color-accent); border: 1px solid var(--color-accent); } &.ar-rs-failed { background: rgba(248,81,73,0.12); color: var(--color-danger); border: 1px solid var(--color-danger); } &.ar-rs-none { background: var(--bg-overlay); color: var(--text-muted); border: 1px solid var(--border-default); } } /* ── Stats ribbon ──────────────────────────────────────────────────────── */ .ar-stats-bar { display: flex; gap: var(--space-3); flex-wrap: wrap; margin-bottom: var(--space-4); } .ar-stat-pill { background: var(--bg-surface); border: 1px solid var(--border-default); border-radius: var(--radius-full); padding: var(--space-2) var(--space-4); font-size: var(--font-size-xs); color: var(--text-muted); white-space: nowrap; strong { color: var(--text-primary); font-family: var(--font-mono); } } /* ── Section timeline bar ──────────────────────────────────────────────── */ .ar-timeline { display: flex; height: 40px; border-radius: var(--radius-base); overflow: hidden; border: 1px solid var(--border-default); margin-bottom: var(--space-4); } .ar-timeline-seg { display: flex; flex-direction: column; align-items: center; justify-content: center; border-right: 1px solid var(--border-default); padding: 0 var(--space-2); cursor: default; transition: background 0.12s; overflow: hidden; &:last-child { border-right: none; } &:hover { background: var(--bg-overlay); } &[data-active="high"] { background: rgba(88,166,255,0.15); } &[data-active="medium"] { background: rgba(88,166,255,0.08); } &[data-active="low"] { background: rgba(88,166,255,0.03); } } .ar-timeline-label { font-size: 0.65rem; font-weight: var(--font-weight-semibold); color: var(--text-secondary); text-transform: uppercase; letter-spacing: 0.04em; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 100%; } .ar-timeline-beats { font-size: 0.6rem; color: var(--text-muted); font-family: var(--font-mono); margin-top: 1px; } /* ── Matrix section ────────────────────────────────────────────────────── */ .ar-matrix-wrap { overflow-x: auto; margin-bottom: var(--space-5); } .ar-table { border-collapse: collapse; font-size: 12px; min-width: 100%; table-layout: auto; } .ar-table th { background: var(--bg-overlay); color: var(--text-muted); font-weight: var(--font-weight-semibold); padding: 8px 12px; border: 1px solid var(--border-default); text-align: center; white-space: nowrap; font-size: var(--font-size-xs); } .ar-table th.ar-th-inst { text-align: left; min-width: 120px; } .ar-table td { border: 1px solid var(--border-subtle); padding: 2px; text-align: center; vertical-align: middle; } /* Row highlight on hover (set by JS adding .ar-row-hover to ) */ .ar-row-hover td { background-color: rgba(88, 166, 255, 0.04); } /* Column highlight (set by JS adding .ar-col-hover to th/td with data-col) */ .ar-table .ar-col-hover { background-color: rgba(88, 166, 255, 0.06); } /* ── Cells ─────────────────────────────────────────────────────────────── */ .ar-cell { width: 80px; height: 56px; display: flex; flex-direction: column; align-items: center; justify-content: center; border-radius: 4px; cursor: pointer; transition: transform 0.1s, box-shadow 0.1s; position: relative; font-size: 10px; font-weight: var(--font-weight-semibold); gap: 2px; /* density levels — background fills from the accent colour */ &[data-level="0"] { background: var(--bg-base); cursor: default; } &[data-level="1"] { background: rgba(88,166,255,0.15); color: rgba(255,255,255,0.7); } &[data-level="2"] { background: rgba(88,166,255,0.35); color: rgba(255,255,255,0.85); } &[data-level="3"] { background: rgba(88,166,255,0.60); color: #fff; } &[data-level="4"] { background: rgba(88,166,255,0.88); color: #fff; } &:not([data-level="0"]):hover { transform: scale(1.06); box-shadow: 0 0 0 2px var(--color-accent); z-index: 10; } } .ar-cell-notes { font-family: var(--font-mono); font-size: 10px; line-height: 1; opacity: 0.9; } .ar-cell-bar { width: 70%; height: 3px; border-radius: 2px; background: rgba(255,255,255,0.5); position: relative; overflow: hidden; } .ar-cell-bar-fill { height: 100%; background: rgba(255,255,255,0.9); border-radius: 2px; } .ar-cell-silent-dash { color: var(--border-default); font-size: 14px; } /* ── Summary cells ─────────────────────────────────────────────────────── */ .ar-summary-row td, .ar-summary-col td { background: var(--bg-surface); padding: 6px 10px; font-size: var(--font-size-xs); color: var(--text-muted); } .ar-density-bar { height: 4px; border-radius: 2px; background: var(--color-accent); margin-top: 3px; opacity: 0.7; } /* ── Legend ────────────────────────────────────────────────────────────── */ .ar-legend { display: flex; align-items: center; gap: var(--space-3); flex-wrap: wrap; font-size: var(--font-size-xs); color: var(--text-muted); margin-bottom: var(--space-4); } .ar-legend-label { opacity: 0.7; } .ar-legend-swatch { width: 16px; height: 16px; border-radius: 3px; display: inline-block; vertical-align: middle; &.ar-sw-0 { background: var(--bg-overlay); border: 1px solid var(--border-default); } &.ar-sw-1 { background: rgba(88,166,255,0.15); } &.ar-sw-2 { background: rgba(88,166,255,0.35); } &.ar-sw-3 { background: rgba(88,166,255,0.60); } &.ar-sw-4 { background: rgba(88,166,255,0.88); } } /* ── Bottom stats panels ───────────────────────────────────────────────── */ .ar-panels-row { display: grid; grid-template-columns: 1fr 1fr; gap: var(--space-4); margin-bottom: var(--space-4); @media (max-width: 700px) { grid-template-columns: 1fr; } } .ar-panel { background: var(--bg-surface); border: 1px solid var(--border-default); border-radius: var(--radius-lg); overflow: hidden; } .ar-panel-header { padding: var(--space-3) var(--space-4); background: var(--bg-overlay); border-bottom: 1px solid var(--border-default); font-size: var(--font-size-sm); font-weight: var(--font-weight-semibold); color: var(--text-secondary); display: flex; align-items: center; gap: var(--space-2); } .ar-panel-body { padding: var(--space-3) var(--space-4); } .ar-panel-row { display: grid; grid-template-columns: 100px 1fr 48px; align-items: center; gap: var(--space-3); margin-bottom: var(--space-2); &:last-child { margin-bottom: 0; } } .ar-panel-label { font-size: var(--font-size-xs); color: var(--text-secondary); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .ar-panel-bar-track { background: var(--bg-overlay); border-radius: var(--radius-full); height: 7px; overflow: hidden; } .ar-panel-bar-fill { height: 100%; border-radius: var(--radius-full); background: linear-gradient(90deg, rgba(88,166,255,0.5), var(--color-accent)); } .ar-panel-value { font-family: var(--font-mono); font-size: var(--font-size-xs); color: var(--text-muted); text-align: right; } /* ── Floating tooltip (positioned by JS) ──────────────────────────────── */ .ar-tooltip { position: fixed; background: var(--bg-surface); border: 1px solid var(--border-default); border-radius: 8px; padding: var(--space-3) var(--space-4); font-size: var(--font-size-xs); color: var(--text-secondary); white-space: nowrap; z-index: 9999; pointer-events: none; box-shadow: 0 8px 24px rgba(0,0,0,0.4); line-height: 1.6; opacity: 0; transition: opacity 0.12s; min-width: 160px; &.ar-tooltip--visible { opacity: 1; } } .ar-tooltip-title { font-weight: var(--font-weight-semibold); color: var(--text-primary); margin-bottom: 4px; } .ar-tooltip-row { display: flex; justify-content: space-between; gap: var(--space-4); font-family: var(--font-mono); font-size: 0.68rem; } .ar-tooltip-key { color: var(--text-muted); } .ar-tooltip-val { color: var(--color-accent); font-weight: 600; } // ── Responsive ──────────────────────────────────────────────────────────────── @media (max-width: 768px) { .ar-layout { grid-template-columns: 1fr; } .ar-sidebar { display: none; } .ar-track-header { min-width: unset; width: 100%; } .ar-controls { flex-direction: column; gap: var(--space-2); } .ar-toolbar { flex-wrap: wrap; gap: var(--space-1); } .ar-timeline { overflow-x: auto; -webkit-overflow-scrolling: touch; } } @media (max-width: 480px) { .ar-track-label { font-size: 11px; max-width: 80px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .ar-btn { padding: 2px 6px; font-size: 11px; } .ar-time-display { font-size: 12px; } }