@import url("https://fonts.googleapis.com/css2?family=IBM+Plex+Sans:wght@400;500;600;700&family=Open+Sans:wght@400;600;700&display=swap");

/* Palette mirrors the NameBright app's interstellar "nb" theme
   (purple primary + cyan secondary) so the docs match my.namebright.com. */
.swagger-ui {
  --nb-primary: #4d3fc9;
  --nb-primary-dark: #2e2679;
  --nb-primary-extra-dark: #17133c;
  --nb-primary-light: #b8b2e9;
  --nb-primary-extra-light: #edecfa;

  --nb-secondary: #19bde1;
  --nb-secondary-dark: #0f7187;
  --nb-secondary-extra-light: #e8f8fc;

  --nb-tertiary: #ca1677;
  --nb-tertiary-dark: #790d47;
  --nb-tertiary-extra-light: #fae8f1;

  --nb-heading: #2d2859;
  --nb-copy: #26262a;
  --nb-copy-subdued: #7b7a86;

  --nb-page-bg: #f2f3f6;
  --nb-surface: #ffffff;
  --nb-border: #e1e0e3;

  --nb-success: #5cbf5a;
  --nb-warn: #e39735;
  --nb-warn-extra-light: #fcf5eb;
  --nb-error: #c71414;
  --nb-error-extra-light: #f9e7e7;

  --nb-radius: 4px;
}

/* ---------- Base typography ---------- */
.swagger-ui,
.swagger-ui .info li,
.swagger-ui .info p,
.swagger-ui .info table,
.swagger-ui .opblock-description-wrapper p,
.swagger-ui .opblock-external-docs-wrapper p,
.swagger-ui .opblock-title_normal p {
  font-family: "Open Sans", -apple-system, BlinkMacSystemFont, sans-serif;
  color: var(--nb-copy);
}

.swagger-ui .info .title,
.swagger-ui .opblock-tag,
.swagger-ui .opblock .opblock-summary-operation-id,
.swagger-ui h1,
.swagger-ui h2,
.swagger-ui h3,
.swagger-ui h4,
.swagger-ui h5,
.swagger-ui .dialog-ux .modal-ux-header h3 {
  font-family: "IBM Plex Sans", sans-serif;
  color: var(--nb-heading);
}

body {
  background: var(--nb-page-bg);
}

/* ---------- Top bar (branded) ---------- */
.swagger-ui .topbar {
  background-color: var(--nb-primary-extra-dark);
  box-shadow: inset 0 -3px 0 var(--nb-secondary);
  padding: 12px 0;
}

.swagger-ui .topbar .topbar-wrapper .link > img,
.swagger-ui .topbar .topbar-wrapper .link > svg {
  display: none;
}

.swagger-ui .topbar .topbar-wrapper .link::after {
  content: "NameBright API";
  color: #fff;
  font-family: "IBM Plex Sans", sans-serif;
  font-weight: 600;
  font-size: 1.4rem;
  letter-spacing: 0.2px;
}

.swagger-ui .topbar .download-url-wrapper .select-label span {
  color: var(--nb-primary-light);
}

.swagger-ui .topbar .download-url-wrapper input[type="text"] {
  border: 2px solid var(--nb-secondary);
}

.swagger-ui .topbar .download-url-wrapper .download-url-button {
  background: var(--nb-secondary);
  color: var(--nb-primary-extra-dark);
  border-radius: var(--nb-radius);
  font-weight: 600;
}

.swagger-ui .topbar-wrapper .download-url-wrapper .select-label select {
  border: 2px solid var(--nb-secondary);
  border-radius: var(--nb-radius);
}

/* ---------- Info / title header ---------- */
.swagger-ui .info .title small {
  background: var(--nb-primary);
  border-radius: var(--nb-radius);
}

.swagger-ui .info .title small.version-stamp {
  background: var(--nb-secondary-dark);
}

.swagger-ui .info a,
.swagger-ui .info a:hover {
  color: var(--nb-primary);
}

.swagger-ui .info .base-url {
  color: var(--nb-copy-subdued);
}

/* ---------- Servers / Authorize bar ---------- */
.swagger-ui .scheme-container {
  background: var(--nb-surface);
  border: 1px solid var(--nb-border);
  border-radius: var(--nb-radius);
  box-shadow: 0 1px 3px rgba(23, 19, 60, 0.1);
}

.swagger-ui .btn.authorize {
  color: var(--nb-primary);
  border-color: var(--nb-primary);
  border-radius: var(--nb-radius);
}

.swagger-ui .btn.authorize svg {
  fill: var(--nb-primary);
}

.swagger-ui .btn.authorize:hover {
  background: var(--nb-primary-extra-light);
}

/* ---------- Buttons ---------- */
.swagger-ui .btn {
  border-radius: var(--nb-radius);
}

.swagger-ui .btn.execute {
  background-color: var(--nb-primary);
  border-color: var(--nb-primary);
  color: #fff;
}

.swagger-ui .btn.execute:hover {
  background-color: var(--nb-primary-dark);
  border-color: var(--nb-primary-dark);
}

.swagger-ui .btn.cancel {
  color: var(--nb-error);
  border-color: var(--nb-error);
}

/* ---------- Operation tag sections ---------- */
.swagger-ui .opblock-tag {
  border-bottom: 1px solid var(--nb-border);
}

.swagger-ui .opblock-tag:hover {
  background: rgba(77, 63, 201, 0.04);
}

/* ---------- Operation blocks: method-coloured to the NB palette ---------- */
.swagger-ui .opblock {
  border-radius: var(--nb-radius);
  box-shadow: 0 1px 2px rgba(23, 19, 60, 0.06);
}

