/* Mark sweep, whole-card stamp, and terminal file switch. Uses the existing paper tokens. */

.ps-pen-passage { position: relative; }
.ps-mark-text {
  position: relative;
  z-index: 1;
  display: block;
  max-width: 28ch;
}
.ps-mark-bars {
  position: absolute;
  inset: 0;
  z-index: 2;
  pointer-events: none;
}
.ps-pen-lab[data-mark="highlight"] .ps-mark-bars { z-index: 0; }
.ps-mark-sweep {
  position: absolute;
  display: block;
  transform: scaleX(0);
  transform-origin: left center;
  border-radius: 2px;
  transition: transform 240ms cubic-bezier(.16, 1, .3, 1);
}
.ps-mark-sweep.is-on { transform: scaleX(1); }
.ps-mark-sweep.is-restoring { transition-duration: 200ms; }
.ps-pen-lab[data-mark="redact"][data-bar="ink"] .ps-mark-sweep { background: var(--paper-ink); }
.ps-pen-lab[data-mark="redact"][data-bar="ghost"] .ps-mark-sweep {
  background: color-mix(in srgb, var(--paper) 70%, var(--paper-stage));
}
.ps-pen-lab[data-mark="highlight"] .ps-mark-sweep {
  background: linear-gradient(transparent 22%, color-mix(in srgb, var(--paper-highlight) 72%, transparent) 22% 88%, transparent 88%);
}
.ps-pen-lab[data-mark="redline"] .ps-mark-sweep { background: var(--paper-red); }
.ps-pen-lab[data-mark="redact"] .ps-mark-text.is-covered { color: transparent; transition: color 80ms linear; }
.ps-pen-lab[data-mark="redact"][data-bar="ghost"] .ps-mark-text.is-covered {
  color: color-mix(in srgb, var(--paper) 70%, var(--paper-stage));
}
.ps-pen-lab[data-mark="redline"] .ps-mark-text.is-struck {
  color: color-mix(in srgb, var(--paper-red) 50%, var(--paper-ink));
}
.ps-pen-card .ps-pen-edge { right: 118px; }
.ps-stamp,
.ps-mark-bookmark {
  position: absolute;
  z-index: 4;
  pointer-events: none;
}
.ps-stamp {
  top: 22px;
  right: 26px;
  padding: 4px 8px;
  border: 2px solid var(--paper-ink);
  color: var(--paper-ink);
  background: transparent;
  font: 600 10px/1.2 var(--font-mono);
  letter-spacing: .14em;
  text-transform: uppercase;
  opacity: 0;
  transform: rotate(-8deg) scale(1.45);
}
.ps-stamp.is-in {
  opacity: .92;
  transform: rotate(-8deg) scale(1);
  transition: opacity 200ms cubic-bezier(.34, 1.56, .64, 1), transform 200ms cubic-bezier(.34, 1.56, .64, 1);
}
.ps-stamp.is-out { opacity: 0; transition: opacity 120ms linear; }
.ps-pen-lab[data-mark="redline"] .ps-stamp { border-color: var(--paper-red); color: var(--paper-red); }
.ps-mark-bookmark {
  top: 18px;
  right: 22px;
  width: 14px;
  height: 18px;
  background: var(--paper-highlight);
  clip-path: polygon(0 0, 100% 0, 100% 100%, 50% 74%, 0 100%);
  opacity: 0;
}
.ps-mark-bookmark.is-in { opacity: 1; transition: opacity 160ms linear; }
.ps .ps-mark-undo,
.ps .ps-open-replay {
  min-height: 44px;
  padding: 10px 16px;
  border: 1px solid var(--line);
  border-radius: 10px;
  background: var(--bg-raised);
  color: var(--ink);
  font: 12px/1.4 var(--font-mono);
}
.ps .ps-mark-undo:disabled { opacity: .45; }
.ps .ps-mark-dmode { margin: 0; color: var(--ink-2); font: 11px/1.6 var(--font-mono); }
.ps-pen-lab[data-bar] .ps-mark-sweep { transition: transform 240ms cubic-bezier(.16, 1, .3, 1), background-color 160ms linear; }

.ps-open-tools {
  position: absolute;
  z-index: 3;
  top: 0;
  left: 0;
  right: 0;
  display: flex;
  flex-wrap: wrap;
  gap: 8px 12px;
  align-items: center;
}
.ps-open-visual.is-tooled .ps-open-term { top: 52px; }
.ps-open-tools .ps-segment button { min-height: 44px; }
.ps-open-enter.is-accent { animation: ps-enter-press .4s; }

@media (max-width: 700px) {
  .ps-open-visual.is-tooled { height: 508px; }
  .ps-open-visual.is-tooled .ps-open-term { height: 148px; }
  .ps-open-visual.is-tooled .ps-open-app { height: 220px; }
  .ps-mark-text { max-width: 22ch; }
}

@media (prefers-reduced-motion: reduce) {
  .ps-mark-sweep,
  .ps-stamp,
  .ps-mark-bookmark,
  .ps-open-enter.is-accent { animation: none; transition: none; }
}
