cursedbelt 5.34.0 → 5.34.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -696,6 +696,52 @@
696
696
  .cbgd-related {
697
697
  padding: 0 8px 8px;
698
698
  }
699
+ /*
700
+ * 🔴 On a phone the stage is sized by its WIDTH, not by the container's height.
701
+ *
702
+ * Owner, 2026-09-30, collections on an iPhone: *"a big gap for the video playing which
703
+ * doesn't look like it is fit correctly. Under that there is another big gap before you see
704
+ * the media files"*. Portrait, the column is ~340px wide and the measured fit
705
+ * (`--cbgd-stage-fit`, a share of the container's HEIGHT) came out taller than a 16:9 picture
706
+ * of that width — so a video letterboxed inside a near-square black box. Here the frame
707
+ * defaults to the full width at 16:9, which is what every phone video app draws, and it is
708
+ * still ONE constant box, so stepping between files moves nothing (the 2026-08-23 rule above).
709
+ *
710
+ * A height the person DRAGGED (or a consumer's `stageHeight`) still wins — `--cbgd-stage-h`
711
+ * is the height when it is set, and `aspect-ratio` only answers an `auto` one. The resize
712
+ * grips are the owner's own ask (2026-08-25) and a portrait video is exactly what one drags
713
+ * taller. Not in full-stage mode, which fills the whole container on purpose.
714
+ */
715
+ .cbgd-watch:not(.cbgd-watch-full) .cbgd-watch-player-box {
716
+ height: var(--cbgd-stage-h, auto);
717
+ aspect-ratio: 16 / 9;
718
+ max-width: 100%;
719
+ max-height: 70dvh;
720
+ }
721
+ /* The rail under the frame is the second gap: 84px under a coarse pointer. 52px is the
722
+ touch bar's own reach (22px + 15px either side, `mediaResize.css`), so both grips stay
723
+ over the 44px tap floor and inside the rail (`e2e/touch-targets.spec.ts`) and the rest is
724
+ given back. Its width follows the frame's, which is the column's here, not the 16:9 cap's. */
725
+ .cbgd-watch {
726
+ --cbmr-corner-size: 52px;
727
+ }
728
+ .cbgd-watch-player > .cbmr-rail {
729
+ max-width: 100%;
730
+ }
731
+ /* The titlebar's actions are ONE row that scrolls sideways, not three rows that wrap — a
732
+ dozen 44px icon buttons wrapped put the related files a whole screen below the picture. */
733
+ .cbgd-watch-actions {
734
+ margin-left: 0;
735
+ flex-basis: 100%;
736
+ flex-wrap: nowrap;
737
+ /* guardrails-ignore no-raw-overflow: task 2424 — a one-row tool strip in the Tailwind-free `.cbgd-` shell. */
738
+ overflow-x: auto;
739
+ scrollbar-width: none;
740
+ padding-block: 2px;
741
+ }
742
+ .cbgd-watch-actions > * {
743
+ flex: none;
744
+ }
699
745
  }
700
746
 
701
747
  /* ≥44px touch target on coarse pointers only — mirrors `TAP_TARGET_HEIGHT` from
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cursedbelt",
3
- "version": "5.34.0",
3
+ "version": "5.34.1",
4
4
  "license": "ISC",
5
5
  "type": "module",
6
6
  "description": "The React design system of the cursedbelt split — components, styles, theme. cursedbelt-core below it; server tier in cursedbelt-server.",
@@ -19,7 +19,7 @@
19
19
  "no-hand-rolled-scroll-memory": 0,
20
20
  "no-hand-rolled-surface": 0,
21
21
  "no-inline-style": 76,
22
- "opt-out-count": 269,
22
+ "opt-out-count": 270,
23
23
  "opt-out-needs-cause": 258
24
24
  },
25
25
  "cursedshell": {
@@ -696,6 +696,52 @@
696
696
  .cbgd-related {
697
697
  padding: 0 8px 8px;
698
698
  }
699
+ /*
700
+ * 🔴 On a phone the stage is sized by its WIDTH, not by the container's height.
701
+ *
702
+ * Owner, 2026-09-30, collections on an iPhone: *"a big gap for the video playing which
703
+ * doesn't look like it is fit correctly. Under that there is another big gap before you see
704
+ * the media files"*. Portrait, the column is ~340px wide and the measured fit
705
+ * (`--cbgd-stage-fit`, a share of the container's HEIGHT) came out taller than a 16:9 picture
706
+ * of that width — so a video letterboxed inside a near-square black box. Here the frame
707
+ * defaults to the full width at 16:9, which is what every phone video app draws, and it is
708
+ * still ONE constant box, so stepping between files moves nothing (the 2026-08-23 rule above).
709
+ *
710
+ * A height the person DRAGGED (or a consumer's `stageHeight`) still wins — `--cbgd-stage-h`
711
+ * is the height when it is set, and `aspect-ratio` only answers an `auto` one. The resize
712
+ * grips are the owner's own ask (2026-08-25) and a portrait video is exactly what one drags
713
+ * taller. Not in full-stage mode, which fills the whole container on purpose.
714
+ */
715
+ .cbgd-watch:not(.cbgd-watch-full) .cbgd-watch-player-box {
716
+ height: var(--cbgd-stage-h, auto);
717
+ aspect-ratio: 16 / 9;
718
+ max-width: 100%;
719
+ max-height: 70dvh;
720
+ }
721
+ /* The rail under the frame is the second gap: 84px under a coarse pointer. 52px is the
722
+ touch bar's own reach (22px + 15px either side, `mediaResize.css`), so both grips stay
723
+ over the 44px tap floor and inside the rail (`e2e/touch-targets.spec.ts`) and the rest is
724
+ given back. Its width follows the frame's, which is the column's here, not the 16:9 cap's. */
725
+ .cbgd-watch {
726
+ --cbmr-corner-size: 52px;
727
+ }
728
+ .cbgd-watch-player > .cbmr-rail {
729
+ max-width: 100%;
730
+ }
731
+ /* The titlebar's actions are ONE row that scrolls sideways, not three rows that wrap — a
732
+ dozen 44px icon buttons wrapped put the related files a whole screen below the picture. */
733
+ .cbgd-watch-actions {
734
+ margin-left: 0;
735
+ flex-basis: 100%;
736
+ flex-wrap: nowrap;
737
+ /* guardrails-ignore no-raw-overflow: task 2424 — a one-row tool strip in the Tailwind-free `.cbgd-` shell. */
738
+ overflow-x: auto;
739
+ scrollbar-width: none;
740
+ padding-block: 2px;
741
+ }
742
+ .cbgd-watch-actions > * {
743
+ flex: none;
744
+ }
699
745
  }
700
746
 
701
747
  /* ≥44px touch target on coarse pointers only — mirrors `TAP_TARGET_HEIGHT` from