.haptic-demo[data-v-ded2d909]{background:#fff;border:1px solid #e0ddd8;border-radius:12px;margin:2rem 0;max-width:100%;overflow:hidden}.haptic-demo__header[data-v-ded2d909]{border-bottom:1px solid #e0ddd8;padding:1rem 1.25rem}.haptic-demo__badge[data-v-ded2d909]{background:var(--highlight-color,#d9534f);border-radius:4px;color:#fff;display:inline-block;font-family:Noto Sans,sans-serif;font-size:.7rem;font-weight:700;letter-spacing:.05em;padding:.2em .6em;text-transform:uppercase}.haptic-demo__subtitle[data-v-ded2d909]{color:#666;font-size:.85rem;margin:.5rem 0 0}.haptic-demo__grid[data-v-ded2d909]{background:#e0ddd8;display:grid;gap:1px;grid-template-columns:repeat(2,1fr)}@media(min-width:600px){.haptic-demo__grid[data-v-ded2d909]{grid-template-columns:repeat(3,1fr)}}.haptic-demo__button[data-v-ded2d909]{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:#fff;border:0;cursor:pointer;display:flex;flex-direction:column;gap:.35rem;padding:1rem 1.25rem;text-align:left;transition:background .15s ease}.haptic-demo__button[data-v-ded2d909]:hover{background:#faf9f6}.haptic-demo__button--active[data-v-ded2d909]{background:#fef3f2}.haptic-demo__token-name[data-v-ded2d909]{color:var(--highlight-color,#d9534f);font-family:Courier New,Courier,monospace;font-size:.85rem;font-weight:700}.haptic-demo__pattern-label[data-v-ded2d909]{color:#888;font-family:Noto Sans,sans-serif;font-size:.75rem}.haptic-demo__viz[data-v-ded2d909]{align-items:flex-end;display:flex;gap:1px;height:20px;margin-top:.25rem}.haptic-demo__bar[data-v-ded2d909]{border-radius:2px;height:100%;min-width:3px;transition:opacity .1s ease}.haptic-demo__bar--on[data-v-ded2d909]{background:var(--highlight-color,#d9534f);opacity:.3}.haptic-demo__bar--off[data-v-ded2d909]{background:#e0ddd8;opacity:.3}.haptic-demo__viz--playing .haptic-demo__bar--on[data-v-ded2d909]{animation:haptic-pulse-ded2d909 ease-out forwards;opacity:1}.haptic-demo__viz--playing .haptic-demo__bar--off[data-v-ded2d909]{opacity:.5}@keyframes haptic-pulse-ded2d909{0%{opacity:1;transform:scaleY(1)}50%{transform:scaleY(1.3)}to{opacity:.4;transform:scaleY(1)}}