.swagger-ui .opblock .opblock-summary-method {
  border-radius: var(--nb-radius);
  font-family: "IBM Plex Sans", sans-serif;
  font-weight: 600;
  min-width: 80px;
}

/* GET -> primary purple */
.swagger-ui .opblock.opblock-get {
  border-color: var(--nb-primary);
  background: var(--nb-primary-extra-light);
}
.swagger-ui .opblock.opblock-get .opblock-summary-method {
  background: var(--nb-primary);
}
.swagger-ui .opblock.opblock-get .opblock-summary {
  border-color: var(--nb-primary);
}
.swagger-ui .opblock.opblock-get .tab-header .tab-item.active h4 span::after {
  background: var(--nb-primary);
}

/* POST -> secondary cyan (dark badge text for contrast, matching --on-secondary) */
.swagger-ui .opblock.opblock-post {
  border-color: var(--nb-secondary);
  background: var(--nb-secondary-extra-light);
}
.swagger-ui .opblock.opblock-post .opblock-summary-method {
  background: var(--nb-secondary);
  color: #05262d;
}
.swagger-ui .opblock.opblock-post .opblock-summary {
  border-color: var(--nb-secondary);
}
.swagger-ui .opblock.opblock-post .tab-header .tab-item.active h4 span::after {
  background: var(--nb-secondary);
}

/* PUT -> tertiary magenta */
.swagger-ui .opblock.opblock-put {
  border-color: var(--nb-tertiary);
  background: var(--nb-tertiary-extra-light);
}
.swagger-ui .opblock.opblock-put .opblock-summary-method {
  background: var(--nb-tertiary);
}
.swagger-ui .opblock.opblock-put .opblock-summary {
  border-color: var(--nb-tertiary);
}

/* DELETE -> error red */
.swagger-ui .opblock.opblock-delete {
  border-color: var(--nb-error);
  background: rgba(199, 20, 20, 0.08);
}
.swagger-ui .opblock.opblock-delete .opblock-summary-method {
  background: var(--nb-error);
}
.swagger-ui .opblock.opblock-delete .opblock-summary {
  border-color: var(--nb-error);
}

/* PATCH -> warn orange */
.swagger-ui .opblock.opblock-patch {
  border-color: var(--nb-warn);
  background: rgba(227, 151, 53, 0.08);
}
.swagger-ui .opblock.opblock-patch .opblock-summary-method {
  background: var(--nb-warn);
}
.swagger-ui .opblock.opblock-patch .opblock-summary {
  border-color: var(--nb-warn);
}

/* ---------- Paths & links ---------- */
.swagger-ui .opblock .opblock-summary-path,
.swagger-ui .opblock .opblock-summary-path__deprecated {
  font-family: "IBM Plex Sans", sans-serif;
  color: var(--nb-heading);
}

.swagger-ui a.nostyle,
.swagger-ui .opblock-summary-path a {
  color: var(--nb-primary);
}

/* ---------- Tabs (Example / Schema, Try it out) ---------- */
.swagger-ui .tab li.active {
  color: var(--nb-primary);
}

/* Section-header band tint follows its parent operation's colour
   (GET keeps the primary default below). */
.swagger-ui .opblock .opblock-section-header {
  background: var(--nb-primary-extra-light);
  box-shadow: none;
  border-bottom: 1px solid var(--nb-border);
}

.swagger-ui .opblock.opblock-post .opblock-section-header {
  background: var(--nb-secondary-extra-light);
}
.swagger-ui .opblock.opblock-put .opblock-section-header {
  background: var(--nb-tertiary-extra-light);
}
.swagger-ui .opblock.opblock-patch .opblock-section-header {
  background: var(--nb-warn-extra-light);
}
.swagger-ui .opblock.opblock-delete .opblock-section-header {
  background: var(--nb-error-extra-light);
}

.swagger-ui .opblock .opblock-section-header h4,
.swagger-ui .opblock .opblock-section-header > label {
  color: var(--nb-heading);
}

/* ---------- Form controls / focus ---------- */
.swagger-ui input[type="text"]:focus,
.swagger-ui input[type="password"]:focus,
.swagger-ui input[type="email"]:focus,
.swagger-ui input[type="search"]:focus,
.swagger-ui textarea:focus,
.swagger-ui select:focus {
  border-color: var(--nb-primary);
  outline: none;
  box-shadow: 0 0 0 2px rgba(77, 63, 201, 0.2);
}

.swagger-ui select,
.swagger-ui input[type="text"],
.swagger-ui textarea {
  border-radius: var(--nb-radius);
}

/* ---------- Models ---------- */
.swagger-ui section.models {
  border: 1px solid var(--nb-border);
  border-radius: var(--nb-radius);
}

.swagger-ui section.models.is-open h4 {
  border-bottom: 1px solid var(--nb-border);
}

.swagger-ui section.models h4 span,
.swagger-ui .model-title {
  font-family: "IBM Plex Sans", sans-serif;
  color: var(--nb-heading);
}

.swagger-ui .model-toggle::after {
  opacity: 0.7;
}

/* ---------- Responses ---------- */
.swagger-ui .responses-inner h4,
.swagger-ui .responses-inner h5 {
  color: var(--nb-heading);
}

.swagger-ui .response-col_status {
  color: var(--nb-heading);
}

/* ---------- Authorization modal ---------- */
.swagger-ui .dialog-ux .modal-ux {
  border-radius: var(--nb-radius);
  border: 1px solid var(--nb-border);
}

.swagger-ui .dialog-ux .modal-ux-header {
  border-bottom: 1px solid var(--nb-border);
}
