2348 lines
73 KiB
CSS
2348 lines
73 KiB
CSS
@tailwind base;
|
||
@tailwind components;
|
||
@tailwind utilities;
|
||
|
||
|
||
/* 自定义样式文件: status-grid */
|
||
#poolGridContainer {
|
||
position: relative; /* 仅用于定位内部的Canvas */
|
||
}
|
||
#poolGridContainer canvas {
|
||
position: absolute;
|
||
top: 0;
|
||
left: 0;
|
||
width: 100%;
|
||
height: 100%;
|
||
}
|
||
/* [核心UI修复] 为 Font Awesome 的 fa-spin 类,注入旋转动画 */
|
||
.fa-spin {
|
||
-webkit-animation: fa-spin 2s infinite linear;
|
||
animation: fa-spin 2s infinite linear;
|
||
}
|
||
@-webkit-keyframes fa-spin {
|
||
0% {
|
||
-webkit-transform: rotate(0deg);
|
||
transform: rotate(0deg);
|
||
}
|
||
100% {
|
||
-webkit-transform: rotate(359deg);
|
||
transform: rotate(359deg);
|
||
}
|
||
}
|
||
@keyframes fa-spin {
|
||
0% {
|
||
-webkit-transform: rotate(0deg);
|
||
transform: rotate(0deg);
|
||
}
|
||
100% {
|
||
-webkit-transform: rotate(359deg);
|
||
transform: rotate(359deg);
|
||
}
|
||
}
|
||
|
||
/* ***base*** */
|
||
|
||
.glass-card {
|
||
background: rgba(255, 255, 255, 0.95); /* High opacity white for light theme */
|
||
backdrop-filter: blur(16px);
|
||
-webkit-backdrop-filter: blur(16px);
|
||
border: 1px solid rgba(0, 0, 0, 0.08); /* Light gray border */
|
||
box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
|
||
}
|
||
.bg-gradient {
|
||
background: #ffffff; /* Clean white background */
|
||
}
|
||
/* Scrollbar styling */
|
||
::-webkit-scrollbar {
|
||
width: 8px;
|
||
height: 8px;
|
||
}
|
||
::-webkit-scrollbar-track {
|
||
background: rgba(243, 244, 246, 0.8); /* bg-gray-100 with opacity */
|
||
border-radius: 10px;
|
||
}
|
||
::-webkit-scrollbar-thumb {
|
||
background: rgba(107, 114, 128, 0.6); /* gray-500 for light theme */
|
||
border-radius: 10px;
|
||
}
|
||
::-webkit-scrollbar-thumb:hover {
|
||
background: rgba(75, 85, 99, 0.8); /* gray-600 for light theme */
|
||
}
|
||
/* Basic modal styles */
|
||
.modal {
|
||
display: none;
|
||
position: fixed;
|
||
z-index: 50;
|
||
left: 0;
|
||
top: 0;
|
||
width: 100%;
|
||
height: 100%;
|
||
background-color: rgba(0,0,0,0.5);
|
||
backdrop-filter: blur(4px);
|
||
}
|
||
.modal.show {
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: center;
|
||
}
|
||
|
||
/* Global modal content styling for light theme consistency */
|
||
.modal .w-full[style*="background-color: rgba(70, 50, 150"],
|
||
.modal .w-full[style*="background-color: rgba(80, 60, 160"] {
|
||
background-color: rgba(255, 255, 255, 0.98) !important;
|
||
color: #374151 !important; /* gray-700 */
|
||
border: 1px solid rgba(0, 0, 0, 0.08) !important;
|
||
box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04) !important;
|
||
}
|
||
|
||
/* Global modal text color fixes */
|
||
.modal .text-gray-100, .modal h2.text-gray-100, .modal h3.text-gray-100 {
|
||
color: #1f2937 !important; /* gray-800 */
|
||
font-weight: 600 !important;
|
||
}
|
||
|
||
.modal .text-gray-200, .modal .text-gray-300 {
|
||
color: #6b7280 !important; /* gray-500 */
|
||
}
|
||
|
||
.modal .text-gray-300:hover {
|
||
color: #374151 !important; /* gray-700 */
|
||
}
|
||
|
||
/* Global modal button styling */
|
||
.modal .bg-violet-600, .modal button.bg-violet-600 {
|
||
background-color: #3b82f6 !important; /* blue-500 - light blue */
|
||
color: #ffffff !important;
|
||
}
|
||
|
||
.modal .bg-violet-600:hover, .modal button.bg-violet-600:hover {
|
||
background-color: #2563eb !important; /* blue-600 - darker light blue */
|
||
}
|
||
|
||
/* Global modal blue button styling */
|
||
.modal .bg-blue-500, .modal button.bg-blue-500,
|
||
.modal .bg-blue-600, .modal button.bg-blue-600,
|
||
.modal .bg-blue-700, .modal button.bg-blue-700 {
|
||
background-color: #3b82f6 !important; /* blue-500 - light blue */
|
||
color: #ffffff !important;
|
||
}
|
||
|
||
.modal .bg-blue-500:hover, .modal button.bg-blue-500:hover,
|
||
.modal .bg-blue-600:hover, .modal button.bg-blue-600:hover,
|
||
.modal .bg-blue-700:hover, .modal button.bg-blue-700:hover {
|
||
background-color: #2563eb !important; /* blue-600 - darker light blue */
|
||
}
|
||
|
||
/* Global modal red button styling */
|
||
.modal .bg-red-500, .modal button.bg-red-500,
|
||
.modal .bg-red-600, .modal button.bg-red-600,
|
||
.modal .bg-red-700, .modal button.bg-red-700 {
|
||
background-color: #f87171 !important; /* red-400 - bright light red */
|
||
color: #ffffff !important;
|
||
}
|
||
|
||
.modal .bg-red-500:hover, .modal button.bg-red-500:hover,
|
||
.modal .bg-red-600:hover, .modal button.bg-red-600:hover,
|
||
.modal .bg-red-700:hover, .modal button.bg-red-700:hover {
|
||
background-color: #ef4444 !important; /* red-500 - darker bright light red */
|
||
}
|
||
|
||
/* Global modal gray button styling */
|
||
.modal .bg-gray-500, .modal button.bg-gray-500,
|
||
.modal .bg-gray-600, .modal button.bg-gray-600,
|
||
.modal .bg-gray-700, .modal button.bg-gray-700 {
|
||
background-color: #e5e7eb !important; /* gray-200 - light gray */
|
||
color: #374151 !important; /* gray-700 - dark text for contrast */
|
||
}
|
||
|
||
.modal .bg-gray-500:hover, .modal button.bg-gray-500:hover,
|
||
.modal .bg-gray-600:hover, .modal button.bg-gray-600:hover,
|
||
.modal .bg-gray-700:hover, .modal button.bg-gray-700:hover {
|
||
background-color: #d1d5db !important; /* gray-300 - darker light gray */
|
||
color: #374151 !important; /* gray-700 - dark text for contrast */
|
||
}
|
||
|
||
/* Comprehensive button contrast fixes */
|
||
/* Ensure all dark background buttons have white text */
|
||
.bg-blue-500, .bg-blue-600, .bg-blue-700, .bg-blue-800, .bg-blue-900,
|
||
.bg-red-500, .bg-red-600, .bg-red-700, .bg-red-800, .bg-red-900,
|
||
.bg-green-500, .bg-green-600, .bg-green-700, .bg-green-800, .bg-green-900,
|
||
.bg-purple-500, .bg-purple-600, .bg-purple-700, .bg-purple-800, .bg-purple-900,
|
||
.bg-indigo-500, .bg-indigo-600, .bg-indigo-700, .bg-indigo-800, .bg-indigo-900,
|
||
.bg-violet-500, .bg-violet-600, .bg-violet-700, .bg-violet-800, .bg-violet-900,
|
||
.bg-sky-500, .bg-sky-600, .bg-sky-700, .bg-sky-800, .bg-sky-900,
|
||
.bg-teal-500, .bg-teal-600, .bg-teal-700, .bg-teal-800, .bg-teal-900,
|
||
.bg-gray-700, .bg-gray-800, .bg-gray-900,
|
||
.bg-slate-500, .bg-slate-600, .bg-slate-700, .bg-slate-800, .bg-slate-900 {
|
||
color: #ffffff !important;
|
||
}
|
||
|
||
/* Ensure all light background buttons have dark text */
|
||
.bg-gray-50, .bg-gray-100, .bg-gray-200, .bg-gray-300,
|
||
.bg-white, .bg-transparent {
|
||
color: #374151 !important; /* gray-700 */
|
||
}
|
||
|
||
/* Fix button children text inheritance */
|
||
.bg-blue-500 *, .bg-blue-600 *, .bg-blue-700 *, .bg-blue-800 *, .bg-blue-900 *,
|
||
.bg-red-500 *, .bg-red-600 *, .bg-red-700 *, .bg-red-800 *, .bg-red-900 *,
|
||
.bg-green-500 *, .bg-green-600 *, .bg-green-700 *, .bg-green-800 *, .bg-green-900 *,
|
||
.bg-purple-500 *, .bg-purple-600 *, .bg-purple-700 *, .bg-purple-800 *, .bg-purple-900 *,
|
||
.bg-violet-500 *, .bg-violet-600 *, .bg-violet-700 *, .bg-violet-800 *, .bg-violet-900 *,
|
||
.bg-sky-500 *, .bg-sky-600 *, .bg-sky-700 *, .bg-sky-800 *, .bg-sky-900 *,
|
||
.bg-teal-500 *, .bg-teal-600 *, .bg-teal-700 *, .bg-teal-800 *, .bg-teal-900 *,
|
||
.bg-gray-700 *, .bg-gray-800 *, .bg-gray-900 *,
|
||
.bg-slate-500 *, .bg-slate-600 *, .bg-slate-700 *, .bg-slate-800 *, .bg-slate-900 * {
|
||
color: inherit !important;
|
||
}
|
||
|
||
/* Global form element styling for consistency */
|
||
select, input[type="text"], input[type="number"], input[type="search"],
|
||
input[type="email"], input[type="password"], input[type="datetime-local"],
|
||
textarea, .form-input, .form-select {
|
||
background-color: rgba(255, 255, 255, 0.95) !important;
|
||
color: #374151 !important; /* gray-700 */
|
||
border: 1px solid rgba(0, 0, 0, 0.12) !important;
|
||
border-radius: 0.375rem !important; /* rounded-md */
|
||
}
|
||
|
||
select:focus, input:focus, textarea:focus,
|
||
.form-input:focus, .form-select:focus {
|
||
border-color: #3b82f6 !important; /* blue-500 */
|
||
box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1) !important;
|
||
outline: none !important;
|
||
}
|
||
|
||
/* Fix dropdown option styling */
|
||
select option {
|
||
background-color: rgba(255, 255, 255, 0.98) !important;
|
||
color: #374151 !important; /* gray-700 */
|
||
padding: 8px !important;
|
||
}
|
||
|
||
/* Fix pagination controls globally */
|
||
.pagination-button, .pagination a, .pagination button {
|
||
background-color: rgba(255, 255, 255, 0.9) !important;
|
||
color: #374151 !important; /* gray-700 */
|
||
border: 1px solid rgba(0, 0, 0, 0.08) !important;
|
||
transition: all 0.15s ease-in-out !important;
|
||
}
|
||
|
||
.pagination-button:hover, .pagination a:hover, .pagination button:hover {
|
||
background-color: rgba(229, 231, 235, 1) !important; /* gray-200 */
|
||
border-color: rgba(0, 0, 0, 0.12) !important;
|
||
transform: translateY(-1px) !important;
|
||
}
|
||
|
||
.pagination-button.active, .pagination a.active, .pagination button.active {
|
||
background-color: #3b82f6 !important; /* blue-500 - light blue */
|
||
color: #ffffff !important;
|
||
border-color: #2563eb !important; /* blue-600 - darker light blue */
|
||
font-weight: 600 !important;
|
||
}
|
||
/* Loading spinner */
|
||
.loading-spin {
|
||
animation: spin 1s linear infinite;
|
||
}
|
||
@keyframes spin {
|
||
from { transform: rotate(0deg); }
|
||
to { transform: rotate(360deg); }
|
||
}
|
||
/* Notification */
|
||
.notification {
|
||
position: fixed;
|
||
bottom: 5rem; /* Adjusted from bottom-20 */
|
||
left: 50%;
|
||
transform: translateX(-50%);
|
||
padding: 0.75rem 1.25rem; /* px-5 py-3 */
|
||
border-radius: 0.5rem; /* rounded-lg */
|
||
background-color: rgba(34, 197, 94, 0.95); /* green-500 for success */
|
||
color: white;
|
||
font-weight: 500; /* font-medium */
|
||
z-index: 1000; /* Increased z-index */
|
||
opacity: 0;
|
||
transition: opacity 0.3s ease-in-out, transform 0.3s ease-in-out;
|
||
box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);
|
||
}
|
||
.notification.show {
|
||
opacity: 1;
|
||
transform: translate(-50%, 0);
|
||
}
|
||
.notification.error {
|
||
background-color: rgba(239, 68, 68, 0.95); /* red-500 for error */
|
||
}
|
||
/* Scroll buttons */
|
||
.scroll-buttons {
|
||
position: fixed;
|
||
right: 1.25rem; /* right-5 */
|
||
bottom: 5rem; /* bottom-20 */
|
||
display: flex;
|
||
flex-direction: column;
|
||
gap: 0.5rem; /* gap-2 */
|
||
z-index: 10;
|
||
}
|
||
.scroll-button {
|
||
width: 2.5rem; /* w-10 */
|
||
height: 2.5rem; /* h-10 */
|
||
background-color: #3b82f6; /* blue-500 - light blue */
|
||
color: white;
|
||
border-radius: 9999px; /* rounded-full */
|
||
box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06); /* shadow-md */
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: center;
|
||
transition: all 0.3s ease-in-out;
|
||
}
|
||
.scroll-button:hover {
|
||
background-color: #2563eb; /* blue-600 - darker light blue */
|
||
box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05); /* hover:shadow-lg */
|
||
}
|
||
|
||
/* Global overrides for light theme consistency */
|
||
.text-gray-200, .text-gray-300, .text-gray-400 {
|
||
color: #6b7280 !important; /* gray-500 for better contrast */
|
||
}
|
||
|
||
/* Navigation and header improvements */
|
||
.bg-primary-600, .bg-primary-700 {
|
||
background-color: #3b82f6 !important; /* blue-500 - light blue */
|
||
}
|
||
|
||
.text-primary-600, .text-primary-700 {
|
||
color: #3b82f6 !important; /* blue-500 - light blue */
|
||
}
|
||
|
||
.border-primary-500, .focus\\:border-primary-500 {
|
||
border-color: #3b82f6 !important; /* blue-500 */
|
||
}
|
||
|
||
.ring-primary-200, .focus\\:ring-primary-200 {
|
||
--tw-ring-color: rgba(59, 130, 246, 0.2) !important; /* blue-500 with opacity */
|
||
}
|
||
|
||
/* Global purple to blue conversion */
|
||
.bg-violet-50, .bg-violet-100, .bg-violet-200, .bg-violet-300, .bg-violet-400, .bg-violet-500, .bg-violet-600, .bg-violet-700, .bg-violet-800, .bg-violet-900 {
|
||
background-color: #3b82f6 !important; /* blue-500 - light blue */
|
||
}
|
||
|
||
.text-violet-50, .text-violet-100, .text-violet-200, .text-violet-300, .text-violet-400, .text-violet-500, .text-violet-600, .text-violet-700, .text-violet-800, .text-violet-900 {
|
||
color: #3b82f6 !important; /* blue-500 - light blue */
|
||
}
|
||
|
||
.border-violet-50, .border-violet-100, .border-violet-200, .border-violet-300, .border-violet-400, .border-violet-500, .border-violet-600, .border-violet-700, .border-violet-800, .border-violet-900 {
|
||
border-color: #3b82f6 !important; /* blue-500 - light blue */
|
||
}
|
||
|
||
/* Global button color overrides */
|
||
/* Blue buttons to light blue */
|
||
.bg-blue-500, .bg-blue-600, .bg-blue-700, .bg-blue-800, .bg-blue-900,
|
||
button.bg-blue-500, button.bg-blue-600, button.bg-blue-700, button.bg-blue-800, button.bg-blue-900 {
|
||
background-color: #3b82f6 !important; /* blue-500 - light blue */
|
||
}
|
||
|
||
.bg-blue-500:hover, .bg-blue-600:hover, .bg-blue-700:hover, .bg-blue-800:hover, .bg-blue-900:hover,
|
||
button.bg-blue-500:hover, button.bg-blue-600:hover, button.bg-blue-700:hover, button.bg-blue-800:hover, button.bg-blue-900:hover,
|
||
.hover\\:bg-blue-600:hover, .hover\\:bg-blue-700:hover, .hover\\:bg-blue-800:hover {
|
||
background-color: #2563eb !important; /* blue-600 - darker light blue */
|
||
}
|
||
|
||
/* Red buttons to bright light red */
|
||
.bg-red-500, .bg-red-600, .bg-red-700, .bg-red-800, .bg-red-900,
|
||
button.bg-red-500, button.bg-red-600, button.bg-red-700, button.bg-red-800, button.bg-red-900 {
|
||
background-color: #f87171 !important; /* red-400 - bright light red */
|
||
}
|
||
|
||
.bg-red-500:hover, .bg-red-600:hover, .bg-red-700:hover, .bg-red-800:hover, .bg-red-900:hover,
|
||
button.bg-red-500:hover, button.bg-red-600:hover, button.bg-red-700:hover, button.bg-red-800:hover, button.bg-red-900:hover,
|
||
.hover\\:bg-red-600:hover, .hover\\:bg-red-700:hover, .hover\\:bg-red-800:hover {
|
||
background-color: #ef4444 !important; /* red-500 - darker bright light red */
|
||
}
|
||
|
||
/* Gray buttons to light gray */
|
||
.bg-gray-500, .bg-gray-600, .bg-gray-700, .bg-gray-800, .bg-gray-900,
|
||
button.bg-gray-500, button.bg-gray-600, button.bg-gray-700, button.bg-gray-800, button.bg-gray-900 {
|
||
background-color: #e5e7eb !important; /* gray-200 - light gray */
|
||
color: #374151 !important; /* gray-700 - dark text for contrast */
|
||
}
|
||
|
||
.bg-gray-500:hover, .bg-gray-600:hover, .bg-gray-700:hover, .bg-gray-800:hover, .bg-gray-900:hover,
|
||
button.bg-gray-500:hover, button.bg-gray-600:hover, button.bg-gray-700:hover, button.bg-gray-800:hover, button.bg-gray-900:hover,
|
||
.hover\\:bg-gray-600:hover, .hover\\:bg-gray-700:hover, .hover\\:bg-gray-800:hover {
|
||
background-color: #d1d5db !important; /* gray-300 - darker light gray */
|
||
color: #374151 !important; /* gray-700 - dark text for contrast */
|
||
}
|
||
|
||
/* Ensure all text has proper contrast in light theme */
|
||
.text-white {
|
||
color: #374151 !important; /* gray-700 for better contrast on light backgrounds */
|
||
}
|
||
|
||
/* Fix dark button text - ensure white text on dark backgrounds */
|
||
.bg-blue-500, .bg-blue-600, .bg-blue-700, .bg-blue-800, .bg-blue-900,
|
||
.bg-red-500, .bg-red-600, .bg-red-700, .bg-red-800, .bg-red-900,
|
||
.bg-green-500, .bg-green-600, .bg-green-700, .bg-green-800, .bg-green-900,
|
||
.bg-purple-500, .bg-purple-600, .bg-purple-700, .bg-purple-800, .bg-purple-900,
|
||
.bg-indigo-500, .bg-indigo-600, .bg-indigo-700, .bg-indigo-800, .bg-indigo-900,
|
||
.bg-gray-700, .bg-gray-800, .bg-gray-900,
|
||
.bg-sky-500, .bg-sky-600, .bg-sky-700, .bg-sky-800, .bg-sky-900 {
|
||
color: #ffffff !important;
|
||
}
|
||
|
||
/* Ensure buttons with dark backgrounds have white text */
|
||
button.bg-blue-500, button.bg-blue-600, button.bg-blue-700,
|
||
button.bg-red-500, button.bg-red-600, button.bg-red-700,
|
||
button.bg-green-500, button.bg-green-600, button.bg-green-700,
|
||
button.bg-sky-500, button.bg-sky-600, button.bg-sky-700,
|
||
.btn-primary, .btn-danger, .btn-success, .btn-info {
|
||
color: #ffffff !important;
|
||
}
|
||
|
||
/* Override any nested text color rules for dark buttons */
|
||
.bg-blue-500 *, .bg-blue-600 *, .bg-blue-700 *,
|
||
.bg-red-500 *, .bg-red-600 *, .bg-red-700 *,
|
||
.bg-green-500 *, .bg-green-600 *, .bg-green-700 *,
|
||
.bg-sky-500 *, .bg-sky-600 *, .bg-sky-700 * {
|
||
color: inherit !important;
|
||
}
|
||
|
||
|
||
/* auth.html specific styles */
|
||
.auth-glass-card { /* Renamed to avoid conflict if base.html has .glass-card */
|
||
background: rgba(255, 255, 255, 0.95); /* High opacity white for light theme */
|
||
backdrop-filter: blur(20px);
|
||
-webkit-backdrop-filter: blur(20px);
|
||
border: 1px solid rgba(0, 0, 0, 0.08);
|
||
box-shadow: 0 10px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);
|
||
}
|
||
.auth-bg-gradient { /* Renamed to avoid conflict if base.html has .bg-gradient */
|
||
background: #f8fafc; /* Light gray background for auth page */
|
||
}
|
||
/* .input-icon class removed, using direct Tailwind classes now */
|
||
/* Keep button ripple effect if needed, or remove if base provides similar */
|
||
.auth-button { /* Renamed to avoid conflict */
|
||
position: relative;
|
||
overflow: hidden;
|
||
}
|
||
.auth-button:after {
|
||
content: '';
|
||
position: absolute;
|
||
top: 50%;
|
||
left: 50%;
|
||
width: 0;
|
||
height: 0;
|
||
background: rgba(255, 255, 255, 0.2);
|
||
border-radius: 50%;
|
||
transform: translate(-50%, -50%);
|
||
transition: width 0.6s, height 0.6s;
|
||
}
|
||
.auth-button:active:after {
|
||
width: 300px;
|
||
height: 300px;
|
||
opacity: 0;
|
||
}
|
||
|
||
/* ***keys_status.html specific styles*** */
|
||
/* ************************************** */
|
||
.key-content {
|
||
transition: max-height 0.3s ease-in-out, opacity 0.3s ease-in-out,
|
||
padding 0.3s ease-in-out; /* Added padding transition */
|
||
overflow: hidden; /* Keep hidden initially and during collapse */
|
||
}
|
||
.key-content.collapsed {
|
||
max-height: 0 !important; /* Use important to override inline style during transition */
|
||
opacity: 0;
|
||
padding-top: 0 !important; /* Collapse padding */
|
||
padding-bottom: 0 !important; /* Collapse padding */
|
||
/* overflow: hidden; */ /* Already set above */
|
||
}
|
||
.toggle-icon {
|
||
transition: transform 0.3s ease;
|
||
}
|
||
.toggle-icon.collapsed {
|
||
transform: rotate(-90deg);
|
||
}
|
||
/* Copy status styling is handled by base.html's notification */
|
||
|
||
/* 现代数据统计样式 */
|
||
.stats-dashboard {
|
||
display: grid;
|
||
grid-template-columns: 1fr;
|
||
gap: 1.5rem;
|
||
margin-bottom: 2rem;
|
||
position: relative;
|
||
z-index: 10;
|
||
}
|
||
|
||
@media (min-width: 768px) {
|
||
.stats-dashboard {
|
||
grid-template-columns: 1fr 1fr;
|
||
}
|
||
}
|
||
|
||
/* 统计卡片样式 */
|
||
.stats-card {
|
||
background-color: rgba(255, 255, 255, 0.95);
|
||
backdrop-filter: blur(8px);
|
||
-webkit-backdrop-filter: blur(8px);
|
||
border-radius: 0.75rem;
|
||
box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1),
|
||
0 2px 4px -1px rgba(0, 0, 0, 0.06);
|
||
border: 1px solid rgba(0, 0, 0, 0.08);
|
||
overflow: hidden;
|
||
transition: all 0.3s ease-in-out;
|
||
}
|
||
|
||
.stats-card:hover {
|
||
box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1),
|
||
0 4px 6px -2px rgba(0, 0, 0, 0.05);
|
||
border-color: rgba(0, 0, 0, 0.12);
|
||
}
|
||
|
||
.stats-card-header {
|
||
background-color: rgba(249, 250, 251, 0.95);
|
||
padding: 0.75rem 1rem;
|
||
border-bottom: 1px solid rgba(0, 0, 0, 0.08);
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: space-between;
|
||
flex-wrap: wrap; /* Allow wrapping for smaller screens */
|
||
gap: 0.5rem; /* Add gap between items */
|
||
}
|
||
|
||
.stats-card-title {
|
||
display: flex;
|
||
align-items: center;
|
||
font-size: 1rem;
|
||
font-weight: 600;
|
||
color: #374151; /* gray-700 for light theme */
|
||
text-shadow: none;
|
||
}
|
||
|
||
.stats-card-title i {
|
||
margin-right: 0.5rem;
|
||
color: #6b7280; /* gray-500 for light theme */
|
||
}
|
||
|
||
.stats-card-header h2 {
|
||
color: #374151; /* gray-700 for light theme */
|
||
}
|
||
|
||
/* =================================================================== */
|
||
/* [核心重构] 统计项样式 V3.2 - 最终精调版 */
|
||
/* =================================================================== */
|
||
/* --- 网格容器 --- */
|
||
.stats-grid {
|
||
display: grid;
|
||
gap: 1rem;
|
||
padding: 0.75rem;
|
||
margin-bottom: 0.5rem !important;
|
||
}
|
||
/* --- 统计项容器 (stat-item) --- */
|
||
.stat-item {
|
||
position: relative;
|
||
display: block;
|
||
padding: 0;
|
||
border-radius: 0.5rem;
|
||
overflow: hidden;
|
||
transition: transform 0.3s ease-in-out;
|
||
min-height: 110px;
|
||
background-color: transparent !important;
|
||
}
|
||
/* --- 底部1/3的透明色块 (::before) --- */
|
||
.stat-item::before {
|
||
content: "";
|
||
position: absolute;
|
||
left: 0;
|
||
bottom: 0;
|
||
width: 100%;
|
||
height: 30%;
|
||
background-color: currentColor;
|
||
opacity: 0.25;
|
||
z-index: 1;
|
||
transition: opacity 0.3s ease-in-out;
|
||
border-top-left-radius: 0.5rem;
|
||
border-top-right-radius: 0.5rem;
|
||
border-bottom-left-radius: 0.5rem;
|
||
border-bottom-right-radius: 0.5rem;
|
||
}
|
||
/* --- 悬浮动画效果 --- */
|
||
.stat-item:hover {
|
||
transform: scale(1.05);
|
||
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);
|
||
}
|
||
.stat-item:hover::before {
|
||
opacity: 0.25;
|
||
}
|
||
/* --- 核心数字 (stat-value) --- */
|
||
.stat-value {
|
||
position: absolute;
|
||
z-index: 2;
|
||
top: 0;
|
||
left: 0;
|
||
width: 100%;
|
||
height: 70%;
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: center;
|
||
font-family: "Segoe UI", "Inter", "Roboto", sans-serif;
|
||
font-size: 3rem;
|
||
font-weight: 800;
|
||
color: currentColor;
|
||
opacity: 0.85;
|
||
|
||
}
|
||
/* --- 描述标签 (stat-label) --- */
|
||
.stat-label {
|
||
position: absolute;
|
||
z-index: 2;
|
||
bottom: 0;
|
||
left: 0;
|
||
width: 100%;
|
||
height: 30%;
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: center;
|
||
font-size: 0.75rem;
|
||
font-weight: 600;
|
||
text-transform: uppercase;
|
||
letter-spacing: 0.05em;
|
||
color: #4b5563;
|
||
}
|
||
/* --- 右侧图标 (stat-icon) --- */
|
||
.stat-icon {
|
||
position: absolute;
|
||
z-index: 2;
|
||
bottom: 0;
|
||
right: 0.75rem;
|
||
height: 30%;
|
||
align-content: center;
|
||
display: flex;
|
||
align-items: center;
|
||
|
||
font-size: 1.5rem;
|
||
opacity: 0.9;
|
||
transform: rotate(0deg);
|
||
transition: all 0.3s ease-in-out;
|
||
color: white;
|
||
}
|
||
.stat-item:hover .stat-icon {
|
||
opacity: 1;
|
||
transform: scale(1.1);
|
||
}
|
||
/* --- 主题颜色定义 --- */
|
||
.stat-primary { color: #459CEB; }
|
||
.stat-success { color: #49C65B; }
|
||
.stat-danger { color: #E81307; }
|
||
.stat-warning { color: #FCCC54; }
|
||
.stat-info { color: #06b6d4; }
|
||
.stat-info-rpm { color: #4EAAF6; font-size: 2.5rem; font-weight: 600;}
|
||
.stat-info-rph { color: #1F92F2; font-size: 2.5rem; font-weight: 600;}
|
||
.stat-info-rpd { color: #0D78D2; font-size: 2.5rem; font-weight: 600;}
|
||
.stat-info-rp30d { color: #0B5CA1; font-size: 2.5rem; font-weight: 600;}
|
||
|
||
|
||
/* --- 代码清理 --- */
|
||
.stat-item.stat-primary,
|
||
.stat-item.stat-success,
|
||
.stat-item.stat-danger,
|
||
.stat-item.stat-warning,
|
||
.stat-item.stat-info {
|
||
background-color: transparent !important;
|
||
}
|
||
|
||
|
||
/* 响应式调整 */
|
||
@media (max-width: 640px) {
|
||
.stats-dashboard {
|
||
gap: 1rem;
|
||
}
|
||
.stats-grid {
|
||
grid-template-columns: repeat(2, 1fr);
|
||
gap: 0.5rem;
|
||
padding: 0.5rem;
|
||
}
|
||
.stat-item {
|
||
padding: 0.5rem;
|
||
}
|
||
.stat-value {
|
||
font-size: 1.25rem;
|
||
}
|
||
.stat-label {
|
||
font-size: 0.625rem;
|
||
}
|
||
.stats-card-header {
|
||
padding: 0.5rem 0.75rem;
|
||
} /* Adjust header padding */
|
||
.key-content ul {
|
||
grid-template-columns: 1fr;
|
||
} /* Stack keys vertically on small screens */
|
||
}
|
||
/* Tailwind Toggle Switch Helper CSS */
|
||
.toggle-checkbox:checked {
|
||
@apply: right-0 border-blue-600;
|
||
right: 0;
|
||
border-color: #2563eb;
|
||
}
|
||
.toggle-checkbox:checked + .toggle-label {
|
||
@apply: bg-blue-600;
|
||
background-color: #2563eb;
|
||
}
|
||
|
||
/* Pagination Controls */
|
||
#validPaginationControls,
|
||
#invalidPaginationControls {
|
||
display: flex;
|
||
justify-content: center;
|
||
align-items: center;
|
||
margin-top: 1rem; /* mt-4 */
|
||
gap: 0.5rem; /* space-x-2 */
|
||
}
|
||
|
||
/* Ensure list items are flex for alignment */
|
||
#validKeys li,
|
||
#invalidKeys li {
|
||
display: flex;
|
||
align-items: flex-start; /* Align checkbox with top of content */
|
||
gap: 0.75rem; /* gap-3 */
|
||
}
|
||
/* Ensure grid layout for key lists */
|
||
#validKeys,
|
||
#invalidKeys {
|
||
display: grid;
|
||
grid-template-columns: 1fr; /* Default single column */
|
||
gap: 0.75rem; /* gap-3 */
|
||
}
|
||
@media (min-width: 768px) {
|
||
/* md breakpoint */
|
||
#validKeys,
|
||
#invalidKeys {
|
||
grid-template-columns: repeat(
|
||
2,
|
||
1fr
|
||
); /* Two columns on medium screens and up */
|
||
}
|
||
}
|
||
|
||
/* 修改密钥列表背景和卡片样式 */
|
||
.key-content {
|
||
background-color: rgba(249, 250, 251, 0.8) !important;
|
||
}
|
||
|
||
#validKeys li,
|
||
#invalidKeys li {
|
||
background-color: rgba(255, 255, 255, 0.9);
|
||
border: 1px solid rgba(0, 0, 0, 0.08);
|
||
transition: all 0.3s ease;
|
||
cursor: pointer;
|
||
position: relative;
|
||
padding-left: 2.5rem; /* 为自定义复选框留出空间 */
|
||
}
|
||
|
||
#validKeys li:hover,
|
||
#invalidKeys li:hover {
|
||
border-color: rgba(0, 0, 0, 0.12);
|
||
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
|
||
transform: translateY(-2px);
|
||
background-color: rgba(249, 250, 251, 0.95);
|
||
}
|
||
|
||
#validKeys li.selected,
|
||
#invalidKeys li.selected {
|
||
background-color: rgba(239, 246, 255, 0.95);
|
||
border-color: rgba(59, 130, 246, 0.3);
|
||
}
|
||
|
||
/* 隐藏原生复选框 */
|
||
.key-checkbox {
|
||
display: none;
|
||
}
|
||
|
||
/* 自定义复选框样式 */
|
||
#validKeys li::before,
|
||
#invalidKeys li::before {
|
||
content: "";
|
||
position: absolute;
|
||
left: 0.75rem;
|
||
top: 50%;
|
||
transform: translateY(-50%);
|
||
width: 1.25rem; /* 20px */
|
||
height: 1.25rem; /* 20px */
|
||
border: 2px solid rgba(156, 163, 175, 0.7); /* gray-400 */
|
||
border-radius: 0.375rem; /* 6px */
|
||
background-color: rgba(255, 255, 255, 0.9);
|
||
transition: all 0.2s ease-in-out;
|
||
}
|
||
|
||
#validKeys li.selected::before,
|
||
#invalidKeys li.selected::before {
|
||
background-color: #3b82f6; /* blue-500 */
|
||
border-color: #2563eb; /* blue-600 */
|
||
}
|
||
|
||
/* 自定义复选框对勾样式 */
|
||
#validKeys li.selected::after,
|
||
#invalidKeys li.selected::after {
|
||
content: "\f00c"; /* Font Awesome check icon */
|
||
font-family: "Font Awesome 5 Free";
|
||
font-weight: 900;
|
||
position: absolute;
|
||
left: calc(0.75rem + 0.3rem); /* 调整对勾位置 */
|
||
top: 50%;
|
||
transform: translateY(-50%) scale(0.9);
|
||
color: white;
|
||
font-size: 0.8rem;
|
||
}
|
||
|
||
.key-text {
|
||
color: #374151 !important; /* gray-700 for light theme */
|
||
text-shadow: none;
|
||
font-weight: 500;
|
||
}
|
||
|
||
/* 模态框背景色调整 - comprehensive modal styling */
|
||
#apiCallDetailsModal .bg-white,
|
||
#keyUsageDetailsModal .bg-white,
|
||
#resultModal .bg-white,
|
||
#resetModal .bg-white,
|
||
#verifyModal .bg-white,
|
||
.modal .bg-white {
|
||
background-color: rgba(255, 255, 255, 0.98) !important;
|
||
color: #374151 !important; /* gray-700 */
|
||
border-color: rgba(0, 0, 0, 0.08) !important;
|
||
box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04) !important;
|
||
}
|
||
|
||
/* 模态框标题颜色 */
|
||
#apiCallDetailsModalTitle,
|
||
#keyUsageDetailsModalTitle,
|
||
#resultModalTitle,
|
||
#resetModalTitle,
|
||
#verifyModalTitle {
|
||
color: #1f2937 !important; /* gray-800 */
|
||
text-shadow: none;
|
||
font-weight: 600;
|
||
}
|
||
|
||
/* 密钥使用详情模态框头部特定样式 */
|
||
#keyUsageDetailsModal .bg-white > div.border-b {
|
||
/* 针对头部区域的下边框 */
|
||
border-bottom-color: rgba(0, 0, 0, 0.12) !important;
|
||
}
|
||
|
||
/* 模态框消息文本颜色 */
|
||
#apiCallDetailsContent,
|
||
#keyUsageDetailsContent,
|
||
#resultModalMessage,
|
||
#resetModalMessage,
|
||
#verifyModalMessage {
|
||
color: #374151 !important; /* gray-700 */
|
||
}
|
||
|
||
/* 特定调整操作结果模态框的消息区域样式 */
|
||
#resultModalMessage {
|
||
background-color: rgba(255, 255, 255, 0.95) !important; /* 浅色背景 */
|
||
border-color: rgba(0, 0, 0, 0.08) !important; /* 浅色边框 */
|
||
color: #374151 !important; /* 深色文本 */
|
||
}
|
||
|
||
/* 批量验证结果中普通信息列表 (如成功密钥列表) 的浅色主题样式 */
|
||
#resultModalMessage ul[class*="bg-gray-50"] {
|
||
/* 针对特定灰色背景色的ul */
|
||
background-color: rgba(249, 250, 251, 0.95) !important; /* 浅灰色背景 */
|
||
border-color: rgba(0, 0, 0, 0.08) !important; /* 浅色边框 */
|
||
}
|
||
|
||
#resultModalMessage ul[class*="bg-gray-50"] li {
|
||
color: #374151 !important; /* 深色文本 */
|
||
}
|
||
|
||
/* 批量验证结果中失败列表的浅色主题样式 */
|
||
#resultModalMessage ul[class*="bg-red-50"] {
|
||
/* 针对特定背景色的ul */
|
||
background-color: rgba(254, 242, 242, 0.95) !important; /* 浅红色背景 */
|
||
border-color: rgba(239, 68, 68, 0.2) !important; /* 浅红色边框 */
|
||
}
|
||
|
||
/* 失败列表中的密钥文本 (如 AIza...lJ6E) */
|
||
#resultModalMessage ul[class*="bg-red-50"] li span.font-mono {
|
||
color: #dc2626 !important; /* 深红色文本 */
|
||
}
|
||
|
||
/* 失败列表中的 "收起/展开" 按钮 - 协调的红色主题设计 */
|
||
#resultModalMessage ul[class*="bg-red-50"] li button[class*="bg-red-200"] {
|
||
background-color: #dc2626 !important; /* 深红色按钮背景,与外框协调 */
|
||
color: #ffffff !important; /* 白色按钮文本 */
|
||
border: 1px solid #b91c1c !important; /* 更深的红色边框 */
|
||
box-shadow: none !important;
|
||
font-weight: 500 !important; /* 增强文字粗细以提高可读性 */
|
||
}
|
||
#resultModalMessage
|
||
ul[class*="bg-red-50"]
|
||
li
|
||
button[class*="bg-red-200"]:hover {
|
||
background-color: #b91c1c !important; /* 悬停时更深的红色背景 */
|
||
color: #ffffff !important; /* 悬停时白色按钮文本 */
|
||
transform: translateY(-1px) !important; /* 轻微上移效果 */
|
||
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1) !important; /* 悬停阴影效果 */
|
||
}
|
||
|
||
/* 失败列表中的错误详情框 - 与红色主题协调的样式 */
|
||
#resultModalMessage ul[class*="bg-red-50"] li div[id^="error-details-"] {
|
||
background-color: rgba(254, 242, 242, 0.8) !important; /* 更浅的红色背景,与外框协调 */
|
||
border-color: rgba(248, 113, 113, 0.3) !important; /* 浅红色边框 */
|
||
color: #7f1d1d !important; /* 深红色文本,确保良好对比度 */
|
||
font-weight: 500 !important; /* 增强文字粗细以提高可读性 */
|
||
line-height: 1.5 !important; /* 改善行高以提高可读性 */
|
||
}
|
||
|
||
/* 密钥使用详情模态框内表格表头样式 */
|
||
#keyUsageDetailsModal #keyUsageDetailsContent table th {
|
||
background-color: rgba(243, 244, 246, 0.95) !important; /* 浅灰色背景 */
|
||
border-bottom: 1px solid rgba(0, 0, 0, 0.08) !important; /* 浅色边框 */
|
||
color: #374151 !important; /* 深色文字 */
|
||
text-shadow: none; /* 移除文本阴影 */
|
||
}
|
||
|
||
/* 密钥使用详情模态框表格单元格样式已移除,使用默认颜色与API调用详情保持一致 */
|
||
|
||
/* 按钮文本颜色 */
|
||
.stats-card button {
|
||
color: #ffffff;
|
||
text-shadow: 0 1px 1px rgba(0, 0, 0, 0.2);
|
||
}
|
||
|
||
/* 表单控件背景 */
|
||
.form-input,
|
||
.form-select {
|
||
background-color: rgba(255, 255, 255, 0.95) !important;
|
||
color: #374151 !important; /* gray-700 */
|
||
border-color: rgba(0, 0, 0, 0.12) !important;
|
||
}
|
||
|
||
/* 标签文字颜色 */
|
||
.text-gray-500,
|
||
.text-gray-600,
|
||
.text-gray-700 {
|
||
color: #374151 !important; /* dark gray for light theme */
|
||
text-shadow: none;
|
||
}
|
||
|
||
/* 调整全局背景色,使之与白色背景更加协调 */
|
||
.glass-card {
|
||
background-color: rgba(255, 255, 255, 0.95) !important;
|
||
backdrop-filter: blur(10px);
|
||
-webkit-backdrop-filter: blur(10px);
|
||
border: 1px solid rgba(0, 0, 0, 0.08);
|
||
box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
|
||
}
|
||
|
||
/* 分页控件样式增强 */
|
||
.pagination-button {
|
||
background-color: rgba(255, 255, 255, 0.9);
|
||
color: #374151; /* gray-700 */
|
||
border: 1px solid rgba(0, 0, 0, 0.08);
|
||
text-shadow: none;
|
||
}
|
||
|
||
.pagination-button.active {
|
||
background-color: #3b82f6; /* blue-500 */
|
||
color: white;
|
||
border-color: #2563eb; /* blue-600 */
|
||
}
|
||
|
||
/* 状态标签增强 */
|
||
.inline-flex.items-center.px-2\.5.py-0\.5.rounded-full {
|
||
text-shadow: 0 1px 1px rgba(0, 0, 0, 0.2);
|
||
}
|
||
|
||
/* 按钮颜色增强 */
|
||
button.bg-success-600,
|
||
button.bg-blue-600,
|
||
button.bg-slate-500,
|
||
button.bg-purple-600,
|
||
button.bg-primary-700,
|
||
button.bg-teal-600 {
|
||
text-shadow: 0 1px 1px rgba(0, 0, 0, 0.2);
|
||
}
|
||
|
||
/* 复选框文本样式 */
|
||
input[type="checkbox"] + label {
|
||
color: #f1f5f9 !important;
|
||
text-shadow: 0 1px 1px rgba(0, 0, 0, 0.2);
|
||
}
|
||
|
||
/* 底部版权栏文本颜色修正 */
|
||
.fixed.bottom-0.left-0.w-full.py-3.bg-white .text-gray-200,
|
||
.fixed.bottom-0.left-0.w-full.py-3.bg-white .text-gray-300,
|
||
.fixed.bottom-0.left-0.w-full.py-3.bg-white .text-gray-400,
|
||
.fixed.bottom-0.left-0.w-full.py-3.bg-white .text-gray-500,
|
||
.fixed.bottom-0.left-0.w-full.py-3.bg-white .text-gray-600,
|
||
.fixed.bottom-0.left-0.w-full.py-3.bg-white .text-gray-700 {
|
||
color: #1f2937 !important; /* 使用更深的灰色提高对比度 */
|
||
text-shadow: none !important;
|
||
}
|
||
|
||
/* 导航链接悬停样式 - 优化以避免遮挡内容 */
|
||
.nav-link {
|
||
transition: all 0.2s ease-in-out;
|
||
position: relative;
|
||
z-index: 1; /* 确保不会遮挡重要内容 */
|
||
}
|
||
|
||
.nav-link:hover {
|
||
background-color: rgba(59, 130, 246, 0.1) !important; /* blue-500 light */
|
||
transform: scale(1.02); /* 使用缩放代替向上移动 */
|
||
box-shadow: 0 6px 12px rgba(0, 0, 0, 0.15); /* 增强阴影效果 */
|
||
}
|
||
|
||
/* 导航按钮容器样式 - 为悬停效果预留空间 */
|
||
.nav-buttons-container {
|
||
padding-top: 0.5rem; /* 为悬停效果预留上方空间 */
|
||
padding-bottom: 0.75rem; /* 为悬停效果预留下方空间 */
|
||
}
|
||
|
||
/* 主导航按钮的优化悬停效果 */
|
||
.main-nav-btn:hover {
|
||
transform: scale(1.02) !important; /* 使用缩放代替向上移动 */
|
||
box-shadow: 0 8px 16px rgba(59, 130, 246, 0.3) !important; /* 蓝色阴影 */
|
||
}
|
||
|
||
/* Active navigation tab */
|
||
.bg-violet-600 {
|
||
background-color: #3b82f6 !important; /* blue-500 */
|
||
color: #ffffff !important;
|
||
box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06) !important;
|
||
transform: translateY(-1px) !important;
|
||
border: 1px solid #2563eb !important; /* blue-600 */
|
||
}
|
||
|
||
.bg-violet-600:hover {
|
||
background-color: #2563eb !important; /* blue-600 */
|
||
transform: translateY(-2px) !important;
|
||
box-shadow: 0 6px 8px -1px rgba(0, 0, 0, 0.15), 0 4px 6px -1px rgba(0, 0, 0, 0.1) !important;
|
||
}
|
||
|
||
/* Fix page title gradient */
|
||
.text-transparent.bg-clip-text.bg-gradient-to-r.from-violet-400.to-pink-400 {
|
||
background: none !important;
|
||
color: #1f2937 !important; /* gray-800 */
|
||
-webkit-background-clip: unset !important;
|
||
background-clip: unset !important;
|
||
}
|
||
|
||
/* Fix refresh button */
|
||
.bg-white.bg-opacity-20 {
|
||
background-color: rgba(255, 255, 255, 0.9) !important;
|
||
color: #3b82f6 !important; /* blue-500 */
|
||
}
|
||
|
||
.bg-white.bg-opacity-20:hover {
|
||
background-color: rgba(255, 255, 255, 1) !important;
|
||
}
|
||
|
||
/* Fix batch actions area purple background */
|
||
#validBatchActions, #invalidBatchActions {
|
||
background-color: rgba(249, 250, 251, 0.95) !important; /* light gray */
|
||
border-color: rgba(0, 0, 0, 0.08) !important;
|
||
}
|
||
|
||
#validBatchActions .text-gray-200, #invalidBatchActions .text-gray-200 {
|
||
color: #374151 !important; /* dark gray */
|
||
}
|
||
|
||
/* Fix primary button colors */
|
||
.bg-primary-600, .bg-primary-700, .bg-primary-800 {
|
||
background-color: #3b82f6 !important; /* blue-500 */
|
||
}
|
||
|
||
.bg-primary-600:hover, .bg-primary-700:hover, .bg-primary-800:hover {
|
||
background-color: #2563eb !important; /* blue-600 */
|
||
}
|
||
|
||
/* Fix text-primary colors */
|
||
.text-primary-600 {
|
||
color: #3b82f6 !important; /* blue-500 */
|
||
}
|
||
|
||
/* Fix form input focus colors */
|
||
.focus\\:ring-primary-500:focus {
|
||
--tw-ring-color: rgba(59, 130, 246, 0.2) !important;
|
||
}
|
||
|
||
.focus\\:border-primary-500:focus {
|
||
border-color: #3b82f6 !important;
|
||
}
|
||
|
||
/* 新增:密钥列表内按钮背景和悬停颜色调整 */
|
||
/* 验证按钮 (绿色) */
|
||
#validKeys li button.bg-success-600,
|
||
#invalidKeys li button.bg-success-600 {
|
||
background-color: rgba(22, 163, 74, 0.65) !important;
|
||
border: 1px solid rgba(22, 163, 74, 0.85);
|
||
}
|
||
#validKeys li button.bg-success-600:hover,
|
||
#invalidKeys li button.bg-success-600:hover {
|
||
background-color: rgba(21, 128, 61, 0.75) !important;
|
||
border-color: rgba(21, 128, 61, 0.95);
|
||
}
|
||
|
||
/* 重置按钮 (加深灰色底,白色文字) */
|
||
#validKeys li button.bg-gray-500,
|
||
#invalidKeys li button.bg-gray-500 {
|
||
background-color: #6b7280 !important; /* gray-500 - 加深的灰色底 */
|
||
border: 1px solid #4b5563 !important; /* gray-600 */
|
||
color: #ffffff !important; /* white - 白色文字 */
|
||
}
|
||
#validKeys li button.bg-gray-500:hover,
|
||
#invalidKeys li button.bg-gray-500:hover {
|
||
background-color: #4b5563 !important; /* gray-600 - 更深的灰色 */
|
||
border-color: #374151 !important; /* gray-700 */
|
||
color: #ffffff !important; /* white - 白色文字 */
|
||
}
|
||
|
||
/* 复制按钮 (蓝色底色,白色文字) */
|
||
#validKeys li button.bg-blue-500,
|
||
#invalidKeys li button.bg-blue-500 {
|
||
background-color: #3b82f6 !important; /* blue-500 - 蓝色底 */
|
||
border: 1px solid #2563eb !important; /* blue-600 */
|
||
color: #ffffff !important; /* Keep white text as specified in HTML */
|
||
}
|
||
#validKeys li button.bg-blue-500:hover,
|
||
#invalidKeys li button.bg-blue-500:hover {
|
||
background-color: #2563eb !important; /* blue-600 - 深蓝色hover */
|
||
border-color: #1d4ed8 !important; /* blue-700 */
|
||
color: #ffffff !important; /* Keep white text on hover */
|
||
}
|
||
|
||
/* 详情按钮 (改为蓝色) */
|
||
#validKeys li button.bg-purple-600,
|
||
#invalidKeys li button.bg-purple-600 {
|
||
background-color: rgba(59, 130, 246, 0.8) !important; /* blue-500 */
|
||
border: 1px solid rgba(59, 130, 246, 0.9);
|
||
}
|
||
#validKeys li button.bg-purple-600:hover,
|
||
#invalidKeys li button.bg-purple-600:hover {
|
||
background-color: rgba(37, 99, 235, 0.9) !important; /* blue-600 */
|
||
border-color: rgba(37, 99, 235, 1);
|
||
}
|
||
|
||
/* 删除按钮 (鲜艳浅红色) - HTML中使用 bg-red-800 */
|
||
#validKeys li button.bg-red-800,
|
||
#invalidKeys li button.bg-red-800 {
|
||
background-color: #f87171 !important; /* red-400 - bright light red */
|
||
border: 1px solid #ef4444 !important; /* red-500 */
|
||
color: #ffffff !important; /* Ensure white text */
|
||
}
|
||
|
||
#validKeys li button.bg-red-800:hover,
|
||
#invalidKeys li button.bg-red-800:hover {
|
||
background-color: #ef4444 !important; /* red-500 - darker bright light red */
|
||
border-color: #dc2626 !important; /* red-600 */
|
||
}
|
||
|
||
/* Comprehensive purple to light theme conversion */
|
||
[style*="background-color: rgba(80, 60, 160"],
|
||
[style*="background-color: rgba(70, 50, 150"],
|
||
[style*="background-color: rgba(120, 100, 200"] {
|
||
background-color: rgba(255, 255, 255, 0.95) !important;
|
||
border-color: rgba(0, 0, 0, 0.08) !important;
|
||
color: #374151 !important;
|
||
}
|
||
|
||
/* Fix modal button colors - specific overrides for keys_status.html */
|
||
/* Blue buttons in modals */
|
||
.bg-blue-600, button.bg-blue-600,
|
||
.bg-blue-700, button.bg-blue-700 {
|
||
background-color: #3b82f6 !important; /* blue-500 - light blue */
|
||
}
|
||
|
||
.bg-blue-600:hover, button.bg-blue-600:hover,
|
||
.bg-blue-700:hover, button.bg-blue-700:hover,
|
||
.hover\\:bg-blue-700:hover, .hover\\:bg-blue-800:hover {
|
||
background-color: #2563eb !important; /* blue-600 - darker light blue */
|
||
}
|
||
|
||
/* Red buttons in modals */
|
||
.bg-red-700, button.bg-red-700,
|
||
.bg-red-800, button.bg-red-800 {
|
||
background-color: #f87171 !important; /* red-400 - bright light red */
|
||
}
|
||
|
||
.bg-red-700:hover, button.bg-red-700:hover,
|
||
.bg-red-800:hover, button.bg-red-800:hover,
|
||
.hover\\:bg-red-800:hover {
|
||
background-color: #ef4444 !important; /* red-500 - darker bright light red */
|
||
}
|
||
|
||
/* Primary buttons in modals */
|
||
.bg-primary-700, button.bg-primary-700,
|
||
.bg-primary-800, button.bg-primary-800 {
|
||
background-color: #3b82f6 !important; /* blue-500 - light blue */
|
||
}
|
||
|
||
.bg-primary-700:hover, button.bg-primary-700:hover,
|
||
.bg-primary-800:hover, button.bg-primary-800:hover,
|
||
.hover\\:bg-primary-800:hover {
|
||
background-color: #2563eb !important; /* blue-600 - darker light blue */
|
||
}
|
||
|
||
/* Teal buttons in modals (for verify button) */
|
||
.bg-teal-700, button.bg-teal-700,
|
||
.bg-teal-800, button.bg-teal-800 {
|
||
background-color: #3b82f6 !important; /* blue-500 - light blue (change teal to light blue) */
|
||
}
|
||
|
||
.bg-teal-700:hover, button.bg-teal-700:hover,
|
||
.bg-teal-800:hover, button.bg-teal-800:hover,
|
||
.hover\\:bg-teal-800:hover {
|
||
background-color: #2563eb !important; /* blue-600 - darker light blue */
|
||
}
|
||
|
||
/* Global slate/gray button color overrides - only for modal buttons */
|
||
/* Modal slate buttons should be light gray with dark text */
|
||
.modal .bg-slate-500, .modal button.bg-slate-500,
|
||
.modal .bg-slate-600, .modal button.bg-slate-600,
|
||
.modal .bg-slate-700, .modal button.bg-slate-700 {
|
||
background-color: #e5e7eb !important; /* gray-200 - light gray */
|
||
color: #374151 !important; /* gray-700 - dark text for contrast */
|
||
}
|
||
|
||
.modal .bg-slate-500:hover, .modal button.bg-slate-500:hover,
|
||
.modal .bg-slate-600:hover, .modal button.bg-slate-600:hover,
|
||
.modal .bg-slate-700:hover, .modal button.bg-slate-700:hover,
|
||
.modal .hover\\:bg-slate-600:hover, .modal .hover\\:bg-slate-700:hover {
|
||
background-color: #d1d5db !important; /* gray-300 - darker light gray */
|
||
color: #374151 !important; /* gray-700 - dark text for contrast */
|
||
}
|
||
|
||
/* Fix any remaining button text color issues */
|
||
.bg-blue-500, .bg-blue-600, .bg-blue-700,
|
||
.bg-red-500, .bg-red-600, .bg-red-700, .bg-red-800,
|
||
.bg-green-500, .bg-green-600, .bg-green-700,
|
||
.bg-sky-500, .bg-sky-600, .bg-sky-700,
|
||
.bg-purple-500, .bg-purple-600, .bg-purple-700,
|
||
.bg-primary-700, .bg-primary-800,
|
||
.bg-teal-700, .bg-teal-800 {
|
||
color: #ffffff !important;
|
||
}
|
||
|
||
/* Ensure button children inherit white text */
|
||
.bg-blue-500 *, .bg-blue-600 *, .bg-blue-700 *,
|
||
.bg-red-500 *, .bg-red-600 *, .bg-red-700 *, .bg-red-800 *,
|
||
.bg-green-500 *, .bg-green-600 *, .bg-green-700 *,
|
||
.bg-sky-500 *, .bg-sky-600 *, .bg-sky-700 *,
|
||
.bg-purple-500 *, .bg-purple-600 *, .bg-purple-700 * {
|
||
color: inherit !important;
|
||
}
|
||
|
||
/* Fix key action buttons styling */
|
||
#validKeys li button, #invalidKeys li button {
|
||
font-size: 0.75rem !important; /* text-xs */
|
||
padding: 0.25rem 0.5rem !important; /* px-2 py-1 */
|
||
border-radius: 0.375rem !important; /* rounded-md */
|
||
font-weight: 500 !important; /* font-medium */
|
||
transition: all 0.2s ease-in-out !important;
|
||
border: 1px solid transparent !important;
|
||
}
|
||
|
||
/* Verify button (green) */
|
||
#validKeys li button.bg-green-600,
|
||
#invalidKeys li button.bg-green-600 {
|
||
background-color: #16a34a !important; /* green-600 */
|
||
color: #ffffff !important;
|
||
border-color: #15803d !important; /* green-700 */
|
||
}
|
||
|
||
#validKeys li button.bg-green-600:hover,
|
||
#invalidKeys li button.bg-green-600:hover {
|
||
background-color: #15803d !important; /* green-700 */
|
||
transform: translateY(-1px) !important;
|
||
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1) !important;
|
||
}
|
||
|
||
/* Details button (light blue) */
|
||
#validKeys li button.bg-blue-600,
|
||
#invalidKeys li button.bg-blue-600 {
|
||
background-color: #3b82f6 !important; /* blue-500 - light blue */
|
||
color: #ffffff !important;
|
||
border-color: #2563eb !important; /* blue-600 */
|
||
}
|
||
|
||
#validKeys li button.bg-blue-600:hover,
|
||
#invalidKeys li button.bg-blue-600:hover {
|
||
background-color: #2563eb !important; /* blue-600 - darker light blue */
|
||
transform: translateY(-1px) !important;
|
||
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1) !important;
|
||
}
|
||
|
||
/* Disable/Enable button (yellow/orange) */
|
||
#validKeys li button.bg-yellow-500,
|
||
#invalidKeys li button.bg-yellow-500,
|
||
#validKeys li button.bg-orange-500,
|
||
#invalidKeys li button.bg-orange-500 {
|
||
background-color: #f59e0b !important; /* amber-500 */
|
||
color: #ffffff !important;
|
||
border-color: #d97706 !important; /* amber-600 */
|
||
}
|
||
|
||
#validKeys li button.bg-yellow-500:hover,
|
||
#invalidKeys li button.bg-yellow-500:hover,
|
||
#validKeys li button.bg-orange-500:hover,
|
||
#invalidKeys li button.bg-orange-500:hover {
|
||
background-color: #d97706 !important; /* amber-600 */
|
||
transform: translateY(-1px) !important;
|
||
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1) !important;
|
||
}
|
||
|
||
/* Fix pagination dropdown styling */
|
||
.pagination-controls select {
|
||
background-color: rgba(255, 255, 255, 0.95) !important;
|
||
color: #374151 !important; /* gray-700 */
|
||
border: 1px solid rgba(0, 0, 0, 0.12) !important;
|
||
border-radius: 0.375rem !important; /* rounded-md */
|
||
padding: 0.25rem 0.5rem !important;
|
||
font-size: 0.875rem !important; /* text-sm */
|
||
}
|
||
|
||
.pagination-controls select:focus {
|
||
border-color: #3b82f6 !important; /* blue-500 */
|
||
box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1) !important;
|
||
outline: none !important;
|
||
}
|
||
|
||
/* Fix pagination text */
|
||
.pagination-controls span, .pagination-controls label {
|
||
color: #374151 !important; /* gray-700 */
|
||
font-weight: 500 !important;
|
||
}
|
||
|
||
/* Fix specific pagination elements by ID and class */
|
||
#validKeysPageSize, #invalidKeysPageSize,
|
||
#itemsPerPageSelect, #invalidItemsPerPageSelect {
|
||
background-color: rgba(255, 255, 255, 0.95) !important;
|
||
color: #374151 !important; /* gray-700 */
|
||
border: 1px solid rgba(0, 0, 0, 0.12) !important;
|
||
border-radius: 0.375rem !important; /* rounded-md */
|
||
padding: 0.25rem 0.5rem !important;
|
||
font-size: 0.875rem !important; /* text-sm */
|
||
}
|
||
|
||
#validKeysPageSize:focus, #invalidKeysPageSize:focus,
|
||
#itemsPerPageSelect:focus, #invalidItemsPerPageSelect:focus {
|
||
border-color: #3b82f6 !important; /* blue-500 */
|
||
box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1) !important;
|
||
outline: none !important;
|
||
}
|
||
|
||
/* Fix pagination container text */
|
||
.flex.items-center.gap-2 span {
|
||
color: #374151 !important; /* gray-700 */
|
||
font-weight: 500 !important;
|
||
}
|
||
|
||
/* Fix any remaining form elements */
|
||
select, input[type="text"], input[type="number"] {
|
||
background-color: rgba(255, 255, 255, 0.95) !important;
|
||
color: #374151 !important; /* gray-700 */
|
||
border: 1px solid rgba(0, 0, 0, 0.12) !important;
|
||
}
|
||
|
||
select:focus, input[type="text"]:focus, input[type="number"]:focus {
|
||
border-color: #3b82f6 !important; /* blue-500 */
|
||
box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1) !important;
|
||
outline: none !important;
|
||
}
|
||
|
||
/* Comprehensive button text color fixes for all button states */
|
||
button.bg-success-600, button.bg-success-700,
|
||
button.bg-blue-600, button.bg-blue-700,
|
||
button.bg-purple-600, button.bg-purple-700,
|
||
button.bg-red-800, button.bg-red-900,
|
||
button.bg-teal-600, button.bg-teal-700,
|
||
button.bg-primary-700, button.bg-primary-800 {
|
||
color: #ffffff !important;
|
||
font-weight: 500 !important;
|
||
}
|
||
|
||
/* Slate buttons in modals use dark text on light background */
|
||
.modal button.bg-slate-500, .modal button.bg-slate-600, .modal button.bg-slate-700 {
|
||
color: #374151 !important; /* gray-700 - dark text for contrast */
|
||
font-weight: 500 !important;
|
||
}
|
||
|
||
/* Ensure button children (icons and text) inherit color */
|
||
button.bg-success-600 *, button.bg-success-700 *,
|
||
button.bg-blue-600 *, button.bg-blue-700 *,
|
||
button.bg-purple-600 *, button.bg-purple-700 *,
|
||
button.bg-red-800 *, button.bg-red-900 *,
|
||
button.bg-teal-600 *, button.bg-teal-700 *,
|
||
button.bg-primary-700 *, button.bg-primary-800 *,
|
||
button.bg-slate-500 *, button.bg-slate-600 *, button.bg-slate-700 * {
|
||
color: inherit !important;
|
||
}
|
||
|
||
/* Fix specific button text visibility issues */
|
||
.stats-card button, .key-content button {
|
||
text-shadow: 0 1px 1px rgba(0, 0, 0, 0.2) !important;
|
||
}
|
||
|
||
/* Fix specific label text visibility issues */
|
||
label[for="selectAllValid"],
|
||
label[for="selectAllInvalid"],
|
||
label[for="failCountThreshold"],
|
||
label[for="keySearchInput"],
|
||
label[for="itemsPerPageSelect"],
|
||
label[for="invalidFailCountThreshold"],
|
||
label[for="invalidKeySearchInput"],
|
||
label[for="invalidItemsPerPageSelect"] {
|
||
color: #1f2937 !important; /* gray-800 for maximum contrast */
|
||
font-weight: 600 !important; /* font-semibold for better visibility */
|
||
text-shadow: none !important;
|
||
}
|
||
|
||
/* Fix pagination and control text */
|
||
.pagination-controls span,
|
||
.pagination-controls label,
|
||
.stats-card-header span {
|
||
color: #1f2937 !important; /* gray-800 */
|
||
font-weight: 500 !important;
|
||
text-shadow: none !important;
|
||
}
|
||
#validKeys li button.bg-red-800:hover,
|
||
#invalidKeys li button.bg-red-800:hover {
|
||
background-color: rgba(153, 27, 27, 0.75) !important; /* Based on red-800 */
|
||
border-color: rgba(153, 27, 27, 0.95);
|
||
}
|
||
|
||
/* 新增:密钥列表内状态标签颜色调整 */
|
||
/* 有效标签 (绿色) - 改为更好的对比度 */
|
||
#validKeys li span.bg-success-50.text-success-600,
|
||
#invalidKeys li span.bg-success-50.text-success-600 {
|
||
background-color: rgba(34, 197, 94, 0.15) !important; /* green-500 with low opacity */
|
||
color: #16a34a !important; /* green-600 for better contrast on light background */
|
||
border: 1px solid rgba(22, 163, 74, 0.3) !important; /* green-600 border */
|
||
font-weight: 600 !important; /* Make text bolder for better readability */
|
||
text-shadow: none !important; /* Remove any text shadow */
|
||
}
|
||
|
||
/* 失败计数标签 (黄色) - 改为更好的对比度 */
|
||
#validKeys li span.bg-amber-50.text-amber-600,
|
||
#invalidKeys li span.bg-amber-50.text-amber-600 {
|
||
background-color: rgba(251, 191, 36, 0.15) !important; /* amber-400 with low opacity */
|
||
color: #d97706 !important; /* amber-600 for better contrast on light background */
|
||
border: 1px solid rgba(217, 119, 6, 0.3) !important; /* amber-600 border */
|
||
position: absolute; /* 移动到右下角 */
|
||
bottom: 0.75rem; /* 配合li的p-3内边距 */
|
||
right: 0.75rem;
|
||
z-index: 5; /* 确保在其他元素之上 */
|
||
font-weight: 600 !important; /* Make text bolder for better readability */
|
||
text-shadow: none !important; /* Remove any text shadow */
|
||
}
|
||
|
||
/* 无效标签 (红色) - for invalidKeys list */
|
||
#invalidKeys li span.bg-danger-50.text-danger-600 {
|
||
background-color: rgba(239, 68, 68, 0.08) !important; /* 更浅的背景色 */
|
||
color: #f87171 !important; /* 更浅的红色文字 */
|
||
border: 1px solid rgba(239, 68, 68, 0.15); /* 更浅的边框 */
|
||
font-weight: 600 !important; /* 加粗字体 */
|
||
}
|
||
|
||
/* Remove border from the last row's cells in API Call Details Modal table */
|
||
#apiCallDetailsContent table tr:last-child td {
|
||
border-bottom: none !important;
|
||
}
|
||
|
||
/* Restore success/failure status colors and icon colors within the API call details table */
|
||
#apiCallDetailsContent table td span[class*="text-success"],
|
||
#apiCallDetailsContent table td span[class*="success"] {
|
||
color: #6ee7b7 !important; /* Theme success green */
|
||
}
|
||
#apiCallDetailsContent table td span[class*="text-success"] i,
|
||
#apiCallDetailsContent table td span[class*="success"] i {
|
||
color: #6ee7b7 !important;
|
||
}
|
||
|
||
#apiCallDetailsContent table td span[class*="text-danger"],
|
||
#apiCallDetailsContent table td span[class*="failure"],
|
||
#apiCallDetailsContent table td span[class*="danger"] {
|
||
color: #fca5b3 !important; /* Theme failure red */
|
||
}
|
||
#apiCallDetailsContent table td span[class*="text-danger"] i,
|
||
#apiCallDetailsContent table td span[class*="failure"] i,
|
||
#apiCallDetailsContent table td span[class*="danger"] i {
|
||
color: #fca5b3 !important;
|
||
}
|
||
/* End of API Call Details Modal Specific Styling Adjustments */
|
||
|
||
/* 下拉菜单样式 */
|
||
.dropdown-menu {
|
||
position: absolute;
|
||
top: 100%;
|
||
right: 0;
|
||
background-color: rgba(255, 255, 255, 0.98);
|
||
border: 1px solid rgba(0, 0, 0, 0.08);
|
||
border-radius: 0.5rem;
|
||
box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);
|
||
min-width: 200px;
|
||
z-index: 1000;
|
||
opacity: 0;
|
||
visibility: hidden;
|
||
transform: translateY(-10px);
|
||
transition: all 0.2s ease-in-out;
|
||
}
|
||
|
||
.dropdown-menu.show {
|
||
opacity: 1;
|
||
visibility: visible;
|
||
transform: translateY(0);
|
||
}
|
||
|
||
.dropdown-item {
|
||
display: flex;
|
||
align-items: center;
|
||
gap: 0.75rem;
|
||
padding: 0.75rem 1rem;
|
||
color: #374151;
|
||
text-decoration: none;
|
||
transition: all 0.2s ease-in-out;
|
||
cursor: pointer;
|
||
border: none;
|
||
background: none;
|
||
width: 100%;
|
||
text-align: left;
|
||
font-size: 0.875rem;
|
||
}
|
||
|
||
.dropdown-item:hover {
|
||
background-color: rgba(59, 130, 246, 0.1);
|
||
color: #3b82f6;
|
||
}
|
||
|
||
.dropdown-item:first-child {
|
||
border-top-left-radius: 0.5rem;
|
||
border-top-right-radius: 0.5rem;
|
||
}
|
||
|
||
.dropdown-item:last-child {
|
||
border-bottom-left-radius: 0.5rem;
|
||
border-bottom-right-radius: 0.5rem;
|
||
}
|
||
|
||
.dropdown-item i {
|
||
width: 1rem;
|
||
text-align: center;
|
||
}
|
||
|
||
.dropdown-toggle {
|
||
position: relative;
|
||
}
|
||
|
||
/* config_editor.html specific styles */
|
||
/* Animations (already in base.html, but keep fade-in class usage) */
|
||
.fade-in {
|
||
animation: fadeIn 0.3s ease forwards;
|
||
}
|
||
/* Modal specific styles (already in base.html) */
|
||
.array-container {
|
||
max-height: 300px;
|
||
overflow-y: auto;
|
||
padding: 1rem; /* p-4 consistency */
|
||
margin-bottom: 0.5rem; /* mb-2 consistency */
|
||
background-color: rgba(255, 255, 255, 0.95) !important; /* light theme */
|
||
border: 1px solid rgba(0, 0, 0, 0.12) !important; /* light gray border */
|
||
color: #374151 !important; /* gray-700 for light theme */
|
||
border-radius: 0.5rem; /* rounded-lg consistency */
|
||
}
|
||
#API_KEYS_container {
|
||
/* Keep specific ID styling if needed */
|
||
max-height: 300px;
|
||
overflow-y: auto;
|
||
}
|
||
.config-section {
|
||
display: none;
|
||
/* theming: new background and border for sections */
|
||
background-color: rgba(255, 255, 255, 0.95);
|
||
backdrop-filter: blur(5px);
|
||
-webkit-backdrop-filter: blur(5px);
|
||
border: 1px solid rgba(0, 0, 0, 0.08);
|
||
border-radius: 0.75rem; /* rounded-xl */
|
||
padding: 1.5rem; /* p-6 */
|
||
margin-bottom: 1.5rem; /* mb-6 */
|
||
box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1),
|
||
0 2px 4px -1px rgba(0, 0, 0, 0.06); /* shadow-lg */
|
||
}
|
||
.config-section.active {
|
||
display: block;
|
||
animation: fadeIn 0.3s ease forwards; /* Use base animation */
|
||
}
|
||
.provider-config {
|
||
display: none;
|
||
}
|
||
.provider-config.active {
|
||
display: block;
|
||
}
|
||
/* Tailwind Toggle Switch Helper CSS */
|
||
.toggle-checkbox:checked {
|
||
@apply: right-0 border-blue-600; /* theming: changed to blue for light theme */
|
||
right: 0;
|
||
border-color: #2563eb; /* theming: blue-600 */
|
||
}
|
||
.toggle-checkbox:checked + .toggle-label {
|
||
@apply: bg-blue-600; /* theming: changed to blue for light theme */
|
||
background-color: #2563eb; /* theming: blue-600 */
|
||
}
|
||
.toggle-label {
|
||
/* theming: style for unchecked state */
|
||
background-color: rgba(156, 163, 175, 0.3); /* gray-400 */
|
||
}
|
||
/* 统一通知样式为黑色半透明,确保与 keys_status 一致 */
|
||
.notification {
|
||
background: rgba(0, 0, 0, 0.8) !important;
|
||
color: #fff !important;
|
||
}
|
||
|
||
/* Theming for input fields - 修复边框重影问题 */
|
||
.form-input-themed {
|
||
background-color: rgba(255, 255, 255, 0.95) !important;
|
||
border: 1px solid rgba(0, 0, 0, 0.12) !important; /* 为独立输入框提供边框 */
|
||
color: #374151 !important; /* gray-700 */
|
||
outline: none !important; /* 移除默认outline */
|
||
box-shadow: none !important; /* 移除默认box-shadow */
|
||
transition: border-color 0.15s ease-in-out !important;
|
||
}
|
||
.form-input-themed::placeholder {
|
||
color: #9ca3af !important; /* gray-400 */
|
||
}
|
||
.form-input-themed:focus {
|
||
border-color: #3b82f6 !important; /* focus时改变边框颜色 */
|
||
box-shadow: none !important; /* 移除focus阴影,只保留边框变化 */
|
||
outline: none !important; /* 确保没有outline */
|
||
}
|
||
|
||
/* 对于在包装器内的输入框,移除边框 */
|
||
.flex.items-center .form-input-themed,
|
||
.array-container .form-input-themed {
|
||
border: none !important; /* 在包装器内的输入框移除边框 */
|
||
}
|
||
|
||
.flex.items-center .form-input-themed:focus,
|
||
.array-container .form-input-themed:focus {
|
||
border: none !important; /* 确保focus时也没有边框 */
|
||
}
|
||
|
||
/* Theming for select fields - 改进下拉框样式 */
|
||
.form-select-themed {
|
||
background-color: rgba(255, 255, 255, 0.95) !important; /* 白色背景 */
|
||
border: 1px solid rgba(0, 0, 0, 0.12) !important; /* 灰色边框 */
|
||
color: #374151 !important; /* gray-700 文字颜色 */
|
||
background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M6 8l4 4 4-4'/%3e%3c/svg%3e") !important; /* 灰色箭头 */
|
||
appearance: none !important;
|
||
padding: 0.6rem 2.5rem 0.6rem 0.8rem !important; /* 调整内边距 */
|
||
background-repeat: no-repeat !important;
|
||
background-position: right 0.6rem center !important;
|
||
background-size: 1.5em 1.5em !important;
|
||
border-radius: 0.5rem !important; /* 圆角 */
|
||
font-weight: 500 !important; /* 半粗体 */
|
||
height: auto !important; /* 自动高度 */
|
||
box-shadow: none !important; /* 移除阴影 */
|
||
cursor: pointer !important;
|
||
}
|
||
|
||
.form-select-themed:focus {
|
||
border-color: #3b82f6 !important; /* blue-500 */
|
||
box-shadow: none !important; /* 移除focus阴影 */
|
||
outline: none !important;
|
||
}
|
||
|
||
.form-select-themed option {
|
||
background-color: rgba(
|
||
255,
|
||
255,
|
||
255,
|
||
0.98
|
||
) !important; /* white background */
|
||
color: #374151 !important; /* gray-700 */
|
||
padding: 8px !important;
|
||
}
|
||
|
||
/* 日志级别样式 - 浅色主题统一设计 */
|
||
#LOG_LEVEL {
|
||
font-weight: 600 !important;
|
||
}
|
||
|
||
/* 统一的日志级别选项样式 - 使用浅色主题 */
|
||
#LOG_LEVEL option[value="DEBUG"] {
|
||
background-color: rgba(255, 255, 255, 0.98) !important; /* 白色背景 */
|
||
color: #374151 !important; /* gray-700 深灰色文字 */
|
||
}
|
||
|
||
#LOG_LEVEL option[value="INFO"] {
|
||
background-color: rgba(
|
||
249,
|
||
250,
|
||
251,
|
||
0.98
|
||
) !important; /* gray-50 浅灰背景 */
|
||
color: #374151 !important; /* gray-700 深灰色文字 */
|
||
}
|
||
|
||
#LOG_LEVEL option[value="WARNING"] {
|
||
background-color: rgba(
|
||
243,
|
||
244,
|
||
246,
|
||
0.98
|
||
) !important; /* gray-100 稍深灰背景 */
|
||
color: #374151 !important; /* gray-700 深灰色文字 */
|
||
}
|
||
|
||
#LOG_LEVEL option[value="ERROR"] {
|
||
background-color: rgba(
|
||
229,
|
||
231,
|
||
235,
|
||
0.98
|
||
) !important; /* gray-200 中灰背景 */
|
||
color: #374151 !important; /* gray-700 深灰色文字 */
|
||
}
|
||
|
||
#LOG_LEVEL option[value="CRITICAL"] {
|
||
background-color: rgba(
|
||
209,
|
||
213,
|
||
219,
|
||
0.98
|
||
) !important; /* gray-300 深灰背景 */
|
||
color: #374151 !important; /* gray-700 深灰色文字 */
|
||
}
|
||
|
||
/* 思考模型预算映射样式 */
|
||
.map-item {
|
||
background-color: rgba(60, 40, 130, 0.2) !important;
|
||
border-radius: 0.5rem !important;
|
||
padding: 0.5rem !important;
|
||
border: 1px solid rgba(167, 139, 250, 0.3) !important;
|
||
transition: all 0.2s ease-in-out !important;
|
||
}
|
||
|
||
.map-item:hover {
|
||
background-color: rgba(60, 40, 130, 0.3) !important;
|
||
border-color: rgba(167, 139, 250, 0.5) !important;
|
||
}
|
||
|
||
.map-key-input {
|
||
background-color: rgba(255, 255, 255, 0.95) !important;
|
||
border: 1px solid rgba(0, 0, 0, 0.12) !important;
|
||
color: #374151 !important; /* gray-700 */
|
||
font-weight: 500 !important;
|
||
border-radius: 0.375rem !important;
|
||
}
|
||
|
||
.map-value-input {
|
||
background-color: rgba(255, 255, 255, 0.95) !important;
|
||
border: 1px solid rgba(0, 0, 0, 0.12) !important;
|
||
color: #374151 !important; /* gray-700 */
|
||
font-weight: 600 !important;
|
||
border-radius: 0.375rem !important;
|
||
box-shadow: none !important;
|
||
transition: all 0.2s !important;
|
||
}
|
||
|
||
.map-value-input:focus {
|
||
background-color: rgba(255, 255, 255, 1) !important;
|
||
border-color: #3b82f6 !important; /* blue-500 */
|
||
box-shadow: none !important; /* 移除focus阴影 */
|
||
outline: none !important;
|
||
}
|
||
|
||
/* 警告文字样式 */
|
||
.warning-text {
|
||
color: #f87171 !important; /* red-400 */
|
||
font-weight: 600 !important;
|
||
background-color: rgba(248, 113, 113, 0.15) !important;
|
||
padding: 0.5rem 0.75rem !important;
|
||
border-radius: 0.375rem !important;
|
||
border-left: 3px solid #ef4444 !important; /* red-500 */
|
||
display: flex !important;
|
||
align-items: center !important;
|
||
margin-top: 0.5rem !important;
|
||
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1) !important;
|
||
}
|
||
|
||
.warning-text i {
|
||
margin-right: 0.5rem !important;
|
||
color: #ef4444 !important; /* red-500 */
|
||
}
|
||
|
||
/* 令牌生成按钮样式 */
|
||
.generate-btn {
|
||
background-color: rgba(59, 130, 246, 0.1) !important; /* blue-500 light */
|
||
color: #3b82f6 !important; /* blue-500 */
|
||
border: 1px solid rgba(59, 130, 246, 0.3) !important;
|
||
border-left: none !important;
|
||
transition: all 0.2s ease !important;
|
||
}
|
||
|
||
.generate-btn:hover {
|
||
background-color: rgba(
|
||
59,
|
||
130,
|
||
246,
|
||
0.2
|
||
) !important; /* blue-500 more opaque */
|
||
color: #1d4ed8 !important; /* blue-700 */
|
||
box-shadow: 0 0 8px rgba(59, 130, 246, 0.3) !important;
|
||
}
|
||
|
||
.generate-btn:focus {
|
||
outline: none !important;
|
||
box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.5) !important;
|
||
}
|
||
|
||
/* 导航链接悬停样式 - 优化以避免遮挡内容 */
|
||
.nav-link {
|
||
transition: all 0.2s ease-in-out;
|
||
position: relative;
|
||
z-index: 1; /* 确保不会遮挡重要内容 */
|
||
}
|
||
|
||
.nav-link:hover {
|
||
background-color: rgba(59, 130, 246, 0.1) !important; /* blue-500 light */
|
||
transform: scale(1.02); /* 使用缩放代替向上移动 */
|
||
box-shadow: 0 6px 12px rgba(0, 0, 0, 0.15); /* 增强阴影效果 */
|
||
}
|
||
|
||
/* 导航按钮容器样式 - 为悬停效果预留空间 */
|
||
.nav-buttons-container {
|
||
padding-top: 0.5rem; /* 为悬停效果预留上方空间 */
|
||
padding-bottom: 0.75rem; /* 为悬停效果预留下方空间 */
|
||
}
|
||
|
||
/* 主导航按钮的优化悬停效果 */
|
||
.main-nav-btn:hover {
|
||
transform: scale(1.02) !important; /* 使用缩放代替向上移动 */
|
||
box-shadow: 0 8px 16px rgba(59, 130, 246, 0.3) !important; /* 蓝色阴影 */
|
||
}
|
||
|
||
/* 操作按钮的优化悬停效果 */
|
||
.action-btn {
|
||
position: relative;
|
||
z-index: 1;
|
||
}
|
||
|
||
.action-btn:hover {
|
||
transform: scale(1.02) !important; /* 使用缩放代替向上移动 */
|
||
}
|
||
|
||
.action-btn:hover#saveBtn {
|
||
box-shadow: 0 8px 20px rgba(59, 130, 246, 0.4) !important; /* 蓝色阴影 */
|
||
}
|
||
|
||
.action-btn:hover#resetBtn {
|
||
box-shadow: 0 8px 20px rgba(107, 114, 128, 0.4) !important; /* 灰色阴影 */
|
||
}
|
||
|
||
/* 刷新按钮样式 - 与监控面板页面保持一致 */
|
||
.bg-white.bg-opacity-20 {
|
||
background-color: rgba(255, 255, 255, 0.9) !important;
|
||
color: #3b82f6 !important; /* blue-500 - 与监控面板一致 */
|
||
}
|
||
|
||
.bg-white.bg-opacity-20:hover {
|
||
background-color: rgba(255, 255, 255, 1) !important;
|
||
color: #2563eb !important; /* blue-600 - 悬停时稍深 */
|
||
}
|
||
|
||
/* General label and small text theming for light theme */
|
||
label {
|
||
color: #374151 !important; /* Dark gray for labels in light theme */
|
||
font-weight: 600; /* semibold */
|
||
}
|
||
small {
|
||
color: #6b7280 !important; /* Medium gray for small text */
|
||
}
|
||
|
||
/* Override all violet/purple buttons to light blue */
|
||
.bg-violet-600,
|
||
button.bg-violet-600 {
|
||
background-color: #3b82f6 !important; /* blue-500 - light blue */
|
||
}
|
||
|
||
.bg-violet-600:hover,
|
||
button.bg-violet-600:hover,
|
||
.hover\\:bg-violet-700:hover {
|
||
background-color: #2563eb !important; /* blue-600 - darker light blue */
|
||
}
|
||
|
||
/* Override blue buttons to light blue */
|
||
.bg-blue-600,
|
||
button.bg-blue-600 {
|
||
background-color: #3b82f6 !important; /* blue-500 - light blue */
|
||
}
|
||
|
||
.bg-blue-600:hover,
|
||
button.bg-blue-600:hover,
|
||
.hover\\:bg-blue-700:hover {
|
||
background-color: #2563eb !important; /* blue-600 - darker light blue */
|
||
}
|
||
|
||
/* Override red buttons to bright light red */
|
||
.bg-red-600,
|
||
button.bg-red-600,
|
||
.bg-red-700,
|
||
button.bg-red-700,
|
||
.bg-red-800,
|
||
button.bg-red-800 {
|
||
background-color: #f87171 !important; /* red-400 - bright light red */
|
||
}
|
||
|
||
.bg-red-600:hover,
|
||
button.bg-red-600:hover,
|
||
.bg-red-700:hover,
|
||
button.bg-red-700:hover,
|
||
.bg-red-800:hover,
|
||
button.bg-red-800:hover,
|
||
.hover\\:bg-red-700:hover,
|
||
.hover\\:bg-red-800:hover {
|
||
background-color: #ef4444 !important; /* red-500 - darker bright light red */
|
||
}
|
||
|
||
/* Update section headings */
|
||
.config-section h2 {
|
||
color: #1f2937 !important; /* gray-800 */
|
||
border-color: #d1d5db !important; /* gray-300 */
|
||
}
|
||
|
||
.config-section h2 i {
|
||
color: #3b82f6 !important; /* blue-500 */
|
||
}
|
||
|
||
/* Update tab button active state - 增强选中态样式,提高优先级 */
|
||
button.tab-btn.active {
|
||
background-color: #3b82f6 !important; /* blue-500 */
|
||
color: #ffffff !important; /* 确保白色文字 */
|
||
box-shadow: 0 4px 12px -2px rgba(59, 130, 246, 0.4),
|
||
0 2px 6px -1px rgba(59, 130, 246, 0.2) !important; /* 蓝色阴影 */
|
||
transform: translateY(-2px) !important; /* 更明显的上移效果 */
|
||
border: 2px solid #2563eb !important; /* blue-600 边框 */
|
||
font-weight: 600 !important; /* 加粗字体 */
|
||
}
|
||
|
||
/* Ensure inactive tabs have proper styling - 增强未选中态样式,提高优先级 */
|
||
button.tab-btn:not(.active) {
|
||
background-color: #f8fafc !important; /* slate-50 更浅的背景 */
|
||
color: #64748b !important; /* slate-500 更明显的灰色文字 */
|
||
border: 2px solid #e2e8f0 !important; /* slate-200 边框 */
|
||
box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1) !important; /* 轻微阴影 */
|
||
font-weight: 500 !important; /* 中等字体粗细 */
|
||
}
|
||
|
||
button.tab-btn:not(.active):hover {
|
||
background-color: #f1f5f9 !important; /* slate-100 */
|
||
color: #475569 !important; /* slate-600 更深的文字颜色 */
|
||
transform: translateY(-1px) !important;
|
||
border-color: #cbd5e1 !important; /* slate-300 */
|
||
box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1) !important;
|
||
}
|
||
|
||
/* Add transition for smooth state changes - 提高优先级 */
|
||
button.tab-btn {
|
||
transition: all 0.2s ease-in-out !important;
|
||
cursor: pointer !important;
|
||
/* 确保基础样式不被Tailwind覆盖 */
|
||
padding: 0.5rem 1.25rem !important; /* px-5 py-2 */
|
||
border-radius: 9999px !important; /* rounded-full */
|
||
font-size: 0.875rem !important; /* text-sm */
|
||
font-weight: 500 !important; /* font-medium */
|
||
}
|
||
|
||
/* 额外的高优先级规则确保样式生效 */
|
||
.flex.justify-center.mb-6.flex-wrap.gap-2 button.tab-btn.active {
|
||
background-color: #3b82f6 !important;
|
||
color: #ffffff !important;
|
||
border: 2px solid #2563eb !important;
|
||
box-shadow: 0 4px 12px -2px rgba(59, 130, 246, 0.4),
|
||
0 2px 6px -1px rgba(59, 130, 246, 0.2) !important;
|
||
transform: translateY(-2px) !important;
|
||
font-weight: 600 !important;
|
||
}
|
||
|
||
.flex.justify-center.mb-6.flex-wrap.gap-2 button.tab-btn:not(.active) {
|
||
background-color: #f8fafc !important;
|
||
color: #64748b !important;
|
||
border: 2px solid #e2e8f0 !important;
|
||
box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1) !important;
|
||
font-weight: 500 !important;
|
||
transform: none !important;
|
||
}
|
||
|
||
/* Fix all modal backgrounds - comprehensive override */
|
||
.modal .w-full[style*="background-color: rgba(70, 50, 150"],
|
||
.modal .w-full.max-w-lg[style*="background-color: rgba(70, 50, 150"],
|
||
.modal .w-full.max-w-md[style*="background-color: rgba(70, 50, 150"] {
|
||
background-color: rgba(255, 255, 255, 0.98) !important;
|
||
color: #374151 !important; /* gray-700 */
|
||
border-color: rgba(0, 0, 0, 0.08) !important;
|
||
box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1),
|
||
0 10px 10px -5px rgba(0, 0, 0, 0.04) !important;
|
||
}
|
||
|
||
/* Fix modal titles */
|
||
.modal h2.text-gray-800 {
|
||
color: #1f2937 !important; /* gray-800 */
|
||
font-weight: 600 !important;
|
||
}
|
||
|
||
/* Fix modal close buttons */
|
||
.modal .text-gray-300 {
|
||
color: #6b7280 !important; /* gray-500 */
|
||
}
|
||
|
||
.modal .text-gray-300:hover {
|
||
color: #374151 !important; /* gray-700 */
|
||
}
|
||
|
||
/* Fix modal body text */
|
||
.modal p,
|
||
.modal label,
|
||
.modal span {
|
||
color: #374151 !important; /* gray-700 */
|
||
}
|
||
|
||
/* Fix modal textarea and input styling */
|
||
.modal textarea,
|
||
.modal input {
|
||
background-color: rgba(255, 255, 255, 0.95) !important;
|
||
color: #374151 !important; /* gray-700 */
|
||
border: 1px solid rgba(0, 0, 0, 0.12) !important;
|
||
}
|
||
|
||
.modal textarea:focus,
|
||
.modal input:focus {
|
||
border-color: #3b82f6 !important; /* blue-500 */
|
||
box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1) !important;
|
||
}
|
||
|
||
/* Fix modal button styling */
|
||
.modal .bg-violet-600,
|
||
.modal button.bg-violet-600 {
|
||
background-color: #3b82f6 !important; /* blue-500 - light blue */
|
||
color: #ffffff !important;
|
||
border: 1px solid #2563eb !important; /* blue-600 */
|
||
}
|
||
|
||
.modal .bg-violet-600:hover,
|
||
.modal button.bg-violet-600:hover {
|
||
background-color: #2563eb !important; /* blue-600 - darker light blue */
|
||
transform: translateY(-1px) !important;
|
||
box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1) !important;
|
||
}
|
||
|
||
/* Fix modal blue button styling */
|
||
.modal .bg-blue-500,
|
||
.modal button.bg-blue-500,
|
||
.modal .bg-blue-600,
|
||
.modal button.bg-blue-600,
|
||
.modal .bg-blue-700,
|
||
.modal button.bg-blue-700 {
|
||
background-color: #3b82f6 !important; /* blue-500 - light blue */
|
||
color: #ffffff !important;
|
||
border: 1px solid #2563eb !important; /* blue-600 */
|
||
}
|
||
|
||
.modal .bg-blue-500:hover,
|
||
.modal button.bg-blue-500:hover,
|
||
.modal .bg-blue-600:hover,
|
||
.modal button.bg-blue-600:hover,
|
||
.modal .bg-blue-700:hover,
|
||
.modal button.bg-blue-700:hover {
|
||
background-color: #2563eb !important; /* blue-600 - darker light blue */
|
||
transform: translateY(-1px) !important;
|
||
box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1) !important;
|
||
}
|
||
|
||
/* Fix modal cancel/secondary buttons */
|
||
.modal .bg-gray-500,
|
||
.modal button.bg-gray-500,
|
||
.modal .bg-gray-600,
|
||
.modal button.bg-gray-600 {
|
||
background-color: #e5e7eb !important; /* gray-200 - light gray */
|
||
color: #374151 !important; /* gray-700 - dark text for contrast */
|
||
border: 1px solid #d1d5db !important; /* gray-300 */
|
||
}
|
||
|
||
.modal .bg-gray-500:hover,
|
||
.modal button.bg-gray-500:hover,
|
||
.modal .bg-gray-600:hover,
|
||
.modal button.bg-gray-600:hover {
|
||
background-color: #d1d5db !important; /* gray-300 - darker light gray */
|
||
color: #374151 !important; /* gray-700 - dark text for contrast */
|
||
transform: translateY(-1px) !important;
|
||
box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1) !important;
|
||
}
|
||
|
||
/* Fix modal red/danger buttons */
|
||
.modal .bg-red-500,
|
||
.modal button.bg-red-500,
|
||
.modal .bg-red-600,
|
||
.modal button.bg-red-600,
|
||
.modal .bg-red-700,
|
||
.modal button.bg-red-700 {
|
||
background-color: #f87171 !important; /* red-400 - bright light red */
|
||
color: #ffffff !important;
|
||
border: 1px solid #ef4444 !important; /* red-500 */
|
||
}
|
||
|
||
.modal .bg-red-500:hover,
|
||
.modal button.bg-red-500:hover,
|
||
.modal .bg-red-600:hover,
|
||
.modal button.bg-red-600:hover,
|
||
.modal .bg-red-700:hover,
|
||
.modal button.bg-red-700:hover {
|
||
background-color: #ef4444 !important; /* red-500 - darker bright light red */
|
||
transform: translateY(-1px) !important;
|
||
box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1) !important;
|
||
}
|
||
|
||
/* Fix all container backgrounds with purple */
|
||
[style*="background-color: rgba(255, 255, 255, 0.05)"],
|
||
[style*="background-color: rgba(80, 60, 160"],
|
||
[style*="background-color: rgba(70, 50, 150"],
|
||
[style*="background-color: rgba(60, 40, 130"],
|
||
[style*="background-color: rgba(120, 100, 200"] {
|
||
background-color: rgba(255, 255, 255, 0.95) !important;
|
||
border-color: rgba(0, 0, 0, 0.08) !important;
|
||
color: #374151 !important;
|
||
}
|
||
|
||
/* Fix map item styling */
|
||
.map-item {
|
||
background-color: rgba(249, 250, 251, 0.8) !important; /* gray-50 */
|
||
border: 1px solid rgba(0, 0, 0, 0.08) !important;
|
||
color: #374151 !important;
|
||
}
|
||
|
||
.map-item:hover {
|
||
background-color: rgba(243, 244, 246, 1) !important; /* gray-100 */
|
||
border-color: rgba(0, 0, 0, 0.12) !important;
|
||
}
|
||
|
||
/* Update model helper buttons */
|
||
.model-helper-trigger-btn {
|
||
color: #3b82f6 !important; /* blue-500 */
|
||
background-color: rgba(59, 130, 246, 0.1) !important;
|
||
}
|
||
|
||
.model-helper-trigger-btn:hover {
|
||
background-color: rgba(59, 130, 246, 0.2) !important;
|
||
color: #1d4ed8 !important; /* blue-700 */
|
||
}
|
||
|
||
/* Comprehensive button text color fixes */
|
||
.bg-blue-500,
|
||
.bg-blue-600,
|
||
.bg-blue-700,
|
||
.bg-red-500,
|
||
.bg-red-600,
|
||
.bg-red-700,
|
||
.bg-red-800,
|
||
.bg-green-500,
|
||
.bg-green-600,
|
||
.bg-green-700,
|
||
.bg-sky-500,
|
||
.bg-sky-600,
|
||
.bg-sky-700,
|
||
.bg-purple-500,
|
||
.bg-purple-600,
|
||
.bg-purple-700,
|
||
.bg-violet-500,
|
||
.bg-violet-600,
|
||
.bg-violet-700 {
|
||
color: #ffffff !important;
|
||
}
|
||
|
||
/* Ensure button children inherit white text */
|
||
.bg-blue-500 *,
|
||
.bg-blue-600 *,
|
||
.bg-blue-700 *,
|
||
.bg-red-500 *,
|
||
.bg-red-600 *,
|
||
.bg-red-700 *,
|
||
.bg-red-800 *,
|
||
.bg-green-500 *,
|
||
.bg-green-600 *,
|
||
.bg-green-700 *,
|
||
.bg-sky-500 *,
|
||
.bg-sky-600 *,
|
||
.bg-sky-700 *,
|
||
.bg-purple-500 *,
|
||
.bg-purple-600 *,
|
||
.bg-purple-700 *,
|
||
.bg-violet-500 *,
|
||
.bg-violet-600 *,
|
||
.bg-violet-700 * {
|
||
color: inherit !important;
|
||
}
|
||
|
||
/* Fix page title gradient - comprehensive override */
|
||
h1.text-transparent,
|
||
.text-transparent.bg-clip-text,
|
||
.bg-gradient-to-r.from-violet-400.to-pink-400 {
|
||
background: none !important;
|
||
color: #1f2937 !important; /* gray-800 - consistent with other pages */
|
||
-webkit-background-clip: unset !important;
|
||
background-clip: unset !important;
|
||
text-shadow: none !important;
|
||
font-weight: 800 !important; /* font-extrabold */
|
||
}
|
||
|
||
/* Fix all gradient buttons to use solid blue */
|
||
.bg-gradient-to-r.from-violet-500.to-pink-500,
|
||
.bg-gradient-to-r.from-gray-600.to-gray-700 {
|
||
background: none !important;
|
||
}
|
||
|
||
/* Ensure all violet/purple colors are converted to blue theme */
|
||
.text-violet-300,
|
||
.text-violet-400,
|
||
.text-violet-100 {
|
||
color: #3b82f6 !important; /* blue-500 */
|
||
}
|
||
|
||
.border-violet-300,
|
||
.border-violet-400 {
|
||
border-color: rgba(
|
||
59,
|
||
130,
|
||
246,
|
||
0.3
|
||
) !important; /* blue-500 with opacity */
|
||
}
|
||
|
||
.hover\\:text-violet-400:hover,
|
||
.hover\\:text-violet-100:hover {
|
||
color: #2563eb !important; /* blue-600 */
|
||
}
|
||
|
||
.hover\\:bg-violet-700:hover {
|
||
background-color: #2563eb !important; /* blue-600 */
|
||
}
|
||
|
||
/* Fix focus states for form elements */
|
||
.focus-within\\:border-violet-400:focus-within,
|
||
.focus-within\\:ring-violet-400:focus-within {
|
||
border-color: #3b82f6 !important; /* blue-500 */
|
||
box-shadow: none !important; /* 移除focus阴影 */
|
||
}
|
||
|
||
/* Fix focus-within border color for auth token wrapper */
|
||
.focus-within\\:border-blue-500:focus-within {
|
||
border-color: #3b82f6 !important; /* blue-500 */
|
||
}
|
||
|
||
/* More specific selector for auth token wrapper */
|
||
div.flex.items-center.flex-grow.border.rounded-md.focus-within\\:border-blue-500:focus-within {
|
||
border-color: #3b82f6 !important; /* blue-500 */
|
||
}
|
||
|
||
/* Even more specific selector targeting the exact auth token wrapper */
|
||
.mb-6
|
||
.flex.items-center
|
||
div.flex.items-center.flex-grow.border.rounded-md:focus-within {
|
||
border-color: #3b82f6 !important; /* blue-500 */
|
||
}
|
||
|
||
/* Fix primary color focus states - convert purple to blue */
|
||
.focus\\:border-primary-500:focus,
|
||
.focus\\:border-primary-600:focus {
|
||
border-color: #3b82f6 !important; /* blue-500 */
|
||
}
|
||
|
||
.focus\\:ring-primary-200:focus,
|
||
.focus\\:ring-primary-300:focus {
|
||
--tw-ring-color: rgba(
|
||
59,
|
||
130,
|
||
246,
|
||
0.2
|
||
) !important; /* blue-500 with opacity */
|
||
}
|
||
|
||
/* Fix select element styling */
|
||
.form-select-themed {
|
||
background-color: rgba(255, 255, 255, 0.95) !important;
|
||
border: 1px solid rgba(0, 0, 0, 0.12) !important;
|
||
color: #374151 !important; /* gray-700 */
|
||
outline: none !important;
|
||
box-shadow: none !important;
|
||
transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out !important;
|
||
}
|
||
|
||
.form-select-themed:focus {
|
||
border-color: #3b82f6 !important; /* blue-500 */
|
||
box-shadow: none !important; /* 移除focus阴影 */
|
||
outline: none !important;
|
||
}
|
||
|
||
/* Override any remaining primary colors */
|
||
.text-primary-600,
|
||
.text-primary-500 {
|
||
color: #3b82f6 !important; /* blue-500 */
|
||
}
|
||
|
||
.bg-primary-600,
|
||
.bg-primary-500 {
|
||
background-color: #3b82f6 !important; /* blue-500 */
|
||
}
|
||
|
||
.bg-primary-700:hover,
|
||
.hover\\:bg-primary-700:hover {
|
||
background-color: #2563eb !important; /* blue-600 */
|
||
}
|
||
|
||
/* Fix dynamic input wrapper focus states - convert violet to blue */
|
||
.focus-within\\:border-violet-400:focus-within,
|
||
.focus-within\\:ring-violet-400:focus-within {
|
||
border-color: #3b82f6 !important; /* blue-500 */
|
||
box-shadow: none !important; /* 移除focus阴影 */
|
||
}
|
||
|
||
/* Ensure all array input wrappers use blue theme */
|
||
.array-container .flex.items-center.flex-grow.rounded-md {
|
||
border-color: rgba(0, 0, 0, 0.12) !important;
|
||
}
|
||
|
||
.array-container .flex.items-center.flex-grow.rounded-md:focus-within {
|
||
border-color: #3b82f6 !important; /* blue-500 */
|
||
box-shadow: none !important; /* 移除focus阴影 */
|
||
}
|
||
|
||
|
||
/* Filename: web/static/css/output.css */
|
||
/* 按钮的“默认公民”外观 (inactive) */
|
||
.tab-btn {
|
||
padding: 0.5rem 1.25rem;
|
||
border-radius: 9999px;
|
||
font-size: 0.875rem;
|
||
font-weight: 500;
|
||
transition: all 0.2s ease-in-out;
|
||
background-color: #f8fafc !important;
|
||
color: #64748b !important;
|
||
border: 2px solid #e2e8f0 !important;
|
||
box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.05) !important;
|
||
transform: translateY(0);
|
||
}
|
||
/* 按钮在被悬停时的外观 */
|
||
.tab-btn:hover {
|
||
background-color: #f1f5f9 !important;
|
||
box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.05), 0 2px 4px -2px rgba(0, 0, 0, 0.05) !important;
|
||
}
|
||
/* 按钮被授予 .active “荣誉勋章”后的外观 */
|
||
.tab-btn.active {
|
||
background-color: #3b82f6 !important;
|
||
color: #ffffff !important;
|
||
border-color: #2563eb !important;
|
||
font-weight: 600 !important;
|
||
box-shadow: 0 4px 12px -2px rgba(59, 130, 246, 0.4), 0 2px 6px -1px rgba(59, 130, 246, 0.2) !important;
|
||
transform: translateY(-2px) !important;
|
||
} |