/* osTicket API - Swagger UI Dark Theme */

:root {
  --dark-bg: #1a1a2e;
  --dark-bg-secondary: #16213e;
  --dark-bg-tertiary: #0f3460;
  --dark-border: #2a2a4a;
  --text-primary: #e8e8e8;
  --text-secondary: #c0c0c0;
  --text-muted: #a0a0b0;
  --accent-green: #89bf04;
  --accent-blue: #61affe;
  --link-color: #6ecfff;
}

/* --- Base --- */

html {
  box-sizing: border-box;
  overflow: -moz-scrollbars-vertical;
  overflow-y: scroll;
}

*, *:before, *:after {
  box-sizing: inherit;
}

body {
  margin: 0;
  background: var(--dark-bg) !important;
  color: var(--text-primary) !important;
}

/* --- Top Bar --- */

.swagger-ui .topbar {
  background-color: #0d1117 !important;
  border-bottom: 1px solid var(--dark-border);
}

/* --- Info Section --- */

.swagger-ui .info {
  margin: 30px 0;
}

.swagger-ui .info .title {
  color: #fff !important;
}

.swagger-ui .info .description p,
.swagger-ui .info .description li,
.swagger-ui .info .description {
  color: var(--text-secondary) !important;
}

.swagger-ui .info a {
  color: var(--link-color) !important;
}

.swagger-ui .info .base-url {
  color: var(--text-muted) !important;
}

/* --- Tag Groups (Ticket Management, Statistics, etc.) --- */

.swagger-ui .opblock-tag {
  color: var(--text-primary) !important;
  border-bottom: 1px solid var(--dark-border) !important;
}

.swagger-ui .opblock-tag:hover {
  background: rgba(255, 255, 255, 0.03) !important;
}

.swagger-ui .opblock-tag small {
  color: var(--text-muted) !important;
}

/* --- Operation Blocks --- */

/* POST */
.swagger-ui .opblock.opblock-post {
  background: rgba(73, 204, 144, 0.08) !important;
  border-color: #49cc90 !important;
}

.swagger-ui .opblock.opblock-post .opblock-summary {
  border-color: #49cc90 !important;
}

/* GET */
.swagger-ui .opblock.opblock-get {
  background: rgba(97, 175, 254, 0.08) !important;
  border-color: #61affe !important;
}

.swagger-ui .opblock.opblock-get .opblock-summary {
  border-color: #61affe !important;
}

/* DELETE */
.swagger-ui .opblock.opblock-delete {
  background: rgba(249, 62, 62, 0.08) !important;
  border-color: #f93e3e !important;
}

.swagger-ui .opblock.opblock-delete .opblock-summary {
  border-color: #f93e3e !important;
}

/* PATCH / PUT */
.swagger-ui .opblock.opblock-patch {
  background: rgba(80, 227, 194, 0.08) !important;
  border-color: #50e3c2 !important;
}

.swagger-ui .opblock.opblock-patch .opblock-summary {
  border-color: #50e3c2 !important;
}

.swagger-ui .opblock.opblock-put {
  background: rgba(252, 161, 48, 0.08) !important;
  border-color: #fca130 !important;
}

.swagger-ui .opblock.opblock-put .opblock-summary {
  border-color: #fca130 !important;
}

/* --- Operation Summary (Method + Path line) --- */

.swagger-ui .opblock .opblock-summary-description {
  color: var(--text-secondary) !important;
}

.swagger-ui .opblock .opblock-summary-path {
  color: var(--text-primary) !important;
}

/* --- Expanded Operation Body --- */

.swagger-ui .opblock .opblock-body,
.swagger-ui .opblock-body pre.microlight {
  background: var(--dark-bg-secondary) !important;
}

.swagger-ui .opblock .opblock-section-header {
  background: rgba(0, 0, 0, 0.2) !important;
  box-shadow: none !important;
}

.swagger-ui .opblock .opblock-section-header h4 {
  color: var(--text-primary) !important;
}

.swagger-ui .opblock .opblock-section-header label {
  color: var(--text-secondary) !important;
}

