/* Brand skin for the Swagger UI page served at /docs.
   The page sets `class="dark-mode"` on <html>, which switches on Swagger's
   own dark theme; this sheet loads that stylesheet, then retunes it to the
   site tokens (src/kyd_app/styles/style.css). */
@import url('https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@400;500;600;700&family=IBM+Plex+Mono:wght@400;500;600&display=swap');
@import url('https://cdn.jsdelivr.net/npm/swagger-ui-dist@5/swagger-ui.css');

:root {
    --font-sans: 'Space Grotesk', sans-serif;
    --font-mono: 'IBM Plex Mono', monospace;
    --dark-bg: #0b0b16;
    --panel-bg: #131326;
    --panel-2: #1a1a33;
    --line: #262645;
    --accent-violet: #7b6ef6;
    --violet-hover: #8f83ff;
    --violet-pale: #b8aaff;
    --go: #02c39a;
    --nogo: #f96167;
    --warn: #f5c451;
    --url: #7fd8ff;
    --text-primary: #f2f2f7;
    --text-body: #d6d9e3;
    --text-muted: #a6abbd;
    --text-secondary: #8a90a4;
}

/* ---- Surfaces and type ---- */
html.dark-mode, html.dark-mode body { background: var(--dark-bg); margin: 0; }
html.dark-mode .swagger-ui { background: var(--dark-bg); font-family: var(--font-sans); color: var(--text-body); }
html.dark-mode .swagger-ui .info p, html.dark-mode .swagger-ui .info li,
html.dark-mode .swagger-ui .markdown p, html.dark-mode .swagger-ui .markdown li,
html.dark-mode .swagger-ui .renderedMarkdown p, html.dark-mode .swagger-ui .renderedMarkdown li,
html.dark-mode .swagger-ui .opblock-description-wrapper p,
html.dark-mode .swagger-ui .response-col_description,
html.dark-mode .swagger-ui .opblock-tag small,
html.dark-mode .swagger-ui .opblock .opblock-summary-description,
html.dark-mode .swagger-ui table thead tr th, html.dark-mode .swagger-ui table thead tr td,
html.dark-mode .swagger-ui .response-col_status, html.dark-mode .swagger-ui .response-col_links,
html.dark-mode .swagger-ui .parameter__name, html.dark-mode .swagger-ui .parameter__type,
html.dark-mode .swagger-ui .parameter__in, html.dark-mode .swagger-ui label,
html.dark-mode .swagger-ui .tab li, html.dark-mode .swagger-ui .dialog-ux .modal-ux-content p,
html.dark-mode .swagger-ui .auth-container .wrapper, html.dark-mode .swagger-ui .scopes h2 {
    font-family: var(--font-sans);
    color: var(--text-body);
}
html.dark-mode .swagger-ui .opblock .opblock-summary-description { color: var(--text-muted); }
html.dark-mode .swagger-ui .info .title, html.dark-mode .swagger-ui .info h1,
html.dark-mode .swagger-ui .info h2, html.dark-mode .swagger-ui .info h3,
html.dark-mode .swagger-ui .opblock-tag, html.dark-mode .swagger-ui section.models h4,
html.dark-mode .swagger-ui .opblock .opblock-summary-path,
html.dark-mode .swagger-ui .opblock .opblock-section-header h4,
html.dark-mode .swagger-ui .responses-inner h4, html.dark-mode .swagger-ui .responses-inner h5,
html.dark-mode .swagger-ui .dialog-ux .modal-ux-header h3,
html.dark-mode .swagger-ui .dialog-ux .modal-ux-content h4 {
    font-family: var(--font-sans);
    color: var(--text-primary);
}
html.dark-mode .swagger-ui .opblock .opblock-summary-path,
html.dark-mode .swagger-ui .opblock .opblock-summary-method,
html.dark-mode .swagger-ui .response-col_status,
html.dark-mode .swagger-ui .parameter__name, html.dark-mode .swagger-ui .parameter__type,
html.dark-mode .swagger-ui .microlight, html.dark-mode .swagger-ui .model,
html.dark-mode .swagger-ui .json-schema-2020-12__title,
html.dark-mode .swagger-ui .json-schema-2020-12__attribute,
html.dark-mode .swagger-ui .json-schema-2020-12-keyword__name,
html.dark-mode .swagger-ui .json-schema-2020-12-keyword__value,
html.dark-mode .swagger-ui .json-schema-2020-12__constraint,
html.dark-mode .swagger-ui .prop-type, html.dark-mode .swagger-ui .prop-format,
html.dark-mode .swagger-ui select, html.dark-mode .swagger-ui input, html.dark-mode .swagger-ui textarea {
    font-family: var(--font-mono);
}
html.dark-mode .swagger-ui .json-schema-2020-12__title:not(.json-schema-2020-12-property .json-schema-2020-12__title),
html.dark-mode .swagger-ui .json-schema-2020-12-expand-deep-button,
html.dark-mode .swagger-ui .json-schema-2020-12-keyword--description,
html.dark-mode .swagger-ui .json-schema-2020-12-keyword--description .json-schema-2020-12-core-keyword__value {
    font-family: var(--font-sans);
}

