/* preset player — weaveraudio.com · all classes pp- prefixed · theme via custom properties */
.pp{
  --pp-cream:#F4EFE5; --pp-ink:#1A1814; --pp-oxblood:#8C2A1F;
  /* page */
  --pp-bg:var(--pp-cream); --pp-fg:var(--pp-ink); --pp-muted:#5E574C; --pp-rule:rgba(26,24,20,.16);
  /* panel (paper defaults) */
  --pp-panel:transparent; --pp-pfg:var(--pp-ink); --pp-pmuted:#5E574C;
  --pp-prule:rgba(26,24,20,.16); --pp-pline:rgba(26,24,20,.55); --pp-pbar:rgba(26,24,20,.2);
  --pp-hover:rgba(26,24,20,.05); --pp-inv-bg:var(--pp-ink); --pp-inv-fg:var(--pp-cream);
  /* set per module from JS: --pp-hue --pp-accent --pp-accent-text --pp-fill --pp-on-fill --pp-accent-ink */
  font-family:'Inter Tight',ui-sans-serif,system-ui,-apple-system,'Helvetica Neue',Arial,sans-serif;
  font-weight:500; color:var(--pp-fg); background:var(--pp-bg);
  text-transform:lowercase; -webkit-font-smoothing:antialiased; box-sizing:border-box;
}
.pp *,.pp *::before,.pp *::after{box-sizing:border-box}
.pp--ink{
  --pp-panel:var(--pp-ink); --pp-pfg:var(--pp-cream); --pp-pmuted:#A39C8F;
  --pp-prule:rgba(244,239,229,.13); --pp-pline:rgba(244,239,229,.42); --pp-pbar:rgba(244,239,229,.22);
  --pp-hover:rgba(244,239,229,.06); --pp-inv-bg:var(--pp-cream); --pp-inv-fg:var(--pp-ink);
}
.pp-mono{font-family:'JetBrains Mono',ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-weight:600;font-variant-numeric:tabular-nums;letter-spacing:0}
.pp-live{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}

/* frame widths for the prototype */
.pp--desktop{width:1280px;padding:56px 90px 88px}
.pp--mobile{width:390px;padding:24px 16px 56px}
.pp--mobile .pp-desk{display:none}
.pp--desktop .pp-phone{display:none}

