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

/* The palette and typefaces of dexdata.io (web/src/index.css). */
:root{
  color-scheme:dark;
  --dd-ink:#07090d; --dd-surface:#0d1117; --dd-raised:#141b24;
  --dd-line:#1e2733; --dd-line-strong:#3b4758;
  --dd-text:#e8edf4; --dd-text-2:#a3b1c4; --dd-text-3:#7b899d;
  --dd-ember:#ff6b2c; --dd-magenta:#ff2d95;
  --dd-success:#34d399; --dd-warning:#fbbf24; --dd-danger:#f87171; --dd-info:#60a5fa;
  --dd-brand:linear-gradient(90deg,#ff6b2c,#ff2d95);
  --dd-sans:"Inter",ui-sans-serif,system-ui,-apple-system,sans-serif;
  --dd-mono:"JetBrains Mono",ui-monospace,SFMono-Regular,Menlo,monospace;
}

/* --- 1. the framework's topbar: removed, see the note in docs-theme.ts --- */
.swagger-ui .topbar{display:none !important}

/* --- 2. page ground: the site's ink, with the glow its hero has --- */
html:root{background:var(--dd-ink)}
html:root body{
  margin:0; -webkit-font-smoothing:antialiased;
  background:radial-gradient(ellipse 900px 420px at 50% 0,rgba(255,45,149,.14),transparent 70%) no-repeat var(--dd-ink);
}
html:root .swagger-ui{background:transparent; color:var(--dd-text); font-family:var(--dd-sans)}
html:root .swagger-ui .wrapper{max-width:1180px; padding:0 24px}
html:root .swagger-ui :focus-visible{outline:2px solid var(--dd-ember); outline-offset:2px}
html:root .swagger-ui *{scrollbar-width:thin; scrollbar-color:var(--dd-line-strong) transparent}

/* every piece of Swagger UI prose, in one sweep */
html:root .swagger-ui p, html:root .swagger-ui li, html:root .swagger-ui label, html:root .swagger-ui table, html:root .swagger-ui td, html:root .swagger-ui small,
html:root .swagger-ui .markdown p, html:root .swagger-ui .markdown li, html:root .swagger-ui .renderedMarkdown p, html:root .swagger-ui .renderedMarkdown li,
html:root .swagger-ui .opblock .opblock-description-wrapper p{
  color:var(--dd-text-2); font-family:var(--dd-sans); font-size:14px; line-height:1.62;
}
html:root .swagger-ui h1, html:root .swagger-ui h2, html:root .swagger-ui h3, html:root .swagger-ui h4, html:root .swagger-ui h5, html:root .swagger-ui section h3{
  color:var(--dd-text); font-family:var(--dd-sans); letter-spacing:-.01em;
}
html:root .swagger-ui strong{color:var(--dd-text); font-weight:600}
html:root .swagger-ui a, html:root .swagger-ui .info a, html:root .swagger-ui .opblock-tag a.link{color:var(--dd-ember)}
html:root .swagger-ui a:hover{filter:brightness(1.15)}

/* Inline code, which is most of this document — it is a field reference. The vendored rule paints
   it violet for no reason that survives here; every one of these spans is a field name, a chain or
   a literal, so it reads as plain text set in the mono face on a quiet chip. */
html:root .swagger-ui .markdown code, html:root .swagger-ui .renderedMarkdown code{
  font-family:var(--dd-mono); font-size:12.5px; font-weight:500;
  background:rgba(148,163,184,.12); color:var(--dd-text);
  border-radius:5px; padding:2px 6px;
}

/* --- 3. the brand bar the script adds: dexdata.io's own header --- */
.dd-bar{
  position:sticky; top:0; z-index:20; font-family:var(--dd-sans);
  border-bottom:1px solid rgba(30,39,51,.7); background:rgba(7,9,13,.8);
  -webkit-backdrop-filter:blur(8px); backdrop-filter:blur(8px);
}
.dd-bar__in{
  box-sizing:border-box; max-width:1180px; height:64px; margin:0 auto; padding:0 24px;
  display:flex; align-items:center; justify-content:space-between; gap:16px;
}
.dd-bar a{text-decoration:none; transition:color .15s, border-color .15s}
.dd-bar a:focus-visible{outline:2px solid var(--dd-ember); outline-offset:2px; border-radius:6px}
.dd-bar__home{
  display:inline-flex; align-items:center; gap:10px; color:#fff;
  font-size:21.6px; font-weight:700; letter-spacing:-.025em;
}
.dd-bar__home img{height:32px; width:auto}
.dd-bar__tag{
  margin-left:4px; padding:3px 9px; border:1px solid var(--dd-line); border-radius:999px;
  font-size:11px; font-weight:600; letter-spacing:.06em; text-transform:uppercase; color:var(--dd-text-2);
}
.dd-bar__nav{display:flex; align-items:center; gap:28px}
.dd-bar__nav a{color:var(--dd-text-2); font-size:14px}
.dd-bar__nav a:hover{color:#fff}
.dd-bar__nav a.dd-bar__cta{
  display:inline-flex; align-items:center; min-height:40px; box-sizing:border-box; padding:0 16px;
  border:1px solid var(--dd-line); border-radius:8px; background:var(--dd-raised);
  color:#e2e8f0; font-weight:500; white-space:nowrap;
}
.dd-bar__nav a.dd-bar__cta:hover{border-color:var(--dd-line-strong); color:#fff}

/* --- 4. masthead: the info block becomes the title card --- */
html:root .swagger-ui .information-container{padding:0}
html:root .swagger-ui .info{
  margin:32px 0 0; padding:32px 32px 28px; background:var(--dd-surface);
  border:1px solid var(--dd-line); border-radius:16px;
}
html:root .swagger-ui .info hgroup.main{margin:0}
html:root .swagger-ui .info .title{
  font-size:36px; font-weight:700; letter-spacing:-.03em; color:#fff; margin:0 0 6px;
}
html:root .swagger-ui .info .title small,
html:root .swagger-ui .info .title small.version-stamp{
  background:var(--dd-raised); border:1px solid var(--dd-line); border-radius:999px;
  vertical-align:middle; margin:0 0 0 10px; padding:3px 10px; top:-6px;
}
html:root .swagger-ui .info .title small pre{
  font-family:var(--dd-mono); font-size:11px; font-weight:500; color:var(--dd-text-2);
  background:none; padding:0; margin:0;
}
html:root .swagger-ui .info .title small:not(.version-stamp){border-color:rgba(255,107,44,.3); background:rgba(255,107,44,.1)}
html:root .swagger-ui .info .title small:not(.version-stamp) pre{color:var(--dd-ember)}
html:root .swagger-ui .info .link .url{font-family:var(--dd-mono); font-size:12.5px}
/* the spec's licence field is package metadata ("UNLICENSED" = not open source); as a line of the
   masthead it reads as a warning about the API, so the page leaves it to the JSON document */
html:root .swagger-ui .info .info__license{display:none}
html:root .swagger-ui .info .description{margin:20px 0 0}
html:root .swagger-ui .info .description p{margin:0; padding:0 0 18px}
/* The description is one flat run of heading + paragraph pairs. On a wide screen it is poured into
   two columns under the opening paragraph, so the page's first screen is the whole briefing and not
   a single narrow strip with an empty half beside it. */
html:root .swagger-ui .info .description > .renderedMarkdown{column-count:2; column-gap:48px}
html:root .swagger-ui .info .description > .renderedMarkdown > p:first-child{
  column-span:all; max-width:82ch; padding:0 0 22px; font-size:15.5px; color:var(--dd-text);
}
html:root .swagger-ui .info .description > .renderedMarkdown > p{break-inside:avoid}
/* The section heads are whole sentences ("Reading these docs is open; calling an endpoint is
   not"), so they are set as sentences — an uppercase eyebrow that long cannot be read. */
html:root .swagger-ui .info .description h3{
  font-size:15px; font-weight:600; color:#fff; line-height:1.4;
  margin:0; padding:18px 0 6px; border-top:1px solid var(--dd-line);
  break-after:avoid; break-inside:avoid;
}
html:root .swagger-ui .info .description h3 code{font-size:13px}

/* --- 5. the gate. The docs are open, calling is not, so Authorize is the first affordance --- */
/* The vendored container is a full-bleed band with a ".wrapper" inside it; the band is dissolved
   and the card is drawn on the inner section, so it lines up with the masthead above it. */
html:root .swagger-ui .scheme-container{
  background:transparent; box-shadow:none; border:none; box-sizing:border-box;
  max-width:1180px; margin:16px auto 8px; padding:0 24px;
}
html:root .swagger-ui .scheme-container .schemes{
  display:flex; align-items:flex-end; justify-content:space-between; gap:16px; flex-wrap:wrap;
  box-sizing:border-box; max-width:none; margin:0; padding:16px 20px;
  background:var(--dd-surface); border:1px solid var(--dd-line); border-radius:16px;
}
html:root .swagger-ui .scheme-container .schemes > .schemes-server-container{margin:0}
html:root .swagger-ui .scheme-container .schemes .servers-title{
  display:block; margin:0 0 6px; color:var(--dd-text-3); font-family:var(--dd-sans);
  font-size:11px; font-weight:600; letter-spacing:.08em; text-transform:uppercase;
}
html:root .swagger-ui .scheme-container .schemes .servers > label{margin:0}
html:root .swagger-ui .scheme-container .schemes .servers > label select{min-width:0; max-width:100%}
html:root .swagger-ui .auth-wrapper{margin:0; flex:none}
/* The vendored button is "display:inline" with a "float:left" on its label, which is why it comes
   out lopsided the moment anything about its box changes. It is laid out as a flex row here so the
   lock sits beside the word instead of being floated past it. The gradient, with ink text, is the
   site's primary button. */
html:root .swagger-ui .scheme-container .btn.authorize{
  display:inline-flex; align-items:center; gap:9px; line-height:1; min-height:40px;
  background:var(--dd-brand); border:none; color:var(--dd-ink);
  border-radius:8px; font-family:var(--dd-sans); font-size:14px; font-weight:600;
  box-shadow:0 8px 24px -10px rgba(255,45,149,.5); padding:0 16px; margin:0;
}
html:root .swagger-ui .scheme-container .btn.authorize span{float:none; padding:0; color:var(--dd-ink); font-weight:600}
html:root .swagger-ui .scheme-container .btn.authorize svg{fill:var(--dd-ink); width:16px; height:16px; margin:0}
html:root .swagger-ui .scheme-container .btn.authorize:hover{filter:brightness(1.1)}

/* --- 6. operations. Every route here is a GET, so the verb is a label and not a signal --- */
html:root .swagger-ui .opblock-tag{
  font-size:18px; font-weight:600; color:#fff; border-bottom:1px solid var(--dd-line);
  padding:22px 4px 12px; margin:20px 0 14px;
}
html:root .swagger-ui .opblock-tag:hover{background:transparent}
html:root .swagger-ui .opblock-tag a.nostyle{color:#fff}
html:root .swagger-ui .opblock-tag small{color:var(--dd-text-3); font-size:13px; font-weight:400; padding:0 12px}
html:root .swagger-ui .opblock-tag small p{color:inherit; font-size:inherit}
html:root .swagger-ui .opblock.opblock-get, html:root .swagger-ui .opblock.opblock-post, html:root .swagger-ui .opblock.opblock-deprecated{
  background:var(--dd-surface); border:1px solid var(--dd-line); border-radius:12px;
  box-shadow:none; margin:0 0 10px; overflow:hidden; transition:border-color .15s;
}
html:root .swagger-ui .opblock.opblock-get:hover, html:root .swagger-ui .opblock.opblock-get.is-open{border-color:var(--dd-line-strong)}
html:root .swagger-ui .opblock.opblock-get .opblock-summary, html:root .swagger-ui .opblock.opblock-post .opblock-summary{
  border:none; padding:8px 12px;
}
html:root .swagger-ui .opblock.opblock-get.is-open .opblock-summary{border-bottom:1px solid var(--dd-line)}
html:root .swagger-ui .opblock.opblock-get .opblock-summary-method, html:root .swagger-ui .opblock.opblock-post .opblock-summary-method{
  background:rgba(255,107,44,.1); border:1px solid rgba(255,107,44,.3); color:var(--dd-ember);
  font-family:var(--dd-mono); font-size:11px; font-weight:700; letter-spacing:.06em;
  border-radius:6px; text-shadow:none; min-width:52px; padding:6px 0;
}
html:root .swagger-ui .opblock .opblock-summary-path, html:root .swagger-ui .opblock .opblock-summary-path__deprecated{
  font-family:var(--dd-mono); font-size:13.5px; font-weight:500; color:var(--dd-text);
}
html:root .swagger-ui .opblock .opblock-summary-path a{color:inherit}
html:root .swagger-ui .opblock .opblock-summary-description{font-family:var(--dd-sans); font-size:13px; color:var(--dd-text-3)}
html:root .swagger-ui .authorization__btn svg, html:root .swagger-ui .expand-operation svg, html:root .swagger-ui .opblock-control-arrow svg,
html:root .swagger-ui .opblock-summary .view-line-link svg{fill:var(--dd-text-3)}
html:root .swagger-ui .opblock-body{background:var(--dd-surface)}
html:root .swagger-ui .opblock.opblock-get .opblock-body > .opblock-description-wrapper{border-top:none}
html:root .swagger-ui .opblock .opblock-description-wrapper{padding:18px 20px 16px; margin:0}
html:root .swagger-ui .opblock .opblock-description-wrapper p{margin:0 0 10px}
/* The last list of an operation's description is its price, one line per chain group (it is
   appended by src/docs/priced-spec.ts). Set as chips so it reads as a price list and not as prose. */
html:root .swagger-ui .opblock-description .renderedMarkdown > ul:last-child{
  list-style:none; display:flex; flex-wrap:wrap; gap:8px; margin:12px 0 0; padding:0;
}
html:root .swagger-ui .opblock-description .renderedMarkdown > ul:last-child > li{
  font-family:var(--dd-mono); font-size:12px; line-height:1.5; color:var(--dd-text);
  background:var(--dd-raised); border:1px solid var(--dd-line); border-radius:8px; padding:5px 10px;
}
html:root .swagger-ui .opblock.opblock-get .opblock-section-header, html:root .swagger-ui .opblock.opblock-post .opblock-section-header{
  background:var(--dd-raised); box-shadow:none; min-height:48px; padding:8px 20px;
  border-top:1px solid var(--dd-line); border-bottom:1px solid var(--dd-line);
}
html:root .swagger-ui .opblock .opblock-section-header h4,
html:root .swagger-ui .opblock .opblock-section-header .tab-header .tab-item.active h4 span{
  font-family:var(--dd-sans); font-size:12px; font-weight:600; text-transform:uppercase;
  letter-spacing:.08em; color:var(--dd-text-2);
}
html:root .swagger-ui .opblock.opblock-get .opblock-section-header .tab-header .tab-item .opblock-title span:after{display:none}

/* --- 7. parameters --- */
html:root .swagger-ui .parameters-container, html:root .swagger-ui .opblock .table-container{padding:0}
html:root .swagger-ui .opblock .table-container{padding:8px 20px 12px}
html:root .swagger-ui table thead tr th, html:root .swagger-ui table thead tr td,
html:root .swagger-ui .opblock.opblock-get thead tr th, html:root .swagger-ui .opblock.opblock-get thead tr td{
  font-family:var(--dd-sans); font-size:11px; font-weight:600; text-transform:uppercase;
  letter-spacing:.08em; color:var(--dd-text-3); border-bottom:1px solid var(--dd-line); padding:12px 0;
}
html:root .swagger-ui table tbody tr td{padding:14px 0 6px; vertical-align:top}
html:root .swagger-ui table tbody tr td:first-of-type{min-width:9em; padding-right:16px}
html:root .swagger-ui .parameter__name{font-family:var(--dd-mono); font-size:13.5px; color:var(--dd-text); font-weight:500}
html:root .swagger-ui .opblock .parameter__name.required span, html:root .swagger-ui .opblock .parameter__name.required:after{color:var(--dd-ember)}
html:root .swagger-ui .parameter__type{font-family:var(--dd-mono); font-size:11.5px; color:var(--dd-text-3); padding:4px 0 2px}
html:root .swagger-ui .parameter__in{font-family:var(--dd-mono); font-size:11px; color:var(--dd-text-3); font-style:normal}
html:root .swagger-ui .parameters-col_description{margin-bottom:0}
html:root .swagger-ui .parameters-col_description .renderedMarkdown p{margin:0 0 10px}
html:root .swagger-ui .parameters-col_description input, html:root .swagger-ui .parameters-col_description select{
  width:100%; max-width:460px;
}
html:root .swagger-ui .parameter__enum, html:root .swagger-ui .parameter__default{color:var(--dd-text-3)}

/* --- 8. controls: the site's inputs and its three button variants --- */
html:root .swagger-ui input[type=text], html:root .swagger-ui input[type=password], html:root .swagger-ui input[type=search], html:root .swagger-ui textarea{
  font-family:var(--dd-mono); font-size:13px; color:var(--dd-text); min-height:40px; margin:0;
  background:var(--dd-ink); border:1px solid var(--dd-line); border-radius:8px; box-shadow:none;
  padding:8px 12px;
}
html:root .swagger-ui select, html:root .swagger-ui .opblock .response-control-media-type--accept-controller select.content-type{
  font-family:var(--dd-mono); font-size:13px; font-weight:500; color:var(--dd-text); min-height:40px;
  background-color:var(--dd-ink); border:1px solid var(--dd-line); border-radius:8px; box-shadow:none;
  padding:8px 36px 8px 12px;
}
html:root .swagger-ui input[type=text]:hover, html:root .swagger-ui select:hover, html:root .swagger-ui textarea:hover{border-color:var(--dd-line-strong)}
html:root .swagger-ui input[type=text]:focus:not(.download-url-input), html:root .swagger-ui input[type=password]:focus:not(.download-url-input),
html:root .swagger-ui select:focus, html:root .swagger-ui textarea:focus{
  border-color:var(--dd-ember) !important; outline:none; box-shadow:0 0 0 3px rgba(255,107,44,.18);
}
html:root .swagger-ui input::placeholder, html:root .swagger-ui textarea::placeholder{color:var(--dd-text-3); opacity:1}
html:root .swagger-ui input[disabled], html:root .swagger-ui select[disabled], html:root .swagger-ui textarea[disabled]{
  background-color:var(--dd-raised); border-color:var(--dd-line); color:var(--dd-text-3); cursor:not-allowed;
}
html:root .swagger-ui input.invalid, html:root .swagger-ui select.invalid, html:root .swagger-ui textarea.invalid{
  background-color:rgba(248,113,113,.08); border-color:var(--dd-danger);
}
html:root .swagger-ui .btn{
  font-family:var(--dd-sans); font-size:14px; font-weight:500; min-height:40px; padding:0 16px;
  border:1px solid var(--dd-line); border-radius:8px; box-shadow:none;
  background:var(--dd-raised); color:#e2e8f0; transition:border-color .15s, color .15s, filter .15s;
}
html:root .swagger-ui .btn:hover{border-color:var(--dd-line-strong); color:#fff; box-shadow:none}
html:root .swagger-ui .opblock .opblock-section-header .try-out__btn{
  border-color:var(--dd-line); color:#e2e8f0; background:var(--dd-surface); min-height:34px; font-size:13px;
}
html:root .swagger-ui .opblock .opblock-section-header .try-out__btn.cancel{
  border-color:rgba(248,113,113,.3); background:rgba(248,113,113,.1); color:var(--dd-danger);
}
html:root .swagger-ui .btn-group{padding:16px 20px 20px; gap:10px}
html:root .swagger-ui .opblock .btn.execute{
  background:var(--dd-brand); border:none; color:var(--dd-ink); font-weight:600;
  box-shadow:0 8px 24px -12px rgba(255,45,149,.55);
}
html:root .swagger-ui .opblock .btn.execute:hover{filter:brightness(1.1); color:var(--dd-ink)}
html:root .swagger-ui .opblock .btn.btn-clear{border-color:var(--dd-line); color:#e2e8f0}
html:root .swagger-ui .execute-wrapper{padding:16px 20px 20px}
html:root .swagger-ui .execute-wrapper .btn{width:100%}
html:root .swagger-ui .btn-group .btn{flex:1; border-radius:8px}
html:root .swagger-ui .btn-group .btn:first-child, html:root .swagger-ui .btn-group .btn:last-child{border-radius:8px}

/* --- 9. responses: what came back from a real call, then what the contract says can --- */
html:root .swagger-ui .responses-inner{padding:20px}
html:root .swagger-ui .opblock .responses-inner h4, html:root .swagger-ui .opblock .responses-inner h5{
  font-family:var(--dd-sans); font-size:11px; font-weight:600; text-transform:uppercase;
  letter-spacing:.08em; color:var(--dd-text-3); margin:0 0 8px;
}
html:root .swagger-ui .opblock .responses-inner > div > div > h4, html:root .swagger-ui .opblock .responses-inner > div > h4{margin:24px 0 8px}
html:root .swagger-ui .responses-inner .curl-command{position:relative; margin:0 0 20px}
html:root .swagger-ui .responses-inner .request-url{margin:0 0 4px}
html:root .swagger-ui .responses-inner table.responses-table{margin:0; padding:0}
html:root .swagger-ui .response-col_status{
  font-family:var(--dd-mono); font-size:13.5px; font-weight:700; color:var(--dd-text); width:5.5em;
}
html:root .swagger-ui tr.response[data-code^="2"] > .response-col_status{color:var(--dd-success)}
html:root .swagger-ui tr.response[data-code^="4"] > .response-col_status{color:var(--dd-warning)}
html:root .swagger-ui tr.response[data-code^="5"] > .response-col_status{color:var(--dd-danger)}
html:root .swagger-ui table.responses-table tbody tr.response + tr.response > td{border-top:1px solid var(--dd-line)}
html:root .swagger-ui table.responses-table tbody tr td{padding:16px 0}
html:root .swagger-ui .response-col_description{width:auto}
html:root .swagger-ui .response-col_description__inner p, html:root .swagger-ui .response-col_description .renderedMarkdown p{margin:0 0 10px}
html:root .swagger-ui .response-col_links, html:root .swagger-ui .response-col_links i{color:var(--dd-text-3); font-size:12px; font-style:normal}
html:root .swagger-ui .response-controls{padding:0; margin:4px 0 10px}
html:root .swagger-ui .response-control-media-type__title,
html:root .swagger-ui .opblock .response-control-media-type--accept-controller .response-control-media-type__accept-message{
  color:var(--dd-text-3); font-size:11.5px;
}
html:root .swagger-ui .live-responses-table .response-col_description > div{margin-top:14px}
html:root .swagger-ui .model-example{margin-top:6px}
html:root .swagger-ui .opblock .model-example .tab{margin:0 0 8px; padding:0; gap:4px}
html:root .swagger-ui .opblock .model-example .tab .tabitem{margin:0; padding:0}
html:root .swagger-ui .opblock .model-example .tab .tabitem:after{display:none}
html:root .swagger-ui .opblock .model-example .tab button{
  font-family:var(--dd-sans); font-size:12.5px; font-weight:500; color:var(--dd-text-3);
  padding:6px 10px; border-radius:6px; background:transparent;
}
html:root .swagger-ui .opblock .model-example .tab .tabitem.active button{color:#fff; background:var(--dd-raised)}

/* --- 10. code blocks: the curl line, the live body and headers, the example payloads --- */
html:root .swagger-ui .opblock pre.microlight, html:root .swagger-ui .opblock .highlight-code pre.microlight,
html:root .swagger-ui .opblock .request-url pre.microlight{
  font-family:var(--dd-mono) !important; font-size:12.5px !important; line-height:1.65 !important;
  font-weight:400; background:var(--dd-ink) !important; color:var(--dd-text) !important;
  border:1px solid var(--dd-line); border-radius:10px; padding:14px 16px !important; margin:0;
  max-height:440px; white-space:pre-wrap; word-break:normal; overflow-wrap:anywhere; overflow:auto;
  -webkit-hyphens:none; hyphens:none;
}
/* Code wraps where a reader would break it — at a space first, inside a long address only when it
   has to — and is never hyphenated: a hyphen that is not in the payload reads as part of it. The
   curl line carries an inline "pre", which would run it off the edge of a phone. */
html:root .swagger-ui .opblock pre.microlight code{
  white-space:pre-wrap !important; word-break:normal !important; overflow-wrap:anywhere;
}
/* a URL has no spaces to break at, so it fills each line to the edge */
html:root .swagger-ui .opblock .request-url pre.microlight, html:root .swagger-ui .opblock pre.curl.microlight code{word-break:break-all !important}
html:root .swagger-ui .opblock pre.microlight code, html:root .swagger-ui .opblock pre.microlight span{
  font-family:var(--dd-mono) !important; font-size:12.5px; font-weight:400;
}
html:root .swagger-ui .opblock pre.curl.microlight{padding-right:52px !important}
html:root .swagger-ui .opblock .request-url pre.microlight{color:var(--dd-text-2) !important}
/* The highlighter writes its colours inline, picked for its own grey ground: light green strings
   and red numbers. They are re-mapped here by the only handle an inline style offers — its value.
   If a plugin bump changes those values the tokens fall back to the highlighter's own colours,
   which are still readable on this ground; nothing breaks. */
html:root .swagger-ui pre.microlight span[style*="162, 252, 162"]{color:#86efac !important}
html:root .swagger-ui pre.microlight span[style*="211, 99, 99"]{color:#fdba74 !important}
html:root .swagger-ui pre.microlight span[style*="252, 194, 140"]{color:#f9a8d4 !important}
html:root .swagger-ui pre.microlight .headerline{display:block; color:var(--dd-text-2)}
html:root .swagger-ui .highlight-code{position:relative}
html:root .swagger-ui .highlight-code > .copy-to-clipboard, html:root .swagger-ui .curl-command .copy-to-clipboard{
  top:8px; right:8px; bottom:auto; width:32px; height:32px; border-radius:8px; box-sizing:border-box;
  background:var(--dd-raised); border:1px solid var(--dd-line);
}
/* the curl block's heading sits inside the same positioned box, above the code */
html:root .swagger-ui .curl-command .copy-to-clipboard{top:32px}
html:root .swagger-ui .highlight-code > .copy-to-clipboard:hover, html:root .swagger-ui .curl-command .copy-to-clipboard:hover{
  border-color:var(--dd-line-strong);
}
html:root .swagger-ui .highlight-code > .copy-to-clipboard button, html:root .swagger-ui .curl-command .copy-to-clipboard button{
  width:30px; height:30px; background-position:center; opacity:.85;
}
html:root .swagger-ui .highlight-code > .download-contents{
  top:8px; right:48px; bottom:auto; height:32px; width:auto; padding:0 12px; border-radius:8px;
  background:var(--dd-raised); border:1px solid var(--dd-line); color:#e2e8f0;
  font-family:var(--dd-sans); font-size:12px; font-weight:500;
}
html:root .swagger-ui .highlight-code > .download-contents:hover{border-color:var(--dd-line-strong); color:#fff}

/* --- 11. schema models --- */
html:root .swagger-ui .model-box{background:var(--dd-ink); border:1px solid var(--dd-line); border-radius:10px; padding:14px 16px}
html:root .swagger-ui .model, html:root .swagger-ui .model .property, html:root .swagger-ui .model .property-row, html:root .swagger-ui .model .brace-open, html:root .swagger-ui .model .brace-close{
  font-family:var(--dd-mono); font-size:12.5px; color:var(--dd-text);
}
html:root .swagger-ui .model-box .model-title, html:root .swagger-ui .model .model-title{font-family:var(--dd-mono); color:var(--dd-text); font-size:13px}
html:root .swagger-ui .model .prop-type{font-family:var(--dd-mono); color:#f9a8d4}
html:root .swagger-ui .model .prop-format, html:root .swagger-ui .model .description{color:var(--dd-text-3)}
html:root .swagger-ui .model .property-row.required .star{color:var(--dd-ember)}
html:root .swagger-ui .model-box-control:not(.prop){color:var(--dd-text)}
html:root .swagger-ui section.models{background:var(--dd-surface); border:1px solid var(--dd-line); border-radius:12px}
html:root .swagger-ui section.models h4{border-color:var(--dd-line); font-family:var(--dd-sans)}
html:root .swagger-ui section.models h4 span{color:var(--dd-text)}
html:root .swagger-ui section.models .model-container{background:var(--dd-raised); border-radius:8px}

/* --- 12. the Authorize dialog --- */
html:root .swagger-ui .dialog-ux .backdrop-ux{background:rgba(7,9,13,.78); -webkit-backdrop-filter:blur(3px); backdrop-filter:blur(3px)}
html:root .swagger-ui .dialog-ux .modal-ux{
  background-color:var(--dd-surface); border:1px solid var(--dd-line); border-radius:16px;
  box-shadow:0 24px 80px -20px rgba(0,0,0,.8); color:var(--dd-text); width:calc(100% - 32px); max-width:520px;
}
html:root .swagger-ui .dialog-ux .modal-ux-header{border-bottom:1px solid var(--dd-line); padding:16px 24px}
html:root .swagger-ui .dialog-ux .modal-ux-header h3{font-size:16px; font-weight:600; color:#fff; padding:0}
html:root .swagger-ui .dialog-ux .modal-ux-header .close-modal svg{fill:var(--dd-text-2)}
html:root .swagger-ui .dialog-ux .modal-ux-content{padding:20px 24px 24px}
html:root .swagger-ui .dialog-ux .modal-ux-content h4{font-size:14px; font-weight:600; color:#fff; margin:0 0 10px}
html:root .swagger-ui .dialog-ux .modal-ux .auth-container{border:none; margin:0; padding:0}
html:root .swagger-ui .dialog-ux .modal-ux .auth-container .wrapper{padding:0; margin:0 0 12px}
html:root .swagger-ui .dialog-ux .modal-ux p, html:root .swagger-ui .dialog-ux .modal-ux label{color:var(--dd-text-2); font-size:13.5px}
html:root .swagger-ui .dialog-ux .modal-ux code{
  font-family:var(--dd-mono); font-size:12.5px; color:var(--dd-text);
  background:rgba(148,163,184,.12); border-radius:5px; padding:2px 6px;
}
html:root .swagger-ui .dialog-ux .modal-ux .auth-container input[type=text],
html:root .swagger-ui .dialog-ux .modal-ux .auth-container input[type=password]{width:100%; min-width:0; max-width:none; box-sizing:border-box}
html:root .swagger-ui .dialog-ux .modal-ux .auth-btn-wrapper{display:flex; justify-content:flex-end; gap:10px; padding:16px 0 0; margin:0}
html:root .swagger-ui .dialog-ux .modal-ux .btn.modal-btn, html:root .swagger-ui .dialog-ux .modal-ux .btn.modal-btn.btn-done{
  border-color:var(--dd-line); color:#e2e8f0; margin:0;
}
html:root .swagger-ui .dialog-ux .modal-ux .btn.modal-btn.authorize{
  background:var(--dd-brand); border:none; color:var(--dd-ink); font-weight:600;
}
html:root .swagger-ui .dialog-ux .modal-ux .btn.modal-btn.authorize:hover{filter:brightness(1.1)}

/* --- 13. the rest of the framework's chrome --- */
html:root .swagger-ui .loading-container .loading:after{color:var(--dd-text-2); font-family:var(--dd-sans)}
html:root .swagger-ui .loading-container .loading:before{border-color:var(--dd-ember) var(--dd-line) var(--dd-line)}
html:root .swagger-ui .info .errors-wrapper, html:root .swagger-ui .opblock .validation-errors.errors-wrapper{
  background:rgba(248,113,113,.08); border:1px solid rgba(248,113,113,.3); border-radius:10px;
  color:var(--dd-text); margin:12px 20px;
}

/* --- 14. where the spec lives.
   This was a ::after on the last ".wrapper", which put it inside the Authorize row instead of at
   the foot of the page — Swagger UI uses ".wrapper" several times and the last one is not the
   bottom of the document. Hung off the models section instead, which genuinely is last, and the
   line is only drawn when that section exists. --- */
html:root .swagger-ui section.models::after{
  content:"OpenAPI document: /docs/json — generated from the live routes, never hand-edited.";
  display:block; margin:0; padding:14px 20px; border-top:1px solid var(--dd-line);
  font-family:var(--dd-mono); font-size:11.5px; color:var(--dd-text-3);
}
html:root .swagger-ui > div > .wrapper:last-child{padding-bottom:64px}

/* --- 15. a phone: one column, full-width controls, nothing wider than the screen --- */
@media (max-width:720px){
  .dd-bar__in{height:56px; padding:0 16px}
  .dd-bar__home{font-size:19px}
  .dd-bar__home img{height:28px}
  .dd-bar__tag, .dd-bar__nav a:not(.dd-bar__cta){display:none}
  html:root .swagger-ui .wrapper{padding:0 12px}
  html:root .swagger-ui .info{margin-top:16px; padding:22px 18px 20px; border-radius:14px}
  html:root .swagger-ui .info .title{font-size:28px}
  html:root .swagger-ui .info .description > .renderedMarkdown{column-count:1}
  html:root .swagger-ui .scheme-container{padding:0 12px}
  html:root .swagger-ui .scheme-container .schemes{padding:14px 16px}
  html:root .swagger-ui .opblock-tag{font-size:16px; flex-wrap:wrap}
  html:root .swagger-ui .opblock-tag small{padding:4px 0 0; flex-basis:100%}
  html:root .swagger-ui .opblock .opblock-summary-path{font-size:12.5px; max-width:none; word-break:break-all}
  html:root .swagger-ui .opblock .opblock-summary-description{display:none}
  html:root .swagger-ui .opblock .opblock-description-wrapper{padding:16px 14px 14px}
  html:root .swagger-ui .opblock.opblock-get .opblock-section-header{padding:8px 14px}
  html:root .swagger-ui .opblock .table-container{padding:4px 14px 10px}
  html:root .swagger-ui .btn-group, html:root .swagger-ui .execute-wrapper{padding:14px}
  html:root .swagger-ui .responses-inner{padding:16px 14px}
  html:root .swagger-ui table.parameters, html:root .swagger-ui table.parameters tbody, html:root .swagger-ui table.parameters tr, html:root .swagger-ui table.parameters td{display:block; width:auto}
  html:root .swagger-ui table.parameters thead{display:none}
  html:root .swagger-ui table.parameters tbody tr{padding:12px 0; border-bottom:1px solid var(--dd-line)}
  html:root .swagger-ui table.parameters tbody tr:last-child{border-bottom:none}
  html:root .swagger-ui table.parameters tbody tr td{padding:0}
  html:root .swagger-ui table.parameters tbody tr td:first-of-type{
    display:flex; flex-wrap:wrap; align-items:baseline; gap:4px 10px; padding:0 0 6px;
  }
  html:root .swagger-ui .parameters-col_description input, html:root .swagger-ui .parameters-col_description select{max-width:none}
  html:root .swagger-ui table.responses-table, html:root .swagger-ui table.responses-table tbody, html:root .swagger-ui table.responses-table tr,
  html:root .swagger-ui table.responses-table td{display:block; width:auto}
  html:root .swagger-ui table.responses-table thead, html:root .swagger-ui table.responses-table tr td.response-col_links{display:none}
  html:root .swagger-ui table.responses-table tbody tr td{padding:0}
  html:root .swagger-ui table.responses-table tbody tr.response{padding:14px 0}
  html:root .swagger-ui table.responses-table tbody tr.response + tr.response{border-top:1px solid var(--dd-line)}
  html:root .swagger-ui table.responses-table tbody tr.response + tr.response > td{border-top:none}
  html:root .swagger-ui table.responses-table tbody tr td.response-col_status{padding:0 0 6px; font-size:15px}
  /* the copy and Download buttons get a row of their own instead of covering the first line */
  html:root .swagger-ui .opblock .highlight-code:has(> .copy-to-clipboard) pre.microlight, html:root .swagger-ui .opblock pre.curl.microlight{
    padding-top:48px !important; padding-right:16px !important;
  }
}
