/* API Explorer — native in-page widget for MkDocs Material */

.api-explorer {
  margin: 0.5rem 0 1.5rem;
  border: 1px solid var(--md-default-fg-color--lightest);
  border-radius: 8px;
  overflow: hidden;
}

/* Auth bar */
.api-explorer .ae-auth {
  display: flex; align-items: center; gap: 8px;
  padding: 8px 14px;
  background: var(--md-code-bg-color);
  border-bottom: 1px solid var(--md-default-fg-color--lightest);
  font-size: 0.78rem;
}
.api-explorer .ae-auth-dot {
  width: 8px; height: 8px; border-radius: 50%;
  background: var(--md-default-fg-color--lightest);
  flex-shrink: 0; transition: background 0.2s;
}
.api-explorer .ae-auth-dot.active { background: #16a34a; }
.api-explorer .ae-auth label {
  font-weight: 600; color: var(--md-default-fg-color--light);
  white-space: nowrap;
}
.api-explorer .ae-auth input {
  flex: 1; min-width: 0; padding: 4px 8px;
  border: 1px solid var(--md-default-fg-color--lightest);
  border-radius: 4px; font-family: var(--md-code-font-family);
  font-size: 0.78rem; background: var(--md-default-bg-color);
  color: var(--md-default-fg-color);
}
.api-explorer .ae-auth input:focus {
  outline: none; border-color: var(--md-accent-fg-color);
  box-shadow: 0 0 0 2px rgba(var(--md-accent-fg-color--transparent), 0.2);
}

/* Endpoint header */
.api-explorer .ae-endpoint {
  display: flex; align-items: center; gap: 10px;
  padding: 12px 14px 0;
}
.ae-method {
  display: inline-block; padding: 3px 10px; border-radius: 4px;
  font-size: 0.72rem; font-weight: 700; text-transform: uppercase;
  letter-spacing: 0.5px; flex-shrink: 0;
}
.ae-method.get    { background: #dbeafe; color: #2563eb; }
.ae-method.post   { background: #dcfce7; color: #16a34a; }
.ae-method.patch  { background: #ffedd5; color: #ea580c; }
.ae-method.put    { background: #ffedd5; color: #ea580c; }
.ae-method.delete { background: #fee2e2; color: #dc2626; }
.ae-path {
  font-family: var(--md-code-font-family);
  font-size: 0.82rem; color: var(--md-default-fg-color);
  word-break: break-all;
}

/* Sections */
.api-explorer .ae-section {
  padding: 10px 14px 0;
}
.api-explorer .ae-label {
  font-size: 0.68rem; font-weight: 700; text-transform: uppercase;
  letter-spacing: 0.8px; color: var(--md-default-fg-color--light);
  margin-bottom: 6px;
}

/* Param rows */
.ae-param {
  display: flex; align-items: center; gap: 8px; margin-bottom: 6px;
}
.ae-param label {
  min-width: 110px; text-align: right;
  font-family: var(--md-code-font-family); font-size: 0.78rem;
  color: var(--md-default-fg-color);
}
.ae-param label .req { color: #dc2626; margin-left: 2px; }
.ae-param input {
  flex: 1; padding: 5px 8px;
  border: 1px solid var(--md-default-fg-color--lightest);
  border-radius: 4px; font-size: 0.82rem;
  background: var(--md-default-bg-color); color: var(--md-default-fg-color);
}
.ae-param input:focus {
  outline: none; border-color: var(--md-accent-fg-color);
}

/* Document-type picker */
.ae-doctype {
  display: flex; align-items: center; gap: 8px; margin-bottom: 8px;
}
.ae-doctype label {
  font-size: 0.68rem; font-weight: 700; text-transform: uppercase;
  letter-spacing: 0.8px; color: var(--md-default-fg-color--light);
}
.ae-doctype-select {
  padding: 5px 8px; border-radius: 4px;
  border: 1px solid var(--md-default-fg-color--lightest);
  background: var(--md-default-bg-color); color: var(--md-default-fg-color);
  font-size: 0.82rem; font-family: var(--md-code-font-family);
}
.ae-doctype-select:focus { outline: none; border-color: var(--md-accent-fg-color); }

/* Body editor */
.ae-body-editor {
  width: 100%; min-height: 100px; padding: 10px;
  border: 1px solid var(--md-default-fg-color--lightest);
  border-radius: 6px; resize: vertical;
  font-family: var(--md-code-font-family); font-size: 0.78rem;
  line-height: 1.55; tab-size: 2;
  background: var(--md-code-bg-color); color: var(--md-default-fg-color);
}
.ae-body-editor:focus {
  outline: none; border-color: var(--md-accent-fg-color);
}

/* Actions */
.api-explorer .ae-actions {
  display: flex; gap: 8px; padding: 12px 14px;
  align-items: center;
}
.ae-btn-run {
  padding: 7px 18px; border: none; border-radius: 5px;
  background: var(--md-accent-fg-color, #4051b5); color: #fff;
  font-size: 0.8rem; font-weight: 600; cursor: pointer;
  transition: opacity 0.15s;
}
.ae-btn-run:hover { opacity: 0.88; }
.ae-btn-run:disabled { opacity: 0.5; cursor: not-allowed; }
.ae-btn-run.loading { position: relative; color: transparent; }
.ae-btn-run.loading::after {
  content: ''; position: absolute; inset: 0; margin: auto;
  width: 14px; height: 14px; border: 2px solid #fff;
  border-top-color: transparent; border-radius: 50%;
  animation: ae-spin 0.6s linear infinite;
}
@keyframes ae-spin { to { transform: rotate(360deg); } }

.ae-btn-reset {
  padding: 7px 12px; border: 1px solid var(--md-default-fg-color--lightest);
  border-radius: 5px; background: transparent;
  color: var(--md-default-fg-color--light);
  font-size: 0.78rem; cursor: pointer;
}
.ae-btn-reset:hover { background: var(--md-code-bg-color); }

/* Response */
.ae-response { display: none; padding: 0 14px 14px; }
.ae-response.visible { display: block; }
.ae-response-header {
  display: flex; align-items: center; gap: 10px; margin-bottom: 8px;
}
.ae-status {
  display: inline-block; padding: 2px 10px; border-radius: 4px;
  font-family: var(--md-code-font-family);
  font-size: 0.75rem; font-weight: 700;
}
.ae-status.s2xx { background: #dcfce7; color: #16a34a; }
.ae-status.s4xx { background: #fef9c3; color: #ca8a04; }
.ae-status.s5xx { background: #fee2e2; color: #dc2626; }
.ae-status.err  { background: #fee2e2; color: #dc2626; }
.ae-time { font-size: 0.75rem; color: var(--md-default-fg-color--light); }

.ae-response-body {
  padding: 12px; border-radius: 6px;
  background: var(--md-code-bg-color);
  font-family: var(--md-code-font-family);
  font-size: 0.75rem; line-height: 1.6;
  overflow-x: auto; white-space: pre-wrap; word-break: break-word;
  max-height: 420px; overflow-y: auto;
  color: var(--md-default-fg-color);
}
