/*
 * swagger-ui-custom.css
 * Dark-theme overrides for Swagger UI widgets — True Solar Time.
 *
 * SCOPE: This file themes Swagger UI's built-in components only:
 *   operation blocks, parameter tables, buttons, code blocks, modals, etc.
 *   It does NOT own the Schemas section. See note below.
 *
 * SCHEMAS SECTION: Swagger's built-in model renderer is hidden here (section 14:
 *   `.swagger-ui section.models { display: none !important }`). The replacement
 *   Schemas section is rendered entirely by the custom JS/CSS in the /docs route
 *   in app.py. Do not move schema rendering logic into this file.
 *
 * CSS LOAD ORDER (must be preserved):
 *   1. swagger-ui.css  (CDN — Swagger baseline)
 *   2. style.css       (site tokens — defines all var(--*) used below)
 *   3. this file       (Swagger overrides — depends on tokens from step 2)
 *
 * Hardcoded hex values (no matching token in style.css):
 *   #0d1117  deep surface (code/model boxes, slightly darker than --bg)
 *   #11141c  schema name pill bg
 *   #3a4160  schema name pill border
 *   #f8fafc  property names (near-white, above --text)
 *   #cbd5e1  default / example values  (slate-300)
 *   #b7c0cf  description text          (slate-400)
 *   #9ca3af  controls / mid-text       (slate-300 dim)
 *   #9aa7ff  type annotations          (periwinkle)
 *   #a9bbff  object / array labels     (periwinkle light)
 */

/* ─────────────────────────────────────────────────────────
   1. PAGE BASE
   ───────────────────────────────────────────────────────── */
body { background: var(--bg) !important; }

.swagger-ui {
  color: var(--text) !important;
  font-family: var(--font) !important;
}

/* ─────────────────────────────────────────────────────────
   2. LAYOUT RESETS
   style.css .page already handles max-width + centering —
   strip Swagger's own conflicting container rules.
   ───────────────────────────────────────────────────────── */
.swagger-ui .topbar { display: none !important; }
.swagger-ui .info   { display: none !important; }   /* replaced by our branded header */

.swagger-ui .wrapper {
  background: transparent !important;
  margin: 0 !important;
  max-width: 100% !important;
  padding: 0 !important;
}

/* ─────────────────────────────────────────────────────────
   3. SCHEME / SERVER BAR
   ───────────────────────────────────────────────────────── */
.swagger-ui .scheme-container {
  background: var(--surface) !important;
  border: 1px solid var(--border) !important;
  border-radius: var(--radius) !important;
  box-shadow: none !important;
  margin-bottom: 1.25rem !important;
  padding: 0.85rem 1.2rem !important;
}

.swagger-ui .schemes > label {
  color: var(--muted) !important;
  font-size: 0.72rem !important;
  font-weight: 700 !important;
  letter-spacing: 0.08em !important;
  text-transform: uppercase !important;
}

/* ─────────────────────────────────────────────────────────
   4. FILTER BAR
   ───────────────────────────────────────────────────────── */
.swagger-ui .filter-container {
  background: transparent !important;
  border: none !important;
  margin-bottom: 1rem !important;
  padding: 0 !important;
}

.swagger-ui .filter .operation-filter-input {
  background: var(--surface) !important;
  border: 1px solid var(--border) !important;
  border-radius: 7px !important;
  color: var(--text) !important;
  font-family: var(--font) !important;
  font-size: 0.88rem !important;
  padding: 0.55rem 0.8rem !important;
  width: 100% !important;
}

.swagger-ui .filter .operation-filter-input:focus {
  border-color: var(--accent) !important;
  outline: none !important;
}

/* ─────────────────────────────────────────────────────────
   5. TAG / OPERATION GROUP HEADERS
   accent2 matches the cyan/teal heading colour used in /api-docs
   ───────────────────────────────────────────────────────── */
.swagger-ui .opblock-tag-section { margin-bottom: 0.5rem !important; }

.swagger-ui .opblock-tag {
  border-bottom: 1px solid var(--border) !important;
  color: var(--accent2) !important;          /* matches "Authentication", "Rate Limiting" headings */
  font-family: var(--font) !important;
  font-size: 1.05rem !important;
  font-weight: 700 !important;
  letter-spacing: -0.01em !important;
  margin-bottom: 0.75rem !important;
  padding: 0.6rem 0 !important;
}

