/* The API docs (docs.html): Swagger UI's stylesheet, then this, in Censible's type, colours and flat bordered shapes,
   for both themes. Swagger's own classes, so this overrides rather than restyles from scratch. */

:root,
[data-theme="dark"] {
  --method-get: var(--cerulean-500);
  --method-post: var(--jade-500);
  --method-put: var(--gold-500);
  --method-patch: var(--saffron-500);
  --method-delete: var(--coral-500);
  --method-tint: 9%;
  --code-bg: var(--ink-800);
}
[data-theme="light"] {
  --method-get: var(--cerulean-600);
  --method-post: var(--jade-600);
  --method-put: var(--gold-600);
  --method-patch: var(--saffron-600);
  --method-delete: var(--coral-600);
  --method-tint: 7%;
  --code-bg: #F7F7F6;
}

* { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; }
body {
  margin: 0;
  background: var(--bg);
  color: var(--text);
  font-family: var(--font-sans);
  font-size: 14px;
  line-height: 1.45;
  -webkit-font-smoothing: antialiased;
}
:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; border-radius: 4px; }

/* ---- The bar across the top ----------------------------------------------------------------------------------- */
.docs-bar {
  position: sticky; top: 0; z-index: 10;
  display: flex; align-items: center; gap: 16px;
  padding: 12px 24px;
  background: var(--card);
  border-bottom: 1px solid var(--line);
}
.docs-brand { display: flex; align-items: center; gap: 10px; color: var(--text); text-decoration: none; }
.docs-brand__mark {
  width: 26px; height: 26px; flex: none; background: currentColor;
  -webkit-mask: url(../assets/censible-mark.svg) center / contain no-repeat;
  mask: url(../assets/censible-mark.svg) center / contain no-repeat;
}
.docs-brand__name { font-size: 17px; font-weight: 600; letter-spacing: -0.02em; }
.docs-brand__tag {
  font-size: 11.5px; font-weight: 500; letter-spacing: 0.04em;
  padding: 2px 8px; border: 1px solid var(--line-strong); border-radius: 999px; color: var(--muted);
}
.docs-bar__who { flex: 1; margin: 0; font-size: 12.5px; color: var(--muted); }
.docs-bar__who a { color: var(--accent-text); }
.docs-bar__links { display: flex; align-items: center; gap: 16px; font-size: 13px; }
.docs-bar__links a { color: var(--text-2); text-decoration: none; }
.docs-bar__links a:hover, .docs-bar__who a:hover { color: var(--link-hover); }
.docs-theme {
  height: 32px; padding: 0 14px; font: inherit; color: var(--text); cursor: pointer;
  background: transparent; border: 1px solid var(--line-strong); border-radius: 999px;
}
.docs-theme:hover { border-color: var(--axis); }

@media (max-width: 760px) {
  .docs-bar { flex-wrap: wrap; padding: 12px 16px; gap: 8px 16px; }
  .docs-bar__who { order: 3; flex-basis: 100%; }
  .docs-bar__links { margin-left: auto; }
  .docs-bar__links a[href="/openapi.json"] { display: none; }
}

/* ---- Swagger UI: type and colour everywhere -------------------------------------------------------------------- */
.swagger-ui, .swagger-ui :is(h1, h2, h3, h4, h5, h6, p, li, td, th, label, span, div, a, button, input, select, textarea, small) {
  font-family: var(--font-sans);
}
.swagger-ui :is(code, pre, .microlight, .parameter__type, .parameter__in, .prop-type, .prop-format,
  .opblock-summary-path, .opblock-summary-path__deprecated, .response-col_status, .model, .model-title, .version) {
  font-family: var(--font-mono) !important; font-weight: 400 !important;
}
.swagger-ui, .swagger-ui :is(h1, h2, h3, h4, h5, h6, p, li, td, th, label, table, .model, .model-title, .opblock-tag,
  .parameter__name, .response-col_status, .response-col_links, .tab li, .tab li button.tablinks, .opblock-summary-path,
  .opblock-summary-description, .opblock-title_normal, .info .title, .info li, .info p, .info table, .markdown,
  .renderedMarkdown, .opblock-description-wrapper, .opblock-external-docs-wrapper, .responses-inner h4,
  .responses-inner h5, .model-box-control, .models-control, .json-schema-2020-12__title,
  .json-schema-2020-12-keyword__name, .json-schema-2020-12-keyword__value, .json-schema-2020-12-expand-deep-button,
  .json-schema-2020-12__attribute, .servers-title, .servers > label, .scheme-container .schemes > label) {
  color: var(--text);
}
.swagger-ui :is(.parameter__type, .parameter__in, .prop-format, .parameter__deprecated, .opblock-summary-description,
  .response-control-media-type__accept-message, .response-control-media-type__title, .json-schema-2020-12-keyword--type,
  .json-schema-2020-12__attribute--primary, .renderedMarkdown p, .parameters-col_description, .col_header) {
  color: var(--text-2);
}
.swagger-ui .parameter__name.required::after, .swagger-ui .parameter__name.required span { color: var(--coral-500); }
.swagger-ui a, .swagger-ui .info a, .swagger-ui .info .base-url, .swagger-ui .info hgroup.main a,
.swagger-ui .renderedMarkdown a, .swagger-ui .markdown a { color: var(--accent-text); }
.swagger-ui a:hover, .swagger-ui .info a:hover { color: var(--link-hover); }
.swagger-ui svg:not(:root) { fill: var(--text-2); }
.swagger-ui .wrapper { max-width: 1120px; padding: 0 24px; }
@media (max-width: 760px) { .swagger-ui .wrapper { padding: 0 16px; } }

