/*
 * Research Protocol brand overrides for Swagger UI.
 *
 * Injected via Program.cs SwaggerUIOptions.InjectStylesheet so the
 * interactive API reference at /swagger picks up the same Inter +
 * cream / slate-dark / gold / terracotta palette as the rest of
 * researchprotocol.io. Token reference lives in frontend/src/index.css.
 *
 * Source lives in frontend/public/ (not src/RscHub.Api/wwwroot/)
 * because Vite's `emptyOutDir: true` wipes the wwwroot root on every
 * build. Files in frontend/public/ are copied verbatim to the build
 * output so they survive the build.
 */

@import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap');

:root {
  --rpt-cream: #F8F7F5;
  --rpt-slate-dark: #1F2937;
  --rpt-slate-600: #475569;
  --rpt-slate-400: #94a3b8;
  --rpt-slate-200: #e2e8f0;
  --rpt-gold: #B89B5E;
  --rpt-gold-soft: rgba(184, 155, 94, 0.15);
  --rpt-terracotta: #C25934;
  --rpt-terracotta-dark: #A34728;
}

/* Page shell */
html, body {
  background: var(--rpt-cream);
  font-family: 'Inter', system-ui, -apple-system, sans-serif;
  -webkit-font-smoothing: antialiased;
}

.swagger-ui {
  font-family: 'Inter', system-ui, -apple-system, sans-serif;
  color: var(--rpt-slate-dark);
}

/* Match the marketing site Nav: cream with gold bottom border and
   slate-dark link text. */
.swagger-ui .topbar {
  background: var(--rpt-cream);
  padding: 14px 0;
  border-bottom: 1px solid rgba(184, 155, 94, 0.2);
  box-shadow: none;
}
.swagger-ui .topbar .topbar-wrapper {
  padding: 0 24px;
}
.swagger-ui .topbar .topbar-wrapper .link {
  color: var(--rpt-slate-dark);
  font-weight: 700;
  letter-spacing: 0.02em;
}
.swagger-ui .topbar .topbar-wrapper .link span {
  color: var(--rpt-gold);
  font-weight: 600;
  letter-spacing: 0.18em;
  font-size: 11px;
  text-transform: uppercase;
}
.swagger-ui .topbar .topbar-wrapper img,
.swagger-ui .topbar a svg { display: none; }

/* Hide the Swagger UI v5 theme toggle (the lightbulb icon) so
   users can't flip to dark mode. Brand is always light. Paired
   with /swagger-force-light.js which strips the dark-mode class
   if Swagger applies it from a persisted setting. */
.swagger-ui .topbar .topbar-wrapper .toggle-theme,
.swagger-ui button.topbar-toggle,
.swagger-ui .topbar button[aria-label*="theme" i] {
  display: none !important;
}
.swagger-ui .topbar .download-url-wrapper .download-url-button {
  background: transparent;
  border: 1px solid var(--rpt-gold);
  color: var(--rpt-slate-dark);
  font-family: 'Inter', sans-serif;
  font-weight: 500;
  border-radius: 4px;
}
.swagger-ui .topbar .download-url-wrapper input[type=text] {
  border: 1px solid var(--rpt-slate-200);
  color: var(--rpt-slate-dark);
  background: #ffffff;
}

/* Info / title block */
.swagger-ui .info { margin: 40px 0; }
.swagger-ui .info .title {
  color: var(--rpt-slate-dark);
  font-weight: 700;
  letter-spacing: -0.01em;
}
.swagger-ui .info .title small.version-stamp { background: var(--rpt-gold); }
.swagger-ui .info .title small pre { color: var(--rpt-cream); }
.swagger-ui .info a { color: var(--rpt-terracotta); }
.swagger-ui .info a:hover { color: var(--rpt-terracotta-dark); }

/* Scheme / server selector */
.swagger-ui .scheme-container {
  background: #ffffff;
  border: 1px solid var(--rpt-slate-200);
  box-shadow: none;
}

/* Tag section headers */
.swagger-ui .opblock-tag {
  border-bottom: 1px solid var(--rpt-slate-200);
  color: var(--rpt-slate-dark);
  font-weight: 600;
  font-size: 18px;
  margin-top: 24px;
}
.swagger-ui .opblock-tag:hover { background: var(--rpt-gold-soft); }
.swagger-ui .opblock-tag small { color: var(--rpt-slate-600); font-weight: 400; }

/* Operation cards */
.swagger-ui .opblock {
  border-radius: 6px;
  border: 1px solid var(--rpt-slate-200);
  background: #ffffff;
  box-shadow: none;
  margin: 0 0 10px;
}
.swagger-ui .opblock .opblock-summary { border: none; padding: 8px 14px; }
.swagger-ui .opblock .opblock-summary-method {
  font-weight: 700;
  font-family: 'Inter', system-ui, sans-serif;
  border-radius: 4px;
  min-width: 72px;
  box-shadow: none;
}
.swagger-ui .opblock-summary-path {
  color: var(--rpt-slate-dark);
  font-weight: 500;
}
.swagger-ui .opblock-summary-description {
  color: var(--rpt-slate-600);
  font-size: 13px;
}

