/* Self-hosted podcast player.
   No CDN, no framework, no build step — this ships as two static files and must
   keep working for as long as the archive does. Progressive enhancement: the
   markup starts as a native <audio controls>, and JS upgrades it. If the script
   fails to load, the native player is still there and still plays. */
.pp-player{
  --pp-accent:#4d96b5; --pp-accent-dark:#3b7590;
  --pp-bg:#ffffff; --pp-fg:#1c2530; --pp-muted:#5d6b7a; --pp-track:#dfe6ec;
  border:1px solid #dbe3ea; border-radius:10px; background:var(--pp-bg);
  padding:16px 18px; margin:22px 0; max-width:100%;
  font-family:inherit; color:var(--pp-fg);
  box-shadow:0 1px 2px rgba(16,32,48,.05);
}
.pp-player *{box-sizing:border-box}
.pp-top{display:flex; gap:14px; align-items:center; margin-bottom:12px}
.pp-art{width:64px;height:64px;border-radius:6px;flex:0 0 64px;object-fit:cover;background:var(--pp-track)}
.pp-meta{min-width:0;flex:1}
.pp-title{font-weight:700;font-size:1rem;line-height:1.3;margin:0 0 3px;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.pp-show{font-size:.8rem;color:var(--pp-muted);margin:0}
.pp-controls{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.pp-btn{border:0;background:transparent;color:var(--pp-fg);cursor:pointer;
  padding:6px;border-radius:6px;display:inline-flex;align-items:center;justify-content:center;
  line-height:0}
.pp-btn:hover{background:#eef4f8;color:var(--pp-accent-dark)}
.pp-btn:focus-visible{outline:2px solid var(--pp-accent);outline-offset:2px}
.pp-play{background:var(--pp-accent);color:#fff;width:46px;height:46px;border-radius:50%;flex:0 0 46px}
.pp-play svg{width:22px;height:22px;display:block}
.pp-dl svg{width:18px;height:18px;display:block}
.pp-player svg{max-width:100%;max-height:100%}
.pp-play:hover{background:var(--pp-accent-dark);color:#fff}
.pp-skip{position:relative;font-size:.62rem;font-weight:700;color:var(--pp-muted)}
.pp-skip svg{width:26px;height:26px}
.pp-skip span{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;
  padding-top:2px;font-size:.58rem;pointer-events:none}
.pp-time{font-variant-numeric:tabular-nums;font-size:.8rem;color:var(--pp-muted);white-space:nowrap}
.pp-bar{flex:1 1 160px;min-width:120px;height:22px;display:flex;align-items:center;cursor:pointer;position:relative}
.pp-bar-track{height:5px;width:100%;background:var(--pp-track);border-radius:3px;overflow:hidden}
.pp-bar-fill{height:100%;width:0;background:var(--pp-accent);border-radius:3px}
.pp-bar-buf{position:absolute;height:5px;background:#c9d6e0;border-radius:3px;left:0;top:50%;transform:translateY(-50%)}
.pp-bar:focus-visible{outline:2px solid var(--pp-accent);outline-offset:3px;border-radius:4px}
.pp-rate{border:1px solid #cfdae3;background:#fff;color:var(--pp-fg);border-radius:6px;
  padding:5px 8px;font-size:.78rem;font-weight:600;cursor:pointer;font-family:inherit}
.pp-rate:hover{border-color:var(--pp-accent)}
.pp-vol{width:74px;accent-color:var(--pp-accent)}
.pp-dl{color:var(--pp-muted);text-decoration:none}
.pp-dl:hover{color:var(--pp-accent-dark)}
.pp-player audio{width:100%}
.pp-player.pp-ready audio{display:none}
@media (max-width:600px){
  .pp-art{width:52px;height:52px;flex-basis:52px}
  .pp-vol,.pp-dl{display:none}
  .pp-bar{flex-basis:100%;order:10}
}
