diff --git a/apps/playground/index.html b/apps/playground/index.html
index 11275b0..30f7e05 100644
--- a/apps/playground/index.html
+++ b/apps/playground/index.html
@@ -17,6 +17,11 @@
#main { flex: 1; min-width: 0; display: flex; flex-direction: column; margin: 6px 6px 6px 0; border-radius: 12px; overflow: hidden; background: #171717; }
body.light #main { background: #ffffff; }
#header { flex: none; min-width: 0; }
+ /* Wide: the control rail carries the header's controls, so the plot starts at the top of the card. */
+ @media (min-width: 600px) { #header { display: none; } }
+ /* Rail text toggles (timeframe, Auto / % / Log) fit the 36px buttons; a pressed toggle takes the accent. */
+ #ctrl-rail .cts-btn-label { font-size: 11px; }
+ #ctrl-rail .rail-scale.cts-on { color: var(--cts-accent); background: var(--cts-accent-soft); }
#stage { position: relative; flex: 1; min-height: 0; }
#tools { flex: none; width: 52px; overflow: hidden; transition: width 240ms cubic-bezier(0.2, 0.8, 0.2, 1); }
#tools.collapsed { width: 0; }
@@ -26,7 +31,7 @@
canvas { display: block; width: 100%; height: 100%; touch-action: none; }
/* bloxwap.pro chrome on dark for the rails, menus and dialogs: zero-stroke surfaces, #262626 hover fill, #00ff3f accent.
- The header and the on-chart A / % / L strip take BLOXWAP_HEADER_THEME instead, which clears itself on light. */
+ The header takes BLOXWAP_HEADER_THEME instead, which clears itself on light. */
body:not(.light) .cts-theme:not(.cts-light) {
--cts-edge: transparent; --cts-panel-raised: #262626; --cts-accent: #00ff3f;
--cts-accent-soft: #262626; --cts-on-accent: #0a0a0a;
@@ -70,12 +75,15 @@