.flaccy-window {
background-image:
radial-gradient(circle at 14% 6%, alpha(@flaccy_wash_a, 0.40), transparent 44%),
radial-gradient(circle at 86% 2%, alpha(@flaccy_wash_b, 0.34), transparent 48%),
radial-gradient(circle at 50% 118%, alpha(@flaccy_accent, 0.26), transparent 56%);
transition: background-image 600ms ease, background-color 600ms ease;
}
.cover {
border-radius: 10px;
box-shadow: 0 1px 4px alpha(#000, 0.28), 0 4px 16px alpha(#000, 0.16);
}
.cover-large {
border-radius: 14px;
box-shadow:
0 2px 10px alpha(#000, 0.30),
0 12px 40px alpha(#000, 0.22),
0 0 0 1px alpha(#fff, 0.05) inset;
}
.album-title {
font-weight: 600;
}
.dim {
opacity: 0.55;
}
.dim-more {
opacity: 0.35;
}
.quality-badge {
background-image: linear-gradient(160deg, alpha(@accent_bg_color, 0.22), alpha(@accent_bg_color, 0.10));
box-shadow: inset 0 0 0 1px alpha(@accent_bg_color, 0.30);
color: @accent_color;
border-radius: 6px;
padding: 1px 7px;
font-size: 10px;
font-weight: 700;
letter-spacing: 0.02em;
}
.loved-heart {
color: #ff476b;
-gtk-icon-shadow: 0 0 10px alpha(#ff476b, 0.55);
}
.genre-chip {
background-color: alpha(@window_fg_color, 0.08);
box-shadow: inset 0 0 0 1px alpha(@window_fg_color, 0.08);
border-radius: 9999px;
padding: 3px 12px;
font-size: 11px;
font-weight: 700;
transition: background-color 160ms ease, box-shadow 160ms ease;
}
.genre-chip:hover {
background-color: alpha(@accent_bg_color, 0.16);
box-shadow: inset 0 0 0 1px alpha(@accent_bg_color, 0.35);
}
.chip {
padding: 2px 12px;
font-size: 12px;
}
.wantlist-badge {
background-image: linear-gradient(160deg, @accent_bg_color, mix(@accent_bg_color, #000, 0.18));
color: @accent_fg_color;
border-radius: 9999px;
padding: 1px 8px;
font-size: 11px;
font-weight: 700;
box-shadow: 0 2px 8px alpha(@accent_bg_color, 0.45);
}
.transport {
padding: 10px 16px;
background-image:
linear-gradient(180deg, alpha(@flaccy_accent, 0.10), transparent 62%),
linear-gradient(180deg, alpha(#fff, 0.03), transparent 8%);
box-shadow:
0 -1px 0 0 alpha(@window_fg_color, 0.07),
0 -10px 30px alpha(#000, 0.18);
transition: background-image 600ms ease;
}
.transport-title {
font-weight: 600;
}
.track-number {
font-variant-numeric: tabular-nums;
opacity: 0.45;
}
.disc-header {
margin-bottom: 2px;
}
.disc-header-icon {
color: @accent_color;
opacity: 0.9;
}
.disc-header-label {
font-weight: 800;
font-size: 12px;
letter-spacing: 0.09em;
text-transform: uppercase;
color: @accent_color;
}
.disc-header-meta {
font-variant-numeric: tabular-nums;
font-size: 11px;
letter-spacing: 0.02em;
opacity: 0.5;
}
.duration-label {
font-variant-numeric: tabular-nums;
opacity: 0.55;
}
.time-label {
font-variant-numeric: tabular-nums;
font-size: 11px;
opacity: 0.6;
}
.play-pill {
border-radius: 9999px;
min-width: 46px;
min-height: 46px;
box-shadow: 0 4px 14px alpha(@accent_bg_color, 0.42);
transition: box-shadow 220ms ease, transform 150ms ease;
}
.play-pill:hover {
transform: scale(1.06);
box-shadow: 0 6px 22px alpha(@accent_bg_color, 0.62);
}
.play-pill:active {
transform: scale(0.95);
}
.transport.playing .play-pill {
animation: play-pulse 2.6s ease-in-out infinite;
}
@keyframes play-pulse {
0%, 100% { box-shadow: 0 4px 14px alpha(@accent_bg_color, 0.38); }
50% { box-shadow: 0 5px 24px alpha(@accent_bg_color, 0.78); }
}
.transport scale > trough {
min-height: 5px;
border-radius: 9999px;
background-color: alpha(@window_fg_color, 0.14);
}
.transport scale > trough > highlight {
border-radius: 9999px;
background-image: linear-gradient(90deg, alpha(@accent_bg_color, 0.85), @accent_bg_color);
box-shadow: 0 0 10px alpha(@accent_bg_color, 0.5);
}
.transport scale > trough > slider {
min-width: 13px;
min-height: 13px;
border-radius: 9999px;
background-color: #ffffff;
box-shadow: 0 1px 4px alpha(#000, 0.4), 0 0 0 1px alpha(@accent_bg_color, 0.3);
transition: transform 120ms ease;
}
.transport scale:hover > trough > slider {
transform: scale(1.12);
}
.equalizer {
background-color: alpha(#000, 0.42);
border-radius: 8px 0 8px 0;
padding: 4px 5px 3px 5px;
min-height: 18px;
}
.eq-bar {
min-width: 3px;
min-height: 12px;
border-radius: 2px;
background-color: #ffffff;
transform: scaleY(0.35);
transform-origin: bottom center;
}
.transport.playing .equalizer .eq-bar {
animation: eq-bounce 820ms ease-in-out infinite alternate;
}
.transport.playing .equalizer .eq-bar:nth-child(1) { animation-delay: 0ms; }
.transport.playing .equalizer .eq-bar:nth-child(2) { animation-delay: 260ms; }
.transport.playing .equalizer .eq-bar:nth-child(3) { animation-delay: 130ms; }
@keyframes eq-bounce {
from { transform: scaleY(0.28); }
to { transform: scaleY(1.0); }
}
.navigation-sidebar {
background-color: transparent;
padding: 6px 4px;
}
.navigation-sidebar > row {
border-radius: 11px;
margin: 1px 6px;
transition: background-color 160ms ease, box-shadow 200ms ease;
}
.navigation-sidebar > row:hover {
background-color: alpha(@window_fg_color, 0.06);
}
.navigation-sidebar > row:selected {
background-image: linear-gradient(120deg, alpha(@accent_bg_color, 0.30), alpha(@accent_bg_color, 0.14));
box-shadow:
inset 0 0 0 1px alpha(@accent_bg_color, 0.34),
0 3px 12px alpha(@accent_bg_color, 0.22);
color: @accent_color;
}
.navigation-sidebar > row:selected image {
color: @accent_color;
}
.album-grid,
.album-grid:backdrop,
.side-panel,
.side-panel:backdrop,
.side-panel scrolledwindow,
.side-panel scrolledwindow:backdrop,
.side-panel viewport,
.side-panel list,
.side-panel list:backdrop,
overlay-split-view > .sidebar-pane,
overlay-split-view > .sidebar-pane:backdrop {
background: none;
background-color: transparent;
}
.lyric-line {
font-size: 16px;
font-weight: 600;
opacity: 0.35;
padding: 6px 4px;
transition: opacity 240ms ease, color 240ms ease;
}
.lyric-line-current {
font-size: 16px;
font-weight: 700;
opacity: 1.0;
padding: 6px 4px;
color: @accent_color;
text-shadow: 0 0 16px alpha(@accent_bg_color, 0.4);
transition: opacity 240ms ease, color 240ms ease;
}
.stat-value {
font-size: 30px;
font-weight: 800;
}
.stat-caption {
font-size: 11px;
font-weight: 700;
opacity: 0.5;
letter-spacing: 0.08em;
}
.stat-tile {
background-color: alpha(@flaccy_surface, 0.55);
background-image: linear-gradient(160deg, alpha(#fff, 0.06), transparent 46%);
box-shadow:
inset 0 0 0 1px alpha(#fff, 0.06),
0 1px 3px alpha(#000, 0.2),
0 8px 26px alpha(#000, 0.14);
border-radius: 16px;
padding: 16px 20px;
transition: box-shadow 220ms ease;
}
.stat-tile:hover {
box-shadow:
inset 0 0 0 1px alpha(@accent_bg_color, 0.22),
0 2px 6px alpha(#000, 0.24),
0 12px 34px alpha(@accent_bg_color, 0.14);
}
.top-list-rank {
font-variant-numeric: tabular-nums;
font-weight: 700;
opacity: 0.4;
}
.accent-toggle {
color: @accent_color;
}
.album-grid > child {
padding: 12px 9px;
background: none;
}
.album-grid > child:hover,
.album-grid > child:selected {
background: none;
}
.album-tile {
border-radius: 14px;
padding: 8px;
transition: background-color 180ms ease, box-shadow 240ms ease, transform 180ms ease;
}
.album-tile:hover {
background-color: alpha(@window_fg_color, 0.06);
box-shadow: 0 12px 34px alpha(#000, 0.24), 0 0 0 1px alpha(@accent_bg_color, 0.16);
transform: translateY(-3px);
}
.suggested-card {
background-color: alpha(@flaccy_surface, 0.5);
background-image: linear-gradient(150deg, alpha(@accent_bg_color, 0.12), transparent 55%);
box-shadow:
inset 0 0 0 1px alpha(#fff, 0.06),
0 2px 6px alpha(#000, 0.18),
0 10px 30px alpha(#000, 0.14);
border-radius: 16px;
padding: 12px 14px;
transition: box-shadow 220ms ease, transform 180ms ease;
}
.suggested-card:hover {
box-shadow:
inset 0 0 0 1px alpha(@accent_bg_color, 0.28),
0 4px 10px alpha(#000, 0.22),
0 16px 40px alpha(@accent_bg_color, 0.16);
transform: translateY(-2px);
}
.queue-history-row {
opacity: 0.45;
}
.queue-current-row {
background-image: linear-gradient(120deg, alpha(@accent_bg_color, 0.20), alpha(@accent_bg_color, 0.08));
box-shadow: inset 0 0 0 1px alpha(@accent_bg_color, 0.24);
border-radius: 12px;
}
.guide-card {
background-color: alpha(@flaccy_surface, 0.45);
background-image: linear-gradient(160deg, alpha(#fff, 0.05), transparent 44%);
box-shadow:
inset 0 0 0 1px alpha(#fff, 0.05),
0 6px 24px alpha(#000, 0.14);
border-radius: 16px;
padding: 16px 18px;
}
.guide-takeaway {
background-image: linear-gradient(120deg, alpha(@accent_bg_color, 0.20), alpha(@accent_bg_color, 0.10));
box-shadow: inset 0 0 0 1px alpha(@accent_bg_color, 0.26);
border-radius: 12px;
padding: 10px 12px;
font-weight: 600;
}
.yim-value {
font-size: 22px;
font-weight: 800;
}
button.pill.suggested-action {
box-shadow: 0 4px 14px alpha(@accent_bg_color, 0.4);
transition: box-shadow 200ms ease, transform 150ms ease;
}
button.pill.suggested-action:hover {
box-shadow: 0 6px 22px alpha(@accent_bg_color, 0.6);
transform: translateY(-1px);
}
button.pill.suggested-action:active {
transform: translateY(0);
}
.np-backdrop {
filter: blur(64px);
opacity: 0.55;
transform: scale(1.25);
}
.np-scrim {
background-image:
radial-gradient(circle at 50% 22%, alpha(@flaccy_accent, 0.20), transparent 55%),
linear-gradient(180deg, alpha(@window_bg_color, 0.55), alpha(@window_bg_color, 0.86) 70%);
}
.np-art {
border-radius: 20px;
box-shadow:
0 2px 10px alpha(#000, 0.35),
0 24px 70px alpha(#000, 0.5),
0 0 0 1px alpha(#fff, 0.06) inset;
}
.np-title {
font-size: 30px;
font-weight: 800;
letter-spacing: -0.01em;
}
.np-artist {
font-size: 17px;
font-weight: 600;
color: @accent_color;
}
.np-meta {
font-size: 12px;
font-weight: 600;
letter-spacing: 0.02em;
}
.np-play {
min-width: 68px;
min-height: 68px;
box-shadow: 0 6px 22px alpha(@accent_bg_color, 0.5);
transition: box-shadow 220ms ease, transform 150ms ease;
}
.np-play:hover {
transform: scale(1.05);
box-shadow: 0 8px 30px alpha(@accent_bg_color, 0.7);
}
.np-play:active {
transform: scale(0.96);
}
.np-skip {
min-width: 44px;
min-height: 44px;
}
.np-skip image {
-gtk-icon-size: 22px;
}
.np-seek > trough {
min-height: 6px;
border-radius: 9999px;
background-color: alpha(@window_fg_color, 0.18);
}
.np-seek > trough > highlight {
border-radius: 9999px;
background-image: linear-gradient(90deg, alpha(@accent_bg_color, 0.85), @accent_bg_color);
box-shadow: 0 0 12px alpha(@accent_bg_color, 0.55);
}
.np-seek > trough > slider {
min-width: 15px;
min-height: 15px;
border-radius: 9999px;
background-color: #ffffff;
box-shadow: 0 1px 5px alpha(#000, 0.45), 0 0 0 1px alpha(@accent_bg_color, 0.35);
}
.np-toolbar,
.np-viewstack,
.np-view {
background: none;
background-color: transparent;
}
.np-view scrolledwindow,
.np-view viewport,
.np-view list {
background: none;
background-color: transparent;
}
.np-side {
background-color: alpha(@window_bg_color, 0.44);
border-radius: 18px;
margin: 12px 8px 12px 8px;
box-shadow:
inset 0 0 0 1px alpha(#fff, 0.06),
0 12px 40px alpha(#000, 0.28);
}
.np-toggle {
border-radius: 9999px;
padding: 3px 14px;
transition: background-color 160ms ease, box-shadow 200ms ease;
}
.np-toggle:checked {
background-color: alpha(@accent_bg_color, 0.85);
color: @accent_fg_color;
box-shadow: 0 2px 10px alpha(@accent_bg_color, 0.4);
}
.np-transport {
background-color: alpha(@window_bg_color, 0.72);
border-top: 1px solid alpha(@window_fg_color, 0.08);
padding: 10px 20px 14px 20px;
}
.np-chip {
font-size: 11px;
font-weight: 700;
letter-spacing: 0.04em;
padding: 2px 10px;
border-radius: 9999px;
background-color: alpha(@accent_bg_color, 0.18);
box-shadow: inset 0 0 0 1px alpha(@accent_bg_color, 0.30);
color: @accent_color;
}
.mini-art {
transition: transform 150ms ease;
}
.mini-art:hover {
transform: scale(1.05);
}
.theme-swatch {
min-width: 26px;
min-height: 26px;
border-radius: 9999px;
box-shadow: inset 0 0 0 1px alpha(#fff, 0.22), 0 2px 6px alpha(#000, 0.3);
}
.swatch-adaptive {
background-image: linear-gradient(135deg, #ff4d6d, #9d4edd 45%, #2dd4bf);
}
.swatch-rosewater { background-color: #ff4d6d; }
.swatch-aurora { background-image: linear-gradient(135deg, #2dd4bf, #9d4edd); }
.swatch-nocturne { background-color: #6e8bff; }
.swatch-verdant { background-color: #34d399; }
.swatch-sunset { background-image: linear-gradient(135deg, #fb8b24, #e01b24); }
.swatch-mono { background-color: #9ca3af; }
.flaccy-hero {
padding: 22px 22px 20px 22px;
border-radius: 20px;
background-image:
radial-gradient(circle at 10% -6%, alpha(@flaccy_wash_a, 0.55), transparent 52%),
radial-gradient(circle at 94% 4%, alpha(@flaccy_wash_b, 0.42), transparent 56%),
linear-gradient(160deg, alpha(@flaccy_accent, 0.22), alpha(@flaccy_surface, 0.32));
box-shadow:
inset 0 0 0 1px alpha(#fff, 0.06),
0 2px 6px alpha(#000, 0.18),
0 14px 40px alpha(#000, 0.18);
transition: background-image 600ms ease;
}
.flaccy-hero-glyph {
min-width: 48px;
min-height: 48px;
border-radius: 13px;
color: #ffffff;
background-image: linear-gradient(135deg, #ff4d6d, #9d4edd 46%, #2dd4bf);
box-shadow:
0 4px 14px alpha(#000, 0.28),
inset 0 0 0 1px alpha(#fff, 0.16);
}
.flaccy-hero-title {
font-size: 26px;
font-weight: 800;
letter-spacing: -0.01em;
}
.flaccy-hero-tagline {
font-size: 13px;
font-weight: 500;
opacity: 0.6;
}
.flaccy-hero-stats {
margin-top: 2px;
}
.flaccy-hero-divider {
min-width: 1px;
min-height: 34px;
background-color: alpha(@window_fg_color, 0.14);
}