Files
parana/modules/firefox/firefox.nix
2026-07-10 20:07:29 -04:00

992 lines
35 KiB
Nix
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{ config, pkgs, lib, ... }:
let
firefoxAddons = pkgs.nur.repos.rycee.firefox-addons;
in
{
programs.firefox = {
enable = true;
profiles.default = {
bookmarks = {
force = true;
settings = [
{
name = "Toolbar";
toolbar = true;
bookmarks = [
{
name = "Dev";
bookmarks = [
{ name = "GitHub"; url = "https://github.com/gibbyDev"; }
{ name = "ChatGPT"; url = "https://chatgpt.com"; }
{ name = "Hostinger"; url = "https://hostinger.com"; }
{ name = "UpWork"; url = "https://www.upwork.com/nx/find-work/best-matches"; }
{ name = "Servers"; bookmarks = [ { name = "8080"; url = "http://localhost:8080"; } { name = "3000"; url = "http://localhost:3000"; } { name = "5000"; url = "http://localhost:5000"; } ]; }
];
}
{
name = "Personal";
bookmarks = [
{ name = "Dropbox"; url = "https://www.dropbox.com/home"; }
{ name = "Betterhelp"; url = "https://www.betterhelp.com/"; }
];
}
{
name = "Mail";
bookmarks = [
{ name = "ProtonMail"; url = "https://protonmail.com"; }
{ name = "Gmail"; url = "https://gmail.com"; }
];
}
{
name = "Social";
bookmarks = [
{ name = "LinkedIn"; url = "https://linkedin.com"; }
{ name = "YouTube"; url = "https://youtube.com"; }
{ name = "YouTube Studio"; url = "https://studio.youtube.com/channel/UCrWyV9qsJOPCF2af1gYzDeQ"; }
];
}
# You can still mix in loose bookmarks if you want
{ name = "Search"; url = "https://duckduckgo.com"; }
];
}
];
};
# ------------------------------
# ⚙️ Firefox preferences
# ------------------------------
settings = {
"places.favicons.enabled" = true;
"privacy.donottrackheader.enabled" = true;
"network.trr.mode" = 2;
"toolkit.legacyUserProfileCustomizations.stylesheets" = true;
};
# ------------------------------
# 🧩 Extensions
# ------------------------------
extensions.packages = with firefoxAddons; [
pywalfox
vimium
ublock-origin
sponsorblock
darkreader
tridactyl
youtube-shorts-block
];
userChrome = ''
/* ===================================================================
LATIN ACCENT - FIREFOX TRANSPARENT THEME
Made with cariño by Acercandr0
=================================================================== */
:root {
/* 🎯 Core Transparency */
--tabpanel-background-color: transparent !important;
--chrome-content-separator-color: transparent !important;
--toolbar-bgcolor: transparent !important;
/* 🌈 Adaptive Color System */
--accent-color: color-mix(in srgb, AccentColor 100%, transparent) !important;
--accent-color-subtle: color-mix(in srgb, AccentColor 30%, transparent) !important;
/* 💻 Opacity System */
--inactive-opacity: 0.3 !important;
--hover-opacity: 1 !important;
--semi-opacity: 0.7 !important;
/* Animation System */
--transition-smooth: all 0.3s cubic-bezier(0.4, 0, 0.2, 1) !important;
--transition-bounce: all 0.45s cubic-bezier(0.65, -0.50, 0.260, 1.50) !important;
--transition-quick: all 0.15s ease-out !important;
/* 📐 Layout Constants */
--border-radius: 5px;
--border-radius-large: 7px;
/* 🔍 Outline & Border System */
--border-outline-width: 1px;
/* 🎨 Adaptive Interface Colors - Light/Dark aware */
--base-bg: light-dark(rgb(245, 245, 245), rgb(20, 20, 20));
--panel-bg: color-mix(in srgb, var(--accent-color) 1%, var(--base-bg) 99%) !important;
--panel-border: var(--accent-color) !important;
--panel-text: light-dark(rgb(40, 40, 40), white) !important;
--hover-bg: light-dark(rgba(0, 0, 0, 0.08), rgba(255, 255, 255, 0.08)) !important;
/* 🔍 Focus System */
--focus-outline-color: var(--accent-color) !important;
--focus-outline-width: var(--border-outline-width) !important;
--toolbarbutton-icon-fill-attention: var(--accent-color) !important;
/* 📋 Dropdown Styling */
--arrowpanel-background: var(--panel-bg) !important;
--arrowpanel-border-color: var(--panel-border) !important;
--arrowpanel-color: var(--panel-text) !important;
--urlbar-open-background: var(--panel-bg) !important;
--urlbar-open-color: var(--panel-text) !important;
/* 🚫 Button Background Override */
--toolbarbutton-hover-background: transparent !important;
--toolbarbutton-active-background: transparent !important;
}
/* ===========================
🧹 GLOBAL RESETS
=========================== */
*,
#content,
#content > *,
#main-window,
#browser,
#appcontent,
#browserContainer,
#tabbrowser-tabpanels,
#tabbrowser-tabbox,
#tabbrowser-arrowscrollbox,
.tabbrowser-tabs,
.webRenderCompositor,
.browserContainer,
.browserStack,
#webrtcIndicator,
#navigator-toolbox,
#TabsToolbar,
#PersonalToolbar {
box-shadow: none !important;
filter: none !important;
}
/* ===========================
📑 TAB SYSTEM
=========================== */
#navigator-toolbox,
#TabsToolbar,
#nav-bar {
border: none !important;
}
/* Tab Layout */
.titlebar-spacer[type="pre-tabs"] {
width: 1px !important;
}
/* Mimized window tab spacing */
#main-window[sizemode="maximized"] #TabsToolbar {
padding-left: 2px !important;
}
#main-window[sizemode="maximized"] .tabbrowser-tabs {
margin-left: 0 !important;
}
/* Post-tabs spacer - Windows */
@supports not (-moz-bool-pref: "widget.macos.titlebar-blend") {
.titlebar-spacer[type="post-tabs"] {
width: 40px !important;
}
}
/* Pre-tabs spacer - macOS */
@supports (-moz-bool-pref: "widget.macos.titlebar-blend") {
.titlebar-spacer[type="pre-tabs"] {
width: 80px !important;
}
.titlebar-spacer[type="post-tabs"] {
width: 1px !important;
}
}
/* Base Tab Styling */
.tabbrowser-tab {
transition: var(--transition-smooth) !important;
position: relative;
}
/* Active Tab */
.tabbrowser-tab[selected="true"] .tab-background {
border: var(--border-outline-width) solid var(--accent-color) !important;
background: transparent !important;
border-radius: var(--border-radius) !important;
animation: tabActivate 0.3s ease-out;
}
/* Inactive Tabs */
.tabbrowser-tab:not([selected]) .tab-icon-image,
.tabbrowser-tab:not([selected]) .tab-label,
#tabs-newtab-button {
opacity: var(--inactive-opacity) !important;
transition: var(--transition-smooth) !important;
}
/* Tab Hover Effects */
.tabbrowser-tab:hover .tab-text,
.tabbrowser-tab:hover .tab-icon-image,
#tabs-newtab-button:hover {
opacity: var(--hover-opacity) !important;
}
/* Tab Close Button */
.tabbrowser-tab .tab-close-button {
opacity: 0 !important;
visibility: hidden !important;
transform: scale(0.8) rotate(30deg) !important;
transition: var(--transition-bounce) !important;
}
.tabbrowser-tab:hover .tab-close-button {
opacity: var(--semi-opacity) !important;
visibility: visible !important;
transform: scale(1) rotate(0deg) !important;
}
.tabbrowser-tab .tab-close-button:hover {
opacity: var(--hover-opacity) !important;
transform: scale(1.1) !important;
}
/* ===========================
🏷 TAB GROUPS STYLING
=========================== */
/* Hide original underline */
.tab-group-line {
display: none !important;
}
/* Hide label underline */
.tab-group-label-container {
#tabbrowser-tabs:is([orient="horizontal"], [orient="vertical"]:not([expanded])) tab-group:not([collapsed]) > &::after {
display: none !important;
}
}
/* Group outline */
tab-group:not([collapsed]) .tabbrowser-tab .tab-background {
outline: var(--border-outline-width) solid var(--tab-group-color) !important;
outline-offset: -1px !important;
}
/* Inactive tabs inside group */
tab-group:not([collapsed]) .tabbrowser-tab:not([selected]) .tab-background {
outline: var(--border-outline-width) solid color-mix(in srgb, var(--tab-group-color) 30%, transparent) !important;
outline-offset: -1px !important;
}
/* Active group tab */
tab-group:not([collapsed]) .tabbrowser-tab[selected="true"] .tab-background {
border: none !important;
outline: var(--border-outline-width) solid var(--tab-group-color) !important;
outline-offset: -1px !important;
}
/* 🏷 Label text - inactive/closed state */
.tab-group-label {
text-transform: uppercase !important;
font-weight: 500 !important;
letter-spacing: 0.5px !important;
color: light-dark(#666666, #cccccc) !important;
background-color: transparent !important;
transition: var(--transition-smooth) !important;
outline: var(--border-outline-width) solid var(--tab-group-color) !important;
outline-offset: -1px !important;
padding: 8px !important;
border-radius: var(--border-radius) !important;
}
/* 🌟 Label hover effect */
.tab-group-label-container:hover .tab-group-label {
color: light-dark(#333333, white) !important;
background-color: color-mix(in srgb, var(--tab-group-color) 35%, light-dark(white, black)) !important;
outline: var(--border-outline-width) solid var(--tab-group-color) !important;
outline-offset: -1px !important;
}
/* ===========================
📊 AUDIO TAB INDICATORS
=========================== */
/* 🔊 Sound playing (not muted) */
.tab-audio-button[soundplaying]:not([muted]) {
background-image: url("chrome://global/skin/media/audio.svg") !important;
background-repeat: no-repeat !important;
background-position: center !important;
background-size: contain !important;
-moz-context-properties: fill, stroke !important;
fill: currentColor !important;
opacity: 0.6 !important;
background-color: transparent !important;
border: none !important;
padding: 0 !important;
padding-right: 4px !important;
margin-inline-start: 4px !important;
width: 10px !important;
height: 10px !important;
display: block !important;
transform-origin: center;
}
/* 🔇 Muted tab */
.tab-audio-button[muted] {
background-image: url("chrome://global/skin/media/audio-muted.svg") !important;
background-repeat: no-repeat !important;
background-position: center !important;
background-size: contain !important;
-moz-context-properties: fill, stroke !important;
fill: var(--accent-color) !important;
opacity: 0.8 !important;
background-color: transparent !important;
border: none !important;
padding: 0 !important;
padding-right: 4px !important;
margin-inline-start: 4px !important;
width: 10px !important;
height: 10px !important;
display: block !important;
}
/* ===========================
🔍 URL BAR SYSTEM
=========================== */
/* Closed State - Force transparent background */
#urlbar:not([open]) #urlbar-background,
#urlbar:not([open]) .urlbar-background,
#searchbar:not([open]),
#urlbar[breakout][breakout-extend]:not([open]) > #urlbar-background {
background: transparent !important;
background-color: transparent !important;
background-clip: border-box !important;
}
/* Open State - Updated selectors for new Firefox versions */
#urlbar[open] > #urlbar-background,
#urlbar[breakout][breakout-extend][open] > #urlbar-background,
#urlbar[open] .urlbar-background {
background: var(--urlbar-open-background) !important;
background-color: var(--panel-bg) !important;
background-clip: border-box !important;
color: var(--urlbar-open-color) !important;
border: var(--border-outline-width) solid var(--accent-color) !important;
border-radius: var(--border-radius-large) !important;
margin: 1px !important;
animation: urlbarExpand 0.3s cubic-bezier(0.68, -0.55, 0.265, 1.55);
box-shadow: none !important;
}
/* Fix for urlbar input container when closed */
#urlbar:not([open]) #urlbar-input-container {
background: transparent !important;
background-color: transparent !important;
}
/* Search Results - always transparent background, panel shows behind */
#urlbar-results,
#urlbar-results .urlbarView,
#urlbar-results .urlbarView-body,
#urlbar-results .urlbarView-row {
background: transparent !important;
}
/* Search Results Container */
#urlbar[open] #urlbar-results,
#urlbar[open] #urlbar-results .urlbarView,
#urlbar[breakout][breakout-extend][open] #urlbar-results {
background: transparent !important;
}
#urlbar[open] #urlbar-results .urlbarView-body {
background: transparent !important;
}
/* Search Result Items */
#urlbar-results .urlbarView-row {
transition: var(--transition-quick) !important;
border-radius: var(--border-radius) !important;
margin-right: 8px !important;
}
#urlbar-results .urlbarView-row:hover {
background: var(--hover-bg) !important;
transform: translateX(4px);
margin-right: 8px !important;
}
#urlbar-searchmode-switcher {
background-color: transparent !important;
}
/* URL Input Styling */
.urlbar-input-box {
display: flex !important;
justify-content: center !important;
}
.urlbar-input {
text-align: center !important;
transition: var(--transition-smooth) !important;
}
#urlbar[focused] .urlbar-input {
transform: scale(1.02);
}
/* ===========================
📚 BOOKMARKS BAR
=========================== */
/* Personal Toolbar (Bookmarks Bar) */
#PersonalToolbar {
background: transparent !important;
border: none !important;
padding: 2px 5px !important;
}
/* Bookmark Items Container */
#PlacesToolbarItems {
display: flex !important;
align-items: center !important;
gap: 2px !important;
}
/* Individual Bookmark Items */
.bookmark-item {
background: transparent !important;
border: none !important;
border-radius: var(--border-radius) !important;
opacity: var(--inactive-opacity) !important;
transition: var(--transition-smooth) !important;
padding: 4px 8px !important;
margin: 0 1px !important;
min-height: 24px !important;
max-height: 24px !important;
display: flex !important;
align-items: center !important;
justify-content: center !important;
white-space: nowrap !important;
overflow: hidden !important;
text-overflow: ellipsis !important;
transform-origin: center !important;
flex-shrink: 0 !important;
}
/* Bookmark Icons */
.bookmark-item .toolbarbutton-icon {
width: 16px !important;
height: 16px !important;
margin-right: 4px !important;
flex-shrink: 0 !important;
}
/* Bookmark Text */
.bookmark-item .toolbarbutton-text {
font-size: 12px !important;
max-width: 120px !important;
overflow: hidden !important;
text-overflow: ellipsis !important;
white-space: nowrap !important;
}
/* Bookmark Hover - Only opacity and subtle effects */
.bookmark-item:hover {
opacity: var(--hover-opacity) !important;
background: var(--hover-bg) !important;
transform: none !important;
}
/* Bookmark Icon Color on Hover */
.bookmark-item:hover .toolbarbutton-icon {
fill: var(--accent-color) !important;
}
/* Bookmarks Chevron Button */
#PlacesChevron {
background: transparent !important;
border: none !important;
opacity: var(--inactive-opacity) !important;
transition: var(--transition-smooth) !important;
min-width: 20px !important;
max-width: 20px !important;
margin-left: 5px !important;
}
#PlacesChevron:hover {
opacity: var(--hover-opacity) !important;
background: var(--hover-bg) !important;
transform: none !important;
}
/* ===========================
🎛 REFINED BUTTON SYSTEM
=========================== */
/* 🔧 COMPREHENSIVE BUTTON SELECTOR - keeping normal behavior for urlbar buttons */
toolbarbutton:not(.bookmark-item):not([id*="identity"]):not([id*="tracking"]):not([id*="star"]):not([id*="picture"]):not([id*="reader"]),
.toolbarbutton-1:not(.bookmark-item):not([id*="identity"]):not([id*="tracking"]):not([id*="star"]):not([id*="picture"]):not([id*="reader"]),
#back-button,
#forward-button,
#reload-button,
#stop-button,
#home-button,
#library-button,
#fxa-toolbar-menu-button,
#unified-extensions-button,
#downloads-button,
#bookmarks-menu-button,
#history-panelmenu,
#appMenu-button,
#PanelUI-menu-button,
#sidebar-switcher-target toolbarbutton,
#sidebar-box .sidebar-placesTree toolbarbutton,
.sidebar-placesTreechildren toolbarbutton,
#sidebar-header .sidebar-close-button,
#sidebar-header toolbarbutton,
.sidebar-panel toolbarbutton,
#sidebar toolbarbutton,
#context-navigation toolbarbutton,
#context-sep-navigation + toolbarbutton,
.unified-extensions-item-action-button,
.panel-subview-footer-button,
toolbarpaletteitem > toolbarbutton,
.chromeclass-toolbar-additional toolbarbutton,
#addon-bar toolbarbutton,
.tabs-newtab-button,
#new-tab-button,
.tab-close-button,
.close-button,
.button-background {
background: transparent !important;
opacity: var(--inactive-opacity) !important;
transition: var(--transition-smooth) !important;
border-radius: var(--border-radius) !important;
position: relative;
overflow: hidden;
border: none !important;
box-shadow: none !important;
}
/* Keep urlbar buttons with their normal transparent behavior */
#urlbar-container toolbarbutton,
#urlbar toolbarbutton,
#identity-permission-box,
#identity-icon-box,
#tracking-protection-icon-container,
#star-button-box,
#picture-in-picture-button,
#reader-mode-button,
#pageAction-urlbar-_testpilot-containers,
#pageAction-panel-bookmark,
#pageAction-panel-copyURL,
#pageAction-panel-emailLink,
#pageAction-panel-pinTab,
#pageAction-panel-sendToDevice,
#page-action-buttons > toolbarbutton,
.urlbar-page-action {
background: transparent !important;
opacity: var(--inactive-opacity) !important;
transition: var(--transition-smooth) !important;
border-radius: var(--border-radius) !important;
border: none !important;
box-shadow: none !important;
}
/* 🚫 FORCE NO BACKGROUNDS */
#navigator-toolbox toolbarbutton:not(.bookmark-item),
#navigator-toolbox .toolbarbutton-1:not(.bookmark-item),
#nav-bar > * > toolbarbutton:not(.bookmark-item),
#nav-bar > toolbarbutton:not(.bookmark-item),
#nav-bar toolbarbutton:not(.bookmark-item),
#nav-bar .toolbarbutton-1:not(.bookmark-item),
#back-button,
#forward-button,
#reload-button,
#stop-button,
#home-button,
#library-button,
#fxa-toolbar-menu-button,
#unified-extensions-button,
#downloads-button,
#bookmarks-menu-button,
#history-panelmenu,
#appMenu-button,
#PanelUI-menu-button,
#sidebar-switcher-target toolbarbutton,
.toolbarbutton-1:not(.bookmark-item),
.button-background {
background-color: transparent !important;
background-image: none !important;
background: transparent !important;
}
#navigator-toolbox toolbarbutton:not(.bookmark-item):hover,
#navigator-toolbox .toolbarbutton-1:not(.bookmark-item):hover,
#nav-bar > * > toolbarbutton:not(.bookmark-item):hover,
#nav-bar > toolbarbutton:not(.bookmark-item):hover,
#nav-bar toolbarbutton:not(.bookmark-item):hover,
#nav-bar .toolbarbutton-1:not(.bookmark-item):hover,
#back-button:hover,
#forward-button:hover,
#reload-button:hover,
#stop-button:hover,
#home-button:hover,
#library-button:hover,
#fxa-toolbar-menu-button:hover,
#unified-extensions-button:hover,
#downloads-button:hover,
#bookmarks-menu-button:hover,
#history-panelmenu:hover,
#appMenu-button:hover,
#PanelUI-menu-button:hover,
#sidebar-switcher-target toolbarbutton:hover,
.toolbarbutton-1:not(.bookmark-item):hover,
.toolbarbutton-1:not(.bookmark-item):hover:active,
.button-background:hover {
background-color: transparent !important;
background-image: none !important;
background: transparent !important;
}
/* 🎯 REFINED HOVER EFFECTS - subtle scale only */
toolbarbutton:not(.bookmark-item):not([id*="identity"]):not([id*="tracking"]):not([id*="star"]):not([id*="picture"]):not([id*="reader"]):hover,
.toolbarbutton-1:not(.bookmark-item):not([id*="identity"]):not([id*="tracking"]):not([id*="star"]):not([id*="picture"]):not([id*="reader"]):hover,
#nav-bar toolbarbutton:not(.bookmark-item):hover,
#nav-bar-customization-target > toolbarbutton:not(.bookmark-item):hover,
#back-button:hover,
#forward-button:hover,
#reload-button:hover,
#stop-button:hover,
#home-button:hover,
#library-button:hover,
#fxa-toolbar-menu-button:hover,
#unified-extensions-button:hover,
#downloads-button:hover,
#bookmarks-menu-button:hover,
#history-panelmenu:hover,
#appMenu-button:hover,
#PanelUI-menu-button:hover,
#sidebar-switcher-target toolbarbutton:hover,
#sidebar-box .sidebar-placesTree toolbarbutton:hover,
.sidebar-placesTreechildren toolbarbutton:hover,
#sidebar-header .sidebar-close-button:hover,
#sidebar-header toolbarbutton:hover,
.sidebar-panel toolbarbutton:hover,
#sidebar toolbarbutton:hover,
#context-navigation toolbarbutton:hover,
#context-sep-navigation + toolbarbutton:hover,
.unified-extensions-item-action-button:hover,
.panel-subview-footer-button:hover,
toolbarpaletteitem > toolbarbutton:hover,
.chromeclass-toolbar-additional toolbarbutton:hover,
#addon-bar toolbarbutton:hover,
.tabs-newtab-button:hover,
#new-tab-button:hover,
.tab-close-button:hover,
.close-button:hover,
.button-background:hover {
opacity: var(--hover-opacity) !important;
transform: scale(1.05) !important;
}
/* Keep urlbar buttons transparent on hover */
#urlbar-container toolbarbutton:hover,
#urlbar toolbarbutton:hover,
#identity-permission-box:hover,
#identity-icon-box:hover,
#tracking-protection-icon-container:hover,
#star-button-box:hover,
#picture-in-picture-button:hover,
#reader-mode-button:hover,
.urlbar-page-action:hover {
opacity: var(--hover-opacity) !important;
background: transparent !important;
transform: scale(1.05) !important;
}
/* 🎨 ICON COLOR CHANGE ON HOVER */
toolbarbutton:not(.bookmark-item):hover image,
.toolbarbutton-1:not(.bookmark-item):hover image,
#nav-bar toolbarbutton:not(.bookmark-item):hover image,
#urlbar toolbarbutton:hover image,
#urlbar #identity-icon-box:hover image,
#urlbar #identity-permission-box:hover image,
#urlbar #tracking-protection-icon-container:hover image,
#urlbar #star-button-box:hover image,
#urlbar #picture-in-picture-button:hover image,
#urlbar #reader-mode-button:hover image,
.urlbar-page-action:hover image,
#sidebar toolbarbutton:hover image,
toolbarpaletteitem > toolbarbutton:hover image,
.panel-subview-footer-button:hover image {
fill: var(--accent-color) !important;
filter: none !important;
}
.button-background:hover {
& img {
fill: var(--accent-color) !important;
}
}
/* 🌟 SPECIAL STATES */
toolbarbutton[checked="true"]:not(.bookmark-item),
toolbarbutton[open="true"]:not(.bookmark-item),
.toolbarbutton-1[checked="true"]:not(.bookmark-item),
.toolbarbutton-1[open="true"]:not(.bookmark-item),
#downloads-button[attention="true"],
#library-button[attention="true"] {
opacity: var(--hover-opacity) !important;
background: var(--accent-color-subtle) !important;
}
/* ===========================
🎭 ELEMENT VISIBILITY
=========================== */
#identity-icon-box label {
display: none !important;
}
#sidebar-tools-and-extensions-splitter {
display: none !important;
}
#forward-button[disabled="true"] {
display: none !important;
}
toolbarbutton[label="Bookmarks toolbar items"] {
display: none !important;
}
/* ===========================
🎮 WINDOW CONTROLS
=========================== */
/* Normal Window */
#main-window:not([tabsintitlebar]) .titlebar-buttonbox toolbarbutton,
#main-window[tabsintitlebar]:not([sizemode="maximized"]) .titlebar-buttonbox toolbarbutton {
opacity: var(--semi-opacity) !important;
transform: scale(0.9) !important;
transition: var(--transition-smooth) !important;
fill: currentColor !important;
color: inherit !important;
}
/* Hover - Normal Window - subtle scaling */
#main-window:not([tabsintitlebar]) .titlebar-buttonbox toolbarbutton:hover,
#main-window[tabsintitlebar]:not([sizemode="maximized"]) .titlebar-buttonbox toolbarbutton:hover {
opacity: var(--hover-opacity) !important;
transform: scale(1.05) !important;
color: var(--accent-color) !important;
}
/* Maximized Window */
#main-window[tabsintitlebar][sizemode="maximized"] .titlebar-buttonbox toolbarbutton,
.titlebar-buttonbox toolbarbutton {
opacity: var(--hover-opacity) !important;
transform: scale(0.9) !important;
transition: var(--transition-smooth) !important;
fill: currentColor !important;
color: inherit !important;
}
/* Hover - Maximized Window - subtle scaling */
.titlebar-buttonbox toolbarbutton:hover {
transform: scale(1.05) !important;
color: var(--accent-color) !important;
}
/* ===========================
ANIMATIONS & KEYFRAMES
=========================== */
/* URL Bar Expand Animation */
@keyframes urlbarExpand {
0% {
opacity: 0;
transform: scale(0.95) translateY(-5px);
}
70% {
transform: scale(1.02) translateY(0);
}
100% {
opacity: 1;
transform: scale(1) translateY(0);
}
}
/* Tab Activation Animation */
@keyframes tabActivate {
0% {
transform: scale(0.98);
opacity: 0.8;
}
50% {
transform: scale(1.02);
}
100% {
transform: scale(1);
opacity: 1;
}
}
/* Dropdown Slide Animation */
#urlbar-results {
animation: slideDown 0.4s cubic-bezier(0.68, -0.55, 0.265, 1.55) !important;
}
@keyframes slideDown {
0% {
opacity: 0;
transform: translateY(-15px) scale(0.95);
}
60% {
transform: translateY(2px) scale(1.01);
}
100% {
opacity: 1;
transform: translateY(0) scale(1);
}
}
/* Loading Indicator */
.tab-throbber {
transition: var(--transition-smooth) !important;
}
.tab-throbber[busy] {
animation: pulse 1.5s ease-in-out infinite;
}
@keyframes pulse {
0%, 100% { opacity: 1; }
50% { opacity: 0.6; }
}
/* Button Press Animation */
@keyframes buttonPress {
0% { transform: scale(1); }
50% { transform: scale(0.95); }
100% { transform: scale(1.05); }
}
/* Bookmark Button Animation */
toolbarbutton:not(.bookmark-item):active,
.toolbarbutton-1:not(.bookmark-item):active {
animation: buttonPress 0.15s ease-out !important;
}
'';
userContent = ''
/* ===================================================================
LATIN ACCENT - FIREFOX TRANSPARENT THEME
Made with cariño by Acercandr0
=================================================================== */
@-moz-document url("about:home"), url("about:newtab"), url("about:blank") {
html,
body,
#root,
.outer-wrapper,
main,
.discovery-stream,
.ds-layout,
.sections-list,
.top-sites,
.search-wrapper {
background: transparent !important;
background-color: transparent !important;
background-image: none !important;
box-shadow: none !important;
filter: none !important;
border: none !important;
}
/* ===========================
🎯 TOP SITES
=========================== */
/* Remove ALL backgrounds from top sites */
.top-sites .top-site-outer,
.top-sites .top-site-inner,
.top-site-outer .tile,
.tile,
.shortcuts-refresh .top-sites-list .top-site-outer .tile,
.shortcuts-refresh .top-sites-list:not(.dnd-active) .top-site-outer:is(.active, :focus, :hover) .tile {
background: transparent !important;
background-color: transparent !important;
background-image: none !important;
box-shadow: none !important;
border: none !important;
}
/* Only opacity changes on hover */
.top-sites .top-site-outer {
opacity: 0.3 !important;
transition: opacity 0.3s ease !important;
}
.top-sites .top-site-outer:hover {
opacity: 1 !important;
}
/* Force transparent background for topsites section */
.top-sites {
--newtab-background-color-secondary: transparent !important;
}
/* ===========================
🛠 CUSTOMIZE MENU FIX
=========================== */
/* Restore proper background for customize menu */
.customize-menu,
.customize-menu.customize-animate-enter-done {
background: var(--newtab-background-color) !important;
background-color: var(--newtab-background-color) !important;
}
/* Ensure customize menu has proper styling */
.customize-menu {
box-shadow: none !important;
border: none !important;
border-radius: 0px !important;
}
/* Fix text visibility in customize menu */
.customize-menu .section-title,
.customize-menu .section-disclaimer,
.customize-menu .personalize-button,
.customize-menu label,
.customize-menu input,
.customize-menu button {
color: var(--newtab-text-primary-color) !important }
}
/* ===========================
🎭 HIDE ELEMENTS
=========================== */
/* Recent Activity */
.body-wrapper.on .section-title,
.body-wrapper.on .sections-list .section:last-of-type,
.body-wrapper.on .topics {
display: none !important;
}
/* Search bar */
.search-wrapper .search-inner-wrapper {
display: none !important;
}
'';
};
};
}