/* The intro */
.swagger-ui .info { margin: 40px 0 24px; }
.swagger-ui .info .title { font-size: 26px; font-weight: 600; letter-spacing: -0.02em; line-height: 1.15; }
.swagger-ui .info .title small {
  background: transparent; border: 1px solid var(--line-strong); border-radius: 999px;
  padding: 2px 8px; top: -6px;
}
.swagger-ui .info .title small pre { color: var(--muted); font-size: 11.5px; }
.swagger-ui .info .title small.version-stamp { background: transparent; border-color: var(--accent); }
.swagger-ui .info .title small.version-stamp pre { color: var(--accent-text); }
.swagger-ui .info .description, .swagger-ui .info p, .swagger-ui .info li { font-size: 14px; line-height: 1.55; }
.swagger-ui .info .description { max-width: 760px; }
.swagger-ui :is(code, pre, .microlight, .parameter__type, .parameter__in, .prop-type, .prop-format, .response-col_status) {
  font-weight: 400;
}
.swagger-ui :is(.info, .markdown, .renderedMarkdown) code {
  font-size: .9em; padding: 1px 6px; border-radius: 6px; color: var(--text);
  background: var(--code-bg);
}

/* Authorize and the filter */
.swagger-ui .scheme-container {
  background: transparent; box-shadow: none; padding: 0 0 16px; margin: 0;
  border-bottom: 1px solid var(--line);
}
.swagger-ui .filter-container { margin: 16px 0 0; }
.swagger-ui .filter .operation-filter-input { width: 100%; max-width: none; margin: 0; padding: 10px 12px; border: 1px solid var(--line-strong); }

/* ---- Controls ---------------------------------------------------------------------------------------------- */
.swagger-ui .btn {
  font-family: var(--font-sans); font-size: 13px; font-weight: 500; color: var(--text);
  background: transparent; border: 1px solid var(--line-strong); border-radius: 999px;
  padding: 6px 16px; box-shadow: none;
}
.swagger-ui .btn:hover { box-shadow: none; border-color: var(--axis); }
.swagger-ui .btn.authorize { color: var(--accent-text); border-color: var(--accent); }
.swagger-ui .btn.authorize svg { fill: var(--accent-text); }
.swagger-ui .btn.execute, .swagger-ui .btn.authorize.modal-btn {
  background: var(--accent); color: var(--on-accent); border-color: transparent;
}
.swagger-ui .auth-btn-wrapper { gap: 8px; }
.swagger-ui .auth-btn-wrapper .btn-done { background: transparent; color: var(--text); border-color: var(--line-strong); }
.swagger-ui .btn.execute:hover { filter: brightness(1.06); }
.swagger-ui .btn.cancel, .swagger-ui .btn.try-out__btn.cancel { color: var(--coral-500); border-color: var(--coral-500); }
.swagger-ui .btn-group { padding: 16px 20px; gap: 8px; }
.swagger-ui .btn-group .btn:first-child, .swagger-ui .btn-group .btn:last-child { border-radius: 999px; }
.swagger-ui .authorization__btn svg, .swagger-ui .unlocked svg, .swagger-ui .locked svg { fill: var(--muted); }
.swagger-ui .copy-to-clipboard { background: var(--line); border-radius: 6px; }
.swagger-ui .copy-to-clipboard button { filter: none; }
[data-theme="dark"] .swagger-ui .copy-to-clipboard button { filter: invert(1); }