/* Verb palette — match the /api docs page chips. */
.swagger-ui .opblock.opblock-get { border-left: 3px solid #3b82f6; background: #ffffff; }
.swagger-ui .opblock.opblock-get .opblock-summary-method { background: #dbeafe; color: #1e40af; }
.swagger-ui .opblock.opblock-post { border-left: 3px solid #10b981; background: #ffffff; }
.swagger-ui .opblock.opblock-post .opblock-summary-method { background: #d1fae5; color: #065f46; }
.swagger-ui .opblock.opblock-patch { border-left: 3px solid #f59e0b; background: #ffffff; }
.swagger-ui .opblock.opblock-patch .opblock-summary-method { background: #fef3c7; color: #92400e; }
.swagger-ui .opblock.opblock-delete { border-left: 3px solid #ef4444; background: #ffffff; }
.swagger-ui .opblock.opblock-delete .opblock-summary-method { background: #fee2e2; color: #991b1b; }
.swagger-ui .opblock.opblock-put { border-left: 3px solid #6366f1; background: #ffffff; }
.swagger-ui .opblock.opblock-put .opblock-summary-method { background: #e0e7ff; color: #3730a3; }

/* Expanded operation body */
.swagger-ui .opblock .opblock-section-header {
  background: var(--rpt-cream);
  box-shadow: none;
  border-top: 1px solid var(--rpt-slate-200);
}
.swagger-ui .opblock .opblock-section-header h4,
.swagger-ui .opblock-description-wrapper p,
.swagger-ui .opblock h4,
.swagger-ui .opblock h5 { color: var(--rpt-slate-dark); }
.swagger-ui .opblock .parameters-col_description p,
.swagger-ui .response-col_description p { color: var(--rpt-slate-600); }

/* Buttons */
.swagger-ui .btn {
  font-family: 'Inter', system-ui, sans-serif;
  font-weight: 500;
  border-radius: 4px;
  box-shadow: none;
  border: 1px solid var(--rpt-slate-200);
  color: var(--rpt-slate-dark);
  background: #ffffff;
}
.swagger-ui .btn:hover { background: var(--rpt-cream); }
.swagger-ui .btn.try-out__btn,
.swagger-ui .btn.execute,
.swagger-ui .btn.authorize {
  background: var(--rpt-terracotta);
  border: 1px solid var(--rpt-terracotta);
  color: #ffffff;
}
.swagger-ui .btn.try-out__btn:hover,
.swagger-ui .btn.execute:hover,
.swagger-ui .btn.authorize:hover {
  background: var(--rpt-terracotta-dark);
  border-color: var(--rpt-terracotta-dark);
}
.swagger-ui .btn.authorize svg { fill: #ffffff; }
.swagger-ui .btn.cancel {
  color: var(--rpt-slate-600);
  border-color: var(--rpt-slate-200);
  background: #ffffff;
}

/* Forms */
.swagger-ui input[type=text],
.swagger-ui input[type=password],
.swagger-ui input[type=email],
.swagger-ui input[type=search],
.swagger-ui textarea,
.swagger-ui select {
  border: 1px solid var(--rpt-slate-200);
  border-radius: 4px;
  background: #ffffff;
  color: var(--rpt-slate-dark);
  font-family: 'Inter', system-ui, sans-serif;
}
.swagger-ui input[type=text]:focus,
.swagger-ui textarea:focus,
.swagger-ui select:focus {
  border-color: var(--rpt-gold);
  outline: none;
  box-shadow: 0 0 0 3px var(--rpt-gold-soft);
}

/* Code + monospace blocks */
.swagger-ui .highlight-code,
.swagger-ui .microlight,
.swagger-ui pre,
.swagger-ui code {
  font-family: 'SF Mono', Menlo, Monaco, Consolas, monospace;
}
.swagger-ui .opblock-body pre.microlight,
.swagger-ui .responses-inner pre.microlight,
.swagger-ui .model-example pre.microlight {
  background: var(--rpt-slate-dark);
  color: var(--rpt-cream);
  border-radius: 4px;
}
.swagger-ui table.headers td code,
.swagger-ui .parameter__name code,
.swagger-ui .response-col_links code,
.swagger-ui .parameters-col_description code {
  background: var(--rpt-gold-soft);
  color: var(--rpt-slate-dark);
  padding: 1px 4px;
  border-radius: 3px;
}

/* Models panel */
.swagger-ui section.models {
  border: 1px solid var(--rpt-slate-200);
  border-radius: 6px;
  background: #ffffff;
}
.swagger-ui section.models.is-open h4 { border-bottom-color: var(--rpt-slate-200); }
.swagger-ui .model-title { color: var(--rpt-slate-dark); }
.swagger-ui .model { color: var(--rpt-slate-600); }
.swagger-ui .prop-type { color: var(--rpt-terracotta); }

/* Response status banner */
.swagger-ui .responses-inner h4,
.swagger-ui .responses-inner h5 { color: var(--rpt-slate-dark); }
.swagger-ui .response-col_status { color: var(--rpt-slate-dark); font-weight: 600; }

/* Auth modal */
.swagger-ui .dialog-ux .modal-ux {
  border: 1px solid var(--rpt-slate-200);
  border-radius: 6px;
  background: #ffffff;
}
.swagger-ui .dialog-ux .modal-ux-header h3,
.swagger-ui .dialog-ux .modal-ux-content h4 { color: var(--rpt-slate-dark); }

/* Generic links */
.swagger-ui a { color: var(--rpt-terracotta); }
.swagger-ui a:hover { color: var(--rpt-terracotta-dark); }
