/* ============================================================
   tw-utils Swagger-UI Theme
   Gleicht die django-ninja Swagger-Doku (/api/v1/docs) an das
   tw-utils Design an. Nutzt die --ds-*-Tokens aus design-system.css
   (dort geladen VOR dieser Datei). Rein optisch — keine Funktions-
   änderung an Swagger UI.
   ============================================================ */

/* --- Seiten-Grundfläche wie die App --- */
body {
    margin: 0;
    background: #f0f1f3;
    font-family: 'Inter', sans-serif;
}

/* --- Marken-Kopfleiste (an die Site-Topbar angelehnt) --- */
.twu-docs-topbar {
    display: flex;
    align-items: center;
    gap: 12px;
    height: 70px;
    padding: 0 2em;
    background: #2c2f36;
    border-bottom: 1px solid #44494f;
}
.twu-docs-logo {
    width: 40px;
    height: 40px;
    border-radius: 50%;
    border: 2px solid #ffffff;
    object-fit: cover;
}
.twu-docs-brand {
    font-family: var(--ds-font-heading);
    font-weight: 800;
    font-size: 1.25rem;
    color: #ffffff;
    letter-spacing: 0.01em;
}
.twu-docs-brand-accent {
    color: #4db8a4; /* tw-utils Marken-Türkis */
}
.twu-docs-home {
    margin-left: auto;
    font-size: 0.85rem;
    font-weight: 600;
    color: #c7ccd3;
    text-decoration: none;
    padding: 6px 14px;
    border: 1px solid #50565e;
    border-radius: var(--ds-radius);
    transition: all 0.2s;
}
.twu-docs-home:hover {
    color: #ffffff;
    border-color: #6b7280;
    background: #3a3f49;
}

/* Falls je der Standalone-Preset geladen würde: dessen grüne Topbar aus. */
.swagger-ui .topbar {
    display: none;
}

/* --- Typografie: Inter für Text, Outfit für Überschriften --- */
.swagger-ui,
.swagger-ui .info li,
.swagger-ui .info p,
.swagger-ui .info table,
.swagger-ui .parameter__name,
.swagger-ui .parameter__type,
.swagger-ui table thead tr td,
.swagger-ui table thead tr th,
.swagger-ui .response-col_status,
.swagger-ui .response-col_description,
.swagger-ui .opblock-description-wrapper p,
.swagger-ui .opblock .opblock-summary-description,
.swagger-ui .btn,
.swagger-ui select,
.swagger-ui input,
.swagger-ui textarea {
    font-family: 'Inter', sans-serif;
}
.swagger-ui .info .title,
.swagger-ui h1,
.swagger-ui h2,
.swagger-ui h3,
.swagger-ui h4,
.swagger-ui h5,
.swagger-ui .opblock-tag,
.swagger-ui .opblock .opblock-summary-method {
    font-family: var(--ds-font-heading);
}

/* --- Farben: Text & Links auf tw-utils --- */
.swagger-ui .info .title,
.swagger-ui .opblock-tag {
    color: var(--ds-text-dark);
}
.swagger-ui .info p,
.swagger-ui .info li,
.swagger-ui .markdown p {
    color: var(--ds-text-muted);
}
.swagger-ui a,
.swagger-ui .info a {
    color: var(--ds-primary);
}
.swagger-ui a:hover,
.swagger-ui .info a:hover {
    color: var(--ds-primary-hover);
}

/* --- Buttons --- */
.swagger-ui .btn {
    border-radius: var(--ds-radius);
    font-weight: 600;
    box-shadow: none;
    transition: all 0.2s;
}
/* "Execute" — primäre Aktion in Markenblau */
.swagger-ui .btn.execute {
    background-color: var(--ds-primary);
    border-color: var(--ds-primary);
    color: #ffffff;
}
.swagger-ui .btn.execute:hover {
    background-color: var(--ds-primary-hover);
    border-color: var(--ds-primary-hover);
}
/* "Authorize" — Umriss in Markenblau, Schloss-Icon mitfärben */
.swagger-ui .btn.authorize {
    color: var(--ds-primary);
    border-color: var(--ds-primary);
}
.swagger-ui .btn.authorize svg {
    fill: var(--ds-primary);
}
.swagger-ui .btn.authorize:hover {
    background: rgba(59, 130, 246, 0.06);
}

/* --- Formularfelder: Radius + Fokus in Markenblau --- */
.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 {
    border-radius: var(--ds-radius);
}
.swagger-ui input[type=text]:focus,
.swagger-ui input[type=password]:focus,
.swagger-ui input[type=search]:focus,
.swagger-ui input[type=email]:focus,
.swagger-ui textarea:focus,
.swagger-ui select:focus {
    border-color: var(--ds-primary);
    outline: none;
    box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1);
}

/* --- Blöcke & Container: einheitlicher Radius --- */
.swagger-ui .opblock,
.swagger-ui .scheme-container,
.swagger-ui section.models,
.swagger-ui .dialog-ux .modal-ux {
    border-radius: var(--ds-radius);
}
.swagger-ui .scheme-container {
    box-shadow: var(--ds-shadow-sm);
}

/* HTTP-Methoden-Farben (GET blau, POST grün …) bleiben Swagger-Konvention. */

/* --- "Servers"-Bereich pro Operation ausblenden ---
   Swagger-UI-Verhalten bei OpenAPI 3.1 + leerer servers-Liste (#9947): pro
   Operation wird ein "/"-Server-Override gerendert. Reine Doppelung — es gibt
   nur eine Basisadresse (die aktuelle Domain), und der volle Pfad /api/v1/…
   steht schon in jeder Operation-Überschrift. Der ganze Block (Überschrift +
   Label + Dropdown) liegt in einem eigenen Wrapper .operation-servers
   (className "opblock-section operation-servers" im Bundle) -> eine valide
   Regel ohne :has() genügt und trifft nicht Parameters/Responses. Rein
   optisch: "Execute" nutzt weiterhin automatisch den Default-Server. */
.swagger-ui .operation-servers {
    display: none;
}