.swagger-ui .opblock-tag:hover  { background: transparent !important; }
.swagger-ui .opblock-tag a.nostyle { color: var(--accent2) !important; }
.swagger-ui .opblock-tag small  {
  color: var(--muted) !important;
  font-size: 0.85rem !important;
  font-weight: 400 !important;
}

/* ─────────────────────────────────────────────────────────
   6. OPERATION BLOCKS  (card-like, matches .endpoint-block)
   ───────────────────────────────────────────────────────── */
.swagger-ui .opblock {
  background: var(--surface) !important;
  border: 1px solid var(--border) !important;
  border-radius: var(--radius) !important;
  box-shadow: none !important;
  margin-bottom: 0.75rem !important;
}

.swagger-ui .opblock .opblock-summary {
  border-color: transparent !important;
  padding: 0.6rem 1rem !important;
}

.swagger-ui .opblock .opblock-summary-description {
  color: var(--muted) !important;
  font-size: 0.88rem !important;
}

.swagger-ui .opblock .opblock-summary-path {
  color: var(--text) !important;
  font-family: var(--mono) !important;
  font-size: 0.88rem !important;
}

.swagger-ui .opblock .opblock-summary-path__deprecated { color: var(--muted) !important; }

/* Per-method tints — subtle, consistent with palette */
.swagger-ui .opblock.opblock-post   { background: rgba(52,211,153,.04) !important; border-color: rgba(52,211,153,.20) !important; }
.swagger-ui .opblock.opblock-get    { background: rgba(96,165,250,.04) !important; border-color: rgba(96,165,250,.20) !important; }
.swagger-ui .opblock.opblock-put    { background: rgba(251,191,36,.04) !important; border-color: rgba(251,191,36,.20) !important; }
.swagger-ui .opblock.opblock-delete { background: rgba(248,113,113,.04) !important; border-color: rgba(248,113,113,.20) !important; }
.swagger-ui .opblock.opblock-patch  { background: rgba(167,139,250,.04) !important; border-color: rgba(167,139,250,.20) !important; }

/* ─────────────────────────────────────────────────────────
   7. METHOD BADGES
   Same border-radius and font-weight as site buttons.
   ───────────────────────────────────────────────────────── */
.swagger-ui .opblock-summary-method {
  border-radius: 4px !important;
  font-family: var(--mono) !important;
  font-size: 0.78rem !important;
  font-weight: 700 !important;
  letter-spacing: 0.04em !important;
  min-width: 64px !important;
  text-align: center !important;
}

