@define-color kv_canvas #010405;
@define-color kv_background #02070a;
@define-color kv_surface #071317;
@define-color kv_surface_raised #0a1a1f;
@define-color kv_surface_hover #0d252c;
@define-color kv_border #173b44;
@define-color kv_border_strong #21606c;
@define-color kv_accent #16d9ee;
@define-color kv_accent_bright #6cf3ff;
@define-color kv_text #effdff;
@define-color kv_text_secondary #9abdc3;
@define-color kv_text_tertiary #739ba3;
@define-color kv_warning #f2c76e;
@define-color kv_error #ff8797;
window,
.app-shell {
color: @kv_text;
background-color: @kv_background;
}
window:backdrop .app-shell {
color: #c6d9dc;
}
.topbar {
color: @kv_text;
background-color: #041014;
background-image: linear-gradient(105deg, #0a2026 0%, #061216 48%, #020709 100%);
border-bottom: 1px solid @kv_border;
padding: 12px 16px;
box-shadow: 0 8px 24px rgba(0, 0, 0, 0.24);
}
.brand-mark {
color: #001014;
background-color: @kv_accent;
background-image: linear-gradient(145deg, @kv_accent_bright, @kv_accent);
border: 1px solid @kv_accent_bright;
border-radius: 7px;
box-shadow: 0 0 18px rgba(22, 217, 238, 0.24);
font-family: monospace;
font-size: 13px;
font-weight: 800;
padding: 7px 9px;
}
.brand {
color: @kv_text;
font-size: 16px;
font-weight: 800;
letter-spacing: 2px;
text-shadow: 0 1px 12px rgba(108, 243, 255, 0.12);
}
.brand-subtitle {
color: @kv_text_secondary;
font-family: monospace;
font-size: 11px;
letter-spacing: 0.8px;
}
.brand-accent,
.eyebrow,
.time-label {
color: @kv_accent_bright;
}
.eyebrow {
font-family: monospace;
font-size: 11px;
font-weight: 700;
letter-spacing: 1.5px;
}
.muted {
color: @kv_text_secondary;
}
.content,
paned.content {
color: @kv_text;
background-color: @kv_background;
background-image: linear-gradient(140deg, #020608 0%, #061216 62%, #030a0d 100%);
padding: 16px;
}
paned.content > separator {
background-color: @kv_border;
border: 0;
border-radius: 99px;
min-width: 2px;
min-height: 2px;
margin: 10px 6px;
}
paned.content > separator:hover,
paned.content > separator:focus-visible {
background-color: @kv_accent;
box-shadow: 0 0 10px rgba(22, 217, 238, 0.32);
}
.card {
color: @kv_text;
background-color: @kv_surface;
background-image: linear-gradient(160deg, rgba(12, 31, 37, 0.98), rgba(5, 15, 18, 0.98));
border: 1px solid @kv_border;
border-radius: 10px;
box-shadow: 0 16px 42px rgba(0, 0, 0, 0.34);
}
.queue-card {
border-top: 2px solid @kv_border_strong;
padding: 16px;
}
.queue-title {
color: @kv_text;
font-size: 18px;
font-weight: 700;
}
.queue-count {
color: @kv_accent_bright;
background-color: rgba(22, 217, 238, 0.08);
border: 1px solid @kv_border_strong;
border-radius: 6px;
font-family: monospace;
font-size: 11px;
font-weight: 700;
padding: 5px 8px;
}
.queue-search {
color: @kv_text;
background-color: #041014;
border: 1px solid @kv_border;
border-radius: 8px;
min-height: 40px;
padding: 0 10px;
box-shadow: inset 0 1px rgba(255, 255, 255, 0.025);
}
.queue-search:focus-visible {
border-color: @kv_accent;
box-shadow: 0 0 0 2px rgba(22, 217, 238, 0.18);
}
entry.search.queue-search:focus,
entry.search.queue-search:focus-within,
.queue-search:focus-within {
border-color: @kv_accent;
outline-color: @kv_accent_bright;
box-shadow: 0 0 0 2px rgba(22, 217, 238, 0.18);
}
.queue-search image {
color: @kv_text_secondary;
}
.queue-empty {
color: @kv_text_secondary;
background-color: rgba(3, 12, 15, 0.7);
border: 1px dashed @kv_border;
border-radius: 8px;
padding: 28px 18px;
}
.queue-action {
color: @kv_text_secondary;
background-color: rgba(5, 15, 18, 0.84);
border: 1px solid @kv_border;
border-radius: 7px;
font-family: monospace;
font-size: 11px;
font-weight: 700;
letter-spacing: 0.8px;
min-height: 38px;
min-width: 44px;
padding: 3px 10px;
}
.queue-action:hover {
color: @kv_accent_bright;
background-color: @kv_surface_hover;
border-color: @kv_border_strong;
}
.drop-active .card {
border-color: @kv_accent;
box-shadow: 0 0 0 2px rgba(22, 217, 238, 0.18), 0 20px 52px rgba(0, 0, 0, 0.42);
}
.drop-active .viewport {
border-color: @kv_accent_bright;
box-shadow: inset 0 0 48px rgba(22, 217, 238, 0.09);
}
.queue-row {
color: #dffcff;
background-color: rgba(3, 12, 15, 0.78);
border: 1px solid transparent;
border-radius: 7px;
padding: 11px 10px;
margin: 2px 1px;
}
.queue-row:hover {
color: @kv_text;
background-color: @kv_surface_hover;
border-color: rgba(33, 96, 108, 0.68);
}
.queue-row:selected {
color: #ffffff;
background-color: #0c2d35;
border-color: @kv_border_strong;
box-shadow: inset 3px 0 @kv_accent;
}
.queue-row.now-playing {
color: @kv_text;
background-color: rgba(9, 40, 48, 0.86);
border-color: rgba(22, 217, 238, 0.34);
box-shadow: inset 3px 0 @kv_accent;
}
.queue-row.now-playing:selected {
background-color: #0c3540;
border-color: @kv_accent;
}
.queue-playing {
color: @kv_accent_bright;
font-family: monospace;
font-size: 11px;
font-weight: 700;
letter-spacing: 0.7px;
}
.queue-progress,
.queue-progress trough {
background-color: #10272d;
border: 0;
border-radius: 99px;
min-height: 3px;
}
.queue-progress progress,
.queue-progress highlight {
background-color: @kv_accent;
border: 0;
border-radius: 99px;
min-height: 3px;
}
.queue-card scrolledwindow,
.queue-card viewport,
.queue-card list,
.queue-card listbox {
color: #dffcff;
background-color: rgba(3, 12, 15, 0.68);
}
.queue-card scrolledwindow {
border: 1px solid @kv_border;
border-radius: 8px;
}
.queue-index {
color: @kv_text_tertiary;
font-family: monospace;
font-size: 12px;
font-weight: 600;
}
.player-card {
border-top: 2px solid @kv_accent;
padding: 14px;
}
.viewport {
color: @kv_text;
background-color: #000000;
border: 1px solid @kv_border_strong;
border-radius: 8px;
box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.015);
}
.player-overlay {
color: @kv_text;
background-color: transparent;
}
.player-chrome {
color: @kv_text;
background-color: rgba(0, 5, 7, 0.72);
background-image: linear-gradient(180deg, rgba(0, 4, 6, 0.12), rgba(0, 4, 6, 0.86));
border-top: 1px solid rgba(108, 243, 255, 0.12);
padding: 22px 18px 16px;
text-shadow: 0 1px 4px rgba(0, 0, 0, 0.9);
}
.chrome-revealer {
color: @kv_text;
background-color: transparent;
}
.chrome-revealer .transport {
background-color: rgba(2, 10, 13, 0.86);
border-color: rgba(33, 96, 108, 0.72);
box-shadow: 0 10px 30px rgba(0, 0, 0, 0.42);
}
.loading-overlay {
color: @kv_text;
background-color: rgba(0, 4, 6, 0.74);
padding: 28px;
}
.loading-overlay spinner {
color: @kv_accent;
min-width: 32px;
min-height: 32px;
}
.empty-screen {
color: @kv_text;
background-color: @kv_canvas;
background-image: radial-gradient(ellipse at center, #0a1b20 0%, #020708 55%, #000000 100%);
padding: 32px;
}
.empty-mark {
color: @kv_accent_bright;
background-color: rgba(22, 217, 238, 0.045);
border: 1px solid @kv_border_strong;
border-radius: 9px;
box-shadow: 0 0 28px rgba(22, 217, 238, 0.12);
font-size: 30px;
font-weight: 800;
padding: 12px 20px;
}
.error-screen {
color: @kv_text;
background-color: #080609;
background-image: radial-gradient(ellipse at center, #241016 0%, #090609 52%, #020304 100%);
padding: 32px;
}
.error-mark {
color: @kv_error;
background-color: rgba(255, 135, 151, 0.07);
border: 1px solid rgba(255, 135, 151, 0.55);
border-radius: 99px;
box-shadow: 0 0 26px rgba(255, 135, 151, 0.12);
font-size: 24px;
font-weight: 800;
min-height: 48px;
min-width: 48px;
}
.video-title {
color: @kv_text;
font-size: 21px;
font-weight: 750;
}
.video-detail {
color: @kv_text_secondary;
font-family: monospace;
font-size: 12px;
letter-spacing: 0.6px;
}
.transport {
color: @kv_text;
background-color: rgba(3, 12, 15, 0.92);
border: 1px solid @kv_border;
border-radius: 9px;
padding: 7px 9px;
}
.transport-group {
background-color: rgba(13, 37, 44, 0.62);
border: 1px solid rgba(33, 96, 108, 0.5);
border-radius: 8px;
padding: 3px;
}
.transport-group button {
background-color: transparent;
border-color: transparent;
}
.transport-group button:hover {
background-color: @kv_surface_hover;
border-color: @kv_border_strong;
}
button {
color: #dffcff;
background-color: #0a1c21;
background-image: linear-gradient(180deg, rgba(17, 47, 55, 0.9), rgba(7, 24, 29, 0.9));
border: 1px solid #24525d;
border-radius: 7px;
box-shadow: none;
min-height: 40px;
min-width: 40px;
padding: 4px 11px;
}
button:hover {
color: #ffffff;
background-color: @kv_surface_hover;
background-image: linear-gradient(180deg, #15343c, #0c252c);
border-color: #2da6b7;
}
button:active,
button.active,
button:checked {
color: #001014;
background-color: @kv_accent;
background-image: none;
border-color: @kv_accent_bright;
}
.primary-button {
color: #001014;
background-color: @kv_accent;
background-image: linear-gradient(145deg, @kv_accent_bright, @kv_accent);
border-color: @kv_accent_bright;
border-radius: 9px;
box-shadow: 0 4px 18px rgba(22, 217, 238, 0.2);
min-height: 48px;
min-width: 48px;
}
.primary-button:hover {
color: #001014;
background-color: @kv_accent_bright;
background-image: none;
border-color: #d5fcff;
box-shadow: 0 5px 24px rgba(22, 217, 238, 0.3);
}
.add-button {
color: @kv_accent_bright;
background-color: #0a2830;
border-color: #247889;
font-weight: 700;
}
.subtitle-button {
color: #a9d5db;
}
.subtitle-button > button,
.speed-button > button,
.compact-action > button {
color: inherit;
background-color: inherit;
background-image: none;
border-color: inherit;
border-radius: inherit;
min-height: inherit;
min-width: inherit;
}
.subtitle-button.active > button {
color: #001014;
background-color: @kv_accent;
border-color: @kv_accent_bright;
}
.mode-button {
color: #a2e4ec;
font-family: monospace;
font-size: 11px;
font-weight: 700;
letter-spacing: 0.8px;
}
.speed-button {
color: @kv_accent_bright;
font-family: monospace;
font-size: 11px;
font-weight: 800;
min-width: 52px;
}
.compact-action {
color: @kv_text_secondary;
background-color: rgba(5, 18, 22, 0.76);
border-color: rgba(33, 96, 108, 0.72);
border-radius: 8px;
min-height: 40px;
min-width: 40px;
padding: 3px 8px;
}
.compact-action:hover {
color: @kv_accent_bright;
background-color: rgba(13, 42, 50, 0.92);
}
scale trough {
background-color: #102a31;
border: 0;
border-radius: 99px;
min-height: 6px;
}
scale highlight {
background-color: @kv_accent;
border: 0;
border-radius: 99px;
}
scale slider {
background-color: #eaffff;
border: 2px solid @kv_accent;
border-radius: 99px;
box-shadow: 0 1px 8px rgba(22, 217, 238, 0.38);
min-width: 16px;
min-height: 16px;
margin: -6px;
}
scale:hover slider {
background-color: #ffffff;
border-color: @kv_accent_bright;
min-width: 18px;
min-height: 18px;
margin: -7px;
}
.status-pill {
color: @kv_accent_bright;
background-color: rgba(22, 217, 238, 0.09);
border: 1px solid rgba(22, 217, 238, 0.32);
border-radius: 99px;
font-family: monospace;
font-size: 11px;
font-weight: 700;
letter-spacing: 0.8px;
padding: 6px 11px;
}
.status-pill.loading {
color: @kv_warning;
background-color: rgba(242, 199, 110, 0.09);
border-color: rgba(242, 199, 110, 0.42);
}
.status-pill.paused {
color: #c5d9dc;
background-color: rgba(154, 189, 195, 0.09);
border-color: rgba(154, 189, 195, 0.36);
}
.status-pill.error {
color: @kv_error;
background-color: rgba(255, 135, 151, 0.08);
border-color: rgba(255, 135, 151, 0.48);
}
.popover-panel {
color: @kv_text;
background-color: #08171b;
background-image: linear-gradient(150deg, #0c2228, #061115);
border: 1px solid @kv_border_strong;
border-radius: 10px;
box-shadow: 0 18px 48px rgba(0, 0, 0, 0.56);
padding: 12px;
}
.popover-heading {
color: @kv_text_secondary;
font-family: monospace;
font-size: 11px;
font-weight: 700;
letter-spacing: 1px;
padding: 6px 8px;
}
.popover-option {
color: @kv_text;
background-color: transparent;
background-image: none;
border-color: transparent;
border-radius: 7px;
min-height: 42px;
padding: 5px 10px;
}
.popover-option:hover {
color: #ffffff;
background-color: @kv_surface_hover;
background-image: none;
border-color: @kv_border;
}
.popover-option:checked,
.popover-option.active {
color: @kv_accent_bright;
background-color: rgba(22, 217, 238, 0.1);
background-image: none;
border-color: rgba(22, 217, 238, 0.34);
}
.shortcut-key {
color: #d9f9fc;
background-color: #10272d;
border: 1px solid #315d66;
border-bottom-color: #1c424b;
border-radius: 6px;
box-shadow: 0 2px 0 #031014;
font-family: monospace;
font-size: 11px;
font-weight: 700;
min-width: 24px;
padding: 4px 7px;
}
.toast {
color: @kv_text;
background-color: rgba(8, 26, 31, 0.97);
border: 1px solid @kv_border_strong;
border-radius: 10px;
box-shadow: 0 14px 40px rgba(0, 0, 0, 0.5);
padding: 9px 11px 9px 15px;
}
.toast-action {
color: @kv_accent_bright;
background-color: rgba(22, 217, 238, 0.08);
background-image: none;
border-color: rgba(22, 217, 238, 0.28);
min-height: 38px;
}
.toast-action:hover {
color: #001014;
background-color: @kv_accent_bright;
background-image: none;
}
scrollbar {
background-color: transparent;
}
scrollbar slider {
background-color: #27525c;
border-radius: 99px;
min-width: 8px;
min-height: 24px;
}
scrollbar slider:hover {
background-color: #3b7580;
}
button:focus-visible,
entry:focus-visible,
scale:focus-visible,
.queue-row:focus-visible,
.popover-option:focus-visible,
paned.content > separator:focus-visible {
outline: 2px solid @kv_accent_bright;
outline-offset: 2px;
}
button:disabled,
entry:disabled,
scale:disabled,
.queue-row:disabled,
.popover-option:disabled,
.compact-action:disabled {
color: #668188;
border-color: #173239;
background-color: #091519;
background-image: none;
box-shadow: none;
opacity: 0.52;
}
button:disabled:hover,
.queue-action:disabled:hover,
.popover-option:disabled:hover,
.compact-action:disabled:hover {
color: #668188;
border-color: #173239;
background-color: #091519;
background-image: none;
box-shadow: none;
}
scale:disabled trough {
background-color: #142227;
}
scale:disabled highlight {
background-color: #48646a;
}
scale:disabled slider {
background-color: #73888c;
border-color: #40585e;
}
window.cinema-mode,
window.cinema-mode .app-shell,
window.cinema-mode .content {
background-color: #000000;
background-image: none;
}
window.cinema-mode .content {
padding: 0;
}
window.cinema-mode .topbar {
background-color: rgba(0, 5, 7, 0.92);
background-image: none;
border-bottom-color: rgba(108, 243, 255, 0.1);
padding: 7px 12px;
box-shadow: none;
}
window.cinema-mode .player-card {
background-color: #000000;
background-image: none;
border: 0;
border-radius: 0;
box-shadow: none;
padding: 0;
}
window.cinema-mode .viewport {
border: 0;
border-radius: 0;
box-shadow: none;
}
window.cinema-mode .player-chrome {
background-color: transparent;
background-image: linear-gradient(180deg, rgba(0, 0, 0, 0), rgba(0, 4, 6, 0.9));
border: 0;
padding: 42px 28px 24px;
}
window.widget-mode .content {
padding: 6px;
}
window.widget-mode .card,
window.widget-mode .player-card {
border-radius: 8px;
box-shadow: 0 10px 32px rgba(0, 0, 0, 0.42);
}
window.widget-mode .player-card {
padding: 7px;
}
window.widget-mode .viewport {
border-radius: 6px;
}
window.widget-mode .transport {
background-color: rgba(2, 10, 13, 0.94);
border-radius: 7px;
padding: 4px 6px;
}
window.widget-mode .topbar {
padding: 7px 9px;
}
window.widget-mode .brand-mark {
font-size: 11px;
padding: 5px 7px;
}
window.widget-mode .brand {
font-size: 14px;
letter-spacing: 1.4px;
}
window.widget-mode .brand-subtitle {
font-size: 10px;
}
window.widget-mode .video-title {
font-size: 16px;
}
window.widget-mode button,
window.widget-mode .compact-action {
min-height: 40px;
min-width: 40px;
}
window.widget-mode .primary-button {
min-height: 44px;
min-width: 44px;
}
.ab-chip {
color: @kv_accent_bright;
background-color: rgba(22, 217, 238, 0.12);
border: 1px solid @kv_border_strong;
border-radius: 7px;
font-family: monospace;
font-size: 11px;
font-weight: 700;
letter-spacing: 0.8px;
padding: 8px 11px;
margin-right: 2px;
}
.jump-dialog {
background-color: @kv_surface;
border: 1px solid @kv_border;
border-radius: 12px;
}
.jump-content {
padding: 16px;
}
.jump-content entry {
background-color: @kv_surface_raised;
color: @kv_text;
border: 1px solid @kv_border;
border-radius: 8px;
padding: 9px 11px;
font-family: monospace;
}
.jump-content entry:focus-within {
border-color: @kv_accent;
box-shadow: 0 0 0 1px @kv_accent;
}