.dashboard-materials {
  margin-top: 1.6rem;
}
.dashboard-materials__head {
  display: flex;
  align-items: end;
  justify-content: space-between;
  gap: 1rem;
  margin-bottom: 1rem;
}
.dashboard-materials__head h2 {
  margin: 0;
  font-size: clamp(1.35rem, 1.1rem + 0.8vw, 1.75rem);
}
.dashboard-purchase-status {
  margin: 0 0 1rem;
  padding: 0.8rem 1rem;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  background: var(--cream-deep);
  color: var(--ink-soft);
  font-size: 0.92rem;
}
.dashboard-purchase-status[hidden] { display: none; }
.dashboard-books {
  display: grid;
  gap: 1rem;
}
.dashboard-book {
  display: grid;
  gap: 1rem;
  padding: 1.1rem;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  background: var(--cream);
}
@media (min-width: 620px) {
  .dashboard-book { grid-template-columns: 92px minmax(0, 1fr); align-items: start; }
}
.dashboard-book__cover {
  width: 92px;
  aspect-ratio: 2 / 3;
  object-fit: cover;
  border-radius: calc(var(--radius) * 0.65);
  border: 1px solid var(--line);
  background: var(--cream-deep);
}
.dashboard-book__body {
  min-width: 0;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 0.45rem;
}
.dashboard-book__body h3 {
  margin: 0;
  font-size: 1.2rem;
}
.dashboard-book__meta {
  margin: 0;
  color: var(--ink-soft);
  font-size: 0.88rem;
}
.dashboard-book__actions {
  display: flex;
  flex-wrap: wrap;
  gap: 0.6rem;
  margin-top: 0.35rem;
}
.dashboard-download[aria-busy="true"] {
  opacity: 0.68;
  cursor: wait;
  pointer-events: none;
}
.dashboard-download[aria-busy="true"]::after {
  content: "";
  width: 0.85em;
  height: 0.85em;
  margin-left: 0.55em;
  display: inline-block;
  vertical-align: -0.08em;
  border: 1.5px solid currentColor;
  border-right-color: transparent;
  border-radius: 50%;
  animation: pi-dashboard-spin 0.7s linear infinite;
}
@keyframes pi-dashboard-spin { to { transform: rotate(360deg); } }
.dashboard-books-empty {
  margin: 0;
  color: var(--ink-soft);
  padding: 1rem 0;
}

/* v160 certificate availability */
.pi-cert-card{margin-top:14px;border:1px solid rgba(39,45,38,.16);background:#f5f2ea;padding:20px;display:flex;justify-content:space-between;align-items:center;gap:18px;border-radius:12px}.pi-cert-card strong{display:block;font-size:1.15rem;margin:.2rem 0}.pi-cert-card p{margin:.35rem 0 0;max-width:62ch}@media(max-width:680px){.pi-cert-card{align-items:stretch;flex-direction:column}.pi-cert-card .btn{width:100%;text-align:center}}
