/* Hallmark · component: PDF viewer toolbar · genre: modern-minimal · theme: Ivory Subject Studio · tone: academic utility · anchor: subject blue · structure: single-row utility toolbar · pre-emit critique: P5 H5 E5 S5 R5 V4
 * states: default · hover · focus · active · disabled · loading · error · success
 * contrast: pass (40–41) · slop: pass (universal component subset) · mobile: pass (34, 49–57)
 */
*, *::before, *::after { box-sizing: border-box; }
html, body { margin: 0; min-width: 0; height: 100%; overflow-x: clip; }
body {
  background: var(--color-paper);
  color: var(--color-ink);
  font-family: var(--font-body);
}
.pdf-viewer {
  display: grid;
  grid-template-rows: auto minmax(0, 1fr);
  width: 100%;
  height: 100dvh;
  min-height: 24rem;
  overflow: hidden;
}
.pdf-toolbar {
  position: relative;
  z-index: 2;
  display: flex;
  align-items: center;
  gap: var(--space-sm);
  min-width: 0;
  min-height: 4rem;
  padding-block: max(var(--space-xs), env(safe-area-inset-top)) var(--space-xs);
  padding-inline: max(var(--space-sm), env(safe-area-inset-left)) max(var(--space-sm), env(safe-area-inset-right));
  border-block-end: var(--rule-heavy) solid var(--color-ink);
  background: var(--color-paper);
  color: var(--color-ink);
}
.pdf-toolbar__meta {
  display: none;
  flex: 1 1 auto;
  min-width: 0;
  line-height: 1.25;
}
.pdf-toolbar__meta strong,
.pdf-toolbar__meta span {
  display: block;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.pdf-toolbar__meta strong { font-family: var(--font-display); }
.pdf-toolbar__meta span { color: var(--color-muted); font-size: var(--text-xs); }
.pdf-action {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 auto;
  min-width: 0;
  min-height: 44px;
  padding-inline: var(--space-md);
  border: var(--rule-hair) solid var(--color-ink);
  background: var(--color-ink);
  color: var(--color-accent-ink);
  font: 700 var(--text-sm)/1 var(--font-body);
  text-decoration: none;
  white-space: nowrap;
  touch-action: manipulation;
  transition: transform var(--dur-micro) var(--ease-out), background-color var(--dur-short) var(--ease-out);
}
.pdf-action--secondary { background: var(--color-surface); color: var(--color-ink); }
@media (hover: hover) and (pointer: fine) {
  .pdf-action:hover { background: var(--color-accent); color: var(--color-accent-ink); }
}
.pdf-action:focus-visible {
  outline: 3px solid var(--color-focus);
  outline-offset: 2px;
}
.pdf-action:active { transform: translateY(1px); }
.pdf-action[aria-disabled="true"] { opacity: 0.55; cursor: not-allowed; pointer-events: none; }
.pdf-action[data-state="loading"] { cursor: wait; }
.pdf-action[data-state="error"] { border-color: var(--color-accent); background: var(--color-surface); color: var(--color-accent); }
.pdf-action[data-state="success"] { border-color: var(--color-science); background: var(--color-science); color: var(--color-accent-ink); }
.pdf-frame {
  display: block;
  width: 100%;
  height: 100%;
  min-width: 0;
  min-height: 0;
  border: 0;
  background: var(--color-surface);
}
.pdf-error {
  display: none;
  place-content: center;
  gap: var(--space-sm);
  min-height: 0;
  padding: var(--space-lg);
  background: var(--color-surface);
  color: var(--color-ink);
  text-align: center;
}
.pdf-error h1 { margin: 0; font: 700 var(--text-lg)/1.2 var(--font-display); font-style: normal; }
.pdf-error p { margin: 0; color: var(--color-muted); }
.pdf-viewer[data-state="error"] .pdf-frame { display: none; }
.pdf-viewer[data-state="error"] .pdf-error { display: grid; }
.visually-hidden {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}
@media (min-width: 40rem) {
  .pdf-toolbar__meta { display: block; }
}
@media print {
  .pdf-toolbar { display: none; }
  .pdf-viewer { display: block; height: auto; overflow: visible; }
  .pdf-frame { height: 100dvh; }
}
@media (prefers-reduced-motion: reduce) {
  .pdf-action { transition-duration: 0.01ms; }
}
