:root {
  --cyber-dark: #0a0e27;
  --cyber-darker: #060918;
  --cyber-purple: #a855f7;
  --cyber-cyan: #06b6d4;
  --cyber-green: #10b981;
  --cyber-pink: #ec4899;
  --cyber-blue: #3b82f6;
  --cyber-text: #e5ecff;
  --cyber-muted: #9cb1d8;
  --cyber-border: rgba(6, 182, 212, 0.3);
  --cyber-shadow-cyan: 0 0 20px rgba(6, 182, 212, 0.5);
  --cyber-shadow-purple: 0 0 20px rgba(168, 85, 247, 0.35);
  --cyber-gradient-main: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
  --cyber-gradient-accent: linear-gradient(135deg, #4facfe 0%, #00f2fe 100%);
  --cyber-radius: 12px;
}

body,
.swagger-ui {
  background:
    radial-gradient(circle at 20% 20%, rgba(68, 33, 158, 0.2), transparent 30%),
    radial-gradient(circle at 80% 30%, rgba(6, 182, 212, 0.15), transparent 25%),
    var(--cyber-dark) !important;
  color: var(--cyber-text) !important;
  min-height: 100vh;
}

body::before {
  content: "";
  position: fixed;
  inset: 0;
  pointer-events: none;
  background: linear-gradient(180deg, rgba(5, 8, 22, 0.78), rgba(5, 8, 22, 0.68));
  z-index: -1;
}

.swagger-ui .topbar {
  background: rgba(6, 10, 30, 0.78) !important;
  backdrop-filter: blur(10px);
  border-bottom: 1px solid var(--cyber-border);
  box-shadow: var(--cyber-shadow-cyan);
}

.swagger-ui .topbar-wrapper {
  max-width: 1460px;
}

.swagger-ui .topbar-wrapper img {
  display: none;
}

.swagger-ui .topbar-wrapper .link::after {
  content: "Plus API";
  color: var(--cyber-cyan);
  font-weight: 700;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  font-size: 0.95rem;
}

.swagger-ui .topbar .download-url-wrapper {
  display: none;
}

.swagger-ui .info,
.swagger-ui .scheme-container {
  background: rgba(10, 14, 39, 0.8) !important;
  border: 1px solid var(--cyber-border);
  border-radius: var(--cyber-radius);
  box-shadow: var(--cyber-shadow-purple);
}

.swagger-ui .info .title,
.swagger-ui .info p,
.swagger-ui .info li,
.swagger-ui .info h1,
.swagger-ui .info h2,
.swagger-ui .info h3,
.swagger-ui .opblock-tag,
.swagger-ui .opblock-summary-path,
.swagger-ui .opblock-summary-description,
.swagger-ui .response-col_status,
.swagger-ui table thead tr th,
.swagger-ui .model-title,
.swagger-ui .parameter__name,
.swagger-ui .parameter__type,
.swagger-ui .tab li button.tablinks {
  color: var(--cyber-text) !important;
}

.swagger-ui .opblock-tag small,
.swagger-ui .opblock-tag .small,
.swagger-ui .renderedMarkdown p,
.swagger-ui .renderedMarkdown li {
  color: #bcd3ff !important;
  opacity: 0.95 !important;
}

.swagger-ui .info a,
.swagger-ui .opblock a,
.swagger-ui .markdown a {
  color: var(--cyber-cyan) !important;
}

.swagger-ui .opblock-tag {
  border-bottom: 1px solid rgba(168, 85, 247, 0.35) !important;
}

.swagger-ui .opblock {
  background: rgba(10, 14, 39, 0.86) !important;
  border-color: var(--cyber-border) !important;
  border-radius: var(--cyber-radius) !important;
  box-shadow: inset 0 0 0 1px rgba(6, 182, 212, 0.08), 0 10px 26px rgba(0, 0, 0, 0.35);
}

.swagger-ui .opblock .opblock-summary {
  border-color: var(--cyber-border) !important;
}

.swagger-ui .opblock .opblock-section-header {
  background: rgba(6, 182, 212, 0.08) !important;
}

.swagger-ui .btn {
  border-radius: 10px !important;
  border: 1px solid var(--cyber-border) !important;
  color: var(--cyber-text) !important;
  background: var(--cyber-gradient-main) !important;
  box-shadow: var(--cyber-shadow-cyan);
  transition: transform 0.2s ease, box-shadow 0.2s ease, opacity 0.2s ease;
}

.swagger-ui .authorize,
.swagger-ui .btn.authorize,
.swagger-ui .btn.cancel,
.swagger-ui .btn.clear {
  color: #f5fbff !important;
  border-color: rgba(6, 182, 212, 0.55) !important;
  background: linear-gradient(135deg, rgba(102, 126, 234, 0.9), rgba(118, 75, 162, 0.9)) !important;
}

.swagger-ui .btn:hover {
  transform: translateY(-1px) scale(1.01);
  opacity: 0.95;
}

.swagger-ui .btn.execute {
  background: linear-gradient(90deg, rgba(6, 182, 212, 0.95), rgba(16, 185, 129, 0.9)) !important;
}

.swagger-ui input[type="text"],
.swagger-ui input[type="password"],
.swagger-ui select,
.swagger-ui textarea {
  background: rgba(10, 14, 39, 0.9) !important;
  color: var(--cyber-text) !important;
  border: 1px solid var(--cyber-border) !important;
  border-radius: 10px !important;
}

.swagger-ui .highlight-code .microlight,
.swagger-ui pre,
.swagger-ui code {
  background: #0b1230 !important;
  color: #c5e2ff !important;
  border-radius: 8px;
}

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

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

.swagger-ui .opblock-summary-control,
.swagger-ui .opblock-summary-method,
.swagger-ui .opblock-summary-path,
.swagger-ui .opblock-summary-path__deprecated {
  color: #eef5ff !important;
}

.swagger-ui .opblock-summary-control svg,
.swagger-ui .expand-methods svg,
.swagger-ui .models-control svg,
.swagger-ui svg {
  fill: #9de7ff !important;
  color: #9de7ff !important;
  stroke: #9de7ff !important;
}

.swagger-ui .opblock.opblock-get {
  border-left: 3px solid var(--cyber-green) !important;
}

.swagger-ui .opblock.opblock-post {
  border-left: 3px solid var(--cyber-cyan) !important;
}

.swagger-ui .opblock.opblock-put,
.swagger-ui .opblock.opblock-patch {
  border-left: 3px solid var(--cyber-purple) !important;
}

.swagger-ui .opblock.opblock-delete {
  border-left: 3px solid var(--cyber-pink) !important;
}

.swagger-ui ::-webkit-scrollbar {
  width: 8px;
  height: 8px;
}

.swagger-ui ::-webkit-scrollbar-track {
  background: var(--cyber-dark);
}

.swagger-ui ::-webkit-scrollbar-thumb {
  background: var(--cyber-gradient-main);
  border-radius: 4px;
}

.swagger-ui ::-webkit-scrollbar-thumb:hover {
  background: var(--cyber-gradient-accent);
}

/* ReDoc */
redoc,
redoc-api,
redoc .api-content,
redoc .menu-content {
  --primary-color: var(--cyber-cyan);
}

redoc h1,
redoc h2,
redoc h3,
redoc p,
redoc li,
redoc span,
redoc label {
  color: var(--cyber-text) !important;
}

redoc .menu-content,
redoc .api-content,
redoc .right-panel {
  background: transparent !important;
}

redoc .menu-content a,
redoc .api-content a {
  color: var(--cyber-cyan) !important;
}
