openvibers/openvibe.live Commits
Phones: 12 px stat labels and chat times on the home and in chat; 44 px targets for the home's pills (#612)
Changes
@@@ -92,3 +92,7 @@.hf, .hf-live i { animation: none; }.hf-media video, .hf-media canvas, .hf-media img.hf-frame, .hf-now { transition: none; }}++++/* Touch pointers: the unmute pill answers a finger at 44 px (2026-11-05 phone sweep: 35.6 px tall). It sits on the++ video overlay, so it takes the height itself rather than a hit area over the frame's own link. */++@media (pointer: coarse) { .hf-sound { min-height: 44px; } }@@@ -1124,16 +1124,18 @@ body.egg-rainbow { animation: eggRainbow 2.6s linear; }.hero-stat-strip .hero-stat-delta { grid-column: 3; grid-row: 1; justify-self: end; }.hero-stat-strip .hero-stat-delta em { display: inline; }}--/* Phones: three tight columns, number over label, short pill. */++/* Phones: three tight columns. The icon sits beside the number and the label takes the tile's whole width, so a++ 12 px label fits (2026-11-06, Opus: beside a 24 px icon column the label had 70 px and "WATCHING", "MESSAGES" and++ "STREAMERS" were cut at 12 px; at 8 px they were too small to read). The change pill is the third row, 12 px. */@media (max-width: 699px) {.hero-stats { min-height: 256px; margin-top: 14px; }.hero-stat-strip { gap: 6px; }-- .hero-stat-strip .hero-stat { grid-template-columns: auto minmax(0, 1fr); grid-template-rows: auto auto; padding: 7px 8px; column-gap: 6px; row-gap: 2px; border-radius: 10px; }-- .hero-stat-strip .hero-stat > i { grid-row: 1 / 3; width: 24px; height: 24px; font-size: 0.66rem; border-radius: 7px; }-- .hero-stat-strip .hero-stat-meta { grid-row: 1; flex-direction: column; gap: 1px; }-- .hero-stat-strip .hero-stat-num { font-size: clamp(0.9rem, 4.2vw, 1.05rem); }-- .hero-stat-strip .hero-stat-label { font-size: 0.5rem; }-- .hero-stat-strip .hero-stat-delta { grid-column: 2; grid-row: 2; justify-self: start; font-size: 0.5rem; padding: 1px 5px; }++ .hero-stat-strip .hero-stat { grid-template-columns: auto minmax(0, 1fr); grid-template-rows: auto auto auto; align-items: center; padding: 7px 8px; column-gap: 6px; row-gap: 2px; border-radius: 10px; }++ .hero-stat-strip .hero-stat > i { grid-row: 1; grid-column: 1; width: 20px; height: 20px; font-size: 0.62rem; border-radius: 6px; }++ .hero-stat-strip .hero-stat-meta { display: contents; }++ .hero-stat-strip .hero-stat-num { grid-row: 1; grid-column: 2; font-size: clamp(0.9rem, 4.2vw, 1.05rem); }++ .hero-stat-strip .hero-stat-label { grid-row: 2; grid-column: 1 / -1; font-size: 0.75rem; }++ .hero-stat-strip .hero-stat-delta { grid-row: 3; grid-column: 1 / -1; justify-self: start; font-size: 0.75rem; padding: 1px 6px; }.hero-stat-strip .hero-stat-delta em { display: none; }}@media (max-width: 359px) {@@@ -1289,6 +1291,9 @@ body.egg-rainbow { animation: eggRainbow 2.6s linear; }invisible hit area (::after) where growing it would move the layout. Nothing changes on a mouse. */@media (pointer: coarse) {#page-home .digest-chip, #page-home .star-act, #page-home .hero-stat-more, #page-home .home-about-toggle { min-height: 44px; }++ /* A pill or a one-line quote that cannot grow a hit area sideways without covering its neighbour: it takes the++ height itself (2026-11-05 phone sweep: 33, 19 and 36 px tall). */++ #page-home .hero-latest, #page-home .digest-hot-line { min-height: 44px; display: flex; align-items: center; }#page-home .star-act.star-expand { min-width: 44px; }#page-home .streamer-group-identity, #page-home .hf-who { min-height: 44px; display: flex; align-items: center; }#page-home .section-action, #page-home .digest-recap, #page-home .hf-hide, #page-home .hero-philosophy-btn, #page-home .hero-philosophy-link, #page-home .star-name a, #page-home .hero-golive-note a { position: relative; }@@@ -1296,11 +1301,11 @@ body.egg-rainbow { animation: eggRainbow 2.6s linear; }under the old hit area (11-03 re-audit: "View all" measured 28 to 32px). The header sits above the rail, and thelink's hit area grows up into the header's own room, never down into the cards: 44px. */#page-home .section-header { position: relative; z-index: 1; }-- #page-home .section-action::after { content: ''; position: absolute; inset: -16px -4px 0; }-- #page-home .digest-recap::after { content: ''; position: absolute; inset: -7px; }++ #page-home .section-action::after { content: ''; position: absolute; inset: -17px -4px 0; }++ #page-home .digest-recap::after { content: ''; position: absolute; inset: -8px; }#page-home .hf-hide::after { content: ''; position: absolute; inset: -11px; }/* Text links in a row: taller only, so neighbours never take each other's taps. */-- #page-home .hero-philosophy-btn::after, #page-home .hero-philosophy-link::after, #page-home .star-name a::after, #page-home .hero-golive-note a::after { content: ''; position: absolute; left: 0; right: 0; top: -12px; bottom: -12px; }++ #page-home .hero-philosophy-btn::after, #page-home .hero-philosophy-link::after, #page-home .star-name a::after, #page-home .hero-golive-note a::after { content: ''; position: absolute; left: 0; right: 0; top: -14px; bottom: -14px; }}/* New here? (2026-10-30, the short-pages rule): on a phone the explainer at the foot of the home is a row of tabs and@@@ -4853,7 +4853,7 @@ button.uai-tl-more { background: none; border: none; cursor: pointer; padding: 0}.chat-stream-hop:hover { filter: brightness(1.1); }.chat-time-inline {-- font-size: 0.7rem; color: var(--text-muted); margin-right: 4px;++ font-size: 0.75rem; color: var(--text-muted); margin-right: 4px;}.btn-follow.following { background: var(--text-muted); }
@@ -92,3 +92,7 @@
@@ -92,3 +92,7 @@
.hf, .hf-live i { animation: none; }
.hf, .hf-live i { animation: none; }
.hf-media video, .hf-media canvas, .hf-media img.hf-frame, .hf-now { transition: none; }
.hf-media video, .hf-media canvas, .hf-media img.hf-frame, .hf-now { transition: none; }
}
}
+
+/* Touch pointers: the unmute pill answers a finger at 44 px (2026-11-05 phone sweep: 35.6 px tall). It sits on the
+ video overlay, so it takes the height itself rather than a hit area over the frame's own link. */
+@media (pointer: coarse) { .hf-sound { min-height: 44px; } }
@@ -1124,16 +1124,18 @@ body.egg-rainbow { animation: eggRainbow 2.6s linear; }
@@ -1124,16 +1124,18 @@ body.egg-rainbow { animation: eggRainbow 2.6s linear; }
.hero-stat-strip .hero-stat-delta { grid-column: 3; grid-row: 1; justify-self: end; }
.hero-stat-strip .hero-stat-delta { grid-column: 3; grid-row: 1; justify-self: end; }
.hero-stat-strip .hero-stat-delta em { display: inline; }
.hero-stat-strip .hero-stat-delta em { display: inline; }
}
}
-/* Phones: three tight columns, number over label, short pill. */
+/* Phones: three tight columns. The icon sits beside the number and the label takes the tile's whole width, so a
+ 12 px label fits (2026-11-06, Opus: beside a 24 px icon column the label had 70 px and "WATCHING", "MESSAGES" and
+ "STREAMERS" were cut at 12 px; at 8 px they were too small to read). The change pill is the third row, 12 px. */
@media (max-width: 699px) {
@media (max-width: 699px) {
.hero-stats { min-height: 256px; margin-top: 14px; }
.hero-stats { min-height: 256px; margin-top: 14px; }
.hero-stat-strip { gap: 6px; }
.hero-stat-strip { gap: 6px; }
- .hero-stat-strip .hero-stat { grid-template-columns: auto minmax(0, 1fr); grid-template-rows: auto auto; padding: 7px 8px; column-gap: 6px; row-gap: 2px; border-radius: 10px; }
- .hero-stat-strip .hero-stat > i { grid-row: 1 / 3; width: 24px; height: 24px; font-size: 0.66rem; border-radius: 7px; }
- .hero-stat-strip .hero-stat-meta { grid-row: 1; flex-direction: column; gap: 1px; }
- .hero-stat-strip .hero-stat-num { font-size: clamp(0.9rem, 4.2vw, 1.05rem); }
- .hero-stat-strip .hero-stat-label { font-size: 0.5rem; }
- .hero-stat-strip .hero-stat-delta { grid-column: 2; grid-row: 2; justify-self: start; font-size: 0.5rem; padding: 1px 5px; }
+ .hero-stat-strip .hero-stat { grid-template-columns: auto minmax(0, 1fr); grid-template-rows: auto auto auto; align-items: center; padding: 7px 8px; column-gap: 6px; row-gap: 2px; border-radius: 10px; }
+ .hero-stat-strip .hero-stat > i { grid-row: 1; grid-column: 1; width: 20px; height: 20px; font-size: 0.62rem; border-radius: 6px; }
+ .hero-stat-strip .hero-stat-meta { display: contents; }
+ .hero-stat-strip .hero-stat-num { grid-row: 1; grid-column: 2; font-size: clamp(0.9rem, 4.2vw, 1.05rem); }
+ .hero-stat-strip .hero-stat-label { grid-row: 2; grid-column: 1 / -1; font-size: 0.75rem; }
+ .hero-stat-strip .hero-stat-delta { grid-row: 3; grid-column: 1 / -1; justify-self: start; font-size: 0.75rem; padding: 1px 6px; }
.hero-stat-strip .hero-stat-delta em { display: none; }
.hero-stat-strip .hero-stat-delta em { display: none; }
}
}
@media (max-width: 359px) {
@media (max-width: 359px) {
@@ -1289,6 +1291,9 @@ body.egg-rainbow { animation: eggRainbow 2.6s linear; }
@@ -1289,6 +1291,9 @@ body.egg-rainbow { animation: eggRainbow 2.6s linear; }
invisible hit area (::after) where growing it would move the layout. Nothing changes on a mouse. */
invisible hit area (::after) where growing it would move the layout. Nothing changes on a mouse. */
@media (pointer: coarse) {
@media (pointer: coarse) {
#page-home .digest-chip, #page-home .star-act, #page-home .hero-stat-more, #page-home .home-about-toggle { min-height: 44px; }
#page-home .digest-chip, #page-home .star-act, #page-home .hero-stat-more, #page-home .home-about-toggle { min-height: 44px; }
+ /* A pill or a one-line quote that cannot grow a hit area sideways without covering its neighbour: it takes the
+ height itself (2026-11-05 phone sweep: 33, 19 and 36 px tall). */
+ #page-home .hero-latest, #page-home .digest-hot-line { min-height: 44px; display: flex; align-items: center; }
#page-home .star-act.star-expand { min-width: 44px; }
#page-home .star-act.star-expand { min-width: 44px; }
#page-home .streamer-group-identity, #page-home .hf-who { min-height: 44px; display: flex; align-items: center; }
#page-home .streamer-group-identity, #page-home .hf-who { min-height: 44px; display: flex; align-items: center; }
#page-home .section-action, #page-home .digest-recap, #page-home .hf-hide, #page-home .hero-philosophy-btn, #page-home .hero-philosophy-link, #page-home .star-name a, #page-home .hero-golive-note a { position: relative; }
#page-home .section-action, #page-home .digest-recap, #page-home .hf-hide, #page-home .hero-philosophy-btn, #page-home .hero-philosophy-link, #page-home .star-name a, #page-home .hero-golive-note a { position: relative; }
@@ -1296,11 +1301,11 @@ body.egg-rainbow { animation: eggRainbow 2.6s linear; }
@@ -1296,11 +1301,11 @@ body.egg-rainbow { animation: eggRainbow 2.6s linear; }
under the old hit area (11-03 re-audit: "View all" measured 28 to 32px). The header sits above the rail, and the
under the old hit area (11-03 re-audit: "View all" measured 28 to 32px). The header sits above the rail, and the
link's hit area grows up into the header's own room, never down into the cards: 44px. */
link's hit area grows up into the header's own room, never down into the cards: 44px. */
#page-home .section-header { position: relative; z-index: 1; }
#page-home .section-header { position: relative; z-index: 1; }
- #page-home .section-action::after { content: ''; position: absolute; inset: -16px -4px 0; }
- #page-home .digest-recap::after { content: ''; position: absolute; inset: -7px; }
+ #page-home .section-action::after { content: ''; position: absolute; inset: -17px -4px 0; }
+ #page-home .digest-recap::after { content: ''; position: absolute; inset: -8px; }
#page-home .hf-hide::after { content: ''; position: absolute; inset: -11px; }
#page-home .hf-hide::after { content: ''; position: absolute; inset: -11px; }
/* Text links in a row: taller only, so neighbours never take each other's taps. */
/* Text links in a row: taller only, so neighbours never take each other's taps. */
- #page-home .hero-philosophy-btn::after, #page-home .hero-philosophy-link::after, #page-home .star-name a::after, #page-home .hero-golive-note a::after { content: ''; position: absolute; left: 0; right: 0; top: -12px; bottom: -12px; }
+ #page-home .hero-philosophy-btn::after, #page-home .hero-philosophy-link::after, #page-home .star-name a::after, #page-home .hero-golive-note a::after { content: ''; position: absolute; left: 0; right: 0; top: -14px; bottom: -14px; }
}
}
/* New here? (2026-10-30, the short-pages rule): on a phone the explainer at the foot of the home is a row of tabs and
/* New here? (2026-10-30, the short-pages rule): on a phone the explainer at the foot of the home is a row of tabs and
@@ -4853,7 +4853,7 @@ button.uai-tl-more { background: none; border: none; cursor: pointer; padding: 0
@@ -4853,7 +4853,7 @@ button.uai-tl-more { background: none; border: none; cursor: pointer; padding: 0
}
}
.chat-stream-hop:hover { filter: brightness(1.1); }
.chat-stream-hop:hover { filter: brightness(1.1); }
.chat-time-inline {
.chat-time-inline {
- font-size: 0.7rem; color: var(--text-muted); margin-right: 4px;
+ font-size: 0.75rem; color: var(--text-muted); margin-right: 4px;
}
}
.btn-follow.following { background: var(--text-muted); }
.btn-follow.following { background: var(--text-muted); }