/* ============================================================
   WEB PADS — the app.
   Same design language as the landing page: ring pads on void,
   lime→cyan spectrum, mono telemetry, grain and scanlines.
   ============================================================ */

:root{
  --void:#07090D;
  --void-2:#0C0F15;
  --ink:#12161E;
  --line:rgba(255,255,255,.10);
  --line-2:rgba(255,255,255,.18);
  --chalk:#F2F5F3;
  --mute:rgba(242,245,243,.52);
  --mute-2:rgba(242,245,243,.34);

  --lime:#C6EC1B;
  --cyan:#22B9F2;
  --yellow:#F5E13F;
  --green:#8DDA74;
  --teal:#63FCE7;
  --amber:#F0A93C;
  --coral:#F08A80;

  --accent:#C6EC1B;
  --grad:linear-gradient(100deg,var(--lime),var(--green) 34%,var(--teal) 60%,var(--cyan));

  --pad:clamp(14px,2.2vw,26px);
  --r:999px;
  --ease:cubic-bezier(.16,1,.3,1);
  --ease-io:cubic-bezier(.65,0,.35,1);

  --f-display:"Space Grotesk",-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
  --f-mono:"JetBrains Mono",ui-monospace,SFMono-Regular,Menlo,monospace;

  --side:320px;
}

*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;height:100%}
body{
  margin:0;height:100%;overflow:hidden;
  background:var(--void);color:var(--chalk);
  font-family:var(--f-display);font-size:15px;line-height:1.5;
  -webkit-font-smoothing:antialiased;
  overscroll-behavior:none;
}
img,svg,canvas{display:block;max-width:100%}
a{color:inherit;text-decoration:none}
button{font:inherit;color:inherit;background:none;border:0;padding:0;cursor:pointer}
h1,h2,h3,h4,p,ul,ol{margin:0}
ul,ol{padding:0;list-style:none}
/* class rules below set display on elements we also toggle with [hidden] */
[hidden]{display:none!important}
::selection{background:var(--lime);color:#06080B}
:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:6px}

