Flint 4 (GL-BE14000) Tri-band Wi-Fi 7 Home Router
.product-nav { top: 0; } .be14000-main-container { --be14000: #2b68c3; } .be14000-main-container .text-muted-light, .be14000-main-container .be14000-accordion .be14000-accordion-bo dy { color: rgba(255, 255, 255, 0.7); } .be14000-main-container .text-highlight { color: #7fd8fc; font-weight: bold; } .restock-rocket-button-container { display: none !important; } .be14000-main-container .text-be14000 { color: var(--be14000); } .be14000-main-container .btn-round-be14000 { background-color: var(--be14000); color: #fff; border-radius: 50px; padding: 1rem 2rem; text-transform: uppercase; font-weight: bold; } @media (max-width: 767px) { .be14000-main-container .btn-round-be14000 { align-items: center; border-radius: 50px; display: inline-flex; justify-content: center; line-height: 1.2; min-height: 50px; padding: 0 2rem; text-transform: uppercase; font-weight: bold; } } .be14000-main-container .btn-round-be14000:hover { background-color: #fff; color: #265aaa; border-color: #265aaa; } .be14000-main-container #mc_embed_shell { display: flex; justify-content: center; } .be14000-main-container #mc_embed_shell input { border: medium none; color: gray; font-size: 16px; padding: 8px 25px; width: auto; height: 50px; border-radius: 25px 0 0 25px; } @media (max-width: 575px) { .be14000-main-container #mc_embed_shell input { width: 100%; height: 40px; font-size: 13px; } } .be14000-main-container #mc_embed_shell input.email { background: #fff; } @media (max-width: 575px) { .be14000-main-container #mc_embed_shell input.email { font-size: 13px; } } .be14000-main-container #mc_embed_shell input[type="submit"] { background-color: var(--be14000); text-align: center; transition: 0.5s; background-size: 200% auto; font-weight: bold; color: white; border-radius: 0 25px 25px 0; display: block; margin: 0; } .be14000-main-container #mc_embed_shell input[type="submit"]:hover { background-color: #265aaa; background-position: right center; color: #fff; text-decoration: none; } .be14000-main-container #mc_embed_shell #mc-embedded-subscribe-form { width: auto; justify-content: start; } @media (max-width: 991px) { .be14000-main-container #mc_embed_shell #mc-embedded-subscribe-form { margin: auto; justify-content: center; } } .be14000-main-container .top-banner { position: relative; height: 70rem; width: 100%; overflow: hidden; } @media (max-width: 991px) { .be14000-main-container .top-banner { height: 42rem; } } .be14000-main-container .top-banner video { position: absolute; top: 50%; left: 50%; min-width: 100%; min-height: 100%; width: auto; height: auto; z-index: 0; transform: translateX(-50%) translateY(-50%); } .be14000-main-container .top-banner .overlay { position: absolute; top: 0; left: 0; height: 100%; width: 100%; background: linear-gradient(180deg, rgba(0, 0, 0, 0) 30%, rgba(0, 0, 0, 0.3) 95%); opacity: 1; z-index: 1; } .be14000-main-container .top-banner .container { position: relative; z-index: 2; } .be14000-main-container .be14000-highlight-grid { width: 100%; } .be14000-main-container .be14000-highlight-grid-row { display: grid; gap: 8px; margin-bottom: 8px; } .be14000-main-container .be14000-highlight-grid-row-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); } .be14000-main-container .be14000-highlight-grid-row-2 .be14000-highlight-card { min-height: 384px; } .be14000-main-container .be14000-highlight-grid-row-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); } .be14000-main-container .be14000-highlight-grid-row-3 .be14000-highlight-card { min-height: 288px; } .be14000-main-container .be14000-highlight-grid-row-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); margin-bottom: 0; } .be14000-main-container .be14000-highlight-grid-row-4 .be14000-highlight-card { min-height: 192px; } .be14000-main-container .be14000-highlight-card { background-position: center; background-repeat: no-repeat; background-size: cover; border-radius: 12px; color: #fff; } .be14000-main-container .be14000-highlight-card h3{ font-size: 24px; font-weight: 700; margin: 0 0 8px; } @media (max-width: 850px) { .be14000-main-container .be14000-highlight-card h3{ font-size: 18px; } } .be14000-main-container .be14000-highlight-card p { font-size: 16px; margin: 0; } .be14000-main-container .be14000-highlight-card--1 { align-items: center; display: flex; justify-content: center; overflow: hidden; position: relative; text-align: center; } .be14000-main-container .be14000-highlight-card--1 .be14000-highlight-card--1__video { height: 100%; left: 0; object-fit: cover; object-position: center; pointer-events: none; position: absolute; top: 0; width: 100%; z-index: 0; } .be14000-main-container .be14000-highlight-card--1 .be14000-highlight-wifi7 { position: relative; z-index: 1; align-items: center; display: flex; flex-direction: column; gap: 4px; width: 100%; } .be14000-main-container .be14000-highlight-card--1 .be14000-highlight-wifi7__subtitle { font-size: 32px; font-weight: bold; line-height: 1.2; margin: 0; } @media (max-width: 850px) { .be14000-main-container .be14000-highlight-card--1 .be14000-highlight-wifi7__subtitle { font-size: 18px; } } .be14000-main-container .be14000-highlight-card--1 .be14000-highlight-wifi7__title { font-family: Roboto, sans-serif; font-size: 7rem; font-weight: bold; line-height: 1.05; margin: 0; text-shadow: 0 0 12px rgba(255, 255, 255, 0.45), 0 0 28px rgba(255, 255, 255, 0.2); } @media (max-width: 1000px) { .be14000-main-container .be14000-highlight-card--1 .be14000-highlight-wifi7__title { font-size: 6rem; } } @media (max-width: 850px) { .be14000-main-container .be14000-highlight-card--1 .be14000-highlight-wifi7__title { font-size: 4.5rem; } } .be14000-main-container .be14000-highlight-card--1 .be14000-highlight-wifi7__content p { font-size: 24px; font-weight: 500; line-height: 1.25; margin: 0; } @media (max-width: 850px) { .be14000-main-container .be14000-highlight-card--1 .be14000-highlight-wifi7__content p { font-size: 16px; } } .be14000-main-container .be14000-highlight-card--1 .be14000-highlight-wifi7__content p+p { margin-top: 2px; } .be14000-main-container .be14000-highlight-card--2 { overflow: hidden; position: relative; } .be14000-main-container .be14000-highlight-card--2 .be14000-highlight-card--2__video { height: 100%; left: 0; object-fit: cover; object-position: center; pointer-events: none; position: absolute; top: 0; width: 100%; z-index: 0; } .be14000-main-container .be14000-highlight-card--2 > :not(.be14000-highlight-card--2__video) { position: relative; z-index: 1; } @media (max-width: 800px) { .be14000-main-container .be14000-highlight-card--2 .be14000-highlight-card--2__video { object-position: center bottom; } } .be14000-main-container .be14000-highlight-card--3 { background-image: url("https://static.gl-inet.com/www/images/products/gl-be14000/highlight_touchscreen.png"); } .be14000-main-container .be14000-highlight-card--4 { background-image: url("https://static.gl-inet.com/www/images/products/gl-be14000/highlight_vpn.png"); container-name: be14000-vpn-card; container-type: inline-size; display: flex; flex-direction: column; } .be14000-main-container .be14000-highlight-card--4 .be14000-highlight-vpn { display: flex; flex-direction: column; flex: 1; min-height: 0; width: 100%; } .be14000-main-container .be14000-highlight-card--4 .be14000-highlight-vpn__header { text-align: left; } .be14000-main-container .be14000-highlight-card--4 .be14000-highlight-vpn__tags { display: flex; flex-wrap: wrap; gap: 8px; list-style: none; margin: 0; margin-top: auto; padding: 0; } .be14000-main-container .be14000-highlight-card--4 .be14000-highlight-vpn__tag { align-items: center; background: rgba(25, 42, 72, 0.72); border-radius: 999px; color: #fff; display: inline-flex; font-size: 14px; justify-content: center; line-height: 1.2; margin: 0; padding: 6px 12px; white-space: nowrap; } @container be14000-vpn-card (max-width: 25rem) { .be14000-main-container .be14000-highlight-card--4 .be14000-highlight-vpn__tag:first-child { margin-right: 100%; width: fit-content; } } @container be14000-vpn-card (max-width: 14rem) { .be14000-main-container .be14000-highlight-card--4 .be14000-highlight-vpn__tag:nth-child(2) { margin-right: 100%; width: fit-content; } } .be14000-main-container .be14000-highlight-card--5 { background-image: url("https://static.gl-inet.com/www/images/products/gl-be14000/highlight_vlan.png"); background-position: center 64%; } .be14000-main-container .be14000-highlight-card--6 { background-image: url("https://static.gl-inet.com/www/images/products/gl-be14000/highlight_shield.png"); } .be14000-main-container .be14000-highlight-card--7 { background-image: url("https://static.gl-inet.com/www/images/products/gl-be14000/highlight_64gb.png"); } .be14000-main-container .be14000-highlight-card--8 { background-image: url("https://static.gl-inet.com/www/images/products/gl-be14000/highlight_usb.png"); } .be14000-main-container .be14000-highlight-card--9 { background: url(https://static.gl-inet.com/www/images/products/gl-be14000/highlight_iot.png) no-repeat center 82% / cover, linear-gradient(90deg, #030507 0%, #080f24 100%) #030507; } @media (max-width: 800px) { .be14000-main-container .be14000-highlight-grid { display: grid; gap: 8px; grid-template-columns: repeat(2, minmax(0, 1fr)); } .be14000-main-container .be14000-highlight-grid-row { display: contents; margin-bottom: 0; } .be14000-main-container .be14000-highlight-grid-row-2 .be14000-highlight-card--1 { grid-column: 1/-1; height: 200px; min-height: 0; overflow: hidden; } .be14000-main-container .be14000-highlight-grid-row-2 .be14000-highlight-card--2, .be14000-main-container .be14000-highlight-grid-row-3 .be14000-highlight-card--3, .be14000-main-container .be14000-highlight-grid-row-3 .be14000-highlight-card--5 { grid-column: 1/-1; height: 188px; min-height: 0; overflow: hidden; } .be14000-main-container .be14000-highlight-card--3 { background-image: url("https://static.gl-inet.com/www/images/products/gl-be14000/highlight_touchscreen.png"); } .be14000-main-container .be14000-highlight-card--5 { background-image: url("https://static.gl-inet.com/www/images/products/gl-be14000/highlight_vlan.png"); background-position: center 73%; } .be14000-main-container .be14000-highlight-grid-row-3 .be14000-highlight-card--4 { grid-column: 1; grid-row: 5/span 2; height: 248px; min-height: 0; } .be14000-main-container .be14000-highlight-grid-row-4 .be14000-highlight-card--6 { grid-column: 2; grid-row: 5; height: 120px; min-height: 0; } .be14000-main-container .be14000-highlight-grid-row-4 .be14000-highlight-card--7 { grid-column: 2; grid-row: 6; height: 120px; min-height: 0; } .be14000-main-container .be14000-highlight-grid-row-4 .be14000-highlight-card--8 { grid-column: 1; grid-row: 7; height: 128px; min-height: 0; } .be14000-main-container .be14000-highlight-grid-row-4 .be14000-highlight-card--9 { grid-column: 2; grid-row: 7; height: 128px; min-height: 0; } } .be14000-main-container .be14000-accordion .be14000-accordion-item { border: none; background: transparent; border-left: 4px solid rgba(255, 255, 255, 0.2); padding-left: 16px; margin-bottom: 16px; transition: border-color 0.3s ease; } .be14000-main-container .be14000-accordion .be14000-accordion-item:has(.collapse.show), .be14000-main-container .be14000-accordion .be14000-accordion-item:has(.collapsing) { border-left-color: var(--be14000); } .be14000-main-container .be14000-accordion .be14000-accordion-toggle { display: block; color: rgba(255, 255, 255, 0.5); text-decoration: none; padding: 4px 0; transition: color 0.3s ease; } .be14000-main-container .be14000-accordion .be14000-accordion-toggle:hover, .be14000-main-container .be14000-accordion .be14000-accordion-toggle:focus { text-decoration: none; color: #fff; } .be14000-main-container .be14000-accordion .be14000-accordion-toggle:not(.collapsed) { color: #fff; } .be14000-main-container .be14000-accordion .be14000-accordion-body { padding: 0 0 16px; } .be14000-main-container .be14000-learn-more { color: #1c9fff; text-decoration: none; transition: color 0.2s ease; } .be14000-main-container .be14000-learn-more:hover, .be14000-main-container .be14000-learn-more:focus { color: var(--be14000); text-decoration: none; } .be14000-main-container .be14000-external-link { color: #1c9fff; text-decoration: none; } .be14000-main-container .be14000-external-link:hover, .be14000-main-container .be14000-external-link:focus { color: var(--be14000); text-decoration: underline; } .be14000-main-container .be14000-usecase-rows > .row + .row { margin-top: 1.5rem; } @media (min-width: 992px) { .be14000-main-container .be14000-usecase-rows > .row + .row { margin-top: 3rem; } } .be14000-main-container .be14000-network-control .network-tab-content { position: relative; } .be14000-main-container .be14000-network-control .network-tab-content::after { background: linear-gradient(180deg, transparent 70%, #000 95%); content: ""; inset: 0; pointer-events: none; position: absolute; z-index: 1; } .be14000-main-container .be14000-network-control .network-tab-content .tab-pane { position: relative; z-index: 0; } @media (min-width: 992px) { .be14000-main-container .be14000-network-control .be14000-feature-pills--network { margin-top: -220px; position: relative; z-index: 2; } } .be14000-main-container .be14000-feature-pills .nav-link { background-color: #1a1a1a; border-radius: 12px; min-height: 160px; padding: 28px 20px; color: rgba(255, 255, 255, 0.6); transition: all 0.3s cubic-bezier(0.16, 1, 0.3, 1); } .be14000-main-container .be14000-feature-pills .nav-link:hover { color: #fff; background-color: #222222; } .be14000-main-container .be14000-feature-pills .nav-link.active { background-color: var(--be14000); color: #fff; box-shadow: 0 8px 24px rgba(43, 104, 195, 0.35); } .be14000-main-container .be14000-feature-pills--network .nav-link img { height: 72px; width: auto; margin-bottom: 0.5rem; filter: brightness(0.8) invert(1); transition: transform 0.3s ease, filter 0.3s ease; } .be14000-main-container .be14000-feature-pills--network .nav-link.active img { filter: brightness(1) invert(0); } .be14000-main-container .be14000-feature-pills--openwrt .nav-link { border: none; width: 100%; padding: 36px 48px; } .be14000-main-container .be14000-feature-pills--openwrt .nav-link img { height: 50px; margin-bottom: 0.5rem; width: 50px; filter: brightness(0.8) invert(1); transition: transform 0.3s ease, filter 0.3s ease; } .be14000-main-container .be14000-feature-pills--openwrt .nav-link.active img { filter: brightness(1) invert(0); } @media (max-width: 991px) { .be14000-main-container .be14000-feature-pills .nav-link { min-height: 100px; } .be14000-main-container .be14000-feature-pills--network .nav-link { padding: 14px 10px; } .be14000-main-container .be14000-feature-pills--network .nav-link img { height: 44px; margin-bottom: 0.375rem; } .be14000-main-container .be14000-feature-pills--openwrt .nav-link { padding: 18px 14px; } .be14000-main-container .be14000-feature-pills--openwrt .nav-link img { height: 36px; margin-bottom: 0.375rem; width: 36px; } .be14000-main-container .be14000-feature-pills--network .nav-link h3, .be14000-main-container .be14000-feature-pills--openwrt .nav-link h3 { font-size: 20px; } } @media (max-width: 767px) { .be14000-main-container .be14000-feature-pills .nav-link { min-height: 84px; } .be14000-main-container .be14000-feature-pills--network .nav-link { padding: 12px 8px; } .be14000-main-container .be14000-feature-pills--network .nav-link img { height: 32px; margin-bottom: 0.25rem; } .be14000-main-container .be14000-feature-pills--openwrt .nav-link { padding: 16px 12px; } .be14000-main-container .be14000-feature-pills--openwrt .nav-link img { height: 28px; margin-bottom: 0.25rem; width: 28px; } .be14000-main-container .be14000-feature-pills--network .nav-link h3, .be14000-main-container .be14000-feature-pills--openwrt .nav-link h3 { font-size: 16px; } } .be14000-main-container .be14000-network-control .be14000-feature-pills--network + .be14000-usecase-rows { margin-top: 1.5rem; } @media (min-width: 992px) { .be14000-main-container .be14000-network-control .be14000-feature-pills--network + .be14000-usecase-rows { margin-top: 5rem; } } .be14000-main-container .be14000-wifi7-section { overflow: hidden; position: relative; } .be14000-main-container .be14000-wifi7-section .be14000-wifi7-section-top { position: relative; z-index: 3; } .be14000-main-container .be14000-wifi7-section .be14000-wifi7-section-bottom { position: relative; } .be14000-main-container .be14000-wifi7-section .be14000-wifi7-video-bg { inset: 0; overflow: hidden; position: absolute; z-index: 0; } .be14000-main-container .be14000-wifi7-section .be14000-wifi7-video-bg video { height: 100%; object-fit: cover; width: 100%; } .be14000-main-container .be14000-wifi7-section .be14000-wifi7-overlay { background: linear-gradient(180deg, #000 0%, rgba(0, 0, 0, 0.12) 24%, transparent 48%), linear-gradient(0deg, #000 0%, rgba(0, 0, 0, 0.12) 24%, transparent 48%), linear-gradient( 90deg, rgba(0, 0, 0, 0.48) 0%, rgba(0, 0, 0, 0.08) 24%, rgba(0, 0, 0, 0.08) 76%, rgba(0, 0, 0, 0.48) 100% ); inset: 0; pointer-events: none; position: absolute; z-index: 1; } .be14000-main-container .be14000-wifi7-section .container.position-relative { z-index: 2; } .be14000-main-container .be14000-wifi7-section .be14000-wifi7-brand { background: linear-gradient(180deg, #fff 0%, #9dd1f8 60%, #32a2f4 100%); background-clip: text; font-family: Roboto, sans-serif; font-size: clamp(4.5rem, 10vw, 12rem); -webkit-background-clip: text; -webkit-text-fill-color: transparent; letter-spacing: 0.01em; line-height: 0.95; } .be14000-main-container .be14000-wifi7-section .be14000-wifi7-speed-chart { display: grid; gap: 24px; margin: 0 auto; max-width: 1000px; width: 100%; } .be14000-main-container .be14000-wifi7-section .be14000-wifi7-speed-row { align-items: center; column-gap: 12px; display: grid; grid-template-columns: 120px 1fr 120px; } .be14000-main-container .be14000-wifi7-section .be14000-wifi7-speed-row:nth-child(1) { --be14000-wifi7-meter-width: 100%; } .be14000-main-container .be14000-wifi7-section .be14000-wifi7-speed-row:nth-child(1) .be14000-wifi7-meter-fill { background: #35eeffcc; } .be14000-main-container .be14000-wifi7-section .be14000-wifi7-speed-row:nth-child(2) { --be14000-wifi7-meter-width: 50%; } .be14000-main-container .be14000-wifi7-section .be14000-wifi7-speed-row:nth-child(2) .be14000-wifi7-meter-fill { background: #78c5e9cc; } .be14000-main-container .be14000-wifi7-section .be14000-wifi7-speed-row:nth-child(3) { --be14000-wifi7-meter-width: 15%; } .be14000-main-container .be14000-wifi7-section .be14000-wifi7-speed-row:nth-child(3) .be14000-wifi7-meter-fill { background: #447095cc; } .be14000-main-container .be14000-wifi7-section .be14000-wifi7-speed-row p { font-size: 1.75rem; white-space: nowrap; } .be14000-main-container .be14000-wifi7-section .be14000-wifi7-meter-border { background: linear-gradient(90deg, rgba(255, 255, 255, 0) 0%, #fff 100%); border-radius: 999px; display: block; height: 28px; overflow: hidden; padding: 2px; width: 0; } .be14000-main-container .be14000-wifi7-section .be14000-wifi7-meter-fill { border-radius: 999px; display: block; height: 100%; width: 100%; } .be14000-main-container .be14000-wifi7-section .be14000-wifi7-speed-chart.is-animated .be14000-wifi7-meter-border { animation: be14000-wifi7-meter-grow 1s ease-in-out forwards; } .be14000-main-container .be14000-wifi7-section .be14000-wifi7-speed-chart.is-animated .be14000-wifi7-speed-row:nth-child(2) .be14000-wifi7-meter-border { animation-delay: 0.25s; } .be14000-main-container .be14000-wifi7-section .be14000-wifi7-speed-chart.is-animated .be14000-wifi7-speed-row:nth-child(3) .be14000-wifi7-meter-border { animation-delay: 0.5s; } @keyframes be14000-wifi7-meter-grow { to { width: var(--be14000-wifi7-meter-width); } } @media (max-width: 575px) { .be14000-main-container .be14000-wifi7-section .be14000-wifi7-speed-row p { font-size: 1rem; } .be14000-main-container .be14000-wifi7-section .be14000-wifi7-speed-row { column-gap: 8px; grid-template-columns: 90px 1fr 90px; } .be14000-main-container .be14000-wifi7-section .be14000-wifi7-meter-border { height: 14px; } } .be14000-main-container .be14000-wifi7-section .be14000-wifi7-hover-grid { position: relative; z-index: 2; } .be14000-main-container .be14000-wifi7-section .be14000-wifi7-hover-grid__row { display: grid; } .be14000-main-container .be14000-wifi7-section .be14000-hover-card { grid-area: 1 / 1; min-width: 0; opacity: 0; overflow: hidden; pointer-events: none; position: relative; width: 100%; aspect-ratio: 16 / 9; } .be14000-main-container .be14000-wifi7-section .be14000-hover-card.is-active { opacity: 1; pointer-events: auto; z-index: 1; } .be14000-main-container .be14000-wifi7-section .be14000-hover-card__media { inset: 0; position: absolute; } .be14000-main-container .be14000-wifi7-section .be14000-hover-card__poster, .be14000-main-container .be14000-wifi7-section .be14000-hover-card__video { display: block; height: 100%; object-fit: cover; width: 100%; } .be14000-main-container .be14000-wifi7-section .be14000-hover-card__poster { inset: 0; pointer-events: none; position: absolute; transition: opacity 0.15s ease; z-index: 1; } .be14000-main-container .be14000-wifi7-section .be14000-hover-card.is-active .be14000-hover-card__poster { opacity: 0; } .be14000-main-container .be14000-wifi7-section .be14000-hover-card__media::after { background: radial-gradient(ellipse at center, transparent 0%, transparent 50%, #000 75%); content: ""; inset: 0; pointer-events: none; position: absolute; z-index: 2; } .be14000-main-container .be14000-wifi7-section .be14000-hover-card__progress { background: rgba(255, 255, 255, 0.28); bottom: 0; height: 3px; left: 0; opacity: 0; position: absolute; right: 0; transition: opacity 0.2s ease; z-index: 4; } .be14000-main-container .be14000-wifi7-section .be14000-hover-card.is-active .be14000-hover-card__progress { opacity: 1; } .be14000-main-container .be14000-wifi7-section .be14000-hover-card__progress-fill { background: var(--be14000); height: 100%; transform: scaleX(0); transform-origin: left center; width: 100%; } .be14000-main-container .be14000-wifi7-section .be14000-hover-card__eyebrow, .be14000-main-container .be14000-wifi7-section .be14000-hover-card__body { display: none; } .be14000-main-container .be14000-wifi7-section .be14000-hover-stack-panel { display: none; } .be14000-main-container .be14000-wifi7-section .be14000-hover-stack-panel.active { display: block; } @media (min-width: 1200px) { .be14000-main-container .be14000-wifi7-section .be14000-wifi7-hover-grid__stack { display: none; } .be14000-main-container .be14000-wifi7-section .be14000-wifi7-hover-grid__row { display: flex; align-items: stretch; gap: 4px; } .be14000-main-container .be14000-wifi7-section .be14000-hover-card { aspect-ratio: auto; display: flex; flex: 1 1 50%; flex-direction: column; grid-area: auto; height: auto; opacity: 1; pointer-events: auto; transition: flex 0.55s cubic-bezier(0.22, 1, 0.36, 1); width: auto; z-index: auto; } .be14000-main-container .be14000-wifi7-section .be14000-wifi7-hover-grid__row:hover .be14000-hover-card { flex: 0.72 1 0; } .be14000-main-container .be14000-wifi7-section .be14000-wifi7-hover-grid__row:hover .be14000-hover-card.is-active { flex: 1.28 1 0; } .be14000-main-container .be14000-wifi7-section .be14000-hover-card__media { flex: 0 0 auto; height: var(--be14000-hover-card-height); inset: auto; position: relative; width: 100%; } .be14000-main-container .be14000-wifi7-section .be14000-hover-card__body { background: #000; display: block; flex: 1 1 auto; padding: 1.5rem 2rem 2rem; } .be14000-main-container .be14000-wifi7-section .be14000-hover-card__eyebrow { display: block; left: 2rem; position: absolute; top: 2rem; z-index: 3; } } @media (min-width: 1800px) { .be14000-main-container .be14000-wifi7-section .be14000-hover-card__eyebrow { left: 4rem; } .be14000-main-container .be14000-wifi7-section .be14000-hover-card__body { padding: 2rem 4rem 2.5rem; } } .be14000-main-container .be14000-carousel { position: relative; width: 100%; } .be14000-main-container .be14000-carousel-viewport { overflow: hidden; width: 100%; --be14000-carousel-gap: 20px; --be14000-carousel-slide-width: calc(100% - 40px); } @media (min-width: 768px) { .be14000-main-container .be14000-carousel-viewport { --be14000-carousel-slide-width: calc( (100% - var(--be14000-carousel-gap)) / 2 ); } } .be14000-main-container .be14000-carousel-track { display: flex; padding-right: var(--be14000-carousel-center-offset, 0px); transition: transform 0.6s ease; } .be14000-main-container .be14000-carousel-track.is-resetting .be14000-carousel-card::after { transition: none; } .be14000-main-container .be14000-carousel-slide { box-sizing: border-box; flex: 0 0 var(--be14000-carousel-slide-width); padding: 0 10px; width: var(--be14000-carousel-slide-width); } @media (min-width: 768px) { .be14000-main-container .be14000-carousel-slide { padding: 0 calc(var(--be14000-carousel-gap) / 2); } } .be14000-main-container .be14000-carousel-card { border-radius: 20px; overflow: hidden; position: relative; } .be14000-main-container .be14000-carousel-card__img { aspect-ratio: 16 / 10; display: block; height: auto; object-fit: cover; object-position: bottom center; pointer-events: none; width: 100%; } .be14000-main-container .be14000-carousel-card h3 { background: linear-gradient( 180deg, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0.75) 100% ); bottom: 0; left: 0; margin: 0; padding: 2rem; position: absolute; right: 0; text-align: center; z-index: 2; } .be14000-main-container .be14000-carousel--infinite .be14000-carousel-card::after { background: rgba(0, 0, 0, 0.5); content: ""; inset: 0; pointer-events: none; position: absolute; transition: opacity 0.35s ease; z-index: 1; } .be14000-main-container .be14000-carousel--infinite .be14000-carousel-slide.is-active .be14000-carousel-card::after { opacity: 0; } .be14000-main-container .be14000-carousel--infinite .be14000-carousel-btn { align-items: center; background: #ffffff33; border: 1px solid #fff; border-radius: 50%; color: #fff; display: inline-flex; height: 56px; justify-content: center; padding: 0; position: absolute; top: 50%; transform: translateY(-50%); width: 56px; z-index: 3; outline: none; box-shadow: none; } .be14000-main-container .be14000-carousel--infinite .be14000-carousel-btn:hover:not(:disabled) { background: #ffffff99; } .be14000-main-container .be14000-carousel--infinite .be14000-carousel-btn:active:not(:disabled) { background: #ffffffdd; } .be14000-main-container .be14000-carousel--infinite .be14000-carousel-btn--prev { left: calc(var(--be14000-carousel-center-offset, 20px) + 28px); } .be14000-main-container .be14000-carousel--infinite .be14000-carousel-btn--next { left: calc( var(--be14000-carousel-center-offset, 20px) + var(--be14000-carousel-slide-width, 50%) - 56px - 28px ); } @media (max-width: 1199px) { .be14000-main-container .be14000-carousel--infinite .be14000-carousel-btn { font-size: 0.75rem; height: 40px; width: 40px; } .be14000-main-container .be14000-carousel--infinite .be14000-carousel-btn--prev { left: calc(var(--be14000-carousel-center-offset, 20px) + 12px); } .be14000-main-container .be14000-carousel--infinite .be14000-carousel-btn--next { left: calc( var(--be14000-carousel-center-offset, 20px) + var(--be14000-carousel-slide-width, 50%) - 40px - 12px ); } } .be14000-main-container .be14000-carousel--infinite .be14000-carousel-dots { display: flex; gap: 12px; justify-content: center; margin-top: 1.5rem; padding: 0 1rem; } .be14000-main-container .be14000-carousel--infinite .be14000-carousel-dot { background: transparent; border: 1px solid rgba(255, 255, 255, 0.85); border-radius: 50%; cursor: pointer; height: 12px; padding: 0; width: 12px; outline: none; box-shadow: none; } .be14000-main-container .be14000-carousel--infinite .be14000-carousel-dot.is-active { background: #fff; border-color: #fff; } .be14000-main-container .be14000-carousel--infinite .be14000-carousel-dot:focus, .be14000-main-container .be14000-carousel--infinite .be14000-carousel-dot:focus-visible { outline: none; } .be14000-main-container .be14000-carousel--ports-nav .be14000-carousel-nav { display: flex; justify-content: flex-end; gap: 12px; margin-top: 1.5rem; } .be14000-main-container .be14000-carousel--ports-nav .be14000-carousel-btn { align-items: center; border-radius: 50%; display: inline-flex; height: 48px; justify-content: center; padding: 0; width: 48px; outline: none; box-shadow: none; } @media (min-width: 768px) { .be14000-main-container .be14000-carousel--ports-nav .be14000-carousel-btn { height: 56px; width: 56px; } } .be14000-main-container .be14000-carousel--ports-nav .be14000-carousel-btn:focus { outline: none; box-shadow: none; } .be14000-main-container .be14000-carousel--ports-nav .be14000-carousel-btn:active:not(:disabled) { opacity: 0.75; } .be14000-main-container .be14000-carousel--ports-nav .be14000-carousel-btn:disabled { cursor: not-allowed; opacity: 0.35; } .be14000-main-container .be14000-carousel--ports-nav .be14000-carousel-btn--prev { background: transparent; border: 1px solid rgba(255, 255, 255, 0.6); color: #fff; } .be14000-main-container .be14000-carousel--ports-nav .be14000-carousel-btn--prev:active:not(:disabled) { border-color: #fff; } .be14000-main-container .be14000-carousel--ports-nav .be14000-carousel-btn--next { background: #fff; border: none; color: #000; } .be14000-main-container .be14000-ports .scenarios-image, .be14000-main-container .be14000-vpn .scenarios-image { display: grid; width: 100%; } .be14000-main-container .be14000-ports .scenarios-image .scene-img, .be14000-main-container .be14000-vpn .scenarios-image .scene-img { display: block; grid-area: 1 / 1; height: auto; opacity: 0; width: 100%; z-index: 1; } .be14000-main-container .be14000-vpn .scenarios-image .scene-img { justify-self: center; width: 90%; } .be14000-main-container .be14000-ports .scenarios-image .scene-img[href], .be14000-main-container .be14000-vpn .scenarios-image .scene-img[href] { text-decoration: none; } .be14000-main-container .be14000-ports .scenarios-image .scene-img:not(.active), .be14000-main-container .be14000-vpn .scenarios-image .scene-img:not(.active) { pointer-events: none; } .be14000-main-container .be14000-ports .scenarios-image .scene-img.active, .be14000-main-container .be14000-vpn .scenarios-image .scene-img.active { opacity: 1; z-index: 2; } .be14000-main-container :is(.be14000-ports, .be14000-vpn, .be14000-wifi7-hover-grid) .scenarios-tabs { display: flex; gap: 12px; justify-content: center; width: 100%; } .be14000-main-container :is(.be14000-ports, .be14000-vpn, .be14000-wifi7-hover-grid) .scenarios-tabs .scenarios-tabs-wrapper { -webkit-overflow-scrolling: touch; overflow-x: auto; padding: 10px 0; scrollbar-width: none; } .be14000-main-container :is(.be14000-ports, .be14000-vpn, .be14000-wifi7-hover-grid) .scenarios-tabs .scenarios-tabs-wrapper::-webkit-scrollbar { display: none; } .be14000-main-container :is(.be14000-ports, .be14000-vpn, .be14000-wifi7-hover-grid) .scenarios-tabs .scenarios-tabs-bg { background: #2d2d2d; border-radius: 999px; display: inline-flex; flex-wrap: nowrap; gap: 8px; margin: 0 auto; padding: 5px; position: relative; width: max-content; z-index: 1; } .be14000-main-container :is(.be14000-ports, .be14000-vpn, .be14000-wifi7-hover-grid) .scenarios-tabs .scenarios-tabs-bg .tab-sliding-indicator { background-color: var(--be14000); border-radius: 40px; height: calc(100% - 10px); left: 0; position: absolute; top: 5px; transform: translateX(var(--indicator-left, 0)); transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1); width: var(--indicator-width, 0); z-index: 0; } .be14000-main-container :is(.be14000-ports, .be14000-vpn, .be14000-wifi7-hover-grid) .scenarios-tabs .scenarios-tabs-bg button.tab { background: transparent; border: none; border-radius: 999px; color: #a1a1a1; cursor: pointer; font-weight: 500; outline: none; padding: 8px 20px; position: relative; transition: color 0.3s; white-space: nowrap; z-index: 2; box-shadow: none; } .be14000-main-container :is(.be14000-ports, .be14000-vpn, .be14000-wifi7-hover-grid) .scenarios-tabs .scenarios-tabs-bg button.tab:focus, .be14000-main-container :is(.be14000-ports, .be14000-vpn, .be14000-wifi7-hover-grid) .scenarios-tabs .scenarios-tabs-bg button.tab:focus-visible, .be14000-main-container :is(.be14000-ports, .be14000-vpn, .be14000-wifi7-hover-grid) .scenarios-tabs .scenarios-tabs-bg button.tab:active { background: transparent; box-shadow: none; outline: none; } .be14000-main-container :is(.be14000-ports, .be14000-vpn, .be14000-wifi7-hover-grid) .scenarios-tabs .scenarios-tabs-bg button.tab.active { color: #fff; } .be14000-main-container .be14000-vpn .be14000-vpn-panel { display: none; } .be14000-main-container .be14000-vpn .be14000-vpn-panel.active { display: block; } .be14000-main-container .be14000-vpn .be14000-vpn-dot { font-size: 0.4em; margin-right: 0.6em; vertical-align: 0.2em; } .be14000-main-container .be14000-text-note, .be14000-main-container .be14000-vpn .be14000-vpn-tab-content .be14000-vpn-panel p { font-size: 13px; font-style: italic; } .be14000-main-container .be14000-vpn .be14000-usecase-rows > .row + .row { margin-top: 1rem; } @media (min-width: 992px) { .be14000-main-container .be14000-vpn .be14000-usecase-rows > .row + .row { margin-top: 1.5rem; } } .be14000-main-container .be14000-vpn .be14000-usecase-rows > .row.be14000-vpn-card { border: 1px solid #82828a; } .be14000-main-container .be14000-ports { overflow: hidden; } .be14000-main-container .be14000-ports .be14000-ports-visual { background: linear-gradient( 180deg, #000 0%, #000 25%, #163a6e 55%, var(--be14000) 100% ); } .be14000-main-container .be14000-ports .be14000-ports-footer { background: linear-gradient(180deg, #132958 0%, #000 40%); padding: 0 0 6rem; } @media (min-width: 992px) { .be14000-main-container .be14000-ports .be14000-ports-footer { padding: 0 0 10rem; } } .be14000-main-container .be14000-ports .be14000-ports-footer p[data-target] { display: none; } .be14000-main-container .be14000-ports .be14000-ports-footer p[data-target].active { display: block; } .be14000-main-container .be14000-ports .be14000-scenarios { margin: auto; position: relative; z-index: 0; } .be14000-main-container .be14000-touchscreen-section { overflow-x: hidden; } .be14000-main-container .be14000-touchscreen-hero { overflow: visible; position: relative; transform-origin: center top; } @media (min-width: 768px) { .be14000-main-container .be14000-touchscreen-hero { transform: scale(1.2); } } .be14000-main-container .be14000-touchscreen-hero::after { background: linear-gradient( 180deg, #000 0%, transparent 10%, transparent 75%, #000 100% ); content: ""; inset: 0; pointer-events: none; position: absolute; } .be14000-main-container .be14000-touchscreen-cards { margin-top: -20px; } .be14000-main-container .be14000-touchscreen-card { aspect-ratio: 16 / 10; background-position: center; background-repeat: no-repeat; background-size: 140%; position: relative; } @media (max-width: 767px) { .be14000-main-container .be14000-touchscreen-card { aspect-ratio: 4 / 3; } } .be14000-main-container .be14000-touchscreen-card--1 { background-image: url("https://static.gl-inet.com/www/images/products/gl-be14000/touchscreen_01.jpg"); } .be14000-main-container .be14000-touchscreen-card--2 { background-image: url("https://static.gl-inet.com/www/images/products/gl-be14000/touchscreen_02.jpg"); } .be14000-main-container .be14000-touchscreen-card__content { background: linear-gradient( 180deg, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0.75) 100% ); bottom: 0; left: 0; padding: 2.5rem 1.5rem 1.25rem; position: absolute; right: 0; } .be14000-flash-section .be14000-flash-compare + .be14000-usecase-rows { margin-top: 3rem; } @media (min-width: 992px) { .be14000-flash-section .be14000-flash-compare + .be14000-usecase-rows { margin-top: 5rem; } } .be14000-flash-section .be14000-flash-compare { --be14000-flash-col-gap: 20px; --be14000-flash-label-width: 320px; align-items: center; display: grid; grid-template-columns: var(--be14000-flash-label-width) 1px minmax(0, 1fr); grid-template-rows: auto auto; position: relative; row-gap: 32px; } @media (max-width: 767px) { .be14000-flash-section .be14000-flash-compare { --be14000-flash-col-gap: 12px; --be14000-flash-label-width: 148px; row-gap: 24px; } } .be14000-flash-section .be14000-flash-compare-label { align-self: center; grid-column: 1; padding-right: var(--be14000-flash-col-gap); } .be14000-flash-section .be14000-flash-compare-label:nth-of-type(1) { grid-row: 1; } .be14000-flash-section .be14000-flash-compare-label:nth-of-type(2) { grid-row: 2; } .be14000-flash-section .be14000-flash-compare-img { max-height: 160px; width: auto; } @media (max-width: 767px) { .be14000-flash-section .be14000-flash-compare-img { max-height: 72px; } } .be14000-flash-section .be14000-flash-compare-axis { align-self: stretch; background-color: rgba(255, 255, 255, 0.35); grid-column: 2; grid-row: 1 / -1; width: 1px; } .be14000-flash-section .be14000-flash-compare-marker { --be14000-flash-dash-length: 10px; --be14000-flash-dash-gap: 10px; bottom: 0; left: calc(var(--be14000-flash-label-width) + 1px); pointer-events: none; position: absolute; right: 0; top: 0; z-index: 2; } .be14000-flash-section .be14000-flash-compare-marker::before { background: repeating-linear-gradient( to bottom, #fff 0, #fff var(--be14000-flash-dash-length), transparent var(--be14000-flash-dash-length), transparent calc(var(--be14000-flash-dash-length) + var(--be14000-flash-dash-gap)) ); background-size: 1px calc(var(--be14000-flash-dash-length) + var(--be14000-flash-dash-gap)); bottom: 0; content: ""; left: var(--be14000-flash-typical-size, 118px); position: absolute; top: 0; transform: translateX(-0.5px); width: 1px; } .be14000-flash-section .be14000-flash-compare-bar { align-self: center; grid-column: 3; height: 48px; overflow: hidden; } @media (min-width: 768px) { .be14000-flash-section .be14000-flash-compare-bar { height: 64px; } } .be14000-flash-section .be14000-flash-compare-bar--flint4 { align-items: center; background: linear-gradient(90deg, #1b9fff 0%, #1a53c3 100%); display: flex; grid-row: 1; justify-content: flex-end; padding: 0 20px; position: relative; } .be14000-flash-section .be14000-flash-compare-bar--flint4::before { animation: be14000-flash-stripe-move 30s linear infinite; background: repeating-linear-gradient( -75deg, rgba(255, 255, 255, 0.05), rgba(255, 255, 255, 0.05) 24px, transparent 24px, transparent 48px ); background-position: 1240px 0; background-size: 1240px 100%; content: ""; height: 100%; left: 0; pointer-events: none; position: absolute; top: 0; width: 100%; } @media (prefers-reduced-motion: reduce) { .be14000-flash-section .be14000-flash-compare-bar--flint4::before { animation: none; } } .be14000-flash-section .be14000-flash-compare-bar--flint4 span { position: relative; z-index: 1; } .be14000-flash-section .be14000-flash-compare-bar--typical { background: #82828a4d; grid-row: 2; } .be14000-flash-section .be14000-flash-compare-bar__fill { align-items: center; background: #82828a; display: flex; height: 100%; justify-content: center; padding: 0 10px; width: var(--be14000-flash-typical-size, 118px); } .be14000-flash-section .be14000-flash-compare-bar__fill span { font-size: 0.8125rem; white-space: nowrap; } @media (min-width: 768px) { .be14000-flash-section .be14000-flash-compare-bar__fill span { font-size: 1rem; } } @keyframes be14000-flash-stripe-move { to { background-position: 0 0; } } .be14000-main-container .be14000-openwrt-section { overflow-x: hidden; } .be14000-main-container .be14000-openwrt-section .be14000-openwrt-usecases { position: relative; } .be14000-comparison-section { background-color: #000; } .be14000-comparison-section .model-comparison-header-mobile { align-content: center; background-color: #000; z-index: 20; padding: 0.75rem 0; /* no sticky — native/custom popup + sticky breaks on this page */ } .be14000-comparison-section .be14000-compare-dd { position: relative; width: 100%; z-index: 1; } .be14000-comparison-section .be14000-compare-dd.is-open { z-index: 40; } .be14000-comparison-section .be14000-compare-dd__btn { display: flex; align-items: center; justify-content: space-between; gap: 0.5rem; width: 100%; margin: 0; padding: 0.45rem 0.75rem; font-size: 0.75rem; font-weight: 500; line-height: 1.3; text-align: left; color: #fff; background-color: #121214; border: 1px solid #fff; cursor: pointer; } .be14000-comparison-section .be14000-compare-dd__btn::after { content: ""; flex: 0 0 0.7em; width: 0.7em; height: 0.7em; margin-left: 0.25rem; background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23dee2e6' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e"); background-repeat: no-repeat; background-position: center; background-size: contain; } .be14000-comparison-section .be14000-compare-dd__label { flex: 1 1 auto; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .be14000-comparison-section .be14000-compare-dd__menu { position: absolute; top: calc(100% + 4px); left: 0; right: 0; z-index: 50; margin: 0; padding: 0; list-style: none; background-color: #1a1a1c; border: 1px solid rgba(255, 255, 255, 0.35); box-shadow: 0 8px 24px rgba(0, 0, 0, 0.45); } .be14000-comparison-section .be14000-compare-dd__menu > li { margin: 0; padding: 0; } .be14000-comparison-section .be14000-compare-dd__option { display: block; width: 100%; margin: 0; padding: 0.55rem 0.75rem; border: 0; border-radius: 0; background: transparent; color: #fff; font-size: 0.75rem; font-weight: 500; text-align: left; cursor: pointer; } .be14000-comparison-section .be14000-compare-dd__option:hover, .be14000-comparison-section .be14000-compare-dd__option:focus, .be14000-comparison-section .be14000-compare-dd__option.is-active { background-color: #2b68c3; outline: 0; } .be14000-comparison-section .be14000-compare-dd__option.is-disabled { display: none; } .be14000-comparison-section .model-comparisonp-detail { color: #fff; } .be14000-comparison-section .model-comparisonp-detail:nth-child(odd) { background-color: #1f2029; } .be14000-comparison-section .model-comparisonp-detail > div { padding: 1rem 2rem; align-self: center; } .be14000-comparison-section .model-comparisonp-detail--top > div { align-self: flex-start; } @media (max-width: 991px) { .be14000-comparison-section .model-comparisonp-detail > div { padding: 2.25rem 2rem; } } .be14000-comparison-section .model-comparisonp-detail p { margin-bottom: 0; } .be14000-comparison-section .model-comparisonp-detail.mb-4 > .compare-col { align-self: stretch; display: flex; flex-direction: column; } .be14000-comparison-section .model-comparisonp-detail.mb-4 > .compare-col > p { margin-bottom: 1rem; } .be14000-comparison-section .model-comparisonp-detail.mb-4 > .compare-col > .mt-auto { margin-top: auto; } .be14000-comparison-section .compare-col__media { position: relative; display: inline-block; max-width: 100%; } .be14000-comparison-section .compare-col__media > img { position: relative; z-index: 0; display: block; } .be14000-comparison-section .badge-new { position: absolute; top: 0; right: 0; z-index: 1; background-color: #0400FF; } @media (max-width: 1200px) { .be14000-comparison-section .compare-col .btn-round { font-size: 0.75rem; line-height: 1.2; min-height: 0; padding: 1rem 0.75rem; } } @media (max-width: 767px) { .be14000-comparison-section .model-comparisonp-detail > .compare-col:not(.selected) { display: none; } } .be14000-main-container #youtube-playlist-container a { color: #fff; } .be14000-main-container #youtube-playlist-container a:hover { color: #323436; background: #fff; } .be14000-main-container #ytPlayListUl a { color: #fff; } .be14000-main-container #ytPlayListUl a:hover { color: #323436; } #ytvideoPlayer .card { background-color: black; } #ytvideoPlayer .card iframe { aspect-ratio: 16/9; width: 100%; } #ytplaylist .card { background-color: black; } #ytplaylist .card #ytListBtn { display: none; } @media (max-width: 991px) { #ytplaylist .card #ytListBtn { display: inline-block; } } #ytplaylist .card #ytPlayListUl { flex: 1; overflow: auto; padding: 0.5rem 1.5rem; } @media (max-width: 991px) { #ytplaylist .card #ytPlayListUl { display: none; padding: 20px; } } @media (max-width: 991px) { #ytplaylist .card h5 { margin: 0; } } #youtube-playlist-container { display: flex; flex-direction: column; align-items: center; } #playlistVideo { width: 960px; margin: 0 auto; height: 520px; max-width: 100%; } @media (max-width: 767px) { #playlistVideo { width: 450px; max-width: none; margin: 0; height: 320px; } } #ytplaylist { overflow-y: auto; white-space: nowrap; display: flex; flex-direction: column; background-color: black; padding: 20px; max-height: 520px; } @media (max-width: 991px) { #ytplaylist { width: 100%; padding: 0 20px; } } #ytplaylist li { list-style: none; text-align: left; margin-bottom: 10px; display: flex; align-items: center; transition: background-color 0.3s ease-in-out; } #ytplaylist li:hover { background-color: #333; border-radius: 15px; } #ytplaylist li:hover .video-title { color: #fff; } #ytplaylist img { cursor: pointer; border: 2px solid #ddd; border-radius: 8px; transition: border-color 0.3s ease-in-out; margin-right: 10px; width: 150px; } #ytplaylist img:hover { border-color: #555; } #ytplaylist .title-container { max-width: 250px; width: 100%; white-space: normal; } @media (max-width: 991px) { #ytplaylist .title-container { max-width: inherit; } } #ytplaylist .video-title { font-size: 14px; color: white; transition: color 0.3s ease-in-out; text-align: left; } .tiny-slider-container-beta-tester-review .tiny-slider-beta-tester-review { display: flex; flex-wrap: wrap; } .tiny-slider-container-beta-tester-review .tiny-slider-beta-tester-review .tiny-slider-item-beta-tester-review { padding: 0 1rem; vertical-align: middle; display: inline-flex; } @media (max-width: 991px) { .tiny-slider-container-beta-tester-review .tiny-slider-beta-tester-review .tiny-slider-item-beta-tester-review { vertical-align: top; } } .tiny-slider-container-beta-tester-review .tiny-slider-beta-tester-review .tiny-slider-item-beta-tester-review .tiny-slider-review-card { display: flex; height: 100%; } .tiny-slider-container-beta-tester-review .tiny-slider-beta-tester-review .tiny-slider-item-beta-tester-review .tiny-slider-review-card .row { background-color: #ffffff; margin: 0; align-items: center; } @media (max-width: 991px) { .tiny-slider-container-beta-tester-review .tiny-slider-beta-tester-review .tiny-slider-item-beta-tester-review .tiny-slider-review-card .row { align-items: flex-start; } } @media (max-width: 767px) { .tiny-slider-container-beta-tester-review .tiny-slider-beta-tester-review .tiny-slider-item-beta-tester-review .tiny-slider-review-card .row { margin-right: 0; } } .tiny-slider-container-beta-tester-review .tiny-slider-beta-tester-review .tiny-slider-item-beta-tester-review .tiny-slider-review-card .row .card-image { height: 100%; } @media (max-width: 991px) { .tiny-slider-container-beta-tester-review .tiny-slider-beta-tester-review .tiny-slider-item-beta-tester-review .tiny-slider-review-card .row .card-image { height: auto; } } .tiny-slider-container-beta-tester-review .tiny-slider-beta-tester-review .tiny-slider-item-beta-tester-review .tiny-slider-review-card .row .card-image img { width: 100%; height: 100%; object-fit: cover; border-radius: 15px 0 0 15px; } @media (max-width: 991px) { .tiny-slider-container-beta-tester-review .tiny-slider-beta-tester-review .tiny-slider-item-beta-tester-review .tiny-slider-review-card .row .card-image img { border-radius: 15px 15px 0 0; width: 100%; height: auto; } } .tiny-slider-container-beta-tester-review .tiny-slider-beta-tester-review .tiny-slider-item-beta-tester-review .tiny-slider-review-card .row p { font-size: 1.1rem; } .be14000-main-container .tiny-slider-controls.circle-controls a:hover { background-color: var(--be14000); color: #fff; } Meet Flint 4 BE14000 Tri-band Wi-Fi 7 Home Router The High-Performance Home Network Hub Flint 4 (GL-BE14000) redefines what a home router can be. More than a fast Wi-Fi router, it is built to serve as the high-performance core of modern home networks. Designed for demanding homes, power users, SOHO setups, and light business environments, Flint 4 is built for networks that need more than ordinary routers can deliver. Tri-band Wi-Fi 7 with MLO: Max. 688 Mbps (2.4 GHz) + 4,323 Mbps (5 GHz) + 8,646 Mbps (6 GHz) Complete Multi-Gig Wired Backbone: 1 x 10G SFP+ WAN/LAN, 1 x 10GE WAN/LAN, 1 x 2.5GE WAN/LAN, 3 x 2.5GE LAN and 4 x 1GE LAN High-Performance VPN: Up to 1.5 Gbps on WireGuard® and OpenVPN DCO 2.4" Touchscreen Display: Real-time network status monitoring and at-a-glance visibility across your network, right on the device. View Specs Previous Next .product-show-list { padding: 0; margin: 0; } .product-show-list>li { list-style-type: none; margin: 0; padding: 0; display: none; } .product-show-list>li.active { display: block; } Highlight Features Reviews Specs let currentModel = '' window.addEventListener("scroll", function () { document.querySelectorAll(".product-nav-section").forEach((section) => { let sectionTop = section.offsetTop; if (pageYOffset >= sectionTop - 100) { currentModel = section.getAttribute("id"); } }); document.querySelectorAll(".product-nav-item").forEach((li) => { if (li.classList.contains(currentModel)) { li.classList.add("active"); } else { li.classList.remove("active"); } }); }); Get the Highlights Tri-Band Wi-Fi 7 2.4GHz: 688Mbps 5GHz: 4,323Mbps 6GHz: 8,646Mbps Multi-Gig Wired Backbone Built for high-speed wired performance 2.4-inch Touchscreen Real-time status at a glance Blazing-Fast VPN Up to 1.5 Gbps VPN Multi-tunnel VPN Failover Enhanced Kill Switch VLAN Segmentation AdvancedDPI Shield 64GB Flash Dual USB 3.0 USB-C Expansion IoT Network Tri-Band Wi-Fi 7, Built for More Flint 4 leverages tri-band Wi-Fi 7 to deliver a faster, smoother, and more responsive wireless experience for modern high-load networks. With support for 2.4 GHz, 5 GHz, and 6 GHz, plus Multi-Link Operation (MLO), it gives every device more bandwidth to perform at its best while helping reduce congestion, improve responsiveness, and maintain network stability under heavier demand. Wi-Fi 7 6 GHz 8646 Mbps 5 GHz 4323 Mbps 2.4 GHz 688 Mbps WI-FI COVERAGE Coverage up to 3,100 sq ft Designed to provide strong, reliable wireless coverage across larger homes and more demanding environments. *Coverage estimates are based on testing in an open environment. Actual coverage varies with building materials, layout, and interference. DEVICES CONNECTED Connect over 250 devices smoothly Flint 4 is built for high-capacity performance, helping smart TVs, laptops, phones, and IoT devices stay fast and reliable even in busy multi-user environments. *Device capacity figures are based on testing in a controlled lab environment. Actual results may vary depending on devices, usage, and network conditions. WI-FI COVERAGE DEVICES CONNECTED Coverage up to 3,100 sq ft Designed to provide strong, reliable wireless coverage across larger homes and more demanding environments. *Coverage estimates are based on testing in an open environment. Actual coverage varies with building materials, layout, and interference. Connect over 250 devices smoothly Flint 4 is built for high-capacity performance, helping smart TVs, laptops, phones, and IoT devices stay fast and reliable even in busy multi-user environments. *Device capacity figures are based on testing in a controlled lab environment. Actual results may vary depending on devices, usage, and network conditions. Complete Multi-Gig Wired Backbone 10G SFP+ 10GE WAN/LAN 2.5GE WAN/LAN 3 x 2.5GE LAN 4 x 1GE LAN The 10G SFP+ port is designed for fiber uplinks, advanced switching, and high-performance network expansion. It gives Flint 4 the flexibility to connect with compatible fiber modules or higher-end wired infrastructure where ultra-fast throughput matters most. The 10 Gigabit Ethernet WAN/LAN port delivers ultra-fast connectivity for bandwidth-heavy devices such as NAS systems, creator workstations, servers, or multi-gig switches. It can also serve as a high-speed internet uplink, giving Flint 4 greater flexibility for advanced network setups that demand more than standard Gigabit can provide. This 2.5 Gigabit WAN/LAN port can be used either as a high-speed internet uplink or as an additional LAN port for multi-gig devices. It adds flexibility to different network setups without locking you into a fixed configuration. With three dedicated 2.5GE LAN ports, Flint 4 is ready for gaming PCs, creator desktops, NAS systems, Wi-Fi access points, and other bandwidth-heavy hardware that benefits from faster wired performance. The four Gigabit LAN ports provide stable wired connections for TVs, consoles, printers, smart home hubs, VoIP phones, and other everyday devices. Perfect for completing a practical wired network without using multi-gig ports where they are not needed. High-Speed NAS Access Creator Workstations SOHO and Light Business Smart Home and Entertainment Gaming and Performance High-Performance VPN, Without the Usual Trade-Offs Flint 4 is built to deliver high-speed VPN performance for users who expect both security and speed. With up to 1.5 Gbps on WireGuard® and OpenVPN DCO, it helps protect your privacy, enable secure remote access, and support more advanced network use without the slowdowns often associated with traditional VPN routers. Fast VPN Speeds Broad VPN Compatibility Up to 1.5 Gbps VPN Built-in OpenVPN DCO acceleration ensures faster encryption and smoother performance for remote work, travel, and privacy-focused users. Tests conducted on a local network. Real world speeds may differ depending on your network configuration. OpenVPN and WireGuard speeds will be slower when running the device as a server. Results above are in client mode. Supports 30+ VPN services with OpenVPN and WireGuard® in both client and server modes WireGuard® is a registered trademark of Jason A.Donenfeld. Smarter VPN Routing and Protection Concurrent VPN Tunnels with Policy-Based Routing Run multiple VPN connections simultaneously and apply different routing policies to all clients, specified connection types, specified devices, or all devices except those you exclude. Multi-Profile Selection and Automatic Failover Select multiple profiles within a tunnel, and traffic will automatically switch to the next available profile if the current one becomes unavailable, helping keep the connection stable and reliable. Kill Switch Protection When enabled, Kill Switch Protection helps ensure all traffic remains inside the VPN tunnel by automatically blocking any connection that would otherwise bypass the VPN. Unlock Flexible, Customizable Networking Built on OpenWrt 21.02 (Kernel Version 5.4), Flint 4 delivers a more flexible and customizable networking experience. With broad plugin support and advanced configuration options, it gives users more ways to tailor features, expand capabilities, and shape the network around their needs. Advanced Home Network Customization Shape your network around the way you actually use it. Plugin Expansion and Feature Flexibility Add more functionality as your network needs evolve. VPN Policy and Advanced Routing Control how traffic moves across your network. Shape your network around the way you actually use it. Add more functionality as your network needs evolve. Control how traffic moves across your network. Advanced Home Network Customization Plugin Expansion and Feature Flexibility VPN Policy and Advanced Routing Smarter Flow Control With DPI Engine, Data Statistics, Content Filter, QoS, and SQM, Flint 4 helps users understand traffic, prioritize what matters most, and reduce latency under load. AdGuard Home Enjoy a faster, safer, and cleaner web experience with AdGuard Home built into Flint 4. It helps block intrusive ads, stops trackers from following your online activity, and adds protection against phishing and malware-related threats — so browsing feels more private, less distracting, and better protected. 2.4-inch Touchscreen, Real-Time Status at a Glance Flint 4 features a built-in 2.4-inch touchscreen that brings real-time network status and essential controls directly to the device. Check DPI status, traffic data, and other key details at a glance, without opening the web admin panel. From toggling VPNs and sharing Wi-Fi to monitoring system status, the touchscreen makes everyday control faster, simpler, and more immediate from the moment you power on. Get Started Instantly, No App Required Enjoy a more direct setup experience with key functions accessible right on the device. Simplified VLAN Setup Make network segmentation easier to manage with more accessible on-device controls. 100× More Storage Most home routers offer only 256MB to 512MB of Flash — enough for basic firmware, but limited for expansion. With 64GB of onboard Flash, Flint 4 delivers over 100× More Storage, making more room for OpenWrt packages, richer logs, and more capable local services. Flint 4 64GB Typical home routers 256MB-512MB Stay Online with Backup Connectivity Use one USB port to connect a 4G / 5G dongle or mobile hotspot for failover. For small businesses and home offices, this creates a practical backup internet option that helps keep work running when the main connection goes down. Add Lightweight Private Cloud Storage Use the second USB port to connect an SSD, external drive, or USB flash drive. With support for Samba, WebDAV, DLNA, Flint 4 can provide a low-cost way to enable shared storage, local file access, and smoother data transfer across the home or office. Product Reviews from Youtubers Flint 4 (GL-BE14000) Reviews Gl.iNet Flint 4 Monster Router is Real Day 1 at CES! 🔴LIVE! Flint 4 SFP+ Unboxing Wifi performance Iperf3 GL-BE14000 These Travel Routers Are Amazing | GL.iNet @ CES 2026 6 New GL.iNet Devices You NEED to See from CES 2026 View More What Beta Testers are Saying The 10G SFP+ and 10GbE RJ45 combo is brilliant. I’ve got my multi-gig fiber line feeding directly into my local NAS switch setup with zero bottlenecks. @mnavis29 As a technical enthusiast running a high-performance smart home on a 2.3 Gbps symmetrical fiber connection, the GL.iNet Flint 4 (GL-BE14000) has completely redefined my network's capabilities. The hardware profile is stellar. Having access to multiple 10Gbps and multi-gigabit switch ports means I can finally saturate my full ISP line speed right out of the box. @ashoruk89 Move over OPNSENSE/FLINT 2, FLINT 4 is my new favourite. @Oztech74L GL.iNet have come up with a masterpiece of engineering with the Flint 4. Not only do you get a gorgeous router with an LCD touchscreen along with 10 GBE and 64GB flash, you get a world class router, capable of exceeding 2Gbps with OpenVPN connections. @phantasm2222 Flint 4 (GL-BE14000) is a fantastic step up from the Flint 2, with noticeably better Wi-Fi coverage and speed, lower latency, and rock-solid stability across every device I tested. It stays cool and silent even under heavy use, handles advanced networking setups like VLAN segmentation with ease, and easily saturates my 2.5Gbps homelab connection without a single hiccup. @ziotidus Flint4 is a real improvement in the home network. If you have no special needs, just plug in, open the Web interface and connect to the ISP or upstream router. You'll get a fast central network node, to connect multiple 2,5GB devices and one 10GB SPF+ for a NAS or similar. @LupusE Its Wi-Fi 7 capabilities and robust signal strength represent a significant leap over previous-generation devices that once you experience it, there’s truly no going back. And thanks to its polished interface, I can quickly deploy VPNs, configure dedicated VLANs, and fine-tune advanced network settings with just a few clicks. @leo.sfsm Performance was consistently fast and stable, with excellent Wi-Fi coverage and solid VPN throughput. The hardware feels premium and the software is easy to use, although the router can get a bit warm under load. Overall, it's a powerful router with great potential, and I'm looking forward to the official release and continued software improvements. @Punajurrikka The Flint 4 is an absolute powerhouse, easy to set up and jam packed with features you’d expect in enterprise hardware. My Wi-Fi has never been so good! @torvi9607 I have a very demanding environment, not only in terms of networking equipment, but also the physical structure of my house. The Flint 4 was piggy backing off of my 10Gig home network and was the forefront of my homelab test environment. The Flint 4 was physically located at the top level of a 3 storey house and was still able to produce a strong wifi signal that allowed me to connect to even in the ground floor. @BMV_12 Product Comparison Flint 4 (GL-BE14000) Flint 4 (GL-BE14000) Flint 3 (GL-BE9300) Flint 2 (GL-MT6000) Flint 3 (GL-BE9300) Flint 4 (GL-BE14000) Flint 3 (GL-BE9300) Flint 2 (GL-MT6000) New Flint 4 (GL-BE14000) BE14000 Tri-band Wi-Fi 7 Home Router Pre-order Now Flint 3 (GL-BE9300) BE9300 Tri-band Wi-Fi 7 Home Router Learn More Flint 2 (GL-MT6000) High-Performance Wi-Fi 6 Router Learn More CPU CPU MediaTek, Quad-core @1.8 GHz CPU Qualcomm, Quad-core @1.5 GHz CPU MediaTek, Quad-core @2.0 GHz Memory / Storage Memory / Storage DDR4 2GB / eMMC 64 GB Memory / Storage DDR4 1 GB / eMMC 8 GB Memory / Storage DDR4 1 GB / eMMC 8 GB Wi-Fi Coverage Wi-Fi Coverage Up to 3,100 sq ft Wi-Fi Coverage Up to 2,000 sq ft Wi-Fi Coverage Up to 1,500 sq ft Wi-Fi Speed Wi-Fi Speed Max. 688 Mbps (2.4 GHz) + 4,323 Mbps (5 GHz) + 8,646 Mbps (6 GHz) Wi-Fi Speed Max. 688 Mbps (2.4 GHz) + 2,882 Mbps (5 GHz) + 5,765 Mbps (6 GHz) Wi-Fi Speed Max. 1148 Mbps (2.4 GHz) + 4,804 Mbps (5 GHz) WireGuard® Speed WireGuard® Speed Max. 1500 Mbps WireGuard® Speed Max. 680 Mbps WireGuard® Speed Max. 900 Mbps OpenVPN Speed OpenVPN Speed Max. 1500 Mbps (with DCO support) OpenVPN Speed Max. 680 Mbps (with DCO support) OpenVPN Speed Max. 880 Mbps (with DCO support) Touchscreen Touchscreen Touchscreen Touchscreen Ethernet Ports Ethernet Ports 1 x 10G WAN/LAN Ethernet Port 1 x 10G SFP+ WAN/LAN Port 1 x 2.5G WAN/LAN Ethernet Port 3 x 2.5G LAN Ethernet Ports 4 x 1G LAN Ethernet Ports Ethernet Ports 1 x 2.5G WAN Ethernet Port 1 x 2.5G WAN/LAN Ethernet Port 3 x 2.5G LAN Ethernet Ports Ethernet Ports 1 x 2.5G WAN Ethernet Port 1 x 2.5G WAN/LAN Ethernet Port 4 x LAN Ethernet Ports Device Capacity Device Capacity Up to 250 concurrent devices Device Capacity Up to 124 concurrent devices Device Capacity Up to 86 concurrent devices (function () { function initBe14000Compare() { var compareSection = document.getElementById('compare'); if (!compareSection || compareSection.getAttribute('data-compare-bound') === '1') return; compareSection.setAttribute('data-compare-bound', '1'); var dropdowns = Array.prototype.slice.call(compareSection.querySelectorAll('.be14000-compare-dd')); var rows = compareSection.querySelectorAll('.model-comparisonp-detail'); function isMobileCompare() { return window.innerWidth < 768; } function getSelectedValues() { // Mobile (= 0) { col.classList.add('selected'); col.style.order = String(showIndex + 1); } else { col.classList.remove('selected'); col.style.order = ''; } }); }); } function updateOptions() { var selected = getSelectedValues(); dropdowns.forEach(function (dd) { var current = dd.getAttribute('data-value'); Array.prototype.forEach.call(dd.querySelectorAll('.be14000-compare-dd__option'), function (opt) { var value = opt.getAttribute('data-value'); var taken = selected.indexOf(value) !== -1 && value !== current; opt.classList.toggle('is-disabled', taken); opt.classList.toggle('is-active', value === current); opt.disabled = taken; }); }); } function setValue(dd, value) { var opt = dd.querySelector('.be14000-compare-dd__option[data-value="' + value + '"]'); if (!opt) return; dd.setAttribute('data-value', value); var label = dd.querySelector('.be14000-compare-dd__label'); if (label) label.textContent = opt.textContent.replace(/\s+/g, ' ').trim(); } dropdowns.forEach(function (dd) { var btn = dd.querySelector('.be14000-compare-dd__btn'); var menu = dd.querySelector('.be14000-compare-dd__menu'); if (!btn || !menu) return; btn.addEventListener('click', function (e) { e.preventDefault(); e.stopPropagation(); var willOpen = menu.hidden; closeAll(); if (willOpen) { dd.classList.add('is-open'); btn.setAttribute('aria-expanded', 'true'); menu.hidden = false; } }); menu.addEventListener('click', function (e) { var opt = e.target.closest('.be14000-compare-dd__option'); if (!opt || opt.disabled) return; e.preventDefault(); e.stopPropagation(); setValue(dd, opt.getAttribute('data-value')); closeAll(); updateOptions(); updateDisplay(); }); }); document.addEventListener('click', function (e) { if (!e.target.closest || !e.target.closest('#compare .be14000-compare-dd')) closeAll(); }); updateOptions(); updateDisplay(); window.addEventListener('resize', function () { updateOptions(); updateDisplay(); }); } if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', initBe14000Compare); } else { initBe14000Compare(); } window.addEventListener('load', initBe14000Compare); })(); Tri-band Wi-Fi 7 Touchscreen 10Gbps SFP+ OpenWrt Support VPN Client /Server VLAN 10GbpsEthernet Port 2.5GbpsEthernet Ports Specifications Interface 1 x 10G WAN/LAN Ethernet Port 1 x 10G SFP+ WAN/LAN Port 1 x 2.5G WAN/LAN Ethernet Port 3 x 2.5G LAN Ethernet Ports 4 x 1G LAN Ethernet Ports 1 x USB 3.0 Port (Type-A) 1 x USB 3.0 Port (Type-C) 1 x Reset Button 1 x Power Button CPU MediaTek Quad-Core Cortex-A73 @ 1.8GHz Memory / Storage DDR4 2 GB / eMMC 64 GB Protocol IEEE 802.11a/b/g/n/ac/ax/be Wi-Fi Speed 688 Mbps (2.4 GHz), 4323 Mbps (5 GHz), 8646 Mbps (6 GHz) Ethernet Speed 10/100/1000/2500/10000 Mbps Antennas 6 x Foldable External Wi-Fi Antennas Power Input 12V/4A Power Consumption Without USB Load: { const gap = 20; const isMobile = window.innerWidth < 768; const slideGap = 10; const slideWidth = isMobile ? viewportWidth - gap * 2 + slideGap * 2 : (viewportWidth - gap) / 2; const centerOffset = isMobile ? gap - slideGap : (viewportWidth - slideWidth) / 2; return { slideWidth, centerOffset }; }; const wifi7SpeedChart = document.querySelector('.be14000-wifi7-speed-chart'); if (wifi7SpeedChart) { const wifi7Observer = new IntersectionObserver(([entry]) => { if (!entry.isIntersecting) return; entry.target.classList.add('is-animated'); wifi7Observer.unobserve(entry.target); }, { threshold: 0.35 }); wifi7Observer.observe(wifi7SpeedChart); } const initHoverPlayGrid = (root) => { if (!root) return; const desktopMq = window.matchMedia('(min-width: 1200px)'); const row = root.querySelector('.be14000-wifi7-hover-grid__row') || root; const tabsBg = root.querySelector('.be14000-wifi7-hover-grid__stack .scenarios-tabs-bg'); const tabs = [...root.querySelectorAll('.be14000-wifi7-hover-grid__stack .tab')]; const panels = [...root.querySelectorAll('.be14000-hover-stack-panel')]; const cards = [...root.querySelectorAll('.be14000-hover-card')].map((card) => ({ card, key: card.getAttribute('data-hover-tab'), video: card.querySelector('.be14000-hover-card__video'), progressFill: card.querySelector('.be14000-hover-card__progress-fill'), })); let activeIndex = 0; let progressRafId = 0; const isDesktop = () => desktopMq.matches; const syncCardHeight = () => { if (!isDesktop()) return; const styles = getComputedStyle(row); const gap = Number.parseFloat(styles.gap) || 0; const paddingX = (Number.parseFloat(styles.paddingLeft) || 0) + (Number.parseFloat(styles.paddingRight) || 0); const restingWidth = (row.clientWidth - paddingX - gap) / 2; if (restingWidth = 1800 ? 9 / 16 : 3 / 4; root.style.setProperty( '--be14000-hover-card-height', `${restingWidth * ratio}px` ); }; const stopProgressLoop = () => { if (!progressRafId) return; cancelAnimationFrame(progressRafId); progressRafId = 0; }; const setProgress = (progressFill, ratio) => { if (!progressFill) return; progressFill.style.transform = `scaleX(${Math.min(Math.max(ratio, 0), 1)})`; }; const startProgressLoop = ({ card, video, progressFill }) => { if (!video || !progressFill) return; stopProgressLoop(); const tick = () => { if (!card.classList.contains('is-active') || video.paused || video.ended) { progressRafId = 0; return; } if (video.duration) { setProgress(progressFill, video.currentTime / video.duration); } progressRafId = requestAnimationFrame(tick); }; progressRafId = requestAnimationFrame(tick); }; const resetMedia = ({ card, video, progressFill }, { keepClass = false } = {}) => { if (!keepClass) card.classList.remove('is-active'); if (video) { video.pause(); try { video.currentTime = 0; } catch (error) { /* ignore seek before metadata */ } } setProgress(progressFill, 0); }; const updateTabIndicator = (activeTab) => { if (!activeTab || !tabsBg) return; tabsBg.style.setProperty('--indicator-width', `${activeTab.offsetWidth}px`); tabsBg.style.setProperty('--indicator-left', `${activeTab.offsetLeft}px`); }; const setActiveIndex = (index, { play = true } = {}) => { activeIndex = ((index % cards.length) + cards.length) % cards.length; const activeItem = cards[activeIndex]; stopProgressLoop(); cards.forEach((item, i) => { const active = i === activeIndex; item.card.classList.toggle('is-active', active); if (item.video) item.video.loop = isDesktop(); if (!active) resetMedia(item, { keepClass: true }); }); tabs.forEach((tab) => { tab.classList.toggle('active', tab.getAttribute('data-tab') === activeItem.key); }); panels.forEach((panel) => { panel.classList.toggle('active', panel.getAttribute('data-target') === activeItem.key); }); updateTabIndicator(tabs.find((tab) => tab.classList.contains('active'))); if (!play || !activeItem?.video) return; activeItem.video.play().then(() => startProgressLoop(activeItem)).catch(() => {}); }; const activateDesktopCard = (item) => { stopProgressLoop(); cards.forEach((other) => { if (other !== item) resetMedia(other); }); item.card.classList.add('is-active'); if (item.video) item.video.loop = true; if (!item.video) return; item.video.play().then(() => startProgressLoop(item)).catch(() => {}); }; cards.forEach((item, index) => { item.card.addEventListener('mouseenter', () => { if (!isDesktop()) return; activateDesktopCard(item); }); item.card.addEventListener('mouseleave', () => { if (!isDesktop()) return; stopProgressLoop(); resetMedia(item); }); item.video?.addEventListener('ended', () => { if (isDesktop()) return; setActiveIndex(activeIndex + 1, { play: true }); }); }); tabs.forEach((tab) => { tab.addEventListener('click', () => { if (isDesktop()) return; const index = cards.findIndex((item) => item.key === tab.getAttribute('data-tab')); if (index >= 0) setActiveIndex(index, { play: true }); }); }); const syncMode = () => { stopProgressLoop(); cards.forEach((item) => { if (item.video) item.video.loop = isDesktop(); resetMedia(item); }); if (isDesktop()) { syncCardHeight(); return; } setActiveIndex(activeIndex, { play: true }); requestAnimationFrame(() => { updateTabIndicator(tabs.find((tab) => tab.classList.contains('active'))); }); }; syncMode(); requestAnimationFrame(syncCardHeight); window.addEventListener('resize', () => { syncCardHeight(); if (!isDesktop()) { updateTabIndicator(tabs.find((tab) => tab.classList.contains('active'))); } }); if (desktopMq.addEventListener) { desktopMq.addEventListener('change', syncMode); } else { desktopMq.addListener(syncMode); } }; initHoverPlayGrid(document.querySelector('.be14000-wifi7-hover-grid')); const flashCompare = document.querySelector('.be14000-flash-compare'); const typicalBar = flashCompare?.querySelector('.be14000-flash-compare-bar--typical'); if (flashCompare && typicalBar) { const typicalRatio = 512 / (64 * 1024); const updateFlashCompare = () => { const trackWidth = typicalBar.offsetWidth; const minWidth = window.innerWidth < 768 ? 96 : 118; flashCompare.style.setProperty( '--be14000-flash-typical-size', `${Math.max(trackWidth * typicalRatio, minWidth)}px` ); }; updateFlashCompare(); window.addEventListener('resize', updateFlashCompare); if (typeof ResizeObserver !== 'undefined') { new ResizeObserver(updateFlashCompare).observe(typicalBar); } } const ensureVideoFrameVisible = (video) => { if (video.readyState >= HTMLMediaElement.HAVE_CURRENT_DATA) { return Promise.resolve(); } return new Promise((resolve) => { const finish = () => { video.removeEventListener('loadeddata', onLoadedData); video.removeEventListener('error', onError); video.pause(); resolve(); }; const onLoadedData = () => finish(); const onError = () => finish(); video.addEventListener('loadeddata', onLoadedData, { once: true }); video.addEventListener('error', onError, { once: true }); video.preload = 'auto'; video.load(); }); }; const syncCarouselVideos = (root, activeSlide) => { if (!root) return; root.querySelectorAll('video').forEach((video) => { const isActive = activeSlide?.contains(video); if (isActive) { const startPlayback = () => { const playPromise = video.play(); if (playPromise !== undefined) { playPromise.catch(() => {}); } }; if (video.readyState >= HTMLMediaElement.HAVE_CURRENT_DATA) { startPlayback(); } else { ensureVideoFrameVisible(video).then(startPlayback); } return; } video.pause(); }); }; const initCenterCarousel = (root, { infinite = true, onRealIndexChange } = {}) => { if (!root) return null; const viewport = root.querySelector('.be14000-carousel-viewport'); const track = root.querySelector('.be14000-carousel-track'); const originalSlides = [...root.querySelectorAll('.be14000-carousel-slide')]; const prevBtn = root.querySelector('.be14000-carousel-btn--prev'); const nextBtn = root.querySelector('.be14000-carousel-btn--next'); const dotsContainer = root.querySelector('.be14000-carousel-dots'); const slideCount = originalSlides.length; if (!viewport || !track || !slideCount) return null; if (infinite) { for (let copy = 0; copy < 2; copy += 1) { originalSlides.forEach((slide) => { const duplicate = slide.cloneNode(true); duplicate.setAttribute('aria-hidden', 'true'); track.appendChild(duplicate); }); } } const slides = [...track.querySelectorAll('.be14000-carousel-slide')]; slides.forEach((slide) => { slide.querySelectorAll('video').forEach((video) => { ensureVideoFrameVisible(video); }); }); let currentIndex = infinite ? slideCount : 0; let isAnimating = false; const dots = dotsContainer ? originalSlides.map((_, index) => { const dot = document.createElement('button'); dot.type = 'button'; dot.className = 'be14000-carousel-dot'; dot.setAttribute('role', 'tab'); dot.setAttribute('aria-label', `Go to slide ${index + 1}`); dot.addEventListener('click', () => goToSlide(index)); dotsContainer.appendChild(dot); return dot; }) : []; const getRealIndex = () => infinite ? ((currentIndex % slideCount) + slideCount) % slideCount : currentIndex; const normalizeToMiddleSet = () => { if (!infinite) return false; if (currentIndex >= slideCount * 2) { currentIndex -= slideCount; return true; } if (currentIndex < slideCount) { currentIndex += slideCount; return true; } return false; }; const updateCarousel = (animate = true) => { const viewportWidth = viewport.offsetWidth; const { slideWidth, centerOffset } = getCarouselLayout(viewportWidth); viewport.style.setProperty('--be14000-carousel-slide-width', `${slideWidth}px`); viewport.style.setProperty('--be14000-carousel-center-offset', `${centerOffset}px`); if (infinite) { root.style.setProperty('--be14000-carousel-slide-width', `${slideWidth}px`); root.style.setProperty('--be14000-carousel-center-offset', `${centerOffset}px`); } track.classList.toggle('is-resetting', !animate); track.style.transition = animate ? 'transform 0.6s ease' : 'none'; track.style.transform = `translateX(${centerOffset - slides[currentIndex].offsetLeft}px)`; const realIndex = getRealIndex(); dots.forEach((dot, index) => { const isActive = index === realIndex; dot.classList.toggle('is-active', isActive); dot.setAttribute('aria-selected', isActive ? 'true' : 'false'); }); slides.forEach((slide, index) => slide.classList.toggle('is-active', index === currentIndex) ); syncCarouselVideos(root, slides[currentIndex]); if (!infinite) { if (prevBtn) prevBtn.disabled = currentIndex === 0; if (nextBtn) nextBtn.disabled = currentIndex >= slideCount - 1; } onRealIndexChange?.(realIndex); }; const goToSlide = (realIndex) => { if (isAnimating) return; if (infinite) { const targetIndex = slideCount + realIndex; if (normalizeToMiddleSet()) { updateCarousel(false); } if (currentIndex === targetIndex) return; isAnimating = true; currentIndex = targetIndex; updateCarousel(true); return; } if (realIndex === currentIndex) return; currentIndex = realIndex; updateCarousel(true); }; const stepCarousel = (direction) => { if (isAnimating) return; if (!infinite) { const nextIndex = currentIndex + direction; if (nextIndex < 0 || nextIndex >= slideCount) return; currentIndex = nextIndex; updateCarousel(true); return; } isAnimating = true; currentIndex += direction; updateCarousel(true); }; track.addEventListener('transitionend', (event) => { if (event.target !== track || event.propertyName !== 'transform') return; if (infinite && normalizeToMiddleSet()) { requestAnimationFrame(() => { updateCarousel(false); isAnimating = false; }); return; } isAnimating = false; }); prevBtn?.addEventListener('click', () => stepCarousel(-1)); nextBtn?.addEventListener('click', () => stepCarousel(1)); window.addEventListener('resize', () => updateCarousel(false)); updateCarousel(false); return { goToSlide }; }; const openwrtTabButtons = [...document.querySelectorAll('.be14000-openwrt-tabs [data-openwrt-slide]')]; const openwrtCarouselApi = initCenterCarousel( document.querySelector('#be14000OpenwrtCarousel'), { infinite: true, onRealIndexChange: (realIndex) => { openwrtTabButtons.forEach((tab) => { const isActive = Number(tab.getAttribute('data-openwrt-slide')) === realIndex; tab.classList.toggle('active', isActive); tab.setAttribute('aria-selected', isActive ? 'true' : 'false'); }); }, } ); openwrtTabButtons.forEach((tab) => { tab.addEventListener('click', () => { openwrtCarouselApi?.goToSlide(Number(tab.getAttribute('data-openwrt-slide'))); }); }); const initScenarioTabs = (section, panelSelector) => { if (!section) return; const bgContainer = section.querySelector('.scenarios-tabs-bg'); const scrollWrapper = section.querySelector('.scenarios-tabs-wrapper'); const tabs = section.querySelectorAll('.tab'); const imgs = section.querySelectorAll('.scene-img'); const panels = section.querySelectorAll(panelSelector); const switchPanel = (target) => { imgs.forEach((img) => { img.classList.toggle('active', img.getAttribute('data-target') === target); }); panels.forEach((panel) => { panel.classList.toggle('active', panel.getAttribute('data-target') === target); }); }; const updateTabUI = (activeTab) => { if (!activeTab || !bgContainer) return; const tabWidth = activeTab.offsetWidth; const tabLeft = activeTab.offsetLeft; bgContainer.style.setProperty('--indicator-width', `${tabWidth}px`); bgContainer.style.setProperty('--indicator-left', `${tabLeft}px`); if (scrollWrapper) { const containerWidth = scrollWrapper.offsetWidth; const targetScroll = tabLeft - (containerWidth / 2) + (tabWidth / 2); scrollWrapper.scrollTo({ left: targetScroll, behavior: 'smooth' }); } }; tabs.forEach((tab) => { tab.addEventListener('click', () => { const target = tab.getAttribute('data-tab'); tabs.forEach((t) => t.classList.remove('active')); tab.classList.add('active'); updateTabUI(tab); switchPanel(target); }); }); const initialActive = section.querySelector('.tab.active'); if (initialActive) { setTimeout(() => updateTabUI(initialActive), 200); } window.addEventListener('resize', () => { const currentActive = section.querySelector('.tab.active'); updateTabUI(currentActive); }); }; initScenarioTabs(document.querySelector('.be14000-ports'), '.be14000-ports-footer p[data-target]'); initScenarioTabs(document.querySelector('.be14000-vpn'), '.be14000-vpn-panel[data-target]'); initCenterCarousel(document.querySelector('#be14000UsecaseCarousel'), { infinite: false, }); });