/* Frame exporter upload and file intelligence workspace. */

/* The provenance panel is an inverse (dark) surface in both themes, so its
   signal chips keep one set of dark values and need no dark override. */
:root {
  --fx-signal-line: #3e3c37;
  --fx-signal-warn-ink: #ffd7d8;
  --fx-signal-warn-line: #7d3438;
  --fx-signal-warn-bg: #3b1b1d;
  --fx-signal-ok-ink: #d8f4df;
  --fx-signal-ok-line: #31553a;
  --fx-signal-ok-bg: #182c1d;
}

.frame-drop-zone {
  min-height: 246px;
  display: grid;
  place-items: center;
  align-content: center;
  gap: 10px;
  padding: 34px 24px;
  border: 1.5px dashed var(--color-line-bold);
  border-radius: 22px;
  background:
    radial-gradient(circle at 50% 0%, rgb(var(--ember-rgb) / 0.045), transparent 34%),
    rgb(var(--paper-rgb) / 0.62);
  cursor: pointer;
  transition: border-color var(--dur-quick) var(--ease-standard),
              background-color var(--dur-quick) var(--ease-standard),
              transform var(--dur-base) var(--ease-entrance);
}

.frame-drop-zone:hover,
.frame-drop-zone.drag-over {
  border-color: var(--color-ink);
  background-color: var(--color-paper);
}

.frame-drop-zone:active {
  transform: scale(0.995);
}

.frame-drop-zone .upload-icon {
  width: 58px;
  height: 58px;
  display: grid;
  place-items: center;
  margin: 0 0 4px;
  color: var(--color-ink);
  border: 1px solid var(--color-line-strong);
  border-radius: 17px;
  background: var(--color-paper);
  box-shadow: inset 0 -3px 0 rgb(var(--ember-rgb) / 0.72);
}

.frame-drop-zone .upload-text {
  font-size: 20px;
  letter-spacing: -0.025em;
}

.frame-drop-zone .upload-sub {
  max-width: 610px;
  line-height: 1.5;
}

.frame-drop-zone > * {
  min-width: 0;
  max-width: 100%;
}

.frame-drop-zone-actions {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 10px;
  margin-top: 10px;
}

.drop-error {
  min-height: 18px;
  margin-top: 2px;
  color: var(--color-ember-text);
  font-size: 12px;
  font-weight: 600;
}

.file-intelligence {
  margin-top: 20px;
  overflow: hidden;
  background: var(--color-paper);
  border: 1px solid var(--color-line-strong);
  border-radius: 20px;
  box-shadow: var(--shadow-subtle);
}

.file-intelligence[hidden] {
  display: none;
}

.file-intelligence-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 24px;
  padding: 22px 24px;
  border-bottom: 1px solid var(--color-hairline);
}

.file-intelligence-head h2 {
  margin: 0;
  font-size: 19px;
  letter-spacing: -0.025em;
}

.file-intelligence-head p {
  max-width: 680px;
  margin: 5px 0 0;
  color: var(--color-mid-gray);
  font-size: 12px;
  line-height: 1.5;
}

.file-intelligence-actions {
  display: flex;
  flex: 0 0 auto;
  gap: 8px;
}

.metadata-action {
  min-height: 34px;
  padding: 7px 11px;
  color: var(--color-ink);
  background: var(--color-paper);
  border: 1px solid var(--color-line-strong);
  border-radius: var(--radius-buttons);
  font: 600 11px var(--sans);
  white-space: nowrap;
  cursor: pointer;
  transition: var(--tx-interactive);
}

.metadata-action:hover {
  border-color: var(--color-line-hover);
  background: var(--color-canvas);
  transform: translateY(-1px);
}

.file-intelligence-body {
  padding: 20px 24px 24px;
}

.metadata-loading {
  min-height: 122px;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 14px;
  color: var(--color-ink);
}

.metadata-loading > span {
  width: 28px;
  height: 28px;
  border: 2px solid var(--color-line-strong);
  border-top-color: var(--color-ember);
  border-radius: 50%;
  animation: metadataSpin 760ms linear infinite;
}

.metadata-loading strong,
.metadata-loading small {
  display: block;
}

.metadata-loading strong {
  font-size: 13px;
}

.metadata-loading small {
  margin-top: 3px;
  color: var(--color-mid-gray);
  font: 10px var(--mono);
}

@keyframes metadataSpin {
  to { transform: rotate(360deg); }
}

.metadata-summary {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 1px;
  overflow: hidden;
  border: 1px solid var(--color-hairline);
  border-radius: 14px;
  background: var(--color-hairline);
}

.metadata-summary > div {
  min-width: 0;
  min-height: 100px;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  padding: 14px 15px;
  background: var(--color-surface-alt);
}

.metadata-summary span,
.metadata-section-label {
  color: var(--color-mid-gray);
  font: 700 9px var(--mono);
  letter-spacing: 0.07em;
  text-transform: uppercase;
}

.metadata-summary strong {
  display: block;
  overflow: hidden;
  margin: 11px 0 4px;
  font: 600 14px var(--mono);
  text-overflow: ellipsis;
  white-space: nowrap;
}