.swagger-ui :is(input[type=text], input[type=password], input[type=search], input[type=email], input[type=file], textarea, select) {
  font-family: var(--font-sans); font-size: 13px; color: var(--text);
  background: var(--card); border: 1px solid var(--line-strong); border-radius: 8px; box-shadow: none;
}
.swagger-ui :is(input, textarea, select):focus { outline: none; border-color: var(--accent); }
.swagger-ui input::placeholder, .swagger-ui textarea::placeholder { color: var(--muted); }
.swagger-ui select {
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='%23A59D92'><path d='M13.418 7.859a.695.695 0 01.978 0 .68.68 0 010 .969l-3.908 3.83a.697.697 0 01-.979 0l-3.908-3.83a.68.68 0 010-.969.695.695 0 01.978 0L10 11l3.418-3.141z'/></svg>");
}
.swagger-ui :is(input, textarea).invalid, .swagger-ui select.invalid { border-color: var(--coral-500); background: var(--card); }
.swagger-ui textarea { font-family: var(--font-mono); }
.swagger-ui .parameters-col_description input { max-width: 420px; }

/* ---- Endpoint groups ----------------------------------------------------------------------------------------- */
.swagger-ui .opblock-tag-section { margin-top: 8px; }
.swagger-ui .opblock-tag {
  font-size: 17px; font-weight: 600; letter-spacing: -0.01em;
  border-bottom: 1px solid var(--line); padding: 16px 4px 12px;
}
.swagger-ui .opblock-tag:hover { background: transparent; }
.swagger-ui .opblock-tag small { font-size: 13px; font-weight: 400; color: var(--muted); padding: 0 12px; }

/* ---- An endpoint: a 16px card, bordered, coloured by its method ---------------------------------------------- */
/* :is() of the method classes, to outweigh Swagger's own .opblock.opblock-get rules */
.swagger-ui .opblock:is(.opblock, .opblock-get, .opblock-post, .opblock-put, .opblock-patch, .opblock-delete,
  .opblock-head, .opblock-options, .opblock-deprecated) {
  margin: 0 0 8px; border-radius: var(--radius-lg); box-shadow: none;
  background: var(--card); border: 1px solid var(--line);
}
.swagger-ui .opblock:is(.opblock, .opblock-get, .opblock-post, .opblock-put, .opblock-patch, .opblock-delete,
  .opblock-head, .opblock-options, .opblock-deprecated) .opblock-summary-method { background: var(--m); }
.swagger-ui .opblock:is(.opblock, .opblock-get, .opblock-post, .opblock-put, .opblock-patch, .opblock-delete,
  .opblock-head, .opblock-options, .opblock-deprecated) .opblock-summary { border-color: var(--line); }
.swagger-ui .opblock:is(.opblock-get, .opblock-post, .opblock-put, .opblock-patch, .opblock-delete) .tab-header .tab-item.active h4 span::after {
  background: var(--m);
}
.swagger-ui .opblock { --m: var(--method-get); }
.swagger-ui .opblock.opblock-get { --m: var(--method-get); }
.swagger-ui .opblock.opblock-post { --m: var(--method-post); }
.swagger-ui .opblock.opblock-put { --m: var(--method-put); }
.swagger-ui .opblock.opblock-patch { --m: var(--method-patch); }
.swagger-ui .opblock.opblock-delete { --m: var(--method-delete); }
.swagger-ui .opblock.opblock-deprecated { --m: var(--stone-600); opacity: 0.7; }
.swagger-ui .opblock.opblock.is-open { border-color: color-mix(in srgb, var(--m) 45%, var(--line)); }
.swagger-ui .opblock .opblock-summary { border: 0; padding: 8px 12px; }
.swagger-ui .opblock .opblock-summary:hover { background: color-mix(in srgb, var(--m) var(--method-tint), transparent); }
.swagger-ui .opblock.is-open .opblock-summary { border-bottom: 1px solid var(--line); }
.swagger-ui .opblock .opblock-summary-method {
  min-width: 68px; padding: 5px 0; border-radius: 999px; text-shadow: none;
  font-size: 12px; font-weight: 500; letter-spacing: 0.04em;
  background: var(--m); color: var(--on-accent);
}
.swagger-ui .opblock .opblock-summary-path { font-size: 13.5px; font-weight: 400; }
.swagger-ui .opblock .opblock-summary-path a { color: var(--text); }
.swagger-ui .opblock .opblock-summary-description { font-size: 13px; }
.swagger-ui .opblock .opblock-summary-control:focus { outline: none; }
.swagger-ui .opblock .opblock-section-header {
  background: transparent; box-shadow: none; border-bottom: 1px solid var(--line); padding: 10px 20px;
}
.swagger-ui .opblock .opblock-section-header h4 { font-size: 13px; font-weight: 600; }
.swagger-ui .opblock-description-wrapper, .swagger-ui .opblock-external-docs-wrapper, .swagger-ui .opblock-title_normal {
  padding: 16px 20px; font-size: 13.5px;
}
.swagger-ui .opblock-description-wrapper p { font-size: 13.5px; line-height: 1.55; }
.swagger-ui .opblock-body .opblock-loading-animation { border-color: var(--line) var(--accent) var(--accent) var(--accent); }

