1024 lines
21 KiB
CSS
1024 lines
21 KiB
CSS
@import "tailwindcss";
|
|
@custom-variant dark (&:where([data-theme=dark], [data-theme=dark] *));
|
|
@plugin "@tailwindcss/typography";
|
|
|
|
@theme {
|
|
/* Font families */
|
|
--font-sans: "IBM Plex Sans", "Geist Sans", system-ui, sans-serif;
|
|
--font-mono: "Geist Mono", ui-monospace, monospace;
|
|
}
|
|
|
|
::selection {
|
|
background-color: #3b82f6;
|
|
color: #ffffff;
|
|
}
|
|
|
|
/* Dark theme colors */
|
|
[data-theme="dark"] {
|
|
background-color: #0a0a0a;
|
|
}
|
|
|
|
html {
|
|
min-width: 360px;
|
|
scroll-behavior: smooth;
|
|
}
|
|
|
|
.prose {
|
|
@apply text-[#333333] dark:text-[#D4D4D4];
|
|
}
|
|
|
|
.prose .anchor {
|
|
@apply absolute invisible no-underline;
|
|
margin-left: -1em;
|
|
padding-right: 0.5em;
|
|
cursor: pointer;
|
|
}
|
|
|
|
.anchor:hover {
|
|
@apply visible;
|
|
}
|
|
|
|
.prose a {
|
|
@apply transition-all decoration-neutral-400 dark:decoration-neutral-600 underline-offset-2 decoration-[0.1em] font-normal text-[#333333] dark:text-[#D4D4D4];
|
|
}
|
|
|
|
.prose a:hover {
|
|
@apply dark:decoration-neutral-400 decoration-neutral-600;
|
|
}
|
|
|
|
.prose .anchor:after {
|
|
@apply text-neutral-300 dark:text-neutral-700;
|
|
content: "#";
|
|
}
|
|
|
|
.prose *:hover > .anchor {
|
|
@apply visible;
|
|
}
|
|
|
|
.prose pre {
|
|
@apply !bg-[#F7F7F7] dark:bg-[#181818] rounded-lg overflow-x-auto;
|
|
}
|
|
|
|
.prose code {
|
|
@apply px-1 py-0.5 rounded-lg;
|
|
}
|
|
|
|
.prose pre code {
|
|
@apply p-0;
|
|
border: initial;
|
|
line-height: 1.5;
|
|
}
|
|
|
|
.prose code span {
|
|
@apply font-medium;
|
|
}
|
|
|
|
.prose img {
|
|
/* Don't apply styles to next/image */
|
|
@apply m-0;
|
|
}
|
|
|
|
.prose h2,
|
|
h3,
|
|
h4,
|
|
h5,
|
|
h6 {
|
|
@apply font-medium! tracking-tight!;
|
|
}
|
|
|
|
.prose strong {
|
|
@apply font-medium;
|
|
}
|
|
|
|
.prose > :first-child {
|
|
/* Override removing top margin, causing layout shift */
|
|
margin-top: 1.25em !important;
|
|
margin-bottom: 1.25em !important;
|
|
}
|
|
|
|
pre::-webkit-scrollbar {
|
|
display: none;
|
|
}
|
|
|
|
pre {
|
|
-ms-overflow-style: none; /* IE and Edge */
|
|
scrollbar-width: none; /* Firefox */
|
|
}
|
|
|
|
input:-webkit-autofill {
|
|
-webkit-box-shadow: 0 0 0px 1000px #121212 inset !important; /* match your dark bg */
|
|
box-shadow: 0 0 0px 1000px #121212 inset !important;
|
|
-webkit-text-fill-color: white !important; /* match your text color */
|
|
transition: background-color 5000s ease-in-out 0s;
|
|
}
|
|
|
|
input:focus,
|
|
input:invalid {
|
|
outline: none; /* or a custom outline */
|
|
box-shadow: none;
|
|
}
|
|
|
|
/* Standard placeholder */
|
|
input:focus::placeholder {
|
|
color: transparent;
|
|
opacity: 0; /* optional, for smoother fade in some browsers */
|
|
}
|
|
|
|
/* WebKit (Safari, Chrome, iOS) */
|
|
input:focus::-webkit-input-placeholder {
|
|
color: transparent;
|
|
opacity: 0;
|
|
}
|
|
|
|
/* Firefox */
|
|
input:focus::-moz-placeholder {
|
|
color: transparent;
|
|
opacity: 0;
|
|
}
|
|
|
|
/* Microsoft Edge / IE */
|
|
input:focus:-ms-input-placeholder {
|
|
color: transparent;
|
|
opacity: 0;
|
|
}
|
|
|
|
/* Remove Safari input shadow on mobile */
|
|
input[type="text"],
|
|
input[type="email"] {
|
|
-webkit-appearance: none;
|
|
-moz-appearance: none;
|
|
appearance: none;
|
|
}
|
|
|
|
.prose .tweet a {
|
|
text-decoration: inherit;
|
|
font-weight: 500;
|
|
}
|
|
|
|
table {
|
|
display: block;
|
|
max-width: fit-content;
|
|
overflow-x: auto;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.prose .callout > p {
|
|
margin: 0 !important;
|
|
}
|
|
|
|
blockquote p:first-of-type::before {
|
|
content: none;
|
|
}
|
|
|
|
blockquote p:first-of-type::after {
|
|
content: none;
|
|
}
|
|
|
|
.title {
|
|
text-wrap: balance;
|
|
}
|
|
|
|
.hidden {
|
|
display: none;
|
|
}
|
|
|
|
[data-theme="dark"] .astro-code,
|
|
[data-theme="dark"] .astro-code span {
|
|
color: var(--shiki-dark) !important;
|
|
background-color: var(--shiki-dark-bg) !important;
|
|
/* Optional, if you also want font styles */
|
|
font-style: var(--shiki-dark-font-style) !important;
|
|
font-weight: var(--shiki-dark-font-weight) !important;
|
|
text-decoration: var(--shiki-dark-text-decoration) !important;
|
|
}
|
|
|
|
/**
|
|
Custom
|
|
*/
|
|
|
|
.logo-auth {
|
|
height: 64px;
|
|
width: 64px;
|
|
}
|
|
|
|
/* Page section - consistent spacing for all page content */
|
|
.page-section {
|
|
width: 100%;
|
|
}
|
|
|
|
.footer {
|
|
display: grid;
|
|
align-items: end;
|
|
padding: 2.5rem 0 2rem 0;
|
|
margin-top: auto;
|
|
padding-top: 3rem;
|
|
text-align: center;
|
|
font-size: 0.95rem;
|
|
border-top: 1px solid rgba(0, 0, 0, 0.06);
|
|
}
|
|
|
|
.footer--subsite {
|
|
padding-top: 1rem;
|
|
margin-top: 0;
|
|
}
|
|
|
|
[data-theme="dark"] .footer {
|
|
border-top-color: rgba(255, 255, 255, 0.06);
|
|
}
|
|
|
|
.header-text, .footer-text {
|
|
font-family: "bebas_neueregular";
|
|
}
|
|
|
|
.footer-text {
|
|
margin-top: 25px;
|
|
bottom: 0%;
|
|
}
|
|
|
|
.btn {
|
|
margin-top: 1.5% !important;
|
|
font-weight: 600;
|
|
font-size: 15px;
|
|
letter-spacing: 0.01em;
|
|
}
|
|
|
|
.hr {
|
|
transform: rotate(90deg);
|
|
}
|
|
|
|
.alert {
|
|
margin-top: 10%;
|
|
margin-bottom: 1%;
|
|
}
|
|
|
|
#spinner {
|
|
margin-top: 5%;
|
|
margin-left: 50%;
|
|
}
|
|
|
|
/* Search button */
|
|
.search-btn {
|
|
padding: 0.625rem 1.5rem;
|
|
background: linear-gradient(135deg, #171717 0%, #262626 100%);
|
|
color: white;
|
|
border: none;
|
|
border-radius: 10px;
|
|
font-weight: 600;
|
|
font-size: 0.9rem;
|
|
cursor: pointer;
|
|
transition: all 0.2s ease;
|
|
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
|
|
}
|
|
|
|
.search-btn:hover {
|
|
transform: translateY(-1px);
|
|
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.2);
|
|
}
|
|
|
|
.search-btn:active {
|
|
transform: translateY(0);
|
|
}
|
|
|
|
[data-theme="dark"] .search-btn {
|
|
background: linear-gradient(135deg, #fafafa 0%, #e5e5e5 100%);
|
|
color: #171717;
|
|
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3);
|
|
}
|
|
|
|
[data-theme="dark"] .search-btn:hover {
|
|
box-shadow: 0 4px 16px rgba(255, 255, 255, 0.15);
|
|
}
|
|
|
|
/* Exclude sources - toggle chips */
|
|
.exclude-sources {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 0.5rem;
|
|
}
|
|
|
|
.exclude-label {
|
|
font-size: 0.75rem;
|
|
font-weight: 500;
|
|
color: #737373;
|
|
margin-right: 0.125rem;
|
|
}
|
|
|
|
[data-theme="dark"] .exclude-label {
|
|
color: #525252;
|
|
}
|
|
|
|
.exclude-chip {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
font-size: 0.75rem;
|
|
font-weight: 500;
|
|
padding: 0.375rem 0.75rem;
|
|
border-radius: 9999px;
|
|
border: 1px solid rgba(0, 0, 0, 0.2);
|
|
background: rgba(0, 0, 0, 0.03);
|
|
color: #525252;
|
|
cursor: pointer;
|
|
transition: all 0.15s ease;
|
|
user-select: none;
|
|
}
|
|
|
|
[data-theme="dark"] .exclude-chip {
|
|
border-color: rgba(255, 255, 255, 0.25);
|
|
background: rgba(255, 255, 255, 0.06);
|
|
color: #d4d4d4;
|
|
}
|
|
|
|
.exclude-chip:hover {
|
|
border-color: rgba(239, 68, 68, 0.4);
|
|
color: #dc2626;
|
|
background: rgba(239, 68, 68, 0.05);
|
|
}
|
|
|
|
[data-theme="dark"] .exclude-chip:hover {
|
|
border-color: rgba(248, 113, 113, 0.4);
|
|
color: #f87171;
|
|
background: rgba(248, 113, 113, 0.08);
|
|
}
|
|
|
|
/* Active/excluded state */
|
|
.exclude-chip--active {
|
|
border-color: rgba(239, 68, 68, 0.5);
|
|
background: rgba(239, 68, 68, 0.1);
|
|
color: #dc2626;
|
|
text-decoration: line-through;
|
|
text-decoration-thickness: 1.5px;
|
|
}
|
|
|
|
[data-theme="dark"] .exclude-chip--active {
|
|
border-color: rgba(248, 113, 113, 0.5);
|
|
background: rgba(248, 113, 113, 0.12);
|
|
color: #f87171;
|
|
}
|
|
|
|
/* Source pill in lyrics result */
|
|
.source-pill {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
font-size: 0.7rem;
|
|
font-weight: 600;
|
|
padding: 0.25rem 0.5rem;
|
|
border-radius: 9999px;
|
|
border: 1px solid;
|
|
letter-spacing: 0.025em;
|
|
}
|
|
|
|
.source-pill--genius {
|
|
border-color: rgba(255, 204, 0, 0.5);
|
|
background: rgba(255, 204, 0, 0.1);
|
|
color: #b38f00;
|
|
}
|
|
[data-theme="dark"] .source-pill--genius {
|
|
border-color: rgba(255, 204, 0, 0.4);
|
|
background: rgba(255, 204, 0, 0.15);
|
|
color: #ffd633;
|
|
}
|
|
|
|
.source-pill--lrclib {
|
|
border-color: rgba(59, 130, 246, 0.5);
|
|
background: rgba(59, 130, 246, 0.1);
|
|
color: #2563eb;
|
|
}
|
|
[data-theme="dark"] .source-pill--lrclib {
|
|
border-color: rgba(96, 165, 250, 0.4);
|
|
background: rgba(96, 165, 250, 0.15);
|
|
color: #60a5fa;
|
|
}
|
|
|
|
.source-pill--cache {
|
|
border-color: rgba(34, 197, 94, 0.5);
|
|
background: rgba(34, 197, 94, 0.1);
|
|
color: #16a34a;
|
|
}
|
|
[data-theme="dark"] .source-pill--cache {
|
|
border-color: rgba(74, 222, 128, 0.4);
|
|
background: rgba(74, 222, 128, 0.15);
|
|
color: #4ade80;
|
|
}
|
|
|
|
.source-pill--other {
|
|
border-color: rgba(156, 163, 175, 0.5);
|
|
background: rgba(156, 163, 175, 0.1);
|
|
color: #6b7280;
|
|
}
|
|
[data-theme="dark"] .source-pill--other {
|
|
border-color: rgba(156, 163, 175, 0.4);
|
|
background: rgba(156, 163, 175, 0.15);
|
|
color: #9ca3af;
|
|
}
|
|
|
|
#lyric-search-input {
|
|
margin: 0;
|
|
padding: 0;
|
|
}
|
|
|
|
.lyric-search-input-wrapper {
|
|
position: relative;
|
|
width: 100%;
|
|
max-width: 640px;
|
|
}
|
|
|
|
.lyric-search-input-wrapper .p-autocomplete {
|
|
width: 100%;
|
|
}
|
|
|
|
.lyric-search-input-wrapper .p-autocomplete-input {
|
|
width: 100%;
|
|
padding: 0.875rem 2.75rem 0.875rem 1.125rem;
|
|
border-radius: 12px;
|
|
border: 1px solid rgba(0, 0, 0, 0.1);
|
|
font-size: 1rem;
|
|
background: white;
|
|
transition: border-color 0.2s ease, box-shadow 0.2s ease;
|
|
}
|
|
|
|
.lyric-search-input-wrapper .p-autocomplete-input:focus {
|
|
outline: none;
|
|
border-color: #3b82f6;
|
|
box-shadow: 0 0 0 4px rgba(59, 130, 246, 0.1);
|
|
}
|
|
|
|
[data-theme="dark"] .lyric-search-input-wrapper .p-autocomplete-input {
|
|
background: rgba(255, 255, 255, 0.08);
|
|
border-color: rgba(255, 255, 255, 0.15);
|
|
color: #f5f5f5;
|
|
}
|
|
|
|
[data-theme="dark"] .lyric-search-input-wrapper .p-autocomplete-input:focus {
|
|
border-color: #60a5fa;
|
|
box-shadow: 0 0 0 4px rgba(96, 165, 250, 0.15);
|
|
}
|
|
|
|
[data-theme="dark"] .lyric-search-input-wrapper .p-autocomplete-input::placeholder {
|
|
color: #a3a3a3;
|
|
}
|
|
|
|
.input-status-icon {
|
|
position: absolute;
|
|
right: 1rem;
|
|
top: 50%;
|
|
transform: translateY(-50%);
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
pointer-events: none;
|
|
z-index: 10;
|
|
transition: opacity 0.2s ease, color 0.2s ease;
|
|
}
|
|
|
|
#lyrics-info {
|
|
display: flex;
|
|
flex-direction: column;
|
|
align-items: center;
|
|
font-weight: bold;
|
|
word-wrap: break-word !important;
|
|
overflow: auto !important;
|
|
margin-bottom: 5px;
|
|
}
|
|
|
|
.lyrics-card {
|
|
border-radius: 16px;
|
|
box-shadow: 0 1px 2px rgba(0,0,0,0.04), 0 4px 16px rgba(0,0,0,0.06);
|
|
padding: 1.75rem 2rem;
|
|
transition: background 0.3s, box-shadow 0.3s;
|
|
background: white;
|
|
border: 1px solid rgba(0, 0, 0, 0.05);
|
|
}
|
|
|
|
[data-theme="dark"] .lyrics-card {
|
|
background: rgba(255, 255, 255, 0.04);
|
|
border-color: rgba(255, 255, 255, 0.08);
|
|
box-shadow: 0 1px 3px rgba(0,0,0,0.2), 0 8px 24px rgba(0,0,0,0.15);
|
|
}
|
|
|
|
.lyrics-card-animate {
|
|
opacity: 0;
|
|
transform: translateY(12px);
|
|
transition: opacity 0.4s ease-out, transform 0.4s ease-out;
|
|
}
|
|
|
|
.lyrics-card-visible {
|
|
opacity: 1;
|
|
transform: translateY(0);
|
|
}
|
|
|
|
.lyrics-toolbar {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
flex-wrap: wrap;
|
|
gap: 0.75rem;
|
|
margin-bottom: 1.5rem;
|
|
padding-bottom: 1rem;
|
|
border-bottom: 1px solid rgba(0, 0, 0, 0.05);
|
|
}
|
|
|
|
[data-theme="dark"] .lyrics-toolbar {
|
|
border-bottom-color: rgba(255, 255, 255, 0.08);
|
|
}
|
|
|
|
.lyrics-title {
|
|
font-weight: 600;
|
|
font-size: 1.1rem;
|
|
flex: 1;
|
|
text-align: left;
|
|
min-width: 0;
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
@media (max-width: 480px) {
|
|
.lyrics-toolbar {
|
|
flex-direction: column;
|
|
align-items: flex-start;
|
|
gap: 0.5rem;
|
|
}
|
|
|
|
.lyrics-title {
|
|
font-size: 0.95rem;
|
|
width: 100%;
|
|
}
|
|
|
|
.lyrics-actions {
|
|
width: 100%;
|
|
justify-content: flex-start;
|
|
}
|
|
}
|
|
|
|
.lyrics-actions {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 0.5rem;
|
|
}
|
|
|
|
.text-size-buttons {
|
|
display: flex;
|
|
border: 1px solid rgba(0, 0, 0, 0.1);
|
|
border-radius: 8px;
|
|
overflow: hidden;
|
|
background: rgba(0, 0, 0, 0.03);
|
|
}
|
|
|
|
[data-theme="dark"] .text-size-buttons {
|
|
border-color: rgba(255, 255, 255, 0.1);
|
|
background: rgba(255, 255, 255, 0.05);
|
|
}
|
|
|
|
.text-size-btn {
|
|
background: transparent;
|
|
border: none;
|
|
color: inherit;
|
|
padding: 0.25rem 0.6rem;
|
|
font-size: 0.85rem;
|
|
cursor: pointer;
|
|
transition: background 0.2s, color 0.2s;
|
|
}
|
|
|
|
.text-size-btn.text-size-large {
|
|
font-size: 0.95rem;
|
|
}
|
|
|
|
.text-size-btn.active {
|
|
background: rgba(0, 0, 0, 0.08);
|
|
font-weight: 600;
|
|
}
|
|
|
|
[data-theme="dark"] .text-size-btn.active {
|
|
background: rgba(255, 255, 255, 0.12);
|
|
}
|
|
|
|
.lyrics-content {
|
|
line-height: 1.85;
|
|
font-family: 'IBM Plex Sans', 'Inter', sans-serif;
|
|
font-size: 1rem;
|
|
white-space: pre-wrap;
|
|
color: #374151;
|
|
letter-spacing: 0.01em;
|
|
}
|
|
|
|
[data-theme="dark"] .lyrics-content {
|
|
color: #d1d5db;
|
|
}
|
|
|
|
.lyrics-content-large {
|
|
font-size: 1.25rem;
|
|
line-height: 2.0;
|
|
}
|
|
|
|
.lyrics-verse {
|
|
padding: 0.5rem 0.75rem;
|
|
margin: 0.25rem -0.75rem;
|
|
border-radius: 8px;
|
|
cursor: pointer;
|
|
transition: background-color 0.2s ease, box-shadow 0.2s ease;
|
|
}
|
|
|
|
.lyrics-verse:hover {
|
|
background-color: rgba(79, 70, 229, 0.06);
|
|
}
|
|
|
|
.lyrics-verse-highlighted {
|
|
background-color: rgba(79, 70, 229, 0.15);
|
|
box-shadow: inset 3px 0 0 rgba(79, 70, 229, 0.6);
|
|
}
|
|
|
|
.lyrics-card-dark .lyrics-verse:hover {
|
|
background-color: rgba(139, 92, 246, 0.1);
|
|
}
|
|
|
|
.lyrics-card-dark .lyrics-verse-highlighted {
|
|
background-color: rgba(139, 92, 246, 0.2);
|
|
box-shadow: inset 3px 0 0 rgba(139, 92, 246, 0.7);
|
|
}
|
|
|
|
.lyrics-action-button {
|
|
color: inherit;
|
|
border: 1px solid transparent;
|
|
padding: 0.25rem;
|
|
}
|
|
|
|
.lyrics-action-button:hover {
|
|
border-color: rgba(79, 70, 229, 0.2);
|
|
background: rgba(79, 70, 229, 0.08);
|
|
}
|
|
|
|
.lyrics-card-dark {
|
|
background-color: oklch(from rgba(18, 18, 18, 2.0) calc(l + 0.05) c h);
|
|
}
|
|
|
|
.lyrics-card-light {
|
|
background-color: oklch(from rgba(255, 255, 255, 2.0) calc(l - 0.02) c h);
|
|
}
|
|
|
|
.discord-logs-container {
|
|
padding-bottom: 25px;
|
|
}
|
|
|
|
.random-msg {
|
|
max-width: 100%;
|
|
word-wrap: break-word;
|
|
white-space: pre-wrap;
|
|
color: 'inherit';
|
|
}
|
|
|
|
.random-msg-container {
|
|
text-align: center;
|
|
}
|
|
|
|
.random-msg-reload {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
background: none;
|
|
border: none;
|
|
padding: 0.2rem;
|
|
margin-left: 0.35rem;
|
|
border-radius: 4px;
|
|
cursor: pointer;
|
|
opacity: 0;
|
|
transition: opacity 0.15s ease;
|
|
vertical-align: middle;
|
|
color: inherit;
|
|
}
|
|
|
|
.random-msg-container:hover .random-msg-reload,
|
|
.random-msg-reload:focus {
|
|
opacity: 0.4;
|
|
}
|
|
|
|
.random-msg-reload:hover {
|
|
opacity: 0.7;
|
|
background: rgba(128, 128, 128, 0.15);
|
|
}
|
|
|
|
.lyrics-card-copyButton {
|
|
float: right;
|
|
padding-bottom: 3%;
|
|
}
|
|
|
|
/* PrimeReact AutoComplete Panel - Global Styling */
|
|
.p-autocomplete-panel {
|
|
background: white;
|
|
border: 1px solid rgba(0, 0, 0, 0.1);
|
|
border-radius: 12px;
|
|
box-shadow: 0 4px 24px rgba(0, 0, 0, 0.12);
|
|
overflow: hidden;
|
|
z-index: 9999;
|
|
}
|
|
|
|
[data-theme="dark"] .p-autocomplete-panel {
|
|
background: #1a1a1a;
|
|
border-color: rgba(255, 255, 255, 0.1);
|
|
box-shadow: 0 4px 24px rgba(0, 0, 0, 0.4);
|
|
}
|
|
|
|
.p-autocomplete-items {
|
|
max-height: 200px !important;
|
|
overflow-y: auto !important;
|
|
overscroll-behavior: contain;
|
|
padding: 0.25rem;
|
|
}
|
|
|
|
.p-autocomplete-item {
|
|
padding: 0.625rem 0.875rem;
|
|
border-radius: 8px;
|
|
margin: 0.125rem 0;
|
|
cursor: pointer;
|
|
transition: background-color 0.15s ease;
|
|
color: #262626;
|
|
}
|
|
|
|
.p-autocomplete-item:hover,
|
|
.p-autocomplete-item.p-highlight {
|
|
background: rgba(59, 130, 246, 0.1);
|
|
color: #1d4ed8;
|
|
}
|
|
|
|
[data-theme="dark"] .p-autocomplete-item {
|
|
color: #e5e5e5;
|
|
}
|
|
|
|
[data-theme="dark"] .p-autocomplete-item:hover,
|
|
[data-theme="dark"] .p-autocomplete-item.p-highlight {
|
|
background: rgba(96, 165, 250, 0.15);
|
|
color: #60a5fa;
|
|
}
|
|
|
|
.p-autocomplete-input {
|
|
padding: 0.5rem 1rem;
|
|
border-radius: 0.5rem;
|
|
border: 1px solid #ccc;
|
|
transition: border 0.2s;
|
|
}
|
|
|
|
.p-autocomplete-input:focus {
|
|
border-color: #4f46e5;
|
|
outline: none;
|
|
}
|
|
|
|
.lyric-search-input.has-error .p-autocomplete-input {
|
|
border-color: #f87171;
|
|
}
|
|
|
|
/* ===================================================
|
|
PrimeReact Dialog + DataTable dark theme fixes (global)
|
|
These ensure dialogs rendered via portal (class .p-dialog) pick up
|
|
site dark theme when the document has [data-theme="dark"].
|
|
=================================================== */
|
|
|
|
/* Paginator specifics used by the player queue (global variant) */
|
|
.queue-paginator .p-paginator-current {
|
|
background: transparent !important;
|
|
color: inherit !important;
|
|
border: none !important;
|
|
}
|
|
|
|
[data-theme="dark"] .queue-paginator .p-paginator-current {
|
|
color: rgb(212 212 212) !important;
|
|
background: transparent !important;
|
|
}
|
|
|
|
.queue-paginator .p-paginator-bottom {
|
|
padding: 16px !important;
|
|
border-top: 1px solid rgb(229 229 229) !important;
|
|
}
|
|
|
|
[data-theme="dark"] .queue-paginator .p-paginator-bottom {
|
|
border-top-color: rgb(82 82 82) !important;
|
|
}
|
|
|
|
/* DataTable + Dialog - make table dark in any portal dialog */
|
|
|
|
/* Improved global dark mode for PrimeReact DataTable in dialogs (matches RequestManagement look) */
|
|
[data-theme="dark"] .p-dialog .p-datatable {
|
|
color: #e5e7eb !important;
|
|
}
|
|
[data-theme="dark"] .p-dialog .p-datatable-thead > tr > th {
|
|
background-color: #1f1f1f !important;
|
|
color: #e5e7eb !important;
|
|
border-bottom: 1px solid #374151 !important;
|
|
}
|
|
[data-theme="dark"] .p-dialog .p-datatable-tbody > tr {
|
|
background-color: #1a1a1a !important;
|
|
border-bottom: 1px solid #374151 !important;
|
|
color: #e5e7eb !important;
|
|
}
|
|
[data-theme="dark"] .p-dialog .p-datatable-tbody > tr:nth-child(odd) {
|
|
background-color: #222 !important;
|
|
}
|
|
[data-theme="dark"] .p-dialog .p-datatable-tbody > tr:hover {
|
|
background-color: #333 !important;
|
|
color: #fff !important;
|
|
}
|
|
[data-theme="dark"] .p-dialog .p-datatable .p-datatable-header,
|
|
[data-theme="dark"] .p-dialog .p-datatable .p-datatable-footer {
|
|
background: #1f1f1f !important;
|
|
color: #e5e7eb !important;
|
|
border-color: #374151 !important;
|
|
}
|
|
|
|
/* Paginator Dark Mode for dialogs */
|
|
[data-theme="dark"] .p-dialog .p-paginator {
|
|
background-color: #121212 !important;
|
|
color: #e5e7eb !important;
|
|
border-top: 1px solid #374151 !important;
|
|
}
|
|
[data-theme="dark"] .p-dialog .p-paginator .p-paginator-page,
|
|
[data-theme="dark"] .p-dialog .p-paginator .p-paginator-next,
|
|
[data-theme="dark"] .p-dialog .p-paginator .p-paginator-prev,
|
|
[data-theme="dark"] .p-dialog .p-paginator .p-paginator-first,
|
|
[data-theme="dark"] .p-dialog .p-paginator .p-paginator-last {
|
|
color: #e5e7eb !important;
|
|
background: transparent !important;
|
|
border: none !important;
|
|
}
|
|
[data-theme="dark"] .p-dialog .p-paginator .p-paginator-page:hover,
|
|
[data-theme="dark"] .p-dialog .p-paginator .p-paginator-next:hover,
|
|
[data-theme="dark"] .p-dialog .p-paginator .p-paginator-prev:hover {
|
|
background-color: #374151 !important;
|
|
color: #fff !important;
|
|
border-radius: 0.25rem;
|
|
}
|
|
[data-theme="dark"] .p-dialog .p-paginator .p-highlight {
|
|
background-color: #6b7280 !important;
|
|
color: #fff !important;
|
|
border-radius: 0.25rem !important;
|
|
}
|
|
|
|
.trip-checkbox {
|
|
appearance: none;
|
|
width: 2.1rem;
|
|
height: 1.1rem;
|
|
border-radius: 999px;
|
|
border: 1px solid #9ca3af;
|
|
background: #e5e7eb;
|
|
position: relative;
|
|
display: inline-flex;
|
|
align-items: center;
|
|
transition: background 0.2s ease, border-color 0.2s ease;
|
|
cursor: pointer;
|
|
}
|
|
|
|
.trip-checkbox::after {
|
|
content: "";
|
|
position: absolute;
|
|
width: 0.95rem;
|
|
height: 0.95rem;
|
|
border-radius: 999px;
|
|
background: #ffffff;
|
|
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25);
|
|
left: 2px;
|
|
top: 50%;
|
|
transform: translate(0, -50%);
|
|
transition: transform 0.2s ease;
|
|
}
|
|
|
|
.trip-checkbox:hover {
|
|
border-color: #2563eb;
|
|
}
|
|
|
|
.trip-checkbox:focus-visible {
|
|
outline: 2px solid rgba(37, 99, 235, 0.5);
|
|
outline-offset: 2px;
|
|
}
|
|
|
|
.trip-checkbox:checked {
|
|
background: #2563eb;
|
|
border-color: #2563eb;
|
|
}
|
|
|
|
.trip-checkbox:checked::after {
|
|
transform: translate(0.95rem, -50%);
|
|
}
|
|
|
|
.trip-checkbox:indeterminate {
|
|
background: linear-gradient(90deg, #93c5fd, #2563eb);
|
|
border-color: #2563eb;
|
|
}
|
|
|
|
.trip-checkbox:indeterminate::after {
|
|
width: 0.8rem;
|
|
height: 0.2rem;
|
|
border-radius: 0.2rem;
|
|
background: white;
|
|
transform: translate(0.65rem, -50%);
|
|
box-shadow: none;
|
|
}
|
|
|
|
[data-theme="dark"] .trip-checkbox {
|
|
border-color: #4b5563;
|
|
background: #1f2937;
|
|
}
|
|
|
|
[data-theme="dark"] .trip-checkbox::after {
|
|
background: #f8fafc;
|
|
}
|
|
|
|
[data-theme="dark"] .trip-checkbox:checked {
|
|
background: #3b82f6;
|
|
border-color: #3b82f6;
|
|
}
|
|
|
|
[data-theme="dark"] .trip-checkbox:checked::after {
|
|
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.4);
|
|
}
|
|
|
|
.lyric-search-input.has-ready .p-autocomplete-input {
|
|
border-color: #34d399;
|
|
}
|
|
|
|
.sr-only {
|
|
position: absolute;
|
|
width: 1px;
|
|
height: 1px;
|
|
padding: 0;
|
|
margin: -1px;
|
|
overflow: hidden;
|
|
clip: rect(0, 0, 0, 0);
|
|
white-space: nowrap;
|
|
border: 0;
|
|
}
|
|
|
|
.d-dark > * {
|
|
background-color: rgba(35, 35, 35, 0.9);
|
|
color: #ffffff;
|
|
}
|
|
.d-light > * {
|
|
background-color: rgba(255, 255, 255, 0.9);
|
|
}
|
|
|
|
/*
|
|
Toastify customizations
|
|
*/
|
|
.Toastify__toast-container--top-right,
|
|
.Toastify__toast-container--top-center,
|
|
.Toastify__toast-container--top-left {
|
|
top: 80px !important; /* keep below sticky nav */
|
|
}
|
|
|
|
.Toastify__toast {
|
|
border-radius: 12px !important;
|
|
backdrop-filter: blur(12px) !important;
|
|
box-shadow: 0 4px 24px rgba(0, 0, 0, 0.3) !important;
|
|
font-family: 'IBM Plex Sans', sans-serif !important;
|
|
font-size: 0.9rem !important;
|
|
background: rgba(30, 30, 30, 0.95) !important;
|
|
color: #e5e5e5 !important;
|
|
}
|
|
|
|
.Toastify__toast--error {
|
|
background: rgba(30, 30, 30, 0.95) !important;
|
|
border-left: 4px solid #ef4444 !important;
|
|
color: #fca5a5 !important;
|
|
}
|
|
|
|
.Toastify__toast--info {
|
|
background: rgba(30, 30, 30, 0.95) !important;
|
|
border-left: 4px solid #3b82f6 !important;
|
|
color: #93c5fd !important;
|
|
}
|
|
|
|
.Toastify__toast--success {
|
|
background: rgba(30, 30, 30, 0.95) !important;
|
|
border-left: 4px solid #22c55e !important;
|
|
color: #86efac !important;
|
|
}
|
|
|
|
.Toastify__toast--warning {
|
|
background: rgba(30, 30, 30, 0.95) !important;
|
|
border-left: 4px solid #f59e0b !important;
|
|
color: #fcd34d !important;
|
|
}
|
|
|
|
.Toastify__close-button {
|
|
color: #a3a3a3 !important;
|
|
opacity: 0.7 !important;
|
|
}
|
|
|
|
.Toastify__close-button:hover {
|
|
opacity: 1 !important;
|
|
color: #e5e5e5 !important;
|
|
}
|
|
|
|
.Toastify__progress-bar {
|
|
background: rgba(255, 255, 255, 0.2) !important;
|
|
}
|
|
|
|
.Toastify__toast--success > .Toastify__toast-icon svg {
|
|
display: none;
|
|
}
|
|
|
|
.Toastify__toast--success > .Toastify__toast-icon::after {
|
|
content: "🦄" !important;
|
|
}
|
|
|
|
/* Light mode - keep dark toasts */
|
|
[data-theme="light"] .Toastify__toast {
|
|
box-shadow: 0 4px 24px rgba(0, 0, 0, 0.2) !important;
|
|
}
|