@font-face { font-family: "Metropolis"; font-style: normal; font-weight: 800; src: url("/fonts/Metropolis-Medium.woff2") format("woff2"); } @font-face { font-family: "Metropolis-Light"; font-style: normal; font-weight: 300; src: url("/fonts/Metropolis-Light.woff2") format("woff2"); } @font-face { font-family: "Inter"; font-style: normal; font-weight: 400; src: url("/fonts/Inter-Regular.woff2") format("woff2"); } @font-face { font-family: "Inter-Medium"; font-style: normal; font-weight: 500; src: url("/fonts/Inter-Medium.woff2") format("woff2"); } /* General Rules and Resets */ * { font-size: inherit; margin-block-end: 0; margin-block-start: 0; margin-inline-end: 0; margin-inline-start: 0; padding-block-end: 0; padding-block-start: 0; padding-inline-end: 0; padding-inline-start: 0; } html { background-color: #fefefe; box-sizing: border-box; font-size: 12px; overscroll-behavior: none; } body { font-family: var(--fontInter); font-size: 13px; inline-size: 352px; letter-spacing: -0.125px; min-inline-size: 352px; background-color: var(--bgColor); --highlight-blue: #1296f8; --hr-grey: #cececf91; --text-grey: #262726eb; color: var(--text-grey); } html, body { block-size: 100%; /* Bugfix: issue 948 */ max-block-size: 650px; min-block-size: 300px; /* stylelint-disable */ scrollbar-width: none; /* stylelint-enable */ transition: height 0.1s ease-in-out; } :root { --fontInter: "Inter", sans-serif; --fontInterMedium: "Inter-Medium", sans-serif; --fontMetropolis: "Metropolis", sans-serif; --fontMetropolisLight: "Metropolis-Light", sans-serif; --primary-action-color: #248aeb; --title-text-color: #000; --text-normal-color: #262726; --text-heading-color: #3d3d3d; --iconArrowLeft: url("/img/arrow-icon-left.svg"); --iconArrowRight: url("/img/arrow-icon-right.svg"); --iconCloseX: url("/img/close.svg"); --iconGear: url("/img/gear-icon.svg"); --iconProxyWarning: url("/img/proxy-warning.svg"); --logoMozillaVpn: url("/img/moz-vpn-logo.svg"); --menuItemHeight: 28px; --marginInline: 16px; --footerHeight: 48px; --bgColor: #fefffe; --blue20: #0df; --blue30: #00b3f4; --blue40: #0090ed; --blue50: #0060df; --blue60: #0250bb; --blue70: #054096; --red30: #ff848b; --red40: #ff6a75; --red50: #ff4f5e; --red60: #e22850; --red70: #c50042; --alertColor: var(--red50); --primaryCtaDefault: var(--blue50); --primaryCtaHover: var(--blue60); --primaryCtaActive: var(--blue70); --primaryCtafocus: rgba(0, 97, 223, 0.4); --controllerDefault: var(--bgColor); --controllerHover: var(--grey10); --controllerActive: var(--grey20); --green50: #3fe1b0; --green60: #3ad4b3; --green70: #1cc4a0; --green80: #00a49a; --grey10: #e7e7e7; --grey20: #cececf; --grey30: #9e9e9e; --grey40: #6d6e6e; --grey50: #3d3d3d; --panelSize: 560px; --rowHeight: 48px; /* calculated from 12px */ --font-size-heading: 1.33rem; /* 16px */ --block-line-space-size: 0.5rem; /* 6px */ --inline-item-space-size: 0.5rem; /* 6px */ --block-line-separation-size: 0.33rem; /* 10px */ --inline-icon-space-size: 0.833rem; /* 10px */ /* Use for url and icon size */ --block-url-label-size: 2rem; /* 24px */ --inline-start-size: 1.66rem; /* 20px */ --inline-button-size: 5.833rem; /* 70px */ --icon-size: 1.166rem; /* 14px */ --small-text-size: 0.833rem; /* 10px */ --small-radius: 3px; --icon-button-size: calc(calc(var(--block-line-separation-size) * 2) + 1.66rem); /* 20px */ --inactive-opacity: 0.3; --overflow-size: 1px; --icon-fit: 8; background: var(--bgColor); margin-block: 0; margin-inline: 0; } *, *::before, *::after { box-sizing: inherit; } table { border: 0; border-spacing: 0; inline-size: 100%; } /* Helper Classes */ .hide { display: none !important; } .scrollable { flex: 1; inline-size: 100%; block-size: 100%; overscroll-behavior: none; overflow-y: auto; overflow-x: hidden; padding-block-end: 8px; } .offpage { opacity: 0; } [hidden] { display: none !important; } /* effect borrowed from tabs in firefox, ensure that the element flexes to the full width */ .truncate-text { inline-size: calc(100vw - 80px); overflow: hidden; position: relative; white-space: nowrap; text-overflow: ellipsis; } .truncate-text::after { background: var(--bgColor); content: " "; block-size: 100%; inline-size: 100px; inset-inline-end: 0; mask-image: linear-gradient(to right, transparent, var(--bgColor) 70%); position: absolute; } .hover-highlight:hover .truncate-text::after, .hover-highlight:focus .truncate-text::after { background-color: var(--highlight-blue); mask-image: linear-gradient(to right, transparent, var(--highlight-blue) 50%); } /* Color and icon helpers */ [data-identity-color="blue"] { --identity-tab-color: #37adff; --identity-icon-color: #37adff; } [data-identity-color="turquoise"] { --identity-tab-color: #00c79a; --identity-icon-color: #00c79a; } [data-identity-color="green"] { --identity-tab-color: #51cd00; --identity-icon-color: #51cd00; } [data-identity-color="grey"] { /* Only used for the edit panel */ --identity-icon-color: #616161; } [data-identity-color="yellow"] { --identity-tab-color: #ffcb00; --identity-icon-color: #ffcb00; } [data-identity-color="orange"] { --identity-tab-color: #ff9f00; --identity-icon-color: #ff9f00; } [data-identity-color="red"] { --identity-tab-color: #ff613d; --identity-icon-color: #ff613d; } [data-identity-color="pink"] { --identity-tab-color: #ff4bda; --identity-icon-color: #ff4bda; } [data-identity-color="purple"] { --identity-tab-color: #af51f5; --identity-icon-color: #af51f5; } [data-identity-icon="fingerprint"] { --identity-icon: url("/img/usercontext.svg#fingerprint"); } [data-identity-icon="briefcase"] { --identity-icon: url("/img/usercontext.svg#briefcase"); } [data-identity-icon="dollar"] { --identity-icon: url("/img/usercontext.svg#dollar"); } [data-identity-icon="cart"] { --identity-icon: url("/img/usercontext.svg#cart"); } [data-identity-icon="circle"] { --identity-icon: url("/img/usercontext.svg#circle"); } [data-identity-icon="food"] { --identity-icon: url("/img/usercontext.svg#food"); } [data-identity-icon="gift"] { --identity-icon: url("/img/usercontext.svg#gift"); } [data-identity-icon="vacation"] { --identity-icon: url("/img/usercontext.svg#vacation"); } [data-identity-icon="fruit"] { --identity-icon: url("/img/usercontext.svg#fruit"); } [data-identity-icon="pet"] { --identity-icon: url("/img/usercontext.svg#pet"); } [data-identity-icon="tree"] { --identity-icon: url("/img/usercontext.svg#tree"); } [data-identity-icon="chill"] { --identity-icon: url("/img/usercontext.svg#chill"); } [data-identity-icon="fence"] { --identity-icon: url("/img/usercontext.svg#fence"); } #current-tab [data-identity-icon="default-tab"] { background: center center no-repeat url("/img/blank-tab.svg"); fill: currentColor; } /* Buttons */ .button { color: var(--text-heading-color); } .button.primary { background-color: #0996f8; color: white; } .button.primary:hover, .button.primary:focus { background-color: #0675d3; } .button.secondary:hover, .button.secondary:focus { background-color: rgba(0, 0, 0, 0.05); } /* Mozilla VPN status icon */ .moz-vpn-status-icon { color: var(--text-heading-color); background-size: 17px; background-position: left center; font-size: 13px; padding-inline-start: 22px; padding-inline-end: 32px; } .moz-vpn-status-icon.connected { background-image: url("/img/moz-vpn-status-icons/moz-vpn-connected.svg"); } .moz-vpn-status-icon.disconnected { background-image: url("/img/moz-vpn-status-icons/moz-vpn-disconnected.svg"); } .moz-vpn-logotype.vpn-status-container-list { color: var(--text-heading-color); background-size: 16px; background-position: left center; font-size: 12px; padding-inline-start: 19px; padding-inline-end: 22px; margin-inline-end: 20px; align-items: center; } .moz-vpn-connection-status-indicator.container-list-status-icon { block-size: 16px; inline-size: 16px; } /* Toggle Switch */ .switch { display: inline-block; block-size: 24px; position: relative; inline-size: 45px; } .switch .switch-input { block-size: 0; opacity: 0; inline-size: 0; } .slider { background-color: var(--grey20); border-radius: 24px; inset-block-end: 0; box-shadow: 0 0 0 2px var(--bgColor), 0 0 0 4px var(--bgColor); inset-inline-start: 0; position: absolute; inset-inline-end: 0; inset-block-start: 0; transition: 0.1s ease-in-out; } .slider::before { background-color: #fff; border-radius: 50%; inset-block-end: 3px; content: ""; block-size: 18px; inset-inline-start: 3px; position: absolute; transition: 0.1s ease-in-out; inline-size: 18px; } input:hover + .slider { background-color: var(--grey30); } input:focus + .slider { box-shadow: 0 0 0 2px var(--bgColor), 0 0 0 4px var(--grey30); } input:active + .slider { background-color: var(--grey40); } input:checked + .slider { background-color: var(--green50); } input:checked:hover + .slider { background-color: var(--green60); } input:checked:focus + .slider { box-shadow: 0 0 0 2px var(--bgColor), 0 0 0 4px var(--green70); } input:checked:active + .slider { background-color: var(--green70); } input:checked + .slider::before { transform: translateX(21px); } .hidden { visibility: hidden; } /* Primary CTA Buttons */ .primary-cta { block-size: 32px; background-color: var(--primaryCtaDefault); border: transparent; border-radius: 4px; color: #fff; transition: background-color 0.2s ease-in-out; } .primary-cta:hover { background-color: var(--primaryCtaHover); } .primary-cta:focus { outline: none; box-shadow: 0 0 0 1px var(--blue60), 0 0 0 4px var(--primaryCtafocus); } .primary-cta:active { background-color: var(--primaryCtaActive); } /* Mozilla VPN tout */ #moz-vpn-tout { opacity: 0; background-color: var(--bgColor); visibility: visible; max-block-size: 500px; position: absolute; inset-block-end: var(--footerHeight); inset-inline-start: 0; inset-inline-end: 0; box-shadow: 0 0 7px 0 #9498a25e; animation: appear 0.2s ease-out 0.5s forwards; transition: opacity 0.1s ease-in-out, max-height 0.3s ease-in-out; } @keyframes appear { 0% { opacity: 0; transform: translateY(10%); } 100% { opacity: 1; transform: translateY(0%); } } /* Mozilla VPN Controller UI in Container Management Panel */ .moz-vpn-content, .moz-vpn-controller-content { display: flex; position: relative; flex-direction: column; padding-block: 16px; transition: max-height 0.3s ease-in-out, padding-block-end 0.2s ease-in-out; box-shadow: 0 0 0 1px var(--hr-grey); } .moz-vpn-connection-status-indicator { position: absolute; inset-inline-end: 0; background-position: center center; background-repeat: no-repeat; background-size: contain; size: 0; color: rgba(0, 0, 0, 0); block-size: 24px; inline-size: 24px; } .current-country-flag { display: inline-block; background-repeat: no-repeat; background-position: left center; background-size: contain; block-size: 16px; inline-size: 16px; } .moz-vpn-controller-content.show-server-button { padding-block-end: 56px; transition: 0.2s ease-in-out; } .dismiss-moz-vpn-tout { margin-inline-start: auto; block-size: 24px; inline-size: 24px; background: var(--bgColor); background-image: var(--iconCloseX); border: none; border-radius: 4px; } .flag-img { block-size: 13px; margin-inline-end: 4px; opacity: 0.9; } .page-action-flag { margin-inline-end: var(--marginInline); } .display-none { display: none; } .proxy-disabled { opacity: 0.4; } fieldset.proxies { position: absolute; inset-block-start: 120px; inset-inline-start: 0; inset-inline-end: 0; block-size: 60px; display: flex; background: #5cabff; justify-content: center; align-content: center; align-items: center; flex-direction: row; pointer-events: none; } input.proxies { font-size: 6px; block-size: 20px; max-block-size: 20px; padding-block: 0 !important; padding-inline: 0 !important; display: inline-flex; inline-size: 40% !important; pointer-events: none; } .moz-vpn-cta { block-size: 32px; margin-block-start: 16px; margin-block-end: 4px; margin-inline: var(--marginInline); text-align: center; } .apply-to-container { block-size: 32px; inline-size: 100%; text-align: center; margin-block: 16px; } #moz-vpn-current-server { align-items: center; border: none; display: flex; block-size: 48px; margin-block-start: 8px; background-image: var(--iconArrowRight); background-position: calc(100% - 24px) center; background-repeat: no-repeat; background-size: 9px; outline: none; padding-inline-start: 20px; visibility: visible; position: absolute; inset-block-end: 0; inline-size: 100%; opacity: 0; transition: opacity 0.2s ease-in-out; } .moz-vpn-controller-content.show-server-button #moz-vpn-current-server { opacity: 1; } .moz-vpn-controller-content.show-server-button #moz-vpn-current-server[disabled] { opacity: 0.5; cursor: not-allowed; } @keyframes serverButtonAppear { 0% { opacity: 0; visibility: hidden; z-index: -1; } 90% { z-index: -1; visibility: hidden; } 100% { visibility: visible; z-index: 1; opacity: 1; } } #moz-vpn-current-server.hidden { block-size: 0; opacity: 0; visibility: hidden; z-index: -1; } .current-city-name { padding-inline-start: 12px; } .collapsible-content { max-block-size: 0; opacity: 0; visibility: hidden; display: none; background-color: var(--bgColor); transition: max-height 0.2s ease-in-out, opacity 0.2s ease-in-out, visibility 0.2s ease-in-out; } .moz-vpn-subtitle { font-size: 12px; flex: 0 1 80%; color: var(--text-normal-color); } .collapsible-content > .flx-row.flx-space-between { inline-size: calc(100% - 40px); margin-inline: auto; padding-block-start: 12px; } [disabled] { pointer-events: none; opacity: 0.5; } #current-proxy { font-size: 12px; color: var(--grey30); line-height: 13px; } .expanded .collapsible-content { display: flex; max-block-size: 500px; opacity: 1; visibility: visible; } .hide-label, .show-label { line-height: 100%; position: absolute; inset-inline-end: 0; transition: visibility 0.2s ease-in-out, color 0.2s ease-in-out, opacity 0.2s ease-in-out; } .expanded .hide-label, .show-label { visibility: visible; opacity: 1; } /* stylelint-disable */ .hide-label, .expanded .show-label { visibility: hidden; opacity: 0; } /* stylelint-enable */ .expand-collapse { inline-size: 50%; margin-inline-start: auto; pointer-events: all; } .button-wrapper { margin-inline: 20px; } /* Advanced Proxy Settings Button */ #edit-advanced-proxy-input { padding-inline-end: 40px; } #edit-advanced-proxy-input.valid:focus { box-shadow: 0 0 0 3px #3fe1b030; border-color: var(--green80); } .advanced-proxy-settings-btn { background-color: var(--bgColor); box-shadow: 0 0 0 1px var(--hr-grey); background-image: var(--iconGear), var(--iconArrowRight); background-position: 16px center, calc(100% - 24px) center; background-repeat: no-repeat; background-size: 24px 24px, 9px; border: none; color: var(--text-grey); block-size: 56px; min-block-size: 56px; line-height: 19px; display: flex; flex-direction: column; justify-content: center; outline: none; padding-inline-start: 44px; z-index: 2; transition: opacity 0.1s ease-in-out, background-color 0.1s ease-in-out; } .disabled { opacity: 0.5; cursor: not-allowed; pointer-events: none; } .advanced-proxy-settings-btn:hover, .advanced-proxy-settings-btn:focus { background-color: var(--grey10); outline: none; } #clear-advanced-proxy-input { position: absolute; inset-inline-end: 8px; inset-block-start: 7px; border: none; block-size: 22px; inline-size: 22px; border-radius: 50%; background-image: var(--iconCloseX); background-repeat: no-repeat; background-position: center center; background-size: 16px; font-size: 1; color: var(--bgColor); } .proxy-title-container-color { block-size: 12px; inline-size: 12px; z-index: 10; border-radius: 50%; } .advanced-proxy-panel-content { padding-block: 16px; padding-inline: 20px; margin-block-start: 56px; display: flex; flex-direction: column; } .advanced-proxy-input-wrapper { margin-block-start: 12px; position: relative; display: flex; flex-direction: column; } .proxy-validity { position: absolute; inset-block-start: 42px; inset-inline-start: 16px; visibility: hidden; opacity: 0; background-color: var(--alertColor); color: white; border-radius: 4px; padding-block: 2px; padding-inline: 4px; transition: opacity 0.2s ease-in-out, visibility 0.2s ease-in-out; } .proxy-validity::after { content: ""; block-size: 8px; inline-size: 8px; background-color: var(--alertColor); inset-block-start: -4px; position: absolute; transform: rotate(45deg); inset-inline-start: 12px; } .invalid .proxy-validity { opacity: 1; z-index: 10; visibility: visible; } .invalid .proxy-host.primary-input { border-color: var(--red50); box-shadow: 0 0 0 3px #ff848b70; } .invalid button { pointer-events: none; opacity: 0.5; } /* Mozilla VPN Server list */ .moz-vpn-logo, .moz-vpn-logotype { color: var(--text-heading-color); background-image: var(--logoMozillaVpn); background-repeat: no-repeat; background-size: 24px; background-position: left center; font-family: var(--fontMetropolis); font-size: 15px; line-height: 24px; padding-inline-start: 28px; position: relative; padding-inline-end: 32px; } #moz-vpn-server-list-panel { block-size: var(--panelSize); max-block-size: var(--panelSize); min-block-size: var(--panelSize); overflow-x: hidden; overflow-y: hidden; } .proxy-panel-title { line-height: var(--rowHeight); block-size: var(--rowHeight); border-block-end: 1px solid var(--hr-grey); position: fixed; z-index: 1; background-color: var(--bgColor); box-shadow: 0 0 13px -2px #b5b5b500; transition: box-shadow 0.5s ease; } .drop-shadow { box-shadow: 0 0 13px -2px #b5b5b54d; } .moz-vpn-server-list { padding-block-start: 4px; font-size: 15px; color: var(--grey50); position: absolute; inset-block-start: var(--rowHeight); inset-inline-start: 0; inset-inline-end: 0; overflow: scroll; overflow-x: hidden; overscroll-behavior: none; block-size: calc(var(--panelSize) - var(--rowHeight)); min-block-size: calc(var(--panelSize) - var(--rowHeight)); } #moz-vpn-return { z-index: 2; } .server-list-item { display: flex; flex-direction: column; position: relative; background-color: var(--bgColor); } .server-country-flag { inline-size: 16px; margin-inline-start: 16px; margin-block: auto; pointer-events: none; } .server-country-name { padding-block: 0; padding-inline-end: 0; padding-inline-start: 20px; font-family: var(--fontMetropolis); pointer-events: none; color: var(--text-heading-color); } .server-city-list-item, .server-city-list-visibility-btn { block-size: 40px; margin-block-start: 4px; margin-block-end: 4px; margin-inline-start: 8px; margin-inline-end: 8px; inline-size: calc(100% - 16px); } .server-city-list-visibility-btn { display: flex; background-color: var(--bgColor); border-radius: 4px; border: none; transition: background-color 0.3s ease; } .server-city-list-visibility-btn:hover { background-color: var(--grey10); } .server-city-list-visibility-btn:active { background-color: var(--grey20); } .toggle { background-image: url("/img/arrow-toggle.svg"); background-position: center center; background-repeat: no-repeat; block-size: 24px; margin-inline-start: 8px; pointer-events: none; transform: rotate(-90deg); transition: transform 0.275s ease-in-out; inline-size: 24px; } .expanded .toggle { transform: rotate(0deg); } .server-city-list { block-size: 0; opacity: 0; transition: height 0.3s ease-in-out, opacity 0.3s ease, visibility 0.4s ease; list-style-type: none; visibility: hidden; } .expanded .server-city-list { opacity: 1; visibility: visible; } .server-city-list-item { align-items: center; display: flex; position: relative; } .server-city-name { font-family: var(--fontMetropolisLight); font-weight: 300; color: var(--text-grey); padding-inline-start: 18px; } /* ----- controller buttons ------- */ .controller { background-color: var(--bgColor); color: var(--text-grey); transition: background-color 0.1s ease-in-out; } .controller:hover, .controller:focus { background-color: var(--controllerHover); } .controller:active { background-color: var(--controllerActive); } /* WARNING MODAL ---- */ .modal-warning { position: absolute; inset-block-start: 0; inset-block-end: 0; inset-inline-start: 0; background-color: #42404c89; z-index: 4; display: flex; justify-content: center; } .modal-content { background-color: var(--bgColor); inline-size: 80%; block-size: 80%; margin-inline: auto; margin-block: auto; border-radius: 16px; box-shadow: 1px 2px 10px 10px var(--bgDark); padding-block: 20px; padding-inline: 20px; display: flex; justify-content: center; align-items: center; flex-direction: column; } /* ----- MozillaVPN Proxy Unavailable-Specific -------- */ [data-moz-proxy-warning="proxy-unavailable"] { position: relative; } .flag-img.proxy-unavailable { opacity: 0.5; } /* ----- MozillaVPN Status Tooltips -------- */ .tooltip { opacity: 0; position: absolute; z-index: 10; inset-block-start: 24px; inset-inline-end: -3px; font-size: 11px; font-family: var(--fontInter) !important; font-weight: 300; color: var(--text-normal-color); background-color: var(--bgColor); padding-inline: 8px; padding-block: 4px; border-radius: 4px; box-shadow: 0 0 12px 3px #0000001c; transform: translateY(-2px); transition: opacity 0.2s ease-in-out, transform 0.2s ease-in-out; min-inline-size: 170px; line-height: 1.3; text-align: center; pointer-events: none; } .tooltip::before { content: ""; block-size: 7px; inline-size: 7px; border-radius: 1px; transform: rotate(45deg); background: inherit; position: absolute; inset-block-start: -3px; inset-inline-end: 9px; } [data-moz-proxy-warning="proxy-unavailable"]:hover .tooltip, [data-moz-proxy-warning="proxy-unavailable"]:active .tooltip { opacity: 1; transform: translateY(0); transition: opacity 0.2s ease-in-out 0.5s, transform 0.2s ease-in-out 0.5s; } .moz-vpn-logotype.vpn-status-container-list:hover .tooltip { opacity: 1; transform: translateY(0); transition: opacity 0.2s ease-in-out 1s, transform 0.2s ease-in-out 1s; } .tooltip.proxy-unavailable::after { inset-inline-start: 4px; inset-inline-end: auto; } .tooltip.proxy-unavailable::before { inset-inline-start: 12px; } .tooltip.proxy-unavailable { inset-inline-start: 32px; inset-block-start: 32px; padding-inline-start: 32px; text-align: left; background-image: var(--iconProxyWarning); background-size: 24px 24px; background-repeat: no-repeat; background-position: 4px 4px; } /* ------------ SERVER LIST RADIO BUTTONS ------------ */ .server-radio-btn { block-size: 20px; opacity: 0; position: fixed; inline-size: 20px; } .server-radio-control { border-radius: 50%; border: 2px solid var(--grey40); block-size: 20px; margin-inline-start: 46px; pointer-events: none; position: relative; inline-size: 20px; transition: border 0.1s ease-in-out; } .server-radio-btn:checked + .server-radio-control { border-color: var(--primaryCtaDefault); transition: border-color 0.2s ease; } .server-radio-control::after { background-color: var(--grey40); border-radius: 50%; inset-block-end: 0; content: ""; block-size: 12px; inset-inline-start: 0; margin-inline: auto; margin-block: auto; opacity: 0; position: absolute; inset-inline-end: 0; inset-block-start: 0; transition: opacity 0.1s ease-in-out; inline-size: 12px; } /* Unchecked radio button styles */ .server-city-list-item:hover .server-radio-control { border: 2px solid var(--grey50); } .server-city-list-item:hover .server-radio-control::after { opacity: 0.3; } .server-city-list-item:active .server-radio-control::after { opacity: 0.5; } /* Checked radio button rules */ .server-city-list-item:hover .server-radio-btn:checked + .server-radio-control { border: 2px solid var(--primaryCtaDefault); } .server-radio-btn:checked + .server-radio-control::after { background-color: var(--primaryCtaDefault); opacity: 1; } /* Helpers */ .add-bg-color { background-color: var(--bgColor); z-index: 2; } .flx-space-between { justify-content: space-between; } .flx-row { align-items: center; display: flex; flex-direction: row; } /* stylelint-disable */ v-padding-hack16 { block-size: 16px; } v-padding-hack-4 { block-size: 4px; inline-size: 100%; } v-padding-hack-footer { block-size: var(--footerHeight); inline-size: 100%; } /* stylelint-enable */ .flx-col { display: flex; flex-direction: column; } fieldset, .options-header { padding-block-end: 16px; } .options-header { display: none; } /* ------ Input ----- */ input[type=text] { block-size: 36px; border-radius: 4px; background-color: var(--bgColor); color: var(--text-grey); padding-block: 8px; padding-inline: 8px; } /* Blue links */ .blue-link { box-sizing: content-box; text-decoration: none; align-items: center; background-color: transparent; border: none; color: var(--primaryCtaDefault); display: flex; block-size: 24px; line-height: 24px; position: relative; margin-inline: auto; transition: color 0.1s ease-in-out; } .blue-link, .hide-show-label { block-size: 24px; line-height: 24px; } .blue-link:hover { color: var(--primaryCtaHover); } .blue-link:focus, .blue-link:focus .hide-show-label { text-decoration: underline; outline: none; } /* ------------ ------------ ------------ ------------ */ /* Panels keep everything together */ .panel { display: flex; flex-direction: column; justify-content: space-between; position: relative; max-block-size: 601px; background-color: var(--bgColor); transition: height 0.1s ease-in-out; } .container-panel { min-block-size: 500px; } .delete-container-panel { min-block-size: 300px; } .panel.onboarding, .achievement-panel { align-items: center; margin-block: var(--marginInline); margin-inline: var(--marginInline); min-block-size: 360px; } .panel.onboarding-panel-8.optional-permissions-disabled { min-block-size: 420px; margin-block-end: 0; margin-inline: 0; } .optional-permissions-disabled #moz-vpn-fw-onboarding-done { display: none !important; } .moz-vpn-permissions { padding-block: var(--marginInline); padding-inline: var(--marginInline); background-color: #cececf1c; border-block-start: 1px solid var(--hr-grey); display: none; } .optional-permissions-disabled .moz-vpn-permissions { display: block; inline-size: 100%; } .moz-vpn-onboarding-content { display: flex; flex-direction: column; justify-content: space-between; align-items: center; padding-inline: var(--marginInline); padding-block-end: var(--marginInline); } .moz-vpn-permissions-copy { padding-inline: 20px; font-size: 12px; margin-block-end: 16px; } .panel-content { flex: 1; padding-block-start: 16px; } .panel-footer .button { align-items: center; block-size: 100%; display: flex; flex: 1; justify-content: center; } /* Onboarding styles */ .onboarding * { text-align: center; } .onboarding-img { block-size: 132px; inline-size: 180px; } .onboarding-title { color: #43484e; font-size: var(--font-size-heading); margin-block: 12px; margin-inline-end: 0; margin-inline-start: 0; max-inline-size: 80%; font-family: var(--fontMetropolis); } .onboarding p { color: var(--text-normal-color); font-size: 14px; margin-block-end: 16px; max-inline-size: 84%; } .onboarding-button { align-items: center; background-color: #0996f8; border-radius: 3px; color: white; display: flex; flex: 0 0 44px; font-size: 14px; inline-size: 100%; justify-content: center; text-decoration: none; transition: background-color 75ms; } .half-button-wrapper { align-items: center; display: flex; flex-direction: row; block-size: 44px; inline-size: 100%; font-family: var(--fontMetropolis); } .half-onboarding-button { align-items: center; background-color: #0996f8; border-radius: 3px; color: white; display: flex; flex: 1 0 auto; font-size: 14px; block-size: 44px; inline-size: 50%; justify-content: center; margin-inline-end: 4px; text-decoration: none; transition: background-color 75ms; } .grey-button { background-color: #e3e3e3; color: var(--grey50); } .onboarding-button:hover, .onboarding-button:active { background-color: #0675d3; } .onboarding-button:focus, .half-onboarding-button:focus { box-shadow: 0 0 0 1px #0a84ff inset, 0 0 0 1px #0a84ff, 0 0 0 4px rgba(10, 132, 255, 0.3); } /* Pop buttons are the square shaped buttons used to manage things like container crud */ .pop-button { align-items: center; block-size: var(--icon-button-size); cursor: pointer; display: flex; flex: 0 0 var(--icon-button-size); justify-content: center; } .panel-footer a { text-decoration: none; } .userContext-wrapper { align-items: center; display: flex; flex: 1 1; transition: background-color 75ms; } .edit-containers-panel .userContext-wrapper { max-inline-size: calc(var(--overflow-size) + 203px); } .disable-edit-containers { opacity: var(--inactive-opacity); pointer-events: none; } .userContext-icon-wrapper { block-size: var(--icon-button-size); flex: 0 0 var(--icon-button-size); margin-inline-start: var(--inline-icon-space-size); } /* .userContext-icon is used natively, Bug 1333811 was raised to fix */ .usercontext-icon { background-image: var(--identity-icon); background-position: center center; background-repeat: no-repeat; background-size: 16px; block-size: 100%; fill: var(--identity-icon-color); filter: url('/img/filters.svg#fill'); } .usercontext-icon::before { transform: scale(1); transform-origin: center; transition: fill 0.1s ease-in-out, transform 0.1s ease-in-out; } .radio-container:active .usercontext-icon::before { transform: scale(0.95); } #edit-container-panel-choose-icon .radio-container:hover .usercontext-icon::before { fill: var(--grey50) !important; } .mac-icon { background-image: url('/img/multiaccountcontainer-16.svg'); background-position: center center; background-repeat: no-repeat; background-size: 16px; block-size: 100%; } .container-panel-row:hover .clickable .usercontext-icon, .container-panel-row:focus .clickable .usercontext-icon, .container-panel-row .clickable:focus .usercontext-icon { background-image: url('/img/container-newtab.svg'); fill: #979797; filter: url('/img/filters.svg#fill'); } .container-panel-row .clickable:hover .usercontext-icon, .container-panel-row .clickable:focus .usercontext-icon { fill: #0094fb; } /* Panel footer */ .panel-footer { align-items: center; block-size: var(--footerHeight); color: #000; display: flex; font-size: 13px; inline-size: 100%; justify-content: space-between; box-shadow: 0 0 0 1px var(--hr-grey); } #container-info-panel { block-size: 100vh; } .container-info-has-tabs, .container-info-tab-row { align-items: center; display: flex; flex: 0 0 28px; font-size: 14px; justify-content: flex-start; margin-block-end: 0; margin-block-start: 0; margin-inline-end: 0; margin-inline-start: 0; padding-inline-end: 16px; padding-inline-start: 16px; } .container-info-has-tabs img, .container-info-tab-row img { block-size: 16px; flex: 0 0 16px; margin-inline-end: 4px; } .container-info-tab-row img[src=""] { margin-inline-end: 0; } .delete-container-confirm { padding-inline-end: 20px; padding-inline-start: 20px; } .delete-container-confirm-title { color: #000; font-size: var(--font-size-heading); } #edit-sites-assigned h3 { font-size: 14px; font-weight: normal; padding-block-end: 6px; padding-block-start: 6px; padding-inline-end: 16px; padding-inline-start: 16px; } .assigned-sites-list > div { display: flex; padding-block-end: 6px; padding-block-start: 6px; } .assigned-sites-list > div > .icon { margin-inline-end: 10px; } .assigned-sites-list > div > .hostname { flex: 1; } .radio-choice > .radio-container { align-items: center; block-size: 32px; display: flex; justify-content: center; flex: 0 0 calc(100% / var(--icon-fit)); } .radio-choice > .radio-container > label { background: none; block-size: 23px; border: 0; filter: none; inline-size: 23px; margin-block-end: 0; margin-block-start: 0; margin-inline-end: 0; margin-inline-start: 0; padding-block-end: 0; padding-block-start: 0; padding-inline-end: 0; padding-inline-start: 0; } .radio-choice > .radio-container > label::before { background-color: unset; background-image: var(--identity-icon); background-position: center; background-repeat: no-repeat; background-size: 16px; block-size: 23px; border: none; content: ""; display: block; fill: var(--identity-icon-color); filter: url('/img/filters.svg#fill'); inline-size: 23px; position: relative; } .radio-choice > .radio-container > [type="radio"] { -moz-appearance: none; display: inline; opacity: 0; position: absolute; margin-block: auto; margin-inline: auto; } .radio-choice > .radio-container > [type="radio"]:checked + label { background: #d3d3d3; border-radius: 100%; } /* When focusing the element add a thin blue highlight to match input fields. This gives a distinction to other selected radio items */ .radio-choice > .radio-container > [type="radio"]:focus + label { outline: 1px solid #1f9ffc; -moz-outline-radius: 100%; } .edit-container-panel fieldset { background: none; border: none; display: flex; flex-direction: row; flex-wrap: wrap; } #edit-container-choose-color { justify-content: space-between; } .edit-container-panel input[type="text"] { inline-size: 100%; margin-inline: 4px; } input[type="text"]:focus { box-shadow: 0 0 0 3px var(--primaryCtafocus); outline: none; border-color: var(--blue70); } .edit-container-panel legend, .options-header { margin-inline: 4px; flex: 1 0; } /* Achievement panel elements */ .share-ctas { padding-block-end: 0.5em; padding-block-start: 0.5em; padding-inline-end: 0.5em; padding-inline-start: 0.5em; text-align: center; } .cta-link { text-decoration: none; } .cta { color: #fff; font-size: 0.7em; font-weight: bold; margin-block-end: 0.4em; margin-block-start: 0.4em; margin-inline-end: 0.4em; margin-inline-start: 0.4em; padding-block-end: 0.5em; padding-block-start: 0.5em; padding-inline-end: 0.5em; padding-inline-start: 0.5em; text-transform: uppercase; } .cta-icon { block-size: 18px; padding-inline-end: 0.5em; vertical-align: middle; } .fb-share-cta { background: #375496; } .fb-share-cta .cta-icon { margin-block-start: -5px; } .tweet-cta { background: #37bae7; } .amo-rate-cta { background: #0f1126; } h3.title { block-size: 48px; color: #000; font-family: var(--fontMetropolis); font-size: 14px; font-weight: bold; inline-size: 100%; letter-spacing: -0.1px; line-height: 48px; text-align: center; } .menu { border-style: none; inline-size: 100%; padding-block: 8px; } .menu-item { cursor: pointer; block-size: var(--menuItemHeight); inline-size: 100%; line-height: var(--menuItemHeight); display: flex; align-items: center; } .menu-text { display: flex; flex: 1; } .menu-item td { align-items: center; display: flex; inline-size: 100%; } .menu-item.drag-over td { border-block-start: 2px solid var(--text-normal-color); } .disabled-menu-item { color: grey; cursor: default; font-style: italic; } .hover-highlight { transition: background-color 0.1s ease-in-out, color 0.1s ease-in-out; } .hover-highlight:hover, .hover-highlight:focus { background-color: var(--highlight-blue); color: #fff; } .menu-item-name { display: flex; inline-size: calc(100% - 40px); max-inline-size: 260px; cursor: default; } .menu-icon { display: block; block-size: 16px; inline-size: 23px; margin-block-end: auto; margin-block-start: auto; margin-inline-end: 8px; margin-inline-start: var(--marginInline); text-align: center; } /* Maintain 1:1 square ratio for favicons of websites added to a specific container */ #edit-sites-assigned .menu-icon, #container-info-table .menu-icon { inline-size: 16px; } .menu-right-float { text-align: right; margin-inline-start: auto; margin-inline-end: 0; display: flex; justify-content: flex-end; align-items: center; padding-inline-start: 16px; } .container-count { opacity: 0.7; text-align: center; min-inline-size: 24px; margin-inline-end: 4px; } .menu-arrow { align-items: center; display: flex; justify-content: flex-end; block-size: 24px; margin-inline-end: 20px; text-align: center; } .menu-arrow img { block-size: 24px; inline-size: 12px; padding-block-end: 2px; padding-block-start: 2px; padding-inline-end: 2px; padding-inline-start: 2px; opacity: 0.9; } hr { border: 0; border-block-start: 1px solid var(--hr-grey); display: block; } .sub-header-wrapper { margin-block-start: 12px; } .sub-header { color: var(--text-heading-color); block-size: 24px; line-height: 24px; padding-block-end: 0; padding-block-start: 0; padding-inline-start: 20px; font-family: var(--fontInterMedium); } .edit-form { color: var(--text-grey); flex: 1; padding-block-end: 16px; padding-block-start: 16px; padding-inline-end: 16px; padding-inline-start: 16px; } .bottom-btn { inset-block-end: 0; box-shadow: 0 0 0 1px var(--hr-grey); cursor: pointer; block-size: var(--footerHeight); inline-size: 100%; line-height: var(--footerHeight); padding-inline-end: 16px; padding-inline-start: 16px; position: absolute; text-align: center; font-size: 14px; font-family: var(--fontMetropolis); color: var(--text-heading-color); pointer-events: all; } .delete-btn { background-color: var(--bgColor); border: none; border-left: none; border-right: none; border-block-end: none; box-shadow: 0 0 0 1px var(--hr-grey); color: var(--alertColor); cursor: default; display: flex; block-size: var(--rowHeight); justify-content: center; line-height: var(--rowHeight); pointer-events: all; transition: background-color 0.1s ease-in-out, border-color 0.1s ease-in-out, box-shadow 0.1s ease-in-out; } .alert-text { font-family: var(--fontMetropolis); background-color: var(--bgColor); color: var(--alertColor); cursor: pointer; text-align: center; } .alert-text:hover, .alert-text:focus { background-color: rgba(255, 79, 94, 0.05); box-shadow: 0 0 0 1px rgba(255, 79, 94, 0.05); } .delete-btn:active { background-color: rgba(255, 79, 94, 0.1); box-shadow: 0 0 0 1px var(--alertColor); } .delete-btn:focus { box-shadow: 0 0 0 1px var(--alertColor); outline: none; } .btn-return.arrow-left { background-image: var(--iconArrowLeft); border: 0; cursor: pointer; inset-block-start: 8px; inset-inline-start: 8px; position: absolute; z-index: 2; block-size: 32px; inline-size: 32px; background-repeat: no-repeat; border-radius: 4px; background-position: center center; } input { border: solid 1px #bebebe; border-radius: 2px; } .form-header { padding-block-end: 0; padding-block-start: 0; padding-inline-end: 0; padding-inline-start: 0; } .edit-container-panel-name-input { color: var(--text-grey); block-size: 32px; } .container-options { block-size: 24px; margin-inline: 4px; display: flex; justify-content: space-between; } .site-isolation { inset-block-end: auto; } .options-label { cursor: pointer; pointer-events: none; } .info-icon { cursor: pointer; block-size: 16px; inline-size: 16px; inset-block-start: 16px; position: absolute; inset-inline-end: 20px; text-align: center; text-decoration: none; } .info-icon-alert::after { block-size: 12px; inline-size: 12px; background-color: var(--alertColor); content: "1"; border-radius: 50%; position: absolute; inset-block: -5px; inset-inline-end: -6px; box-shadow: 0 0 1px #00000075; font-size: 8px; color: white; display: flex; align-items: center; justify-content: center; font-weight: bolder; } .delete-warning { padding-block-end: 8px; padding-block-start: 8px; padding-inline-end: 0; padding-inline-start: 0; } .trash-button { display: inline-block; block-size: 20px; inline-size: 20px; margin-block-end: 4px; margin-block-start: 4px; margin-inline-end: 10px; margin-inline-start: 0; text-align: center; } tr > td > .trash-button { display: none; } tr:hover > td > .trash-button { display: block; } .move-button { cursor: move; display: inline-block; } .move-button > img { block-size: 16px; margin-inline-end: 20px; margin-inline-start: 8px; } /* ----- Permissions Overlay ---------- */ #advanced-proxy-settings-panel, .advanced-proxy-panel-content { position: absolute; inset-block: 0; inset-inline: 0; } .permissions-overlay { position: absolute; inset-inline: 0 0; inset-block-start: 40px; inset-block-end: 0; justify-content: center; align-content: center; flex-direction: column; background-color: white; padding-block: 2.25rem; padding-inline: 2.25rem; display: none; } #enable-proxy-permissions { text-align: center; font-family: var(--fontMetropolis); font-size: 14px; margin-block-start: 1rem; } @media (prefers-color-scheme: dark) { :root { --iconCloseX: url("/img/close-light.svg"); --iconGear: url("/img/gear-icon-light.svg"); --iconArrowRight: url("/img/arrow-icon-right-light.svg"); --iconArrowLeft: url("/img/arrow-icon-left-light.svg"); --iconProxyWarning: url("/img/proxy-warning-light.svg"); --logoMozillaVpn: url("/img/moz-vpn-logo-light.svg"); --bgColor: #42404c; --title-text-color: #fff; --text-normal-color: #f9f9fa; --text-heading-color: #fff; --primaryCtaDefault: var(--blue40); --primaryCtaHover: var(--blue50); --primaryCtaActive: var(--blue60); --highlight-blue: #52515d; --bottomButtons: var(--highlight-blue); --controllerHover: var(--highlight-blue); --controllerActive: rgb(90, 89, 102); --bgDark: #2b2932; } body { color: #ffffffd1; --highlight-blue: #52515d; --hr-grey: #38383d; --text-grey: #fefffe; } .permissions-overlay { background-color: #494755; } .tooltip { background-color: var(--controllerActive); } #moz-vpn-tout { box-shadow: 0 0 21px 3px #323139; } .moz-vpn-permissions { background-color: #322f3e; } .blue-link { color: #36abfc; } .blue-link:hover { color: var(--blue20); } .drop-shadow { box-shadow: 0 0 13px -2px #323139; } .server-radio-control { border-color: var(--grey40); } .server-radio-control::after { background-color: var(--grey30); } .server-city-list-item:hover .server-radio-control { border-color: var(--grey30); } .server-city-list-item:active .server-radio-control { border-color: var(--grey20); } .primary-cta:focus { box-shadow: 0 0 0 1px #00ddffd6, 0 0 0 3px var(--primaryCtaHover); } .slider { background-color: var(--grey30); } input:hover + .slider { background-color: var(--grey40); } input:focus + .slider { box-shadow: 0 0 0 2px var(--bgColor), 0 0 0 4px var(--grey20); } h3.title { color: #fff; } .delete-btn, .bottom-btn { background-color: var(--bottomButtons); box-shadow: 0 0 0 1px #73737300; } .onboarding-title, .delete-container-confirm-title { color: #ededf0; } input { border: solid 1px #737373; } input[type=text] { background-color: rgba(43, 41, 50, 0.79) !important; } .delete-container { background-color: #4a4a4a; } .delete-btn, .cancel-button, .grey-button { background-color: var(--bottomButtons); color: #f9f9fa; } .button.secondary:hover, .button.secondary:focus { background-color: #676767; } input[type="text"]:focus { box-shadow: 0 0 0 3px var(--blue50); border-color: var(--blue30); } .trash-button, img.menu-icon, .menu-icon > img, .menu-arrow > img, .info-icon > img { filter: invert(1); } #edit-sites-assigned .menu-icon, #container-info-table .menu-icon { filter: invert(0); } .truncate-text::after { background: var(--bgColor); mask-image: linear-gradient(to right, transparent, var(--bgColor) 70%); } [data-identity-color="grey"] { --identity-icon-color: #ededf0; } .radio-choice > .radio-container > [type="radio"]:checked + label { background: var(--bgDark); } #edit-container-panel-choose-icon .radio-container:hover .usercontext-icon::before { fill: #fff !important; } } /* OVERFLOW MENU */ .overflow body, .overflow html { inline-size: 100%; } .overflow .container-panel { min-block-size: 100%; } .overflow .panel.onboarding { margin-block: auto; }