/* Tables: parameters, responses */
.swagger-ui table thead tr th, .swagger-ui table thead tr td, .swagger-ui .parameters-col_name {
  border-bottom: 1px solid var(--line); font-size: 12px; font-weight: 500;
}
.swagger-ui table thead tr th, .swagger-ui table thead tr td { color: var(--muted); }
.swagger-ui .parameter__name { font-size: 13.5px; font-weight: 500; }
.swagger-ui .parameter__type, .swagger-ui .parameter__in { font-size: 12px; }
.swagger-ui .parameter__in { font-style: normal; color: var(--muted); }
.swagger-ui .response-col_status { font-size: 13px; }
.swagger-ui .responses-inner { padding: 16px 20px; }
.swagger-ui .responses-table .response { border: 0; }
.swagger-ui .tab li { font-size: 12.5px; }
.swagger-ui .tab li:first-of-type::after { background: var(--line-strong); }
.swagger-ui .tab li.active button { color: var(--text); }
.swagger-ui .tab li button.tablinks { color: var(--muted); }

/* Code: examples, curl, responses */
.swagger-ui :is(.highlight-code, .microlight, .opblock-body pre.microlight, .body-param__example, pre.example, .curl-command .curl) {
  background: var(--code-bg) !important; color: var(--text) !important;
  border: 1px solid var(--line); border-radius: var(--radius-md);
  font-size: 12.5px; font-weight: 400 !important; line-height: 1.5;
}
.swagger-ui .microlight code, .swagger-ui .highlight-code code { color: var(--text) !important; }
.swagger-ui .request-url pre, .swagger-ui .request-url .microlight { word-break: break-all; }
.swagger-ui .response-col_description__inner p, .swagger-ui .response-col_description__inner div.markdown { background: transparent; }

/* ---- Schemas, at the foot ---------------------------------------------------------------------------------- */
.swagger-ui section.models {
  border: 1px solid var(--line); border-radius: var(--radius-lg); background: var(--card); margin: 32px 0 48px;
}
.swagger-ui section.models.is-open { padding: 0 0 12px; }
.swagger-ui section.models h4 { font-size: 17px; font-weight: 600; padding: 4px 8px; }
.swagger-ui section.models h4:hover { background: transparent; }
.swagger-ui section.models.is-open h4 { border-bottom: 1px solid var(--line); }
.swagger-ui section.models .model-container { background: transparent; border-radius: var(--radius-md); margin: 4px 12px; }
.swagger-ui section.models .model-container:hover { background: color-mix(in srgb, var(--accent) 6%, transparent); }
.swagger-ui .model-box { background: transparent; }
.swagger-ui .json-schema-2020-12, .swagger-ui .json-schema-2020-12-accordion,
.swagger-ui .json-schema-2020-12-expand-deep-button { background: transparent; }
.swagger-ui .json-schema-2020-12-head .json-schema-2020-12__title { font-size: 13.5px; }
.swagger-ui .json-schema-2020-12-keyword__name--secondary, .swagger-ui .json-schema-2020-12__attribute--muted { color: var(--muted); }
.swagger-ui .json-schema-2020-12__constraint { background: var(--line); color: var(--text-2); border-radius: 6px; }
.swagger-ui .prop-type { color: var(--accent-text); }

/* ---- The Authorize dialog ---------------------------------------------------------------------------------- */
.swagger-ui .dialog-ux .backdrop-ux { background: color-mix(in srgb, var(--ink-900) 70%, transparent); }
.swagger-ui .dialog-ux .modal-ux {
  background: var(--card); border: 1px solid var(--line); border-radius: var(--radius-lg); box-shadow: none;
}
.swagger-ui .dialog-ux .modal-ux-header { border-bottom: 1px solid var(--line); }
.swagger-ui .dialog-ux .modal-ux-header h3 { font-size: 17px; font-weight: 600; }
.swagger-ui .dialog-ux .modal-ux-content h4 { font-size: 15px; }
.swagger-ui .dialog-ux .modal-ux-content p { font-size: 13px; color: var(--text-2); }
.swagger-ui .auth-container { border-bottom: 1px solid var(--line); }
.swagger-ui .auth-container input[type=text], .swagger-ui .auth-container input[type=password] { min-width: 100%; }
.swagger-ui .dialog-ux .modal-ux-header .close-modal svg { fill: var(--text-2); }

/* Errors and loading */
.swagger-ui .errors-wrapper { background: color-mix(in srgb, var(--coral-500) 10%, transparent); border-color: var(--coral-500); border-radius: var(--radius-md); }
.swagger-ui .errors-wrapper :is(h4, .errors small, .error-wrapper) { color: var(--text); }
.swagger-ui .loading-container .loading::after { color: var(--muted); }
.swagger-ui .loading-container .loading::before { border-color: var(--line) var(--accent) var(--accent) var(--accent); }
