/* Resume — the PDF sits in the same terminal window the blog listing and the
   post pager use. .stage, .win, .win-bar, .win-dot and .win-name are that
   shared chrome, defined in blog.css; every sheet ships on every page (see
   basehead.html), so this one can rely on it being parsed. */

.resume__viewer {
  display: block;
  width: 100%;
  height: 78vh;
  min-height: 560px;
  /* .win draws the frame and clips the corners; the embed only fills it. */
  border: none;
  background: var(--code-bg);
}

.resume__fallback {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 16px;
  padding: 64px 24px;
  text-align: center;
  color: var(--text-muted);
}

.resume__fallback-title {
  margin: 0;
  font-family: var(--font-display);
  font-size: 14px;
  letter-spacing: 0.04em;
  color: var(--accent);
}

.resume__fallback-text {
  max-width: 380px;
  margin: 0;
  font-size: 13px;
  line-height: 1.7;
}

/* The nav key's travel in brick — same 0.11s throw, seated on --dl-seat.
   Hover brightens rather than swapping a face colour, since there is no
   lighter brick in the palette to swap to. */
.dlkey {
  display: inline-flex;
  align-items: center;
  gap: 9px;
  padding: 11px 16px;
  font-family: var(--font-display);
  font-size: 11px;
  letter-spacing: 0.05em;
  text-decoration: none;
  color: var(--bg);
  background: var(--accent);
  border: 1px solid var(--accent-hover);
  border-radius: 7px;
  cursor: pointer;
  user-select: none;
  transform: translateY(-2px);
  box-shadow: 0 6px 0 var(--dl-seat), 0 8px 10px rgba(78, 54, 52, 0.25);
  transition: transform 0.11s, box-shadow 0.11s, filter 0.15s;
}

/* Pins the resting colour through the hover. The label sits on brick, so it
   has to stay cream even if a site-wide link hover is added later — the one in
   the design reference resolves to this key's own background. */
.dlkey:hover {
  color: var(--bg);
  filter: brightness(1.08);
  transform: translateY(-4px);
  box-shadow: 0 8px 0 var(--dl-seat), 0 11px 12px rgba(78, 54, 52, 0.28);
}

.dlkey:active {
  transform: translateY(4px);
  box-shadow: 0 1px 0 var(--dl-seat);
}

/* Shown only where the embed can't be trusted — see the note in resume.html. */
.resume__away {
  display: none;
}

@media (max-width: 640px) {
  /* A 78vh embed on a phone is most of the screen and scrolls against the
     page; short enough here to read as one pane among others. */
  .resume__viewer {
    height: 60vh;
    min-height: 420px;
  }

  .resume__away {
    display: inline-flex;
    align-self: center;
    /* Clears the 6px seat, which sits outside the key's box and so is not
       counted by the stage's gap. */
    margin-bottom: 10px;
  }
}

/* The key still travels on press — that is feedback, not decoration — but
   loses the hover float, which is the part that reads as motion. */
@media (prefers-reduced-motion: reduce) {
  .dlkey {
    transition: filter 0.15s;
  }

  .dlkey:hover {
    transform: translateY(-2px);
    box-shadow: 0 6px 0 var(--dl-seat), 0 8px 10px rgba(78, 54, 52, 0.25);
  }
}
