/* These are the same Regular and Medium files as Kombine's identity font package. */
@font-face {
    font-family: "ABC Monument Grotesk";
    src: url("branding/fonts/monument-grotesk/ABCMonumentGrotesk-Regular.woff2") format("woff2");
    font-style: normal;
    font-weight: 100 400;
    font-display: swap;
}
@font-face {
    font-family: "ABC Monument Grotesk";
    src: url("branding/fonts/monument-grotesk/ABCMonumentGrotesk-Medium.woff2") format("woff2");
    font-style: normal;
    font-weight: 500 900;
    font-display: swap;
}
:root { --portal-swagger-font: "ABC Monument Grotesk", system-ui, sans-serif; }
/* Swagger sets sans-serif on many individual controls. Keep code and API paths monospace. */
.swagger-ui,
.swagger-ui :is(h1, h2, h3, h4, h5, h6, p, li, label, input, select, optgroup, button, table, th, td,
    .opblock-tag small, .opblock-summary-method, .opblock-summary-description,
    .opblock-description-wrapper, .opblock-external-docs-wrapper, .opblock-title_normal,
    .response-col_status, .response-col_links, .download-contents, .model-title,
    .model-deprecated-warning, .parameter__name, .topbar a, .info a, .info .title small pre,
    .json-schema-2020-12__title, .json-schema-2020-12-expand-deep-button),
.swagger-ui .loading-container .loading::after {
    font-family: var(--portal-swagger-font) !important;
}

/* Kombine identity without replacing Swagger's API controls or operation colours. */
.swagger-ui .topbar { padding-block: 14px; }
.swagger-ui .topbar .topbar-wrapper { gap: 24px; }
.swagger-ui .topbar .portal-swagger-home { flex: 1 1 auto; min-width: 0; max-width: none; text-decoration: none; }
.swagger-ui .topbar .portal-swagger-brand { display: flex; align-items: center; flex-wrap: wrap; gap: 16px 28px; padding: 0; }
.swagger-ui .topbar .portal-swagger-logo { width: 200px; height: 40px; max-width: 100%; object-fit: contain; }
.swagger-ui .topbar .portal-swagger-context { display: flex; align-items: center; flex-wrap: wrap; gap: 10px; padding: 0; color: #fff; font-size: 14px; font-weight: 400; }
.swagger-ui .topbar .portal-swagger-tenant { padding: 0; overflow-wrap: anywhere; }
.swagger-ui .topbar .portal-swagger-environment { display: inline-block; padding: 4px 10px; border: 1px solid currentColor; border-radius: 20px; font-size: 12px; font-weight: 600; }
.portal-swagger-environment-development { color: #e2e8f0; background: #334155; }
.portal-swagger-environment-beta { color: #ffdf91; background: #533600; }
.portal-swagger-environment-production { color: #baf5cc; background: #16432a; }
.swagger-ui .topbar .download-url-wrapper { flex: 0 1 480px; min-width: 0; }
.portal-swagger-footer { display: flex; justify-content: center; padding: 24px 20px 32px; font: 13px/1.4 var(--portal-swagger-font); }
.portal-swagger-footer .portal-swagger-credit {
    display: inline-flex; align-items: center; gap: 10px; padding: 10px 16px;
    color: #334155; background: #fff; border: 1px solid #e2e8f0; border-radius: 12px;
    box-shadow: 0 1px 3px #0f172a08; text-decoration: none;
    transition: border-color .15s ease, box-shadow .15s ease;
}
.portal-swagger-footer .portal-swagger-credit:hover { border-color: #86be55; box-shadow: 0 2px 8px #0f172a0d; }
.portal-swagger-credit-logo { display: block; flex: 0 0 28px; }
.portal-swagger-credit-text { display: flex; flex-direction: column; gap: 1px; }
.portal-swagger-credit-caption { color: #64748b; font-size: 11px; }
.portal-swagger-credit-name { font-size: 14px; font-weight: 600; letter-spacing: .01em; }
.portal-swagger-home:focus-visible, .portal-swagger-footer a:focus-visible { outline: 3px solid #60a5fa; outline-offset: 5px; }
@media (max-width: 800px) {
    .swagger-ui .topbar .topbar-wrapper { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 16px; }
    .swagger-ui .topbar .portal-swagger-home { grid-column: 1 / -1; }
    .swagger-ui .topbar .download-url-wrapper { width: 100%; }
    .swagger-ui .topbar .select-label { width: 100%; min-width: 0; }
    .swagger-ui .topbar .select-label select { min-width: 0; width: 100%; }
}

/* Limit prose width without narrowing request/response editors or schema tables. */
.swagger-ui .info .description,
.swagger-ui .opblock-description-wrapper .markdown,
.swagger-ui .opblock-description-wrapper .renderedMarkdown {
    max-width: 105ch;
    line-height: 1.6;
}
.swagger-ui .info .description :is(p, ul, ol),
.swagger-ui .opblock-description-wrapper :is(p, ul, ol) {
    line-height: 1.6;
    margin-block: .7em;
}
.swagger-ui .info .description :is(h3, h4),
.swagger-ui .opblock-description-wrapper :is(h3, h4) {
    font-size: 1rem;
    line-height: 1.4;
    margin-block: 1.5em .5em;
}
.swagger-ui .info .description li,
.swagger-ui .opblock-description-wrapper li { margin-block: .4em; }
.swagger-ui .info .description table {
    width: 100%;
    border-collapse: collapse;
    margin-block: 1em;
}
.swagger-ui .info .description table :is(th, td) {
    padding: .7em .9em;
    border-bottom: 1px solid #dfe5eb;
    text-align: left;
    vertical-align: top;
    line-height: 1.5;
}
.swagger-ui .info .description thead th { background: #edf2f6; }
.swagger-ui .info .description tbody tr:nth-child(even) { background: #f7f9fb; }
.swagger-ui .info .description td:first-child { font-weight: 600; min-width: 9em; }
.swagger-ui .info .description code,
.swagger-ui .opblock-description-wrapper code { overflow-wrap: anywhere; }
@media (max-width: 640px) {
    .swagger-ui .info .description table :is(th, td) { padding: .5em; }
    .swagger-ui .info .description td:first-child { min-width: 0; }
}