/* --- Descriptions inside operations --- */

.swagger-ui .opblock-description-wrapper p,
.swagger-ui .opblock-external-docs-wrapper p,
.swagger-ui .opblock-description-wrapper,
.swagger-ui .opblock-external-docs-wrapper {
  color: var(--text-secondary) !important;
}

.swagger-ui .opblock-description-wrapper h4,
.swagger-ui .opblock-external-docs-wrapper h4 {
  color: var(--text-primary) !important;
}

/* --- Markdown rendered inside descriptions --- */

.swagger-ui .renderedMarkdown p,
.swagger-ui .renderedMarkdown li,
.swagger-ui .renderedMarkdown td,
.swagger-ui .renderedMarkdown th {
  color: var(--text-secondary) !important;
}

.swagger-ui .renderedMarkdown h1,
.swagger-ui .renderedMarkdown h2,
.swagger-ui .renderedMarkdown h3,
.swagger-ui .renderedMarkdown h4 {
  color: var(--text-primary) !important;
}

.swagger-ui .renderedMarkdown a {
  color: var(--link-color) !important;
}

.swagger-ui .renderedMarkdown code {
  background: rgba(255, 255, 255, 0.1) !important;
  color: #ff7b72 !important;
  padding: 2px 6px;
  border-radius: 3px;
}

.swagger-ui .renderedMarkdown pre {
  background: #0d1117 !important;
  border: 1px solid var(--dark-border) !important;
  border-radius: 4px;
}

.swagger-ui .renderedMarkdown pre code {
  background: transparent !important;
  color: var(--text-primary) !important;
}

/* Markdown tables */
.swagger-ui .renderedMarkdown table {
  border-collapse: collapse;
}

.swagger-ui .renderedMarkdown table th {
  background: rgba(255, 255, 255, 0.05) !important;
  border-color: var(--dark-border) !important;
}

.swagger-ui .renderedMarkdown table td {
  border-color: var(--dark-border) !important;
}

/* --- Parameter Tables --- */

.swagger-ui table thead tr th,
.swagger-ui table thead tr td,
.swagger-ui .parameters-col_description p,
.swagger-ui .parameters-col_description {
  color: var(--text-secondary) !important;
}

.swagger-ui .parameter__name {
  color: var(--text-primary) !important;
}

.swagger-ui .parameter__name.required::after {
  color: #f93e3e !important;
}

.swagger-ui .parameter__type {
  color: var(--text-muted) !important;
}

.swagger-ui .parameter__in {
  color: var(--text-muted) !important;
}

.swagger-ui table tbody tr td {
  color: var(--text-secondary) !important;
  border-color: var(--dark-border) !important;
}

/* --- Response Sections --- */

.swagger-ui .responses-inner h4,
.swagger-ui .responses-inner h5 {
  color: var(--text-primary) !important;
}

.swagger-ui .response-col_status {
  color: var(--text-primary) !important;
}

.swagger-ui .response-col_description {
  color: var(--text-secondary) !important;
}

.swagger-ui .response-col_description p {
  color: var(--text-secondary) !important;
}

.swagger-ui .response-col_links {
  color: var(--text-muted) !important;
}

/* Response tabs */
.swagger-ui .tab li {
  color: var(--text-muted) !important;
}

.swagger-ui .tab li.active {
  color: var(--text-primary) !important;
}

/* --- Code Blocks / JSON Examples --- */

.swagger-ui .highlight-code,
.swagger-ui .microlight {
  background: #0d1117 !important;
  color: var(--text-primary) !important;
  border-radius: 4px;
}

.swagger-ui .microlight .headerline {
  color: var(--accent-blue) !important;
}

/* Example selector dropdown */
.swagger-ui .opblock-body select {
  background: var(--dark-bg-secondary) !important;
  color: var(--text-primary) !important;
  border-color: var(--dark-border) !important;
}

/* --- Model/Schema Section --- */

.swagger-ui .model-box {
  background: rgba(0, 0, 0, 0.15) !important;
}