/* ── hero stand-in ─────────────────────────── */
.pp-standin{font-size:11px;color:var(--pp-muted);margin:0 0 12px}
.pp-hero{display:grid;grid-template-columns:600px minmax(0,1fr);gap:32px}
.pp--mobile .pp-hero{grid-template-columns:minmax(0,1fr);gap:12px}
.pp-face{background:var(--pp-ink);color:var(--pp-cream);border-radius:2px;padding:18px 24px 26px;display:flex;flex-direction:column;gap:26px}
.pp--mobile .pp-face{padding:14px 14px 18px;gap:18px}
.pp-face-top{display:flex;justify-content:space-between;align-items:baseline;gap:12px;padding-bottom:14px;border-bottom:1px solid rgba(244,239,229,.13)}
.pp-face-name{font-weight:600;font-size:20px;letter-spacing:-.01em}
.pp-face-group{display:flex;align-items:center;gap:8px;font-size:11px;color:#A39C8F}
.pp-swatch{display:block;width:10px;height:10px;background:var(--pp-hue)}
.pp-knobs{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px}
.pp-knob{display:flex;flex-direction:column;align-items:center;gap:10px}
.pp-dial{position:relative;width:64px;height:64px;border-radius:50%;border:1px solid rgba(244,239,229,.5);box-shadow:0 0 0 0 transparent;transition:box-shadow 200ms linear}
.pp--mobile .pp-dial{width:46px;height:46px}
.pp-ptr{position:absolute;inset:0;transition:transform 400ms cubic-bezier(.2,.7,.2,1)}
.pp-ptr::after{content:'';position:absolute;left:50%;top:6px;width:2px;height:22px;background:currentColor;transform:translateX(-50%)}
.pp--mobile .pp-dial .pp-ptr::after{top:4px;height:16px}
.pp-klabel{font-size:11px;color:#A39C8F;transition:color 200ms linear}
.pp-kval{font-size:11px;color:#A39C8F;margin-top:-6px}
.pp-knob.is-moved .pp-dial{box-shadow:0 0 0 3px var(--pp-ink),0 0 0 5px var(--pp-accent-ink)}
.pp-knob.is-moved .pp-klabel{color:var(--pp-accent-ink)}
.pp-mod{display:flex;align-items:center;justify-content:center;border:1px dashed rgba(26,24,20,.35);border-radius:2px;font-size:11px;color:var(--pp-muted);min-height:220px}
.pp--mobile .pp-mod{min-height:64px}

/* ── section head ──────────────────────────── */
.pp-head{display:grid;grid-template-columns:minmax(0,1fr) 400px;gap:48px;align-items:end;margin:96px 0 28px}
.pp--mobile .pp-head{grid-template-columns:minmax(0,1fr);gap:12px;margin:56px 0 20px}
.pp-eyebrow{font-size:12px;color:var(--pp-muted);margin:0 0 14px}
.pp-title{font-weight:600;font-size:44px;line-height:1.02;letter-spacing:-.025em;margin:0;text-wrap:balance}
.pp--mobile .pp-title{font-size:30px}
.pp-sub{font-size:16px;line-height:1.5;color:var(--pp-muted);margin:0;text-wrap:pretty}
.pp--mobile .pp-sub{font-size:15px}

/* ── panel ─────────────────────────────────── */
.pp-panel{background:var(--pp-panel);color:var(--pp-pfg);position:relative}
.pp--ink .pp-panel{padding:40px;border-radius:2px}
.pp--paper .pp-panel{border-top:1px solid var(--pp-ink);border-bottom:1px solid var(--pp-prule);padding:32px 0 36px}
.pp--mobile.pp--ink .pp-panel{padding:20px 16px 24px}
.pp--mobile.pp--paper .pp-panel{padding:20px 0 24px}
.pp-grid{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,5fr);gap:56px}
.pp--mobile .pp-grid{grid-template-columns:minmax(0,1fr);gap:28px}
.pp-stage{display:flex;flex-direction:column;gap:22px;min-width:0}

/* now playing */
.pp-now{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:16px;align-items:end;min-height:116px}
.pp--mobile .pp-now{grid-template-columns:minmax(0,1fr);min-height:0;gap:14px}
.pp-now-idx{font-size:12px;color:var(--pp-pmuted)}
.pp-now-name{font-weight:600;font-size:40px;line-height:1.05;letter-spacing:-.025em;margin:8px 0 10px;transition:opacity 120ms linear}
.pp--mobile .pp-now-name{font-size:30px}
.pp-now-name.is-dim{opacity:.38}
.pp-now-meta{display:flex;flex-wrap:wrap;gap:6px 16px;font-size:12px;color:var(--pp-pmuted);min-height:16px}
.pp-moved em{font-style:normal;color:var(--pp-accent-text)}
.pp-badge{color:var(--pp-accent-text)}
.pp-minis{display:flex;gap:10px}
.pp-mini{display:flex;flex-direction:column;align-items:center;gap:6px;font-size:10px;color:var(--pp-pmuted);transition:color 200ms linear}
.pp-mini-dial{position:relative;width:24px;height:24px;border-radius:50%;border:1px solid var(--pp-pline);color:var(--pp-pfg);transition:border-color 200ms linear,color 200ms linear}
.pp-mini-dial .pp-ptr::after{top:2px;width:1.5px;height:8px}
.pp-mini.is-moved{color:var(--pp-accent-text)}
.pp-mini.is-moved .pp-mini-dial{border-color:var(--pp-accent);color:var(--pp-accent)}

/* waveform */
.pp-wave{position:relative;height:128px}
.pp--mobile .pp-wave{height:96px}
.pp-wave::before{content:'';position:absolute;left:0;right:0;top:50%;height:1px;background:var(--pp-prule)}
.pp-bars{position:absolute;inset:0;display:flex;align-items:center;gap:2px}
.pp--mobile .pp-bars{gap:1px}
.pp-bar{flex:1 1 0;min-width:0;background:var(--pp-pbar);transition:height 160ms cubic-bezier(.3,0,.2,1)}
.pp-bars--played .pp-bar{background:var(--pp-accent)}
.pp-outline{position:absolute;inset:0;width:100%;height:100%;overflow:visible}
.pp-outline polygon{fill:none;stroke:var(--pp-pline);stroke-width:1;vector-effect:non-scaling-stroke}
.pp-playhead{position:absolute;top:-8px;bottom:-8px;width:2px;margin-left:-1px;background:var(--pp-accent);pointer-events:none}
.pp-range{position:absolute;left:0;top:-8px;width:100%;height:calc(100% + 16px);margin:0;opacity:0;cursor:ew-resize;-webkit-appearance:none;appearance:none}
.pp-wave:has(.pp-range:focus-visible){outline:2px solid var(--pp-accent);outline-offset:10px}
.pp-timerow{display:flex;justify-content:space-between;font-size:12px;color:var(--pp-pmuted);margin-top:-6px}
.pp-time{color:var(--pp-pfg)}

/* transport */
.pp-transport{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.pp-btn{appearance:none;-webkit-appearance:none;font:inherit;font-size:14px;text-transform:lowercase;height:44px;min-width:44px;padding:0 14px;display:inline-flex;align-items:center;justify-content:center;gap:8px;border:1px solid var(--pp-pline);border-radius:2px;background:transparent;color:var(--pp-pfg);cursor:pointer;user-select:none;-webkit-user-select:none;touch-action:manipulation;transition:background-color 120ms linear,color 120ms linear,border-color 120ms linear}
.pp-btn:hover{background:var(--pp-hover)}
.pp-btn--icon{width:44px;padding:0}
.pp-btn--play{width:56px;height:56px;padding:0;background:var(--pp-inv-bg);color:var(--pp-inv-fg);border-color:var(--pp-inv-bg)}
.pp-btn--play:hover{background:var(--pp-inv-bg);opacity:.88}
.pp-btn.is-on{background:var(--pp-fill);color:var(--pp-on-fill);border-color:var(--pp-fill)}
.pp-btn svg{display:block;flex:none}
.pp-sep{width:1px;height:28px;background:var(--pp-prule);margin:0 6px}
.pp-kbd{font-size:11px;line-height:18px;padding:0 5px;border:1px solid var(--pp-prule);border-radius:2px;color:var(--pp-pmuted)}
.pp-btn.is-on .pp-kbd{color:inherit;border-color:currentColor}
.pp-check{width:12px;height:12px;border:1px solid currentColor;display:block;position:relative}
.pp-btn.is-on .pp-check::after{content:'';position:absolute;inset:2px;background:currentColor}
.pp-btn:focus-visible,.pp-row:focus-visible,.pp-ref:focus-visible{outline:2px solid var(--pp-accent);outline-offset:2px}

/* preset list */
.pp-listhead{display:flex;justify-content:space-between;font-size:11px;color:var(--pp-pmuted);padding:0 12px 10px;border-bottom:1px solid var(--pp-prule)}
.pp-list{list-style:none;margin:0;padding:0}
.pp-li{margin:0;padding:0}
.pp-row{appearance:none;-webkit-appearance:none;font:inherit;text-transform:lowercase;width:100%;height:44px;display:grid;grid-template-columns:28px minmax(0,1fr) auto;align-items:center;gap:12px;padding:0 12px;border:0;border-bottom:1px solid var(--pp-prule);border-radius:0;background:transparent;color:var(--pp-pfg);text-align:left;cursor:pointer;position:relative;transition:background-color 120ms linear,color 120ms linear}
.pp--mobile .pp-row{height:52px}
.pp-row:hover{background:var(--pp-hover)}
.pp-row.is-active{background:var(--pp-fill);color:var(--pp-on-fill)}
.pp-row-num{font-size:12px;color:var(--pp-pmuted);display:flex;align-items:center}
.pp-row.is-active .pp-row-num,.pp-row.is-active .pp-row-tags{color:inherit}
.pp-row-name{font-size:15px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pp-row-tags{font-size:11px;color:var(--pp-pmuted);white-space:nowrap}
.pp-row:disabled{cursor:not-allowed}
.pp-row:disabled:hover{background:transparent}
.pp-row:disabled .pp-row-name{color:var(--pp-pmuted)}
.pp-row.is-loading::after{content:'';position:absolute;left:0;bottom:-1px;height:2px;width:100%;background:var(--pp-accent);transform-origin:left;animation:pp-load 900ms steps(9,end) infinite}
@keyframes pp-load{from{transform:scaleX(0)}to{transform:scaleX(1)}}
.pp-ref{appearance:none;-webkit-appearance:none;font:inherit;text-transform:lowercase;width:100%;height:44px;margin-top:12px;display:grid;grid-template-columns:28px minmax(0,1fr) auto;align-items:center;gap:12px;padding:0 11px;border:1px dashed var(--pp-pline);border-radius:2px;background:transparent;color:var(--pp-pfg);text-align:left;cursor:pointer;transition:border-color 120ms linear,background-color 120ms linear}
.pp--mobile .pp-ref{height:52px}
.pp-ref:hover{background:var(--pp-hover)}
.pp-ref.is-active{border-style:solid;border-color:var(--pp-accent)}
.pp-ref.is-active .pp-row-name{color:var(--pp-accent-text)}
.pp-ref-tag{font-size:11px;color:var(--pp-pmuted)}

/* foot */
.pp-foot{display:flex;justify-content:space-between;gap:24px;margin-top:18px;font-size:13px;color:var(--pp-muted)}
.pp-keys{font-size:11px}

/* mobile sticky mini bar */
.pp-minibar{position:relative;display:grid;grid-template-columns:minmax(0,1fr) 44px 44px;align-items:center;gap:4px;height:60px;padding:0 8px 0 16px;background:var(--pp-ink);color:var(--pp-cream)}
.pp-minibar-prog{position:absolute;left:0;top:0;height:2px;background:var(--pp-accent-ink)}
.pp-minibar-name{font-size:15px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pp-minibar-meta{font-size:11px;color:#A39C8F}
.pp-minibar .pp-btn{border:0;color:var(--pp-cream)}

/* no-js fallback */
.pp-nojs{list-style:none;margin:0;padding:0;border-top:1px solid var(--pp-ink)}
.pp-nojs li{display:grid;grid-template-columns:minmax(0,1fr) 260px;align-items:center;gap:16px;padding:10px 0;border-bottom:1px solid var(--pp-rule)}
.pp-nojs audio{width:100%;height:36px}

@media (prefers-reduced-motion: reduce){
  .pp *,.pp *::before,.pp *::after{transition:none !important;animation:none !important}
}