/* ---- Layout ---- */
html.dark-mode .swagger-ui .wrapper { max-width: 1180px; }
html.dark-mode .swagger-ui .information-container { padding-top: 8px; }
html.dark-mode .swagger-ui .info { margin: 24px 0 32px; }
html.dark-mode .swagger-ui .info .description { max-width: 72ch; }

/* ---- Header ---- */
.kleyr-backlink {
    box-sizing: border-box;
    max-width: 1180px;
    margin: 0 auto;
    padding: 28px 20px 0;
}
.kleyr-backlink a {
    font-family: var(--font-mono);
    font-size: 0.78rem;
    letter-spacing: 0.04em;
    color: var(--text-secondary);
    text-decoration: none;
    transition: color 0.3s ease;
}
.kleyr-backlink a:hover { color: var(--accent-violet); }
html.dark-mode .swagger-ui .info .title { font-weight: 600; letter-spacing: -0.01em; }
html.dark-mode .swagger-ui .info .title::before {
    content: "";
    display: inline-block;
    width: 34px;
    height: 40px;
    margin-right: 14px;
    vertical-align: -8px;
    background: url('/docs/logo.svg') no-repeat center / contain;
}
html.dark-mode .swagger-ui .info .title small { background: var(--line); }
html.dark-mode .swagger-ui .info .title small pre { color: var(--text-primary); }
html.dark-mode .swagger-ui .info .title small.version-stamp { background: var(--go); }
html.dark-mode .swagger-ui .info .title small.version-stamp pre { color: var(--dark-bg); }
html.dark-mode .swagger-ui .info hgroup.main a { display: none; }   /* the /openapi.json link */
html.dark-mode .swagger-ui .info a, html.dark-mode .swagger-ui .markdown a,
html.dark-mode .swagger-ui .renderedMarkdown a, html.dark-mode .swagger-ui .json-schema-2020-12 a { color: var(--url); }
html.dark-mode .swagger-ui .info a { font-family: var(--font-sans); font-size: 15px; }
html.dark-mode .swagger-ui .info a:hover { color: var(--text-primary); }
html.dark-mode .swagger-ui .markdown code, html.dark-mode .swagger-ui .renderedMarkdown code,
html.dark-mode .swagger-ui .info code {
    font-family: var(--font-mono);
    font-size: 0.85em;
    color: var(--violet-pale);
    background: var(--panel-2);
    border-radius: 4px;
    padding: 1px 4px;
    white-space: nowrap;
}

