If you are into Tidarr (Tidal API project found here GitHub - cstaelen/tidarr: 🎵 Self-hosted Tidal downloader with Docker • Multi-service integration • Lidarr-compatible provider. · GitHub )
The following css theme is made to be gorgeous, fast, and stylish. It checks the boxes. Feel free to reuse or recycle to customize your own Tidarr setup. And please use Tidarr responsibly, ethically, and legally.
This theme was developed on my own local LLM and fine-tuned with OAI Sol (I know I hate me too)
/**
* TIDARR — OBSIDIAN AURORA
* Designed for Tidarr 1.2.x / Material UI
* Dark, glassy, high-contrast, responsive, and keyboard-accessible.
*/
/* ================================================================
01. DESIGN TOKENS
================================================================ */
:root {
color-scheme: dark;
--oa-bg-0: #05060a;
--oa-bg-1: #080b12;
--oa-bg-2: #0d111b;
--oa-surface: rgba(15, 20, 31, 0.78);
--oa-surface-strong: rgba(18, 24, 38, 0.94);
--oa-surface-soft: rgba(255, 255, 255, 0.045);
--oa-border: rgba(255, 255, 255, 0.10);
--oa-border-strong: rgba(127, 233, 255, 0.28);
--oa-text: #f4f7ff;
--oa-text-2: #bdc7d9;
--oa-text-3: #7f8ba3;
--oa-cyan: #64f6ff;
--oa-blue: #63a4ff;
--oa-violet: #9b7cff;
--oa-pink: #ff5fc7;
--oa-green: #5df2a5;
--oa-yellow: #ffd166;
--oa-red: #ff637d;
--oa-gradient: linear-gradient(115deg, var(--oa-cyan), var(--oa-blue) 38%, var(--oa-violet) 70%, var(--oa-pink));
--oa-gradient-soft: linear-gradient(135deg, rgba(100, 246, 255, 0.16), rgba(155, 124, 255, 0.14) 54%, rgba(255, 95, 199, 0.12));
--oa-radius-xs: 8px;
--oa-radius-sm: 12px;
--oa-radius-md: 18px;
--oa-radius-lg: 26px;
--oa-shadow-sm: 0 8px 24px rgba(0, 0, 0, 0.22);
--oa-shadow-md: 0 18px 50px rgba(0, 0, 0, 0.34);
--oa-shadow-glow: 0 0 0 1px rgba(100, 246, 255, 0.08), 0 18px 55px rgba(67, 99, 255, 0.16);
--oa-ease: cubic-bezier(0.22, 1, 0.36, 1);
}
/* ================================================================
02. APP CANVAS
================================================================ */
html {
min-height: 100%;
scroll-behavior: smooth;
scrollbar-gutter: stable;
background: var(--oa-bg-0) !important;
}
body {
min-height: 100vh;
margin: 0;
color: var(--oa-text) !important;
background:
radial-gradient(1100px 700px at 8% -10%, rgba(66, 104, 255, 0.21), transparent 58%),
radial-gradient(900px 650px at 95% 8%, rgba(226, 58, 255, 0.16), transparent 58%),
radial-gradient(800px 650px at 55% 105%, rgba(35, 224, 207, 0.10), transparent 62%),
linear-gradient(180deg, var(--oa-bg-0), var(--oa-bg-1) 45%, #070910) !important;
background-attachment: fixed !important;
font-family: Inter, ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif !important;
font-feature-settings: "kern" 1, "liga" 1, "calt" 1;
-webkit-font-smoothing: antialiased;
text-rendering: optimizeLegibility;
overflow-x: hidden;
}
body::before {
content: "";
position: fixed;
inset: 0;
z-index: -2;
pointer-events: none;
opacity: 0.42;
background:
radial-gradient(circle at 20% 28%, rgba(100, 246, 255, 0.18), transparent 18%),
radial-gradient(circle at 74% 18%, rgba(155, 124, 255, 0.18), transparent 21%),
radial-gradient(circle at 82% 76%, rgba(255, 95, 199, 0.12), transparent 20%);
filter: blur(54px) saturate(125%);
animation: oa-aurora-drift 20s ease-in-out infinite alternate;
}
body::after {
content: "";
position: fixed;
inset: 0;
z-index: -1;
pointer-events: none;
opacity: 0.18;
background-image:
linear-gradient(rgba(255, 255, 255, 0.018) 1px, transparent 1px),
linear-gradient(90deg, rgba(255, 255, 255, 0.018) 1px, transparent 1px);
background-size: 40px 40px;
mask-image: linear-gradient(to bottom, rgba(0,0,0,0.55), transparent 85%);
}
#root,
main {
min-height: 100vh;
background: transparent !important;
}
main {
position: relative;
isolation: isolate;
}
::selection {
color: #061014;
background: var(--oa-cyan);
}
/* ================================================================
03. SCROLLBARS
================================================================ */
* {
scrollbar-width: thin;
scrollbar-color: rgba(155, 124, 255, 0.78) rgba(255, 255, 255, 0.035);
}
*::-webkit-scrollbar {
width: 11px;
height: 11px;
}
*::-webkit-scrollbar-track {
background: rgba(255, 255, 255, 0.025);
}
*::-webkit-scrollbar-thumb {
min-height: 38px;
border: 3px solid transparent;
border-radius: 999px;
background: linear-gradient(var(--oa-violet), var(--oa-blue)) padding-box;
}
*::-webkit-scrollbar-thumb:hover {
background: linear-gradient(var(--oa-pink), var(--oa-cyan)) padding-box;
}
/* ================================================================
04. HEADER / COMMAND BAR
================================================================ */
#app-bar.MuiAppBar-root {
top: 0 !important;
z-index: 2000 !important;
color: var(--oa-text) !important;
background: rgba(7, 9, 15, 0.74) !important;
border-bottom: 1px solid rgba(255, 255, 255, 0.09) !important;
box-shadow: 0 12px 38px rgba(0, 0, 0, 0.28) !important;
backdrop-filter: blur(22px) saturate(145%);
-webkit-backdrop-filter: blur(22px) saturate(145%);
}
#app-bar::after {
content: "";
position: absolute;
left: 0;
right: 0;
bottom: -1px;
height: 1px;
opacity: 0.78;
background: var(--oa-gradient);
box-shadow: 0 0 18px rgba(100, 246, 255, 0.30);
}
#app-bar > div {
background: transparent !important;
box-shadow: none !important;
}
#app-bar h1 {
margin: 0 !important;
color: var(--oa-text) !important;
letter-spacing: 0.12em;
text-shadow: 0 0 24px rgba(100, 246, 255, 0.22);
}
/* Keep the Tidarr wordmark visible instead of fading after two seconds. */
#app-bar h1 span {
width: auto !important;
padding-left: 0.75rem !important;
opacity: 1 !important;
animation: none !important;
background: var(--oa-gradient);
background-clip: text;
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
}
#app-bar h1 svg {
color: var(--oa-cyan) !important;
filter: drop-shadow(0 0 9px rgba(100, 246, 255, 0.50));
}
#app-bar .MuiStack-root {
gap: 0.45rem;
}
/* ================================================================
05. CONTENT WIDTH / SPACING / TYPE
================================================================ */
.MuiContainer-root {
max-width: 1560px !important;
padding-left: clamp(16px, 2.2vw, 34px) !important;
padding-right: clamp(16px, 2.2vw, 34px) !important;
}
.MuiTypography-root,
p,
li,
label,
input,
textarea,
button {
letter-spacing: 0.005em;
}
.MuiTypography-h1,
.MuiTypography-h2,
h1,
h2 {
color: var(--oa-text) !important;
letter-spacing: -0.025em;
}
.MuiTypography-h3,
.MuiTypography-h4,
h3,
h4 {
color: #e9efff !important;
}
.MuiTypography-body2,
.MuiFormHelperText-root,
.MuiListItemText-secondary,
.MuiTypography-colorTextSecondary {
color: var(--oa-text-2) !important;
}
.MuiDivider-root,
hr {
border-color: var(--oa-border) !important;
}
a {
color: #9eeaff;
text-decoration-color: rgba(100, 246, 255, 0.34);
text-underline-offset: 3px;
transition: color 160ms ease, text-decoration-color 160ms ease;
}
a:hover {
color: #d0faff;
text-decoration-color: var(--oa-cyan);
}
/* ================================================================
06. TABS — HIGH-SIGNAL NAVIGATION
================================================================ */
.MuiTabs-root {
min-height: 48px !important;
margin: 18px auto 24px !important;
padding: 5px !important;
border: 1px solid var(--oa-border) !important;
border-radius: 16px !important;
background: rgba(11, 15, 24, 0.72) !important;
box-shadow: var(--oa-shadow-sm) !important;
backdrop-filter: blur(16px);
-webkit-backdrop-filter: blur(16px);
}
.MuiTabs-flexContainer {
gap: 4px;
}
.MuiTab-root {
min-height: 38px !important;
border-radius: 11px !important;
color: var(--oa-text-2) !important;
font-size: 0.78rem !important;
font-weight: 760 !important;
letter-spacing: 0.055em !important;
text-transform: uppercase !important;
transition: color 180ms ease, background 180ms ease, transform 180ms var(--oa-ease) !important;
}
.MuiTab-root:hover {
color: var(--oa-text) !important;
background: rgba(255, 255, 255, 0.055) !important;
}
.MuiTab-root.Mui-selected {
color: #061014 !important;
background: linear-gradient(120deg, #bffbff, #74dcff 45%, #a88bff) !important;
box-shadow: 0 8px 22px rgba(82, 181, 255, 0.23) !important;
}
.MuiTabs-indicator {
display: none !important;
}
.MuiTabs-scrollButtons {
border-radius: 10px !important;
color: var(--oa-cyan) !important;
}
/* ================================================================
07. CARDS / MEDIA / SURFACES
================================================================ */
.MuiCard-root {
position: relative;
overflow: hidden !important;
color: var(--oa-text) !important;
background:
linear-gradient(145deg, rgba(22, 29, 44, 0.92), rgba(10, 14, 23, 0.90)) !important;
border: 1px solid var(--oa-border) !important;
border-radius: var(--oa-radius-md) !important;
box-shadow: var(--oa-shadow-sm) !important;
transform: translateZ(0);
transition:
transform 260ms var(--oa-ease),
border-color 260ms ease,
box-shadow 260ms var(--oa-ease),
background 260ms ease !important;
}
.MuiCard-root::before {
content: "";
position: absolute;
inset: 0;
z-index: 0;
pointer-events: none;
opacity: 0;
background: linear-gradient(140deg, rgba(100, 246, 255, 0.09), transparent 42%, rgba(155, 124, 255, 0.10));
transition: opacity 260ms ease;
}
.MuiCard-root > * {
position: relative;
z-index: 1;
}
.MuiCard-root:hover {
transform: translateY(-5px) scale(1.008);
border-color: var(--oa-border-strong) !important;
box-shadow: var(--oa-shadow-glow) !important;
}
.MuiCard-root:hover::before {
opacity: 1;
}
.MuiCardContent-root {
padding: 18px !important;
}
.MuiCardMedia-root,
.MuiCard-root img {
transition: transform 520ms var(--oa-ease), filter 320ms ease !important;
filter: saturate(1.06) contrast(1.035);
}
.MuiCard-root:hover .MuiCardMedia-root,
.MuiCard-root:hover img {
transform: scale(1.035);
filter: saturate(1.14) contrast(1.05) brightness(1.04);
}
.MuiPaper-root:not(.MuiAppBar-root):not(.MuiCard-root):not(.MuiMenu-paper):not(.MuiPopover-paper):not(.MuiDialog-paper) {
color: var(--oa-text);
background-color: rgba(14, 19, 30, 0.86);
border-color: var(--oa-border);
}
/* Artist avatars and cover art */
.MuiAvatar-root {
border: 2px solid rgba(100, 246, 255, 0.28) !important;
box-shadow: 0 8px 24px rgba(0, 0, 0, 0.32), 0 0 0 4px rgba(100, 246, 255, 0.045) !important;
}
img {
color: transparent;
}
/* ================================================================
08. BUTTONS / ICON CONTROLS / FABS
================================================================ */
.MuiButton-root {
min-height: 38px;
border-radius: 11px !important;
font-weight: 760 !important;
letter-spacing: 0.025em !important;
text-transform: none !important;
transition:
transform 170ms var(--oa-ease),
box-shadow 170ms ease,
background 170ms ease,
border-color 170ms ease !important;
}
.MuiButton-root:hover:not(:disabled) {
transform: translateY(-1px);
}
.MuiButton-containedPrimary:not(.MuiButton-colorError),
.MuiButton-contained:not(.MuiButton-colorError):not(.MuiButton-colorWarning):not(.MuiButton-colorSuccess) {
color: #061014 !important;
background: linear-gradient(120deg, #aefbff, #67ddff 42%, #9f86ff) !important;
box-shadow: 0 10px 24px rgba(75, 169, 255, 0.22) !important;
}
.MuiButton-containedPrimary:hover,
.MuiButton-contained:hover:not(.MuiButton-colorError):not(.MuiButton-colorWarning):not(.MuiButton-colorSuccess) {
background: linear-gradient(120deg, #d2fdff, #79e5ff 42%, #b69fff) !important;
box-shadow: 0 14px 34px rgba(75, 169, 255, 0.31) !important;
}
.MuiButton-outlined {
color: var(--oa-text) !important;
border-color: rgba(130, 219, 255, 0.27) !important;
background: rgba(255, 255, 255, 0.025) !important;
}
.MuiButton-outlined:hover {
border-color: rgba(100, 246, 255, 0.62) !important;
background: rgba(100, 246, 255, 0.075) !important;
}
.MuiButton-text {
color: #9deeff !important;
}
.MuiButton-colorError,
.MuiIconButton-colorError,
.MuiFab-error {
color: #fff !important;
background: linear-gradient(135deg, #ff416c, #ff637d) !important;
}
.MuiButton-colorWarning,
.MuiIconButton-colorWarning,
.MuiFab-warning {
color: #171105 !important;
background: linear-gradient(135deg, #ffd166, #ffb84d) !important;
}
.MuiButton-colorSuccess,
.MuiIconButton-colorSuccess,
.MuiFab-success {
color: #06130d !important;
background: linear-gradient(135deg, #84f7bd, #43d99a) !important;
}
.MuiIconButton-root {
border: 1px solid transparent !important;
border-radius: 11px !important;
color: var(--oa-text-2) !important;
transition: color 170ms ease, background 170ms ease, border-color 170ms ease, transform 170ms var(--oa-ease) !important;
}
.MuiIconButton-root:hover:not(:disabled) {
color: var(--oa-cyan) !important;
border-color: rgba(100, 246, 255, 0.18) !important;
background: rgba(100, 246, 255, 0.075) !important;
transform: translateY(-1px);
}
.MuiFab-root {
color: #061014 !important;
background: var(--oa-gradient) !important;
border: 1px solid rgba(255, 255, 255, 0.28) !important;
box-shadow: 0 14px 38px rgba(67, 99, 255, 0.34), 0 0 24px rgba(100, 246, 255, 0.13) !important;
transition: transform 200ms var(--oa-ease), box-shadow 200ms ease !important;
}
.MuiFab-root:hover {
transform: translateY(-3px) scale(1.035);
box-shadow: 0 18px 48px rgba(67, 99, 255, 0.45), 0 0 32px rgba(100, 246, 255, 0.21) !important;
}
.MuiButton-root.Mui-disabled,
.MuiIconButton-root.Mui-disabled,
.MuiFab-root.Mui-disabled {
color: rgba(255, 255, 255, 0.30) !important;
background: rgba(255, 255, 255, 0.055) !important;
box-shadow: none !important;
}
/* ================================================================
09. QUALITY / DISPLAY TOGGLES
================================================================ */
.MuiToggleButtonGroup-root {
padding: 3px !important;
border: 1px solid var(--oa-border) !important;
border-radius: 13px !important;
background: rgba(255, 255, 255, 0.035) !important;
}
.MuiToggleButton-root {
min-height: 34px !important;
color: var(--oa-text-2) !important;
border: 0 !important;
border-radius: 9px !important;
font-weight: 780 !important;
text-transform: uppercase !important;
transition: color 160ms ease, background 160ms ease, box-shadow 160ms ease !important;
}
.MuiToggleButton-root:hover {
color: var(--oa-text) !important;
background: rgba(255, 255, 255, 0.055) !important;
}
.MuiToggleButton-root.Mui-selected {
color: #061014 !important;
background: linear-gradient(115deg, #bafcff, #75e6ff 50%, #aa91ff) !important;
box-shadow: 0 6px 18px rgba(75, 169, 255, 0.22) !important;
}
/* ================================================================
10. INPUTS / SEARCH / FORMS
================================================================ */
.MuiInputBase-root,
.MuiOutlinedInput-root,
.MuiFilledInput-root {
color: var(--oa-text) !important;
border-radius: 13px !important;
background: rgba(255, 255, 255, 0.038) !important;
transition: background 180ms ease, box-shadow 180ms ease, border-color 180ms ease !important;
}
.MuiOutlinedInput-notchedOutline {
border-color: rgba(255, 255, 255, 0.12) !important;
transition: border-color 180ms ease !important;
}
.MuiOutlinedInput-root:hover .MuiOutlinedInput-notchedOutline {
border-color: rgba(100, 246, 255, 0.42) !important;
}
.MuiOutlinedInput-root.Mui-focused {
background: rgba(100, 246, 255, 0.045) !important;
box-shadow: 0 0 0 4px rgba(100, 246, 255, 0.09), 0 10px 30px rgba(0, 0, 0, 0.18) !important;
}
.MuiOutlinedInput-root.Mui-focused .MuiOutlinedInput-notchedOutline {
border-color: var(--oa-cyan) !important;
border-width: 1px !important;
}
.MuiInputLabel-root {
color: var(--oa-text-3) !important;
}
.MuiInputLabel-root.Mui-focused {
color: var(--oa-cyan) !important;
}
.MuiInputAdornment-root,
.MuiSelect-icon {
color: var(--oa-text-2) !important;
}
input::placeholder,
textarea::placeholder {
color: var(--oa-text-3) !important;
opacity: 1 !important;
}
/* Make the main search box feel like a command palette. */
#app-bar .MuiOutlinedInput-root {
min-height: 44px;
background: rgba(255, 255, 255, 0.055) !important;
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.035);
}
#app-bar .MuiOutlinedInput-root.Mui-focused {
background: rgba(7, 12, 20, 0.93) !important;
box-shadow: 0 0 0 4px rgba(100, 246, 255, 0.10), 0 12px 38px rgba(0, 0, 0, 0.25) !important;
}
/* ================================================================
11. CHIPS / BADGES / STATUS
================================================================ */
.MuiChip-root {
min-height: 26px !important;
color: var(--oa-text-2) !important;
border: 1px solid rgba(255, 255, 255, 0.10) !important;
border-radius: 999px !important;
background: rgba(255, 255, 255, 0.055) !important;
font-size: 0.72rem !important;
font-weight: 760 !important;
letter-spacing: 0.025em !important;
backdrop-filter: blur(10px);
}
.MuiChip-colorPrimary {
color: #bffaff !important;
border-color: rgba(100, 246, 255, 0.30) !important;
background: rgba(100, 246, 255, 0.10) !important;
}
.MuiChip-colorSecondary {
color: #e1d7ff !important;
border-color: rgba(155, 124, 255, 0.32) !important;
background: rgba(155, 124, 255, 0.12) !important;
}
.MuiChip-colorSuccess {
color: #c7ffe2 !important;
border-color: rgba(93, 242, 165, 0.30) !important;
background: rgba(93, 242, 165, 0.10) !important;
}
.MuiChip-colorWarning {
color: #ffe8a9 !important;
border-color: rgba(255, 209, 102, 0.30) !important;
background: rgba(255, 209, 102, 0.10) !important;
}
.MuiChip-colorError {
color: #ffd1d9 !important;
border-color: rgba(255, 99, 125, 0.30) !important;
background: rgba(255, 99, 125, 0.10) !important;
}
.MuiBadge-badge {
color: #061014 !important;
background: var(--oa-cyan) !important;
box-shadow: 0 0 0 2px var(--oa-bg-1), 0 0 16px rgba(100, 246, 255, 0.32) !important;
font-weight: 800 !important;
}
/* ================================================================
12. LISTS / TABLES / QUEUE
================================================================ */
.MuiList-root {
border-radius: var(--oa-radius-md);
}
.MuiListItem-root,
.MuiListItemButton-root {
border-radius: 12px !important;
transition: background 160ms ease, transform 160ms var(--oa-ease) !important;
}
.MuiListItemButton-root:hover {
background: rgba(100, 246, 255, 0.055) !important;
transform: translateX(2px);
}
.MuiListItemIcon-root {
min-width: 40px !important;
color: var(--oa-text-2) !important;
}
.MuiTableContainer-root {
overflow: hidden;
border: 1px solid var(--oa-border) !important;
border-radius: var(--oa-radius-md) !important;
background: rgba(11, 15, 24, 0.70) !important;
box-shadow: var(--oa-shadow-sm) !important;
}
.MuiTableCell-root {
color: var(--oa-text-2) !important;
border-bottom-color: rgba(255, 255, 255, 0.07) !important;
}
.MuiTableCell-head {
color: var(--oa-text) !important;
background: rgba(255, 255, 255, 0.045) !important;
font-weight: 800 !important;
letter-spacing: 0.045em !important;
text-transform: uppercase !important;
}
.MuiTableRow-root:hover .MuiTableCell-root {
background: rgba(100, 246, 255, 0.035) !important;
}
/* ================================================================
13. MENUS / POPOVERS / DIALOGS
================================================================ */
.MuiMenu-paper,
.MuiPopover-paper {
color: var(--oa-text) !important;
background: rgba(10, 14, 23, 0.94) !important;
border: 1px solid rgba(255, 255, 255, 0.11) !important;
border-radius: 15px !important;
box-shadow: 0 22px 70px rgba(0, 0, 0, 0.52) !important;
backdrop-filter: blur(24px) saturate(145%);
-webkit-backdrop-filter: blur(24px) saturate(145%);
}
.MuiMenuItem-root {
margin: 3px 6px !important;
border-radius: 9px !important;
color: var(--oa-text-2) !important;
}
.MuiMenuItem-root:hover,
.MuiMenuItem-root.Mui-selected {
color: var(--oa-text) !important;
background: rgba(100, 246, 255, 0.075) !important;
}
.MuiBackdrop-root {
background: rgba(2, 4, 9, 0.72) !important;
backdrop-filter: blur(9px);
-webkit-backdrop-filter: blur(9px);
}
.MuiDialog-paper {
color: var(--oa-text) !important;
background:
linear-gradient(145deg, rgba(21, 27, 42, 0.98), rgba(8, 11, 18, 0.98)) !important;
border: 1px solid rgba(137, 207, 255, 0.18) !important;
border-radius: 22px !important;
box-shadow: 0 30px 100px rgba(0, 0, 0, 0.64), 0 0 0 1px rgba(100, 246, 255, 0.04) !important;
}
.MuiDialogTitle-root {
border-bottom: 1px solid var(--oa-border) !important;
font-weight: 820 !important;
letter-spacing: -0.015em !important;
}
.MuiDialogActions-root {
padding: 14px 20px 18px !important;
border-top: 1px solid var(--oa-border) !important;
}
.MuiTooltip-tooltip {
color: #eaf9ff !important;
background: rgba(8, 12, 20, 0.96) !important;
border: 1px solid rgba(100, 246, 255, 0.18) !important;
border-radius: 9px !important;
box-shadow: var(--oa-shadow-md) !important;
font-size: 0.75rem !important;
backdrop-filter: blur(16px);
}
/* ================================================================
14. ALERTS / SNACKBARS
================================================================ */
.MuiAlert-root {
border: 1px solid var(--oa-border) !important;
border-radius: 14px !important;
backdrop-filter: blur(16px);
}
.MuiAlert-standardInfo,
.MuiAlert-filledInfo {
color: #d9faff !important;
border-color: rgba(100, 246, 255, 0.22) !important;
background: rgba(45, 157, 191, 0.17) !important;
}
.MuiAlert-standardSuccess,
.MuiAlert-filledSuccess {
color: #d4ffe8 !important;
border-color: rgba(93, 242, 165, 0.22) !important;
background: rgba(36, 158, 101, 0.17) !important;
}
.MuiAlert-standardWarning,
.MuiAlert-filledWarning {
color: #ffefbd !important;
border-color: rgba(255, 209, 102, 0.24) !important;
background: rgba(173, 119, 28, 0.20) !important;
}
.MuiAlert-standardError,
.MuiAlert-filledError {
color: #ffd8df !important;
border-color: rgba(255, 99, 125, 0.25) !important;
background: rgba(176, 50, 78, 0.19) !important;
}
.MuiSnackbarContent-root {
color: var(--oa-text) !important;
background: rgba(10, 14, 23, 0.95) !important;
border: 1px solid var(--oa-border) !important;
border-radius: 14px !important;
box-shadow: var(--oa-shadow-md) !important;
backdrop-filter: blur(18px);
}
/* ================================================================
15. PROGRESS / SKELETONS
================================================================ */
.MuiCircularProgress-root {
color: var(--oa-cyan) !important;
filter: drop-shadow(0 0 8px rgba(100, 246, 255, 0.35));
}
.MuiLinearProgress-root {
height: 7px !important;
overflow: hidden;
border-radius: 999px !important;
background: rgba(255, 255, 255, 0.07) !important;
}
.MuiLinearProgress-bar {
border-radius: 999px !important;
background: var(--oa-gradient) !important;
box-shadow: 0 0 14px rgba(100, 246, 255, 0.30);
}
.MuiSkeleton-root {
background: linear-gradient(100deg, rgba(255,255,255,0.045) 20%, rgba(100,246,255,0.10) 42%, rgba(255,255,255,0.045) 64%) !important;
background-size: 240% 100% !important;
animation: oa-shimmer 1.7s linear infinite !important;
}
/* ================================================================
16. CHECKBOXES / SWITCHES / SLIDERS
================================================================ */
.MuiCheckbox-root,
.MuiRadio-root {
color: var(--oa-text-3) !important;
}
.MuiCheckbox-root.Mui-checked,
.MuiRadio-root.Mui-checked {
color: var(--oa-cyan) !important;
filter: drop-shadow(0 0 7px rgba(100, 246, 255, 0.28));
}
.MuiSwitch-switchBase.Mui-checked {
color: var(--oa-cyan) !important;
}
.MuiSwitch-switchBase.Mui-checked + .MuiSwitch-track {
opacity: 0.55 !important;
background: linear-gradient(90deg, var(--oa-blue), var(--oa-violet)) !important;
}
.MuiSlider-root {
color: var(--oa-cyan) !important;
}
.MuiSlider-thumb {
box-shadow: 0 0 0 5px rgba(100, 246, 255, 0.10), 0 0 16px rgba(100, 246, 255, 0.24) !important;
}
/* ================================================================
17. ACCORDIONS / SETTINGS PANELS
================================================================ */
.MuiAccordion-root {
overflow: hidden;
margin: 10px 0 !important;
border: 1px solid var(--oa-border) !important;
border-radius: 15px !important;
background: rgba(14, 19, 30, 0.78) !important;
box-shadow: none !important;
}
.MuiAccordion-root::before {
display: none !important;
}
.MuiAccordionSummary-root {
min-height: 54px !important;
background: rgba(255, 255, 255, 0.025) !important;
}
.MuiAccordionSummary-root:hover {
background: rgba(100, 246, 255, 0.045) !important;
}
/* ================================================================
18. PROCESSING SPEED DIAL / QUEUE STATUS
================================================================ */
.MuiSpeedDial-root {
z-index: 1700 !important;
}
.MuiSpeedDial-root > .MuiFab-root,
.MuiSpeedDial-root > button {
border-radius: 18px !important;
}
.MuiSpeedDialAction-fab {
color: var(--oa-text) !important;
background: rgba(13, 18, 29, 0.95) !important;
border: 1px solid var(--oa-border) !important;
box-shadow: var(--oa-shadow-md) !important;
}
/* Tidarr's processing action container uses this stable id. */
#Showprocessinglist-actions {
gap: 10px !important;
}
#Showprocessinglist-actions .MuiSpeedDialAction-staticTooltipLabel {
color: var(--oa-text) !important;
background: rgba(8, 12, 20, 0.96) !important;
border: 1px solid var(--oa-border) !important;
border-radius: 10px !important;
box-shadow: var(--oa-shadow-md) !important;
white-space: nowrap;
}
/* ================================================================
19. FOOTER
================================================================ */
#root > div:last-child {
color: var(--oa-text-3) !important;
background: rgba(7, 9, 15, 0.82) !important;
border-top: 1px solid rgba(255, 255, 255, 0.08) !important;
box-shadow: 0 -10px 35px rgba(0, 0, 0, 0.20) !important;
backdrop-filter: blur(18px) saturate(135%);
-webkit-backdrop-filter: blur(18px) saturate(135%);
}
#root > div:last-child a {
color: #9deeff !important;
}
/* ================================================================
20. MONACO CUSTOM-CSS EDITOR
================================================================ */
.monaco-editor,
.monaco-editor-background,
.monaco-editor .margin {
background-color: #090c13 !important;
}
.monaco-editor {
overflow: hidden;
border: 1px solid rgba(100, 246, 255, 0.14) !important;
border-radius: 14px !important;
box-shadow: inset 0 0 34px rgba(0, 0, 0, 0.30) !important;
}
/* ================================================================
21. FOCUS / ACCESSIBILITY
================================================================ */
:where(a, button, input, textarea, select, [role="button"], [tabindex]):focus-visible {
outline: 2px solid var(--oa-cyan) !important;
outline-offset: 3px !important;
box-shadow: 0 0 0 5px rgba(100, 246, 255, 0.11) !important;
}
/* ================================================================
22. RESPONSIVE TUNING
================================================================ */
@media (max-width: 900px) {
#app-bar.MuiAppBar-root {
backdrop-filter: blur(18px) saturate(135%);
}
#app-bar h1 span {
display: none !important;
}
.MuiContainer-root {
padding-left: 12px !important;
padding-right: 12px !important;
}
.MuiTabs-root {
margin-top: 12px !important;
margin-bottom: 18px !important;
border-radius: 13px !important;
}
.MuiCardContent-root {
padding: 14px !important;
}
.MuiCard-root:hover {
transform: translateY(-2px);
}
}
@media (max-width: 600px) {
body::after {
display: none;
}
#app-bar .MuiStack-root {
gap: 0.25rem;
}
.MuiButton-root {
min-height: 40px;
}
.MuiDialog-paper {
margin: 10px !important;
border-radius: 18px !important;
}
.MuiTab-root {
min-width: 86px !important;
padding-left: 10px !important;
padding-right: 10px !important;
font-size: 0.70rem !important;
}
}
/* ================================================================
23. MOTION
================================================================ */
@keyframes oa-aurora-drift {
0% { transform: translate3d(-2%, -1%, 0) scale(1); }
50% { transform: translate3d(2%, 1.5%, 0) scale(1.05); }
100% { transform: translate3d(-1%, 2%, 0) scale(1.02); }
}
@keyframes oa-shimmer {
from { background-position: 200% 0; }
to { background-position: -40% 0; }
}
@media (prefers-reduced-motion: reduce) {
html {
scroll-behavior: auto;
}
*,
*::before,
*::after {
scroll-behavior: auto !important;
animation-duration: 0.01ms !important;
animation-iteration-count: 1 !important;
transition-duration: 0.01ms !important;
}
}
