diff --git a/mobile.html b/mobile.html index c24a78b..25bdf12 100644 --- a/mobile.html +++ b/mobile.html @@ -67,10 +67,9 @@ font-size:18px; line-height:1; cursor:pointer; color:var(--txt); background:rgba(127,139,154,.14); border:1px solid var(--panel-bd); } .icon:active{ background:rgba(127,139,154,.30); } - /* ---- middle: pulse + lanes centered as one block, transport pinned below ---- */ - #mid{ flex:1 1 auto; min-height:0; display:flex; flex-direction:column; gap:10px; } - #center{ flex:1 1 auto; min-height:0; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:clamp(14px,3.5vmin,34px); } - #stage{ flex:0 0 auto; display:flex; flex-direction:column; align-items:center; gap:clamp(8px,2vmin,18px); } + /* ---- middle: pulse + track panel + lanes + transport, centered as one block ---- */ + #mid{ flex:1 1 auto; min-height:0; display:flex; flex-direction:column; align-items:center; justify-content:safe center; gap:clamp(10px,2.4vmin,22px); } + #stage{ flex:0 0 auto; display:flex; flex-direction:column; align-items:center; gap:clamp(6px,1.6vmin,14px); } #pulse{ position:relative; width:clamp(186px,46vmin,360px); height:clamp(186px,46vmin,360px); border-radius:50%; display:flex; flex-direction:column; align-items:center; justify-content:center; text-align:center; border:2px solid var(--ring); background:radial-gradient(circle at 50% 40%, rgba(127,139,154,.07), transparent 70%); @@ -84,12 +83,24 @@ #bpmIn::-webkit-outer-spin-button, #bpmIn::-webkit-inner-spin-button{ -webkit-appearance:none; margin:0; } #meterline{ font-size:clamp(12px,2.1vmin,16px); color:var(--muted); text-align:center; min-height:1.2em; letter-spacing:.02em; } - /* ---- editable lanes + track-settings button ---- */ - #detail{ flex:0 1 auto; width:100%; max-width:560px; max-height:34vh; overflow-y:auto; display:flex; flex-direction:column; gap:8px; padding:2px 0; } + /* ---- track panel (repeat/end/ramp/gap/string) + editable lanes ---- */ + #detail{ flex:0 1 auto; width:100%; max-width:560px; max-height:32vh; overflow-y:auto; display:flex; flex-direction:column; gap:8px; padding:2px 0; } #lanes{ display:flex; flex-direction:column; gap:6px; } - #trackBtn{ align-self:center; background:var(--chip-bg); border:1px solid var(--chip-bd); color:var(--muted); - border-radius:9px; padding:7px 14px; font-size:clamp(11px,1.9vmin,13px); cursor:pointer; max-width:100%; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; } - #trackBtn:active{ background:rgba(127,139,154,.22); } + #trackpanel{ width:100%; background:var(--chip-bg); border:1px solid var(--chip-bd); border-radius:10px; padding:8px 10px; display:flex; flex-direction:column; gap:7px; font-size:12px; color:var(--muted); } + #trackpanel .tp-grid{ display:flex; flex-wrap:wrap; align-items:center; gap:8px 14px; } + #trackpanel label{ display:flex; align-items:center; gap:6px; } + #trackpanel .tp-chk{ color:var(--txt); } + #trackpanel .tp-chk input{ width:18px; height:18px; accent-color:var(--cyan); } + #trackpanel input[type=number]{ width:48px; background:var(--field-bg); color:var(--txt); border:1px solid var(--field-bd); border-radius:7px; padding:5px 6px; font-size:13px; -moz-appearance:textfield; } + #trackpanel input[type=number]::-webkit-outer-spin-button, #trackpanel input[type=number]::-webkit-inner-spin-button{ -webkit-appearance:none; margin:0; } + #trackpanel select{ background:var(--field-bg); color:var(--txt); border:1px solid var(--field-bd); border-radius:7px; padding:5px 6px; font-size:13px; } + #trackpanel .tp-sub{ display:flex; align-items:center; gap:6px; flex-wrap:wrap; } + #trackpanel .tp-sub.off{ display:none; } + #trackpanel .tp-sub b{ color:var(--txt); font-weight:600; } + #trackpanel .tp-str{ display:flex; gap:6px; } + #trackpanel .tp-str input{ flex:1 1 auto; min-width:0; background:var(--field-bg); color:var(--txt); border:1px solid var(--field-bd); border-radius:7px; padding:6px 8px; font-family:"Courier New",monospace; font-size:11px; } + #trackpanel .tp-btn{ flex:0 0 auto; background:linear-gradient(180deg,var(--btn1),var(--btn2)); color:var(--txt); border:1px solid var(--btn-bd); border-radius:7px; padding:0 12px; font-size:12px; cursor:pointer; } + #trackpanel .tp-msg{ color:#5fd08a; margin-left:auto; } .lane{ display:flex; align-items:center; gap:8px; } .lane.off{ opacity:.5; } .lmeta{ flex:0 0 auto; width:30%; max-width:130px; min-width:64px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; text-align:left; @@ -124,15 +135,20 @@ .tbtn.prac{ background:linear-gradient(180deg,#1c87b8,#136488); border-color:#1f9bd0; color:#eaf8ff; } .tbtn.prac.on{ background:linear-gradient(180deg,#c8922a,#9c6f12); border-color:#e0a93a; color:#fff; } - /* landscape phones: pulse left, lanes right (centered), transport full-width below */ + /* landscape phones: 2-column grid — pulse + transport on the left, panel + lanes on the right */ @media (orientation:landscape) and (max-height:600px){ - #center{ flex-direction:row; align-items:center; justify-content:center; gap:4vw; } - #stage{ flex:0 1 44%; gap:clamp(6px,1.6vmin,12px); } - #detail{ flex:0 1 52%; max-width:560px; max-height:64vh; } - #pulse{ width:clamp(132px,40vmin,300px); height:clamp(132px,40vmin,300px); } + #top{ flex-direction:row; align-items:flex-end; gap:12px; } + #top .sels{ flex:3 1 0; min-width:0; } + #top .trow{ flex:2 1 0; min-width:0; } + #mid{ display:grid; align-items:center; gap:8px 4vw; + grid-template-columns:40% 60%; grid-template-rows:1fr auto; + grid-template-areas:"stage detail" "transport detail"; } + #stage{ grid-area:stage; align-self:center; } + #detail{ grid-area:detail; align-self:stretch; width:auto; max-width:none; max-height:none; min-height:0; overflow-y:auto; } + #transport{ grid-area:transport; align-self:end; } + #pulse{ width:clamp(100px,30vmin,240px); height:clamp(100px,30vmin,240px); } #bpmlab{ display:none; } - .tbtn{ height:clamp(40px,13vmin,58px); } - #transport .tgrid{ max-width:640px; } + .tbtn{ height:clamp(34px,11vmin,54px); } } /* ---- session bar ---- */ @@ -203,19 +219,28 @@