/* ==========================================================================
   Phú Thọ Tourism - Modern Swagger UI Theme
   Tối ưu giao diện trực quan, sang trọng, thương hiệu Cội Nguồn Phú Thọ
   ========================================================================== */

@import url('https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@300;400;500;600;700;800&family=JetBrains+Mono:wght@400;500;600&display=swap');

:root {
    --font-main: 'Plus Jakarta Sans', -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
    --font-mono: 'JetBrains Mono', SFMono-Regular, Consolas, Menlo, monospace;
    
    /* Phú Thọ Tourism Brand Palette */
    --brand-primary: #0284c7;
    --brand-primary-dark: #0369a1;
    --brand-primary-light: #e0f2fe;
    --brand-gradient: linear-gradient(135deg, #075985 0%, #0284c7 50%, #0d9488 100%);
    
    --bg-page: #f8fafc;
    --bg-card: #ffffff;
    --text-primary: #0f172a;
    --text-secondary: #475569;
    --text-muted: #94a3b8;
    --border-color: #e2e8f0;
    --border-focus: #38bdf8;
    
    /* Method Colors */
    --get-color: #059669;
    --get-bg: #ecfdf5;
    --get-border: #a7f3d0;
    
    --post-color: #2563eb;
    --post-bg: #eff6ff;
    --post-border: #bfdbfe;
    
    --put-color: #d97706;
    --put-bg: #fffbeb;
    --put-border: #fde68a;
    
    --delete-color: #dc2626;
    --delete-bg: #fef2f2;
    --delete-border: #fecaca;
    
    --radius-sm: 6px;
    --radius-md: 10px;
    --radius-lg: 14px;
    --radius-pill: 9999px;
    --shadow-card: 0 4px 6px -1px rgba(0, 0, 0, 0.05), 0 2px 4px -2px rgba(0, 0, 0, 0.05);
    --shadow-hover: 0 10px 15px -3px rgba(0, 0, 0, 0.08), 0 4px 6px -4px rgba(0, 0, 0, 0.05);
}

body {
    background-color: var(--bg-page) !important;
    font-family: var(--font-main) !important;
    color: var(--text-primary) !important;
    margin: 0;
    padding: 0;
}

/* ==========================================================================
   Header / Topbar
   ========================================================================== */
.swagger-ui .topbar {
    background: var(--brand-gradient) !important;
    padding: 16px 0 !important;
    box-shadow: 0 4px 20px rgba(7, 89, 133, 0.25) !important;
    border-bottom: 1px solid rgba(255, 255, 255, 0.15);
}

.swagger-ui .topbar .topbar-wrapper {
    display: flex;
    align-items: center;
    justify-content: space-between;
    max-width: 1440px;
    margin: 0 auto;
    padding: 0 32px;
}

.swagger-ui .topbar a {
    display: flex;
    align-items: center;
    gap: 12px;
    text-decoration: none;
}

.swagger-ui .topbar a span {
    font-size: 20px !important;
    font-weight: 800 !important;
    letter-spacing: -0.02em;
    color: #ffffff !important;
    text-shadow: 0 2px 4px rgba(0, 0, 0, 0.15);
}

.swagger-ui .topbar a::before {
    content: "🏛️";
    font-size: 24px;
    display: inline-block;
    filter: drop-shadow(0 2px 4px rgba(0, 0, 0, 0.2));
}

.swagger-ui .topbar .download-url-wrapper {
    display: flex;
    align-items: center;
    gap: 8px;
}

.swagger-ui .topbar .download-url-wrapper input[type=text] {
    border-radius: var(--radius-pill) !important;
    border: 1px solid rgba(255, 255, 255, 0.3) !important;
    background: rgba(255, 255, 255, 0.15) !important;
    color: #ffffff !important;
    padding: 8px 16px !important;
    font-family: var(--font-mono) !important;
    font-size: 13px !important;
}

.swagger-ui .topbar .download-url-wrapper input[type=text]::placeholder {
    color: rgba(255, 255, 255, 0.7);
}

.swagger-ui .topbar .download-url-wrapper .download-url-button {
    background: #ffffff !important;
    color: var(--brand-primary-dark) !important;
    border-radius: var(--radius-pill) !important;
    font-weight: 700 !important;
    border: none !important;
    padding: 8px 18px !important;
    transition: all 0.2s ease;
}

.swagger-ui .topbar .download-url-wrapper .download-url-button:hover {
    transform: translateY(-1px);
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
}

/* ==========================================================================
   Main Information Section
   ========================================================================== */
.swagger-ui .information-container {
    max-width: 1440px !important;
    margin: 28px auto 0 auto !important;
    padding: 0 32px !important;
}

.swagger-ui .info {
    background: var(--bg-card) !important;
    border-radius: var(--radius-lg) !important;
    padding: 32px 36px !important;
    box-shadow: var(--shadow-card) !important;
    border: 1px solid var(--border-color) !important;
    margin-bottom: 24px !important;
    position: relative;
    overflow: hidden;
}

.swagger-ui .info::before {
    content: "";
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    height: 4px;
    background: var(--brand-gradient);
}

.swagger-ui .info .title {
    font-family: var(--font-main) !important;
    font-size: 28px !important;
    font-weight: 800 !important;
    color: #0f172a !important;
    letter-spacing: -0.02em;
    margin-bottom: 12px !important;
    display: flex;
    align-items: center;
    gap: 12px;
}

.swagger-ui .info .title small.version-stamp {
    background: linear-gradient(135deg, #0284c7, #0d9488) !important;
    color: #ffffff !important;
    padding: 4px 12px !important;
    border-radius: var(--radius-pill) !important;
    font-size: 13px !important;
    font-weight: 700 !important;
    vertical-align: middle;
}

.swagger-ui .info .description {
    font-size: 15px !important;
    line-height: 1.7 !important;
    color: var(--text-secondary) !important;
}

.swagger-ui .info .description table {
    width: 100%;
    margin: 16px 0;
    border-collapse: collapse;
    border-radius: var(--radius-sm);
    overflow: hidden;
    box-shadow: 0 1px 3px rgba(0,0,0,0.05);
}

.swagger-ui .info .description th {
    background: #f1f5f9;
    color: #334155;
    font-weight: 700;
    padding: 10px 14px;
    border: 1px solid var(--border-color);
}

.swagger-ui .info .description td {
    padding: 10px 14px;
    border: 1px solid var(--border-color);
    background: #ffffff;
}

/* ==========================================================================
   Filter Input (Search Bar)
   ========================================================================== */
.swagger-ui .wrapper {
    max-width: 1440px !important;
    padding: 0 32px !important;
    margin: 0 auto !important;
}

.swagger-ui .filter-container {
    margin: 20px 0 !important;
}

.swagger-ui .filter-container input[type=text] {
    width: 100% !important;
    max-width: 480px !important;
    padding: 12px 20px 12px 42px !important;
    border-radius: var(--radius-pill) !important;
    border: 1.5px solid var(--border-color) !important;
    font-family: var(--font-main) !important;
    font-size: 14px !important;
    background: #ffffff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke='%2394a3b8'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z'%3E%3C/path%3E%3C/svg%3E") no-repeat 14px center !important;
    background-size: 18px !important;
    box-shadow: 0 1px 3px rgba(0,0,0,0.04) !important;
    transition: all 0.2s ease;
}

.swagger-ui .filter-container input[type=text]:focus {
    border-color: var(--brand-primary) !important;
    outline: none !important;
    box-shadow: 0 0 0 4px rgba(2, 132, 199, 0.15) !important;
}

/* ==========================================================================
   Operation Blocks & Tags
   ========================================================================== */
.swagger-ui .opblock-tag-section {
    margin-bottom: 24px !important;
}

.swagger-ui .opblock-tag {
    font-family: var(--font-main) !important;
    font-size: 18px !important;
    font-weight: 700 !important;
    color: #1e293b !important;
    border-bottom: 2px solid var(--border-color) !important;
    padding: 14px 4px !important;
    margin-bottom: 12px !important;
}

.swagger-ui .opblock-tag small {
    color: var(--text-muted) !important;
    font-size: 13px !important;
    font-weight: 500 !important;
}

.swagger-ui .opblock {
    border-radius: var(--radius-md) !important;
    box-shadow: var(--shadow-card) !important;
    border: 1px solid var(--border-color) !important;
    margin: 0 0 14px 0 !important;
    background: var(--bg-card) !important;
    transition: all 0.2s ease !important;
    overflow: hidden;
}

.swagger-ui .opblock:hover {
    box-shadow: var(--shadow-hover) !important;
    transform: translateY(-2px);
}

.swagger-ui .opblock .opblock-summary {
    padding: 12px 18px !important;
    align-items: center !important;
}

/* Method Badges */
.swagger-ui .opblock .opblock-summary-method {
    font-family: var(--font-main) !important;
    font-weight: 800 !important;
    font-size: 12px !important;
    letter-spacing: 0.05em;
    border-radius: var(--radius-pill) !important;
    padding: 6px 14px !important;
    min-width: 80px !important;
    text-align: center;
    box-shadow: 0 2px 4px rgba(0, 0, 0, 0.08);
}

.swagger-ui .opblock.opblock-get {
    border-color: var(--get-border) !important;
    background: rgba(236, 253, 245, 0.25) !important;
}
.swagger-ui .opblock.opblock-get .opblock-summary-method {
    background: linear-gradient(135deg, #059669, #10b981) !important;
}

.swagger-ui .opblock.opblock-post {
    border-color: var(--post-border) !important;
    background: rgba(239, 246, 255, 0.25) !important;
}
.swagger-ui .opblock.opblock-post .opblock-summary-method {
    background: linear-gradient(135deg, #2563eb, #3b82f6) !important;
}

.swagger-ui .opblock.opblock-put {
    border-color: var(--put-border) !important;
    background: rgba(255, 251, 235, 0.25) !important;
}
.swagger-ui .opblock.opblock-put .opblock-summary-method {
    background: linear-gradient(135deg, #d97706, #f59e0b) !important;
}

.swagger-ui .opblock.opblock-delete {
    border-color: var(--delete-border) !important;
    background: rgba(254, 242, 242, 0.25) !important;
}
.swagger-ui .opblock.opblock-delete .opblock-summary-method {
    background: linear-gradient(135deg, #dc2626, #ef4444) !important;
}

.swagger-ui .opblock .opblock-summary-path {
    font-family: var(--font-mono) !important;
    font-size: 14px !important;
    font-weight: 600 !important;
    color: #1e293b !important;
}

.swagger-ui .opblock .opblock-summary-description {
    font-size: 13px !important;
    color: var(--text-secondary) !important;
    font-weight: 500 !important;
}

/* ==========================================================================
   Parameters & Tables
   ========================================================================== */
.swagger-ui .opblock-body {
    background: #ffffff !important;
    border-top: 1px solid var(--border-color);
    padding: 16px 20px !important;
}

.swagger-ui table.parameters {
    width: 100% !important;
}

.swagger-ui table.parameters th {
    font-weight: 700 !important;
    color: #475569 !important;
    font-size: 12px !important;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    border-bottom: 2px solid var(--border-color) !important;
    padding: 10px 12px !important;
}

.swagger-ui table.parameters td {
    padding: 12px !important;
    border-bottom: 1px solid #f1f5f9 !important;
}

.swagger-ui .parameter__name {
    font-family: var(--font-mono) !important;
    font-size: 13px !important;
    font-weight: 600 !important;
    color: #0f172a !important;
}

.swagger-ui .parameter__name.required::after {
    content: " (bắt buộc)" !important;
    color: #ef4444 !important;
    font-size: 11px !important;
    font-weight: 600 !important;
}

.swagger-ui .parameter__type {
    font-family: var(--font-mono) !important;
    font-size: 12px !important;
    color: #64748b !important;
}

.swagger-ui input[type=text],
.swagger-ui select {
    border: 1px solid var(--border-color) !important;
    border-radius: var(--radius-sm) !important;
    padding: 8px 12px !important;
    font-size: 13px !important;
    font-family: var(--font-main) !important;
    transition: all 0.15s ease;
}

.swagger-ui input[type=text]:focus,
.swagger-ui select:focus {
    border-color: var(--brand-primary) !important;
    box-shadow: 0 0 0 3px rgba(2, 132, 199, 0.15) !important;
    outline: none !important;
}

/* ==========================================================================
   Buttons (Try it out, Execute, Clear)
   ========================================================================== */
.swagger-ui .btn {
    border-radius: var(--radius-pill) !important;
    font-family: var(--font-main) !important;
    font-weight: 600 !important;
    font-size: 13px !important;
    padding: 7px 18px !important;
    transition: all 0.2s ease !important;
}

.swagger-ui .btn.try-out__btn {
    background: #f1f5f9 !important;
    border: 1px solid #cbd5e1 !important;
    color: #334155 !important;
}

.swagger-ui .btn.try-out__btn:hover {
    background: #e2e8f0 !important;
    color: #0f172a !important;
}

.swagger-ui .btn.execute {
    background: var(--brand-gradient) !important;
    border: none !important;
    color: #ffffff !important;
    font-weight: 700 !important;
    box-shadow: 0 4px 12px rgba(2, 132, 199, 0.3) !important;
}

.swagger-ui .btn.execute:hover {
    box-shadow: 0 6px 16px rgba(2, 132, 199, 0.45) !important;
    transform: translateY(-1px);
}

.swagger-ui .btn.btn-clear {
    background: #fee2e2 !important;
    border: 1px solid #fecaca !important;
    color: #b91c1c !important;
}

/* ==========================================================================
   Responses & Code Blocks
   ========================================================================== */
.swagger-ui .responses-table {
    border-radius: var(--radius-sm);
    overflow: hidden;
}

.swagger-ui .response-col_status {
    font-family: var(--font-mono) !important;
    font-weight: 700 !important;
    font-size: 13px !important;
}

.swagger-ui .response__response-status {
    border-radius: var(--radius-pill) !important;
    padding: 4px 10px !important;
    display: inline-block;
}

.swagger-ui .highlight-code,
.swagger-ui .microlight {
    background: #0f172a !important;
    border-radius: var(--radius-md) !important;
    padding: 14px 18px !important;
    font-family: var(--font-mono) !important;
    font-size: 13px !important;
    color: #f1f5f9 !important;
    box-shadow: inset 0 2px 6px rgba(0, 0, 0, 0.3);
}

/* ==========================================================================
   Models Section
   ========================================================================== */
.swagger-ui section.models {
    background: var(--bg-card) !important;
    border-radius: var(--radius-lg) !important;
    border: 1px solid var(--border-color) !important;
    padding: 16px 24px !important;
    margin-top: 36px !important;
    box-shadow: var(--shadow-card) !important;
}

.swagger-ui section.models h4 {
    font-family: var(--font-main) !important;
    font-size: 18px !important;
    font-weight: 700 !important;
    color: #1e293b !important;
}

/* ==========================================================================
   Custom Footer
   ========================================================================== */
.swagger-footer-custom {
    text-align: center;
    padding: 32px 0 48px 0;
    color: #64748b;
    font-size: 13px;
    font-weight: 500;
}

.swagger-footer-custom a {
    color: var(--brand-primary);
    text-decoration: none;
    font-weight: 600;
}

.swagger-footer-custom a:hover {
    text-decoration: underline;
}

/* ==========================================================================
   Authorize Button & Authentication Modal
   ========================================================================== */
.swagger-ui .auth-wrapper {
    display: flex !important;
    justify-content: flex-end !important;
    padding: 16px 0 !important;
}

.swagger-ui .btn.authorize {
    background: linear-gradient(135deg, #059669 0%, #10b981 100%) !important;
    color: #ffffff !important;
    border: none !important;
    border-radius: var(--radius-pill) !important;
    padding: 9px 24px !important;
    font-weight: 700 !important;
    font-size: 14px !important;
    display: inline-flex !important;
    align-items: center !important;
    gap: 8px !important;
    box-shadow: 0 4px 14px rgba(5, 150, 105, 0.35) !important;
    transition: all 0.25s ease !important;
}

.swagger-ui .btn.authorize:hover {
    transform: translateY(-2px);
    box-shadow: 0 6px 20px rgba(5, 150, 105, 0.45) !important;
}

.swagger-ui .btn.authorize svg {
    fill: #ffffff !important;
}

.swagger-ui .btn.authorize.locked {
    background: linear-gradient(135deg, #0284c7 0%, #0369a1 100%) !important;
    box-shadow: 0 4px 14px rgba(2, 132, 199, 0.35) !important;
}

.swagger-ui .dialog-ux .backdrop-ux {
    background: rgba(15, 23, 42, 0.6) !important;
    backdrop-filter: blur(4px) !important;
}

.swagger-ui .dialog-ux .modal-ux {
    border-radius: var(--radius-lg) !important;
    box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25) !important;
    border: 1px solid var(--border-color) !important;
    overflow: hidden;
    background: #ffffff !important;
}

.swagger-ui .dialog-ux .modal-ux-header {
    background: var(--brand-gradient) !important;
    color: #ffffff !important;
    padding: 18px 24px !important;
    border-bottom: none !important;
}

.swagger-ui .dialog-ux .modal-ux-header h3 {
    color: #ffffff !important;
    font-family: var(--font-main) !important;
    font-weight: 700 !important;
    font-size: 18px !important;
}

.swagger-ui .dialog-ux .modal-ux-header .close-modal {
    fill: #ffffff !important;
}

.swagger-ui .dialog-ux .modal-ux-content {
    padding: 24px 28px !important;
}

.swagger-ui .auth-container {
    border-bottom: 1px solid var(--border-color) !important;
    padding-bottom: 20px !important;
    margin-bottom: 20px !important;
}

.swagger-ui .auth-container:last-child {
    border-bottom: none !important;
    margin-bottom: 0 !important;
}

.swagger-ui .auth-container h4 {
    color: var(--brand-primary-dark) !important;
    font-weight: 700 !important;
}

.swagger-ui .auth-btn-wrapper {
    display: flex;
    gap: 12px;
    margin-top: 16px;
}

.swagger-ui .auth-btn-wrapper .btn.modal-btn.auth {
    background: linear-gradient(135deg, #0284c7 0%, #0d9488 100%) !important;
    color: #ffffff !important;
    border: none !important;
    border-radius: var(--radius-pill) !important;
    padding: 8px 22px !important;
    font-weight: 700 !important;
}

.swagger-ui .auth-btn-wrapper .btn.modal-btn.auth:hover {
    box-shadow: 0 4px 14px rgba(2, 132, 199, 0.35) !important;
}

.swagger-ui .auth-btn-wrapper .btn-done {
    border-radius: var(--radius-pill) !important;
    border: 1px solid #cbd5e1 !important;
    background: #f8fafc !important;
    color: #475569 !important;
    font-weight: 600 !important;
}