.swagger-ui .opblock.opblock-post   .opblock-summary-method { background: #1a3a2a !important; color: #4ade80 !important; }
.swagger-ui .opblock.opblock-get    .opblock-summary-method { background: #1a2a3a !important; color: #60a5fa !important; }
.swagger-ui .opblock.opblock-put    .opblock-summary-method { background: #2a1e00 !important; color: var(--solar) !important; }
.swagger-ui .opblock.opblock-delete .opblock-summary-method { background: #3a1a1a !important; color: var(--red) !important; }
.swagger-ui .opblock.opblock-patch  .opblock-summary-method { background: #22183a !important; color: #a78bfa !important; }

/* ─────────────────────────────────────────────────────────
   8. OPERATION BODY  (expanded)
   ───────────────────────────────────────────────────────── */
.swagger-ui .opblock-body,
.swagger-ui .opblock-section,
.swagger-ui .opblock-description-wrapper,
.swagger-ui .opblock-external-docs-wrapper { background: transparent !important; }

.swagger-ui .opblock-description-wrapper   { padding: 0.5rem 1rem !important; }
.swagger-ui .opblock-external-docs-wrapper { padding: 0.5rem 1rem !important; }

.swagger-ui .opblock-description-wrapper p,
.swagger-ui .opblock-external-docs-wrapper p {
  color: var(--muted) !important;
  font-size: 0.88rem !important;
  line-height: 1.65 !important;
}

/* Sub-section labels: "Parameters", "Request Body", etc. */
.swagger-ui .opblock-section-header {
  background: rgba(42,45,62,.35) !important;
  border-bottom: 1px solid var(--border) !important;
  padding: 0.5rem 1rem !important;
}

.swagger-ui .opblock-section-header h4,
.swagger-ui .opblock-section-header label {
  color: var(--accent2) !important;
  font-family: var(--font) !important;
  font-size: 0.72rem !important;
  font-weight: 700 !important;
  letter-spacing: 0.09em !important;
  margin: 0 !important;
  text-transform: uppercase !important;
}

/* ─────────────────────────────────────────────────────────
   9. PARAMETER TABLES
   ───────────────────────────────────────────────────────── */
.swagger-ui table { background: transparent !important; }

.swagger-ui table thead tr th,
.swagger-ui table thead tr td {
  background: transparent !important;
  border-bottom: 1px solid var(--border) !important;
  color: var(--muted) !important;
  font-size: 0.72rem !important;
  font-weight: 600 !important;
  letter-spacing: 0.07em !important;
  padding: 0.45rem 0.75rem !important;
  text-transform: uppercase !important;
}

.swagger-ui table tbody tr td {
  border-bottom: 1px solid var(--border) !important;
  color: var(--text) !important;
  padding: 0.5rem 0.75rem !important;
  vertical-align: top !important;
}

.swagger-ui table tbody tr:last-child td { border-bottom: none !important; }

.swagger-ui .parameters-col_name,
.swagger-ui .col_header {
  color: var(--accent2) !important;
  font-size: 0.72rem !important;
  font-weight: 700 !important;
  letter-spacing: 0.07em !important;
  text-transform: uppercase !important;
}

.swagger-ui .parameter__name {
  color: var(--text) !important;
  font-family: var(--mono) !important;
  font-size: 0.88rem !important;
}

.swagger-ui .parameter__name.required::after { color: var(--red) !important; }
.swagger-ui .parameter__type    { color: var(--solar) !important; font-family: var(--mono) !important; font-size: 0.8rem !important; }
.swagger-ui .parameter__in      { color: var(--muted) !important; font-size: 0.75rem !important; font-style: italic !important; }
.swagger-ui .parameter__deprecated { color: var(--red) !important; }

.swagger-ui .markdown p,
.swagger-ui .markdown li {
  color: var(--muted) !important;
  font-size: 0.88rem !important;
  line-height: 1.65 !important;
}

/* ─────────────────────────────────────────────────────────
   10. BUTTONS  (matches style.css button aesthetic)
   ───────────────────────────────────────────────────────── */
.swagger-ui .btn {
  border-radius: 7px !important;
  box-shadow: none !important;
  font-family: var(--font) !important;
  font-size: 0.85rem !important;
  font-weight: 600 !important;
  transition: background 0.15s, border-color 0.15s !important;
}

.swagger-ui .btn.try-out__btn {
  background: transparent !important;
  border: 1px solid var(--accent) !important;
  color: var(--accent2) !important;
}

.swagger-ui .btn.try-out__btn:hover         { background: rgba(108,142,191,.1) !important; }
.swagger-ui .btn.try-out__btn.cancel        { border-color: var(--border) !important; color: var(--muted) !important; }
.swagger-ui .btn.try-out__btn.cancel:hover  { border-color: var(--muted) !important; color: var(--text) !important; }

.swagger-ui .btn.execute {
  background: var(--accent) !important;
  border: 1px solid var(--accent) !important;
  color: #fff !important;
  padding: 0.55rem 1.25rem !important;
}

.swagger-ui .btn.execute:hover { background: var(--accent2) !important; border-color: var(--accent2) !important; }

.swagger-ui .btn.btn-clear { background: transparent !important; border: 1px solid var(--border) !important; color: var(--muted) !important; }
.swagger-ui .btn.btn-clear:hover { border-color: var(--muted) !important; color: var(--text) !important; }

.swagger-ui .btn.authorize { background: transparent !important; border: 1px solid var(--accent) !important; color: var(--accent2) !important; }
.swagger-ui .btn.authorize svg { fill: var(--accent2) !important; }
.swagger-ui .btn.authorize:hover { background: rgba(108,142,191,.1) !important; }

/* ─────────────────────────────────────────────────────────
   11. FORM INPUTS  (Try it out — matches site input style)
   ───────────────────────────────────────────────────────── */
.swagger-ui input[type="text"],
.swagger-ui input[type="password"],
.swagger-ui input[type="search"],
.swagger-ui input[type="email"],
.swagger-ui textarea,
.swagger-ui select {
  background: var(--bg) !important;
  border: 1px solid var(--border) !important;
  border-radius: 7px !important;
  color: var(--text) !important;
  font-family: var(--mono) !important;
  font-size: 0.88rem !important;
  padding: 0.5rem 0.75rem !important;
}

.swagger-ui input:focus,
.swagger-ui textarea:focus,
.swagger-ui select:focus { border-color: var(--accent) !important; outline: none !important; }

.swagger-ui select option    { background: var(--surface) !important; color: var(--text) !important; }
.swagger-ui .content-type    { background: var(--bg) !important; border: 1px solid var(--border) !important; border-radius: 7px !important; color: var(--text) !important; }

.swagger-ui .body-param__text {
  background: var(--bg) !important;
  border: 1px solid var(--border) !important;
  border-radius: 7px !important;
  color: var(--text) !important;
  font-family: var(--mono) !important;
  font-size: 0.84rem !important;
  line-height: 1.6 !important;
}

/* ─────────────────────────────────────────────────────────
   12. RESPONSES
   ───────────────────────────────────────────────────────── */
.swagger-ui .responses-inner,
.swagger-ui .response { background: transparent !important; }

.swagger-ui .response-col_status {
  color: var(--accent2) !important;
  font-family: var(--mono) !important;
  font-weight: 600 !important;
}

.swagger-ui .live-responses-table .response-col_status { color: var(--green) !important; }
.swagger-ui .response-col_description__inner p { color: var(--muted) !important; font-size: 0.88rem !important; }
.swagger-ui .response-col_links  { color: var(--muted) !important; }
.swagger-ui .request-duration    { color: var(--muted) !important; font-family: var(--mono) !important; font-size: 0.8rem !important; }

/* ─────────────────────────────────────────────────────────
   13. CODE BLOCKS  (dark surface, monospace, subtle border)
   ───────────────────────────────────────────────────────── */
.swagger-ui pre,
.swagger-ui code {
  background: #0d1117 !important;
  border: 1px solid var(--border) !important;
  border-radius: 7px !important;
  color: #e6edf3 !important;
  font-family: var(--mono) !important;
  font-size: 0.82rem !important;
}

.swagger-ui .microlight {
  background: #0d1117 !important;
  border: 1px solid var(--border) !important;
  border-radius: 7px !important;
  color: #e6edf3 !important;
  font-family: var(--mono) !important;
  font-size: 0.82rem !important;
  line-height: 1.6 !important;
  padding: 0.85rem 1rem !important;
}

/* Syntax tints inside response bodies */
.swagger-ui .microlight .hljs-string      { color: #a5d6ff !important; }
.swagger-ui .microlight .hljs-number      { color: var(--solar) !important; }
.swagger-ui .microlight .hljs-literal     { color: var(--green) !important; }
.swagger-ui .microlight .hljs-attr        { color: var(--accent2) !important; }
.swagger-ui .microlight .hljs-punctuation { color: var(--muted) !important; }

/* ─────────────────────────────────────────────────────────
   14. SCHEMAS / MODELS
   Built-in section hidden; custom renderer in /docs replaces it.
   Rules below apply only to inline model previews inside endpoint blocks.
   ───────────────────────────────────────────────────────── */

/* Hide Swagger's built-in schemas/models section entirely */
.swagger-ui section.models { display: none !important; }

/* Inline model previews inside endpoint request/response blocks */
.swagger-ui .model { color: var(--text) !important; font-family: var(--mono) !important; font-size: 0.84rem !important; line-height: 1.6 !important; }
.swagger-ui .model > span:first-child, .swagger-ui .model > span:last-child { color: var(--muted) !important; }
.swagger-ui .model-box { background: #0d1117 !important; border: 1px solid var(--border) !important; border-radius: 8px !important; padding: 0.85rem 1rem !important; }
.swagger-ui table.model { background: transparent !important; border: none !important; }
.swagger-ui table.model tbody td { background: transparent !important; border: none !important; color: var(--text) !important; padding: 0.3rem 0.5rem 0.3rem 0 !important; vertical-align: baseline !important; }
.swagger-ui table.model tr.property-row > td:first-child { color: #f8fafc !important; font-family: var(--mono) !important; font-size: 0.82rem !important; font-weight: 600 !important; white-space: nowrap !important; width: 1px !important; }
.swagger-ui table.model tr.property-row > td:first-child .star { color: var(--red) !important; }
.swagger-ui .prop-type { color: #5bb8d4 !important; font-family: var(--mono) !important; font-size: 0.82rem !important; font-weight: 600 !important; opacity: 1 !important; }
.swagger-ui .prop-format { color: var(--accent) !important; font-family: var(--mono) !important; font-size: 0.8rem !important; }
.swagger-ui .model .property { color: #5bb8d4 !important; font-size: 0.82rem !important; font-weight: 600 !important; opacity: 1 !important; }
.swagger-ui .model .property.primitive { color: var(--green) !important; }
.swagger-ui .model .inner, .swagger-ui .model .inner-object { border-left: 2px solid rgba(91,184,212,0.2) !important; margin-left: 0.5rem !important; padding-left: 0.75rem !important; }
.swagger-ui .prop-description, .swagger-ui .model .renderedMarkdown, .swagger-ui .model .renderedMarkdown p { color: #9aaabb !important; font-size: 0.84rem !important; line-height: 1.6 !important; opacity: 1 !important; }
.swagger-ui .prop-enum { color: var(--green) !important; font-size: 0.8rem !important; }
.swagger-ui .prop-default, .swagger-ui .example-value, .swagger-ui .model-example { color: #cbd5e1 !important; opacity: 1 !important; }
.swagger-ui .model-toggle { color: var(--accent2) !important; fill: var(--accent2) !important; font-size: 0.9rem !important; opacity: 1 !important; }
.swagger-ui .model-title__text { color: #f8fafc !important; font-family: var(--mono) !important; font-weight: 600 !important; opacity: 1 !important; }
.swagger-ui .example-value__section { background: transparent !important; }
.swagger-ui .example-value__section-header { color: var(--accent2) !important; font-size: 0.72rem !important; font-weight: 700 !important; letter-spacing: 0.08em !important; text-transform: uppercase !important; }

/* ─────────────────────────────────────────────────────────
   15. AUTHORIZE MODAL
   ───────────────────────────────────────────────────────── */
.swagger-ui .dialog-ux .modal-ux {
  background: var(--surface) !important;
  border: 1px solid var(--border) !important;
  border-radius: var(--radius) !important;
  box-shadow: 0 8px 40px rgba(0,0,0,.7) !important;
  color: var(--text) !important;
}

.swagger-ui .dialog-ux .modal-ux-header {
  background: var(--surface) !important;
  border-bottom: 1px solid var(--border) !important;
  border-radius: var(--radius) var(--radius) 0 0 !important;
  padding: 1rem 1.2rem !important;
}

.swagger-ui .dialog-ux .modal-ux-header h3 { color: var(--text) !important; font-size: 0.95rem !important; font-weight: 700 !important; }

.swagger-ui .dialog-ux .modal-ux-content {
  background: var(--surface) !important;
  padding: 1rem 1.2rem !important;
}

.swagger-ui .dialog-ux .modal-ux-content p,
.swagger-ui .dialog-ux .modal-ux-content label { color: var(--muted) !important; font-size: 0.88rem !important; }
.swagger-ui .dialog-ux .modal-ux-content code  { background: transparent !important; border: none !important; color: var(--solar) !important; }
.swagger-ui .dialog-ux .backdrop-ux            { background: rgba(0,0,0,.75) !important; }

/* ─────────────────────────────────────────────────────────
   16. ICONS, ARROWS, MISC
   ───────────────────────────────────────────────────────── */
.swagger-ui .expand-methods svg,
.swagger-ui .expand-operation svg { fill: var(--muted) !important; }

.swagger-ui .arrow    { fill: var(--accent2) !important; }
.swagger-ui .unlocked { fill: var(--accent2) !important; }
.swagger-ui .locked   { fill: var(--accent2) !important; }

.swagger-ui .required { color: var(--red) !important; }
.swagger-ui .parameter__deprecated,
.swagger-ui .model-deprecated-warning { color: var(--red) !important; }

.swagger-ui .loading-container,
.swagger-ui .info__contact,
.swagger-ui .info__license { color: var(--muted) !important; }

/* ─────────────────────────────────────────────────────────
   17. SCROLLBARS  (Chrome / Edge)
   ───────────────────────────────────────────────────────── */
::-webkit-scrollbar              { width: 8px; height: 8px; }
::-webkit-scrollbar-track        { background: var(--bg); }
::-webkit-scrollbar-thumb        { background: var(--border); border-radius: 4px; }
::-webkit-scrollbar-thumb:hover  { background: var(--accent); }

/* === FINAL SCHEMA PILL OVERRIDE === */

/* kill any inherited/native button styling in schema controls */
#swagger-ui .swagger-ui section.models button.model-box-control,
#swagger-ui .swagger-ui section.models button.model-box-control:hover,
#swagger-ui .swagger-ui section.models button.model-box-control:focus,
#swagger-ui .swagger-ui section.models button.model-box-control:active {
  -webkit-appearance: none !important;
  appearance: none !important;
  background: transparent !important;
  background-color: transparent !important;
  background-image: none !important;
  border: none !important;
  border-radius: 0 !important;
  box-shadow: none !important;
  outline: none !important;
  padding: 0 !important;
}

/* neutralize wrapper spans that should not look like pills */
#swagger-ui .swagger-ui section.models button.model-box-control > span,
#swagger-ui .swagger-ui section.models button.model-box-control .pointer,
#swagger-ui .swagger-ui section.models button.model-box-control .model-box {
  background: transparent !important;
  background-color: transparent !important;
  background-image: none !important;
  border: none !important;
  border-radius: 0 !important;
  box-shadow: none !important;
  padding: 0 !important;
}

/* collapsed schema title */
#swagger-ui .swagger-ui section.models button.model-box-control .model.model-title {
  display: inline-block !important;
  background: #11141c !important;
  background-color: #11141c !important;
  background-image: none !important;
  color: #f8fafc !important;
  border: 1px solid #2f3650 !important;
  border-radius: 999px !important;
  box-shadow: none !important;
  padding: 2px 12px !important;
  line-height: 1.15 !important;
  font-family: var(--mono) !important;
  font-size: 0.84rem !important;
  font-weight: 600 !important;
  vertical-align: middle !important;
}

/* expanded schema title */
#swagger-ui .swagger-ui section.models button.model-box-control .model-title__text {
  display: inline-block !important;
  background: #11141c !important;
  background-color: #11141c !important;
  background-image: none !important;
  color: #f8fafc !important;
  border: 1px solid #2f3650 !important;
  border-radius: 999px !important;
  box-shadow: none !important;
  padding: 2px 12px !important;
  line-height: 1.15 !important;
  font-family: var(--mono) !important;
  font-size: 0.84rem !important;
  font-weight: 600 !important;
  vertical-align: middle !important;
}

/* property-name first cell */
#swagger-ui .swagger-ui section.models table.model tr.property-row > td:first-child {
  width: 1px !important;
  white-space: nowrap !important;
  background: #11141c !important;
  background-color: #11141c !important;
  background-image: none !important;
  color: #f8fafc !important;
  border: 1px solid #2f3650 !important;
  border-radius: 999px !important;
  box-shadow: none !important;
  padding: 2px 10px !important;
  line-height: 1.15 !important;
  font-family: var(--mono) !important;
  font-size: 0.8rem !important;
  font-weight: 600 !important;
}

/* keep text inside the property pill bright */
#swagger-ui .swagger-ui section.models table.model tr.property-row > td:first-child,
#swagger-ui .swagger-ui section.models table.model tr.property-row > td:first-child * {
  color: #f8fafc !important;
  opacity: 1 !important;
}

/* blue carets */
#swagger-ui .swagger-ui section.models .model-toggle,
#swagger-ui .swagger-ui section.models .model-toggle:before,
#swagger-ui .swagger-ui section.models .model-toggle:after,
#swagger-ui .swagger-ui section.models .model-toggle *,
#swagger-ui .swagger-ui section.models .model-toggle svg,
#swagger-ui .swagger-ui section.models .model-toggle svg path {
  color: #8ab4f8 !important;
  fill: #8ab4f8 !important;
  stroke: #8ab4f8 !important;
  background: transparent !important;
}