ui(player): meaningful caps for tablet/small-desktop range + tighter footer
Lint & Test / test (push) Successful in 17s

The 720–1240 px viewport range was a "strange zone": below 1240 the layout
is single-column, but above 720 none of the Pocket Edition rules fire, so
the vinyl stage stretched to full content width (~1100 px) and the masthead
ran to a 1000 px+ measure on a small-desktop window.

Caps now degrade in three steps:
- ≤ 720 px: vinyl 460 px / 92% width (mobile hero unchanged)
- 721–1240 px: vinyl 480 px, masthead 640 px, both centered
- ≥ 1241 px: two-column layout (no caps needed; grid does it)

Also reduce the bottom dead space:
- footer margin-top 80 → 36, inner top padding 28 → 20
- .container bottom padding 140 → 64 (desktop) / 56 (mobile)

And a small mobile-volume fix in the same range:
- .controls flex-wrap nowrap → wrap so the vu-cluster can take its own row
- vu-cluster gets flex-basis 100 % (forces own row in the wrapping flexbox)
- volume-slider drops the max-width: 200 cap so it fills the row width
- vinyl-stage on mobile bumped 320 → 460 px / 78% → 92% width
This commit is contained in:
2026-04-25 20:19:37 +03:00
parent f4be2bdb89
commit 25a492d5dd
+44 -10
View File
@@ -3993,11 +3993,11 @@ body.mini-player-visible footer {
/* ─── Container & header ────────────────────────────────────── */ /* ─── Container & header ────────────────────────────────────── */
.container { .container {
max-width: 1280px; max-width: 1280px;
padding: 56px 48px 140px; padding: 56px 48px 64px;
} }
@media (max-width: 720px) { @media (max-width: 720px) {
.container { padding: 48px 18px 140px; } .container { padding: 48px 18px 56px; }
} }
/* ─── Folio marks (page corners, all tabs) ────────────────── */ /* ─── Folio marks (page corners, all tabs) ────────────────── */
@@ -4418,6 +4418,35 @@ header .brand-sub {
grid-template-columns: 1fr; grid-template-columns: 1fr;
gap: 36px; gap: 36px;
} }
/* Single-column hero sizing — prevents the vinyl stage from
growing to full content width (which becomes 800px+ on a
small-desktop or tablet-landscape window). */
.album-art-container.vinyl-stage {
max-width: 520px;
margin-left: auto;
margin-right: auto;
}
/* Cap the right-column copy so a short artist line and meta grid
don't sprawl across 1000px of measure. The masthead stays
flush-left under the vinyl, just narrower. */
.now-playing .track-masthead {
max-width: 720px;
}
}
@media (min-width: 721px) and (max-width: 1240px) {
/* In the 7211240 zone the vinyl can be larger than on phone but
smaller than the full-column 800px+ default. */
.album-art-container.vinyl-stage {
max-width: 480px;
}
.now-playing .track-masthead {
max-width: 640px;
margin-left: auto;
margin-right: auto;
padding-right: 0;
text-align: left;
}
} }
/* ─── Vinyl stage ──────────────────────────────────────────── */ /* ─── Vinyl stage ──────────────────────────────────────────── */
@@ -6480,8 +6509,8 @@ dialog::backdrop {
FOOTER (colophon) FOOTER (colophon)
═══════════════════════════════════════════════════════════════ */ ═══════════════════════════════════════════════════════════════ */
footer { footer {
margin-top: 80px; margin-top: 36px;
padding: 28px 0 0; padding: 20px 0 0;
border-top: 1px solid var(--rule-strong); border-top: 1px solid var(--rule-strong);
background: transparent; background: transparent;
font-family: var(--mono); font-family: var(--mono);
@@ -6870,6 +6899,7 @@ body.audio-spectrum-live .now-playing .spectrum span {
border: 1px solid var(--rule-strong); border: 1px solid var(--rule-strong);
color: var(--ink-soft); color: var(--ink-soft);
width: 48px; height: 48px; width: 48px; height: 48px;
flex-shrink: 0;
display: inline-flex; display: inline-flex;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
@@ -8414,10 +8444,10 @@ select option {
margin-top: 4px !important; margin-top: 4px !important;
} }
/* Vinyl stage: centered, capped at sensible touch size */ /* Vinyl stage: centered, generous on tablet/large-phone widths */
.album-art-container.vinyl-stage { .album-art-container.vinyl-stage {
max-width: 320px; max-width: 460px;
width: 78%; width: 92%;
margin: 0 auto !important; margin: 0 auto !important;
} }
/* Lighter sleeve grain on phones so the printed art reads /* Lighter sleeve grain on phones so the printed art reads
@@ -8522,7 +8552,8 @@ select option {
.player-layout .controls { .player-layout .controls {
justify-content: center !important; justify-content: center !important;
gap: 28px !important; gap: 28px !important;
flex-wrap: nowrap !important; flex-wrap: wrap !important;
row-gap: 0 !important;
} }
.now-playing .controls .btn-trans, .now-playing .controls .btn-trans,
.player-layout .controls .btn-trans { .player-layout .controls .btn-trans {
@@ -8538,7 +8569,9 @@ select option {
.now-playing .controls .btn-trans.primary svg { width: 26px !important; height: 26px !important; } .now-playing .controls .btn-trans.primary svg { width: 26px !important; height: 26px !important; }
/* VU meter is decorative on a phone — hide it. Volume becomes /* VU meter is decorative on a phone — hide it. Volume becomes
its own full-width hairline row beneath the controls. */ its own full-width hairline row beneath the controls.
flex-basis: 100% forces the cluster onto its own line in the
wrapping .controls flex container. */
.now-playing .vu-cluster, .now-playing .vu-cluster,
.player-layout .vu-cluster { .player-layout .vu-cluster {
display: flex !important; display: flex !important;
@@ -8546,6 +8579,7 @@ select option {
align-items: center; align-items: center;
justify-content: space-between; justify-content: space-between;
gap: 14px !important; gap: 14px !important;
flex-basis: 100% !important;
width: 100% !important; width: 100% !important;
margin: 18px 0 0 0 !important; margin: 18px 0 0 0 !important;
padding-top: 16px !important; padding-top: 16px !important;
@@ -8575,7 +8609,7 @@ select option {
.player-layout .vu-volume #volume-slider { .player-layout .vu-volume #volume-slider {
flex: 1 1 auto !important; flex: 1 1 auto !important;
width: 100% !important; width: 100% !important;
max-width: 200px; max-width: none !important;
height: 3px !important; height: 3px !important;
} }
.now-playing .vu-volume #volume-slider::-webkit-slider-thumb, .now-playing .vu-volume #volume-slider::-webkit-slider-thumb,