.swagger-ui .model {
  color: var(--text-secondary) !important;
}

.swagger-ui .model-title {
  color: var(--text-primary) !important;
}

.swagger-ui .model .property {
  color: var(--accent-blue) !important;
}

.swagger-ui .model .property.primitive {
  color: var(--accent-green) !important;
}

.swagger-ui section.models {
  border: 1px solid var(--dark-border) !important;
}

.swagger-ui section.models h4 {
  color: var(--text-primary) !important;
  border-bottom: 1px solid var(--dark-border) !important;
}

.swagger-ui section.models .model-container {
  background: rgba(0, 0, 0, 0.1) !important;
  border-color: var(--dark-border) !important;
}

.swagger-ui .model-box-control:focus,
.swagger-ui .models-control:focus {
  outline: none;
}

/* --- Buttons --- */

.swagger-ui .btn {
  color: var(--text-primary) !important;
  border-color: var(--dark-border) !important;
}

.swagger-ui .btn:hover {
  background: rgba(255, 255, 255, 0.05) !important;
}

.swagger-ui .btn.authorize {
  color: #49cc90 !important;
  border-color: #49cc90 !important;
}

.swagger-ui .btn.execute {
  background: var(--accent-blue) !important;
  color: #fff !important;
  border-color: var(--accent-blue) !important;
}

/* Try it out button */
.swagger-ui .try-out__btn {
  color: var(--text-secondary) !important;
  border-color: var(--dark-border) !important;
}

/* --- Authorization Dialog --- */

.swagger-ui .dialog-ux .modal-ux {
  background: var(--dark-bg-secondary) !important;
  border: 1px solid var(--dark-border) !important;
}

.swagger-ui .dialog-ux .modal-ux-header h3 {
  color: var(--text-primary) !important;
}

.swagger-ui .dialog-ux .modal-ux-content p,
.swagger-ui .dialog-ux .modal-ux-content label {
  color: var(--text-secondary) !important;
}

.swagger-ui .dialog-ux .modal-ux-content h4 {
  color: var(--text-primary) !important;
}

.swagger-ui .dialog-ux .modal-ux-header {
  border-bottom: 1px solid var(--dark-border) !important;
}

.swagger-ui .dialog-ux .backdrop-ux {
  background: rgba(0, 0, 0, 0.7) !important;
}

/* --- Input Fields --- */

.swagger-ui input[type=text],
.swagger-ui input[type=password],
.swagger-ui textarea,
.swagger-ui select {
  background: var(--dark-bg) !important;
  color: var(--text-primary) !important;
  border: 1px solid var(--dark-border) !important;
}

.swagger-ui input[type=text]:focus,
.swagger-ui input[type=password]:focus,
.swagger-ui textarea:focus {
  border-color: var(--accent-blue) !important;
  outline: none;
}

/* --- Filter Bar --- */

.swagger-ui .filter .operation-filter-input {
  background: var(--dark-bg-secondary) !important;
  color: var(--text-primary) !important;
  border: 1px solid var(--dark-border) !important;
}

/* --- Scrollbar (Webkit) --- */

::-webkit-scrollbar {
  width: 8px;
  height: 8px;
}

::-webkit-scrollbar-track {
  background: var(--dark-bg);
}

::-webkit-scrollbar-thumb {
  background: #3a3a5a;
  border-radius: 4px;
}

::-webkit-scrollbar-thumb:hover {
  background: #4a4a6a;
}

/* --- Server selector --- */

.swagger-ui .scheme-container {
  background: var(--dark-bg-secondary) !important;
  box-shadow: none !important;
  border-bottom: 1px solid var(--dark-border) !important;
}

.swagger-ui .scheme-container label {
  color: var(--text-secondary) !important;
}

/* --- Loading --- */

.swagger-ui .loading-container .loading::after {
  color: var(--text-muted) !important;
}

/* --- Disable Dark Reader interference --- */

html[data-darkreader-mode] .swagger-ui,
html[data-darkreader-scheme] .swagger-ui {
  /* Already dark - prevent double-inversion */
}