.metadata-summary small {
  min-height: 15px;
  overflow: hidden;
  color: var(--color-mid-gray);
  font: 10px var(--mono);
  text-overflow: ellipsis;
  white-space: nowrap;
}

.provenance-panel {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(290px, 0.72fr);
  gap: 28px;
  margin-top: 14px;
  padding: 20px;
  background: var(--color-inverse);
  border-radius: 15px;
  color: var(--color-on-inverse);
}

.provenance-panel h3 {
  max-width: 650px;
  margin: 9px 0 0;
  font-size: 17px;
  letter-spacing: -0.02em;
}

.provenance-panel p {
  max-width: 680px;
  margin: 7px 0 0;
  color: var(--color-on-inverse-muted);
  font-size: 11.5px;
  line-height: 1.5;
}

.provenance-signals {
  display: flex;
  align-content: flex-start;
  align-items: flex-start;
  flex-wrap: wrap;
  gap: 7px;
}

.provenance-signal {
  padding: 6px 8px;
  border: 1px solid var(--fx-signal-line);
  border-radius: 7px;
  color: var(--color-on-inverse-muted);
  font: 600 9px var(--mono);
}

.provenance-signal.is-warning {
  color: var(--fx-signal-warn-ink);
  border-color: var(--fx-signal-warn-line);
  background: var(--fx-signal-warn-bg);
}

.provenance-signal.is-positive {
  color: var(--fx-signal-ok-ink);
  border-color: var(--fx-signal-ok-line);
  background: var(--fx-signal-ok-bg);
}

.provenance-software {
  flex-basis: 100%;
  color: var(--color-on-inverse-muted);
  font-size: 11px;
  line-height: 1.45;
}

.provenance-software strong {
  display: block;
  margin-bottom: 4px;
  color: var(--color-on-inverse);
  font-size: 10px;
}

.metadata-notice {
  display: flex;
  gap: 12px;
  margin-top: 14px;
  padding: 12px 14px;
  color: var(--color-warn-ink);
  background: var(--color-warn-bg);
  border: 1px solid var(--color-warn-line);
  border-radius: 10px;
  font-size: 11px;
}

.metadata-notice strong {
  flex: 0 0 auto;
}

.metadata-groups {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px;
  margin-top: 14px;
}

.metadata-groups details {
  align-self: start;
  overflow: hidden;
  border: 1px solid var(--color-hairline);
  border-radius: 12px;
  background: var(--color-surface-alt);
}

.metadata-groups summary {
  min-height: 42px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 10px 12px;
  font-size: 12px;
  font-weight: 700;
  cursor: pointer;
  list-style: none;
}

.metadata-groups summary::-webkit-details-marker {
  display: none;
}

.metadata-groups summary span {
  min-width: 24px;
  padding: 3px 6px;
  text-align: center;
  color: var(--color-mid-gray);
  background: var(--color-paper);
  border: 1px solid var(--color-hairline);
  border-radius: 6px;
  font: 9px var(--mono);
}

.metadata-rows {
  max-height: 360px;
  overflow: auto;
  padding: 0 12px 12px;
}

.metadata-rows > div {
  display: grid;
  grid-template-columns: minmax(105px, 0.4fr) minmax(0, 1fr);
  gap: 12px;
  padding: 9px 0;
  border-top: 1px solid var(--color-hairline);
}

.metadata-rows dt {
  color: var(--color-mid-gray);
  font-size: 10.5px;
}

.metadata-rows dd {
  min-width: 0;
  margin: 0;
  overflow-wrap: anywhere;
  color: var(--color-ink);
  font: 10.5px/1.45 var(--mono);
}

.metadata-empty {
  margin: 0;
  padding: 4px 12px 14px;
  color: var(--color-mid-gray);
  font-size: 11px;
}

@media (max-width: 760px) {
  .file-intelligence-head,
  .provenance-panel {
    grid-template-columns: 1fr;
  }

  .file-intelligence-head {
    flex-direction: column;
  }

  .file-intelligence-actions {
    width: 100%;
  }

  .metadata-action {
    flex: 1;
  }

  .metadata-summary,
  .metadata-groups {
    grid-template-columns: 1fr;
  }

  .metadata-summary > div {
    min-height: 84px;
  }

  .file-intelligence-body {
    padding: 14px;
  }

  .provenance-panel {
    gap: 18px;
  }

  .frame-drop-zone {
    min-height: 220px;
    padding: 28px 18px;
  }
}

@media (max-width: 420px) {
  .page-title {
    overflow-wrap: anywhere;
    text-wrap: pretty;
  }

  .frame-drop-zone .upload-text {
    font-size: 18px;
    text-align: center;
    overflow-wrap: anywhere;
  }

  .frame-drop-zone .upload-sub {
    margin-bottom: 12px;
    text-align: center;
    overflow-wrap: anywhere;
  }

  .frame-drop-zone-actions {
    width: 100%;
    flex-direction: column;
    align-items: center;
  }

  .frame-drop-zone-actions .upload-btn {
    width: min(100%, 240px);
  }
}
