/* Source file https://github.com/MrOtherGuy/firefox-csshacks/tree/master/chrome/curved_tabs.css made available under Mozilla Public License v. 2.0 See the above repository for updates as well as full license text. */ /* Makes tabs more curvy * Set svg.context-properties.content.enabled to true in about:config, * otherwise the bottom corners will be black */ #tabbrowser-tabs{ --uc-tab-curve-size: 17px; /* 10px looks about like chromium - 17px looks close to Australis tabs */ --uc-tabs-scrollbutton-border: 0px; --tab-block-margin:0px; --tab-min-height: 34px; --uc-tab-line-color: rgb(10, 132, 255); /* This is only used when the first optional section is enabled, see below */ --uc-curve-stroke-opacity: 1; /* can be used to decrease curve border contrast */ } .tabbrowser-tab{ padding-inline: 0px !important; /* By default, proton tabs have 2px + 2px = 4px space between them */ overflow: visible !important; } .tabbrowser-tab[visuallyselected="true"]{ position: relative; z-index: 2; } .tab-background{ overflow: hidden !important; outline: none !important; box-shadow: none !important; } #TabsToolbar{ --toolbarbutton-inner-padding: 6px !important; } .titlebar-spacer[type="pre-tabs"], .tabbrowser-tab::after{ border: none !important; } .tabbrowser-tab:hover > .tab-stack::before, .tabbrowser-tab:hover > .tab-stack::after, .tabbrowser-tab[selected] > .tab-stack::before, .tabbrowser-tab[selected] > .tab-stack::after{ width: var(--uc-tab-curve-size); height: 100%; display: block; position: absolute; content: ""; fill: color-mix(in srgb, currentColor 11%, transparent); -moz-context-properties: fill,stroke,stroke-opacity; left: calc(0px - var(--uc-tab-curve-size)); background-image: url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCjxzdmcgc3Ryb2tlLXdpZHRoPSIxLjEiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQgbWVldCIgdmlld0JveD0iMCAwIDE3IDE2IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPg0KICA8cGF0aCBkPSJNMCAxNyBMMCAxNiBBMTYgMTYgMCAwIDAgMTYgMCBMIDE4IDAgTCAxOCAxNyBaIiBmaWxsPSJjb250ZXh0LWZpbGwiPjwvcGF0aD4NCiAgPHBhdGggZD0iTTAgMTYgQTE2IDE2IDAgMCAwIDE2IDAiIHN0cm9rZT0iY29udGV4dC1zdHJva2UiIHN0cm9rZS1vcGFjaXR5PSJjb250ZXh0LXN0cm9rZS1vcGFjaXR5IiBmaWxsPSJ0cmFuc3BhcmVudCI+PC9wYXRoPg0KPC9zdmc+"),var(--lwt-header-image, none); background-size: var(--uc-tab-curve-size),0; background-repeat: no-repeat,no-repeat; background-position-y: bottom, bottom -1px; background-position-x: 0,0; transform: scaleY(var(--uc-tab-vertical-transform)); stroke-opacity: var(--uc-curve-stroke-opacity); z-index:1; pointer-events: none; background-origin: border-box; } :root[lwtheme-image] .tabbrowser-tab[selected] > .tab-stack::before, :root[lwtheme-image] .tabbrowser-tab[selected] > .tab-stack::after{ background-attachment: scroll,fixed; background-size: var(--uc-tab-curve-size),auto; } :root[lwtheme-image] .tabbrowser-tab[selected] > .tab-stack::after{ background-position-y: bottom,calc(var(--tab-min-height) - 1px); } .tabbrowser-tab[selected] > .tab-stack::before, .tabbrowser-tab[selected] > .tab-stack::after{ fill: var(--tab-selected-bgcolor,var(--toolbar-bgcolor)) !important; stroke: var(--lwt-tabs-border-color,transparent); } .tabbrowser-tab[selected] > .tab-stack:-moz-lwtheme::before, .tabbrowser-tab[selected] > .tab-stack:-moz-lwtheme::after{ fill: var(--lwt-selected-tab-background-color,var(--toolbar-bgcolor)) !important; } .tabbrowser-tab[selected] > .tab-stack::after, .tabbrowser-tab:hover > .tab-stack::after{ left: auto; right: calc(0px - var(--uc-tab-curve-size)); transform: scaleX(-1); } .tabbrowser-tab:hover > stack > .tab-background, .tab-background[selected]{ border-radius: var(--uc-tab-curve-size) var(--uc-tab-curve-size) 0 0 !important; } #tabbrowser-tabs:not([positionpinnedtabs]) .tabbrowser-tab:first-child, #tabbrowser-tabs[positionpinnedtabs] .tabbrowser-tab[pinned]+.tabbrowser-tab:not([pinned]){ margin-inline-start: var(--uc-tab-curve-size) !important; } #scrollbutton-up, #scrollbutton-down{ border-block-width: var(--uc-tabs-scrollbutton-border,0px) !important; } .tab-background[selected]{ border: 1px solid var(--lwt-tabs-border-color) !important; border-bottom: none !important } .tab-context-line{ -moz-box-ordinal-group: 2; margin-block: 0 !important; } /* Annoying fix to prevent hovering of last tab to trigger tab overflow, better solution wanted */ .tabbrowser-tab[last-visible-tab]{ margin-inline-end: var(--uc-tab-curve-size) !important; } /* Move tabs a bit away from the window edge, otherwise the left-most pinned tab might be partially outside of window */ #tabbrowser-tabs[positionpinnedtabs]{ margin-left: var(--uc-tab-curve-size) } /* To counter the above, make tabs toolbar spacer a bit narrower so there won't be too much space reserved when window dragging spacers are shown */ .titlebar-spacer[type="pre-tabs"]{ width: 24px !important; } /* OPTIONAL - COLORS - show tabs border, selected tab line and make selected tab match the main toolbar color. Also disables tab shadow */ /* Using these color options requires you to set layout.css.color-mix.enabled to true in about:config */ @supports -moz-bool-pref("userchrome.curved_tabs.extra-border.enabled"){ #navigator-toolbox{ --lwt-tabs-border-color: color-mix(in srgb, currentcolor, white 50%) !important; } :root[lwtheme-brighttext] #navigator-toolbox{ --lwt-tabs-border-color: color-mix(in srgb, currentcolor, black 50%) !important; } #tabbrowser-tabs{ --lwt-selected-tab-background-color: var(--toolbar-bgcolor) } .tab-background[selected]{ border-top: none !important; --toolbar-bgcolor: transparent; } .tab-background:not(:-moz-lwtheme){ background-color: var(--lwt-selected-tab-background-color) !important; } .tabbrowser-tab[selected] > .tab-stack::before, .tabbrowser-tab[selected] > .tab-stack::after{ fill: var(--lwt-selected-tab-background-color,var(--toolbar-bgcolor)) !important; } .tabbrowser-tab[selected] > .tab-stack::before{ left: calc(1px - var(--uc-tab-curve-size)); } .tabbrowser-tab[selected] > .tab-stack::after{ right: calc(1px - var(--uc-tab-curve-size)); } .tab-background[selected]::before{ content: ""; display: flex; height: 2px; background: var(--uc-tab-line-color) !important; } #nav-bar{ box-shadow: 0 -1px 0 var(--lwt-tabs-border-color) } } /* OPTIONAL - Make some of the buttons in tabs toolbar rounded, which might look nicer especially with large curve size */ @supports -moz-bool-pref("userchrome.curved_tabs.round-buttons.enabled"){ #tabs-newtab-button > .toolbarbutton-icon, #TabsToolbar #new-tab-button > .toolbarbutton-icon, #alltabs-button > .toolbarbutton-badge-stack, .tab-close-button{ border-radius: 30px !important; } } /* OPTIONAL - uncomment the following to flip the curves vertically - maybe useful for tabs on bottom ? */ @supports -moz-bool-pref("userchrome.curved_tabs.flipped-curve.enabled"){ .tab-background{ -moz-box-direction: reverse; flex-direction: column-reverse } .tabbrowser-tab:hover > .tab-stack > .tab-background, .tab-background[selected]{ border-radius: 0 0 var(--uc-tab-curve-size) var(--uc-tab-curve-size) !important } .tabbrowser-tab > .tab-stack::before{ transform: scaleY(-1) !important; } .tabbrowser-tab > .tab-stack::after{ transform: scaleY(-1) scaleX(-1) !important; } }