.gd-grid{display:grid;grid-template-columns:52px repeat(16,minmax(22px,1fr));gap:6px 4px;padding:22px 20px 18px;min-width:560px;align-items:center}
.gd-grid .gd-row{font-size:11px;letter-spacing:.12em;color:#8c8c8c;text-transform:uppercase}
.gd-grid button{appearance:none;aspect-ratio:1/1;width:min(100%,28px);justify-self:center;border:1px solid rgba(255,255,255,.28);background:transparent;padding:0;cursor:pointer;border-radius:50%;transition:background .1s,transform .1s}
.gd-grid button.beat{border-color:rgba(255,255,255,.5)}
.gd-grid button.on{background:#fff;border-color:#fff}
.gd-grid button.now{box-shadow:0 0 0 2px rgba(255,255,255,.35)}
.gd-grid button.on.flash{transform:scale(.8)}
.gd-grid .gd-vel{grid-column:2/-1;height:2px;background:rgba(255,255,255,.08);position:relative}
.gd-btn{appearance:none;background:transparent;color:#fff;font:inherit;font-size:13px;cursor:pointer}
.gd-btn:hover{border-color:#fff}
.gd-bpm input{width:54px;background:transparent;border:0;color:#fff;font:inherit;font-size:15px;font-variant-numeric:tabular-nums;-moz-appearance:textfield}
.gd-bpm input::-webkit-inner-spin-button{opacity:.4}
.sd-meter{position:relative;height:clamp(200px,20vw,250px);min-width:320px}
.sd-meter canvas{position:absolute;inset:18px 20px;width:calc(100% - 40px);height:calc(100% - 36px);display:block}
.sd-lbl{position:absolute;top:6px;left:20px;font-size:11px;letter-spacing:.12em;color:#8c8c8c;text-transform:uppercase}
@media (max-width:820px){.gd-grid{min-width:520px;padding:16px}}