.mono{font-family:var(--f-mono);font-size:.6875rem;letter-spacing:.14em;text-transform:uppercase;font-weight:500}
.skip{position:fixed;left:-999px;top:0;z-index:9999;background:var(--lime);color:#000;padding:12px 20px}
.skip:focus{left:12px;top:12px}

/* ---------- texture ---------- */
.grain{
  position:fixed;inset:-50%;z-index:9000;pointer-events:none;opacity:.04;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='300' height='300'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
  animation:grain 6s steps(6) infinite;
}
@keyframes grain{
  0%{transform:translate(0,0)}20%{transform:translate(-3%,2%)}40%{transform:translate(2%,-3%)}
  60%{transform:translate(-2%,-2%)}80%{transform:translate(3%,1%)}100%{transform:translate(0,0)}
}
.scanline{
  position:fixed;inset:0;z-index:8999;pointer-events:none;opacity:.13;
  background:repeating-linear-gradient(to bottom,transparent 0 4px,rgba(0,0,0,.22) 4px 5px);
  mix-blend-mode:multiply;
}

/* ---------- cursor ---------- */
.cursor{position:fixed;top:0;left:0;z-index:9500;pointer-events:none;mix-blend-mode:difference}
.cursor__ring,.cursor__dot{position:absolute;border-radius:50%;translate:-50% -50%;will-change:transform}
.cursor__ring{width:34px;height:34px;border:1px solid #fff;transition:width .35s var(--ease),height .35s var(--ease),background .35s,border-color .35s}
.cursor__dot{width:5px;height:5px;background:#fff}
.cursor.is-hot .cursor__ring{width:74px;height:74px;background:rgba(255,255,255,.9);border-color:transparent}
.cursor.is-hot .cursor__dot{opacity:0}
.cursor__label{position:absolute;translate:-50% -50%;color:#000;opacity:0;font-size:.625rem;transition:opacity .3s;white-space:nowrap}
.cursor.is-hot .cursor__label{opacity:1}
@media (hover:none),(pointer:coarse){.cursor{display:none}}

/* ---------- preloader ---------- */
.loader{
  position:fixed;inset:0;z-index:10000;background:var(--void);
  display:grid;place-content:center;justify-items:center;gap:24px;padding:24px;
  transition:opacity .7s var(--ease),visibility .7s;
}
.loader.is-done{opacity:0;visibility:hidden;pointer-events:none}
.loader__logo{width:clamp(120px,26vw,180px);height:auto;mix-blend-mode:screen;opacity:.96}
.loader__grid{display:grid;grid-template-columns:repeat(4,1fr);gap:clamp(8px,1.6vw,14px)}
.loader__grid i{width:clamp(22px,4vw,36px);aspect-ratio:1;border-radius:50%;border:1.5px solid rgba(255,255,255,.10);transition:all .4s var(--ease)}
.loader__grid i.on{border-color:var(--c,var(--lime));box-shadow:0 0 22px -4px var(--c,var(--lime));transform:scale(1.08)}
.loader__meta{display:flex;justify-content:space-between;gap:30px;width:min(420px,80vw);color:var(--mute)}
.loader__num{color:var(--lime)}
.loader__bar{height:1px;width:min(420px,80vw);background:var(--line);overflow:hidden}
.loader__bar i{display:block;height:100%;width:0;background:var(--grad);transition:width .2s linear}
.loader.is-failed .loader__bar i{background:var(--coral)}
.loader__enter{margin-top:6px}

/* ---------- buttons / chips ---------- */
.btn{
  position:relative;display:inline-flex;align-items:center;gap:10px;isolation:isolate;
  padding:13px 24px;border-radius:var(--r);border:1px solid var(--line-2);
  font-weight:500;font-size:.9375rem;overflow:hidden;transition:color .4s var(--ease),border-color .4s;
}
.btn__fill{position:absolute;inset:0;z-index:-1;background:var(--grad);transform:translateY(101%);transition:transform .55s var(--ease)}
.btn:hover{color:#06080B;border-color:transparent}
.btn:hover .btn__fill{transform:none}
.btn--sm{padding:9px 16px;font-size:.8125rem}

.chip{
  padding:8px 15px;border:1px solid var(--line);border-radius:var(--r);
  font-size:.8125rem;color:var(--mute);white-space:nowrap;transition:.3s var(--ease);
}
.chip:hover{border-color:var(--line-2);color:var(--chalk)}
.chip.is-on{background:var(--accent);border-color:var(--accent);color:#06080B;font-weight:600}
.chip--sm{padding:6px 12px;font-size:.75rem}
.chip--fx.is-on{background:var(--cyan);border-color:var(--cyan)}
.chip--off{border-style:dashed}

.icobtn{
  width:38px;height:38px;display:grid;place-items:center;border:1px solid var(--line);
  border-radius:50%;color:var(--mute);transition:.3s var(--ease);
}
.icobtn:hover{color:var(--chalk);border-color:var(--line-2);transform:translateY(-1px)}
.icobtn svg{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round}

.slider{
  -webkit-appearance:none;appearance:none;width:100%;min-width:82px;height:1px;
  background:var(--line-2);outline:none;cursor:pointer;
}
.slider::-webkit-slider-thumb{-webkit-appearance:none;width:14px;height:14px;border-radius:50%;background:var(--accent);box-shadow:0 0 14px -2px var(--accent)}
.slider::-moz-range-thumb{width:14px;height:14px;border:0;border-radius:50%;background:var(--accent);box-shadow:0 0 14px -2px var(--accent)}

[data-reveal]{opacity:0;transform:translateY(14px);transition:opacity .7s var(--ease),transform .7s var(--ease)}
[data-reveal].in{opacity:1;transform:none}

/* ============================================================
   SHELL
   ============================================================ */
.shell{display:grid;grid-template-rows:auto 1fr auto;height:100svh;position:relative;z-index:1}

/* ---------- topbar ---------- */
.top{
  display:flex;align-items:center;gap:14px;padding:10px var(--pad);
  border-bottom:1px solid var(--line);background:rgba(7,9,13,.72);backdrop-filter:blur(14px) saturate(1.3);
}
.top__brand{display:flex;align-items:center;gap:10px;margin-right:auto;min-width:0}
.top__logo{width:30px;height:30px;border-radius:8px;mix-blend-mode:screen}
.top__text{height:16px;width:auto;mix-blend-mode:screen}
.top__home{display:flex;align-items:center;gap:8px;color:var(--mute-2);transition:color .3s}
.top__home:hover{color:var(--accent)}
.top__ctrl{display:flex;align-items:center;gap:8px}
.top__ctrl label{display:flex;align-items:center;gap:8px;color:var(--mute-2)}
.top__ctrl b{color:var(--chalk);font-weight:500;font-variant-numeric:tabular-nums;min-width:3ch;text-align:right}
.burger{display:none}

/* ---------- body ---------- */
.body{display:grid;grid-template-columns:var(--side) 1fr;min-height:0}

/* ---------- sidebar ---------- */
.sidebar{
  display:grid;grid-template-rows:auto auto 1fr;min-height:0;
  border-right:1px solid var(--line);background:var(--void-2);
}
.sidebar__head{display:flex;align-items:center;gap:10px;padding:14px var(--pad) 10px}
.sidebar__head h2{font-size:.9375rem;font-weight:600;letter-spacing:-.02em;margin-right:auto}
.sidebar__tabs{display:flex;gap:6px;padding:0 var(--pad) 12px;border-bottom:1px solid var(--line)}
.sidebar__tabs .chip{flex:1;text-align:center;padding:8px 4px}
.sidebar__body{overflow:auto;overscroll-behavior:contain;padding:14px var(--pad) 26px;scrollbar-width:thin}
.sidebar__body::-webkit-scrollbar{width:6px}
.sidebar__body::-webkit-scrollbar-thumb{background:var(--line-2);border-radius:3px}
.sidebar__close{display:none}

.field{
  width:100%;padding:10px 14px;margin-bottom:12px;border:1px solid var(--line);border-radius:var(--r);
  background:var(--ink);color:var(--chalk);font:inherit;font-size:.875rem;
}
.field::placeholder{color:var(--mute-2)}
.field:focus{border-color:var(--accent);outline:none}

.blockhead{display:flex;align-items:baseline;gap:10px;margin:18px 0 10px;color:var(--mute-2)}
.blockhead:first-child{margin-top:0}
.blockhead::after{content:"";flex:1;height:1px;background:var(--line)}
.hint{color:var(--mute-2);line-height:1.6;margin:8px 0}
.row{display:flex;flex-wrap:wrap;gap:6px}

.theme{
  display:flex;align-items:center;gap:11px;width:100%;padding:9px 10px;margin-bottom:4px;
  border:1px solid transparent;border-radius:12px;text-align:left;transition:.3s var(--ease);
}
.theme:hover{background:rgba(255,255,255,.04);border-color:var(--line)}
.theme.is-on{background:color-mix(in srgb,var(--c) 12%,transparent);border-color:color-mix(in srgb,var(--c) 45%,transparent)}
.theme__img{width:34px;height:34px;border-radius:9px;object-fit:cover;flex:none;background:#000;mix-blend-mode:screen}
.theme__body{display:grid;gap:1px;min-width:0;flex:1}
.theme__body b{font-size:.875rem;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.theme__body i{color:var(--mute-2);font-style:normal;font-family:var(--f-mono);font-size:.625rem;letter-spacing:.1em;text-transform:uppercase}
.theme__dot{width:8px;height:8px;border-radius:50%;border:1.5px solid var(--c);flex:none;transition:.3s}
.theme.is-on .theme__dot{background:var(--c);box-shadow:0 0 12px var(--c)}

.sound{
  display:flex;align-items:center;gap:10px;width:100%;padding:8px 10px;margin-bottom:3px;
  border:1px solid transparent;border-radius:10px;text-align:left;transition:.25s var(--ease);
}
.sound:hover{background:rgba(255,255,255,.04);border-color:var(--line)}
.sound__dot{width:9px;height:9px;border-radius:50%;border:1.5px solid var(--c);flex:none}
.sound__body{display:grid;gap:1px;min-width:0;flex:1}
.sound__body b{font-size:.8125rem;font-weight:400;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sound__body i{color:var(--mute-2);font-style:normal;font-family:var(--f-mono);font-size:.5625rem;letter-spacing:.1em;text-transform:uppercase}
.sound__play{color:var(--mute-2);padding:4px 6px;border-radius:6px;transition:.25s}
.sound__play:hover{color:var(--accent);background:rgba(255,255,255,.06)}

.lesson{display:flex;align-items:center;gap:8px;border-bottom:1px solid var(--line)}
.lesson__go{flex:1;display:grid;grid-template-columns:auto 1fr;gap:2px 10px;padding:12px 4px;text-align:left;transition:.3s var(--ease)}
.lesson__go span{grid-row:span 2;color:var(--accent);align-self:center;font-family:var(--f-mono);font-size:.6875rem;letter-spacing:.1em}
.lesson__go b{font-size:.875rem;font-weight:500}
.lesson__go i{color:var(--mute-2);font-style:normal;font-size:.75rem}
.lesson__go:hover b{color:var(--accent)}
.lesson__link{color:var(--mute-2);padding:6px}
.lesson__link:hover{color:var(--accent)}

.packcard{padding:12px 14px;border:1px solid var(--line);border-radius:14px;background:rgba(255,255,255,.02);margin-bottom:14px}
.packcard h3{font-size:.9375rem;font-weight:600;letter-spacing:-.02em;margin-bottom:4px}
.packcard p{color:var(--mute);font-size:.8125rem;line-height:1.55}
.packcard .mono{display:block;margin-top:8px;color:var(--mute-2);font-size:.5625rem;line-height:1.7}
.packcard a{color:var(--accent)}

/* ---------- stage ---------- */
.stage{position:relative;display:grid;grid-template-rows:auto 1fr auto auto;min-height:0;overflow:hidden}
.stage__canvas{position:absolute;inset:0;width:100%;height:100%;z-index:0;pointer-events:none}
.stage__vig{
  position:absolute;inset:0;z-index:1;pointer-events:none;
  background:radial-gradient(120% 80% at 50% 45%,transparent 38%,rgba(7,9,13,.62) 76%,rgba(7,9,13,.94) 100%);
}
.hud,.pads,.deck,.learn{position:relative;z-index:2}

.hud{
  display:flex;align-items:center;gap:clamp(12px,2.4vw,32px);flex-wrap:wrap;
  padding:10px var(--pad);border-bottom:1px solid var(--line);color:var(--mute-2);
}
.hud__cell{display:flex;align-items:center;gap:8px}
.hud__cell b{color:var(--chalk);font-weight:500;font-variant-numeric:tabular-nums}
.hud__cell b.accent{color:var(--accent)}
.hud__status{margin-left:auto;color:var(--mute);text-align:right;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* the pad field itself */
.pads{container-type:size;padding:clamp(10px,1.6vw,22px) var(--pad);min-height:0;display:grid}
.grid{
  --cols:7;--rows:4;--gap:clamp(6px,1.4cqw,16px);
  --cell:min(
    (100cqw - (var(--cols) - 1) * var(--gap)) / var(--cols),
    (100cqh - (var(--rows) - 1) * var(--gap)) / var(--rows)
  );
  display:grid;place-content:center;gap:var(--gap);
  grid-template-columns:repeat(var(--cols),var(--cell));
  grid-auto-rows:var(--cell);
  touch-action:none;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;
  transition:opacity .35s var(--ease),transform .35s var(--ease);
}
.grid.is-swapping{opacity:.25;transform:scale(.97)}
@supports not (container-type:size){
  .grid{grid-template-columns:repeat(var(--cols),minmax(0,1fr));grid-auto-rows:auto;place-content:stretch}
  .grid .pad{aspect-ratio:1}
}

/* ---------- one pad ---------- */
.pad{
  position:relative;display:grid;place-items:center;border-radius:50%;
  color:var(--chalk);touch-action:none;
  animation:padIn .55s var(--ease) both;animation-delay:calc(var(--i) * 14ms);
  transition:transform .18s var(--ease);
}
@keyframes padIn{from{opacity:0;transform:scale(.7)}to{opacity:1;transform:none}}
.pad__ring{position:absolute;inset:0;width:100%;height:100%;overflow:visible}
.pad__ring circle{fill:none;stroke-linecap:round;transform:rotate(-90deg);transform-origin:50% 50%}
.pad__track{stroke:rgba(255,255,255,.13);stroke-width:2.4}
.pad__vol{stroke:var(--c);stroke-width:3.2;opacity:.78;transition:stroke-dashoffset .18s var(--ease),stroke .3s,opacity .25s;filter:drop-shadow(0 0 4px color-mix(in srgb,var(--c) 40%,transparent))}
.pad:hover .pad__vol,.pad.is-playing .pad__vol{opacity:1;filter:drop-shadow(0 0 9px color-mix(in srgb,var(--c) 70%,transparent))}

.pad__core{
  position:absolute;width:56%;height:56%;border-radius:50%;
  background:radial-gradient(circle,color-mix(in srgb,var(--c) 92%,transparent),color-mix(in srgb,var(--c) 12%,transparent) 70%);
  opacity:0;transform:scale(.5);transition:opacity .25s var(--ease),transform .25s var(--ease);
}
.pad__name{
  position:relative;z-index:2;max-width:78%;text-align:center;font-size:clamp(.5rem,1.35cqw,.78rem);
  line-height:1.15;color:var(--mute);letter-spacing:-.01em;
  display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;
  transition:color .25s;pointer-events:none;
}
.pad__tag{
  position:absolute;top:14%;left:50%;translate:-50% 0;z-index:2;
  font-size:clamp(.45rem,.95cqw,.6rem);color:var(--c);opacity:.85;pointer-events:none;
}
.pad__key{
  position:absolute;bottom:12%;left:50%;translate:-50% 0;z-index:2;
  font-size:clamp(.42rem,.85cqw,.55rem);color:var(--mute-2);opacity:.5;pointer-events:none;
}

.pad:hover{transform:translateY(-2px)}
.pad:hover .pad__track{stroke:rgba(255,255,255,.28)}
.pad:hover .pad__name{color:var(--chalk)}

.pad.is-playing .pad__core{opacity:.9;transform:scale(1)}
.pad.is-playing .pad__name{color:#06080B;font-weight:600}
.pad.is-playing .pad__tag{color:#06080B;opacity:1}
.pad.is-playing{filter:drop-shadow(0 0 18px color-mix(in srgb,var(--c) 50%,transparent))}
.pad.is-playing[data-light="2"] .pad__core,
.pad.is-playing[data-light="3"] .pad__core{animation:padBreathe 1.1s var(--ease-io) infinite}
@keyframes padBreathe{0%,100%{transform:scale(1);opacity:.9}50%{transform:scale(.86);opacity:.62}}

/* the ring that flies off a struck pad */
.pad::after{
  content:"";position:absolute;inset:0;border-radius:50%;
  border:2px solid var(--c);opacity:0;pointer-events:none;
}
.pad.is-hit::after{animation:padRipple .62s var(--ease) forwards}
@keyframes padRipple{
  0%{opacity:.85;transform:scale(1)}
  100%{opacity:0;transform:scale(1.85)}
}
.pad.is-hit{transform:scale(.93)}

.pad.is-empty .pad__track{stroke:rgba(255,255,255,.10);stroke-dasharray:5 7}
.pad.is-empty .pad__vol{stroke:transparent}
.pad.is-empty .pad__tag{color:var(--mute-2);font-size:clamp(.7rem,1.7cqw,1rem);top:auto}
.pad.is-empty .pad__key{opacity:.22}
.pad.is-empty:hover .pad__tag{color:var(--accent)}

.pad.is-editing{transform:scale(.94)}
.pad.is-editing .pad__track{stroke:var(--c)}
.pad.is-armed .pad__track,.pad.is-picked .pad__track{stroke:var(--accent);stroke-dasharray:4 6;animation:spin 5s linear infinite}
@keyframes spin{to{stroke-dashoffset:-200}}

body[data-tool="remove"] .pad:not(.is-empty):hover .pad__track{stroke:var(--coral)}
body[data-tool="remove"] .pad.is-editing .pad__track{stroke:var(--coral);animation:spin 1s linear infinite}

/* ---------- deck under the grid ---------- */
.deck{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:10px var(--pad);border-top:1px solid var(--line)}
.deck__lbl{color:var(--mute-2);margin-right:2px}
.deck__grp{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.deck__sep{width:1px;height:22px;background:var(--line)}
.deck__right{margin-left:auto;display:flex;align-items:center;gap:8px}

/* ---------- bottom bar ---------- */
.foot{
  display:grid;grid-template-columns:1fr auto;align-items:center;gap:clamp(10px,2vw,26px);
  padding:9px var(--pad);border-top:1px solid var(--line);background:var(--void-2);
}
.fxbar{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.scope{width:clamp(120px,20vw,260px);height:38px;opacity:.9}

/* ---------- learn banner ---------- */
.learn{
  display:flex;align-items:center;gap:14px;margin:0 var(--pad) 4px;padding:10px 16px;
  border:1px solid var(--line-2);border-radius:16px;background:rgba(12,15,21,.86);backdrop-filter:blur(10px);
  animation:learnIn .5s var(--ease) both;
}
@keyframes learnIn{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
.learn__body{flex:1;display:grid;gap:6px;min-width:0}
.learn__body b{font-size:.875rem;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.learn__bar{height:2px;background:var(--line);border-radius:2px;overflow:hidden}
.learn__bar i{display:block;height:100%;width:0;background:var(--grad);transition:width .1s linear}

/* ---------- toast ---------- */
.toast{
  position:fixed;left:50%;bottom:78px;translate:-50% 12px;z-index:9600;
  padding:11px 20px;border:1px solid var(--line-2);border-radius:var(--r);
  background:rgba(12,15,21,.93);backdrop-filter:blur(10px);font-size:.875rem;
  opacity:0;pointer-events:none;transition:.4s var(--ease);
}
.toast.is-on{opacity:1;translate:-50% 0}
.toast[data-tone="bad"]{border-color:color-mix(in srgb,var(--coral) 55%,transparent);color:var(--coral)}

/* drag & drop */
body.is-dropping .stage::after{
  content:"Drop audio files to import";position:absolute;inset:12px;z-index:8;
  display:grid;place-content:center;border:2px dashed var(--accent);border-radius:20px;
  background:rgba(7,9,13,.82);font-family:var(--f-mono);font-size:.75rem;letter-spacing:.14em;text-transform:uppercase;color:var(--accent);
}

/* ============================================================
   RESPONSIVE
   ============================================================ */
@media (max-width:1080px){
  .body{grid-template-columns:1fr}
  .burger{display:grid}
  .sidebar{
    position:fixed;inset:0 auto 0 0;z-index:700;width:min(340px,88vw);
    transform:translateX(-102%);transition:transform .5s var(--ease);
    box-shadow:30px 0 80px -40px #000;
  }
  .sidebar.is-open{transform:none}
  .sidebar__close{display:grid}
  .grid{--cols:4;--rows:7}
  .hud__cell--pads,.hud__cell--tool{display:none}
}
@media (max-width:720px){
  .top__text{display:none}
  .top__ctrl label span{display:none}
  .foot{grid-template-columns:1fr;padding-block:7px}
  .scope{display:none}
  .deck__lbl{display:none}
  /* the toolbars become one swipeable strip so the pads keep the height */
  .deck,.fxbar{flex-wrap:nowrap;overflow-x:auto;overflow-y:hidden;scrollbar-width:none;-webkit-overflow-scrolling:touch}
  .deck::-webkit-scrollbar,.fxbar::-webkit-scrollbar{display:none}
  .deck{padding-block:7px;gap:8px}
  .deck__grp{flex-wrap:nowrap}
  .deck__right{margin-left:0}
  .deck .chip,.fxbar .chip{flex:none}
  .learn{margin-bottom:0}
}
@media (max-width:520px){
  .hud__cell--bpm{display:none}
  .grid{--gap:clamp(5px,1.6cqw,10px)}
}

@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}
  [data-reveal]{opacity:1;transform:none}
  .pad{animation:none}
}
