From f1da2851ff77c9e7f2840a25f36cd134310dbbfe Mon Sep 17 00:00:00 2001 From: Jerome Potter Date: Thu, 15 Jan 2026 17:19:32 -0800 Subject: [PATCH 1/3] Add orb submenu and mobile slider fixes --- index.html | 652 ++++++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 548 insertions(+), 104 deletions(-) diff --git a/index.html b/index.html index 4d812f0..6820112 100644 --- a/index.html +++ b/index.html @@ -15,6 +15,8 @@ --panel-bg: #f4f4f2; --border: 1px solid #bbb; --shadow: 0 2px 5px rgba(0,0,0,0.1); + --slider-pill-bg: rgba(0,0,0,0.12); + --slider-pill-border: rgba(0,0,0,0.08); } /* DARK MODE overrides */ @@ -24,6 +26,8 @@ --panel-bg: #2a2a2a; --border: 1px solid #444; --shadow: 0 4px 10px rgba(0,0,0,0.4); + --slider-pill-bg: rgba(255,255,255,0.12); + --slider-pill-border: rgba(255,255,255,0.12); } @font-face { @@ -71,7 +75,13 @@ font-weight: 500; letter-spacing: 0.5px; z-index: 10; - justify-content: space-between; + justify-content: space-between; + } + + .hud-group { + display: flex; + align-items: center; + gap: 16px; } h1.title { @@ -83,7 +93,6 @@ } @media (min-width: 768px) { h1.title { display: block; } - #hud-top { justify-content: flex-start; } } .hud-item { @@ -115,16 +124,8 @@ gap: 6px; } - .volume-control label { - font-size: inherit; - font-weight: inherit; - font-family: inherit; - letter-spacing: inherit; - white-space: nowrap; - } - - .volume-control input[type=range] { - width: 90px; + .hud-orb-panel { + width: 200px; } /* CONTROLS BAR */ @@ -144,7 +145,7 @@ .controls-row { width: 100%; display: flex; - justify-content: space-between; + justify-content: center; align-items: flex-end; gap: 20px; pointer-events: none; @@ -207,10 +208,77 @@ padding: 8px 10px; white-space: nowrap; } + .btn-fixed { + min-width: 64px; + text-align: center; + } .btn-text:active { background: rgba(0,0,0,0.05); opacity: 1; } .btn-active { color: var(--accent-orange); opacity: 1; border-bottom: 2px solid var(--accent-orange); } .btn-text:disabled { opacity: 0.3; cursor: not-allowed; } + .btn-small { + font-size: 0.75em; + padding: 6px 10px; + } + + .control-buttons-row { + display: flex; + gap: 8px; + justify-content: center; + margin-top: 6px; + } + + details.side-panel { + pointer-events: auto; + width: 260px; + border: 1px solid rgba(0,0,0,0.08); + border-radius: 16px; + padding: 10px 12px; + background: rgba(255,255,255,0.6); + backdrop-filter: blur(6px); + } + + details.side-panel summary { + list-style: none; + cursor: pointer; + font-size: 0.85em; + letter-spacing: 1px; + text-transform: uppercase; + font-weight: 700; + opacity: 0.7; + display: flex; + align-items: center; + justify-content: space-between; + } + + details.side-panel summary::-webkit-details-marker { + display: none; + } + + .side-panel-content { + margin-top: 10px; + display: flex; + flex-direction: column; + gap: 10px; + } + + #side-controls { + position: absolute; + inset: 0 30px; + display: flex; + justify-content: space-between; + align-items: center; + pointer-events: none; + z-index: 20; + } + + #planet-list-wrap { + position: absolute; + bottom: 30px; + left: 50%; + transform: translateX(-50%); + } + /* PLANET LIST */ #planet-list-wrap { --chip-size: 18px; @@ -227,7 +295,6 @@ overflow-x: auto; z-index: 15; overflow: hidden; -} } #planet-list-wrap .planet-chip-btn { @@ -291,27 +358,93 @@ } input[type=range] { -webkit-appearance: none; - width: 100px; - height: 4px; - background: #ccc; - border-radius: 2px; + appearance: none; + width: 100%; + height: 100%; + background: transparent; + outline: none; + cursor: pointer; + position: absolute; + inset: 0; + margin: 0; + z-index: 2; + -webkit-tap-highlight-color: transparent; + } + input[type=range]:focus { + outline: none; + } + input[type=range]:focus-visible { outline: none; } input[type=range]::-webkit-slider-thumb { -webkit-appearance: none; - width: 18px; - height: 18px; - border-radius: 50%; - background: var(--ink-color); - cursor: pointer; - border: 2px solid var(--bg-color); - box-shadow: 0 1px 3px rgba(0,0,0,0.3); + width: 24px; + height: 24px; + background: transparent; + box-shadow: none; + opacity: 0; + } + input[type=range]::-webkit-slider-runnable-track { + height: 100%; + background: transparent; + } + input[type=range]::-moz-range-track { + height: 100%; + background: transparent; + } + input[type=range]::-moz-range-thumb { + width: 24px; + height: 24px; + background: transparent; + border: none; + opacity: 0; + } + input[type=range]::-moz-focus-outer { border: 0; } + + .slider-pill { + position: relative; + width: 190px; + height: 40px; + border-radius: 999px; + background: linear-gradient( + to right, + rgba(0,0,0,0.22) 0%, + rgba(0,0,0,0.22) var(--slider-fill, 0%), + var(--slider-pill-bg) var(--slider-fill, 0%), + var(--slider-pill-bg) 100% + ); + border: 1px solid var(--slider-pill-border); + display: flex; + align-items: center; + justify-content: space-between; + padding: 0 16px; + box-sizing: border-box; + overflow: hidden; + font-size: 0.8em; + letter-spacing: 0.3px; + font-weight: 600; + } + + .slider-pill__label, + .slider-pill__value { + z-index: 1; + pointer-events: none; + } + + .slider-pill__value { + opacity: 0.7; + } + + .slider-pill--compact { + width: 150px; + height: 34px; + font-size: 0.7em; } /* PANELS */ .modal { display: none; - position: absolute; + position: fixed; top: 50%; left: 50%; transform: translate(-50%, -50%); @@ -322,6 +455,31 @@ padding: 20px; z-index: 100; border-radius: 4px; + max-height: 80vh; + overflow-y: auto; + -webkit-overflow-scrolling: touch; + } + + #global-panel { + position: absolute; + top: 0; + left: 0; + transform: none; + } + + #modal-overlay { + position: fixed; + inset: 0; + background: rgba(0,0,0,0.12); + opacity: 0; + pointer-events: none; + transition: opacity 0.2s ease; + z-index: 90; + } + + #modal-overlay.active { + opacity: 1; + pointer-events: auto; } .modal h2 { @@ -364,10 +522,9 @@ .key-circle { width: 40px; height: 40px; border-radius: 50%; border: 1px solid var(--ink-color); display: flex; justify-content: center; align-items: center; cursor: pointer; - font-size: 0.75em; font-weight: bold; opacity: 0.5; + font-size: 0.75em; font-weight: bold; opacity: 1; background: #fff; color: var(--ink-color); } - .key-circle.active { background: var(--ink-color); color: var(--bg-color); opacity: 1; } - .key-circle.black-key { background: rgba(0,0,0,0.1); } + .key-circle.active { background: #000; color: #fff; opacity: 1; } #start-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; @@ -382,6 +539,8 @@ gap: 5px; } .hud-item { font-size: 0.75em; } + .hud-group { gap: 8px; } + .hud-orb-panel { width: 170px; } select.midi-select { max-width: 80px; @@ -412,9 +571,9 @@ gap: 8px 6px; } - input[type=range] { width: 70px; } + .slider-pill { width: 160px; height: 34px; font-size: 0.7em; } + .slider-pill--compact { width: 130px; height: 30px; } .macro-slider-container label { font-size: 0.7em !important; } - .volume-control input[type=range] { width: 70px; } .btn-text { font-size: 0.7em; @@ -437,8 +596,29 @@ flex-wrap: wrap; justify-content: center; } - + + #side-controls { + inset: auto 10px 120px; + flex-direction: column; + gap: 12px; + } + + details.side-panel { + width: 100%; + max-width: 320px; + } + + #planet-list-wrap { + bottom: 20px; + } + .modal { width: 85vw; } + #global-panel { + top: 50%; + left: 50%; + right: auto; + transform: translate(-50%, -50%); + } } @@ -453,74 +633,116 @@

-

LES CERCLES

-
AUDIO: ON
-
SETTINGS
- -
- +
+

LES CERCLES

+
AUDIO: ON
+
SETTINGS
-
- - +
+
+ +
+ +
+
+ Volume + 100% + +
+
+ +
+ ORB +
+
+ + +
+
+ + +
+ +
+
+ -
-
-
- +
+
+ NOTES +
+ + + +
- - +
+ Speed + 1.0x + +
- - - - - - -
+
-
-
-
- - -
+
+ GATES +
+ -
- - +
+
+ Gates + 1 +
+
- - - + + -
- - +
+
+ Gate Speed + 10 RPM +
+
- +
+
+ Transpose + 0 + +
+
+ + +
+ +
-
+
+
-
- -
- -
+
+ +
+
- - +
+ RPM + 0.00 + +
- - +
+ Volume + 70% + +
@@ -549,8 +777,11 @@

LES CERCLES

-
- ORB -
-
- - -
-
- - -
- -
-
+
+ +
+ +
+
NOTES @@ -737,12 +735,25 @@

LES CERCLES

-
-
- -
- +
+ ORBS +
+
+ + +
+
+ + +
+ +
+