/* ---- Authorize bar and buttons ---- */
html.dark-mode .swagger-ui .scheme-container {
    background: var(--panel-bg);
    box-shadow: none;
    border-top: 1px solid var(--line);
    border-bottom: 1px solid var(--line);
    padding: 14px 0;
}
html.dark-mode .swagger-ui .btn { font-family: var(--font-sans); border-color: var(--line); color: var(--text-body); box-shadow: none; }
html.dark-mode .swagger-ui .btn.authorize, html.dark-mode .swagger-ui .scheme-container .btn.authorize,
html.dark-mode .swagger-ui .dialog-ux .modal-ux .btn.modal-btn { color: var(--violet-pale); border-color: var(--accent-violet); background: transparent; }
html.dark-mode .swagger-ui .btn.authorize svg, html.dark-mode .swagger-ui .scheme-container .btn.authorize svg { fill: var(--violet-pale); color: var(--violet-pale); }
html.dark-mode .swagger-ui .btn.authorize:hover, html.dark-mode .swagger-ui .scheme-container .btn.authorize:hover { background: rgba(123, 110, 246, 0.12); }
html.dark-mode .swagger-ui .btn.execute, html.dark-mode .swagger-ui .opblock .btn.execute { background: var(--accent-violet); border-color: var(--accent-violet); color: #fff; }
html.dark-mode .swagger-ui .btn.execute:hover, html.dark-mode .swagger-ui .opblock .btn.execute:hover { background: var(--violet-hover); }
html.dark-mode .swagger-ui .opblock .btn.btn-clear, html.dark-mode .swagger-ui .dialog-ux .modal-ux .btn.modal-btn.btn-done { color: var(--text-muted); border-color: var(--line); }
html.dark-mode .swagger-ui .btn.cancel { color: var(--nogo); border-color: var(--nogo); }
html.dark-mode .swagger-ui .try-out__btn { color: var(--violet-pale); border-color: var(--accent-violet); }
html.dark-mode .swagger-ui .authorization__btn svg { color: var(--text-muted); }
html.dark-mode .swagger-ui .authorization__btn .locked, html.dark-mode .swagger-ui .authorization__btn.locked svg { color: var(--violet-pale); }

/* ---- Tag groups and operation rows ---- */
html.dark-mode .swagger-ui .opblock-tag { border-bottom: 1px solid var(--line); }
html.dark-mode .swagger-ui .opblock-tag:hover { background: rgba(123, 110, 246, 0.06); }
html.dark-mode .swagger-ui .opblock { background: var(--panel-bg); border: 1px solid var(--line); border-radius: 8px; box-shadow: none; }
html.dark-mode .swagger-ui .opblock .opblock-summary { border-color: var(--line); padding: 6px 12px; }
html.dark-mode .swagger-ui .opblock .opblock-summary .view-line-link { display: none; }
html.dark-mode .swagger-ui .opblock .opblock-summary .authorization__btn { padding-left: 12px; }
html.dark-mode .swagger-ui .opblock .opblock-summary-method { font-weight: 600; border-radius: 6px; text-shadow: none; min-width: 72px; }
html.dark-mode .swagger-ui .opblock.opblock-post { background: var(--panel-bg); border-color: var(--line); }
html.dark-mode .swagger-ui .opblock.opblock-post .opblock-summary-method { background: var(--go); color: var(--dark-bg); }
html.dark-mode .swagger-ui .opblock.opblock-get { background: var(--panel-bg); border-color: var(--line); }
html.dark-mode .swagger-ui .opblock.opblock-get .opblock-summary-method { background: var(--accent-violet); color: #fff; }
html.dark-mode .swagger-ui .opblock.is-open .opblock-summary { border-bottom: 1px solid var(--line); }
html.dark-mode .swagger-ui .opblock .opblock-section-header,
html.dark-mode .swagger-ui .opblock.opblock-post .opblock-section-header,
html.dark-mode .swagger-ui .opblock.opblock-get .opblock-section-header {
    background: var(--panel-2);
    box-shadow: none;
    border-top: 1px solid var(--line);
    border-bottom: 1px solid var(--line);
}
html.dark-mode .swagger-ui .opblock.opblock-post thead tr td, html.dark-mode .swagger-ui .opblock.opblock-post thead tr th,
html.dark-mode .swagger-ui .opblock.opblock-get thead tr td, html.dark-mode .swagger-ui .opblock.opblock-get thead tr th { border-color: var(--line); }
html.dark-mode .swagger-ui .opblock.opblock-post .opblock-section-header .tab-header .tab-item .opblock-title span::after { background: var(--go); }
html.dark-mode .swagger-ui .opblock.opblock-get .opblock-section-header .tab-header .tab-item .opblock-title span::after { background: var(--accent-violet); }
html.dark-mode .swagger-ui .opblock .try-out__btn { background: transparent; }
html.dark-mode .swagger-ui .opblock.opblock-post .opblock-body > .opblock-description-wrapper,
html.dark-mode .swagger-ui .opblock.opblock-post .opblock-body > .opblock-external-docs-wrapper,
html.dark-mode .swagger-ui .opblock.opblock-post .opblock-body > .opblock-title_normal,
html.dark-mode .swagger-ui .opblock.opblock-get .opblock-body > .opblock-description-wrapper,
html.dark-mode .swagger-ui .opblock.opblock-get .opblock-body > .opblock-external-docs-wrapper,
html.dark-mode .swagger-ui .opblock.opblock-get .opblock-body > .opblock-title_normal { border-top: 1px solid var(--line); }
html.dark-mode .swagger-ui .opblock-body pre.microlight, html.dark-mode .swagger-ui .highlight-code > .microlight {
    background: var(--dark-bg) !important;
    border: 1px solid var(--line);
    border-radius: 6px;
}
html.dark-mode .swagger-ui .copy-to-clipboard, html.dark-mode .swagger-ui .download-contents { background: var(--line); }
html.dark-mode .swagger-ui select, html.dark-mode .swagger-ui input[type=text], html.dark-mode .swagger-ui input[type=password],
html.dark-mode .swagger-ui input[type=search], html.dark-mode .swagger-ui input[type=email], html.dark-mode .swagger-ui textarea {
    background-color: var(--dark-bg);
    color: var(--text-primary);
    border: 1px solid var(--line);
    box-shadow: none;
}
html.dark-mode .swagger-ui .parameter__name.required::after, html.dark-mode .swagger-ui .parameter__name.required span { color: var(--nogo); }
html.dark-mode .swagger-ui table tbody tr td { border-color: var(--line); }
html.dark-mode .swagger-ui .tab li button.tablinks { color: var(--text-muted); }
html.dark-mode .swagger-ui .tab li.active button.tablinks, html.dark-mode .swagger-ui .tab li button.tablinks:hover { color: var(--text-primary); }
html.dark-mode .swagger-ui .response-col_links, html.dark-mode .swagger-ui .response-col_links i { color: var(--text-secondary); }

/* ---- Schemas ---- */
html.dark-mode .swagger-ui section.models { border: 1px solid var(--line); border-radius: 8px; background: var(--panel-bg); }
html.dark-mode .swagger-ui section.models.is-open h4 { border-bottom: 1px solid var(--line); }
html.dark-mode .swagger-ui section.models .model-container { background: var(--panel-2); border-radius: 6px; }
html.dark-mode .swagger-ui section.models .model-container:hover { background: var(--panel-2); }
html.dark-mode .swagger-ui .model-box { background: var(--panel-2); }
html.dark-mode .swagger-ui .json-schema-2020-12, html.dark-mode .swagger-ui .json-schema-2020-12 button { background: var(--panel-2); }
html.dark-mode .swagger-ui .model-box .json-schema-2020-12,
html.dark-mode .swagger-ui .model-box .json-schema-2020-12-accordion,
html.dark-mode .swagger-ui .model-box .json-schema-2020-12-expand-deep-button { background: transparent; }
html.dark-mode .swagger-ui .json-schema-2020-12__title { color: var(--text-primary); }
html.dark-mode .swagger-ui .json-schema-2020-12-expand-deep-button { color: var(--text-secondary); }
html.dark-mode .swagger-ui .json-schema-2020-12-body, html.dark-mode .swagger-ui .json-schema-2020-12-keyword__children,
html.dark-mode .swagger-ui .json-schema-2020-12-json-viewer__children { border-color: var(--line); }
html.dark-mode .swagger-ui .json-schema-2020-12__attribute--primary, html.dark-mode .swagger-ui .prop-type,
html.dark-mode .swagger-ui .model .prop-type { color: var(--url); }
html.dark-mode .swagger-ui .json-schema-2020-12__attribute--muted, html.dark-mode .swagger-ui .json-schema-2020-12-keyword__name--secondary,
html.dark-mode .swagger-ui .json-schema-2020-12-keyword__value--secondary,
html.dark-mode .swagger-ui .json-schema-2020-12-keyword--description { color: var(--text-muted); }
html.dark-mode .swagger-ui .json-schema-2020-12-keyword__name--primary, html.dark-mode .swagger-ui .json-schema-2020-12-keyword__value--primary { color: var(--text-body); }
html.dark-mode .swagger-ui .json-schema-2020-12__constraint { background: var(--accent-violet); color: #fff; }
html.dark-mode .swagger-ui .json-schema-2020-12__constraint--string { background: var(--warn); color: var(--dark-bg); }
html.dark-mode .swagger-ui .json-schema-2020-12-property--required > .json-schema-2020-12:first-of-type > .json-schema-2020-12-head .json-schema-2020-12__title::after { color: var(--nogo); }
html.dark-mode .swagger-ui .json-schema-2020-12__attribute--warning, html.dark-mode .swagger-ui .json-schema-2020-12-keyword__value--warning { color: var(--nogo); border-color: var(--nogo); }

/* ---- Authorize dialog, errors, misc ---- */
html.dark-mode .swagger-ui .dialog-ux .backdrop-ux { background: rgba(11, 11, 22, 0.8); }
html.dark-mode .swagger-ui .dialog-ux .modal-ux { background: var(--panel-bg); border: 1px solid var(--line); box-shadow: none; }
html.dark-mode .swagger-ui .dialog-ux .modal-ux-header { border-bottom: 1px solid var(--line); }
html.dark-mode .swagger-ui .auth-container { border-bottom: 1px solid var(--line); }
html.dark-mode .swagger-ui .auth-container code { color: var(--violet-pale); }
html.dark-mode .swagger-ui .errors-wrapper { background: rgba(249, 97, 103, 0.08); border-color: var(--nogo); }
html.dark-mode .swagger-ui .errors-wrapper hgroup h4, html.dark-mode .swagger-ui .errors-wrapper .errors h4 { color: var(--nogo); }
html.dark-mode .swagger-ui .loading-container .loading::before { border-color: rgba(123, 110, 246, 0.2); border-top-color: var(--accent-violet); }
::selection { background: rgba(123, 110, 246, 0.35); }

/* ---- Type scale ----
   Everything sits between 12px and 36px: title 36, section headings 24,
   body and descriptions 14, identifiers and inputs 13, labels 12. */
html.dark-mode .swagger-ui .info .title { font-size: 36px; }
html.dark-mode .swagger-ui .info .title small { font-size: 11px; vertical-align: 6px; }
html.dark-mode .swagger-ui .info .title small pre { font-family: var(--font-mono); font-size: 11px; }
html.dark-mode .swagger-ui .info .description h2 { font-size: 24px; margin: 28px 0 10px; }
html.dark-mode .swagger-ui .info p, html.dark-mode .swagger-ui .info li { font-size: 14px; line-height: 1.55; }
html.dark-mode .swagger-ui .opblock-tag { font-size: 24px; }
html.dark-mode .swagger-ui .opblock-tag small { font-size: 13px; }
html.dark-mode .swagger-ui .opblock .opblock-summary-method { font-size: 13px; }
html.dark-mode .swagger-ui .opblock .opblock-summary-path { font-size: 14px; }
html.dark-mode .swagger-ui .opblock .opblock-summary-description { font-size: 13px; }
html.dark-mode .swagger-ui .opblock-description-wrapper p, html.dark-mode .swagger-ui .opblock-external-docs-wrapper p { font-size: 14px; line-height: 1.55; }
html.dark-mode .swagger-ui .opblock .opblock-section-header h4 { font-size: 14px; }
html.dark-mode .swagger-ui .btn, html.dark-mode .swagger-ui .try-out__btn { font-size: 13px; }
html.dark-mode .swagger-ui table thead tr th, html.dark-mode .swagger-ui table thead tr td { font-size: 12px; }
html.dark-mode .swagger-ui .parameter__name { font-size: 13px; }
html.dark-mode .swagger-ui .parameter__type, html.dark-mode .swagger-ui .parameter__in,
html.dark-mode .swagger-ui .parameter__name.required::after { font-size: 12px; }
html.dark-mode .swagger-ui .parameters-col_description p, html.dark-mode .swagger-ui .parameters-col_description .markdown p,
html.dark-mode .swagger-ui .response-col_description, html.dark-mode .swagger-ui .response-col_description .markdown p { font-size: 14px; }
html.dark-mode .swagger-ui .parameters-col_description input, html.dark-mode .swagger-ui .parameters-col_description select,
html.dark-mode .swagger-ui input[type=text], html.dark-mode .swagger-ui input[type=password], html.dark-mode .swagger-ui select,
html.dark-mode .swagger-ui textarea, html.dark-mode .swagger-ui .content-type { font-size: 13px; }
html.dark-mode .swagger-ui .parameters-col_description input { height: 34px; }
html.dark-mode .swagger-ui .response-col_status { font-size: 13px; }
html.dark-mode .swagger-ui .response-control-media-type__title, html.dark-mode .swagger-ui .response-control-media-type__accept-message,
html.dark-mode .swagger-ui .tab li, html.dark-mode .swagger-ui .opblock-body .response-col_links { font-size: 12px; }
html.dark-mode .swagger-ui section.models h4 { font-size: 14px; }
html.dark-mode .swagger-ui .json-schema-2020-12__title,
html.dark-mode .swagger-ui .models .json-schema-2020-12:not(.json-schema-2020-12--embedded) > .json-schema-2020-12-head .json-schema-2020-12__title:first-of-type,
html.dark-mode .swagger-ui .model-box .json-schema-2020-12:not(.json-schema-2020-12--embedded) > .json-schema-2020-12-head .json-schema-2020-12__title:first-of-type { font-size: 14px; }
html.dark-mode .swagger-ui .json-schema-2020-12-property .json-schema-2020-12__title { font-size: 13px; }
html.dark-mode .swagger-ui .json-schema-2020-12__attribute, html.dark-mode .swagger-ui .json-schema-2020-12-expand-deep-button,
html.dark-mode .swagger-ui .json-schema-2020-12-keyword__name, html.dark-mode .swagger-ui .json-schema-2020-12-keyword__value,
html.dark-mode .swagger-ui .json-schema-2020-12-keyword--description { font-size: 12px; }
html.dark-mode .swagger-ui .dialog-ux .modal-ux-header h3 { font-size: 18px; }
html.dark-mode .swagger-ui .dialog-ux .modal-ux-content h4 { font-size: 14px; }
html.dark-mode .swagger-ui .dialog-ux .modal-ux-content p, html.dark-mode .swagger-ui .auth-container .wrapper { font-size: 13px; }
