/* --------------------------------------------------------------------------
   Memo card component — shared by the memo detail page (page/detail.html)
   and the dashboard grid (dashboard/_card_macro.html). Behavior lives in
   memo-card.js; page-specific layout (e.g. .dashboard-card, .dashboard-grid)
   stays in admin-memo.css.
   -------------------------------------------------------------------------- */
.memo-card {
  max-width: var(--content-max-width);
  margin: 0 auto;
  padding: var(--page-padding-y) var(--page-padding-x);
}

.memo-card__title-row {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  margin: 0 0 var(--space-1);
}

.memo-card__title-row .memo-card__title {
  flex: 1;
  margin: 0;
}

.memo-card__title {
  font-size: 1.5rem;
  font-weight: 400;
  margin: 0 0 var(--space-1);
}

.memo-card__key {
  font-size: var(--font-size-form-caption);
  color: var(--color-muted);
  margin: 0 0 var(--space-2);
}

.memo-card__time {
  flex: 0 0 auto;
  font-size: var(--font-size-form-caption);
  color: var(--color-muted);
  white-space: nowrap;
  cursor: help;
}

.memo-card__reload-btn {
  flex: 0 0 auto;
  width: 32px;
  height: 32px;
  padding: 0;
  border: none;
  background: transparent;
  color: var(--color-muted);
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: var(--radius-sm);
}

.memo-card__reload-btn:hover {
  color: var(--color-text);
  background: var(--color-bg-soft);
}

.memo-card__reload-btn:active {
  background: var(--color-border);
}

.memo-card__reload-btn.is-loading svg {
  animation: memo-spin 0.8s linear infinite;
}

.memo-card__reload-btn.is-live {
  color: var(--color-success);
}

@keyframes memo-spin {
  from {
    transform: rotate(0deg);
  }

  to {
    transform: rotate(360deg);
  }
}

.memo-card__message {
  text-align: left;
  margin-top: var(--space-4);
  white-space: pre-wrap;
}

.memo-progress {
  display: flex;
  align-items: center;
  gap: var(--space-3);
  margin-top: var(--space-4);
}

.memo-progress__bar {
  flex: 1;
  height: 8px;
  appearance: none;
  border: none;
  border-radius: var(--radius);
  overflow: hidden;
  background: var(--color-border);
}

.memo-progress__bar::-webkit-progress-bar {
  background: var(--color-border);
  border-radius: var(--radius);
}

.memo-progress__bar::-webkit-progress-value {
  background: var(--memo-progress-color, var(--color-primary));
  border-radius: var(--radius);
}

.memo-progress__bar::-moz-progress-bar {
  background: var(--memo-progress-color, var(--color-primary));
  border-radius: var(--radius);
}

.memo-progress__label {
  font-size: var(--font-size-form-caption);
  color: var(--color-muted);
  white-space: nowrap;
  min-width: 3ch;
  text-align: right;
}

.memo-card__image {
  display: block;
  width: 100%;
  margin-top: var(--space-4);
  cursor: zoom-in;
  touch-action: manipulation;
  -webkit-user-select: none;
  user-select: none;
}

body.memo-image-lightbox-open {
  overflow: hidden;
}

.memo-image-lightbox {
  position: fixed;
  inset: 0;
  z-index: 1000;
  display: flex;
  align-items: center;
  justify-content: center;
  background: rgba(0, 0, 0, 0.92);
  cursor: zoom-out;
}

.memo-image-lightbox[hidden] {
  display: none;
}

.memo-image-lightbox__img {
  width: 100vw;
  max-height: 100vh;
  object-fit: contain;
}

.memo-card__details {
  margin-top: var(--space-5);
}

.memo-card__details summary {
  cursor: pointer;
  color: var(--color-muted);
  font-size: var(--font-size-form-caption);
  user-select: none;
}

.memo-card__details pre {
  margin-top: var(--space-2);
  padding: var(--space-3);
  background: var(--color-bg-soft);
  border-radius: var(--radius);
  font-size: var(--font-size-form-caption);
  overflow-x: auto;
  white-space: pre-wrap;
  word-break: break-all;
}
