Error message

  • Deprecated function: implode(): Passing glue string after array is deprecated. Swap the parameters in drupal_get_feeds() (line 394 of /home/cay45lq1/public_html/includes/common.inc).
  • Deprecated function: The each() function is deprecated. This message will be suppressed on further calls in menu_set_active_trail() (line 2405 of /home/cay45lq1/public_html/includes/menu.inc).

TechRadar Reviews

New forum topics

Subscribe to TechRadar Reviews feed
Updated: 23 min 21 sec ago

Acer Googlebook 14 review

Tue, 10/20/2026 - 15:00
At a glance: Acer Googlebook 14

What is it?

The Acer Googlebook 14 is one of the first Googlebook devices on the market. Unlike budget Chromebooks, Googlebooks are premium laptops that run Googlebook OS, an operating system based on Android, and Acer’s model is the most affordable variant and the only one that currently offers a 2-in-1 form factor.

What does it cost?

Googlebooks aren’t budget devices like Chromebooks — they come with premium price tags. That said, the Acer Googlebook 14 is the cheapest model you can get right now, starting at $899 / £999 (around AU$1,300). This entry-level model comes with an Intel Core Ultra 5 Series 3 processor, a 14-inch OLED screen, and 16GB RAM, and in some markets, you can also get it with a more powerful Intel Core Ultra 7 processor.

Alternatives

The Acer Googlebook 14 launches alongside four other Googlebooks: the Asus Googlebook 14, HP Googlebook 14, Lenovo Googlebook 15, and the Dell XPS Googlebook. These laptops all have superficially similar specs, such as starting with 16GB of RAM and 512GB storage, but each one has a different selling point, be it a larger screen, thinner design, or, in the Acer Googlebook 14’s case, a 2-in-1 design.

@import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap'); @import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap'); #fv-chart-1792508542435-ue84mtyht *, #fv-chart-1792508542435-ue84mtyht *:before, #fv-chart-1792508542435-ue84mtyht *:after, #fv-chart-1792508542435-ue84mtyht-slideshow *, #fv-chart-1792508542435-ue84mtyht-slideshow *:before, #fv-chart-1792508542435-ue84mtyht-slideshow *:after { box-sizing: border-box !important; margin: 0; padding: 0; border: 0; font-size: 100%; font: inherit; vertical-align: baseline; } #fv-chart-1792508542435-ue84mtyht, #fv-chart-1792508542435-ue84mtyht-slideshow { font-family: 'Open Sans', sans-serif !important; } #fv-chart-1792508542435-ue84mtyht { position: relative !important; overflow: visible !important; --riv-primary: #2E6E93; } #fv-chart-1792508542435-ue84mtyht .fv-inner-wrapper { color: #1F2937 !important; background-color: #ffffff !important; padding: 1.5rem 1.5rem 2rem !important; border-radius: 0.5rem !important; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1) !important; margin: 1rem 0 !important; display: flex !important; flex-direction: column !important; overflow: hidden !important; } #fv-chart-1792508542435-ue84mtyht .fv-inner-wrapper.fv-no-header.fv-is-image-compare { padding-top: 0 !important; } #fv-chart-1792508542435-ue84mtyht.fv-full-bleed { width: 100vw !important; margin-left: calc(50% - 50vw) !important; } body { overflow-x: clip !important; } #fv-chart-1792508542435-ue84mtyht.fv-full-bleed .fv-inner-wrapper { padding: 0 !important; border-radius: 0 !important; box-shadow: none !important; margin: 0 !important; background-color: transparent !important; } #fv-chart-1792508542435-ue84mtyht .fv-inner-wrapper.fv-is-shop-the-look { padding: 0 !important; border-radius: 0 !important; box-shadow: none !important; margin: 0 !important; background-color: transparent !important; } #fv-chart-1792508542435-ue84mtyht-slideshow { position: relative !important; width: 100% !important; margin: 1rem 0 !important; --riv-primary: #2E6E93; } #fv-chart-1792508542435-ue84mtyht-slideshow .fv-slides-wrapper { position: relative !important; width: 100% !important; } #fv-chart-1792508542435-ue84mtyht-slideshow .fv-slide { width: 100% !important; animation: fv-fade-in 0.3s ease-in-out; } #fv-chart-1792508542435-ue84mtyht-slideshow .fv-slideshow-nav-row { position: relative !important; display: flex !important; justify-content: space-between !important; align-items: center !important; padding: 0 0 16px 0 !important; width: 100% !important; z-index: 20 !important; } #fv-chart-1792508542435-ue84mtyht-slideshow .fv-nav-btn { background-color: var(--riv-primary) !important; color: #ffffff !important; border: none !important; border-radius: 4px !important; padding: 8px 16px !important; font-size: 14px !important; font-weight: 700 !important; cursor: pointer !important; display: flex !important; align-items: center !important; justify-content: center !important; gap: 6px !important; transition: opacity 0.2s, background-color 0.2s !important; height: 36px !important; text-transform: none !important; box-shadow: 0 1px 2px rgba(0,0,0,0.1) !important; } #fv-chart-1792508542435-ue84mtyht-slideshow .fv-nav-btn svg { width: 18px !important; height: 18px !important; stroke-width: 3px !important; filter: none !important; } #fv-chart-1792508542435-ue84mtyht-slideshow .fv-nav-btn:hover { opacity: 0.9 !important; transform: translateY(-1px) !important; } #fv-chart-1792508542435-ue84mtyht-slideshow .fv-nav-btn.disabled, #fv-chart-1792508542435-ue84mtyht-slideshow .fv-nav-btn:disabled { background-color: #E5E7EB !important; color: #9CA3AF !important; cursor: default !important; pointer-events: none !important; box-shadow: none !important; } #fv-chart-1792508542435-ue84mtyht-slideshow .fv-slide-counter { font-family: 'Poppins', sans-serif !important; font-size: 14px !important; font-weight: 600 !important; color: #374151 !important; text-align: center !important; min-width: 40px !important; background-color: rgba(255,255,255,0.8) !important; padding: 2px 8px !important; border-radius: 10px !important; user-select: none !important; } #fv-chart-1792508542435-ue84mtyht-slideshow .fv-slideshow-select { position: absolute !important; top: 10px !important; right: 10px !important; z-index: 20 !important; appearance: none !important; -webkit-appearance: none !important; -moz-appearance: none !important; background-color: white !important; border: 1px solid #d1d5db !important; color: #1F2937 !important; font-family: 'Open Sans', sans-serif !important; font-size: 14px !important; font-weight: 600 !important; padding: 6px 32px 6px 12px !important; border-radius: 4px !important; cursor: pointer !important; box-shadow: 0 1px 2px rgba(0,0,0,0.05) !important; background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e") !important; background-position: right 0.5rem center !important; background-repeat: no-repeat !important; background-size: 1.5em 1.5em !important; } #fv-chart-1792508542435-ue84mtyht-slideshow .fv-slideshow-select:focus { outline: 2px solid #2E6E93 !important; border-color: #2E6E93 !important; } @keyframes fv-fade-in { from { opacity: 0; } to { opacity: 1; } } #fv-chart-1792508542435-ue84mtyht .fv-chart-title { font-weight: bold !important; text-align: center !important; margin-bottom: 0.5rem !important; color: var(--riv-primary) !important; font-size: 20px !important; line-height: 1.2 !important; font-family: 'Open Sans', sans-serif !important; text-transform: none !important; white-space: normal !important; overflow-wrap: break-word !important; padding: 0 20px !important; } #fv-chart-1792508542435-ue84mtyht .fv-chart-subhead { font-size: 18px !important; font-weight: 500 !important; text-align: center !important; margin-bottom: 2rem !important; color: #374151 !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; text-transform: none !important; padding: 0 20px !important; } #fv-chart-1792508542435-ue84mtyht .rv-chart-caption { font-size: 15px !important; color: #374151 !important; text-align: center !important; font-style: normal !important; font-weight: normal !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; } #fv-chart-1792508542435-ue84mtyht .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; } #fv-chart-1792508542435-ue84mtyht .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; } #fv-chart-1792508542435-ue84mtyht .fv-versus-select-wrapper { flex: 1; min-width: 0; } #fv-chart-1792508542435-ue84mtyht .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; } #fv-chart-1792508542435-ue84mtyht .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; } #fv-chart-1792508542435-ue84mtyht .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; } #fv-chart-1792508542435-ue84mtyht .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; } #fv-chart-1792508542435-ue84mtyht .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; } #fv-chart-1792508542435-ue84mtyht .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; } #fv-chart-1792508542435-ue84mtyht .fv-versus-select { background: transparent; border: none; border-bottom: 2px solid; font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; padding: 0.25rem 0; cursor: pointer; outline: none; appearance: none; -webkit-appearance: none; -moz-appearance: none; max-width: 100%; width: 100%; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; } #fv-chart-1792508542435-ue84mtyht .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; } #fv-chart-1792508542435-ue84mtyht .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; } #fv-chart-1792508542435-ue84mtyht .fv-versus-select option { font-family: 'Open Sans', sans-serif; font-weight: 400; font-size: 14px; color: #374151; direction: ltr; text-align: left; } #fv-chart-1792508542435-ue84mtyht .fv-versus-vs { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; color: #374151; letter-spacing: 0.1em; padding: 0 1rem; } #fv-chart-1792508542435-ue84mtyht .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; } #fv-chart-1792508542435-ue84mtyht .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; } #fv-chart-1792508542435-ue84mtyht .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; } #fv-chart-1792508542435-ue84mtyht .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; } #fv-chart-1792508542435-ue84mtyht .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; } #fv-chart-1792508542435-ue84mtyht .fv-versus-bar { height: 32px; width: var(--target-width); transition: width 0.8s ease-out; animation: fv-grow-max-width 0.8s ease-out forwards; display: flex; align-items: center; overflow: hidden; color: #ffffff; } #fv-chart-1792508542435-ue84mtyht .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; } #fv-chart-1792508542435-ue84mtyht .fv-versus-bar-right { border-radius: 0 4px 4px 0; justify-content: flex-start; padding: 0 8px; } @keyframes fv-grow-max-width { from { max-width: 0; } to { max-width: 100%; } } #fv-chart-1792508542435-ue84mtyht .fv-versus-center-line { position: absolute; left: 50%; top: 0; bottom: 0; width: 4px; background-color: #ffffff; transform: translateX(-50%); z-index: 1; } #fv-chart-1792508542435-ue84mtyht .fv-inside-left { white-space: nowrap; flex-shrink: 0; } #fv-chart-1792508542435-ue84mtyht .fv-inside-right { white-space: nowrap; flex-shrink: 0; } #fv-chart-1792508542435-ue84mtyht .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; } #fv-chart-1792508542435-ue84mtyht .fv-versus-pct-diff { font-size: 12px; font-weight: 600; } #fv-chart-1792508542435-ue84mtyht .fv-versus-label { position: absolute; left: 50%; transform: translateX(-50%); top: 0; background-color: transparent; border: none; box-shadow: none; padding: 0; font-family: 'Open Sans', sans-serif; font-weight: 700; font-size: 14px; color: #374151; white-space: nowrap; } #fv-chart-1792508542435-ue84mtyht .sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; } #fv-chart-1792508542435-ue84mtyht .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; } #fv-chart-1792508542435-ue84mtyht .fv-footer-content { text-align: center !important; width: 100% !important; } #fv-chart-1792508542435-ue84mtyht .fv-logo { display: block !important; margin: 0 auto !important; width: 120px !important; min-width: 120px !important; max-width: 120px !important; height: auto !important; object-fit: contain !important; flex-shrink: 0 !important; } #fv-chart-1792508542435-ue84mtyht .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; } #fv-chart-1792508542435-ue84mtyht .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; } #fv-chart-1792508542435-ue84mtyht .fv-dropdown-title { appearance: none !important; -webkit-appearance: none !important; -moz-appearance: none !important; background: transparent !important; border: none !important; font-size: 18px !important; font-weight: 600 !important; color: var(--riv-primary) !important; padding-right: 28px !important; padding-left: 10px !important; cursor: pointer !important; text-align: center !important; text-align-last: center !important; width: auto !important; max-width: 100% !important; font-family: 'Open Sans', sans-serif !important; line-height: 1.3 !important; margin: 0 !important; text-overflow: ellipsis !important; overflow: hidden !important; white-space: nowrap !important; } #fv-chart-1792508542435-ue84mtyht .fv-dropdown-title:focus { outline: none !important; } #fv-chart-1792508542435-ue84mtyht .fv-dropdown-title::-ms-expand { display: none !important; } #fv-chart-1792508542435-ue84mtyht .fv-dropdown-chevron { position: absolute !important; right: 0 !important; top: 50% !important; transform: translateY(-50%) !important; pointer-events: none !important; color: var(--riv-primary) !important; display: flex !important; align-items: center !important; } #fv-chart-1792508542435-ue84mtyht .fv-carousel-title-controls { display: flex !important; justify-content: space-between !important; align-items: center !important; margin-bottom: 16px !important; width: 100% !important; gap: 12px !important; } #fv-chart-1792508542435-ue84mtyht .fv-carousel-nav-btn { background: transparent !important; border: 1px solid #d1d5db !important; border-radius: 6px !important; padding: 6px 10px !important; cursor: pointer !important; font-size: 14px !important; color: #374151 !important; display: flex !important; align-items: center !important; gap: 4px !important; font-family: 'Open Sans', sans-serif !important; } #fv-chart-1792508542435-ue84mtyht .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; } #fv-chart-1792508542435-ue84mtyht .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; } #fv-chart-1792508542435-ue84mtyht .fv-legend { display: flex !important; justify-content: center !important; flex-wrap: wrap !important; gap: 8px 16px !important; margin: 0 !important; padding: 0 !important; margin-top: 1rem !important; } #fv-chart-1792508542435-ue84mtyht .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; } #fv-chart-1792508542435-ue84mtyht .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; } #fv-chart-1792508542435-ue84mtyht .fv-multi-value-legend { display: flex !important; justify-content: center !important; flex-wrap: wrap !important; gap: 12px 24px !important; margin-bottom: 1.5rem !important; padding: 0 !important; } #fv-chart-1792508542435-ue84mtyht .fv-multi-legend-item { display: flex !important; align-items: center !important; gap: 8px !important; font-size: 14px !important; color: #374151 !important; font-weight: 500 !important; } #fv-chart-1792508542435-ue84mtyht .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; } #fv-chart-1792508542435-ue84mtyht .fv-benchmark-group { margin-bottom: 1rem !important; } #fv-chart-1792508542435-ue84mtyht .fv-benchmark-title { font-size: 18px !important; font-weight: 600 !important; margin-bottom: 16px !important; margin-top: 0 !important; padding: 0 !important; text-align: center !important; color: var(--riv-primary) !important; flex: 1 !important; min-width: 0 !important; font-family: 'Open Sans', sans-serif !important; line-height: 1.3 !important; text-transform: none !important; white-space: normal !important; overflow-wrap: break-word !important; word-wrap: break-word !important; max-width: 100% !important; } #fv-chart-1792508542435-ue84mtyht .fv-bar-row, #fv-chart-1792508542435-ue84mtyht .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; position: relative !important; } #fv-chart-1792508542435-ue84mtyht .fv-bar-label { width: 150px !important; flex-shrink: 0 !important; font-size: 14px !important; color: #374151 !important; padding-right: 10px !important; text-align: right !important; font-weight: 500 !important; display: block !important; } #fv-chart-1792508542435-ue84mtyht .fv-bar-container { flex-grow: 1 !important; background-color: #E5E7EB !important; border-radius: 4px !important; min-height: 25px !important; border: 1px solid #D1D5DB !important; position: relative !important; display: flex !important; align-items: center !important; } #fv-chart-1792508542435-ue84mtyht .fv-bar-commentary-inline { display: none !important; position: absolute !important; left: 150px !important; top: 0 !important; bottom: 0 !important; right: 0 !important; width: calc(100% - 150px) !important; margin: 0 !important; padding: 0 8px !important; font-size: 13px !important; color: #fff !important; background: rgba(0,0,0,0.8) !important; border-radius: 4px !important; line-height: 1.4 !important; font-weight: normal !important; text-transform: none !important; word-wrap: break-word !important; z-index: 10 !important; align-items: center !important; overflow-y: auto !important; } #fv-chart-1792508542435-ue84mtyht.preview-wrapper .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792508542435-ue84mtyht.preview-wrapper .fv-bar-commentary-inline:focus, #fv-chart-1792508542435-ue84mtyht.preview-wrapper .fv-bar-commentary-inline:focus-within, #fv-chart-1792508542435-ue84mtyht.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792508542435-ue84mtyht.mobile-view .fv-bar-commentary-inline:focus, #fv-chart-1792508542435-ue84mtyht.mobile-view .fv-bar-commentary-inline:focus-within { display: flex !important; } #fv-chart-1792508542435-ue84mtyht .fv-bar { height: 100% !important; border-radius: 3px !important; display: flex !important; align-items: center !important; transition: opacity 0.2s ease, width 0.8s ease-out !important; min-height: 23px !important; } #fv-chart-1792508542435-ue84mtyht .fv-bar:hover { opacity: 0.8 !important; } #fv-chart-1792508542435-ue84mtyht .fv-bar-inner-content { display: flex !important; justify-content: space-between !important; align-items: center !important; width: 100% !important; height: 100% !important; padding: 0 8px !important; font-size: 14px !important; font-weight: bold !important; overflow: hidden !important; } #fv-chart-1792508542435-ue84mtyht .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; } #fv-chart-1792508542435-ue84mtyht .fv-bar-inner-value { flex-shrink: 0 !important; } #fv-chart-1792508542435-ue84mtyht .fv-bar-value-outside { padding-left: 8px !important; font-size: 14px !important; font-weight: bold !important; color: #374151 !important; white-space: nowrap !important; } #fv-chart-1792508542435-ue84mtyht .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; } #fv-chart-1792508542435-ue84mtyht .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; } #fv-chart-1792508542435-ue84mtyht .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; } #fv-chart-1792508542435-ue84mtyht .fv-stacked-bar { display: flex !important; overflow: hidden !important; } #fv-chart-1792508542435-ue84mtyht .fv-stacked-segment { height: 100% !important; display: flex !important; align-items: center !important; justify-content: flex-end !important; padding-right: 8px !important; border-right: 1px solid rgba(255,255,255,0.3) !important; } #fv-chart-1792508542435-ue84mtyht .fv-stacked-segment:last-child { border-right: none !important; } #fv-chart-1792508542435-ue84mtyht .fv-segment-value { font-size: 14px !important; font-weight: bold !important; } #fv-chart-1792508542435-ue84mtyht .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; } #fv-chart-1792508542435-ue84mtyht .fv-grouped-product-title-wrapper { padding-left: 150px !important; } #fv-chart-1792508542435-ue84mtyht .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.5rem !important; font-weight: 700 !important; font-size: 14px !important; color: #374151 !important; text-transform: none !important; } #fv-chart-1792508542435-ue84mtyht .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; } #fv-chart-1792508542435-ue84mtyht .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; } #fv-chart-1792508542435-ue84mtyht .fv-bar-cluster .fv-bar-container { height: 20px !important; } #fv-chart-1792508542435-ue84mtyht .fv-dials-grid { display: grid !important; grid-template-columns: repeat(auto-fit, minmax(145px, 1fr)) !important; gap: 1.5rem 1rem !important; width: 100% !important; margin: 0.75rem 0 1.25rem !important; align-items: start !important; justify-items: center !important; } #fv-chart-1792508542435-ue84mtyht .fv-dial-card { display: flex !important; flex-direction: column !important; align-items: center !important; text-align: center !important; width: 100% !important; max-width: 220px !important; } #fv-chart-1792508542435-ue84mtyht .fv-dial-title { font-family: 'Poppins', 'Open Sans', sans-serif !important; font-size: 18px !important; font-weight: 700 !important; color: #2b2b2b !important; line-height: 1.25 !important; margin-bottom: 0.35rem !important; text-align: center !important; width: 100% !important; overflow-wrap: break-word !important; text-transform: none !important; } #fv-chart-1792508542435-ue84mtyht .fv-dial-svg-wrapper { width: 100% !important; max-width: 200px !important; display: flex !important; justify-content: center !important; } #fv-chart-1792508542435-ue84mtyht .fv-dial-svg { width: 100% !important; height: auto !important; display: block !important; overflow: visible !important; } #fv-chart-1792508542435-ue84mtyht .fv-dial-needle { transition: transform 0.9s cubic-bezier(0.22, 1, 0.36, 1) !important; } #fv-chart-1792508542435-ue84mtyht .fv-dial-commentary { margin-top: 0.35rem !important; font-size: 13px !important; line-height: 1.45 !important; color: #4B5563 !important; text-align: center !important; width: 100% !important; padding: 0 4px !important; font-family: 'Open Sans', sans-serif !important; word-wrap: break-word !important; } #fv-chart-1792508542435-ue84mtyht.preview-wrapper .fv-dial-commentary-input { min-height: 22px !important; border: 1px dashed transparent !important; border-radius: 4px !important; transition: border-color 0.15s ease, background-color 0.15s ease !important; } #fv-chart-1792508542435-ue84mtyht.preview-wrapper .fv-dial-card:hover .fv-dial-commentary-input, #fv-chart-1792508542435-ue84mtyht.preview-wrapper .fv-dial-commentary-input:focus { border-color: #CBD5E1 !important; background-color: rgba(241, 245, 249, 0.6) !important; } #fv-chart-1792508542435-ue84mtyht .riv-grid line { stroke: #D1D5DB !important; stroke-dasharray: 3 3 !important; } #fv-chart-1792508542435-ue84mtyht .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; } #fv-chart-1792508542435-ue84mtyht .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; } #fv-chart-1792508542435-ue84mtyht .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; } #fv-chart-1792508542435-ue84mtyht .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; } #fv-chart-1792508542435-ue84mtyht .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; } #fv-chart-1792508542435-ue84mtyht .fv-x-axis-ticks { display: flex !important; justify-content: space-between !important; padding-top: 4px !important; font-size: 13px !important; color: #374151 !important; } #fv-chart-1792508542435-ue84mtyht .fv-x-axis-ticks span { position: relative !important; } #fv-chart-1792508542435-ue84mtyht .fv-x-axis-ticks span::before { content: '' !important; position: absolute !important; top: -6px !important; left: 50% !important; transform: translateX(-50%) !important; width: 2px !important; height: 4px !important; background-color: #D1D5DB !important; border-radius: 1px !important; } #fv-chart-1792508542435-ue84mtyht .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; } #fv-chart-1792508542435-ue84mtyht .fv-x-axis-title { text-align: center !important; font-size: 15px !important; color: #374151 !important; margin-top: 8px !important; margin-bottom: 16px !important; line-height: 1.5 !important; padding: 0 1rem !important; display: block !important; font-weight: bold !important; } #fv-chart-1792508542435-ue84mtyht .fv-y-axis-title { font-size: 15px !important; color: #374151 !important; line-height: 1.5 !important; text-align: left !important; padding-left: 5.83% !important; margin-bottom: 4px !important; display: block !important; font-weight: bold !important; } #fv-chart-1792508542435-ue84mtyht.mobile-view .fv-pie-container, #fv-chart-1792508542435-ue84mtyht.labels-on-top .fv-pie-container { flex-direction: column !important; gap: 1rem !important; } #fv-chart-1792508542435-ue84mtyht.mobile-view .fv-grouped-product-title-wrapper, #fv-chart-1792508542435-ue84mtyht.labels-on-top .fv-grouped-product-title-wrapper { padding-left: 0 !important; } #fv-chart-1792508542435-ue84mtyht.mobile-view .fv-bar-row, #fv-chart-1792508542435-ue84mtyht.mobile-view .fv-stacked-product, #fv-chart-1792508542435-ue84mtyht.mobile-view .fv-grouped-bar-product, #fv-chart-1792508542435-ue84mtyht.labels-on-top .fv-bar-row, #fv-chart-1792508542435-ue84mtyht.labels-on-top .fv-stacked-product, #fv-chart-1792508542435-ue84mtyht.labels-on-top .fv-grouped-bar-product { flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important; } #fv-chart-1792508542435-ue84mtyht.mobile-view .fv-bar-label:not(.fv-grouped-product-title), #fv-chart-1792508542435-ue84mtyht.labels-on-top .fv-bar-label:not(.fv-grouped-product-title) { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important; } #fv-chart-1792508542435-ue84mtyht.mobile-view .fv-bar-label, #fv-chart-1792508542435-ue84mtyht.mobile-view .fv-grouped-product-title, #fv-chart-1792508542435-ue84mtyht.labels-on-top .fv-bar-label, #fv-chart-1792508542435-ue84mtyht.labels-on-top .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important; } #fv-chart-1792508542435-ue84mtyht.mobile-view .fv-bar-container, #fv-chart-1792508542435-ue84mtyht.mobile-view .fv-bar-cluster, #fv-chart-1792508542435-ue84mtyht.labels-on-top .fv-bar-container, #fv-chart-1792508542435-ue84mtyht.labels-on-top .fv-bar-cluster { width: 100% !important; } #fv-chart-1792508542435-ue84mtyht.mobile-view .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1792508542435-ue84mtyht.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792508542435-ue84mtyht.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1792508542435-ue84mtyht.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus-within, #fv-chart-1792508542435-ue84mtyht.labels-on-top .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1792508542435-ue84mtyht.labels-on-top .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792508542435-ue84mtyht.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1792508542435-ue84mtyht.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus-within { position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important; } #fv-chart-1792508542435-ue84mtyht.mobile-view .fv-x-axis-wrapper, #fv-chart-1792508542435-ue84mtyht.labels-on-top .fv-x-axis-wrapper { margin-left: 0 !important; } #fv-chart-1792508542435-ue84mtyht.mobile-view .fv-x-axis-label-space, #fv-chart-1792508542435-ue84mtyht.labels-on-top .fv-x-axis-label-space { display: none !important; } #fv-chart-1792508542435-ue84mtyht.mobile-view .fv-x-axis-chart-space, #fv-chart-1792508542435-ue84mtyht.labels-on-top .fv-x-axis-chart-space { padding-right: 0 !important; } #fv-chart-1792508542435-ue84mtyht.mobile-view .fv-benchmark-title, #fv-chart-1792508542435-ue84mtyht.labels-on-top .fv-benchmark-title { font-size: 16px !important; } #fv-chart-1792508542435-ue84mtyht.mobile-view .fv-dropdown-title, #fv-chart-1792508542435-ue84mtyht.labels-on-top .fv-dropdown-title { font-size: 16px !important; } #fv-chart-1792508542435-ue84mtyht.mobile-view .fv-carousel-nav-btn, #fv-chart-1792508542435-ue84mtyht.labels-on-top .fv-carousel-nav-btn { padding: 8px 12px !important; font-size: 14px !important; } #fv-chart-1792508542435-ue84mtyht.mobile-view .fv-chart-title, #fv-chart-1792508542435-ue84mtyht.labels-on-top .fv-chart-title { padding: 0 8px !important; } #fv-chart-1792508542435-ue84mtyht.mobile-view .fv-chart-subhead, #fv-chart-1792508542435-ue84mtyht.labels-on-top .fv-chart-subhead { padding: 0 8px !important; } #fv-chart-1792508542435-ue84mtyht.mobile-view .fv-versus-header, #fv-chart-1792508542435-ue84mtyht.labels-on-top .fv-versus-header { flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important; } #fv-chart-1792508542435-ue84mtyht.mobile-view .fv-versus-select-wrapper, #fv-chart-1792508542435-ue84mtyht.labels-on-top .fv-versus-select-wrapper { flex: 1 !important; min-width: 0 !important; width: 100% !important; } #fv-chart-1792508542435-ue84mtyht.mobile-view .fv-versus-select-wrapper.fv-left, #fv-chart-1792508542435-ue84mtyht.labels-on-top .fv-versus-select-wrapper.fv-left { text-align: center !important; padding-right: 0 !important; } #fv-chart-1792508542435-ue84mtyht.mobile-view .fv-versus-select-wrapper.fv-right, #fv-chart-1792508542435-ue84mtyht.labels-on-top .fv-versus-select-wrapper.fv-right { text-align: center !important; padding-left: 0 !important; } #fv-chart-1792508542435-ue84mtyht.mobile-view .fv-versus-select.fv-select-left, #fv-chart-1792508542435-ue84mtyht.labels-on-top .fv-versus-select.fv-select-left { text-align: center !important; } #fv-chart-1792508542435-ue84mtyht.mobile-view .fv-versus-select.fv-select-right, #fv-chart-1792508542435-ue84mtyht.labels-on-top .fv-versus-select.fv-select-right { text-align: center !important; } #fv-chart-1792508542435-ue84mtyht.mobile-view .fv-versus-vs, #fv-chart-1792508542435-ue84mtyht.labels-on-top .fv-versus-vs { text-align: center !important; padding: 0.25rem 0 !important; } #fv-chart-1792508542435-ue84mtyht.mobile-view .fv-versus-select-container, #fv-chart-1792508542435-ue84mtyht.labels-on-top .fv-versus-select-container { max-width: 100% !important; width: 100% !important; } #fv-chart-1792508542435-ue84mtyht.mobile-view .fv-versus-select, #fv-chart-1792508542435-ue84mtyht.labels-on-top .fv-versus-select { font-size: 14px !important; width: 100% !important; } #fv-chart-1792508542435-ue84mtyht.mobile-view .fv-stl-shop-all-btn, #fv-chart-1792508542435-ue84mtyht.labels-on-top .fv-stl-shop-all-btn { bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important; } #fv-chart-1792508542435-ue84mtyht.mobile-view .fv-stl-shop-all-logo, #fv-chart-1792508542435-ue84mtyht.mobile-view .fv-stl-shop-all-icon, #fv-chart-1792508542435-ue84mtyht.labels-on-top .fv-stl-shop-all-logo, #fv-chart-1792508542435-ue84mtyht.labels-on-top .fv-stl-shop-all-icon { width: 2rem !important; height: 2rem !important; } #fv-chart-1792508542435-ue84mtyht.mobile-view .fv-stl-shop-all-icon svg, #fv-chart-1792508542435-ue84mtyht.labels-on-top .fv-stl-shop-all-icon svg { width: 14px !important; height: 14px !important; } #fv-chart-1792508542435-ue84mtyht.mobile-view .fv-bar-commentary-inline, #fv-chart-1792508542435-ue84mtyht.labels-on-top .fv-bar-commentary-inline { display: block !important; margin-left: 0 !important; width: 100% !important; } #fv-chart-1792508542435-ue84mtyht.mobile-view .fv-dials-grid, #fv-chart-1792508542435-ue84mtyht.labels-on-top .fv-dials-grid { grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)) !important; gap: 1.25rem 0.75rem !important; } #fv-chart-1792508542435-ue84mtyht.mobile-view .fv-dial-title, #fv-chart-1792508542435-ue84mtyht.labels-on-top .fv-dial-title { font-size: 16px !important; } #fv-chart-1792508542435-ue84mtyht.mobile-view .fv-y-axis-title { padding-left: 5% !important; } #fv-chart-1792508542435-ue84mtyht.mobile-view.fv-contains-line-chart .fv-footer-content { margin-left: -1rem !important; margin-right: -1rem !important; } @media (max-width: 599px) { #fv-chart-1792508542435-ue84mtyht .fv-pie-container { flex-direction: column !important; gap: 1rem !important; } #fv-chart-1792508542435-ue84mtyht .fv-grouped-product-title-wrapper { padding-left: 0 !important; } #fv-chart-1792508542435-ue84mtyht .fv-bar-row, #fv-chart-1792508542435-ue84mtyht .fv-stacked-product, #fv-chart-1792508542435-ue84mtyht .fv-grouped-bar-product { flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important; } #fv-chart-1792508542435-ue84mtyht .fv-bar-label:not(.fv-grouped-product-title) { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important; } #fv-chart-1792508542435-ue84mtyht .fv-bar-label, #fv-chart-1792508542435-ue84mtyht .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important; } #fv-chart-1792508542435-ue84mtyht .fv-bar-container, #fv-chart-1792508542435-ue84mtyht .fv-bar-cluster { width: 100% !important; } #fv-chart-1792508542435-ue84mtyht .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1792508542435-ue84mtyht .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792508542435-ue84mtyht .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1792508542435-ue84mtyht .fv-bar-row .fv-bar-commentary-inline:focus-within { position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important; } #fv-chart-1792508542435-ue84mtyht .fv-x-axis-wrapper { margin-left: 0 !important; } #fv-chart-1792508542435-ue84mtyht .fv-x-axis-label-space { display: none !important; } #fv-chart-1792508542435-ue84mtyht .fv-x-axis-chart-space { padding-right: 0 !important; } #fv-chart-1792508542435-ue84mtyht .fv-benchmark-title { font-size: 16px !important; } #fv-chart-1792508542435-ue84mtyht .fv-dropdown-title { font-size: 16px !important; } #fv-chart-1792508542435-ue84mtyht .fv-carousel-nav-btn { padding: 8px 12px !important; font-size: 14px !important; } #fv-chart-1792508542435-ue84mtyht .fv-chart-title { padding: 0 8px !important; } #fv-chart-1792508542435-ue84mtyht .fv-chart-subhead { padding: 0 8px !important; } #fv-chart-1792508542435-ue84mtyht .fv-versus-header { flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important; } #fv-chart-1792508542435-ue84mtyht .fv-versus-select-wrapper { flex: 1 !important; min-width: 0 !important; width: 100% !important; } #fv-chart-1792508542435-ue84mtyht .fv-versus-select-wrapper.fv-left { text-align: center !important; padding-right: 0 !important; } #fv-chart-1792508542435-ue84mtyht .fv-versus-select-wrapper.fv-right { text-align: center !important; padding-left: 0 !important; } #fv-chart-1792508542435-ue84mtyht .fv-versus-select.fv-select-left { text-align: center !important; } #fv-chart-1792508542435-ue84mtyht .fv-versus-select.fv-select-right { text-align: center !important; } #fv-chart-1792508542435-ue84mtyht .fv-versus-vs { text-align: center !important; padding: 0.25rem 0 !important; } #fv-chart-1792508542435-ue84mtyht .fv-versus-select-container { max-width: 100% !important; width: 100% !important; } #fv-chart-1792508542435-ue84mtyht .fv-versus-select { font-size: 14px !important; width: 100% !important; } #fv-chart-1792508542435-ue84mtyht .fv-stl-shop-all-btn { bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important; } #fv-chart-1792508542435-ue84mtyht .fv-stl-shop-all-logo, #fv-chart-1792508542435-ue84mtyht .fv-stl-shop-all-icon { width: 2rem !important; height: 2rem !important; } #fv-chart-1792508542435-ue84mtyht .fv-stl-shop-all-icon svg { width: 14px !important; height: 14px !important; } #fv-chart-1792508542435-ue84mtyht .fv-bar-commentary-inline { display: block !important; margin-left: 0 !important; width: 100% !important; } #fv-chart-1792508542435-ue84mtyht .fv-dials-grid { grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)) !important; gap: 1.25rem 0.75rem !important; } #fv-chart-1792508542435-ue84mtyht .fv-dial-title { font-size: 16px !important; } #fv-chart-1792508542435-ue84mtyht .fv-y-axis-title { padding-left: 5% !important; } #fv-chart-1792508542435-ue84mtyht.fv-contains-line-chart .fv-footer-content { margin-left: -1rem !important; margin-right: -1rem !important; } }{ "@context": "https://schema.org", "@type": "Dataset", "name": "Acer Googlebook 14 scorecard", "description": "How the Acer Googlebook 14 scored in our review", "creator": { "@type": "Organization", "name": "TechRadar", "logo": "https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png" }, "isAccessibleForFree": true, "dateCreated": "2026-10-20T15:02:22.435Z", "citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized", "keywords": [ "Acer Googlebook 14", "Value", "Design", "Performance", "Battery life", "Overall", "Group 1", "benchmark", "comparison", "performance", "review", "TechRadar" ], "measurementTechnique": "Performance Benchmarking", "variableMeasured": [ { "@type": "PropertyValue", "name": "Acer Googlebook 14 – Value", "value": 4, "unitText": "", "maxValue": 5 }, { "@type": "PropertyValue", "name": "Acer Googlebook 14 – Design", "value": 4, "unitText": "", "maxValue": 5 }, { "@type": "PropertyValue", "name": "Acer Googlebook 14 – Performance", "value": 3.5, "unitText": "", "maxValue": 5 }, { "@type": "PropertyValue", "name": "Acer Googlebook 14 – Battery life", "value": 3, "unitText": "", "maxValue": 5 }, { "@type": "PropertyValue", "name": "Acer Googlebook 14 – Overall", "value": 4, "unitText": "", "maxValue": 5 } ]}{"version":2,"exportedAt":"2026-10-20T15:02:22.435Z","state":{"data":[{"productName":"Acer Googlebook 14","attribute":"Value","value":4,"unit":"","maxValue":5},{"productName":"Acer Googlebook 14","attribute":"Design","value":4,"unit":"","maxValue":5},{"productName":"Acer Googlebook 14","attribute":"Performance","value":3.5,"unit":"","maxValue":5},{"productName":"Acer Googlebook 14","attribute":"Battery life","value":3,"unit":"","maxValue":5},{"productName":"Acer Googlebook 14","attribute":"Overall","value":4,"unit":"","maxValue":5}],"products":["Acer Googlebook 14"],"attributes":["Value","Design","Performance","Battery life","Overall"],"selectedProducts":["Acer Googlebook 14"],"selectedPrimaryProduct":null,"selectedAttributes":["Value","Design","Performance","Battery life","Overall"],"productColors":[{"productName":"Acer Googlebook 14","color":"#2E6E93"}],"initialProductColors":[{"productName":"Samsung Galaxy Book6 Ultra","color":"#2E6E93"}],"attributeColors":[],"attributeGroups":[{"name":"Group 1","attributes":["Value","Design","Performance","Battery life","Overall"]}],"chartType":"Bar","roundupViewType":"bars","stlSelectedHotspotId":null,"iaSelectedNodeId":null,"barChartMaxValueOverrides":{},"barChartMinValueOverrides":{},"displayMode":"All Charts","brand":{"name":"TechRadar","logoUrl":"https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png","sliderLogoUrl":"https://proof.vanilla.tools/media/images/brandLogos/techradar.png","colors":{"primary":"#2E6E93","secondary":"#E8238C","accent":"#FFFFFF","background":"#ffffff","text":"#1F2937","productColors":["#2E6E93","#E8238C","#5DA8D4","#F06EAF","#1A4E6B","#B81C70","#8CC3E0","#F499C9"]}},"textContent":{"title":"Acer Googlebook 14 scorecard","subhead":"How the Acer Googlebook 14 scored in our review","caption":"Add your caption to explain the data, the learnings and the key takeaways of the data being visualized","productNameOverrides":{},"attributeNameOverrides":{},"chartTitleOverrides":{"grouped-bar-Group 1":"Group 1"},"xAxisLabelOverrides":{},"subheadOverrides":{"grouped-bar-Group 1":"Breaking down the Samsung Galaxy Book6 Ultra's scores, from value to overall experience."},"captionOverrides":{"grouped-bar-Group 1":"The Samsung Galaxy Book6 Ultra delivers exceptional performance, design, and battery life, each earning a stellar 4.5 rating, culminating in an impressive 4.5 overall score. While its value score is 2.5, the premium experience largely justifies its positioning."},"unitOverrides":{},"multiValueLegendOverrides":{},"barCommentaryOverrides":{}},"dataEverLoaded":true,"showAISuggestionsButton":false,"barChartShowXAxis":false,"groupedBarChartShowProductName":false,"barChartLabelsOnTop":false,"experimentalEnablePieChart":false,"slideshowUseDropdown":false},"slides":[]}Acer Googlebook 14 scorecard

How the Acer Googlebook 14 scored in our review

Value4Design4Performance3.5Battery life3Overall4Group 1 DataProductValue ()Design ()Performance ()Battery life ()Overall ()Acer Googlebook 14443.534 window.iFrameResizer = { heightCalculationMethod: 'taggedElement' }; (function() { function createChartAnimator() { return function animateChartWrapper(chartWrapper) { if (!chartWrapper) return; function animateBars(chartElement) { if (!chartElement) return; var bars = chartElement.querySelectorAll('.fv-bar, .fv-stacked-segment'); bars.forEach(function(bar, index) { bar.style.setProperty('width', '0%', 'important'); bar.style.setProperty('transition', 'none', 'important'); var targetWidth = bar.dataset.targetWidth; if (targetWidth === undefined) return; void bar.offsetWidth; var targetMargin = bar.dataset.targetMargin; var baseMargin = bar.dataset.baseMargin; if (baseMargin !== undefined) { bar.style.setProperty('margin-left', baseMargin + '%', 'important'); } setTimeout(function() { var marginTransition = baseMargin !== undefined ? ', margin-left 0.8s ease-out' : ''; bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out' + marginTransition, 'important'); bar.style.setProperty('width', targetWidth + '%', 'important'); if (targetMargin !== undefined && baseMargin !== undefined) { bar.style.setProperty('margin-left', targetMargin + '%', 'important'); } }, index * 50 + 50); }); } function animateLineChart(chartElement) { if (!chartElement) return; var lineSvg = chartElement.querySelector('svg'); if (!lineSvg) return; var paths = lineSvg.querySelectorAll('.riv-line-path'); paths.forEach(function(p, i) { if (typeof p.getTotalLength === 'function') { var len = p.getTotalLength(); p.style.transition = 'none'; p.style.strokeDasharray = len; p.style.strokeDashoffset = len; p.getBoundingClientRect(); setTimeout(function() { p.style.transition = 'stroke-dashoffset 1s ease-out ' + (i * 0.1) + 's, stroke-width 0.2s, opacity 0.2s'; p.style.strokeDashoffset = '0'; }, 100); } }); var dots = lineSvg.querySelectorAll('.riv-dot'); dots.forEach(function(dot, i) { dot.style.opacity = '0'; setTimeout(function() { dot.style.transition = 'opacity 0.3s ease'; dot.style.opacity = '1'; }, 500 + i * 10); }); } function animateDials(chartElement) { if (!chartElement) return; var needles = chartElement.querySelectorAll('.fv-dial-needle'); needles.forEach(function(needle, index) { var targetAngle = needle.dataset.targetAngle; var baseAngle = needle.dataset.baseAngle || '-132'; if (targetAngle === undefined) return; needle.style.setProperty('transition', 'none', 'important'); needle.style.setProperty('transform', 'rotate(' + baseAngle + 'deg)', 'important'); void needle.getBoundingClientRect(); setTimeout(function() { needle.style.setProperty('transition', 'transform 0.9s cubic-bezier(0.22, 1, 0.36, 1)', 'important'); needle.style.setProperty('transform', 'rotate(' + targetAngle + 'deg)', 'important'); }, index * 60 + 50); }); } var charts = chartWrapper.querySelectorAll('.fv-chart-item'); charts.forEach(function(chart) { if (window.getComputedStyle(chart).display === 'none') return; var chartType = chart.dataset.chartType; if (chartType === 'Line') { animateLineChart(chart); } else if (chartType !== 'Pie') { animateBars(chart); animateDials(chart); } }); }; } var fvLocalAnimate = createChartAnimator(); window.fvAnimateCharts = fvLocalAnimate; function initialize(uniqueId, isSlideshow) { var root = document.getElementById(uniqueId); if (!root && !isSlideshow) return; function setupWrapper(chartWrapper) { if (!chartWrapper) return; /* Responsive mobile view handling */ function checkMobileView() { var width = chartWrapper.getBoundingClientRect().width; var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599; var isMobile; if (width === 0) { isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches; } else { isMobile = isMobileDevice || width < 600; } if (isMobile) { chartWrapper.classList.add('mobile-view'); } else { chartWrapper.classList.remove('mobile-view'); } } checkMobileView(); if (typeof ResizeObserver !== 'undefined') { var ro = new ResizeObserver(function() { checkMobileView(); }); ro.observe(chartWrapper); } window.addEventListener('resize', checkMobileView); var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true'; if (labelsOnTop) { var charts = chartWrapper.querySelectorAll('.fv-chart-item'); var hasVisibleBarChart = false; charts.forEach(function(c) { if (window.getComputedStyle(c).display !== 'none') { var cType = c.dataset.chartType; if (cType === 'Bar' || cType === 'Diverging Bar' || cType === 'Stacked Bar' || cType === 'Versus') { hasVisibleBarChart = true; } } }); if (hasVisibleBarChart) { chartWrapper.classList.add('labels-on-top'); } else { chartWrapper.classList.remove('labels-on-top'); } } else { chartWrapper.classList.remove('labels-on-top'); } /* Legend interactions */ chartWrapper.querySelectorAll('.riv-line-legend').forEach(function(legend) { var chartId = legend.dataset.chart; var chart = chartWrapper.querySelector('[id="' + chartId + '"]'); if (!chart) return; var lines = chart.querySelectorAll('.riv-line-path'); var dots = chart.querySelectorAll('.riv-dot'); var legendItems = legend.querySelectorAll('.riv-legend-item'); legendItems.forEach(function(item) { var productName = item.dataset.product; var safeProductName = productName.replace(/"/g, '\\"'); var line = chart.querySelector('.riv-line-path[data-product="' + safeProductName + '"]'); var productDots = chart.querySelectorAll('.riv-dot[data-product="' + safeProductName + '"]'); if (line && !line.dataset.origStroke) { line.dataset.origStroke = line.getAttribute('stroke-width') || '2'; } var highlight = function() { if (legend.querySelector('.isolated')) return; lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); }); dots.forEach(function(d) { d.style.opacity = '0.2'; }); legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; }); if (line) { line.style.opacity = '1'; line.setAttribute('stroke-width', '4'); } productDots.forEach(function(d) { d.style.opacity = '1'; }); item.style.opacity = '1'; }; var clearHighlight = function() { if (legend.querySelector('.isolated')) return; lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); }); dots.forEach(function(d) { d.style.opacity = '1'; }); legendItems.forEach(function(i) { i.style.opacity = '1'; }); }; var toggleIsolate = function() { var isIsolated = item.classList.contains('isolated'); legendItems.forEach(function(i) { i.classList.remove('isolated'); }); if (isIsolated) { lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); }); dots.forEach(function(d) { d.style.opacity = '1'; }); legendItems.forEach(function(i) { i.style.opacity = '1'; }); } else { item.classList.add('isolated'); lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); }); dots.forEach(function(d) { d.style.opacity = '0.2'; }); legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; }); if (line) { line.style.opacity = '1'; line.setAttribute('stroke-width', '4'); } productDots.forEach(function(d) { d.style.opacity = '1'; }); item.style.opacity = '1'; } }; item.addEventListener('mouseenter', highlight); item.addEventListener('focus', highlight); item.addEventListener('mouseleave', clearHighlight); item.addEventListener('blur', clearHighlight); item.addEventListener('click', toggleIsolate); if (line) { line.style.cursor = 'pointer'; line.addEventListener('mouseenter', highlight); line.addEventListener('mouseleave', clearHighlight); line.addEventListener('click', toggleIsolate); } }); }); /* Versus Chart Logic */ var versusCharts = chartWrapper.querySelectorAll('.fv-versus-chart'); versusCharts.forEach(function(vc) { var dataJson = vc.getAttribute('data-versus-data'); var leftColor = vc.getAttribute('data-left-color') || '#E53935'; var rightColor = vc.getAttribute('data-right-color') || '#FFB300'; if (!dataJson) return; var versusData = JSON.parse(dataJson); var leftSelect = vc.querySelector('.fv-select-left'); var rightSelect = vc.querySelector('.fv-select-right'); var rows = vc.querySelectorAll('.fv-versus-row'); function updateVersusChart() { var leftProduct = leftSelect.value; var rightProduct = rightSelect.value; leftSelect.style.color = leftColor; leftSelect.style.borderColor = leftColor; rightSelect.style.color = rightColor; rightSelect.style.borderColor = rightColor; rows.forEach(function(row) { var index = parseInt(row.getAttribute('data-index')); var data = versusData[index]; if (!data) return; var leftVal = data.productData[leftProduct] ? data.productData[leftProduct].value : undefined; var rightVal = data.productData[rightProduct] ? data.productData[rightProduct].value : undefined; var leftIsNum = typeof leftVal === 'number'; var rightIsNum = typeof rightVal === 'number'; var leftNum = leftIsNum ? leftVal : 0; var rightNum = rightIsNum ? rightVal : 0; var maxVal = Math.max(leftNum, rightNum, 0.0001); var leftWidth = leftIsNum ? (leftNum / maxVal) * 95 : 0; var rightWidth = rightIsNum ? (rightNum / maxVal) * 85 : 0; var winner = null; var pctDiffStr = null; if (leftIsNum && rightIsNum) { if (leftNum > rightNum) { winner = 'left'; if (rightNum > 0) { var diff = Math.round(((leftNum - rightNum) / rightNum) * 100); pctDiffStr = '+' + diff.toLocaleString() + '%'; } } else if (rightNum > leftNum) { winner = 'right'; if (leftNum > 0) { var diff = Math.round(((rightNum - leftNum) / leftNum) * 100); pctDiffStr = '+' + diff.toLocaleString() + '%'; } } } var leftDisplay = data.productData[leftProduct] && data.productData[leftProduct].displayValue !== undefined ? data.productData[leftProduct].displayValue : (leftIsNum ? leftNum.toLocaleString() : (leftVal !== undefined ? leftVal : '-')); var rightDisplay = data.productData[rightProduct] && data.productData[rightProduct].displayValue !== undefined ? data.productData[rightProduct].displayValue : (rightIsNum ? rightNum.toLocaleString() : (rightVal !== undefined ? rightVal : '-')); var unit = (data.productData[leftProduct] && data.productData[leftProduct].unit) || (data.productData[rightProduct] && data.productData[rightProduct].unit) || ''; var leftTextStr = leftDisplay; var rightTextStr = rightDisplay; var leftBar = row.querySelector('.fv-versus-bar-left'); var rightBar = row.querySelector('.fv-versus-bar-right'); var leftText = row.querySelector('.fv-inside-left'); var rightText = row.querySelector('.fv-inside-right'); var labelText = row.querySelector('.fv-versus-label span'); var existingPctDiffs = row.querySelectorAll('.fv-versus-pct-diff'); existingPctDiffs.forEach(function(el) { el.remove(); }); if (winner === 'left' && pctDiffStr) { var pctSpan = document.createElement('span'); pctSpan.className = 'fv-versus-pct-diff'; pctSpan.style.color = 'rgba(255, 255, 255, 0.9)'; pctSpan.textContent = pctDiffStr; if (leftBar) leftBar.insertBefore(pctSpan, leftBar.firstChild); } else if (winner === 'right' && pctDiffStr) { var pctSpan = document.createElement('span'); pctSpan.className = 'fv-versus-pct-diff'; pctSpan.style.color = 'rgba(255, 255, 255, 0.9)'; pctSpan.textContent = pctDiffStr; if (rightBar) rightBar.appendChild(pctSpan); } if (leftBar) { leftBar.style.backgroundColor = leftColor; leftBar.dataset.targetWidth = leftWidth; leftBar.style.setProperty('--target-width', leftWidth + '%'); leftBar.style.width = leftWidth + '%'; } if (rightBar) { rightBar.style.backgroundColor = rightColor; rightBar.dataset.targetWidth = rightWidth; rightBar.style.setProperty('--target-width', rightWidth + '%'); rightBar.style.width = rightWidth + '%'; } if (leftText) { leftText.innerHTML = leftTextStr; } if (rightText) { rightText.innerHTML = rightTextStr; } if (labelText) { labelText.textContent = data.attribute + (unit ? ' (' + unit + ')' : ''); } }); } if (leftSelect) leftSelect.addEventListener('change', updateVersusChart); if (rightSelect) rightSelect.addEventListener('change', updateVersusChart); }); /* Bar Commentary Hover Logic */ var barRows = chartWrapper.querySelectorAll('.fv-bar-row'); var globalCaptionEl = chartWrapper.querySelector('.rv-chart-caption'); var fallbackCaptionHtml = globalCaptionEl ? globalCaptionEl.innerHTML : ''; barRows.forEach(function(row) { var commentaryEl = row.querySelector('[data-commentary-key]'); if (commentaryEl) { var commentaryText = commentaryEl.textContent; if (commentaryText && commentaryText.trim().length > 0) { row.addEventListener('mouseenter', function() { if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) { globalCaptionEl.innerHTML = commentaryText; globalCaptionEl.classList.add('fv-bar-active-caption'); } }); row.addEventListener('mouseleave', function() { if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) { globalCaptionEl.innerHTML = fallbackCaptionHtml; globalCaptionEl.classList.remove('fv-bar-active-caption'); } }); } } }); /* Carousel & Dropdown Logic */ var charts = chartWrapper.querySelectorAll('.fv-chart-item'); var dropdown = chartWrapper.querySelector('.fv-dropdown-title'); var prevBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.prev'); var nextBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.next'); var carouselTitle = chartWrapper.querySelector('.fv-carousel-title-controls .fv-benchmark-title'); var counter = chartWrapper.querySelector('.fv-carousel-counter'); var subheadEl = chartWrapper.querySelector('.fv-chart-subhead'); var captionEl = chartWrapper.querySelector('.rv-chart-caption'); var footerContentEl = chartWrapper.querySelector('.fv-footer-content'); var bottomBarEl = chartWrapper.querySelector('.fv-bottom-bar'); var logoEl = chartWrapper.querySelector('.fv-logo'); if (charts.length > 1 && (dropdown || prevBtn)) { var currentChartIndex = 0; var titles = []; if (dropdown) { titles = Array.from(dropdown.options).map(function(o) { return o.text; }); } else { charts.forEach(function(c) { titles.push(c.getAttribute('data-title') || ''); }); } function showInternalChart(index) { if (index < 0) index = charts.length - 1; if (index >= charts.length) index = 0; currentChartIndex = index; charts.forEach(function(c, i) { c.style.display = i === index ? 'block' : 'none'; if (i === index) { var cType = c.dataset.chartType; if (cType !== 'Pie') { fvLocalAnimate(chartWrapper); } var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true'; if (labelsOnTop && (cType === 'Bar' || cType === 'Diverging Bar' || cType === 'Stacked Bar' || cType === 'Versus')) { chartWrapper.classList.add('labels-on-top'); } else { chartWrapper.classList.remove('labels-on-top'); } } }); if (dropdown) dropdown.value = index; if (carouselTitle && titles[index]) carouselTitle.textContent = titles[index]; if (counter) counter.textContent = (index + 1) + ' of ' + charts.length; var activeChart = charts[index]; if (activeChart) { var newSubhead = activeChart.getAttribute('data-subhead'); var newCaption = activeChart.getAttribute('data-caption'); var currentChartType = activeChart.getAttribute('data-chart-type'); var hideGlobalCaption = currentChartType === 'Countdown' || currentChartType === 'Image Comparison' || currentChartType === 'Shop the Collection'; if (subheadEl) subheadEl.textContent = newSubhead || ''; if (captionEl) { captionEl.textContent = newCaption || ''; fallbackCaptionHtml = newCaption || ''; } if (footerContentEl) { if (newCaption && newCaption.trim().length > 0 && !hideGlobalCaption) { footerContentEl.style.display = 'block'; if (bottomBarEl) bottomBarEl.style.display = 'flex'; } else { footerContentEl.style.display = 'none'; if (bottomBarEl && !logoEl) { bottomBarEl.style.display = 'none'; } } } } } if (dropdown) dropdown.addEventListener('change', function(e) { showInternalChart(parseInt(e.target.value)); }); if (prevBtn) prevBtn.addEventListener('click', function() { showInternalChart(currentChartIndex - 1); }); if (nextBtn) nextBtn.addEventListener('click', function() { showInternalChart(currentChartIndex + 1); }); } /* Image Comparison Logic */ var imageCompareWrappers = chartWrapper.querySelectorAll('.fv-image-compare-wrapper'); imageCompareWrappers.forEach(function(wrapper) { var inner = wrapper.querySelector('.fv-image-compare-inner') || wrapper; var slider = wrapper.querySelector('.fv-image-compare-slider'); var fgImage = wrapper.querySelector('.fv-image-compare-fg'); var bgImage = wrapper.querySelector('.fv-image-compare-bg'); var labelLeft = wrapper.querySelector('.fv-image-compare-label-left'); var labelRight = wrapper.querySelector('.fv-image-compare-label-right'); var isDragging = false; var scale = 1; var panX = 0; var panY = 0; var isPanning = false; var hasPanned = false; var lastClientX = 0; var lastClientY = 0; var initialDistance = null; var lastCenterX = null; var lastCenterY = null; function updateTransform() { if (wrapper.classList.contains('fv-image-compare-fullscreen')) { inner.style.setProperty('transform', 'translate(' + panX + 'px, ' + panY + 'px) scale(' + scale + ')', 'important'); } else { inner.style.removeProperty('transform'); scale = 1; panX = 0; panY = 0; } } function constrainPan() { var rect = wrapper.getBoundingClientRect(); var maxPanX = Math.max(0, (rect.width * scale - rect.width) / 2); var maxPanY = Math.max(0, (rect.height * scale - rect.height) / 2); panX = Math.max(-maxPanX, Math.min(panX, maxPanX)); panY = Math.max(-maxPanY, Math.min(panY, maxPanY)); } wrapper.addEventListener('wheel', function(e) { if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return; e.preventDefault(); var zoomSensitivity = 0.005; var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity); var newScale = Math.max(1, Math.min(scale * zoomFactor, 5)); if (newScale === scale) return; var rect = wrapper.getBoundingClientRect(); var mouseX = e.clientX - rect.left - rect.width / 2; var mouseY = e.clientY - rect.top - rect.height / 2; var ratio = newScale / scale; panX = mouseX - (mouseX - panX) * ratio; panY = mouseY - (mouseY - panY) * ratio; scale = newScale; constrainPan(); updateTransform(); }, { passive: false }); wrapper.addEventListener('mousedown', function(e) { if (!wrapper.classList.contains('fv-image-compare-fullscreen') || scale <= 1) return; if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return; isPanning = true; hasPanned = false; lastClientX = e.clientX; lastClientY = e.clientY; }); window.addEventListener('mousemove', function(e) { if (!isPanning) return; var dx = e.clientX - lastClientX; var dy = e.clientY - lastClientY; if (Math.abs(dx) > 2 || Math.abs(dy) > 2) { hasPanned = true; } lastClientX = e.clientX; lastClientY = e.clientY; panX += dx; panY += dy; constrainPan(); updateTransform(); }); window.addEventListener('mouseup', function() { isPanning = false; }); wrapper.addEventListener('touchstart', function(e) { if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return; if (e.touches.length === 2) { e.preventDefault(); var dx = e.touches[0].clientX - e.touches[1].clientX; var dy = e.touches[0].clientY - e.touches[1].clientY; initialDistance = Math.sqrt(dx * dx + dy * dy); var rect = wrapper.getBoundingClientRect(); lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2; lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2; hasPanned = true; } else if (e.touches.length === 1 && scale > 1) { if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return; isPanning = true; hasPanned = false; lastClientX = e.touches[0].clientX; lastClientY = e.touches[0].clientY; } }, { passive: false }); wrapper.addEventListener('touchmove', function(e) { if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return; if (e.touches.length === 2 && initialDistance !== null) { e.preventDefault(); var dx = e.touches[0].clientX - e.touches[1].clientX; var dy = e.touches[0].clientY - e.touches[1].clientY; var distance = Math.sqrt(dx * dx + dy * dy); if (initialDistance > 0) { var zoomFactor = distance / initialDistance; var newScale = Math.max(1, Math.min(scale * zoomFactor, 5)); var rect = wrapper.getBoundingClientRect(); var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2; var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2; var ratio = newScale / scale; panX = centerX - (centerX - panX) * ratio; panY = centerY - (centerY - panY) * ratio; if (lastCenterX !== null && lastCenterY !== null) { panX += (centerX - lastCenterX); panY += (centerY - lastCenterY); } scale = newScale; lastCenterX = centerX; lastCenterY = centerY; constrainPan(); updateTransform(); } initialDistance = distance; } else if (e.touches.length === 1 && isPanning) { e.preventDefault(); var dx = e.touches[0].clientX - lastClientX; var dy = e.touches[0].clientY - lastClientY; if (Math.abs(dx) > 2 || Math.abs(dy) > 2) { hasPanned = true; } lastClientX = e.touches[0].clientX; lastClientY = e.touches[0].clientY; panX += dx; panY += dy; constrainPan(); updateTransform(); } }, { passive: false }); wrapper.addEventListener('touchend', function(e) { if (e.touches.length < 2) { initialDistance = null; } if (e.touches.length === 0) { isPanning = false; } }); function handleMove(clientX) { var rect = inner.getBoundingClientRect(); var x = Math.max(0, Math.min(clientX - rect.left, rect.width)); var percent = Math.max(0, Math.min((x / rect.width) * 100, 100)); if (slider) slider.style.setProperty('left', percent + '%', 'important'); if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important'); if (labelLeft) { if (percent < 10) { labelLeft.style.setProperty('opacity', '0', 'important'); } else { labelLeft.style.setProperty('opacity', '1', 'important'); } } if (labelRight) { if (percent > 90) { labelRight.style.setProperty('opacity', '0', 'important'); } else { labelRight.style.setProperty('opacity', '1', 'important'); } } } function onMouseMove(e) { if (!isDragging) return; handleMove(e.clientX); } function onTouchMove(e) { if (!isDragging) return; e.preventDefault(); handleMove(e.touches[0].clientX); } function stopDragging() { isDragging = false; window.removeEventListener('mousemove', onMouseMove); window.removeEventListener('mouseup', stopDragging); window.removeEventListener('touchmove', onTouchMove); window.removeEventListener('touchend', stopDragging); } if (slider) { var startDrag = function(clientX) { isDragging = true; handleMove(clientX); window.addEventListener('mousemove', onMouseMove); window.addEventListener('mouseup', stopDragging); }; var startTouchDrag = function(clientX) { isDragging = true; handleMove(clientX); window.addEventListener('touchmove', onTouchMove, { passive: false }); window.addEventListener('touchend', stopDragging); }; slider.addEventListener('mousedown', function(e) { e.preventDefault(); startDrag(e.clientX); }); slider.addEventListener('touchstart', function(e) { e.preventDefault(); startTouchDrag(e.touches[0].clientX); }, { passive: false }); } var expandBtn = wrapper.querySelector('.fv-image-compare-expand-btn'); var closeBtn = wrapper.querySelector('.fv-image-compare-close-btn'); if (expandBtn) { if (window !== window.parent) { expandBtn.style.display = 'none'; } else { expandBtn.addEventListener('click', function(e) { e.stopPropagation(); wrapper.classList.add('fv-image-compare-fullscreen'); document.body.style.overflow = 'hidden'; if (fgImage && fgImage.dataset.highresSrc) { fgImage.src = fgImage.dataset.highresSrc; fgImage.removeAttribute('srcset'); fgImage.removeAttribute('sizes'); } if (bgImage && bgImage.dataset.highresSrc) { bgImage.src = bgImage.dataset.highresSrc; bgImage.removeAttribute('srcset'); bgImage.removeAttribute('sizes'); } }); } } if (closeBtn) { closeBtn.addEventListener('click', function(e) { e.stopPropagation(); wrapper.classList.remove('fv-image-compare-fullscreen'); document.body.style.overflow = ''; updateTransform(); }); } document.addEventListener('keydown', function(e) { if (e.key === 'Escape' && wrapper.classList.contains('fv-image-compare-fullscreen')) { wrapper.classList.remove('fv-image-compare-fullscreen'); document.body.style.overflow = ''; updateTransform(); } }); }); /* Shop The Look Hotspots */ var hotspots = chartWrapper.querySelectorAll('.fv-stl-hotspot-btn'); var allProductsModal = chartWrapper.querySelector('.fv-stl-all-products-modal'); var shopAllBtn = chartWrapper.querySelector('.fv-stl-shop-all-btn'); var stlContainer = chartWrapper.querySelector('.fv-stl-container'); function closeAllModals() { if (allProductsModal) { allProductsModal.classList.remove('is-active'); var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item'); items.forEach(function(item) { item.classList.remove('is-highlighted'); }); if (stlContainer) { setTimeout(function() { if (!allProductsModal.classList.contains('is-active')) { stlContainer.style.minHeight = ''; if ('parentIFrame' in window) { window.parentIFrame.size(); } } }, 300); } } hotspots.forEach(function(btn) { btn.setAttribute('aria-expanded', 'false'); }); if ('parentIFrame' in window) { window.parentIFrame.size(); } } hotspots.forEach(function(btn) { btn.addEventListener('click', function(e) { e.stopPropagation(); var hotspotId = btn.getAttribute('data-hotspot-id'); var isExpanded = btn.getAttribute('aria-expanded') === 'true'; closeAllModals(); if (!isExpanded && allProductsModal) { btn.setAttribute('aria-expanded', 'true'); allProductsModal.classList.add('is-active'); var container = btn.closest('.fv-stl-container'); if (container && container.offsetHeight < 450) { container.style.minHeight = '450px'; } var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]'); if (targetItem) { targetItem.classList.add('is-highlighted'); setTimeout(function() { targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' }); }, 100); } if ('parentIFrame' in window) { window.parentIFrame.size(); } } }); }); if (shopAllBtn && allProductsModal) { shopAllBtn.addEventListener('click', function(e) { e.stopPropagation(); closeAllModals(); allProductsModal.classList.add('is-active'); var container = shopAllBtn.closest('.fv-stl-container'); if (container && container.offsetHeight < 450) { container.style.minHeight = '450px'; } if ('parentIFrame' in window) { window.parentIFrame.size(); } }); } if (allProductsModal) { var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close'); if (closeAllBtn) { closeAllBtn.addEventListener('click', function(e) { e.stopPropagation(); closeAllModals(); }); } } chartWrapper.addEventListener('click', function(e) { if (!e.target.closest('.fv-stl-all-products-content')) { closeAllModals(); } }); if (allProductsModal) { allProductsModal.addEventListener('click', function(e) { if (!e.target.closest('.fv-stl-all-products-content')) { closeAllModals(); } }); } /* Image Annotation Logic */ var iaNodes = chartWrapper.querySelectorAll('.fv-ia-node-button'); var iaWrapper = chartWrapper.querySelector('.fv-ia-wrapper'); var originalCaption = chartWrapper.querySelector('.fv-original-caption') || captionEl; var dynamicCaption = chartWrapper.querySelector('.fv-ia-dynamic-caption'); var exploreBtn = chartWrapper.querySelector('.fv-ia-explore-btn'); var currentIaIndex = -1; function closeAllIANodes() { iaNodes.forEach(function(btn) { btn.classList.remove('is-active'); }); if (originalCaption) originalCaption.style.display = 'block'; if (dynamicCaption) dynamicCaption.style.display = 'none'; } function resetExploreBtn() { currentIaIndex = -1; if (exploreBtn) { var exploreSpan = exploreBtn.querySelector('span'); if (exploreSpan) exploreSpan.textContent = 'Explore'; } } iaNodes.forEach(function(btn, index) { btn.addEventListener('click', function(e) { e.stopPropagation(); var isActive = btn.classList.contains('is-active'); closeAllIANodes(); if (!isActive) { currentIaIndex = index; if (exploreBtn) { var exploreSpan = exploreBtn.querySelector('span'); if (exploreSpan) exploreSpan.textContent = 'Next'; } btn.classList.add('is-active'); if (dynamicCaption) { var title = btn.getAttribute('data-title') || ''; var desc = btn.getAttribute('data-desc') || ''; dynamicCaption.innerHTML = ''; var strongTag = document.createElement('strong'); strongTag.textContent = title; dynamicCaption.appendChild(strongTag); if (desc) { dynamicCaption.appendChild(document.createTextNode(' - ' + desc)); } if (originalCaption) originalCaption.style.display = 'none'; dynamicCaption.style.display = 'block'; if (footerContentEl) footerContentEl.style.display = 'block'; } } else { resetExploreBtn(); } }); }); if (exploreBtn) { exploreBtn.addEventListener('click', function(e) { e.stopPropagation(); if (iaNodes.length === 0) return; var nextIndex = currentIaIndex + 1; if (nextIndex >= iaNodes.length) { closeAllIANodes(); resetExploreBtn(); } else { currentIaIndex = nextIndex; var targetBtn = iaNodes[currentIaIndex]; if (targetBtn) { if (targetBtn.classList.contains('is-active')) { targetBtn.click(); } targetBtn.click(); } } }); } if (iaWrapper) { iaWrapper.addEventListener('click', function(e) { if (!e.target.closest('.fv-ia-node-button') && !e.target.closest('.fv-ia-explore-btn')) { closeAllIANodes(); resetExploreBtn(); } }); } /* Initial Animation */ chartWrapper._fvAnimate = fvLocalAnimate; fvLocalAnimate(chartWrapper); /* Countdown Logic */ var countdownContainer = chartWrapper.querySelector('.fv-countdown-container'); if (countdownContainer) { var targetDateAttr = countdownContainer.getAttribute('data-target-date'); if (targetDateAttr) { var targetDate = new Date(targetDateAttr); var pad = function(n) { return (n < 10 ? '0' : '') + n; }; var updateCountdown = function() { var difference = +targetDate - +new Date(); var d = 0, h = 0, m = 0, s = 0; if (difference > 0) { d = Math.floor(difference / (1000 * 60 * 60 * 24)); h = Math.floor((difference / (1000 * 60 * 60)) % 24); m = Math.floor((difference / 1000 / 60) % 60); s = Math.floor((difference / 1000) % 60); } var daysEl = countdownContainer.querySelector('[data-time="days"]'); var hoursEl = countdownContainer.querySelector('[data-time="hours"]'); var minsEl = countdownContainer.querySelector('[data-time="minutes"]'); var secsEl = countdownContainer.querySelector('[data-time="seconds"]'); if (daysEl) daysEl.textContent = d; if (hoursEl) hoursEl.textContent = pad(h); if (minsEl) minsEl.textContent = pad(m); if (secsEl) secsEl.textContent = pad(s); }; updateCountdown(); setInterval(updateCountdown, 1000); } } } if (false) { var slideshowContainer = document.getElementById(uniqueId + '-slideshow'); if (slideshowContainer) { var slides = slideshowContainer.querySelectorAll('.fv-slide'); slides.forEach(function(slide) { setupWrapper(slide.querySelector('.fv-chart-wrapper')); }); } } else { setupWrapper(root); } } if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1792508542435-ue84mtyht', false); }); } else { initialize('fv-chart-1792508542435-ue84mtyht', false); } })(); Acer Googlebook 14 review: Value for money

Starting at $899 / £999 (around AU$1,300), the Acer Googlebook 14 is the most affordable Googlebook in the initial lineup, with the Dell XPS Googlebook ($999 / $1,099 / $2,399) next. It’s around $200 / £200 cheaper than the HP Googlebook 14 and Asus Googlebook 14, the two most expensive Googlebooks.

The fact that the Acer Googlebook 14 is a 2-in-1 device, whereas the more expensive Googlebooks are simply traditional laptops, makes it, in my view, an even better value. The Acer Googlebook 14, as with all other Googlebooks, gives you 12 months of Google AI Pro (worth $249.99 / £220 / around AU$480), plus three months of YouTube Premium and a year of GeForce Now game streaming.

In the UK, Acer is also offering, for ‘a limited launch window’, an Acer Mega-Hardware Pack worth £144.96 which includes a compact 100W fast charger, 5-in-1 USB-C hub, Acer wireless mouse, three-year warranty — and it’ll plant 10 trees in the buyer’s name — a nice nod to Acer’s admirable focus on sustainability. This deal was supposed to end on October 19, 2026, but I have been informed by Acer that it’s been extended until the end of November.

This helps make the Acer Googlebook 14 an even better value, and I’ve asked Acer if similar bundles are being offered in the US, and will update this review when I hear back (the Acer Googlebook 14 isn’t currently on sale in Australia, which is a shame).

While the Acer Googlebook 14 is quite a bit more expensive than most Chromebooks, it’s a premium device with a gorgeous design and some powerful hardware, which does justify the higher price, somewhat. However, if money is tight, then a budget Chromebook will be a better buy.View Deal

Acer Googlebook 14 review: Design
  • Only 2-in-1 Googlebook (so far)
  • Sleek, premium design
  • Lovely screen

When Google announced the first batch of Googlebooks, the company made it clear that these are premium laptops with designs to match. So, don’t think of the likes of the Acer Googlebook 14 as replacements for cheap and cheerful Chromebooks, but instead rivals to the MacBook Air, as well as Windows 11-powered ultrabooks.

That’ll be a disappointment to anyone who was hoping Googlebooks would be more affordable — perhaps rivalling the MacBook Neo when it comes to value for money. However, the Acer Googlebook 14 does look and feel like an expensive laptop, which goes some way to justifying the price.

With dimensions of 12.28 x 8.78 x 0.55 inches (312 x 222.9 x 13.9 mm), it’s slightly chunkier than the MacBook Air 13-inch (M5), though it comes with a slightly larger screen. It’s noticeably lighter than Apple’s laptop, weighing 2.51 lbs (1.14 kg), compared to the MacBook Air’s 2.7 lbs (1.24 kg).

@import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap'); @import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap'); #fv-chart-1792497446111-yjxgplq1g *, #fv-chart-1792497446111-yjxgplq1g *:before, #fv-chart-1792497446111-yjxgplq1g *:after, #fv-chart-1792497446111-yjxgplq1g-slideshow *, #fv-chart-1792497446111-yjxgplq1g-slideshow *:before, #fv-chart-1792497446111-yjxgplq1g-slideshow *:after { box-sizing: border-box !important; margin: 0; padding: 0; border: 0; font-size: 100%; font: inherit; vertical-align: baseline; } #fv-chart-1792497446111-yjxgplq1g, #fv-chart-1792497446111-yjxgplq1g-slideshow { font-family: 'Open Sans', sans-serif !important; } #fv-chart-1792497446111-yjxgplq1g { position: relative !important; overflow: visible !important; --riv-primary: #2E6E93; } #fv-chart-1792497446111-yjxgplq1g .fv-inner-wrapper { color: #1F2937 !important; background-color: #ffffff !important; padding: 1.5rem 1.5rem 2rem !important; border-radius: 0.5rem !important; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1) !important; margin: 1rem 0 !important; display: flex !important; flex-direction: column !important; overflow: hidden !important; } #fv-chart-1792497446111-yjxgplq1g .fv-inner-wrapper.fv-no-header.fv-is-image-compare { padding-top: 0 !important; } #fv-chart-1792497446111-yjxgplq1g.fv-full-bleed { width: 100vw !important; margin-left: calc(50% - 50vw) !important; } body { overflow-x: clip !important; } #fv-chart-1792497446111-yjxgplq1g.fv-full-bleed .fv-inner-wrapper { padding: 0 !important; border-radius: 0 !important; box-shadow: none !important; margin: 0 !important; background-color: transparent !important; } #fv-chart-1792497446111-yjxgplq1g .fv-inner-wrapper.fv-is-shop-the-look { padding: 0 !important; border-radius: 0 !important; box-shadow: none !important; margin: 0 !important; background-color: transparent !important; } #fv-chart-1792497446111-yjxgplq1g-slideshow { position: relative !important; width: 100% !important; margin: 1rem 0 !important; --riv-primary: #2E6E93; } #fv-chart-1792497446111-yjxgplq1g-slideshow .fv-slides-wrapper { position: relative !important; width: 100% !important; } #fv-chart-1792497446111-yjxgplq1g-slideshow .fv-slide { width: 100% !important; animation: fv-fade-in 0.3s ease-in-out; } #fv-chart-1792497446111-yjxgplq1g-slideshow .fv-slideshow-nav-row { position: relative !important; display: flex !important; justify-content: space-between !important; align-items: center !important; padding: 0 0 16px 0 !important; width: 100% !important; z-index: 20 !important; } #fv-chart-1792497446111-yjxgplq1g-slideshow .fv-nav-btn { background-color: var(--riv-primary) !important; color: #ffffff !important; border: none !important; border-radius: 4px !important; padding: 8px 16px !important; font-size: 14px !important; font-weight: 700 !important; cursor: pointer !important; display: flex !important; align-items: center !important; justify-content: center !important; gap: 6px !important; transition: opacity 0.2s, background-color 0.2s !important; height: 36px !important; text-transform: none !important; box-shadow: 0 1px 2px rgba(0,0,0,0.1) !important; } #fv-chart-1792497446111-yjxgplq1g-slideshow .fv-nav-btn svg { width: 18px !important; height: 18px !important; stroke-width: 3px !important; filter: none !important; } #fv-chart-1792497446111-yjxgplq1g-slideshow .fv-nav-btn:hover { opacity: 0.9 !important; transform: translateY(-1px) !important; } #fv-chart-1792497446111-yjxgplq1g-slideshow .fv-nav-btn.disabled, #fv-chart-1792497446111-yjxgplq1g-slideshow .fv-nav-btn:disabled { background-color: #E5E7EB !important; color: #9CA3AF !important; cursor: default !important; pointer-events: none !important; box-shadow: none !important; } #fv-chart-1792497446111-yjxgplq1g-slideshow .fv-slide-counter { font-family: 'Poppins', sans-serif !important; font-size: 14px !important; font-weight: 600 !important; color: #374151 !important; text-align: center !important; min-width: 40px !important; background-color: rgba(255,255,255,0.8) !important; padding: 2px 8px !important; border-radius: 10px !important; user-select: none !important; } #fv-chart-1792497446111-yjxgplq1g-slideshow .fv-slideshow-select { position: absolute !important; top: 10px !important; right: 10px !important; z-index: 20 !important; appearance: none !important; -webkit-appearance: none !important; -moz-appearance: none !important; background-color: white !important; border: 1px solid #d1d5db !important; color: #1F2937 !important; font-family: 'Open Sans', sans-serif !important; font-size: 14px !important; font-weight: 600 !important; padding: 6px 32px 6px 12px !important; border-radius: 4px !important; cursor: pointer !important; box-shadow: 0 1px 2px rgba(0,0,0,0.05) !important; background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e") !important; background-position: right 0.5rem center !important; background-repeat: no-repeat !important; background-size: 1.5em 1.5em !important; } #fv-chart-1792497446111-yjxgplq1g-slideshow .fv-slideshow-select:focus { outline: 2px solid #2E6E93 !important; border-color: #2E6E93 !important; } @keyframes fv-fade-in { from { opacity: 0; } to { opacity: 1; } } #fv-chart-1792497446111-yjxgplq1g .fv-chart-title { font-weight: bold !important; text-align: center !important; margin-bottom: 0.5rem !important; color: var(--riv-primary) !important; font-size: 20px !important; line-height: 1.2 !important; font-family: 'Open Sans', sans-serif !important; text-transform: none !important; white-space: normal !important; overflow-wrap: break-word !important; padding: 0 20px !important; } #fv-chart-1792497446111-yjxgplq1g .fv-chart-subhead { font-size: 18px !important; font-weight: 500 !important; text-align: center !important; margin-bottom: 2rem !important; color: #374151 !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; text-transform: none !important; padding: 0 20px !important; } #fv-chart-1792497446111-yjxgplq1g .rv-chart-caption { font-size: 15px !important; color: #374151 !important; text-align: center !important; font-style: normal !important; font-weight: normal !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; } #fv-chart-1792497446111-yjxgplq1g .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; } #fv-chart-1792497446111-yjxgplq1g .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; } #fv-chart-1792497446111-yjxgplq1g .fv-versus-select-wrapper { flex: 1; min-width: 0; } #fv-chart-1792497446111-yjxgplq1g .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; } #fv-chart-1792497446111-yjxgplq1g .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; } #fv-chart-1792497446111-yjxgplq1g .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; } #fv-chart-1792497446111-yjxgplq1g .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; } #fv-chart-1792497446111-yjxgplq1g .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; } #fv-chart-1792497446111-yjxgplq1g .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; } #fv-chart-1792497446111-yjxgplq1g .fv-versus-select { background: transparent; border: none; border-bottom: 2px solid; font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; padding: 0.25rem 0; cursor: pointer; outline: none; appearance: none; -webkit-appearance: none; -moz-appearance: none; max-width: 100%; width: 100%; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; } #fv-chart-1792497446111-yjxgplq1g .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; } #fv-chart-1792497446111-yjxgplq1g .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; } #fv-chart-1792497446111-yjxgplq1g .fv-versus-select option { font-family: 'Open Sans', sans-serif; font-weight: 400; font-size: 14px; color: #374151; direction: ltr; text-align: left; } #fv-chart-1792497446111-yjxgplq1g .fv-versus-vs { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; color: #374151; letter-spacing: 0.1em; padding: 0 1rem; } #fv-chart-1792497446111-yjxgplq1g .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; } #fv-chart-1792497446111-yjxgplq1g .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; } #fv-chart-1792497446111-yjxgplq1g .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; } #fv-chart-1792497446111-yjxgplq1g .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; } #fv-chart-1792497446111-yjxgplq1g .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; } #fv-chart-1792497446111-yjxgplq1g .fv-versus-bar { height: 32px; width: var(--target-width); transition: width 0.8s ease-out; animation: fv-grow-max-width 0.8s ease-out forwards; display: flex; align-items: center; overflow: hidden; color: #ffffff; } #fv-chart-1792497446111-yjxgplq1g .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; } #fv-chart-1792497446111-yjxgplq1g .fv-versus-bar-right { border-radius: 0 4px 4px 0; justify-content: flex-start; padding: 0 8px; } @keyframes fv-grow-max-width { from { max-width: 0; } to { max-width: 100%; } } #fv-chart-1792497446111-yjxgplq1g .fv-versus-center-line { position: absolute; left: 50%; top: 0; bottom: 0; width: 4px; background-color: #ffffff; transform: translateX(-50%); z-index: 1; } #fv-chart-1792497446111-yjxgplq1g .fv-inside-left { white-space: nowrap; flex-shrink: 0; } #fv-chart-1792497446111-yjxgplq1g .fv-inside-right { white-space: nowrap; flex-shrink: 0; } #fv-chart-1792497446111-yjxgplq1g .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; } #fv-chart-1792497446111-yjxgplq1g .fv-versus-pct-diff { font-size: 12px; font-weight: 600; } #fv-chart-1792497446111-yjxgplq1g .fv-versus-label { position: absolute; left: 50%; transform: translateX(-50%); top: 0; background-color: transparent; border: none; box-shadow: none; padding: 0; font-family: 'Open Sans', sans-serif; font-weight: 700; font-size: 14px; color: #374151; white-space: nowrap; } #fv-chart-1792497446111-yjxgplq1g .sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; } #fv-chart-1792497446111-yjxgplq1g .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; } #fv-chart-1792497446111-yjxgplq1g .fv-footer-content { text-align: center !important; width: 100% !important; } #fv-chart-1792497446111-yjxgplq1g .fv-logo { display: block !important; margin: 0 auto !important; width: 120px !important; min-width: 120px !important; max-width: 120px !important; height: auto !important; object-fit: contain !important; flex-shrink: 0 !important; } #fv-chart-1792497446111-yjxgplq1g .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; } #fv-chart-1792497446111-yjxgplq1g .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; } #fv-chart-1792497446111-yjxgplq1g .fv-dropdown-title { appearance: none !important; -webkit-appearance: none !important; -moz-appearance: none !important; background: transparent !important; border: none !important; font-size: 18px !important; font-weight: 600 !important; color: var(--riv-primary) !important; padding-right: 28px !important; padding-left: 10px !important; cursor: pointer !important; text-align: center !important; text-align-last: center !important; width: auto !important; max-width: 100% !important; font-family: 'Open Sans', sans-serif !important; line-height: 1.3 !important; margin: 0 !important; text-overflow: ellipsis !important; overflow: hidden !important; white-space: nowrap !important; } #fv-chart-1792497446111-yjxgplq1g .fv-dropdown-title:focus { outline: none !important; } #fv-chart-1792497446111-yjxgplq1g .fv-dropdown-title::-ms-expand { display: none !important; } #fv-chart-1792497446111-yjxgplq1g .fv-dropdown-chevron { position: absolute !important; right: 0 !important; top: 50% !important; transform: translateY(-50%) !important; pointer-events: none !important; color: var(--riv-primary) !important; display: flex !important; align-items: center !important; } #fv-chart-1792497446111-yjxgplq1g .fv-carousel-title-controls { display: flex !important; justify-content: space-between !important; align-items: center !important; margin-bottom: 16px !important; width: 100% !important; gap: 12px !important; } #fv-chart-1792497446111-yjxgplq1g .fv-carousel-nav-btn { background: transparent !important; border: 1px solid #d1d5db !important; border-radius: 6px !important; padding: 6px 10px !important; cursor: pointer !important; font-size: 14px !important; color: #374151 !important; display: flex !important; align-items: center !important; gap: 4px !important; font-family: 'Open Sans', sans-serif !important; } #fv-chart-1792497446111-yjxgplq1g .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; } #fv-chart-1792497446111-yjxgplq1g .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; } #fv-chart-1792497446111-yjxgplq1g .fv-legend { display: flex !important; justify-content: center !important; flex-wrap: wrap !important; gap: 8px 16px !important; margin: 0 !important; padding: 0 !important; margin-top: 1rem !important; } #fv-chart-1792497446111-yjxgplq1g .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; } #fv-chart-1792497446111-yjxgplq1g .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; } #fv-chart-1792497446111-yjxgplq1g .fv-multi-value-legend { display: flex !important; justify-content: center !important; flex-wrap: wrap !important; gap: 12px 24px !important; margin-bottom: 1.5rem !important; padding: 0 !important; } #fv-chart-1792497446111-yjxgplq1g .fv-multi-legend-item { display: flex !important; align-items: center !important; gap: 8px !important; font-size: 14px !important; color: #374151 !important; font-weight: 500 !important; } #fv-chart-1792497446111-yjxgplq1g .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; } #fv-chart-1792497446111-yjxgplq1g .fv-benchmark-group { margin-bottom: 1rem !important; } #fv-chart-1792497446111-yjxgplq1g .fv-benchmark-title { font-size: 18px !important; font-weight: 600 !important; margin-bottom: 16px !important; margin-top: 0 !important; padding: 0 !important; text-align: center !important; color: var(--riv-primary) !important; flex: 1 !important; min-width: 0 !important; font-family: 'Open Sans', sans-serif !important; line-height: 1.3 !important; text-transform: none !important; white-space: normal !important; overflow-wrap: break-word !important; word-wrap: break-word !important; max-width: 100% !important; } #fv-chart-1792497446111-yjxgplq1g .fv-bar-row, #fv-chart-1792497446111-yjxgplq1g .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; position: relative !important; } #fv-chart-1792497446111-yjxgplq1g .fv-bar-label { width: 150px !important; flex-shrink: 0 !important; font-size: 14px !important; color: #374151 !important; padding-right: 10px !important; text-align: right !important; font-weight: 500 !important; display: block !important; } #fv-chart-1792497446111-yjxgplq1g .fv-bar-container { flex-grow: 1 !important; background-color: #E5E7EB !important; border-radius: 4px !important; min-height: 25px !important; border: 1px solid #D1D5DB !important; position: relative !important; display: flex !important; align-items: center !important; } #fv-chart-1792497446111-yjxgplq1g .fv-bar-commentary-inline { display: none !important; position: absolute !important; left: 150px !important; top: 0 !important; bottom: 0 !important; right: 0 !important; width: calc(100% - 150px) !important; margin: 0 !important; padding: 0 8px !important; font-size: 13px !important; color: #fff !important; background: rgba(0,0,0,0.8) !important; border-radius: 4px !important; line-height: 1.4 !important; font-weight: normal !important; text-transform: none !important; word-wrap: break-word !important; z-index: 10 !important; align-items: center !important; overflow-y: auto !important; } #fv-chart-1792497446111-yjxgplq1g.preview-wrapper .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792497446111-yjxgplq1g.preview-wrapper .fv-bar-commentary-inline:focus, #fv-chart-1792497446111-yjxgplq1g.preview-wrapper .fv-bar-commentary-inline:focus-within, #fv-chart-1792497446111-yjxgplq1g.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792497446111-yjxgplq1g.mobile-view .fv-bar-commentary-inline:focus, #fv-chart-1792497446111-yjxgplq1g.mobile-view .fv-bar-commentary-inline:focus-within { display: flex !important; } #fv-chart-1792497446111-yjxgplq1g .fv-bar { height: 100% !important; border-radius: 3px !important; display: flex !important; align-items: center !important; transition: opacity 0.2s ease, width 0.8s ease-out !important; min-height: 23px !important; } #fv-chart-1792497446111-yjxgplq1g .fv-bar:hover { opacity: 0.8 !important; } #fv-chart-1792497446111-yjxgplq1g .fv-bar-inner-content { display: flex !important; justify-content: space-between !important; align-items: center !important; width: 100% !important; height: 100% !important; padding: 0 8px !important; font-size: 14px !important; font-weight: bold !important; overflow: hidden !important; } #fv-chart-1792497446111-yjxgplq1g .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; } #fv-chart-1792497446111-yjxgplq1g .fv-bar-inner-value { flex-shrink: 0 !important; } #fv-chart-1792497446111-yjxgplq1g .fv-bar-value-outside { padding-left: 8px !important; font-size: 14px !important; font-weight: bold !important; color: #374151 !important; white-space: nowrap !important; } #fv-chart-1792497446111-yjxgplq1g .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; } #fv-chart-1792497446111-yjxgplq1g .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; } #fv-chart-1792497446111-yjxgplq1g .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; } #fv-chart-1792497446111-yjxgplq1g .fv-stacked-bar { display: flex !important; overflow: hidden !important; } #fv-chart-1792497446111-yjxgplq1g .fv-stacked-segment { height: 100% !important; display: flex !important; align-items: center !important; justify-content: flex-end !important; padding-right: 8px !important; border-right: 1px solid rgba(255,255,255,0.3) !important; } #fv-chart-1792497446111-yjxgplq1g .fv-stacked-segment:last-child { border-right: none !important; } #fv-chart-1792497446111-yjxgplq1g .fv-segment-value { font-size: 14px !important; font-weight: bold !important; } #fv-chart-1792497446111-yjxgplq1g .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; } #fv-chart-1792497446111-yjxgplq1g .fv-grouped-product-title-wrapper { padding-left: 150px !important; } #fv-chart-1792497446111-yjxgplq1g .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.5rem !important; font-weight: 700 !important; font-size: 14px !important; color: #374151 !important; text-transform: none !important; } #fv-chart-1792497446111-yjxgplq1g .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; } #fv-chart-1792497446111-yjxgplq1g .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; } #fv-chart-1792497446111-yjxgplq1g .fv-bar-cluster .fv-bar-container { height: 20px !important; } #fv-chart-1792497446111-yjxgplq1g .fv-dials-grid { display: grid !important; grid-template-columns: repeat(auto-fit, minmax(145px, 1fr)) !important; gap: 1.5rem 1rem !important; width: 100% !important; margin: 0.75rem 0 1.25rem !important; align-items: start !important; justify-items: center !important; } #fv-chart-1792497446111-yjxgplq1g .fv-dial-card { display: flex !important; flex-direction: column !important; align-items: center !important; text-align: center !important; width: 100% !important; max-width: 220px !important; } #fv-chart-1792497446111-yjxgplq1g .fv-dial-title { font-family: 'Poppins', 'Open Sans', sans-serif !important; font-size: 18px !important; font-weight: 700 !important; color: #2b2b2b !important; line-height: 1.25 !important; margin-bottom: 0.35rem !important; text-align: center !important; width: 100% !important; overflow-wrap: break-word !important; text-transform: none !important; } #fv-chart-1792497446111-yjxgplq1g .fv-dial-svg-wrapper { width: 100% !important; max-width: 200px !important; display: flex !important; justify-content: center !important; } #fv-chart-1792497446111-yjxgplq1g .fv-dial-svg { width: 100% !important; height: auto !important; display: block !important; overflow: visible !important; } #fv-chart-1792497446111-yjxgplq1g .fv-dial-needle { transition: transform 0.9s cubic-bezier(0.22, 1, 0.36, 1) !important; } #fv-chart-1792497446111-yjxgplq1g .fv-dial-commentary { margin-top: 0.35rem !important; font-size: 13px !important; line-height: 1.45 !important; color: #4B5563 !important; text-align: center !important; width: 100% !important; padding: 0 4px !important; font-family: 'Open Sans', sans-serif !important; word-wrap: break-word !important; } #fv-chart-1792497446111-yjxgplq1g.preview-wrapper .fv-dial-commentary-input { min-height: 22px !important; border: 1px dashed transparent !important; border-radius: 4px !important; transition: border-color 0.15s ease, background-color 0.15s ease !important; } #fv-chart-1792497446111-yjxgplq1g.preview-wrapper .fv-dial-card:hover .fv-dial-commentary-input, #fv-chart-1792497446111-yjxgplq1g.preview-wrapper .fv-dial-commentary-input:focus { border-color: #CBD5E1 !important; background-color: rgba(241, 245, 249, 0.6) !important; } #fv-chart-1792497446111-yjxgplq1g .riv-grid line { stroke: #D1D5DB !important; stroke-dasharray: 3 3 !important; } #fv-chart-1792497446111-yjxgplq1g .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; } #fv-chart-1792497446111-yjxgplq1g .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; } #fv-chart-1792497446111-yjxgplq1g .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; } #fv-chart-1792497446111-yjxgplq1g .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; } #fv-chart-1792497446111-yjxgplq1g .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; } #fv-chart-1792497446111-yjxgplq1g .fv-x-axis-ticks { display: flex !important; justify-content: space-between !important; padding-top: 4px !important; font-size: 13px !important; color: #374151 !important; } #fv-chart-1792497446111-yjxgplq1g .fv-x-axis-ticks span { position: relative !important; } #fv-chart-1792497446111-yjxgplq1g .fv-x-axis-ticks span::before { content: '' !important; position: absolute !important; top: -6px !important; left: 50% !important; transform: translateX(-50%) !important; width: 2px !important; height: 4px !important; background-color: #D1D5DB !important; border-radius: 1px !important; } #fv-chart-1792497446111-yjxgplq1g .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; } #fv-chart-1792497446111-yjxgplq1g .fv-x-axis-title { text-align: center !important; font-size: 15px !important; color: #374151 !important; margin-top: 8px !important; margin-bottom: 16px !important; line-height: 1.5 !important; padding: 0 1rem !important; display: block !important; font-weight: bold !important; } #fv-chart-1792497446111-yjxgplq1g .fv-y-axis-title { font-size: 15px !important; color: #374151 !important; line-height: 1.5 !important; text-align: left !important; padding-left: 5.83% !important; margin-bottom: 4px !important; display: block !important; font-weight: bold !important; } #fv-chart-1792497446111-yjxgplq1g .fv-ia-container { position: relative !important; width: auto !important; display: block !important; background-color: transparent !important; overflow: hidden !important; } #fv-chart-1792497446111-yjxgplq1g .fv-ia-wrapper { position: relative !important; width: auto !important; display: block !important; margin: 0 auto !important; } #fv-chart-1792497446111-yjxgplq1g.fv-full-bleed .fv-ia-container { width: 100% !important; } #fv-chart-1792497446111-yjxgplq1g.fv-full-bleed .fv-ia-wrapper { width: 100% !important; max-width: none !important; margin: 0 auto !important; } #fv-chart-1792497446111-yjxgplq1g .fv-ia-image { display: block !important; width: 100% !important; height: auto !important; } #fv-chart-1792497446111-yjxgplq1g .fv-ia-node-container { position: absolute !important; z-index: 10 !important; } #fv-chart-1792497446111-yjxgplq1g .fv-ia-node-button { position: absolute !important; margin-left: -0.75rem !important; margin-top: -0.75rem !important; width: 1.5rem !important; height: 1.5rem !important; border-radius: 9999px !important; display: flex !important; align-items: center !important; justify-content: center !important; box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1) !important; transition: all 300ms cubic-bezier(0.4, 0, 0.2, 1) !important; cursor: pointer !important; border: none !important; padding: 0 !important; background-color: #ffffff !important; color: #1e293b !important; font-size: 0.75rem !important; font-weight: 700 !important; font-family: sans-serif !important; } #fv-chart-1792497446111-yjxgplq1g .fv-ia-node-button:hover { transform: scale(1.1) !important; } #fv-chart-1792497446111-yjxgplq1g .fv-ia-node-button.is-active { background-color: #2E6E93 !important; color: #ffffff !important; transform: scale(1.1) !important; box-shadow: 0 0 0 2px #ffffff !important; } #fv-chart-1792497446111-yjxgplq1g .fv-ia-pulse-ring { position: absolute !important; inset: 0 !important; border-radius: 9999px !important; background-color: #2E6E93 !important; opacity: 0.4 !important; pointer-events: none !important; z-index: -1 !important; animation: fv-ia-ping 1.5s cubic-bezier(0, 0, 0.2, 1) 3 forwards !important; } @keyframes fv-ia-ping { 75%, 100% { transform: scale(2); opacity: 0; } } #fv-chart-1792497446111-yjxgplq1g .fv-ia-static-tooltip { display: none !important; position: absolute !important; top: -10px !important; left: 50% !important; transform: translate(-50%, -100%) !important; background-color: rgba(255, 255, 255, 0.95) !important; padding: 10px !important; border-radius: 6px !important; box-shadow: 0 4px 12px rgba(0,0,0,0.15) !important; width: max-content !important; max-width: 200px !important; font-size: 13px !important; color: #1f2937 !important; z-index: 20 !important; pointer-events: none !important; white-space: pre-wrap !important; line-height: 1.4 !important; border: 1px solid #e5e7eb !important; } #fv-chart-1792497446111-yjxgplq1g .fv-ia-node-button:hover + .fv-ia-static-tooltip { display: block !important; } #fv-chart-1792497446111-yjxgplq1g .fv-logo-explore-bar { position: relative !important; width: 100% !important; display: flex !important; justify-content: center !important; align-items: center !important; min-height: 30px !important; } #fv-chart-1792497446111-yjxgplq1g .fv-logo-explore-bar .fv-logo { margin: 0 auto !important; } #fv-chart-1792497446111-yjxgplq1g .fv-ia-explore-wrapper { position: absolute !important; right: 0 !important; } #fv-chart-1792497446111-yjxgplq1g.mobile-view .fv-logo-explore-bar { flex-direction: column !important; min-height: auto !important; gap: 0.75rem !important; } #fv-chart-1792497446111-yjxgplq1g.mobile-view .fv-ia-explore-wrapper { position: static !important; align-self: flex-end !important; } #fv-chart-1792497446111-yjxgplq1g .fv-ia-explore-btn { background-color: rgba(255, 255, 255, 0.95) !important; color: #1e293b !important; border: 1px solid #e5e7eb !important; border-radius: 9999px !important; padding: 0.5rem 1.25rem !important; font-size: 0.875rem !important; font-weight: 600 !important; font-family: sans-serif !important; display: inline-flex !important; align-items: center !important; gap: 0.5rem !important; cursor: pointer !important; box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1) !important; transition: all 0.2s !important; pointer-events: auto !important; flex-shrink: 0 !important; } #fv-chart-1792497446111-yjxgplq1g .fv-ia-explore-btn:hover { background-color: #ffffff !important; transform: translateY(-2px) !important; box-shadow: 0 6px 8px -1px rgba(0, 0, 0, 0.15) !important; color: #2E6E93 !important; } #fv-chart-1792497446111-yjxgplq1g .fv-ia-explore-btn svg { transition: transform 0.2s !important; } #fv-chart-1792497446111-yjxgplq1g .fv-ia-explore-btn:hover svg { transform: translateX(2px) !important; } #fv-chart-1792497446111-yjxgplq1g .fv-ia-active-modal-container { display: none !important; } #fv-chart-1792497446111-yjxgplq1g .fv-ia-modals { display: block !important; position: static !important; } #fv-chart-1792497446111-yjxgplq1g .fv-ia-modal-item { display: none !important; } #fv-chart-1792497446111-yjxgplq1g .fv-ia-modal-item.is-active { display: flex !important; flex-direction: column !important; position: absolute !important; top: 1rem !important; right: 1rem !important; z-index: 20 !important; width: 18rem !important; max-width: calc(100% - 2rem) !important; background-color: #ffffff !important; padding: 1rem !important; border-radius: 0.75rem !important; box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04) !important; border: 1px solid #e5e7eb !important; border-top: 4px solid #2E6E93 !important; animation: fv-ia-fade-in 0.2s ease-out !important; gap: 0.75rem !important; max-height: 80% !important; overflow-y: auto !important; pointer-events: auto !important; } @keyframes fv-ia-fade-in { from { opacity: 0; transform: scale(0.95); } to { opacity: 1; transform: scale(1); } } #fv-chart-1792497446111-yjxgplq1g .fv-ia-modal-header { display: flex !important; justify-content: space-between !important; align-items: flex-start !important; margin: 0 !important; gap: 0.5rem !important; } #fv-chart-1792497446111-yjxgplq1g .fv-ia-node-title { font-size: 1rem !important; line-height: 1.25 !important; font-weight: 700 !important; color: #111827 !important; margin: 0 !important; } #fv-chart-1792497446111-yjxgplq1g .fv-ia-close-button { background: #f9fafb !important; border: 1px solid #e5e7eb !important; border-radius: 50% !important; width: 2rem !important; height: 2rem !important; display: flex !important; align-items: center !important; justify-content: center !important; color: #9ca3af !important; cursor: pointer !important; padding: 0 !important; flex-shrink: 0 !important; transition: all 0.2s !important; box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05) !important; } #fv-chart-1792497446111-yjxgplq1g .fv-ia-close-button:hover { background: #e5e7eb !important; color: #111827 !important; } #fv-chart-1792497446111-yjxgplq1g .fv-ia-node-description { font-size: 0.875rem !important; color: #374151 !important; margin: 0 !important; line-height: 1.625 !important; white-space: pre-wrap !important; } #fv-chart-1792497446111-yjxgplq1g.mobile-view .fv-ia-node-description { font-size: 0.875rem !important; } #fv-chart-1792497446111-yjxgplq1g .fv-ia-empty { display: flex !important; align-items: center !important; justify-content: center !important; height: 200px !important; background-color: #f1f5f9 !important; color: #64748b !important; border: 2px dashed #cbd5e1 !important; border-radius: 0.5rem !important; } #fv-chart-1792497446111-yjxgplq1g.mobile-view .fv-pie-container, #fv-chart-1792497446111-yjxgplq1g.labels-on-top .fv-pie-container { flex-direction: column !important; gap: 1rem !important; } #fv-chart-1792497446111-yjxgplq1g.mobile-view .fv-grouped-product-title-wrapper, #fv-chart-1792497446111-yjxgplq1g.labels-on-top .fv-grouped-product-title-wrapper { padding-left: 0 !important; } #fv-chart-1792497446111-yjxgplq1g.mobile-view .fv-bar-row, #fv-chart-1792497446111-yjxgplq1g.mobile-view .fv-stacked-product, #fv-chart-1792497446111-yjxgplq1g.mobile-view .fv-grouped-bar-product, #fv-chart-1792497446111-yjxgplq1g.labels-on-top .fv-bar-row, #fv-chart-1792497446111-yjxgplq1g.labels-on-top .fv-stacked-product, #fv-chart-1792497446111-yjxgplq1g.labels-on-top .fv-grouped-bar-product { flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important; } #fv-chart-1792497446111-yjxgplq1g.mobile-view .fv-bar-label:not(.fv-grouped-product-title), #fv-chart-1792497446111-yjxgplq1g.labels-on-top .fv-bar-label:not(.fv-grouped-product-title) { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important; } #fv-chart-1792497446111-yjxgplq1g.mobile-view .fv-bar-label, #fv-chart-1792497446111-yjxgplq1g.mobile-view .fv-grouped-product-title, #fv-chart-1792497446111-yjxgplq1g.labels-on-top .fv-bar-label, #fv-chart-1792497446111-yjxgplq1g.labels-on-top .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important; } #fv-chart-1792497446111-yjxgplq1g.mobile-view .fv-bar-container, #fv-chart-1792497446111-yjxgplq1g.mobile-view .fv-bar-cluster, #fv-chart-1792497446111-yjxgplq1g.labels-on-top .fv-bar-container, #fv-chart-1792497446111-yjxgplq1g.labels-on-top .fv-bar-cluster { width: 100% !important; } #fv-chart-1792497446111-yjxgplq1g.mobile-view .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1792497446111-yjxgplq1g.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792497446111-yjxgplq1g.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1792497446111-yjxgplq1g.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus-within, #fv-chart-1792497446111-yjxgplq1g.labels-on-top .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1792497446111-yjxgplq1g.labels-on-top .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792497446111-yjxgplq1g.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1792497446111-yjxgplq1g.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus-within { position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important; } #fv-chart-1792497446111-yjxgplq1g.mobile-view .fv-x-axis-wrapper, #fv-chart-1792497446111-yjxgplq1g.labels-on-top .fv-x-axis-wrapper { margin-left: 0 !important; } #fv-chart-1792497446111-yjxgplq1g.mobile-view .fv-x-axis-label-space, #fv-chart-1792497446111-yjxgplq1g.labels-on-top .fv-x-axis-label-space { display: none !important; } #fv-chart-1792497446111-yjxgplq1g.mobile-view .fv-x-axis-chart-space, #fv-chart-1792497446111-yjxgplq1g.labels-on-top .fv-x-axis-chart-space { padding-right: 0 !important; } #fv-chart-1792497446111-yjxgplq1g.mobile-view .fv-benchmark-title, #fv-chart-1792497446111-yjxgplq1g.labels-on-top .fv-benchmark-title { font-size: 16px !important; } #fv-chart-1792497446111-yjxgplq1g.mobile-view .fv-dropdown-title, #fv-chart-1792497446111-yjxgplq1g.labels-on-top .fv-dropdown-title { font-size: 16px !important; } #fv-chart-1792497446111-yjxgplq1g.mobile-view .fv-carousel-nav-btn, #fv-chart-1792497446111-yjxgplq1g.labels-on-top .fv-carousel-nav-btn { padding: 8px 12px !important; font-size: 14px !important; } #fv-chart-1792497446111-yjxgplq1g.mobile-view .fv-chart-title, #fv-chart-1792497446111-yjxgplq1g.labels-on-top .fv-chart-title { padding: 0 8px !important; } #fv-chart-1792497446111-yjxgplq1g.mobile-view .fv-chart-subhead, #fv-chart-1792497446111-yjxgplq1g.labels-on-top .fv-chart-subhead { padding: 0 8px !important; } #fv-chart-1792497446111-yjxgplq1g.mobile-view .fv-versus-header, #fv-chart-1792497446111-yjxgplq1g.labels-on-top .fv-versus-header { flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important; } #fv-chart-1792497446111-yjxgplq1g.mobile-view .fv-versus-select-wrapper, #fv-chart-1792497446111-yjxgplq1g.labels-on-top .fv-versus-select-wrapper { flex: 1 !important; min-width: 0 !important; width: 100% !important; } #fv-chart-1792497446111-yjxgplq1g.mobile-view .fv-versus-select-wrapper.fv-left, #fv-chart-1792497446111-yjxgplq1g.labels-on-top .fv-versus-select-wrapper.fv-left { text-align: center !important; padding-right: 0 !important; } #fv-chart-1792497446111-yjxgplq1g.mobile-view .fv-versus-select-wrapper.fv-right, #fv-chart-1792497446111-yjxgplq1g.labels-on-top .fv-versus-select-wrapper.fv-right { text-align: center !important; padding-left: 0 !important; } #fv-chart-1792497446111-yjxgplq1g.mobile-view .fv-versus-select.fv-select-left, #fv-chart-1792497446111-yjxgplq1g.labels-on-top .fv-versus-select.fv-select-left { text-align: center !important; } #fv-chart-1792497446111-yjxgplq1g.mobile-view .fv-versus-select.fv-select-right, #fv-chart-1792497446111-yjxgplq1g.labels-on-top .fv-versus-select.fv-select-right { text-align: center !important; } #fv-chart-1792497446111-yjxgplq1g.mobile-view .fv-versus-vs, #fv-chart-1792497446111-yjxgplq1g.labels-on-top .fv-versus-vs { text-align: center !important; padding: 0.25rem 0 !important; } #fv-chart-1792497446111-yjxgplq1g.mobile-view .fv-versus-select-container, #fv-chart-1792497446111-yjxgplq1g.labels-on-top .fv-versus-select-container { max-width: 100% !important; width: 100% !important; } #fv-chart-1792497446111-yjxgplq1g.mobile-view .fv-versus-select, #fv-chart-1792497446111-yjxgplq1g.labels-on-top .fv-versus-select { font-size: 14px !important; width: 100% !important; } #fv-chart-1792497446111-yjxgplq1g.mobile-view .fv-stl-shop-all-btn, #fv-chart-1792497446111-yjxgplq1g.labels-on-top .fv-stl-shop-all-btn { bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important; } #fv-chart-1792497446111-yjxgplq1g.mobile-view .fv-stl-shop-all-logo, #fv-chart-1792497446111-yjxgplq1g.mobile-view .fv-stl-shop-all-icon, #fv-chart-1792497446111-yjxgplq1g.labels-on-top .fv-stl-shop-all-logo, #fv-chart-1792497446111-yjxgplq1g.labels-on-top .fv-stl-shop-all-icon { width: 2rem !important; height: 2rem !important; } #fv-chart-1792497446111-yjxgplq1g.mobile-view .fv-stl-shop-all-icon svg, #fv-chart-1792497446111-yjxgplq1g.labels-on-top .fv-stl-shop-all-icon svg { width: 14px !important; height: 14px !important; } #fv-chart-1792497446111-yjxgplq1g.mobile-view .fv-bar-commentary-inline, #fv-chart-1792497446111-yjxgplq1g.labels-on-top .fv-bar-commentary-inline { display: block !important; margin-left: 0 !important; width: 100% !important; } #fv-chart-1792497446111-yjxgplq1g.mobile-view .fv-dials-grid, #fv-chart-1792497446111-yjxgplq1g.labels-on-top .fv-dials-grid { grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)) !important; gap: 1.25rem 0.75rem !important; } #fv-chart-1792497446111-yjxgplq1g.mobile-view .fv-dial-title, #fv-chart-1792497446111-yjxgplq1g.labels-on-top .fv-dial-title { font-size: 16px !important; } #fv-chart-1792497446111-yjxgplq1g.mobile-view .fv-y-axis-title { padding-left: 5% !important; } #fv-chart-1792497446111-yjxgplq1g.mobile-view.fv-contains-line-chart .fv-footer-content { margin-left: -1rem !important; margin-right: -1rem !important; } @media (max-width: 599px) { #fv-chart-1792497446111-yjxgplq1g .fv-pie-container { flex-direction: column !important; gap: 1rem !important; } #fv-chart-1792497446111-yjxgplq1g .fv-grouped-product-title-wrapper { padding-left: 0 !important; } #fv-chart-1792497446111-yjxgplq1g .fv-bar-row, #fv-chart-1792497446111-yjxgplq1g .fv-stacked-product, #fv-chart-1792497446111-yjxgplq1g .fv-grouped-bar-product { flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important; } #fv-chart-1792497446111-yjxgplq1g .fv-bar-label:not(.fv-grouped-product-title) { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important; } #fv-chart-1792497446111-yjxgplq1g .fv-bar-label, #fv-chart-1792497446111-yjxgplq1g .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important; } #fv-chart-1792497446111-yjxgplq1g .fv-bar-container, #fv-chart-1792497446111-yjxgplq1g .fv-bar-cluster { width: 100% !important; } #fv-chart-1792497446111-yjxgplq1g .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1792497446111-yjxgplq1g .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792497446111-yjxgplq1g .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1792497446111-yjxgplq1g .fv-bar-row .fv-bar-commentary-inline:focus-within { position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important; } #fv-chart-1792497446111-yjxgplq1g .fv-x-axis-wrapper { margin-left: 0 !important; } #fv-chart-1792497446111-yjxgplq1g .fv-x-axis-label-space { display: none !important; } #fv-chart-1792497446111-yjxgplq1g .fv-x-axis-chart-space { padding-right: 0 !important; } #fv-chart-1792497446111-yjxgplq1g .fv-benchmark-title { font-size: 16px !important; } #fv-chart-1792497446111-yjxgplq1g .fv-dropdown-title { font-size: 16px !important; } #fv-chart-1792497446111-yjxgplq1g .fv-carousel-nav-btn { padding: 8px 12px !important; font-size: 14px !important; } #fv-chart-1792497446111-yjxgplq1g .fv-chart-title { padding: 0 8px !important; } #fv-chart-1792497446111-yjxgplq1g .fv-chart-subhead { padding: 0 8px !important; } #fv-chart-1792497446111-yjxgplq1g .fv-versus-header { flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important; } #fv-chart-1792497446111-yjxgplq1g .fv-versus-select-wrapper { flex: 1 !important; min-width: 0 !important; width: 100% !important; } #fv-chart-1792497446111-yjxgplq1g .fv-versus-select-wrapper.fv-left { text-align: center !important; padding-right: 0 !important; } #fv-chart-1792497446111-yjxgplq1g .fv-versus-select-wrapper.fv-right { text-align: center !important; padding-left: 0 !important; } #fv-chart-1792497446111-yjxgplq1g .fv-versus-select.fv-select-left { text-align: center !important; } #fv-chart-1792497446111-yjxgplq1g .fv-versus-select.fv-select-right { text-align: center !important; } #fv-chart-1792497446111-yjxgplq1g .fv-versus-vs { text-align: center !important; padding: 0.25rem 0 !important; } #fv-chart-1792497446111-yjxgplq1g .fv-versus-select-container { max-width: 100% !important; width: 100% !important; } #fv-chart-1792497446111-yjxgplq1g .fv-versus-select { font-size: 14px !important; width: 100% !important; } #fv-chart-1792497446111-yjxgplq1g .fv-stl-shop-all-btn { bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important; } #fv-chart-1792497446111-yjxgplq1g .fv-stl-shop-all-logo, #fv-chart-1792497446111-yjxgplq1g .fv-stl-shop-all-icon { width: 2rem !important; height: 2rem !important; } #fv-chart-1792497446111-yjxgplq1g .fv-stl-shop-all-icon svg { width: 14px !important; height: 14px !important; } #fv-chart-1792497446111-yjxgplq1g .fv-bar-commentary-inline { display: block !important; margin-left: 0 !important; width: 100% !important; } #fv-chart-1792497446111-yjxgplq1g .fv-dials-grid { grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)) !important; gap: 1.25rem 0.75rem !important; } #fv-chart-1792497446111-yjxgplq1g .fv-dial-title { font-size: 16px !important; } #fv-chart-1792497446111-yjxgplq1g .fv-y-axis-title { padding-left: 5% !important; } #fv-chart-1792497446111-yjxgplq1g.fv-contains-line-chart .fv-footer-content { margin-left: -1rem !important; margin-right: -1rem !important; } }{ "@context": "https://schema.org", "@type": "Dataset", "name": "Overall Chart Title", "description": "Subhead to describe the test and what's being measured and why", "creator": { "@type": "Organization", "name": "TechRadar", "logo": "https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png" }, "isAccessibleForFree": true, "dateCreated": "2026-10-20T11:57:26.111Z", "citation": "Side view of the Acer Googlebook 14", "keywords": [ "Image Annotation", "benchmark", "comparison", "performance", "review", "TechRadar" ], "measurementTechnique": "Performance Benchmarking", "variableMeasured": []}{"version":2,"exportedAt":"2026-10-20T11:57:26.112Z","state":{"data":[],"products":[],"attributes":[],"selectedProducts":[],"selectedPrimaryProduct":null,"selectedAttributes":[],"productColors":[],"initialProductColors":[],"attributeColors":[],"attributeGroups":[],"chartType":"Image Annotation","roundupViewType":"bars","stlSelectedHotspotId":null,"iaSelectedNodeId":null,"barChartMaxValueOverrides":{},"barChartMinValueOverrides":{},"displayMode":"All Charts","brand":{"name":"TechRadar","logoUrl":"https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png","sliderLogoUrl":"https://proof.vanilla.tools/media/images/brandLogos/techradar.png","colors":{"primary":"#2E6E93","secondary":"#E8238C","accent":"#FFFFFF","background":"#ffffff","text":"#1F2937","productColors":["#2E6E93","#E8238C","#5DA8D4","#F06EAF","#1A4E6B","#B81C70","#8CC3E0","#F499C9"]}},"textContent":{"title":"Overall Chart Title","subhead":"Subhead to describe the test and what's being measured and why","caption":"Side view of the Acer Googlebook 14","productNameOverrides":{},"attributeNameOverrides":{},"chartTitleOverrides":{},"xAxisLabelOverrides":{},"subheadOverrides":{},"captionOverrides":{},"unitOverrides":{},"multiValueLegendOverrides":{},"barCommentaryOverrides":{}},"dataEverLoaded":true,"showAISuggestionsButton":false,"barChartShowXAxis":true,"groupedBarChartShowProductName":false,"barChartLabelsOnTop":false,"experimentalEnablePieChart":false,"slideshowUseDropdown":false,"imageAnnotationData":{"imageUrl":"https://cdn.mos.cms.futurecdn.net/jL9H4S6mTzZQyVQPHuUkM6.jpg","nodes":[{"id":"node-1792497270266","x":46,"y":38.54,"title":"Finger print scanner","description":"The power button includes a finger print scanner for biometric login."},{"id":"node-1792497310781","x":58.49,"y":37.57,"title":"360-degree hinges","description":"The hinges allow the screen of the Acer Googlebook 14 to flip back, turning it into a tablet-like device."},{"id":"node-1792497385349","x":10.31,"y":37.57,"title":"Keyboard","description":"The keys are large and comfortable to type on."}],"fullBleed":false}},"slides":[]}123Finger print scanner

The power button includes a finger print scanner for biometric login.

360-degree hinges

The hinges allow the screen of the Acer Googlebook 14 to flip back, turning it into a tablet-like device.

Keyboard

The keys are large and comfortable to type on.

Side view of the Acer Googlebook 14Explore window.iFrameResizer = { heightCalculationMethod: 'taggedElement' }; (function() { function createChartAnimator() { return function animateChartWrapper(chartWrapper) { if (!chartWrapper) return; function animateBars(chartElement) { if (!chartElement) return; var bars = chartElement.querySelectorAll('.fv-bar, .fv-stacked-segment'); bars.forEach(function(bar, index) { bar.style.setProperty('width', '0%', 'important'); bar.style.setProperty('transition', 'none', 'important'); var targetWidth = bar.dataset.targetWidth; if (targetWidth === undefined) return; void bar.offsetWidth; var targetMargin = bar.dataset.targetMargin; var baseMargin = bar.dataset.baseMargin; if (baseMargin !== undefined) { bar.style.setProperty('margin-left', baseMargin + '%', 'important'); } setTimeout(function() { var marginTransition = baseMargin !== undefined ? ', margin-left 0.8s ease-out' : ''; bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out' + marginTransition, 'important'); bar.style.setProperty('width', targetWidth + '%', 'important'); if (targetMargin !== undefined && baseMargin !== undefined) { bar.style.setProperty('margin-left', targetMargin + '%', 'important'); } }, index * 50 + 50); }); } function animateLineChart(chartElement) { if (!chartElement) return; var lineSvg = chartElement.querySelector('svg'); if (!lineSvg) return; var paths = lineSvg.querySelectorAll('.riv-line-path'); paths.forEach(function(p, i) { if (typeof p.getTotalLength === 'function') { var len = p.getTotalLength(); p.style.transition = 'none'; p.style.strokeDasharray = len; p.style.strokeDashoffset = len; p.getBoundingClientRect(); setTimeout(function() { p.style.transition = 'stroke-dashoffset 1s ease-out ' + (i * 0.1) + 's, stroke-width 0.2s, opacity 0.2s'; p.style.strokeDashoffset = '0'; }, 100); } }); var dots = lineSvg.querySelectorAll('.riv-dot'); dots.forEach(function(dot, i) { dot.style.opacity = '0'; setTimeout(function() { dot.style.transition = 'opacity 0.3s ease'; dot.style.opacity = '1'; }, 500 + i * 10); }); } function animateDials(chartElement) { if (!chartElement) return; var needles = chartElement.querySelectorAll('.fv-dial-needle'); needles.forEach(function(needle, index) { var targetAngle = needle.dataset.targetAngle; var baseAngle = needle.dataset.baseAngle || '-132'; if (targetAngle === undefined) return; needle.style.setProperty('transition', 'none', 'important'); needle.style.setProperty('transform', 'rotate(' + baseAngle + 'deg)', 'important'); void needle.getBoundingClientRect(); setTimeout(function() { needle.style.setProperty('transition', 'transform 0.9s cubic-bezier(0.22, 1, 0.36, 1)', 'important'); needle.style.setProperty('transform', 'rotate(' + targetAngle + 'deg)', 'important'); }, index * 60 + 50); }); } var charts = chartWrapper.querySelectorAll('.fv-chart-item'); charts.forEach(function(chart) { if (window.getComputedStyle(chart).display === 'none') return; var chartType = chart.dataset.chartType; if (chartType === 'Line') { animateLineChart(chart); } else if (chartType !== 'Pie') { animateBars(chart); animateDials(chart); } }); }; } var fvLocalAnimate = createChartAnimator(); window.fvAnimateCharts = fvLocalAnimate; function initialize(uniqueId, isSlideshow) { var root = document.getElementById(uniqueId); if (!root && !isSlideshow) return; function setupWrapper(chartWrapper) { if (!chartWrapper) return; /* Responsive mobile view handling */ function checkMobileView() { var width = chartWrapper.getBoundingClientRect().width; var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599; var isMobile; if (width === 0) { isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches; } else { isMobile = isMobileDevice || width < 600; } if (isMobile) { chartWrapper.classList.add('mobile-view'); } else { chartWrapper.classList.remove('mobile-view'); } } checkMobileView(); if (typeof ResizeObserver !== 'undefined') { var ro = new ResizeObserver(function() { checkMobileView(); }); ro.observe(chartWrapper); } window.addEventListener('resize', checkMobileView); var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true'; if (labelsOnTop) { var charts = chartWrapper.querySelectorAll('.fv-chart-item'); var hasVisibleBarChart = false; charts.forEach(function(c) { if (window.getComputedStyle(c).display !== 'none') { var cType = c.dataset.chartType; if (cType === 'Bar' || cType === 'Diverging Bar' || cType === 'Stacked Bar' || cType === 'Versus') { hasVisibleBarChart = true; } } }); if (hasVisibleBarChart) { chartWrapper.classList.add('labels-on-top'); } else { chartWrapper.classList.remove('labels-on-top'); } } else { chartWrapper.classList.remove('labels-on-top'); } /* Legend interactions */ chartWrapper.querySelectorAll('.riv-line-legend').forEach(function(legend) { var chartId = legend.dataset.chart; var chart = chartWrapper.querySelector('[id="' + chartId + '"]'); if (!chart) return; var lines = chart.querySelectorAll('.riv-line-path'); var dots = chart.querySelectorAll('.riv-dot'); var legendItems = legend.querySelectorAll('.riv-legend-item'); legendItems.forEach(function(item) { var productName = item.dataset.product; var safeProductName = productName.replace(/"/g, '\\"'); var line = chart.querySelector('.riv-line-path[data-product="' + safeProductName + '"]'); var productDots = chart.querySelectorAll('.riv-dot[data-product="' + safeProductName + '"]'); if (line && !line.dataset.origStroke) { line.dataset.origStroke = line.getAttribute('stroke-width') || '2'; } var highlight = function() { if (legend.querySelector('.isolated')) return; lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); }); dots.forEach(function(d) { d.style.opacity = '0.2'; }); legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; }); if (line) { line.style.opacity = '1'; line.setAttribute('stroke-width', '4'); } productDots.forEach(function(d) { d.style.opacity = '1'; }); item.style.opacity = '1'; }; var clearHighlight = function() { if (legend.querySelector('.isolated')) return; lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); }); dots.forEach(function(d) { d.style.opacity = '1'; }); legendItems.forEach(function(i) { i.style.opacity = '1'; }); }; var toggleIsolate = function() { var isIsolated = item.classList.contains('isolated'); legendItems.forEach(function(i) { i.classList.remove('isolated'); }); if (isIsolated) { lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); }); dots.forEach(function(d) { d.style.opacity = '1'; }); legendItems.forEach(function(i) { i.style.opacity = '1'; }); } else { item.classList.add('isolated'); lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); }); dots.forEach(function(d) { d.style.opacity = '0.2'; }); legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; }); if (line) { line.style.opacity = '1'; line.setAttribute('stroke-width', '4'); } productDots.forEach(function(d) { d.style.opacity = '1'; }); item.style.opacity = '1'; } }; item.addEventListener('mouseenter', highlight); item.addEventListener('focus', highlight); item.addEventListener('mouseleave', clearHighlight); item.addEventListener('blur', clearHighlight); item.addEventListener('click', toggleIsolate); if (line) { line.style.cursor = 'pointer'; line.addEventListener('mouseenter', highlight); line.addEventListener('mouseleave', clearHighlight); line.addEventListener('click', toggleIsolate); } }); }); /* Versus Chart Logic */ var versusCharts = chartWrapper.querySelectorAll('.fv-versus-chart'); versusCharts.forEach(function(vc) { var dataJson = vc.getAttribute('data-versus-data'); var leftColor = vc.getAttribute('data-left-color') || '#E53935'; var rightColor = vc.getAttribute('data-right-color') || '#FFB300'; if (!dataJson) return; var versusData = JSON.parse(dataJson); var leftSelect = vc.querySelector('.fv-select-left'); var rightSelect = vc.querySelector('.fv-select-right'); var rows = vc.querySelectorAll('.fv-versus-row'); function updateVersusChart() { var leftProduct = leftSelect.value; var rightProduct = rightSelect.value; leftSelect.style.color = leftColor; leftSelect.style.borderColor = leftColor; rightSelect.style.color = rightColor; rightSelect.style.borderColor = rightColor; rows.forEach(function(row) { var index = parseInt(row.getAttribute('data-index')); var data = versusData[index]; if (!data) return; var leftVal = data.productData[leftProduct] ? data.productData[leftProduct].value : undefined; var rightVal = data.productData[rightProduct] ? data.productData[rightProduct].value : undefined; var leftIsNum = typeof leftVal === 'number'; var rightIsNum = typeof rightVal === 'number'; var leftNum = leftIsNum ? leftVal : 0; var rightNum = rightIsNum ? rightVal : 0; var maxVal = Math.max(leftNum, rightNum, 0.0001); var leftWidth = leftIsNum ? (leftNum / maxVal) * 95 : 0; var rightWidth = rightIsNum ? (rightNum / maxVal) * 85 : 0; var winner = null; var pctDiffStr = null; if (leftIsNum && rightIsNum) { if (leftNum > rightNum) { winner = 'left'; if (rightNum > 0) { var diff = Math.round(((leftNum - rightNum) / rightNum) * 100); pctDiffStr = '+' + diff.toLocaleString() + '%'; } } else if (rightNum > leftNum) { winner = 'right'; if (leftNum > 0) { var diff = Math.round(((rightNum - leftNum) / leftNum) * 100); pctDiffStr = '+' + diff.toLocaleString() + '%'; } } } var leftDisplay = data.productData[leftProduct] && data.productData[leftProduct].displayValue !== undefined ? data.productData[leftProduct].displayValue : (leftIsNum ? leftNum.toLocaleString() : (leftVal !== undefined ? leftVal : '-')); var rightDisplay = data.productData[rightProduct] && data.productData[rightProduct].displayValue !== undefined ? data.productData[rightProduct].displayValue : (rightIsNum ? rightNum.toLocaleString() : (rightVal !== undefined ? rightVal : '-')); var unit = (data.productData[leftProduct] && data.productData[leftProduct].unit) || (data.productData[rightProduct] && data.productData[rightProduct].unit) || ''; var leftTextStr = leftDisplay; var rightTextStr = rightDisplay; var leftBar = row.querySelector('.fv-versus-bar-left'); var rightBar = row.querySelector('.fv-versus-bar-right'); var leftText = row.querySelector('.fv-inside-left'); var rightText = row.querySelector('.fv-inside-right'); var labelText = row.querySelector('.fv-versus-label span'); var existingPctDiffs = row.querySelectorAll('.fv-versus-pct-diff'); existingPctDiffs.forEach(function(el) { el.remove(); }); if (winner === 'left' && pctDiffStr) { var pctSpan = document.createElement('span'); pctSpan.className = 'fv-versus-pct-diff'; pctSpan.style.color = 'rgba(255, 255, 255, 0.9)'; pctSpan.textContent = pctDiffStr; if (leftBar) leftBar.insertBefore(pctSpan, leftBar.firstChild); } else if (winner === 'right' && pctDiffStr) { var pctSpan = document.createElement('span'); pctSpan.className = 'fv-versus-pct-diff'; pctSpan.style.color = 'rgba(255, 255, 255, 0.9)'; pctSpan.textContent = pctDiffStr; if (rightBar) rightBar.appendChild(pctSpan); } if (leftBar) { leftBar.style.backgroundColor = leftColor; leftBar.dataset.targetWidth = leftWidth; leftBar.style.setProperty('--target-width', leftWidth + '%'); leftBar.style.width = leftWidth + '%'; } if (rightBar) { rightBar.style.backgroundColor = rightColor; rightBar.dataset.targetWidth = rightWidth; rightBar.style.setProperty('--target-width', rightWidth + '%'); rightBar.style.width = rightWidth + '%'; } if (leftText) { leftText.innerHTML = leftTextStr; } if (rightText) { rightText.innerHTML = rightTextStr; } if (labelText) { labelText.textContent = data.attribute + (unit ? ' (' + unit + ')' : ''); } }); } if (leftSelect) leftSelect.addEventListener('change', updateVersusChart); if (rightSelect) rightSelect.addEventListener('change', updateVersusChart); }); /* Bar Commentary Hover Logic */ var barRows = chartWrapper.querySelectorAll('.fv-bar-row'); var globalCaptionEl = chartWrapper.querySelector('.rv-chart-caption'); var fallbackCaptionHtml = globalCaptionEl ? globalCaptionEl.innerHTML : ''; barRows.forEach(function(row) { var commentaryEl = row.querySelector('[data-commentary-key]'); if (commentaryEl) { var commentaryText = commentaryEl.textContent; if (commentaryText && commentaryText.trim().length > 0) { row.addEventListener('mouseenter', function() { if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) { globalCaptionEl.innerHTML = commentaryText; globalCaptionEl.classList.add('fv-bar-active-caption'); } }); row.addEventListener('mouseleave', function() { if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) { globalCaptionEl.innerHTML = fallbackCaptionHtml; globalCaptionEl.classList.remove('fv-bar-active-caption'); } }); } } }); /* Carousel & Dropdown Logic */ var charts = chartWrapper.querySelectorAll('.fv-chart-item'); var dropdown = chartWrapper.querySelector('.fv-dropdown-title'); var prevBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.prev'); var nextBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.next'); var carouselTitle = chartWrapper.querySelector('.fv-carousel-title-controls .fv-benchmark-title'); var counter = chartWrapper.querySelector('.fv-carousel-counter'); var subheadEl = chartWrapper.querySelector('.fv-chart-subhead'); var captionEl = chartWrapper.querySelector('.rv-chart-caption'); var footerContentEl = chartWrapper.querySelector('.fv-footer-content'); var bottomBarEl = chartWrapper.querySelector('.fv-bottom-bar'); var logoEl = chartWrapper.querySelector('.fv-logo'); if (charts.length > 1 && (dropdown || prevBtn)) { var currentChartIndex = 0; var titles = []; if (dropdown) { titles = Array.from(dropdown.options).map(function(o) { return o.text; }); } else { charts.forEach(function(c) { titles.push(c.getAttribute('data-title') || ''); }); } function showInternalChart(index) { if (index < 0) index = charts.length - 1; if (index >= charts.length) index = 0; currentChartIndex = index; charts.forEach(function(c, i) { c.style.display = i === index ? 'block' : 'none'; if (i === index) { var cType = c.dataset.chartType; if (cType !== 'Pie') { fvLocalAnimate(chartWrapper); } var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true'; if (labelsOnTop && (cType === 'Bar' || cType === 'Diverging Bar' || cType === 'Stacked Bar' || cType === 'Versus')) { chartWrapper.classList.add('labels-on-top'); } else { chartWrapper.classList.remove('labels-on-top'); } } }); if (dropdown) dropdown.value = index; if (carouselTitle && titles[index]) carouselTitle.textContent = titles[index]; if (counter) counter.textContent = (index + 1) + ' of ' + charts.length; var activeChart = charts[index]; if (activeChart) { var newSubhead = activeChart.getAttribute('data-subhead'); var newCaption = activeChart.getAttribute('data-caption'); var currentChartType = activeChart.getAttribute('data-chart-type'); var hideGlobalCaption = currentChartType === 'Countdown' || currentChartType === 'Image Comparison' || currentChartType === 'Shop the Collection'; if (subheadEl) subheadEl.textContent = newSubhead || ''; if (captionEl) { captionEl.textContent = newCaption || ''; fallbackCaptionHtml = newCaption || ''; } if (footerContentEl) { if (newCaption && newCaption.trim().length > 0 && !hideGlobalCaption) { footerContentEl.style.display = 'block'; if (bottomBarEl) bottomBarEl.style.display = 'flex'; } else { footerContentEl.style.display = 'none'; if (bottomBarEl && !logoEl) { bottomBarEl.style.display = 'none'; } } } } } if (dropdown) dropdown.addEventListener('change', function(e) { showInternalChart(parseInt(e.target.value)); }); if (prevBtn) prevBtn.addEventListener('click', function() { showInternalChart(currentChartIndex - 1); }); if (nextBtn) nextBtn.addEventListener('click', function() { showInternalChart(currentChartIndex + 1); }); } /* Image Comparison Logic */ var imageCompareWrappers = chartWrapper.querySelectorAll('.fv-image-compare-wrapper'); imageCompareWrappers.forEach(function(wrapper) { var inner = wrapper.querySelector('.fv-image-compare-inner') || wrapper; var slider = wrapper.querySelector('.fv-image-compare-slider'); var fgImage = wrapper.querySelector('.fv-image-compare-fg'); var bgImage = wrapper.querySelector('.fv-image-compare-bg'); var labelLeft = wrapper.querySelector('.fv-image-compare-label-left'); var labelRight = wrapper.querySelector('.fv-image-compare-label-right'); var isDragging = false; var scale = 1; var panX = 0; var panY = 0; var isPanning = false; var hasPanned = false; var lastClientX = 0; var lastClientY = 0; var initialDistance = null; var lastCenterX = null; var lastCenterY = null; function updateTransform() { if (wrapper.classList.contains('fv-image-compare-fullscreen')) { inner.style.setProperty('transform', 'translate(' + panX + 'px, ' + panY + 'px) scale(' + scale + ')', 'important'); } else { inner.style.removeProperty('transform'); scale = 1; panX = 0; panY = 0; } } function constrainPan() { var rect = wrapper.getBoundingClientRect(); var maxPanX = Math.max(0, (rect.width * scale - rect.width) / 2); var maxPanY = Math.max(0, (rect.height * scale - rect.height) / 2); panX = Math.max(-maxPanX, Math.min(panX, maxPanX)); panY = Math.max(-maxPanY, Math.min(panY, maxPanY)); } wrapper.addEventListener('wheel', function(e) { if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return; e.preventDefault(); var zoomSensitivity = 0.005; var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity); var newScale = Math.max(1, Math.min(scale * zoomFactor, 5)); if (newScale === scale) return; var rect = wrapper.getBoundingClientRect(); var mouseX = e.clientX - rect.left - rect.width / 2; var mouseY = e.clientY - rect.top - rect.height / 2; var ratio = newScale / scale; panX = mouseX - (mouseX - panX) * ratio; panY = mouseY - (mouseY - panY) * ratio; scale = newScale; constrainPan(); updateTransform(); }, { passive: false }); wrapper.addEventListener('mousedown', function(e) { if (!wrapper.classList.contains('fv-image-compare-fullscreen') || scale <= 1) return; if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return; isPanning = true; hasPanned = false; lastClientX = e.clientX; lastClientY = e.clientY; }); window.addEventListener('mousemove', function(e) { if (!isPanning) return; var dx = e.clientX - lastClientX; var dy = e.clientY - lastClientY; if (Math.abs(dx) > 2 || Math.abs(dy) > 2) { hasPanned = true; } lastClientX = e.clientX; lastClientY = e.clientY; panX += dx; panY += dy; constrainPan(); updateTransform(); }); window.addEventListener('mouseup', function() { isPanning = false; }); wrapper.addEventListener('touchstart', function(e) { if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return; if (e.touches.length === 2) { e.preventDefault(); var dx = e.touches[0].clientX - e.touches[1].clientX; var dy = e.touches[0].clientY - e.touches[1].clientY; initialDistance = Math.sqrt(dx * dx + dy * dy); var rect = wrapper.getBoundingClientRect(); lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2; lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2; hasPanned = true; } else if (e.touches.length === 1 && scale > 1) { if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return; isPanning = true; hasPanned = false; lastClientX = e.touches[0].clientX; lastClientY = e.touches[0].clientY; } }, { passive: false }); wrapper.addEventListener('touchmove', function(e) { if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return; if (e.touches.length === 2 && initialDistance !== null) { e.preventDefault(); var dx = e.touches[0].clientX - e.touches[1].clientX; var dy = e.touches[0].clientY - e.touches[1].clientY; var distance = Math.sqrt(dx * dx + dy * dy); if (initialDistance > 0) { var zoomFactor = distance / initialDistance; var newScale = Math.max(1, Math.min(scale * zoomFactor, 5)); var rect = wrapper.getBoundingClientRect(); var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2; var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2; var ratio = newScale / scale; panX = centerX - (centerX - panX) * ratio; panY = centerY - (centerY - panY) * ratio; if (lastCenterX !== null && lastCenterY !== null) { panX += (centerX - lastCenterX); panY += (centerY - lastCenterY); } scale = newScale; lastCenterX = centerX; lastCenterY = centerY; constrainPan(); updateTransform(); } initialDistance = distance; } else if (e.touches.length === 1 && isPanning) { e.preventDefault(); var dx = e.touches[0].clientX - lastClientX; var dy = e.touches[0].clientY - lastClientY; if (Math.abs(dx) > 2 || Math.abs(dy) > 2) { hasPanned = true; } lastClientX = e.touches[0].clientX; lastClientY = e.touches[0].clientY; panX += dx; panY += dy; constrainPan(); updateTransform(); } }, { passive: false }); wrapper.addEventListener('touchend', function(e) { if (e.touches.length < 2) { initialDistance = null; } if (e.touches.length === 0) { isPanning = false; } }); function handleMove(clientX) { var rect = inner.getBoundingClientRect(); var x = Math.max(0, Math.min(clientX - rect.left, rect.width)); var percent = Math.max(0, Math.min((x / rect.width) * 100, 100)); if (slider) slider.style.setProperty('left', percent + '%', 'important'); if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important'); if (labelLeft) { if (percent < 10) { labelLeft.style.setProperty('opacity', '0', 'important'); } else { labelLeft.style.setProperty('opacity', '1', 'important'); } } if (labelRight) { if (percent > 90) { labelRight.style.setProperty('opacity', '0', 'important'); } else { labelRight.style.setProperty('opacity', '1', 'important'); } } } function onMouseMove(e) { if (!isDragging) return; handleMove(e.clientX); } function onTouchMove(e) { if (!isDragging) return; e.preventDefault(); handleMove(e.touches[0].clientX); } function stopDragging() { isDragging = false; window.removeEventListener('mousemove', onMouseMove); window.removeEventListener('mouseup', stopDragging); window.removeEventListener('touchmove', onTouchMove); window.removeEventListener('touchend', stopDragging); } if (slider) { var startDrag = function(clientX) { isDragging = true; handleMove(clientX); window.addEventListener('mousemove', onMouseMove); window.addEventListener('mouseup', stopDragging); }; var startTouchDrag = function(clientX) { isDragging = true; handleMove(clientX); window.addEventListener('touchmove', onTouchMove, { passive: false }); window.addEventListener('touchend', stopDragging); }; slider.addEventListener('mousedown', function(e) { e.preventDefault(); startDrag(e.clientX); }); slider.addEventListener('touchstart', function(e) { e.preventDefault(); startTouchDrag(e.touches[0].clientX); }, { passive: false }); } var expandBtn = wrapper.querySelector('.fv-image-compare-expand-btn'); var closeBtn = wrapper.querySelector('.fv-image-compare-close-btn'); if (expandBtn) { if (window !== window.parent) { expandBtn.style.display = 'none'; } else { expandBtn.addEventListener('click', function(e) { e.stopPropagation(); wrapper.classList.add('fv-image-compare-fullscreen'); document.body.style.overflow = 'hidden'; if (fgImage && fgImage.dataset.highresSrc) { fgImage.src = fgImage.dataset.highresSrc; fgImage.removeAttribute('srcset'); fgImage.removeAttribute('sizes'); } if (bgImage && bgImage.dataset.highresSrc) { bgImage.src = bgImage.dataset.highresSrc; bgImage.removeAttribute('srcset'); bgImage.removeAttribute('sizes'); } }); } } if (closeBtn) { closeBtn.addEventListener('click', function(e) { e.stopPropagation(); wrapper.classList.remove('fv-image-compare-fullscreen'); document.body.style.overflow = ''; updateTransform(); }); } document.addEventListener('keydown', function(e) { if (e.key === 'Escape' && wrapper.classList.contains('fv-image-compare-fullscreen')) { wrapper.classList.remove('fv-image-compare-fullscreen'); document.body.style.overflow = ''; updateTransform(); } }); }); /* Shop The Look Hotspots */ var hotspots = chartWrapper.querySelectorAll('.fv-stl-hotspot-btn'); var allProductsModal = chartWrapper.querySelector('.fv-stl-all-products-modal'); var shopAllBtn = chartWrapper.querySelector('.fv-stl-shop-all-btn'); var stlContainer = chartWrapper.querySelector('.fv-stl-container'); function closeAllModals() { if (allProductsModal) { allProductsModal.classList.remove('is-active'); var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item'); items.forEach(function(item) { item.classList.remove('is-highlighted'); }); if (stlContainer) { setTimeout(function() { if (!allProductsModal.classList.contains('is-active')) { stlContainer.style.minHeight = ''; if ('parentIFrame' in window) { window.parentIFrame.size(); } } }, 300); } } hotspots.forEach(function(btn) { btn.setAttribute('aria-expanded', 'false'); }); if ('parentIFrame' in window) { window.parentIFrame.size(); } } hotspots.forEach(function(btn) { btn.addEventListener('click', function(e) { e.stopPropagation(); var hotspotId = btn.getAttribute('data-hotspot-id'); var isExpanded = btn.getAttribute('aria-expanded') === 'true'; closeAllModals(); if (!isExpanded && allProductsModal) { btn.setAttribute('aria-expanded', 'true'); allProductsModal.classList.add('is-active'); var container = btn.closest('.fv-stl-container'); if (container && container.offsetHeight < 450) { container.style.minHeight = '450px'; } var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]'); if (targetItem) { targetItem.classList.add('is-highlighted'); setTimeout(function() { targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' }); }, 100); } if ('parentIFrame' in window) { window.parentIFrame.size(); } } }); }); if (shopAllBtn && allProductsModal) { shopAllBtn.addEventListener('click', function(e) { e.stopPropagation(); closeAllModals(); allProductsModal.classList.add('is-active'); var container = shopAllBtn.closest('.fv-stl-container'); if (container && container.offsetHeight < 450) { container.style.minHeight = '450px'; } if ('parentIFrame' in window) { window.parentIFrame.size(); } }); } if (allProductsModal) { var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close'); if (closeAllBtn) { closeAllBtn.addEventListener('click', function(e) { e.stopPropagation(); closeAllModals(); }); } } chartWrapper.addEventListener('click', function(e) { if (!e.target.closest('.fv-stl-all-products-content')) { closeAllModals(); } }); if (allProductsModal) { allProductsModal.addEventListener('click', function(e) { if (!e.target.closest('.fv-stl-all-products-content')) { closeAllModals(); } }); } /* Image Annotation Logic */ var iaNodes = chartWrapper.querySelectorAll('.fv-ia-node-button'); var iaWrapper = chartWrapper.querySelector('.fv-ia-wrapper'); var originalCaption = chartWrapper.querySelector('.fv-original-caption') || captionEl; var dynamicCaption = chartWrapper.querySelector('.fv-ia-dynamic-caption'); var exploreBtn = chartWrapper.querySelector('.fv-ia-explore-btn'); var currentIaIndex = -1; function closeAllIANodes() { iaNodes.forEach(function(btn) { btn.classList.remove('is-active'); }); if (originalCaption) originalCaption.style.display = 'block'; if (dynamicCaption) dynamicCaption.style.display = 'none'; } function resetExploreBtn() { currentIaIndex = -1; if (exploreBtn) { var exploreSpan = exploreBtn.querySelector('span'); if (exploreSpan) exploreSpan.textContent = 'Explore'; } } iaNodes.forEach(function(btn, index) { btn.addEventListener('click', function(e) { e.stopPropagation(); var isActive = btn.classList.contains('is-active'); closeAllIANodes(); if (!isActive) { currentIaIndex = index; if (exploreBtn) { var exploreSpan = exploreBtn.querySelector('span'); if (exploreSpan) exploreSpan.textContent = 'Next'; } btn.classList.add('is-active'); if (dynamicCaption) { var title = btn.getAttribute('data-title') || ''; var desc = btn.getAttribute('data-desc') || ''; dynamicCaption.innerHTML = ''; var strongTag = document.createElement('strong'); strongTag.textContent = title; dynamicCaption.appendChild(strongTag); if (desc) { dynamicCaption.appendChild(document.createTextNode(' - ' + desc)); } if (originalCaption) originalCaption.style.display = 'none'; dynamicCaption.style.display = 'block'; if (footerContentEl) footerContentEl.style.display = 'block'; } } else { resetExploreBtn(); } }); }); if (exploreBtn) { exploreBtn.addEventListener('click', function(e) { e.stopPropagation(); if (iaNodes.length === 0) return; var nextIndex = currentIaIndex + 1; if (nextIndex >= iaNodes.length) { closeAllIANodes(); resetExploreBtn(); } else { currentIaIndex = nextIndex; var targetBtn = iaNodes[currentIaIndex]; if (targetBtn) { if (targetBtn.classList.contains('is-active')) { targetBtn.click(); } targetBtn.click(); } } }); } if (iaWrapper) { iaWrapper.addEventListener('click', function(e) { if (!e.target.closest('.fv-ia-node-button') && !e.target.closest('.fv-ia-explore-btn')) { closeAllIANodes(); resetExploreBtn(); } }); } /* Initial Animation */ chartWrapper._fvAnimate = fvLocalAnimate; fvLocalAnimate(chartWrapper); /* Countdown Logic */ var countdownContainer = chartWrapper.querySelector('.fv-countdown-container'); if (countdownContainer) { var targetDateAttr = countdownContainer.getAttribute('data-target-date'); if (targetDateAttr) { var targetDate = new Date(targetDateAttr); var pad = function(n) { return (n < 10 ? '0' : '') + n; }; var updateCountdown = function() { var difference = +targetDate - +new Date(); var d = 0, h = 0, m = 0, s = 0; if (difference > 0) { d = Math.floor(difference / (1000 * 60 * 60 * 24)); h = Math.floor((difference / (1000 * 60 * 60)) % 24); m = Math.floor((difference / 1000 / 60) % 60); s = Math.floor((difference / 1000) % 60); } var daysEl = countdownContainer.querySelector('[data-time="days"]'); var hoursEl = countdownContainer.querySelector('[data-time="hours"]'); var minsEl = countdownContainer.querySelector('[data-time="minutes"]'); var secsEl = countdownContainer.querySelector('[data-time="seconds"]'); if (daysEl) daysEl.textContent = d; if (hoursEl) hoursEl.textContent = pad(h); if (minsEl) minsEl.textContent = pad(m); if (secsEl) secsEl.textContent = pad(s); }; updateCountdown(); setInterval(updateCountdown, 1000); } } } if (false) { var slideshowContainer = document.getElementById(uniqueId + '-slideshow'); if (slideshowContainer) { var slides = slideshowContainer.querySelectorAll('.fv-slide'); slides.forEach(function(slide) { setupWrapper(slide.querySelector('.fv-chart-wrapper')); }); } } else { setupWrapper(root); } } if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1792497446111-yjxgplq1g', false); }); } else { initialize('fv-chart-1792497446111-yjxgplq1g', false); } })();

It’s the second lightest Googlebook, only beaten by the Asus Googlebook 14, which weighs in at just 2.2 lbs (1 kg). The body of the laptop uses a magnesium-aluminium alloy, which feels robust without being too heavy, so while the Acer Googlebook 14 feels thin and light, it also feels durable. You certainly wouldn’t feel worried about damaging it when taking it out and about with you.

While it’s not the lightest laptop I’ve ever tested, it feels comfortable to hold in one hand, and shouldn’t hurt your back if you’re carrying it around. The thin design does come with some drawbacks, namely with the port selection — you just get three USB-C ports and an audio jack. One of the USB-C ports is Thunderbolt 4, while the other two are slower USB 3.2 Gen 2 ports, so that means you’ll want to pay attention to which port you plug things into, especially if transfer speeds are particularly important.

To Acer’s credit, three USB-C ports are an improvement on the two ports a lot of similarly-priced thin and light laptops offer (such as the aforementioned MacBook Air, though both those USB-C ports are Thunderbolt 4). If you need to charge the Acer Googlebook 14, however, one of those USB-C ports will need to be sacrificed.

The screen is a 14-inch OLED touchscreen with a sharp resolution of 2880 x 1800 and an aspect ratio of 16:10 (so it’s a little taller than standard widescreen displays). It looks fantastic, and really helps give the Acer Googlebook 14 a premium feel. As a touchscreen, it’s nice and responsive, and it also means that when using Android apps (which you can install directly onto the Acer Googlebook 14) designed to be used with a touchscreen, they work really well. The bezels on either side of the screen are nice and thin, which gives the Acer Googlebook 14 a modern feel, while also maximizing screen size without making the laptop too bulky.

FutureFutureFutureFutureFutureFuture

At the top of the screen is a 5MP webcam with a physical privacy shutter that you can slide to turn off the camera, which is a reassuring feature. The keyboard feels nice and responsive, with a decent travel for each key when pressed. The keys are well spaced, so when typing quickly you can still accurately hit the keys you want. They are also backlit, so using the Acer Googlebook 14 in darker environments isn’t an issue.

There’s also a biometric fingerprint scanner included in the top-right corner of the keyboard for logging in quickly and securely. It works well, though it doesn’t feel quite as quick as the Touch ID button on modern MacBooks.

The Acer Googlebook 14 features a large glass touchpad that takes up around a third of the space below the keyboard, and it responds well to gestures.

On the back of the laptop lid is an understated Acer logo, along with the ‘Glowbar’, which is a thin horizontal line that lights up and changes color depending on what you’re using the Googlebook for. The Glowbar appears on all Googlebooks, though its placement on the lid varies (on the Acer Googlebook 14, it’s located in the corner opposite Acer’s logo).

(Image credit: Future)

When you plug in the Googlebook, the bar can display the battery level, and it flashes different colors when using the built-in Gemini AI helper. It adds a bit of interesting color to what would otherwise be a rather plain dark rectangle, and while I like the idea of the Glowbar showing the battery level when it charges, it only does so briefly. Also, when using the Acer Googlebook 14, the screen will be open, which means the Glowbar is facing away from the user, so I’m not quite convinced how useful this feature will be (this is an issue with all Googlebooks, not just Acer’s).

What really makes the Acer Googlebook 14 stand apart from the other Googlebooks it launched alongside is that it’s the only one that has a 2-in-1 form factor. Not only can it be used as a traditional laptop, but the screen can be folded back, turning it into a tablet-like device. Because Googlebook OS can run Android apps, both natively and streamed from your Android smartphone, this could be a big selling point for the Acer Googlebook 14. Thanks to the thin design, the Acer Googlebook 14 doesn’t feel too chunky when used in tablet mode, though it’s thicker and heavier than a regular Android tablet.

Android apps I tried on the Acer Googlebook 14 looked fantastic thanks to the OLED screen, with Netflix and Instagram adjusting themselves quickly depending on if I was holding the screen vertically or horizontally. Google Chrome, the default web browser, also worked well, and holding the Acer Googlebook 14 vertically meant I could read webpages with a lot less scrolling.

There is a slightly strange issue, however. While all the apps I tried did indeed change their orientation depending on how I held the Acer Googlebook 14, the desktop screen didn’t change — it stayed in its landscape orientation, and that meant launching apps either from the desktop or the App Drawer (essentially, Googlebook OS’ answer to Windows’ Start menu, and will be familiar to most Android users) was rather clunky — you either had to rotate the Acer Googlebook 14 back into landscape mode to comfortably launch an app, or just try to launch it with the user interface at the wrong angle.

It's a weird omission — Windows 11 has no issue with rotating its entire interface when you rotate the screen it’s on, and I had been expecting Googlebook OS to do the same. I mentioned this to Acer, and it shared the following:

"Acer Googlebook 14 is the first convertible device to run the new Googlebook OS. For the initial launch, Google has chosen to lock the app tray/taskbar in landscape orientation, as its usage data for convertible devices indicates that landscape is the most commonly used orientation. For additional information and support, please refer to the Google Help Center”

This is a bit of an odd decision by Google — sure, there’s only one 2-in-1 Googlebook at the moment, but that’s still 25% of the currently available Googlebook market. Hopefully this changes soon, as it does make the Acer Googlebook 14’s major selling point less enticing. If I were Acer, I wouldn’t be too thrilled about that.

The 2-in-1 abilities of the Acer Googlebook 14 are thanks to the robust 360-degree hinges that hold the two halves of the laptop together, and they feel sturdy and secure. I have no concerns about these handling thousands of openings and closings throughout the lifespan of the device.

Acer Googlebook 14 review: Specs

Acer Googlebook 14 review configuration

Acer Googlebook 14 max configuration

Operating System

Googlebook OS

Googlebook OS

Processor

Intel Core Ultra 5 processor 325

Intel Core Ultra 7 processor 355

Graphics

Intel Graphics

Intel Graphics

Display

14-inch OLED WQXGA+ (2880 × 1800), 16:10 touch display; Corning Gorilla Glass; 500 nits; 100% DCI-P3; VESA Certified DisplayHDR True Black; EyeSafe 2.0; USI 2.0 Stylus ready

14-inch OLED WQXGA+ (2880 × 1800), 16:10 touch display; Corning Gorilla Glass; 500 nits; 100% DCI-P3; VESA Certified DisplayHDR True Black; EyeSafe 2.0; USI 2.0 Stylus ready

Memory

16 GB LPDDR5X

32 GB LPDDR5X

Storage

512 GB PCIe Gen 4 NVMe SSD

512 GB PCIe Gen 4 NVMe SSD

Battery Life

71 Wh 4-cell Li-ion; Fast-charging capability

71 Wh 4-cell Li-ion; Fast-charging capability

Ports

1× Thunderbolt 4; 2× USB 3.2 Gen 2 Type-C (10 Gbps, DisplayPort, Power Delivery); 3.5 mm audio jack

1× Thunderbolt 4; 2× USB 3.2 Gen 2 Type-C (10 Gbps, DisplayPort, Power Delivery); 3.5 mm audio jack

Audio & Camera

DTS Audio with dual upward-facing Acer Ultra Boost Stereo speakers; triple digital microphone array; 5 MP webcam with privacy shutter

DTS Audio with dual upward-facing Acer Ultra Boost Stereo speakers; triple digital microphone array; 5 MP webcam with privacy shutter

Wireless

Wi-Fi 7; Bluetooth 6.0

Wi-Fi 7; Bluetooth 6.0

Dimensions & Weight

312 (W) × 222.9 (D) × 13.9 (H) mm; 1.14 kg (2.51 lbs)

312 (W) × 222.9 (D) × 13.9 (H) mm; 1.14 kg (2.51 lbs)

Acer Googlebook 14 review: Performance
  • Feels fast
  • Screen looks great
  • Googlebook OS needs work

Google has been keen to highlight that Googlebooks, like the Acer Googlebook 14, are not simply fancy Chromebooks, but an entirely new product category, and I have to say, from my initial impressions, the Acer Googlebook 14 and its fellow Googlebooks are certainly ambitious. The hardware is excellent, and the model Acer sent me to review features a cutting-edge Intel Core Ultra 5 325 processor and 16GB of LPDDR5X memory, plus a 512GB SSD.

That’s the kind of spec that would do well in a Windows 11 laptop, and Googlebook OS is supposed to be far more lightweight (being partially built on Android), so performance should be even better.

It certainly feels fast and responsive when opening apps and browsing the internet. Finding and installing apps via the Play Store is quick and easy, and familiar to anyone who’s used an Android device. Apps and games that have interfaces designed for desktop use (rather than simply being the Android mobile app in a window) have been tagged, so you should know if an app will work particularly well with the Acer Googlebook 14, which is a nice touch.

@import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap'); @import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap'); #fv-chart-1792486551861-y8k2kt4bk *, #fv-chart-1792486551861-y8k2kt4bk *:before, #fv-chart-1792486551861-y8k2kt4bk *:after, #fv-chart-1792486551861-y8k2kt4bk-slideshow *, #fv-chart-1792486551861-y8k2kt4bk-slideshow *:before, #fv-chart-1792486551861-y8k2kt4bk-slideshow *:after { box-sizing: border-box !important; margin: 0; padding: 0; border: 0; font-size: 100%; font: inherit; vertical-align: baseline; } #fv-chart-1792486551861-y8k2kt4bk, #fv-chart-1792486551861-y8k2kt4bk-slideshow { font-family: 'Open Sans', sans-serif !important; } #fv-chart-1792486551861-y8k2kt4bk { position: relative !important; overflow: visible !important; --riv-primary: #2E6E93; } #fv-chart-1792486551861-y8k2kt4bk .fv-inner-wrapper { color: #1F2937 !important; background-color: #ffffff !important; padding: 1.5rem 1.5rem 2rem !important; border-radius: 0.5rem !important; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1) !important; margin: 1rem 0 !important; display: flex !important; flex-direction: column !important; overflow: hidden !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-inner-wrapper.fv-no-header.fv-is-image-compare { padding-top: 0 !important; } #fv-chart-1792486551861-y8k2kt4bk.fv-full-bleed { width: 100vw !important; margin-left: calc(50% - 50vw) !important; } body { overflow-x: clip !important; } #fv-chart-1792486551861-y8k2kt4bk.fv-full-bleed .fv-inner-wrapper { padding: 0 !important; border-radius: 0 !important; box-shadow: none !important; margin: 0 !important; background-color: transparent !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-inner-wrapper.fv-is-shop-the-look { padding: 0 !important; border-radius: 0 !important; box-shadow: none !important; margin: 0 !important; background-color: transparent !important; } #fv-chart-1792486551861-y8k2kt4bk-slideshow { position: relative !important; width: 100% !important; margin: 1rem 0 !important; --riv-primary: #2E6E93; } #fv-chart-1792486551861-y8k2kt4bk-slideshow .fv-slides-wrapper { position: relative !important; width: 100% !important; } #fv-chart-1792486551861-y8k2kt4bk-slideshow .fv-slide { width: 100% !important; animation: fv-fade-in 0.3s ease-in-out; } #fv-chart-1792486551861-y8k2kt4bk-slideshow .fv-slideshow-nav-row { position: relative !important; display: flex !important; justify-content: space-between !important; align-items: center !important; padding: 0 0 16px 0 !important; width: 100% !important; z-index: 20 !important; } #fv-chart-1792486551861-y8k2kt4bk-slideshow .fv-nav-btn { background-color: var(--riv-primary) !important; color: #ffffff !important; border: none !important; border-radius: 4px !important; padding: 8px 16px !important; font-size: 14px !important; font-weight: 700 !important; cursor: pointer !important; display: flex !important; align-items: center !important; justify-content: center !important; gap: 6px !important; transition: opacity 0.2s, background-color 0.2s !important; height: 36px !important; text-transform: none !important; box-shadow: 0 1px 2px rgba(0,0,0,0.1) !important; } #fv-chart-1792486551861-y8k2kt4bk-slideshow .fv-nav-btn svg { width: 18px !important; height: 18px !important; stroke-width: 3px !important; filter: none !important; } #fv-chart-1792486551861-y8k2kt4bk-slideshow .fv-nav-btn:hover { opacity: 0.9 !important; transform: translateY(-1px) !important; } #fv-chart-1792486551861-y8k2kt4bk-slideshow .fv-nav-btn.disabled, #fv-chart-1792486551861-y8k2kt4bk-slideshow .fv-nav-btn:disabled { background-color: #E5E7EB !important; color: #9CA3AF !important; cursor: default !important; pointer-events: none !important; box-shadow: none !important; } #fv-chart-1792486551861-y8k2kt4bk-slideshow .fv-slide-counter { font-family: 'Poppins', sans-serif !important; font-size: 14px !important; font-weight: 600 !important; color: #374151 !important; text-align: center !important; min-width: 40px !important; background-color: rgba(255,255,255,0.8) !important; padding: 2px 8px !important; border-radius: 10px !important; user-select: none !important; } #fv-chart-1792486551861-y8k2kt4bk-slideshow .fv-slideshow-select { position: absolute !important; top: 10px !important; right: 10px !important; z-index: 20 !important; appearance: none !important; -webkit-appearance: none !important; -moz-appearance: none !important; background-color: white !important; border: 1px solid #d1d5db !important; color: #1F2937 !important; font-family: 'Open Sans', sans-serif !important; font-size: 14px !important; font-weight: 600 !important; padding: 6px 32px 6px 12px !important; border-radius: 4px !important; cursor: pointer !important; box-shadow: 0 1px 2px rgba(0,0,0,0.05) !important; background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e") !important; background-position: right 0.5rem center !important; background-repeat: no-repeat !important; background-size: 1.5em 1.5em !important; } #fv-chart-1792486551861-y8k2kt4bk-slideshow .fv-slideshow-select:focus { outline: 2px solid #2E6E93 !important; border-color: #2E6E93 !important; } @keyframes fv-fade-in { from { opacity: 0; } to { opacity: 1; } } #fv-chart-1792486551861-y8k2kt4bk .fv-chart-title { font-weight: bold !important; text-align: center !important; margin-bottom: 0.5rem !important; color: var(--riv-primary) !important; font-size: 20px !important; line-height: 1.2 !important; font-family: 'Open Sans', sans-serif !important; text-transform: none !important; white-space: normal !important; overflow-wrap: break-word !important; padding: 0 20px !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-chart-subhead { font-size: 18px !important; font-weight: 500 !important; text-align: center !important; margin-bottom: 2rem !important; color: #374151 !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; text-transform: none !important; padding: 0 20px !important; } #fv-chart-1792486551861-y8k2kt4bk .rv-chart-caption { font-size: 15px !important; color: #374151 !important; text-align: center !important; font-style: normal !important; font-weight: normal !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; } #fv-chart-1792486551861-y8k2kt4bk .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; } #fv-chart-1792486551861-y8k2kt4bk .fv-versus-select-wrapper { flex: 1; min-width: 0; } #fv-chart-1792486551861-y8k2kt4bk .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; } #fv-chart-1792486551861-y8k2kt4bk .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; } #fv-chart-1792486551861-y8k2kt4bk .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; } #fv-chart-1792486551861-y8k2kt4bk .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; } #fv-chart-1792486551861-y8k2kt4bk .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; } #fv-chart-1792486551861-y8k2kt4bk .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; } #fv-chart-1792486551861-y8k2kt4bk .fv-versus-select { background: transparent; border: none; border-bottom: 2px solid; font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; padding: 0.25rem 0; cursor: pointer; outline: none; appearance: none; -webkit-appearance: none; -moz-appearance: none; max-width: 100%; width: 100%; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; } #fv-chart-1792486551861-y8k2kt4bk .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; } #fv-chart-1792486551861-y8k2kt4bk .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; } #fv-chart-1792486551861-y8k2kt4bk .fv-versus-select option { font-family: 'Open Sans', sans-serif; font-weight: 400; font-size: 14px; color: #374151; direction: ltr; text-align: left; } #fv-chart-1792486551861-y8k2kt4bk .fv-versus-vs { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; color: #374151; letter-spacing: 0.1em; padding: 0 1rem; } #fv-chart-1792486551861-y8k2kt4bk .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; } #fv-chart-1792486551861-y8k2kt4bk .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; } #fv-chart-1792486551861-y8k2kt4bk .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; } #fv-chart-1792486551861-y8k2kt4bk .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; } #fv-chart-1792486551861-y8k2kt4bk .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; } #fv-chart-1792486551861-y8k2kt4bk .fv-versus-bar { height: 32px; width: var(--target-width); transition: width 0.8s ease-out; animation: fv-grow-max-width 0.8s ease-out forwards; display: flex; align-items: center; overflow: hidden; color: #ffffff; } #fv-chart-1792486551861-y8k2kt4bk .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; } #fv-chart-1792486551861-y8k2kt4bk .fv-versus-bar-right { border-radius: 0 4px 4px 0; justify-content: flex-start; padding: 0 8px; } @keyframes fv-grow-max-width { from { max-width: 0; } to { max-width: 100%; } } #fv-chart-1792486551861-y8k2kt4bk .fv-versus-center-line { position: absolute; left: 50%; top: 0; bottom: 0; width: 4px; background-color: #ffffff; transform: translateX(-50%); z-index: 1; } #fv-chart-1792486551861-y8k2kt4bk .fv-inside-left { white-space: nowrap; flex-shrink: 0; } #fv-chart-1792486551861-y8k2kt4bk .fv-inside-right { white-space: nowrap; flex-shrink: 0; } #fv-chart-1792486551861-y8k2kt4bk .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; } #fv-chart-1792486551861-y8k2kt4bk .fv-versus-pct-diff { font-size: 12px; font-weight: 600; } #fv-chart-1792486551861-y8k2kt4bk .fv-versus-label { position: absolute; left: 50%; transform: translateX(-50%); top: 0; background-color: transparent; border: none; box-shadow: none; padding: 0; font-family: 'Open Sans', sans-serif; font-weight: 700; font-size: 14px; color: #374151; white-space: nowrap; } #fv-chart-1792486551861-y8k2kt4bk .sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-footer-content { text-align: center !important; width: 100% !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-logo { display: block !important; margin: 0 auto !important; width: 120px !important; min-width: 120px !important; max-width: 120px !important; height: auto !important; object-fit: contain !important; flex-shrink: 0 !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-dropdown-title { appearance: none !important; -webkit-appearance: none !important; -moz-appearance: none !important; background: transparent !important; border: none !important; font-size: 18px !important; font-weight: 600 !important; color: var(--riv-primary) !important; padding-right: 28px !important; padding-left: 10px !important; cursor: pointer !important; text-align: center !important; text-align-last: center !important; width: auto !important; max-width: 100% !important; font-family: 'Open Sans', sans-serif !important; line-height: 1.3 !important; margin: 0 !important; text-overflow: ellipsis !important; overflow: hidden !important; white-space: nowrap !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-dropdown-title:focus { outline: none !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-dropdown-title::-ms-expand { display: none !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-dropdown-chevron { position: absolute !important; right: 0 !important; top: 50% !important; transform: translateY(-50%) !important; pointer-events: none !important; color: var(--riv-primary) !important; display: flex !important; align-items: center !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-carousel-title-controls { display: flex !important; justify-content: space-between !important; align-items: center !important; margin-bottom: 16px !important; width: 100% !important; gap: 12px !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-carousel-nav-btn { background: transparent !important; border: 1px solid #d1d5db !important; border-radius: 6px !important; padding: 6px 10px !important; cursor: pointer !important; font-size: 14px !important; color: #374151 !important; display: flex !important; align-items: center !important; gap: 4px !important; font-family: 'Open Sans', sans-serif !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-legend { display: flex !important; justify-content: center !important; flex-wrap: wrap !important; gap: 8px 16px !important; margin: 0 !important; padding: 0 !important; margin-top: 1rem !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-multi-value-legend { display: flex !important; justify-content: center !important; flex-wrap: wrap !important; gap: 12px 24px !important; margin-bottom: 1.5rem !important; padding: 0 !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-multi-legend-item { display: flex !important; align-items: center !important; gap: 8px !important; font-size: 14px !important; color: #374151 !important; font-weight: 500 !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-benchmark-group { margin-bottom: 1rem !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-benchmark-title { font-size: 18px !important; font-weight: 600 !important; margin-bottom: 16px !important; margin-top: 0 !important; padding: 0 !important; text-align: center !important; color: var(--riv-primary) !important; flex: 1 !important; min-width: 0 !important; font-family: 'Open Sans', sans-serif !important; line-height: 1.3 !important; text-transform: none !important; white-space: normal !important; overflow-wrap: break-word !important; word-wrap: break-word !important; max-width: 100% !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-bar-row, #fv-chart-1792486551861-y8k2kt4bk .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; position: relative !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-bar-label { width: 150px !important; flex-shrink: 0 !important; font-size: 14px !important; color: #374151 !important; padding-right: 10px !important; text-align: right !important; font-weight: 500 !important; display: block !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-bar-container { flex-grow: 1 !important; background-color: #E5E7EB !important; border-radius: 4px !important; min-height: 25px !important; border: 1px solid #D1D5DB !important; position: relative !important; display: flex !important; align-items: center !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-bar-commentary-inline { display: none !important; position: absolute !important; left: 150px !important; top: 0 !important; bottom: 0 !important; right: 0 !important; width: calc(100% - 150px) !important; margin: 0 !important; padding: 0 8px !important; font-size: 13px !important; color: #fff !important; background: rgba(0,0,0,0.8) !important; border-radius: 4px !important; line-height: 1.4 !important; font-weight: normal !important; text-transform: none !important; word-wrap: break-word !important; z-index: 10 !important; align-items: center !important; overflow-y: auto !important; } #fv-chart-1792486551861-y8k2kt4bk.preview-wrapper .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792486551861-y8k2kt4bk.preview-wrapper .fv-bar-commentary-inline:focus, #fv-chart-1792486551861-y8k2kt4bk.preview-wrapper .fv-bar-commentary-inline:focus-within, #fv-chart-1792486551861-y8k2kt4bk.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792486551861-y8k2kt4bk.mobile-view .fv-bar-commentary-inline:focus, #fv-chart-1792486551861-y8k2kt4bk.mobile-view .fv-bar-commentary-inline:focus-within { display: flex !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-bar { height: 100% !important; border-radius: 3px !important; display: flex !important; align-items: center !important; transition: opacity 0.2s ease, width 0.8s ease-out !important; min-height: 23px !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-bar:hover { opacity: 0.8 !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-bar-inner-content { display: flex !important; justify-content: space-between !important; align-items: center !important; width: 100% !important; height: 100% !important; padding: 0 8px !important; font-size: 14px !important; font-weight: bold !important; overflow: hidden !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-bar-inner-value { flex-shrink: 0 !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-bar-value-outside { padding-left: 8px !important; font-size: 14px !important; font-weight: bold !important; color: #374151 !important; white-space: nowrap !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-stacked-bar { display: flex !important; overflow: hidden !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-stacked-segment { height: 100% !important; display: flex !important; align-items: center !important; justify-content: flex-end !important; padding-right: 8px !important; border-right: 1px solid rgba(255,255,255,0.3) !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-stacked-segment:last-child { border-right: none !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-segment-value { font-size: 14px !important; font-weight: bold !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-grouped-product-title-wrapper { padding-left: 150px !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.5rem !important; font-weight: 700 !important; font-size: 14px !important; color: #374151 !important; text-transform: none !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-bar-cluster .fv-bar-container { height: 20px !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-dials-grid { display: grid !important; grid-template-columns: repeat(auto-fit, minmax(145px, 1fr)) !important; gap: 1.5rem 1rem !important; width: 100% !important; margin: 0.75rem 0 1.25rem !important; align-items: start !important; justify-items: center !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-dial-card { display: flex !important; flex-direction: column !important; align-items: center !important; text-align: center !important; width: 100% !important; max-width: 220px !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-dial-title { font-family: 'Poppins', 'Open Sans', sans-serif !important; font-size: 18px !important; font-weight: 700 !important; color: #2b2b2b !important; line-height: 1.25 !important; margin-bottom: 0.35rem !important; text-align: center !important; width: 100% !important; overflow-wrap: break-word !important; text-transform: none !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-dial-svg-wrapper { width: 100% !important; max-width: 200px !important; display: flex !important; justify-content: center !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-dial-svg { width: 100% !important; height: auto !important; display: block !important; overflow: visible !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-dial-needle { transition: transform 0.9s cubic-bezier(0.22, 1, 0.36, 1) !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-dial-commentary { margin-top: 0.35rem !important; font-size: 13px !important; line-height: 1.45 !important; color: #4B5563 !important; text-align: center !important; width: 100% !important; padding: 0 4px !important; font-family: 'Open Sans', sans-serif !important; word-wrap: break-word !important; } #fv-chart-1792486551861-y8k2kt4bk.preview-wrapper .fv-dial-commentary-input { min-height: 22px !important; border: 1px dashed transparent !important; border-radius: 4px !important; transition: border-color 0.15s ease, background-color 0.15s ease !important; } #fv-chart-1792486551861-y8k2kt4bk.preview-wrapper .fv-dial-card:hover .fv-dial-commentary-input, #fv-chart-1792486551861-y8k2kt4bk.preview-wrapper .fv-dial-commentary-input:focus { border-color: #CBD5E1 !important; background-color: rgba(241, 245, 249, 0.6) !important; } #fv-chart-1792486551861-y8k2kt4bk .riv-grid line { stroke: #D1D5DB !important; stroke-dasharray: 3 3 !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-x-axis-ticks { display: flex !important; justify-content: space-between !important; padding-top: 4px !important; font-size: 13px !important; color: #374151 !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-x-axis-ticks span { position: relative !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-x-axis-ticks span::before { content: '' !important; position: absolute !important; top: -6px !important; left: 50% !important; transform: translateX(-50%) !important; width: 2px !important; height: 4px !important; background-color: #D1D5DB !important; border-radius: 1px !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-x-axis-title { text-align: center !important; font-size: 15px !important; color: #374151 !important; margin-top: 8px !important; margin-bottom: 16px !important; line-height: 1.5 !important; padding: 0 1rem !important; display: block !important; font-weight: bold !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-y-axis-title { font-size: 15px !important; color: #374151 !important; line-height: 1.5 !important; text-align: left !important; padding-left: 5.83% !important; margin-bottom: 4px !important; display: block !important; font-weight: bold !important; } #fv-chart-1792486551861-y8k2kt4bk.mobile-view .fv-pie-container, #fv-chart-1792486551861-y8k2kt4bk.labels-on-top .fv-pie-container { flex-direction: column !important; gap: 1rem !important; } #fv-chart-1792486551861-y8k2kt4bk.mobile-view .fv-grouped-product-title-wrapper, #fv-chart-1792486551861-y8k2kt4bk.labels-on-top .fv-grouped-product-title-wrapper { padding-left: 0 !important; } #fv-chart-1792486551861-y8k2kt4bk.mobile-view .fv-bar-row, #fv-chart-1792486551861-y8k2kt4bk.mobile-view .fv-stacked-product, #fv-chart-1792486551861-y8k2kt4bk.mobile-view .fv-grouped-bar-product, #fv-chart-1792486551861-y8k2kt4bk.labels-on-top .fv-bar-row, #fv-chart-1792486551861-y8k2kt4bk.labels-on-top .fv-stacked-product, #fv-chart-1792486551861-y8k2kt4bk.labels-on-top .fv-grouped-bar-product { flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important; } #fv-chart-1792486551861-y8k2kt4bk.mobile-view .fv-bar-label:not(.fv-grouped-product-title), #fv-chart-1792486551861-y8k2kt4bk.labels-on-top .fv-bar-label:not(.fv-grouped-product-title) { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important; } #fv-chart-1792486551861-y8k2kt4bk.mobile-view .fv-bar-label, #fv-chart-1792486551861-y8k2kt4bk.mobile-view .fv-grouped-product-title, #fv-chart-1792486551861-y8k2kt4bk.labels-on-top .fv-bar-label, #fv-chart-1792486551861-y8k2kt4bk.labels-on-top .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important; } #fv-chart-1792486551861-y8k2kt4bk.mobile-view .fv-bar-container, #fv-chart-1792486551861-y8k2kt4bk.mobile-view .fv-bar-cluster, #fv-chart-1792486551861-y8k2kt4bk.labels-on-top .fv-bar-container, #fv-chart-1792486551861-y8k2kt4bk.labels-on-top .fv-bar-cluster { width: 100% !important; } #fv-chart-1792486551861-y8k2kt4bk.mobile-view .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1792486551861-y8k2kt4bk.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792486551861-y8k2kt4bk.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1792486551861-y8k2kt4bk.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus-within, #fv-chart-1792486551861-y8k2kt4bk.labels-on-top .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1792486551861-y8k2kt4bk.labels-on-top .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792486551861-y8k2kt4bk.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1792486551861-y8k2kt4bk.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus-within { position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important; } #fv-chart-1792486551861-y8k2kt4bk.mobile-view .fv-x-axis-wrapper, #fv-chart-1792486551861-y8k2kt4bk.labels-on-top .fv-x-axis-wrapper { margin-left: 0 !important; } #fv-chart-1792486551861-y8k2kt4bk.mobile-view .fv-x-axis-label-space, #fv-chart-1792486551861-y8k2kt4bk.labels-on-top .fv-x-axis-label-space { display: none !important; } #fv-chart-1792486551861-y8k2kt4bk.mobile-view .fv-x-axis-chart-space, #fv-chart-1792486551861-y8k2kt4bk.labels-on-top .fv-x-axis-chart-space { padding-right: 0 !important; } #fv-chart-1792486551861-y8k2kt4bk.mobile-view .fv-benchmark-title, #fv-chart-1792486551861-y8k2kt4bk.labels-on-top .fv-benchmark-title { font-size: 16px !important; } #fv-chart-1792486551861-y8k2kt4bk.mobile-view .fv-dropdown-title, #fv-chart-1792486551861-y8k2kt4bk.labels-on-top .fv-dropdown-title { font-size: 16px !important; } #fv-chart-1792486551861-y8k2kt4bk.mobile-view .fv-carousel-nav-btn, #fv-chart-1792486551861-y8k2kt4bk.labels-on-top .fv-carousel-nav-btn { padding: 8px 12px !important; font-size: 14px !important; } #fv-chart-1792486551861-y8k2kt4bk.mobile-view .fv-chart-title, #fv-chart-1792486551861-y8k2kt4bk.labels-on-top .fv-chart-title { padding: 0 8px !important; } #fv-chart-1792486551861-y8k2kt4bk.mobile-view .fv-chart-subhead, #fv-chart-1792486551861-y8k2kt4bk.labels-on-top .fv-chart-subhead { padding: 0 8px !important; } #fv-chart-1792486551861-y8k2kt4bk.mobile-view .fv-versus-header, #fv-chart-1792486551861-y8k2kt4bk.labels-on-top .fv-versus-header { flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important; } #fv-chart-1792486551861-y8k2kt4bk.mobile-view .fv-versus-select-wrapper, #fv-chart-1792486551861-y8k2kt4bk.labels-on-top .fv-versus-select-wrapper { flex: 1 !important; min-width: 0 !important; width: 100% !important; } #fv-chart-1792486551861-y8k2kt4bk.mobile-view .fv-versus-select-wrapper.fv-left, #fv-chart-1792486551861-y8k2kt4bk.labels-on-top .fv-versus-select-wrapper.fv-left { text-align: center !important; padding-right: 0 !important; } #fv-chart-1792486551861-y8k2kt4bk.mobile-view .fv-versus-select-wrapper.fv-right, #fv-chart-1792486551861-y8k2kt4bk.labels-on-top .fv-versus-select-wrapper.fv-right { text-align: center !important; padding-left: 0 !important; } #fv-chart-1792486551861-y8k2kt4bk.mobile-view .fv-versus-select.fv-select-left, #fv-chart-1792486551861-y8k2kt4bk.labels-on-top .fv-versus-select.fv-select-left { text-align: center !important; } #fv-chart-1792486551861-y8k2kt4bk.mobile-view .fv-versus-select.fv-select-right, #fv-chart-1792486551861-y8k2kt4bk.labels-on-top .fv-versus-select.fv-select-right { text-align: center !important; } #fv-chart-1792486551861-y8k2kt4bk.mobile-view .fv-versus-vs, #fv-chart-1792486551861-y8k2kt4bk.labels-on-top .fv-versus-vs { text-align: center !important; padding: 0.25rem 0 !important; } #fv-chart-1792486551861-y8k2kt4bk.mobile-view .fv-versus-select-container, #fv-chart-1792486551861-y8k2kt4bk.labels-on-top .fv-versus-select-container { max-width: 100% !important; width: 100% !important; } #fv-chart-1792486551861-y8k2kt4bk.mobile-view .fv-versus-select, #fv-chart-1792486551861-y8k2kt4bk.labels-on-top .fv-versus-select { font-size: 14px !important; width: 100% !important; } #fv-chart-1792486551861-y8k2kt4bk.mobile-view .fv-stl-shop-all-btn, #fv-chart-1792486551861-y8k2kt4bk.labels-on-top .fv-stl-shop-all-btn { bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important; } #fv-chart-1792486551861-y8k2kt4bk.mobile-view .fv-stl-shop-all-logo, #fv-chart-1792486551861-y8k2kt4bk.mobile-view .fv-stl-shop-all-icon, #fv-chart-1792486551861-y8k2kt4bk.labels-on-top .fv-stl-shop-all-logo, #fv-chart-1792486551861-y8k2kt4bk.labels-on-top .fv-stl-shop-all-icon { width: 2rem !important; height: 2rem !important; } #fv-chart-1792486551861-y8k2kt4bk.mobile-view .fv-stl-shop-all-icon svg, #fv-chart-1792486551861-y8k2kt4bk.labels-on-top .fv-stl-shop-all-icon svg { width: 14px !important; height: 14px !important; } #fv-chart-1792486551861-y8k2kt4bk.mobile-view .fv-bar-commentary-inline, #fv-chart-1792486551861-y8k2kt4bk.labels-on-top .fv-bar-commentary-inline { display: block !important; margin-left: 0 !important; width: 100% !important; } #fv-chart-1792486551861-y8k2kt4bk.mobile-view .fv-dials-grid, #fv-chart-1792486551861-y8k2kt4bk.labels-on-top .fv-dials-grid { grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)) !important; gap: 1.25rem 0.75rem !important; } #fv-chart-1792486551861-y8k2kt4bk.mobile-view .fv-dial-title, #fv-chart-1792486551861-y8k2kt4bk.labels-on-top .fv-dial-title { font-size: 16px !important; } #fv-chart-1792486551861-y8k2kt4bk.mobile-view .fv-y-axis-title { padding-left: 5% !important; } #fv-chart-1792486551861-y8k2kt4bk.mobile-view.fv-contains-line-chart .fv-footer-content { margin-left: -1rem !important; margin-right: -1rem !important; } @media (max-width: 599px) { #fv-chart-1792486551861-y8k2kt4bk .fv-pie-container { flex-direction: column !important; gap: 1rem !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-grouped-product-title-wrapper { padding-left: 0 !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-bar-row, #fv-chart-1792486551861-y8k2kt4bk .fv-stacked-product, #fv-chart-1792486551861-y8k2kt4bk .fv-grouped-bar-product { flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-bar-label:not(.fv-grouped-product-title) { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-bar-label, #fv-chart-1792486551861-y8k2kt4bk .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-bar-container, #fv-chart-1792486551861-y8k2kt4bk .fv-bar-cluster { width: 100% !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1792486551861-y8k2kt4bk .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792486551861-y8k2kt4bk .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1792486551861-y8k2kt4bk .fv-bar-row .fv-bar-commentary-inline:focus-within { position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-x-axis-wrapper { margin-left: 0 !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-x-axis-label-space { display: none !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-x-axis-chart-space { padding-right: 0 !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-benchmark-title { font-size: 16px !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-dropdown-title { font-size: 16px !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-carousel-nav-btn { padding: 8px 12px !important; font-size: 14px !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-chart-title { padding: 0 8px !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-chart-subhead { padding: 0 8px !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-versus-header { flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-versus-select-wrapper { flex: 1 !important; min-width: 0 !important; width: 100% !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-versus-select-wrapper.fv-left { text-align: center !important; padding-right: 0 !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-versus-select-wrapper.fv-right { text-align: center !important; padding-left: 0 !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-versus-select.fv-select-left { text-align: center !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-versus-select.fv-select-right { text-align: center !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-versus-vs { text-align: center !important; padding: 0.25rem 0 !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-versus-select-container { max-width: 100% !important; width: 100% !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-versus-select { font-size: 14px !important; width: 100% !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-stl-shop-all-btn { bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-stl-shop-all-logo, #fv-chart-1792486551861-y8k2kt4bk .fv-stl-shop-all-icon { width: 2rem !important; height: 2rem !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-stl-shop-all-icon svg { width: 14px !important; height: 14px !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-bar-commentary-inline { display: block !important; margin-left: 0 !important; width: 100% !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-dials-grid { grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)) !important; gap: 1.25rem 0.75rem !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-dial-title { font-size: 16px !important; } #fv-chart-1792486551861-y8k2kt4bk .fv-y-axis-title { padding-left: 5% !important; } #fv-chart-1792486551861-y8k2kt4bk.fv-contains-line-chart .fv-footer-content { margin-left: -1rem !important; margin-right: -1rem !important; } }{ "@context": "https://schema.org", "@type": "Dataset", "name": "Benchmarks", "description": "How the Acer Googlebook 14 performed in our suite of benchmark tests", "creator": { "@type": "Organization", "name": "TechRadar", "logo": "https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png" }, "isAccessibleForFree": true, "dateCreated": "2026-10-20T08:55:51.861Z", "citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized", "keywords": [ "Acer Googlebook 14", "Crossmark: Overall", "Crossmark: Productivity", "Crossmark: Creativity", "Crossmark: Responsiveness", "Geekbench 6.7 (Single-core)", "Geekbench 6.7 (Multi-core)", "Geekbench 7.0 (Single-core)", "Geekbench 7.0 (Multi-core)", "Geekbench AI 1.7: TenssorFlow Lite / CPU (\nSingle Precision Score)", "Geekbench AI 1.7: TenssorFlow Lite / CPU (\nHalf Precision Score)", "Geekbench AI 1.7: TenssorFlow Lite / CPU (\nQuantized Score)", "Jetstream 2", "WebXPRT 4", "3DMark: Wild Life Extreme", "3DMark: Solar Bay", "3DMark: Steel Nomad Light", "Crossmark", "Geekbench", "Geekbench AI", "Web browsing", "3DMark", "benchmark", "comparison", "performance", "review", "TechRadar" ], "measurementTechnique": "Performance Benchmarking", "variableMeasured": [ { "@type": "PropertyValue", "name": "Acer Googlebook 14 – Crossmark: Overall", "value": 3647, "unitText": "Score" }, { "@type": "PropertyValue", "name": "Acer Googlebook 14 – Crossmark: Productivity", "value": 4406, "unitText": "Score" }, { "@type": "PropertyValue", "name": "Acer Googlebook 14 – Crossmark: Creativity", "value": 1788, "unitText": "Score" }, { "@type": "PropertyValue", "name": "Acer Googlebook 14 – Crossmark: Responsiveness", "value": 15038, "unitText": "Score" }, { "@type": "PropertyValue", "name": "Acer Googlebook 14 – Geekbench 6.7 (Single-core)", "value": 2465, "unitText": "Score" }, { "@type": "PropertyValue", "name": "Acer Googlebook 14 – Geekbench 6.7 (Multi-core)", "value": 9960, "unitText": "Score" }, { "@type": "PropertyValue", "name": "Acer Googlebook 14 – Geekbench 7.0 (Single-core)", "value": 2427, "unitText": "Score" }, { "@type": "PropertyValue", "name": "Acer Googlebook 14 – Geekbench 7.0 (Multi-core)", "value": 11416, "unitText": "Score" }, { "@type": "PropertyValue", "name": "Acer Googlebook 14 – Geekbench AI 1.7: TenssorFlow Lite / CPU (\nSingle Precision Score)", "value": 1801, "unitText": "Score" }, { "@type": "PropertyValue", "name": "Acer Googlebook 14 – Geekbench AI 1.7: TenssorFlow Lite / CPU (\nHalf Precision Score)", "value": 1847, "unitText": "Score" }, { "@type": "PropertyValue", "name": "Acer Googlebook 14 – Geekbench AI 1.7: TenssorFlow Lite / CPU (\nQuantized Score)", "value": 2332, "unitText": "Score" }, { "@type": "PropertyValue", "name": "Acer Googlebook 14 – Jetstream 2", "value": 444, "unitText": "Score" }, { "@type": "PropertyValue", "name": "Acer Googlebook 14 – WebXPRT 4", "value": 328, "unitText": "Score" }, { "@type": "PropertyValue", "name": "Acer Googlebook 14 – 3DMark: Wild Life Extreme", "value": 4068, "unitText": "Score" }, { "@type": "PropertyValue", "name": "Acer Googlebook 14 – 3DMark: Solar Bay", "value": 9071, "unitText": "Score" }, { "@type": "PropertyValue", "name": "Acer Googlebook 14 – 3DMark: Steel Nomad Light", "value": 1780, "unitText": "Score" } ]}{"version":2,"exportedAt":"2026-10-20T08:55:51.861Z","state":{"data":[{"productName":"Samsung Galaxy Book6 Ultra","attribute":"3DMark: Fire Strike","value":26767,"unit":"Score","testDate":"","color":"","site":"TechRadar"},{"productName":"Samsung Galaxy Book6 Ultra","attribute":"3DMark: Time Spy","value":12309,"unit":"Score","testDate":"","color":"","site":"TechRadar"},{"productName":"Samsung Galaxy Book6 Ultra","attribute":"3DMark: Steel Nomad","value":2758,"unit":"Score","testDate":"","color":"","site":"TechRadar"},{"productName":"Samsung Galaxy Book6 Ultra","attribute":"3DMark: Port Royal","value":7687,"unit":"Score","testDate":"","color":"","site":"TechRadar"},{"productName":"Samsung Galaxy Book6 Ultra","attribute":"Geekbench 6.5 (Multi-core)","value":16655,"unit":"Score","testDate":"","color":"","site":"TechRadar"},{"productName":"Samsung Galaxy Book6 Ultra","attribute":"Geekbench 6.5 (Single-core)","value":2852,"unit":"Score","testDate":"","color":"","site":"TechRadar"},{"productName":"Samsung Galaxy Book6 Ultra","attribute":"PCMark 10","value":6827,"unit":"Score","testDate":"","color":"","site":"TechRadar"},{"productName":"Samsung Galaxy Book6 Ultra","attribute":"Crossmark: Overall","value":1880,"unit":"Score","testDate":"","color":"","site":"TechRadar"},{"productName":"Samsung Galaxy Book6 Ultra","attribute":"Crossmark: Productivity","value":1669,"unit":"Score","testDate":"","color":"","site":"TechRadar"},{"productName":"Samsung Galaxy Book6 Ultra","attribute":"Crossmark: Creativity","value":2275,"unit":"Score","testDate":"","color":"","site":"TechRadar"},{"productName":"Samsung Galaxy Book6 Ultra","attribute":"Crossmark: Responsiveness","value":1514,"unit":"Score","testDate":"","color":"","site":"TechRadar"},{"productName":"Samsung Galaxy Book6 Pro","attribute":"3DMark: Fire Strike","value":13987,"unit":"Score","testDate":"","color":"","site":"TechRadar"},{"productName":"Samsung Galaxy Book6 Pro","attribute":"3DMark: Time Spy","value":4270,"unit":"Score","testDate":"","color":"","site":"TechRadar"},{"productName":"Samsung Galaxy Book6 Pro","attribute":"3DMark: Steel Nomad","value":1413,"unit":"Score","testDate":"","color":"","site":"TechRadar"},{"productName":"Samsung Galaxy Book6 Pro","attribute":"3DMark: Port Royal","value":4300,"unit":"Score","testDate":"","color":"","site":"TechRadar"},{"productName":"Samsung Galaxy Book6 Pro","attribute":"Geekbench 6.5 (Multi-core)","value":16837,"unit":"Score","testDate":"","color":"","site":"TechRadar"},{"productName":"Samsung Galaxy Book6 Pro","attribute":"Geekbench 6.5 (Single-core)","value":2880,"unit":"Score","testDate":"","color":"","site":"TechRadar"},{"productName":"Samsung Galaxy Book6 Pro","attribute":"PCMark 10","value":6250,"unit":"Score","testDate":"","color":"","site":"TechRadar"},{"productName":"Samsung Galaxy Book6 Pro","attribute":"Crossmark: Overall","value":2125,"unit":"Score","testDate":"","color":"","site":"TechRadar"},{"productName":"Samsung Galaxy Book6 Pro","attribute":"Crossmark: Productivity","value":1906,"unit":"Score","testDate":"","color":"","site":"TechRadar"},{"productName":"Samsung Galaxy Book6 Pro","attribute":"Crossmark: Creativity","value":2567,"unit":"Score","testDate":"","color":"","site":"TechRadar"},{"productName":"Samsung Galaxy Book6 Pro","attribute":"Crossmark: Responsiveness","value":1670,"unit":"Score","testDate":"","color":"","site":"TechRadar"},{"productName":"Dell XPS 14 (2026)","attribute":"3DMark: Fire Strike","value":13314,"unit":"Score","testDate":"","color":"","site":"TechRadar"},{"productName":"Dell XPS 14 (2026)","attribute":"3DMark: Time Spy","value":6533,"unit":"Score","testDate":"","color":"","site":"TechRadar"},{"productName":"Dell XPS 14 (2026)","attribute":"3DMark: Steel Nomad","value":2300,"unit":"Score","testDate":"","color":"","site":"TechRadar"},{"productName":"Dell XPS 14 (2026)","attribute":"3DMark: Port Royal","value":4500,"unit":"Score","testDate":"","color":"","site":"TechRadar"},{"productName":"Dell XPS 14 (2026)","attribute":"Geekbench 6.5 (Multi-core)","value":16927,"unit":"Score","testDate":"","color":"","site":"TechRadar"},{"productName":"Dell XPS 14 (2026)","attribute":"Geekbench 6.5 (Single-core)","value":2867,"unit":"Score","testDate":"","color":"","site":"TechRadar"},{"productName":"Dell XPS 14 (2026)","attribute":"PCMark 10","value":8000,"unit":"Score","testDate":"","color":"","site":"TechRadar"},{"productName":"Dell XPS 14 (2026)","attribute":"Crossmark: Overall","value":1840,"unit":"Score","testDate":"","color":"","site":"TechRadar"},{"productName":"Dell XPS 14 (2026)","attribute":"Crossmark: Productivity","value":1619,"unit":"Score","testDate":"","color":"","site":"TechRadar"},{"productName":"Dell XPS 14 (2026)","attribute":"Crossmark: Creativity","value":2258,"unit":"Score","testDate":"","color":"","site":"TechRadar"},{"productName":"Dell XPS 14 (2026)","attribute":"Crossmark: Responsiveness","value":1460,"unit":"Score","testDate":"","color":"","site":"TechRadar"},{"productName":"Acer Googlebook 14","attribute":"Geekbench 6.7 (Single-core)","value":2465,"unit":"Score","testDate":"","color":"","site":"TechRadar"},{"productName":"Acer Googlebook 14","attribute":"Geekbench 6.7 (Multi-core)","value":9960,"unit":"Score","testDate":"","color":"","site":"TechRadar"},{"productName":"Acer Googlebook 14","attribute":"Geekbench 7.0 (Single-core)","value":2427,"unit":"Score","testDate":"","color":"","site":"TechRadar"},{"productName":"Acer Googlebook 14","attribute":"Geekbench 7.0 (Multi-core)","value":11416,"unit":"Score","testDate":"","color":"","site":"TechRadar"},{"productName":"Acer Googlebook 14","attribute":"Geekbench AI 1.7: TenssorFlow Lite / CPU (\nSingle Precision Score)","value":1801,"unit":"Score","testDate":"","color":"","site":"TechRadar"},{"productName":"Acer Googlebook 14","attribute":"Geekbench AI 1.7: TenssorFlow Lite / CPU (\nHalf Precision Score)","value":1847,"unit":"Score","testDate":"","color":"","site":"TechRadar"},{"productName":"Acer Googlebook 14","attribute":"Geekbench AI 1.7: TenssorFlow Lite / CPU (\nQuantized Score)","value":2332,"unit":"Score","testDate":"","color":"","site":"TechRadar"},{"productName":"Acer Googlebook 14","attribute":"Crossmark: Overall","value":3647,"unit":"Score","testDate":"","color":"","site":"TechRadar"},{"productName":"Acer Googlebook 14","attribute":"Crossmark: Productivity","value":4406,"unit":"Score","testDate":"","color":"","site":"TechRadar"},{"productName":"Acer Googlebook 14","attribute":"Crossmark: Creativity","value":1788,"unit":"Score","testDate":"","color":"","site":"TechRadar"},{"productName":"Acer Googlebook 14","attribute":"Crossmark: Responsiveness","value":15038,"unit":"Score","testDate":"","color":"","site":"TechRadar"},{"productName":"Acer Googlebook 14","attribute":"Jetstream 2","value":444,"unit":"Score","testDate":"","color":"","site":"TechRadar"},{"productName":"Acer Googlebook 14","attribute":"WebXPRT 4","value":328,"unit":"Score","testDate":"","color":"","site":"TechRadar"},{"productName":"Acer Googlebook 14","attribute":"3DMark: Wild Life Extreme","value":4068,"unit":"Score","testDate":"","color":"","site":"TechRadar"},{"productName":"Acer Googlebook 14","attribute":"3DMark: Solar Bay","value":9071,"unit":"Score","testDate":"","color":"","site":"TechRadar"},{"productName":"Acer Googlebook 14","attribute":"3DMark: Steel Nomad Light","value":1780,"unit":"Score","testDate":"","color":"","site":"TechRadar"}],"products":["Samsung Galaxy Book6 Ultra","Samsung Galaxy Book6 Pro","Dell XPS 14 (2026)","Acer Googlebook 14"],"attributes":["3DMark: Fire Strike","3DMark: Time Spy","3DMark: Steel Nomad","3DMark: Port Royal","Geekbench 6.5 (Multi-core)","Geekbench 6.5 (Single-core)","PCMark 10","Crossmark: Overall","Crossmark: Productivity","Crossmark: Creativity","Crossmark: Responsiveness","Geekbench 6.7 (Single-core)","Geekbench 6.7 (Multi-core)","Geekbench 7.0 (Single-core)","Geekbench 7.0 (Multi-core)","Geekbench AI 1.7: TenssorFlow Lite / CPU (\nSingle Precision Score)","Geekbench AI 1.7: TenssorFlow Lite / CPU (\nHalf Precision Score)","Geekbench AI 1.7: TenssorFlow Lite / CPU (\nQuantized Score)","Jetstream 2","WebXPRT 4","3DMark: Wild Life Extreme","3DMark: Solar Bay","3DMark: Steel Nomad Light"],"selectedProducts":["Acer Googlebook 14"],"selectedPrimaryProduct":"Acer Googlebook 14","selectedAttributes":["Crossmark: Overall","Crossmark: Productivity","Crossmark: Creativity","Crossmark: Responsiveness","Geekbench 6.7 (Single-core)","Geekbench 6.7 (Multi-core)","Geekbench 7.0 (Single-core)","Geekbench 7.0 (Multi-core)","Geekbench AI 1.7: TenssorFlow Lite / CPU (\nSingle Precision Score)","Geekbench AI 1.7: TenssorFlow Lite / CPU (\nHalf Precision Score)","Geekbench AI 1.7: TenssorFlow Lite / CPU (\nQuantized Score)","Jetstream 2","WebXPRT 4","3DMark: Wild Life Extreme","3DMark: Solar Bay","3DMark: Steel Nomad Light"],"productColors":[{"productName":"Samsung Galaxy Book6 Ultra","color":"#2E6E93"},{"productName":"Samsung Galaxy Book6 Pro","color":"#E8238C"},{"productName":"Dell XPS 14 (2026)","color":"#5DA8D4"},{"productName":"Acer Googlebook 14","color":"#F06EAF"}],"initialProductColors":[{"productName":"Samsung Galaxy Book6 Ultra","color":"#2E6E93"},{"productName":"Samsung Galaxy Book6 Pro","color":"#E8238C"},{"productName":"Dell XPS 14 (2026)","color":"#5DA8D4"},{"productName":"Acer Googlebook 14","color":"#F06EAF"}],"attributeColors":[],"attributeGroups":[{"name":"Group 1","attributes":["Crossmark: Overall","Crossmark: Productivity","Crossmark: Creativity","Crossmark: Responsiveness"]},{"name":"Group 2","attributes":["Geekbench 6.7 (Single-core)","Geekbench 6.7 (Multi-core)","Geekbench 7.0 (Single-core)","Geekbench 7.0 (Multi-core)"]},{"name":"Group 3","attributes":["Geekbench AI 1.7: TenssorFlow Lite / CPU (\nSingle Precision Score)","Geekbench AI 1.7: TenssorFlow Lite / CPU (\nHalf Precision Score)","Geekbench AI 1.7: TenssorFlow Lite / CPU (\nQuantized Score)"]},{"name":"Group 4","attributes":["Jetstream 2","WebXPRT 4"]},{"name":"Group 5","attributes":["3DMark: Wild Life Extreme","3DMark: Solar Bay","3DMark: Steel Nomad Light"]}],"chartType":"Bar","roundupViewType":"bars","stlSelectedHotspotId":null,"iaSelectedNodeId":null,"barChartMaxValueOverrides":{},"barChartMinValueOverrides":{},"displayMode":"Carousel","brand":{"name":"TechRadar","logoUrl":"https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png","sliderLogoUrl":"https://proof.vanilla.tools/media/images/brandLogos/techradar.png","colors":{"primary":"#2E6E93","secondary":"#E8238C","accent":"#FFFFFF","background":"#ffffff","text":"#1F2937","productColors":["#2E6E93","#E8238C","#5DA8D4","#F06EAF","#1A4E6B","#B81C70","#8CC3E0","#F499C9"]}},"textContent":{"title":"Benchmarks","subhead":"How the Acer Googlebook 14 performed in our suite of benchmark tests","caption":"Add your caption to explain the data, the learnings and the key takeaways of the data being visualized","productNameOverrides":{},"attributeNameOverrides":{},"chartTitleOverrides":{"grouped-bar-Group 1":"Crossmark","grouped-bar-Group 2":"Geekbench","grouped-bar-Group 3":"Geekbench AI","grouped-bar-Group 4":"Web browsing","grouped-bar-Group 5":"3DMark"},"xAxisLabelOverrides":{},"subheadOverrides":{},"captionOverrides":{},"unitOverrides":{},"multiValueLegendOverrides":{},"barCommentaryOverrides":{}},"dataEverLoaded":true,"showAISuggestionsButton":false,"barChartShowXAxis":true,"groupedBarChartShowProductName":false,"barChartLabelsOnTop":false,"experimentalEnablePieChart":false,"slideshowUseDropdown":false},"slides":[]}Benchmarks

How the Acer Googlebook 14 performed in our suite of benchmark tests

< PrevCrossmarkNext >Crossmark: Overall3647Crossmark: Productivity4406Crossmark: Creativity1788Crossmark: Responsiveness1503805,00010,00015,00020,000ScoreCrossmark DataProductCrossmark: Overall (Score)Crossmark: Productivity (Score)Crossmark: Creativity (Score)Crossmark: Responsiveness (Score)Acer Googlebook 1436474406178815038Geekbench 6.7 (Single-core)2465Geekbench 6.7 (Multi-core)9960Geekbench 7.0 (Single-core)2427Geekbench 7.0 (Multi-core)1141603,7507,50011,25015,000ScoreGeekbench DataProductGeekbench 6.7 (Single-core) (Score)Geekbench 6.7 (Multi-core) (Score)Geekbench 7.0 (Single-core) (Score)Geekbench 7.0 (Multi-core) (Score)Acer Googlebook 1424659960242711416Geekbench AI 1.7: TenssorFlow Lite / CPU (Single Precision Score)1801Geekbench AI 1.7: TenssorFlow Lite / CPU (Half Precision Score)1847Geekbench AI 1.7: TenssorFlow Lite / CPU (Quantized Score)233207501,5002,2503,000ScoreGeekbench AI DataProductGeekbench AI 1.7: TenssorFlow Lite / CPU (Single Precision Score) (Score)Geekbench AI 1.7: TenssorFlow Lite / CPU (Half Precision Score) (Score)Geekbench AI 1.7: TenssorFlow Lite / CPU (Quantized Score) (Score)Acer Googlebook 14180118472332Jetstream 2444WebXPRT 43280150300450600ScoreWeb browsing DataProductJetstream 2 (Score)WebXPRT 4 (Score)Acer Googlebook 144443283DMark: Wild Life Extreme40683DMark: Solar Bay90713DMark: Steel Nomad Light178002,5005,0007,50010,000Score3DMark DataProduct3DMark: Wild Life Extreme (Score)3DMark: Solar Bay (Score)3DMark: Steel Nomad Light (Score)Acer Googlebook 144068907117801 of 5 window.iFrameResizer = { heightCalculationMethod: 'taggedElement' }; (function() { function createChartAnimator() { return function animateChartWrapper(chartWrapper) { if (!chartWrapper) return; function animateBars(chartElement) { if (!chartElement) return; var bars = chartElement.querySelectorAll('.fv-bar, .fv-stacked-segment'); bars.forEach(function(bar, index) { bar.style.setProperty('width', '0%', 'important'); bar.style.setProperty('transition', 'none', 'important'); var targetWidth = bar.dataset.targetWidth; if (targetWidth === undefined) return; void bar.offsetWidth; var targetMargin = bar.dataset.targetMargin; var baseMargin = bar.dataset.baseMargin; if (baseMargin !== undefined) { bar.style.setProperty('margin-left', baseMargin + '%', 'important'); } setTimeout(function() { var marginTransition = baseMargin !== undefined ? ', margin-left 0.8s ease-out' : ''; bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out' + marginTransition, 'important'); bar.style.setProperty('width', targetWidth + '%', 'important'); if (targetMargin !== undefined && baseMargin !== undefined) { bar.style.setProperty('margin-left', targetMargin + '%', 'important'); } }, index * 50 + 50); }); } function animateLineChart(chartElement) { if (!chartElement) return; var lineSvg = chartElement.querySelector('svg'); if (!lineSvg) return; var paths = lineSvg.querySelectorAll('.riv-line-path'); paths.forEach(function(p, i) { if (typeof p.getTotalLength === 'function') { var len = p.getTotalLength(); p.style.transition = 'none'; p.style.strokeDasharray = len; p.style.strokeDashoffset = len; p.getBoundingClientRect(); setTimeout(function() { p.style.transition = 'stroke-dashoffset 1s ease-out ' + (i * 0.1) + 's, stroke-width 0.2s, opacity 0.2s'; p.style.strokeDashoffset = '0'; }, 100); } }); var dots = lineSvg.querySelectorAll('.riv-dot'); dots.forEach(function(dot, i) { dot.style.opacity = '0'; setTimeout(function() { dot.style.transition = 'opacity 0.3s ease'; dot.style.opacity = '1'; }, 500 + i * 10); }); } function animateDials(chartElement) { if (!chartElement) return; var needles = chartElement.querySelectorAll('.fv-dial-needle'); needles.forEach(function(needle, index) { var targetAngle = needle.dataset.targetAngle; var baseAngle = needle.dataset.baseAngle || '-132'; if (targetAngle === undefined) return; needle.style.setProperty('transition', 'none', 'important'); needle.style.setProperty('transform', 'rotate(' + baseAngle + 'deg)', 'important'); void needle.getBoundingClientRect(); setTimeout(function() { needle.style.setProperty('transition', 'transform 0.9s cubic-bezier(0.22, 1, 0.36, 1)', 'important'); needle.style.setProperty('transform', 'rotate(' + targetAngle + 'deg)', 'important'); }, index * 60 + 50); }); } var charts = chartWrapper.querySelectorAll('.fv-chart-item'); charts.forEach(function(chart) { if (window.getComputedStyle(chart).display === 'none') return; var chartType = chart.dataset.chartType; if (chartType === 'Line') { animateLineChart(chart); } else if (chartType !== 'Pie') { animateBars(chart); animateDials(chart); } }); }; } var fvLocalAnimate = createChartAnimator(); window.fvAnimateCharts = fvLocalAnimate; function initialize(uniqueId, isSlideshow) { var root = document.getElementById(uniqueId); if (!root && !isSlideshow) return; function setupWrapper(chartWrapper) { if (!chartWrapper) return; /* Responsive mobile view handling */ function checkMobileView() { var width = chartWrapper.getBoundingClientRect().width; var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599; var isMobile; if (width === 0) { isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches; } else { isMobile = isMobileDevice || width < 600; } if (isMobile) { chartWrapper.classList.add('mobile-view'); } else { chartWrapper.classList.remove('mobile-view'); } } checkMobileView(); if (typeof ResizeObserver !== 'undefined') { var ro = new ResizeObserver(function() { checkMobileView(); }); ro.observe(chartWrapper); } window.addEventListener('resize', checkMobileView); var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true'; if (labelsOnTop) { var charts = chartWrapper.querySelectorAll('.fv-chart-item'); var hasVisibleBarChart = false; charts.forEach(function(c) { if (window.getComputedStyle(c).display !== 'none') { var cType = c.dataset.chartType; if (cType === 'Bar' || cType === 'Diverging Bar' || cType === 'Stacked Bar' || cType === 'Versus') { hasVisibleBarChart = true; } } }); if (hasVisibleBarChart) { chartWrapper.classList.add('labels-on-top'); } else { chartWrapper.classList.remove('labels-on-top'); } } else { chartWrapper.classList.remove('labels-on-top'); } /* Legend interactions */ chartWrapper.querySelectorAll('.riv-line-legend').forEach(function(legend) { var chartId = legend.dataset.chart; var chart = chartWrapper.querySelector('[id="' + chartId + '"]'); if (!chart) return; var lines = chart.querySelectorAll('.riv-line-path'); var dots = chart.querySelectorAll('.riv-dot'); var legendItems = legend.querySelectorAll('.riv-legend-item'); legendItems.forEach(function(item) { var productName = item.dataset.product; var safeProductName = productName.replace(/"/g, '\\"'); var line = chart.querySelector('.riv-line-path[data-product="' + safeProductName + '"]'); var productDots = chart.querySelectorAll('.riv-dot[data-product="' + safeProductName + '"]'); if (line && !line.dataset.origStroke) { line.dataset.origStroke = line.getAttribute('stroke-width') || '2'; } var highlight = function() { if (legend.querySelector('.isolated')) return; lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); }); dots.forEach(function(d) { d.style.opacity = '0.2'; }); legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; }); if (line) { line.style.opacity = '1'; line.setAttribute('stroke-width', '4'); } productDots.forEach(function(d) { d.style.opacity = '1'; }); item.style.opacity = '1'; }; var clearHighlight = function() { if (legend.querySelector('.isolated')) return; lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); }); dots.forEach(function(d) { d.style.opacity = '1'; }); legendItems.forEach(function(i) { i.style.opacity = '1'; }); }; var toggleIsolate = function() { var isIsolated = item.classList.contains('isolated'); legendItems.forEach(function(i) { i.classList.remove('isolated'); }); if (isIsolated) { lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); }); dots.forEach(function(d) { d.style.opacity = '1'; }); legendItems.forEach(function(i) { i.style.opacity = '1'; }); } else { item.classList.add('isolated'); lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); }); dots.forEach(function(d) { d.style.opacity = '0.2'; }); legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; }); if (line) { line.style.opacity = '1'; line.setAttribute('stroke-width', '4'); } productDots.forEach(function(d) { d.style.opacity = '1'; }); item.style.opacity = '1'; } }; item.addEventListener('mouseenter', highlight); item.addEventListener('focus', highlight); item.addEventListener('mouseleave', clearHighlight); item.addEventListener('blur', clearHighlight); item.addEventListener('click', toggleIsolate); if (line) { line.style.cursor = 'pointer'; line.addEventListener('mouseenter', highlight); line.addEventListener('mouseleave', clearHighlight); line.addEventListener('click', toggleIsolate); } }); }); /* Versus Chart Logic */ var versusCharts = chartWrapper.querySelectorAll('.fv-versus-chart'); versusCharts.forEach(function(vc) { var dataJson = vc.getAttribute('data-versus-data'); var leftColor = vc.getAttribute('data-left-color') || '#E53935'; var rightColor = vc.getAttribute('data-right-color') || '#FFB300'; if (!dataJson) return; var versusData = JSON.parse(dataJson); var leftSelect = vc.querySelector('.fv-select-left'); var rightSelect = vc.querySelector('.fv-select-right'); var rows = vc.querySelectorAll('.fv-versus-row'); function updateVersusChart() { var leftProduct = leftSelect.value; var rightProduct = rightSelect.value; leftSelect.style.color = leftColor; leftSelect.style.borderColor = leftColor; rightSelect.style.color = rightColor; rightSelect.style.borderColor = rightColor; rows.forEach(function(row) { var index = parseInt(row.getAttribute('data-index')); var data = versusData[index]; if (!data) return; var leftVal = data.productData[leftProduct] ? data.productData[leftProduct].value : undefined; var rightVal = data.productData[rightProduct] ? data.productData[rightProduct].value : undefined; var leftIsNum = typeof leftVal === 'number'; var rightIsNum = typeof rightVal === 'number'; var leftNum = leftIsNum ? leftVal : 0; var rightNum = rightIsNum ? rightVal : 0; var maxVal = Math.max(leftNum, rightNum, 0.0001); var leftWidth = leftIsNum ? (leftNum / maxVal) * 95 : 0; var rightWidth = rightIsNum ? (rightNum / maxVal) * 85 : 0; var winner = null; var pctDiffStr = null; if (leftIsNum && rightIsNum) { if (leftNum > rightNum) { winner = 'left'; if (rightNum > 0) { var diff = Math.round(((leftNum - rightNum) / rightNum) * 100); pctDiffStr = '+' + diff.toLocaleString() + '%'; } } else if (rightNum > leftNum) { winner = 'right'; if (leftNum > 0) { var diff = Math.round(((rightNum - leftNum) / leftNum) * 100); pctDiffStr = '+' + diff.toLocaleString() + '%'; } } } var leftDisplay = data.productData[leftProduct] && data.productData[leftProduct].displayValue !== undefined ? data.productData[leftProduct].displayValue : (leftIsNum ? leftNum.toLocaleString() : (leftVal !== undefined ? leftVal : '-')); var rightDisplay = data.productData[rightProduct] && data.productData[rightProduct].displayValue !== undefined ? data.productData[rightProduct].displayValue : (rightIsNum ? rightNum.toLocaleString() : (rightVal !== undefined ? rightVal : '-')); var unit = (data.productData[leftProduct] && data.productData[leftProduct].unit) || (data.productData[rightProduct] && data.productData[rightProduct].unit) || ''; var leftTextStr = leftDisplay; var rightTextStr = rightDisplay; var leftBar = row.querySelector('.fv-versus-bar-left'); var rightBar = row.querySelector('.fv-versus-bar-right'); var leftText = row.querySelector('.fv-inside-left'); var rightText = row.querySelector('.fv-inside-right'); var labelText = row.querySelector('.fv-versus-label span'); var existingPctDiffs = row.querySelectorAll('.fv-versus-pct-diff'); existingPctDiffs.forEach(function(el) { el.remove(); }); if (winner === 'left' && pctDiffStr) { var pctSpan = document.createElement('span'); pctSpan.className = 'fv-versus-pct-diff'; pctSpan.style.color = 'rgba(255, 255, 255, 0.9)'; pctSpan.textContent = pctDiffStr; if (leftBar) leftBar.insertBefore(pctSpan, leftBar.firstChild); } else if (winner === 'right' && pctDiffStr) { var pctSpan = document.createElement('span'); pctSpan.className = 'fv-versus-pct-diff'; pctSpan.style.color = 'rgba(255, 255, 255, 0.9)'; pctSpan.textContent = pctDiffStr; if (rightBar) rightBar.appendChild(pctSpan); } if (leftBar) { leftBar.style.backgroundColor = leftColor; leftBar.dataset.targetWidth = leftWidth; leftBar.style.setProperty('--target-width', leftWidth + '%'); leftBar.style.width = leftWidth + '%'; } if (rightBar) { rightBar.style.backgroundColor = rightColor; rightBar.dataset.targetWidth = rightWidth; rightBar.style.setProperty('--target-width', rightWidth + '%'); rightBar.style.width = rightWidth + '%'; } if (leftText) { leftText.innerHTML = leftTextStr; } if (rightText) { rightText.innerHTML = rightTextStr; } if (labelText) { labelText.textContent = data.attribute + (unit ? ' (' + unit + ')' : ''); } }); } if (leftSelect) leftSelect.addEventListener('change', updateVersusChart); if (rightSelect) rightSelect.addEventListener('change', updateVersusChart); }); /* Bar Commentary Hover Logic */ var barRows = chartWrapper.querySelectorAll('.fv-bar-row'); var globalCaptionEl = chartWrapper.querySelector('.rv-chart-caption'); var fallbackCaptionHtml = globalCaptionEl ? globalCaptionEl.innerHTML : ''; barRows.forEach(function(row) { var commentaryEl = row.querySelector('[data-commentary-key]'); if (commentaryEl) { var commentaryText = commentaryEl.textContent; if (commentaryText && commentaryText.trim().length > 0) { row.addEventListener('mouseenter', function() { if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) { globalCaptionEl.innerHTML = commentaryText; globalCaptionEl.classList.add('fv-bar-active-caption'); } }); row.addEventListener('mouseleave', function() { if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) { globalCaptionEl.innerHTML = fallbackCaptionHtml; globalCaptionEl.classList.remove('fv-bar-active-caption'); } }); } } }); /* Carousel & Dropdown Logic */ var charts = chartWrapper.querySelectorAll('.fv-chart-item'); var dropdown = chartWrapper.querySelector('.fv-dropdown-title'); var prevBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.prev'); var nextBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.next'); var carouselTitle = chartWrapper.querySelector('.fv-carousel-title-controls .fv-benchmark-title'); var counter = chartWrapper.querySelector('.fv-carousel-counter'); var subheadEl = chartWrapper.querySelector('.fv-chart-subhead'); var captionEl = chartWrapper.querySelector('.rv-chart-caption'); var footerContentEl = chartWrapper.querySelector('.fv-footer-content'); var bottomBarEl = chartWrapper.querySelector('.fv-bottom-bar'); var logoEl = chartWrapper.querySelector('.fv-logo'); if (charts.length > 1 && (dropdown || prevBtn)) { var currentChartIndex = 0; var titles = []; if (dropdown) { titles = Array.from(dropdown.options).map(function(o) { return o.text; }); } else { charts.forEach(function(c) { titles.push(c.getAttribute('data-title') || ''); }); } function showInternalChart(index) { if (index < 0) index = charts.length - 1; if (index >= charts.length) index = 0; currentChartIndex = index; charts.forEach(function(c, i) { c.style.display = i === index ? 'block' : 'none'; if (i === index) { var cType = c.dataset.chartType; if (cType !== 'Pie') { fvLocalAnimate(chartWrapper); } var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true'; if (labelsOnTop && (cType === 'Bar' || cType === 'Diverging Bar' || cType === 'Stacked Bar' || cType === 'Versus')) { chartWrapper.classList.add('labels-on-top'); } else { chartWrapper.classList.remove('labels-on-top'); } } }); if (dropdown) dropdown.value = index; if (carouselTitle && titles[index]) carouselTitle.textContent = titles[index]; if (counter) counter.textContent = (index + 1) + ' of ' + charts.length; var activeChart = charts[index]; if (activeChart) { var newSubhead = activeChart.getAttribute('data-subhead'); var newCaption = activeChart.getAttribute('data-caption'); var currentChartType = activeChart.getAttribute('data-chart-type'); var hideGlobalCaption = currentChartType === 'Countdown' || currentChartType === 'Image Comparison' || currentChartType === 'Shop the Collection'; if (subheadEl) subheadEl.textContent = newSubhead || ''; if (captionEl) { captionEl.textContent = newCaption || ''; fallbackCaptionHtml = newCaption || ''; } if (footerContentEl) { if (newCaption && newCaption.trim().length > 0 && !hideGlobalCaption) { footerContentEl.style.display = 'block'; if (bottomBarEl) bottomBarEl.style.display = 'flex'; } else { footerContentEl.style.display = 'none'; if (bottomBarEl && !logoEl) { bottomBarEl.style.display = 'none'; } } } } } if (dropdown) dropdown.addEventListener('change', function(e) { showInternalChart(parseInt(e.target.value)); }); if (prevBtn) prevBtn.addEventListener('click', function() { showInternalChart(currentChartIndex - 1); }); if (nextBtn) nextBtn.addEventListener('click', function() { showInternalChart(currentChartIndex + 1); }); } /* Image Comparison Logic */ var imageCompareWrappers = chartWrapper.querySelectorAll('.fv-image-compare-wrapper'); imageCompareWrappers.forEach(function(wrapper) { var inner = wrapper.querySelector('.fv-image-compare-inner') || wrapper; var slider = wrapper.querySelector('.fv-image-compare-slider'); var fgImage = wrapper.querySelector('.fv-image-compare-fg'); var bgImage = wrapper.querySelector('.fv-image-compare-bg'); var labelLeft = wrapper.querySelector('.fv-image-compare-label-left'); var labelRight = wrapper.querySelector('.fv-image-compare-label-right'); var isDragging = false; var scale = 1; var panX = 0; var panY = 0; var isPanning = false; var hasPanned = false; var lastClientX = 0; var lastClientY = 0; var initialDistance = null; var lastCenterX = null; var lastCenterY = null; function updateTransform() { if (wrapper.classList.contains('fv-image-compare-fullscreen')) { inner.style.setProperty('transform', 'translate(' + panX + 'px, ' + panY + 'px) scale(' + scale + ')', 'important'); } else { inner.style.removeProperty('transform'); scale = 1; panX = 0; panY = 0; } } function constrainPan() { var rect = wrapper.getBoundingClientRect(); var maxPanX = Math.max(0, (rect.width * scale - rect.width) / 2); var maxPanY = Math.max(0, (rect.height * scale - rect.height) / 2); panX = Math.max(-maxPanX, Math.min(panX, maxPanX)); panY = Math.max(-maxPanY, Math.min(panY, maxPanY)); } wrapper.addEventListener('wheel', function(e) { if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return; e.preventDefault(); var zoomSensitivity = 0.005; var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity); var newScale = Math.max(1, Math.min(scale * zoomFactor, 5)); if (newScale === scale) return; var rect = wrapper.getBoundingClientRect(); var mouseX = e.clientX - rect.left - rect.width / 2; var mouseY = e.clientY - rect.top - rect.height / 2; var ratio = newScale / scale; panX = mouseX - (mouseX - panX) * ratio; panY = mouseY - (mouseY - panY) * ratio; scale = newScale; constrainPan(); updateTransform(); }, { passive: false }); wrapper.addEventListener('mousedown', function(e) { if (!wrapper.classList.contains('fv-image-compare-fullscreen') || scale <= 1) return; if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return; isPanning = true; hasPanned = false; lastClientX = e.clientX; lastClientY = e.clientY; }); window.addEventListener('mousemove', function(e) { if (!isPanning) return; var dx = e.clientX - lastClientX; var dy = e.clientY - lastClientY; if (Math.abs(dx) > 2 || Math.abs(dy) > 2) { hasPanned = true; } lastClientX = e.clientX; lastClientY = e.clientY; panX += dx; panY += dy; constrainPan(); updateTransform(); }); window.addEventListener('mouseup', function() { isPanning = false; }); wrapper.addEventListener('touchstart', function(e) { if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return; if (e.touches.length === 2) { e.preventDefault(); var dx = e.touches[0].clientX - e.touches[1].clientX; var dy = e.touches[0].clientY - e.touches[1].clientY; initialDistance = Math.sqrt(dx * dx + dy * dy); var rect = wrapper.getBoundingClientRect(); lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2; lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2; hasPanned = true; } else if (e.touches.length === 1 && scale > 1) { if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return; isPanning = true; hasPanned = false; lastClientX = e.touches[0].clientX; lastClientY = e.touches[0].clientY; } }, { passive: false }); wrapper.addEventListener('touchmove', function(e) { if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return; if (e.touches.length === 2 && initialDistance !== null) { e.preventDefault(); var dx = e.touches[0].clientX - e.touches[1].clientX; var dy = e.touches[0].clientY - e.touches[1].clientY; var distance = Math.sqrt(dx * dx + dy * dy); if (initialDistance > 0) { var zoomFactor = distance / initialDistance; var newScale = Math.max(1, Math.min(scale * zoomFactor, 5)); var rect = wrapper.getBoundingClientRect(); var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2; var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2; var ratio = newScale / scale; panX = centerX - (centerX - panX) * ratio; panY = centerY - (centerY - panY) * ratio; if (lastCenterX !== null && lastCenterY !== null) { panX += (centerX - lastCenterX); panY += (centerY - lastCenterY); } scale = newScale; lastCenterX = centerX; lastCenterY = centerY; constrainPan(); updateTransform(); } initialDistance = distance; } else if (e.touches.length === 1 && isPanning) { e.preventDefault(); var dx = e.touches[0].clientX - lastClientX; var dy = e.touches[0].clientY - lastClientY; if (Math.abs(dx) > 2 || Math.abs(dy) > 2) { hasPanned = true; } lastClientX = e.touches[0].clientX; lastClientY = e.touches[0].clientY; panX += dx; panY += dy; constrainPan(); updateTransform(); } }, { passive: false }); wrapper.addEventListener('touchend', function(e) { if (e.touches.length < 2) { initialDistance = null; } if (e.touches.length === 0) { isPanning = false; } }); function handleMove(clientX) { var rect = inner.getBoundingClientRect(); var x = Math.max(0, Math.min(clientX - rect.left, rect.width)); var percent = Math.max(0, Math.min((x / rect.width) * 100, 100)); if (slider) slider.style.setProperty('left', percent + '%', 'important'); if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important'); if (labelLeft) { if (percent < 10) { labelLeft.style.setProperty('opacity', '0', 'important'); } else { labelLeft.style.setProperty('opacity', '1', 'important'); } } if (labelRight) { if (percent > 90) { labelRight.style.setProperty('opacity', '0', 'important'); } else { labelRight.style.setProperty('opacity', '1', 'important'); } } } function onMouseMove(e) { if (!isDragging) return; handleMove(e.clientX); } function onTouchMove(e) { if (!isDragging) return; e.preventDefault(); handleMove(e.touches[0].clientX); } function stopDragging() { isDragging = false; window.removeEventListener('mousemove', onMouseMove); window.removeEventListener('mouseup', stopDragging); window.removeEventListener('touchmove', onTouchMove); window.removeEventListener('touchend', stopDragging); } if (slider) { var startDrag = function(clientX) { isDragging = true; handleMove(clientX); window.addEventListener('mousemove', onMouseMove); window.addEventListener('mouseup', stopDragging); }; var startTouchDrag = function(clientX) { isDragging = true; handleMove(clientX); window.addEventListener('touchmove', onTouchMove, { passive: false }); window.addEventListener('touchend', stopDragging); }; slider.addEventListener('mousedown', function(e) { e.preventDefault(); startDrag(e.clientX); }); slider.addEventListener('touchstart', function(e) { e.preventDefault(); startTouchDrag(e.touches[0].clientX); }, { passive: false }); } var expandBtn = wrapper.querySelector('.fv-image-compare-expand-btn'); var closeBtn = wrapper.querySelector('.fv-image-compare-close-btn'); if (expandBtn) { if (window !== window.parent) { expandBtn.style.display = 'none'; } else { expandBtn.addEventListener('click', function(e) { e.stopPropagation(); wrapper.classList.add('fv-image-compare-fullscreen'); document.body.style.overflow = 'hidden'; if (fgImage && fgImage.dataset.highresSrc) { fgImage.src = fgImage.dataset.highresSrc; fgImage.removeAttribute('srcset'); fgImage.removeAttribute('sizes'); } if (bgImage && bgImage.dataset.highresSrc) { bgImage.src = bgImage.dataset.highresSrc; bgImage.removeAttribute('srcset'); bgImage.removeAttribute('sizes'); } }); } } if (closeBtn) { closeBtn.addEventListener('click', function(e) { e.stopPropagation(); wrapper.classList.remove('fv-image-compare-fullscreen'); document.body.style.overflow = ''; updateTransform(); }); } document.addEventListener('keydown', function(e) { if (e.key === 'Escape' && wrapper.classList.contains('fv-image-compare-fullscreen')) { wrapper.classList.remove('fv-image-compare-fullscreen'); document.body.style.overflow = ''; updateTransform(); } }); }); /* Shop The Look Hotspots */ var hotspots = chartWrapper.querySelectorAll('.fv-stl-hotspot-btn'); var allProductsModal = chartWrapper.querySelector('.fv-stl-all-products-modal'); var shopAllBtn = chartWrapper.querySelector('.fv-stl-shop-all-btn'); var stlContainer = chartWrapper.querySelector('.fv-stl-container'); function closeAllModals() { if (allProductsModal) { allProductsModal.classList.remove('is-active'); var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item'); items.forEach(function(item) { item.classList.remove('is-highlighted'); }); if (stlContainer) { setTimeout(function() { if (!allProductsModal.classList.contains('is-active')) { stlContainer.style.minHeight = ''; if ('parentIFrame' in window) { window.parentIFrame.size(); } } }, 300); } } hotspots.forEach(function(btn) { btn.setAttribute('aria-expanded', 'false'); }); if ('parentIFrame' in window) { window.parentIFrame.size(); } } hotspots.forEach(function(btn) { btn.addEventListener('click', function(e) { e.stopPropagation(); var hotspotId = btn.getAttribute('data-hotspot-id'); var isExpanded = btn.getAttribute('aria-expanded') === 'true'; closeAllModals(); if (!isExpanded && allProductsModal) { btn.setAttribute('aria-expanded', 'true'); allProductsModal.classList.add('is-active'); var container = btn.closest('.fv-stl-container'); if (container && container.offsetHeight < 450) { container.style.minHeight = '450px'; } var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]'); if (targetItem) { targetItem.classList.add('is-highlighted'); setTimeout(function() { targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' }); }, 100); } if ('parentIFrame' in window) { window.parentIFrame.size(); } } }); }); if (shopAllBtn && allProductsModal) { shopAllBtn.addEventListener('click', function(e) { e.stopPropagation(); closeAllModals(); allProductsModal.classList.add('is-active'); var container = shopAllBtn.closest('.fv-stl-container'); if (container && container.offsetHeight < 450) { container.style.minHeight = '450px'; } if ('parentIFrame' in window) { window.parentIFrame.size(); } }); } if (allProductsModal) { var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close'); if (closeAllBtn) { closeAllBtn.addEventListener('click', function(e) { e.stopPropagation(); closeAllModals(); }); } } chartWrapper.addEventListener('click', function(e) { if (!e.target.closest('.fv-stl-all-products-content')) { closeAllModals(); } }); if (allProductsModal) { allProductsModal.addEventListener('click', function(e) { if (!e.target.closest('.fv-stl-all-products-content')) { closeAllModals(); } }); } /* Image Annotation Logic */ var iaNodes = chartWrapper.querySelectorAll('.fv-ia-node-button'); var iaWrapper = chartWrapper.querySelector('.fv-ia-wrapper'); var originalCaption = chartWrapper.querySelector('.fv-original-caption') || captionEl; var dynamicCaption = chartWrapper.querySelector('.fv-ia-dynamic-caption'); var exploreBtn = chartWrapper.querySelector('.fv-ia-explore-btn'); var currentIaIndex = -1; function closeAllIANodes() { iaNodes.forEach(function(btn) { btn.classList.remove('is-active'); }); if (originalCaption) originalCaption.style.display = 'block'; if (dynamicCaption) dynamicCaption.style.display = 'none'; } function resetExploreBtn() { currentIaIndex = -1; if (exploreBtn) { var exploreSpan = exploreBtn.querySelector('span'); if (exploreSpan) exploreSpan.textContent = 'Explore'; } } iaNodes.forEach(function(btn, index) { btn.addEventListener('click', function(e) { e.stopPropagation(); var isActive = btn.classList.contains('is-active'); closeAllIANodes(); if (!isActive) { currentIaIndex = index; if (exploreBtn) { var exploreSpan = exploreBtn.querySelector('span'); if (exploreSpan) exploreSpan.textContent = 'Next'; } btn.classList.add('is-active'); if (dynamicCaption) { var title = btn.getAttribute('data-title') || ''; var desc = btn.getAttribute('data-desc') || ''; dynamicCaption.innerHTML = ''; var strongTag = document.createElement('strong'); strongTag.textContent = title; dynamicCaption.appendChild(strongTag); if (desc) { dynamicCaption.appendChild(document.createTextNode(' - ' + desc)); } if (originalCaption) originalCaption.style.display = 'none'; dynamicCaption.style.display = 'block'; if (footerContentEl) footerContentEl.style.display = 'block'; } } else { resetExploreBtn(); } }); }); if (exploreBtn) { exploreBtn.addEventListener('click', function(e) { e.stopPropagation(); if (iaNodes.length === 0) return; var nextIndex = currentIaIndex + 1; if (nextIndex >= iaNodes.length) { closeAllIANodes(); resetExploreBtn(); } else { currentIaIndex = nextIndex; var targetBtn = iaNodes[currentIaIndex]; if (targetBtn) { if (targetBtn.classList.contains('is-active')) { targetBtn.click(); } targetBtn.click(); } } }); } if (iaWrapper) { iaWrapper.addEventListener('click', function(e) { if (!e.target.closest('.fv-ia-node-button') && !e.target.closest('.fv-ia-explore-btn')) { closeAllIANodes(); resetExploreBtn(); } }); } /* Initial Animation */ chartWrapper._fvAnimate = fvLocalAnimate; fvLocalAnimate(chartWrapper); /* Countdown Logic */ var countdownContainer = chartWrapper.querySelector('.fv-countdown-container'); if (countdownContainer) { var targetDateAttr = countdownContainer.getAttribute('data-target-date'); if (targetDateAttr) { var targetDate = new Date(targetDateAttr); var pad = function(n) { return (n < 10 ? '0' : '') + n; }; var updateCountdown = function() { var difference = +targetDate - +new Date(); var d = 0, h = 0, m = 0, s = 0; if (difference > 0) { d = Math.floor(difference / (1000 * 60 * 60 * 24)); h = Math.floor((difference / (1000 * 60 * 60)) % 24); m = Math.floor((difference / 1000 / 60) % 60); s = Math.floor((difference / 1000) % 60); } var daysEl = countdownContainer.querySelector('[data-time="days"]'); var hoursEl = countdownContainer.querySelector('[data-time="hours"]'); var minsEl = countdownContainer.querySelector('[data-time="minutes"]'); var secsEl = countdownContainer.querySelector('[data-time="seconds"]'); if (daysEl) daysEl.textContent = d; if (hoursEl) hoursEl.textContent = pad(h); if (minsEl) minsEl.textContent = pad(m); if (secsEl) secsEl.textContent = pad(s); }; updateCountdown(); setInterval(updateCountdown, 1000); } } } if (false) { var slideshowContainer = document.getElementById(uniqueId + '-slideshow'); if (slideshowContainer) { var slides = slideshowContainer.querySelectorAll('.fv-slide'); slides.forEach(function(slide) { setupWrapper(slide.querySelector('.fv-chart-wrapper')); }); } } else { setupWrapper(root); } } if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1792486551861-y8k2kt4bk', false); }); } else { initialize('fv-chart-1792486551861-y8k2kt4bk', false); } })();

That said, when I launched Monument Valley, a popular Android game that supposedly has been updated to work well on Googlebooks, I first had to map touch controls to the keyboard in a rather clunky and confusing manner (and as far as I know, all Googlebooks will come with touchscreens).

Skipping through the mapping process took me to the game, and I found using the touchpad and mouse cursor to interact with the game worked absolutely fine, so I’m not too sure what the point of the confusing mapping process is. Also, despite being labelled as being designed for desktop use, the game initially launched in a window in portrait orientation — so essentially, just showing the Android app. Even maximizing the app window didn’t make it go full screen.

I then tried the Acer Googlebook 14 in tablet mode (thinking that would be ideal for a mobile game), but for some reason, the auto-rotate function didn’t work, even when I toggled it on and off. Then, all of a sudden, it did work, though it asked me to restart the app ‘so that it looks better on your screen’. I did (luckily not losing any progress), and the Acer Googlebook 14 acted as it should. However, the game didn’t take up the entire screen, even in fullscreen mode — instead, it had the (admittedly larger) app in the middle of the screen, then large black borders around the edges. Restarting the app again did give me the full-screen experience, but this is far from a slick and premium experience.

(Image credit: Future)

Now, I want to be clear that these issues are related to the software, so it’s not really Acer’s fault. Googlebook OS is clearly still in its early days, and while I didn’t experience any major crashes, there’s still a lot of work to be done by Google, and unfortunately it means that the main selling point of the Acer Googlebook 14 — its 2-in-1 design — isn’t as impressive as it should be.

This also extends to some of the more interesting promises of Googlebook OS. The operating system is designed to be familiar for Android users, and aims to give a similarly slick experience that iPhone users get when using a Mac, such as screen mirroring, seamless switching between devices, and seeing messages your phone receives on your laptop’s display.

When Google launched the Googlebooks a month or so ago, I was shown how the apps on a connected Android phone could be opened on a Googlebook without any installation. Another demo showed someone using an app on their phone, then quickly switching to their Googlebook to continue using the same app where they left off. It was impressive, and something that, as an Android user, I’d been wanting for years. Only Samsung came close, and even that was a bit clunky (and you needed to have a Samsung phone and Samsung laptop).

So, I was disappointed when I just could not get the Acer Googlebook 14 to show the apps on my Samsung Galaxy S24 Ultra. Instead, I was given a QR code to scan, which opened up the ‘Cross-device services’ settings on my smartphone. These were already enabled, and it wasn’t clear what I needed to do. Again, it was far from the slick experience I (and other Android users) had been promised.

After speaking to Acer, I was pointed to a Google support page which announced that Googlebook OS support for Samsung phones has now begun to roll out, and that phones need to run Android 17 (and in the case of Samsung smartphones, also run One UI 9.0). My phone was actually on a slightly older version, but the One UI 9.0 update was waiting to be installed, which I did. I was then prompted (after scanning the QR once again) to update Cross-Device Services. Progress!

It took a while, but I was then able to see my phone’s apps on the Acer Googlebook 14. Clicking on an app brought it up on the screen with a desktop-like interface, though it took a few seconds. This is because the Acer Googlebook 14 is streaming the app wirelessly from your phone, so there’s a little delay, but then you get the app in the exact state you left it on your phone.

With the phone properly connected, you can also view its files within the file explorer app on the Acer Googlebook 14, as well as files saved on the Googlebook’s internal drive, and any Google Drive accounts you have as well. This is another nice bit of interaction between Googlebook OS and your Android device, though again there’s a bit of a delay as the Googlebook streams files from your phone.

Having your Google Drive folders within the file explorer (called ‘Files’) app is another nice touch — as long as you use Google Drive. As an Android user, there’s a good chance that you do use Google Drive, especially as new owners of Googlebooks get a year’s subscription to Google AI Pro for free, which includes 5TB of storage. I actually mainly use OneDrive, and I was pleased to see that once I had logged into the OneDrive app on the Acer Googlebook 14, the files I store on Microsoft’s rival cloud storage service also appeared within the Files app.

So, the Googlebook OS and Android ecosystem feels like it needs tightening up a bit, as this is still early days, but there’s a lot of potential here, and if Google can nail it, it will make Googlebooks like the Acer Googlebook 14 very attractive to people who use Android smartphones.

On-device AI is a big selling point of Googlebooks, and with the included Google AI Pro subscription, you get access to Gemini Argon, Google’s latest AI model. I had a play around with it on the Acer Googlebook 14, asking it to help me code a complex musical plugin for Ableton Live 11, and it was quick and helpful, explaining its process and offering suggestions and advice. Even with Google AI Pro, I did use up my current allowance in around 10 minutes. At least it resets every five hours.

The ’Magic Cursor’ feature is another key selling point (according to Google) of the Googlebook OS. Once you’ve turned it on, you can shake the mouse cursor, and Gemini can view what’s on your screen. You can highlight parts of the screen and ask Gemini questions about it. I tried it while I had a photo open, and it offered to generate digital art based on the photo, or come up with gift ideas for the people pictured.

It is similar to the ‘Click to Do’ feature of Windows 11, but that takes a screenshot of your screen, then offers limited ways to interact with it. The Magic Cursor feature feels much more flexible, as you’re interacting with live elements of the screen, and highlights the benefits of Googlebook OS being built from the ground up to support AI, rather than having AI awkwardly pasted onto an existing operating system, as with Windows 11.

Overall, the day-to-day performance of the Acer Googlebook 14 was very good, though the early nature of Googlebook OS means some features aren’t quite as slick as I’d have hoped.

That said, there’s a lot of potential here, and the integration for Android smartphones shows a lot of promise. Hopefully Google will continue to update Googlebook OS regularly — though there’s always the worry with Google that it will abruptly drop support and lose interest in any product that it feels isn’t selling well.View Deal

Acer Googlebook 14 review: Battery Life@import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap'); @import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap'); #fv-chart-1792487841164-42y2kup0b *, #fv-chart-1792487841164-42y2kup0b *:before, #fv-chart-1792487841164-42y2kup0b *:after, #fv-chart-1792487841164-42y2kup0b-slideshow *, #fv-chart-1792487841164-42y2kup0b-slideshow *:before, #fv-chart-1792487841164-42y2kup0b-slideshow *:after { box-sizing: border-box !important; margin: 0; padding: 0; border: 0; font-size: 100%; font: inherit; vertical-align: baseline; } #fv-chart-1792487841164-42y2kup0b, #fv-chart-1792487841164-42y2kup0b-slideshow { font-family: 'Open Sans', sans-serif !important; } #fv-chart-1792487841164-42y2kup0b { position: relative !important; overflow: visible !important; --riv-primary: #2E6E93; } #fv-chart-1792487841164-42y2kup0b .fv-inner-wrapper { color: #1F2937 !important; background-color: #ffffff !important; padding: 1.5rem 1.5rem 2rem !important; border-radius: 0.5rem !important; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1) !important; margin: 1rem 0 !important; display: flex !important; flex-direction: column !important; overflow: hidden !important; } #fv-chart-1792487841164-42y2kup0b .fv-inner-wrapper.fv-no-header.fv-is-image-compare { padding-top: 0 !important; } #fv-chart-1792487841164-42y2kup0b.fv-full-bleed { width: 100vw !important; margin-left: calc(50% - 50vw) !important; } body { overflow-x: clip !important; } #fv-chart-1792487841164-42y2kup0b.fv-full-bleed .fv-inner-wrapper { padding: 0 !important; border-radius: 0 !important; box-shadow: none !important; margin: 0 !important; background-color: transparent !important; } #fv-chart-1792487841164-42y2kup0b .fv-inner-wrapper.fv-is-shop-the-look { padding: 0 !important; border-radius: 0 !important; box-shadow: none !important; margin: 0 !important; background-color: transparent !important; } #fv-chart-1792487841164-42y2kup0b-slideshow { position: relative !important; width: 100% !important; margin: 1rem 0 !important; --riv-primary: #2E6E93; } #fv-chart-1792487841164-42y2kup0b-slideshow .fv-slides-wrapper { position: relative !important; width: 100% !important; } #fv-chart-1792487841164-42y2kup0b-slideshow .fv-slide { width: 100% !important; animation: fv-fade-in 0.3s ease-in-out; } #fv-chart-1792487841164-42y2kup0b-slideshow .fv-slideshow-nav-row { position: relative !important; display: flex !important; justify-content: space-between !important; align-items: center !important; padding: 0 0 16px 0 !important; width: 100% !important; z-index: 20 !important; } #fv-chart-1792487841164-42y2kup0b-slideshow .fv-nav-btn { background-color: var(--riv-primary) !important; color: #ffffff !important; border: none !important; border-radius: 4px !important; padding: 8px 16px !important; font-size: 14px !important; font-weight: 700 !important; cursor: pointer !important; display: flex !important; align-items: center !important; justify-content: center !important; gap: 6px !important; transition: opacity 0.2s, background-color 0.2s !important; height: 36px !important; text-transform: none !important; box-shadow: 0 1px 2px rgba(0,0,0,0.1) !important; } #fv-chart-1792487841164-42y2kup0b-slideshow .fv-nav-btn svg { width: 18px !important; height: 18px !important; stroke-width: 3px !important; filter: none !important; } #fv-chart-1792487841164-42y2kup0b-slideshow .fv-nav-btn:hover { opacity: 0.9 !important; transform: translateY(-1px) !important; } #fv-chart-1792487841164-42y2kup0b-slideshow .fv-nav-btn.disabled, #fv-chart-1792487841164-42y2kup0b-slideshow .fv-nav-btn:disabled { background-color: #E5E7EB !important; color: #9CA3AF !important; cursor: default !important; pointer-events: none !important; box-shadow: none !important; } #fv-chart-1792487841164-42y2kup0b-slideshow .fv-slide-counter { font-family: 'Poppins', sans-serif !important; font-size: 14px !important; font-weight: 600 !important; color: #374151 !important; text-align: center !important; min-width: 40px !important; background-color: rgba(255,255,255,0.8) !important; padding: 2px 8px !important; border-radius: 10px !important; user-select: none !important; } #fv-chart-1792487841164-42y2kup0b-slideshow .fv-slideshow-select { position: absolute !important; top: 10px !important; right: 10px !important; z-index: 20 !important; appearance: none !important; -webkit-appearance: none !important; -moz-appearance: none !important; background-color: white !important; border: 1px solid #d1d5db !important; color: #1F2937 !important; font-family: 'Open Sans', sans-serif !important; font-size: 14px !important; font-weight: 600 !important; padding: 6px 32px 6px 12px !important; border-radius: 4px !important; cursor: pointer !important; box-shadow: 0 1px 2px rgba(0,0,0,0.05) !important; background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e") !important; background-position: right 0.5rem center !important; background-repeat: no-repeat !important; background-size: 1.5em 1.5em !important; } #fv-chart-1792487841164-42y2kup0b-slideshow .fv-slideshow-select:focus { outline: 2px solid #2E6E93 !important; border-color: #2E6E93 !important; } @keyframes fv-fade-in { from { opacity: 0; } to { opacity: 1; } } #fv-chart-1792487841164-42y2kup0b .fv-chart-title { font-weight: bold !important; text-align: center !important; margin-bottom: 0.5rem !important; color: var(--riv-primary) !important; font-size: 20px !important; line-height: 1.2 !important; font-family: 'Open Sans', sans-serif !important; text-transform: none !important; white-space: normal !important; overflow-wrap: break-word !important; padding: 0 20px !important; } #fv-chart-1792487841164-42y2kup0b .fv-chart-subhead { font-size: 18px !important; font-weight: 500 !important; text-align: center !important; margin-bottom: 2rem !important; color: #374151 !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; text-transform: none !important; padding: 0 20px !important; } #fv-chart-1792487841164-42y2kup0b .rv-chart-caption { font-size: 15px !important; color: #374151 !important; text-align: center !important; font-style: normal !important; font-weight: normal !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; } #fv-chart-1792487841164-42y2kup0b .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; } #fv-chart-1792487841164-42y2kup0b .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; } #fv-chart-1792487841164-42y2kup0b .fv-versus-select-wrapper { flex: 1; min-width: 0; } #fv-chart-1792487841164-42y2kup0b .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; } #fv-chart-1792487841164-42y2kup0b .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; } #fv-chart-1792487841164-42y2kup0b .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; } #fv-chart-1792487841164-42y2kup0b .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; } #fv-chart-1792487841164-42y2kup0b .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; } #fv-chart-1792487841164-42y2kup0b .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; } #fv-chart-1792487841164-42y2kup0b .fv-versus-select { background: transparent; border: none; border-bottom: 2px solid; font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; padding: 0.25rem 0; cursor: pointer; outline: none; appearance: none; -webkit-appearance: none; -moz-appearance: none; max-width: 100%; width: 100%; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; } #fv-chart-1792487841164-42y2kup0b .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; } #fv-chart-1792487841164-42y2kup0b .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; } #fv-chart-1792487841164-42y2kup0b .fv-versus-select option { font-family: 'Open Sans', sans-serif; font-weight: 400; font-size: 14px; color: #374151; direction: ltr; text-align: left; } #fv-chart-1792487841164-42y2kup0b .fv-versus-vs { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; color: #374151; letter-spacing: 0.1em; padding: 0 1rem; } #fv-chart-1792487841164-42y2kup0b .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; } #fv-chart-1792487841164-42y2kup0b .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; } #fv-chart-1792487841164-42y2kup0b .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; } #fv-chart-1792487841164-42y2kup0b .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; } #fv-chart-1792487841164-42y2kup0b .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; } #fv-chart-1792487841164-42y2kup0b .fv-versus-bar { height: 32px; width: var(--target-width); transition: width 0.8s ease-out; animation: fv-grow-max-width 0.8s ease-out forwards; display: flex; align-items: center; overflow: hidden; color: #ffffff; } #fv-chart-1792487841164-42y2kup0b .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; } #fv-chart-1792487841164-42y2kup0b .fv-versus-bar-right { border-radius: 0 4px 4px 0; justify-content: flex-start; padding: 0 8px; } @keyframes fv-grow-max-width { from { max-width: 0; } to { max-width: 100%; } } #fv-chart-1792487841164-42y2kup0b .fv-versus-center-line { position: absolute; left: 50%; top: 0; bottom: 0; width: 4px; background-color: #ffffff; transform: translateX(-50%); z-index: 1; } #fv-chart-1792487841164-42y2kup0b .fv-inside-left { white-space: nowrap; flex-shrink: 0; } #fv-chart-1792487841164-42y2kup0b .fv-inside-right { white-space: nowrap; flex-shrink: 0; } #fv-chart-1792487841164-42y2kup0b .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; } #fv-chart-1792487841164-42y2kup0b .fv-versus-pct-diff { font-size: 12px; font-weight: 600; } #fv-chart-1792487841164-42y2kup0b .fv-versus-label { position: absolute; left: 50%; transform: translateX(-50%); top: 0; background-color: transparent; border: none; box-shadow: none; padding: 0; font-family: 'Open Sans', sans-serif; font-weight: 700; font-size: 14px; color: #374151; white-space: nowrap; } #fv-chart-1792487841164-42y2kup0b .sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; } #fv-chart-1792487841164-42y2kup0b .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; } #fv-chart-1792487841164-42y2kup0b .fv-footer-content { text-align: center !important; width: 100% !important; } #fv-chart-1792487841164-42y2kup0b .fv-logo { display: block !important; margin: 0 auto !important; width: 120px !important; min-width: 120px !important; max-width: 120px !important; height: auto !important; object-fit: contain !important; flex-shrink: 0 !important; } #fv-chart-1792487841164-42y2kup0b .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; } #fv-chart-1792487841164-42y2kup0b .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; } #fv-chart-1792487841164-42y2kup0b .fv-dropdown-title { appearance: none !important; -webkit-appearance: none !important; -moz-appearance: none !important; background: transparent !important; border: none !important; font-size: 18px !important; font-weight: 600 !important; color: var(--riv-primary) !important; padding-right: 28px !important; padding-left: 10px !important; cursor: pointer !important; text-align: center !important; text-align-last: center !important; width: auto !important; max-width: 100% !important; font-family: 'Open Sans', sans-serif !important; line-height: 1.3 !important; margin: 0 !important; text-overflow: ellipsis !important; overflow: hidden !important; white-space: nowrap !important; } #fv-chart-1792487841164-42y2kup0b .fv-dropdown-title:focus { outline: none !important; } #fv-chart-1792487841164-42y2kup0b .fv-dropdown-title::-ms-expand { display: none !important; } #fv-chart-1792487841164-42y2kup0b .fv-dropdown-chevron { position: absolute !important; right: 0 !important; top: 50% !important; transform: translateY(-50%) !important; pointer-events: none !important; color: var(--riv-primary) !important; display: flex !important; align-items: center !important; } #fv-chart-1792487841164-42y2kup0b .fv-carousel-title-controls { display: flex !important; justify-content: space-between !important; align-items: center !important; margin-bottom: 16px !important; width: 100% !important; gap: 12px !important; } #fv-chart-1792487841164-42y2kup0b .fv-carousel-nav-btn { background: transparent !important; border: 1px solid #d1d5db !important; border-radius: 6px !important; padding: 6px 10px !important; cursor: pointer !important; font-size: 14px !important; color: #374151 !important; display: flex !important; align-items: center !important; gap: 4px !important; font-family: 'Open Sans', sans-serif !important; } #fv-chart-1792487841164-42y2kup0b .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; } #fv-chart-1792487841164-42y2kup0b .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; } #fv-chart-1792487841164-42y2kup0b .fv-legend { display: flex !important; justify-content: center !important; flex-wrap: wrap !important; gap: 8px 16px !important; margin: 0 !important; padding: 0 !important; margin-top: 1rem !important; } #fv-chart-1792487841164-42y2kup0b .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; } #fv-chart-1792487841164-42y2kup0b .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; } #fv-chart-1792487841164-42y2kup0b .fv-multi-value-legend { display: flex !important; justify-content: center !important; flex-wrap: wrap !important; gap: 12px 24px !important; margin-bottom: 1.5rem !important; padding: 0 !important; } #fv-chart-1792487841164-42y2kup0b .fv-multi-legend-item { display: flex !important; align-items: center !important; gap: 8px !important; font-size: 14px !important; color: #374151 !important; font-weight: 500 !important; } #fv-chart-1792487841164-42y2kup0b .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; } #fv-chart-1792487841164-42y2kup0b .fv-benchmark-group { margin-bottom: 1rem !important; } #fv-chart-1792487841164-42y2kup0b .fv-benchmark-title { font-size: 18px !important; font-weight: 600 !important; margin-bottom: 16px !important; margin-top: 0 !important; padding: 0 !important; text-align: center !important; color: var(--riv-primary) !important; flex: 1 !important; min-width: 0 !important; font-family: 'Open Sans', sans-serif !important; line-height: 1.3 !important; text-transform: none !important; white-space: normal !important; overflow-wrap: break-word !important; word-wrap: break-word !important; max-width: 100% !important; } #fv-chart-1792487841164-42y2kup0b .fv-bar-row, #fv-chart-1792487841164-42y2kup0b .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; position: relative !important; } #fv-chart-1792487841164-42y2kup0b .fv-bar-label { width: 150px !important; flex-shrink: 0 !important; font-size: 14px !important; color: #374151 !important; padding-right: 10px !important; text-align: right !important; font-weight: 500 !important; display: block !important; } #fv-chart-1792487841164-42y2kup0b .fv-bar-container { flex-grow: 1 !important; background-color: #E5E7EB !important; border-radius: 4px !important; min-height: 25px !important; border: 1px solid #D1D5DB !important; position: relative !important; display: flex !important; align-items: center !important; } #fv-chart-1792487841164-42y2kup0b .fv-bar-commentary-inline { display: none !important; position: absolute !important; left: 150px !important; top: 0 !important; bottom: 0 !important; right: 0 !important; width: calc(100% - 150px) !important; margin: 0 !important; padding: 0 8px !important; font-size: 13px !important; color: #fff !important; background: rgba(0,0,0,0.8) !important; border-radius: 4px !important; line-height: 1.4 !important; font-weight: normal !important; text-transform: none !important; word-wrap: break-word !important; z-index: 10 !important; align-items: center !important; overflow-y: auto !important; } #fv-chart-1792487841164-42y2kup0b.preview-wrapper .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792487841164-42y2kup0b.preview-wrapper .fv-bar-commentary-inline:focus, #fv-chart-1792487841164-42y2kup0b.preview-wrapper .fv-bar-commentary-inline:focus-within, #fv-chart-1792487841164-42y2kup0b.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792487841164-42y2kup0b.mobile-view .fv-bar-commentary-inline:focus, #fv-chart-1792487841164-42y2kup0b.mobile-view .fv-bar-commentary-inline:focus-within { display: flex !important; } #fv-chart-1792487841164-42y2kup0b .fv-bar { height: 100% !important; border-radius: 3px !important; display: flex !important; align-items: center !important; transition: opacity 0.2s ease, width 0.8s ease-out !important; min-height: 23px !important; } #fv-chart-1792487841164-42y2kup0b .fv-bar:hover { opacity: 0.8 !important; } #fv-chart-1792487841164-42y2kup0b .fv-bar-inner-content { display: flex !important; justify-content: space-between !important; align-items: center !important; width: 100% !important; height: 100% !important; padding: 0 8px !important; font-size: 14px !important; font-weight: bold !important; overflow: hidden !important; } #fv-chart-1792487841164-42y2kup0b .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; } #fv-chart-1792487841164-42y2kup0b .fv-bar-inner-value { flex-shrink: 0 !important; } #fv-chart-1792487841164-42y2kup0b .fv-bar-value-outside { padding-left: 8px !important; font-size: 14px !important; font-weight: bold !important; color: #374151 !important; white-space: nowrap !important; } #fv-chart-1792487841164-42y2kup0b .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; } #fv-chart-1792487841164-42y2kup0b .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; } #fv-chart-1792487841164-42y2kup0b .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; } #fv-chart-1792487841164-42y2kup0b .fv-stacked-bar { display: flex !important; overflow: hidden !important; } #fv-chart-1792487841164-42y2kup0b .fv-stacked-segment { height: 100% !important; display: flex !important; align-items: center !important; justify-content: flex-end !important; padding-right: 8px !important; border-right: 1px solid rgba(255,255,255,0.3) !important; } #fv-chart-1792487841164-42y2kup0b .fv-stacked-segment:last-child { border-right: none !important; } #fv-chart-1792487841164-42y2kup0b .fv-segment-value { font-size: 14px !important; font-weight: bold !important; } #fv-chart-1792487841164-42y2kup0b .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; } #fv-chart-1792487841164-42y2kup0b .fv-grouped-product-title-wrapper { padding-left: 150px !important; } #fv-chart-1792487841164-42y2kup0b .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.5rem !important; font-weight: 700 !important; font-size: 14px !important; color: #374151 !important; text-transform: none !important; } #fv-chart-1792487841164-42y2kup0b .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; } #fv-chart-1792487841164-42y2kup0b .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; } #fv-chart-1792487841164-42y2kup0b .fv-bar-cluster .fv-bar-container { height: 20px !important; } #fv-chart-1792487841164-42y2kup0b .fv-dials-grid { display: grid !important; grid-template-columns: repeat(auto-fit, minmax(145px, 1fr)) !important; gap: 1.5rem 1rem !important; width: 100% !important; margin: 0.75rem 0 1.25rem !important; align-items: start !important; justify-items: center !important; } #fv-chart-1792487841164-42y2kup0b .fv-dial-card { display: flex !important; flex-direction: column !important; align-items: center !important; text-align: center !important; width: 100% !important; max-width: 220px !important; } #fv-chart-1792487841164-42y2kup0b .fv-dial-title { font-family: 'Poppins', 'Open Sans', sans-serif !important; font-size: 18px !important; font-weight: 700 !important; color: #2b2b2b !important; line-height: 1.25 !important; margin-bottom: 0.35rem !important; text-align: center !important; width: 100% !important; overflow-wrap: break-word !important; text-transform: none !important; } #fv-chart-1792487841164-42y2kup0b .fv-dial-svg-wrapper { width: 100% !important; max-width: 200px !important; display: flex !important; justify-content: center !important; } #fv-chart-1792487841164-42y2kup0b .fv-dial-svg { width: 100% !important; height: auto !important; display: block !important; overflow: visible !important; } #fv-chart-1792487841164-42y2kup0b .fv-dial-needle { transition: transform 0.9s cubic-bezier(0.22, 1, 0.36, 1) !important; } #fv-chart-1792487841164-42y2kup0b .fv-dial-commentary { margin-top: 0.35rem !important; font-size: 13px !important; line-height: 1.45 !important; color: #4B5563 !important; text-align: center !important; width: 100% !important; padding: 0 4px !important; font-family: 'Open Sans', sans-serif !important; word-wrap: break-word !important; } #fv-chart-1792487841164-42y2kup0b.preview-wrapper .fv-dial-commentary-input { min-height: 22px !important; border: 1px dashed transparent !important; border-radius: 4px !important; transition: border-color 0.15s ease, background-color 0.15s ease !important; } #fv-chart-1792487841164-42y2kup0b.preview-wrapper .fv-dial-card:hover .fv-dial-commentary-input, #fv-chart-1792487841164-42y2kup0b.preview-wrapper .fv-dial-commentary-input:focus { border-color: #CBD5E1 !important; background-color: rgba(241, 245, 249, 0.6) !important; } #fv-chart-1792487841164-42y2kup0b .riv-grid line { stroke: #D1D5DB !important; stroke-dasharray: 3 3 !important; } #fv-chart-1792487841164-42y2kup0b .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; } #fv-chart-1792487841164-42y2kup0b .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; } #fv-chart-1792487841164-42y2kup0b .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; } #fv-chart-1792487841164-42y2kup0b .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; } #fv-chart-1792487841164-42y2kup0b .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; } #fv-chart-1792487841164-42y2kup0b .fv-x-axis-ticks { display: flex !important; justify-content: space-between !important; padding-top: 4px !important; font-size: 13px !important; color: #374151 !important; } #fv-chart-1792487841164-42y2kup0b .fv-x-axis-ticks span { position: relative !important; } #fv-chart-1792487841164-42y2kup0b .fv-x-axis-ticks span::before { content: '' !important; position: absolute !important; top: -6px !important; left: 50% !important; transform: translateX(-50%) !important; width: 2px !important; height: 4px !important; background-color: #D1D5DB !important; border-radius: 1px !important; } #fv-chart-1792487841164-42y2kup0b .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; } #fv-chart-1792487841164-42y2kup0b .fv-x-axis-title { text-align: center !important; font-size: 15px !important; color: #374151 !important; margin-top: 8px !important; margin-bottom: 16px !important; line-height: 1.5 !important; padding: 0 1rem !important; display: block !important; font-weight: bold !important; } #fv-chart-1792487841164-42y2kup0b .fv-y-axis-title { font-size: 15px !important; color: #374151 !important; line-height: 1.5 !important; text-align: left !important; padding-left: 5.83% !important; margin-bottom: 4px !important; display: block !important; font-weight: bold !important; } #fv-chart-1792487841164-42y2kup0b.mobile-view .fv-pie-container, #fv-chart-1792487841164-42y2kup0b.labels-on-top .fv-pie-container { flex-direction: column !important; gap: 1rem !important; } #fv-chart-1792487841164-42y2kup0b.mobile-view .fv-grouped-product-title-wrapper, #fv-chart-1792487841164-42y2kup0b.labels-on-top .fv-grouped-product-title-wrapper { padding-left: 0 !important; } #fv-chart-1792487841164-42y2kup0b.mobile-view .fv-bar-row, #fv-chart-1792487841164-42y2kup0b.mobile-view .fv-stacked-product, #fv-chart-1792487841164-42y2kup0b.mobile-view .fv-grouped-bar-product, #fv-chart-1792487841164-42y2kup0b.labels-on-top .fv-bar-row, #fv-chart-1792487841164-42y2kup0b.labels-on-top .fv-stacked-product, #fv-chart-1792487841164-42y2kup0b.labels-on-top .fv-grouped-bar-product { flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important; } #fv-chart-1792487841164-42y2kup0b.mobile-view .fv-bar-label:not(.fv-grouped-product-title), #fv-chart-1792487841164-42y2kup0b.labels-on-top .fv-bar-label:not(.fv-grouped-product-title) { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important; } #fv-chart-1792487841164-42y2kup0b.mobile-view .fv-bar-label, #fv-chart-1792487841164-42y2kup0b.mobile-view .fv-grouped-product-title, #fv-chart-1792487841164-42y2kup0b.labels-on-top .fv-bar-label, #fv-chart-1792487841164-42y2kup0b.labels-on-top .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important; } #fv-chart-1792487841164-42y2kup0b.mobile-view .fv-bar-container, #fv-chart-1792487841164-42y2kup0b.mobile-view .fv-bar-cluster, #fv-chart-1792487841164-42y2kup0b.labels-on-top .fv-bar-container, #fv-chart-1792487841164-42y2kup0b.labels-on-top .fv-bar-cluster { width: 100% !important; } #fv-chart-1792487841164-42y2kup0b.mobile-view .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1792487841164-42y2kup0b.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792487841164-42y2kup0b.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1792487841164-42y2kup0b.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus-within, #fv-chart-1792487841164-42y2kup0b.labels-on-top .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1792487841164-42y2kup0b.labels-on-top .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792487841164-42y2kup0b.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1792487841164-42y2kup0b.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus-within { position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important; } #fv-chart-1792487841164-42y2kup0b.mobile-view .fv-x-axis-wrapper, #fv-chart-1792487841164-42y2kup0b.labels-on-top .fv-x-axis-wrapper { margin-left: 0 !important; } #fv-chart-1792487841164-42y2kup0b.mobile-view .fv-x-axis-label-space, #fv-chart-1792487841164-42y2kup0b.labels-on-top .fv-x-axis-label-space { display: none !important; } #fv-chart-1792487841164-42y2kup0b.mobile-view .fv-x-axis-chart-space, #fv-chart-1792487841164-42y2kup0b.labels-on-top .fv-x-axis-chart-space { padding-right: 0 !important; } #fv-chart-1792487841164-42y2kup0b.mobile-view .fv-benchmark-title, #fv-chart-1792487841164-42y2kup0b.labels-on-top .fv-benchmark-title { font-size: 16px !important; } #fv-chart-1792487841164-42y2kup0b.mobile-view .fv-dropdown-title, #fv-chart-1792487841164-42y2kup0b.labels-on-top .fv-dropdown-title { font-size: 16px !important; } #fv-chart-1792487841164-42y2kup0b.mobile-view .fv-carousel-nav-btn, #fv-chart-1792487841164-42y2kup0b.labels-on-top .fv-carousel-nav-btn { padding: 8px 12px !important; font-size: 14px !important; } #fv-chart-1792487841164-42y2kup0b.mobile-view .fv-chart-title, #fv-chart-1792487841164-42y2kup0b.labels-on-top .fv-chart-title { padding: 0 8px !important; } #fv-chart-1792487841164-42y2kup0b.mobile-view .fv-chart-subhead, #fv-chart-1792487841164-42y2kup0b.labels-on-top .fv-chart-subhead { padding: 0 8px !important; } #fv-chart-1792487841164-42y2kup0b.mobile-view .fv-versus-header, #fv-chart-1792487841164-42y2kup0b.labels-on-top .fv-versus-header { flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important; } #fv-chart-1792487841164-42y2kup0b.mobile-view .fv-versus-select-wrapper, #fv-chart-1792487841164-42y2kup0b.labels-on-top .fv-versus-select-wrapper { flex: 1 !important; min-width: 0 !important; width: 100% !important; } #fv-chart-1792487841164-42y2kup0b.mobile-view .fv-versus-select-wrapper.fv-left, #fv-chart-1792487841164-42y2kup0b.labels-on-top .fv-versus-select-wrapper.fv-left { text-align: center !important; padding-right: 0 !important; } #fv-chart-1792487841164-42y2kup0b.mobile-view .fv-versus-select-wrapper.fv-right, #fv-chart-1792487841164-42y2kup0b.labels-on-top .fv-versus-select-wrapper.fv-right { text-align: center !important; padding-left: 0 !important; } #fv-chart-1792487841164-42y2kup0b.mobile-view .fv-versus-select.fv-select-left, #fv-chart-1792487841164-42y2kup0b.labels-on-top .fv-versus-select.fv-select-left { text-align: center !important; } #fv-chart-1792487841164-42y2kup0b.mobile-view .fv-versus-select.fv-select-right, #fv-chart-1792487841164-42y2kup0b.labels-on-top .fv-versus-select.fv-select-right { text-align: center !important; } #fv-chart-1792487841164-42y2kup0b.mobile-view .fv-versus-vs, #fv-chart-1792487841164-42y2kup0b.labels-on-top .fv-versus-vs { text-align: center !important; padding: 0.25rem 0 !important; } #fv-chart-1792487841164-42y2kup0b.mobile-view .fv-versus-select-container, #fv-chart-1792487841164-42y2kup0b.labels-on-top .fv-versus-select-container { max-width: 100% !important; width: 100% !important; } #fv-chart-1792487841164-42y2kup0b.mobile-view .fv-versus-select, #fv-chart-1792487841164-42y2kup0b.labels-on-top .fv-versus-select { font-size: 14px !important; width: 100% !important; } #fv-chart-1792487841164-42y2kup0b.mobile-view .fv-stl-shop-all-btn, #fv-chart-1792487841164-42y2kup0b.labels-on-top .fv-stl-shop-all-btn { bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important; } #fv-chart-1792487841164-42y2kup0b.mobile-view .fv-stl-shop-all-logo, #fv-chart-1792487841164-42y2kup0b.mobile-view .fv-stl-shop-all-icon, #fv-chart-1792487841164-42y2kup0b.labels-on-top .fv-stl-shop-all-logo, #fv-chart-1792487841164-42y2kup0b.labels-on-top .fv-stl-shop-all-icon { width: 2rem !important; height: 2rem !important; } #fv-chart-1792487841164-42y2kup0b.mobile-view .fv-stl-shop-all-icon svg, #fv-chart-1792487841164-42y2kup0b.labels-on-top .fv-stl-shop-all-icon svg { width: 14px !important; height: 14px !important; } #fv-chart-1792487841164-42y2kup0b.mobile-view .fv-bar-commentary-inline, #fv-chart-1792487841164-42y2kup0b.labels-on-top .fv-bar-commentary-inline { display: block !important; margin-left: 0 !important; width: 100% !important; } #fv-chart-1792487841164-42y2kup0b.mobile-view .fv-dials-grid, #fv-chart-1792487841164-42y2kup0b.labels-on-top .fv-dials-grid { grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)) !important; gap: 1.25rem 0.75rem !important; } #fv-chart-1792487841164-42y2kup0b.mobile-view .fv-dial-title, #fv-chart-1792487841164-42y2kup0b.labels-on-top .fv-dial-title { font-size: 16px !important; } #fv-chart-1792487841164-42y2kup0b.mobile-view .fv-y-axis-title { padding-left: 5% !important; } #fv-chart-1792487841164-42y2kup0b.mobile-view.fv-contains-line-chart .fv-footer-content { margin-left: -1rem !important; margin-right: -1rem !important; } @media (max-width: 599px) { #fv-chart-1792487841164-42y2kup0b .fv-pie-container { flex-direction: column !important; gap: 1rem !important; } #fv-chart-1792487841164-42y2kup0b .fv-grouped-product-title-wrapper { padding-left: 0 !important; } #fv-chart-1792487841164-42y2kup0b .fv-bar-row, #fv-chart-1792487841164-42y2kup0b .fv-stacked-product, #fv-chart-1792487841164-42y2kup0b .fv-grouped-bar-product { flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important; } #fv-chart-1792487841164-42y2kup0b .fv-bar-label:not(.fv-grouped-product-title) { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important; } #fv-chart-1792487841164-42y2kup0b .fv-bar-label, #fv-chart-1792487841164-42y2kup0b .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important; } #fv-chart-1792487841164-42y2kup0b .fv-bar-container, #fv-chart-1792487841164-42y2kup0b .fv-bar-cluster { width: 100% !important; } #fv-chart-1792487841164-42y2kup0b .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1792487841164-42y2kup0b .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792487841164-42y2kup0b .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1792487841164-42y2kup0b .fv-bar-row .fv-bar-commentary-inline:focus-within { position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important; } #fv-chart-1792487841164-42y2kup0b .fv-x-axis-wrapper { margin-left: 0 !important; } #fv-chart-1792487841164-42y2kup0b .fv-x-axis-label-space { display: none !important; } #fv-chart-1792487841164-42y2kup0b .fv-x-axis-chart-space { padding-right: 0 !important; } #fv-chart-1792487841164-42y2kup0b .fv-benchmark-title { font-size: 16px !important; } #fv-chart-1792487841164-42y2kup0b .fv-dropdown-title { font-size: 16px !important; } #fv-chart-1792487841164-42y2kup0b .fv-carousel-nav-btn { padding: 8px 12px !important; font-size: 14px !important; } #fv-chart-1792487841164-42y2kup0b .fv-chart-title { padding: 0 8px !important; } #fv-chart-1792487841164-42y2kup0b .fv-chart-subhead { padding: 0 8px !important; } #fv-chart-1792487841164-42y2kup0b .fv-versus-header { flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important; } #fv-chart-1792487841164-42y2kup0b .fv-versus-select-wrapper { flex: 1 !important; min-width: 0 !important; width: 100% !important; } #fv-chart-1792487841164-42y2kup0b .fv-versus-select-wrapper.fv-left { text-align: center !important; padding-right: 0 !important; } #fv-chart-1792487841164-42y2kup0b .fv-versus-select-wrapper.fv-right { text-align: center !important; padding-left: 0 !important; } #fv-chart-1792487841164-42y2kup0b .fv-versus-select.fv-select-left { text-align: center !important; } #fv-chart-1792487841164-42y2kup0b .fv-versus-select.fv-select-right { text-align: center !important; } #fv-chart-1792487841164-42y2kup0b .fv-versus-vs { text-align: center !important; padding: 0.25rem 0 !important; } #fv-chart-1792487841164-42y2kup0b .fv-versus-select-container { max-width: 100% !important; width: 100% !important; } #fv-chart-1792487841164-42y2kup0b .fv-versus-select { font-size: 14px !important; width: 100% !important; } #fv-chart-1792487841164-42y2kup0b .fv-stl-shop-all-btn { bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important; } #fv-chart-1792487841164-42y2kup0b .fv-stl-shop-all-logo, #fv-chart-1792487841164-42y2kup0b .fv-stl-shop-all-icon { width: 2rem !important; height: 2rem !important; } #fv-chart-1792487841164-42y2kup0b .fv-stl-shop-all-icon svg { width: 14px !important; height: 14px !important; } #fv-chart-1792487841164-42y2kup0b .fv-bar-commentary-inline { display: block !important; margin-left: 0 !important; width: 100% !important; } #fv-chart-1792487841164-42y2kup0b .fv-dials-grid { grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)) !important; gap: 1.25rem 0.75rem !important; } #fv-chart-1792487841164-42y2kup0b .fv-dial-title { font-size: 16px !important; } #fv-chart-1792487841164-42y2kup0b .fv-y-axis-title { padding-left: 5% !important; } #fv-chart-1792487841164-42y2kup0b.fv-contains-line-chart .fv-footer-content { margin-left: -1rem !important; margin-right: -1rem !important; } }{ "@context": "https://schema.org", "@type": "Dataset", "name": "Battery life results", "description": "How long does the battery last?", "creator": { "@type": "Organization", "name": "TechRadar", "logo": "https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png" }, "isAccessibleForFree": true, "dateCreated": "2026-10-20T09:17:21.164Z", "citation": "Our battery life benchmark involves playing a looped 1080p video at 50% brightness until the laptop turns off.", "keywords": [ "Acer Googlebook 14", "Battery life web surfing test", "benchmark", "comparison", "performance", "review", "TechRadar" ], "measurementTechnique": "Performance Benchmarking", "variableMeasured": [ { "@type": "PropertyValue", "name": "Acer Googlebook 14 – Battery life web surfing test", "value": 10.416666666666666, "unitText": "hours, mins" } ]}{"version":2,"exportedAt":"2026-10-20T09:17:21.164Z","state":{"data":[{"productName":"Samsung Galaxy Book6 Ultra","attribute":"Battery life video test","value":15.183333333333334,"unit":"hours, mins","displayValue":"15:11","testDate":"","color":"","site":"TechRadar"},{"productName":"Samsung Galaxy Book6 Pro","attribute":"Battery life video test","value":14.866666666666667,"unit":"hours, mins","displayValue":"14:52","testDate":"","color":"","site":"TechRadar"},{"productName":"Dell XPS 14 (2026)","attribute":"Battery life video test","value":12.316666666666666,"unit":"hours, mins","displayValue":"12:19","testDate":"","color":"","site":"TechRadar"},{"productName":"Acer Googlebook 14","attribute":"Battery life web surfing test","value":10.416666666666666,"unit":"hours, mins","displayValue":"10:25","testDate":"","color":"","site":"TechRadar"}],"products":["Samsung Galaxy Book6 Ultra","Samsung Galaxy Book6 Pro","Dell XPS 14 (2026)","Acer Googlebook 14"],"attributes":["Battery life video test","Battery life web surfing test"],"selectedProducts":["Acer Googlebook 14"],"selectedPrimaryProduct":"Acer Googlebook 14","selectedAttributes":["Battery life web surfing test"],"productColors":[{"productName":"Samsung Galaxy Book6 Ultra","color":"#2E6E93"},{"productName":"Samsung Galaxy Book6 Pro","color":"#E8238C"},{"productName":"Dell XPS 14 (2026)","color":"#5DA8D4"},{"productName":"Acer Googlebook 14","color":"#F06EAF"}],"initialProductColors":[{"productName":"Battery life video test","color":"#2E6E93"}],"attributeColors":[],"attributeGroups":[],"chartType":"Bar","roundupViewType":"bars","stlSelectedHotspotId":null,"iaSelectedNodeId":null,"barChartMaxValueOverrides":{},"barChartMinValueOverrides":{},"displayMode":"All Charts","brand":{"name":"TechRadar","logoUrl":"https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png","sliderLogoUrl":"https://proof.vanilla.tools/media/images/brandLogos/techradar.png","colors":{"primary":"#2E6E93","secondary":"#E8238C","accent":"#FFFFFF","background":"#ffffff","text":"#1F2937","productColors":["#2E6E93","#E8238C","#5DA8D4","#F06EAF","#1A4E6B","#B81C70","#8CC3E0","#F499C9"]}},"textContent":{"title":"Battery life results","subhead":"How long does the battery last?","caption":"Our battery life benchmark involves playing a looped 1080p video at 50% brightness until the laptop turns off.","productNameOverrides":{},"attributeNameOverrides":{},"chartTitleOverrides":{"versus-chart":"Versus Comparison"},"xAxisLabelOverrides":{},"subheadOverrides":{"versus-chart":"How long does the battery last?"},"captionOverrides":{"versus-chart":"Our battery life benchmark involves playing a looped 1080p video at 50% brightness until the laptop turns off."},"unitOverrides":{},"multiValueLegendOverrides":{},"barCommentaryOverrides":{}},"dataEverLoaded":true,"showAISuggestionsButton":false,"barChartShowXAxis":false,"groupedBarChartShowProductName":false,"barChartLabelsOnTop":false,"experimentalEnablePieChart":false,"slideshowUseDropdown":false},"slides":[]}Battery life results

How long does the battery last?

Battery life web surfing testAcer Googlebook 1410:25Battery life web surfing test DataProductValueAcer Googlebook 1410.416666666666666Our battery life benchmark involves playing a looped 1080p video at 50% brightness until the laptop turns off. window.iFrameResizer = { heightCalculationMethod: 'taggedElement' }; (function() { function createChartAnimator() { return function animateChartWrapper(chartWrapper) { if (!chartWrapper) return; function animateBars(chartElement) { if (!chartElement) return; var bars = chartElement.querySelectorAll('.fv-bar, .fv-stacked-segment'); bars.forEach(function(bar, index) { bar.style.setProperty('width', '0%', 'important'); bar.style.setProperty('transition', 'none', 'important'); var targetWidth = bar.dataset.targetWidth; if (targetWidth === undefined) return; void bar.offsetWidth; var targetMargin = bar.dataset.targetMargin; var baseMargin = bar.dataset.baseMargin; if (baseMargin !== undefined) { bar.style.setProperty('margin-left', baseMargin + '%', 'important'); } setTimeout(function() { var marginTransition = baseMargin !== undefined ? ', margin-left 0.8s ease-out' : ''; bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out' + marginTransition, 'important'); bar.style.setProperty('width', targetWidth + '%', 'important'); if (targetMargin !== undefined && baseMargin !== undefined) { bar.style.setProperty('margin-left', targetMargin + '%', 'important'); } }, index * 50 + 50); }); } function animateLineChart(chartElement) { if (!chartElement) return; var lineSvg = chartElement.querySelector('svg'); if (!lineSvg) return; var paths = lineSvg.querySelectorAll('.riv-line-path'); paths.forEach(function(p, i) { if (typeof p.getTotalLength === 'function') { var len = p.getTotalLength(); p.style.transition = 'none'; p.style.strokeDasharray = len; p.style.strokeDashoffset = len; p.getBoundingClientRect(); setTimeout(function() { p.style.transition = 'stroke-dashoffset 1s ease-out ' + (i * 0.1) + 's, stroke-width 0.2s, opacity 0.2s'; p.style.strokeDashoffset = '0'; }, 100); } }); var dots = lineSvg.querySelectorAll('.riv-dot'); dots.forEach(function(dot, i) { dot.style.opacity = '0'; setTimeout(function() { dot.style.transition = 'opacity 0.3s ease'; dot.style.opacity = '1'; }, 500 + i * 10); }); } function animateDials(chartElement) { if (!chartElement) return; var needles = chartElement.querySelectorAll('.fv-dial-needle'); needles.forEach(function(needle, index) { var targetAngle = needle.dataset.targetAngle; var baseAngle = needle.dataset.baseAngle || '-132'; if (targetAngle === undefined) return; needle.style.setProperty('transition', 'none', 'important'); needle.style.setProperty('transform', 'rotate(' + baseAngle + 'deg)', 'important'); void needle.getBoundingClientRect(); setTimeout(function() { needle.style.setProperty('transition', 'transform 0.9s cubic-bezier(0.22, 1, 0.36, 1)', 'important'); needle.style.setProperty('transform', 'rotate(' + targetAngle + 'deg)', 'important'); }, index * 60 + 50); }); } var charts = chartWrapper.querySelectorAll('.fv-chart-item'); charts.forEach(function(chart) { if (window.getComputedStyle(chart).display === 'none') return; var chartType = chart.dataset.chartType; if (chartType === 'Line') { animateLineChart(chart); } else if (chartType !== 'Pie') { animateBars(chart); animateDials(chart); } }); }; } var fvLocalAnimate = createChartAnimator(); window.fvAnimateCharts = fvLocalAnimate; function initialize(uniqueId, isSlideshow) { var root = document.getElementById(uniqueId); if (!root && !isSlideshow) return; function setupWrapper(chartWrapper) { if (!chartWrapper) return; /* Responsive mobile view handling */ function checkMobileView() { var width = chartWrapper.getBoundingClientRect().width; var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599; var isMobile; if (width === 0) { isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches; } else { isMobile = isMobileDevice || width < 600; } if (isMobile) { chartWrapper.classList.add('mobile-view'); } else { chartWrapper.classList.remove('mobile-view'); } } checkMobileView(); if (typeof ResizeObserver !== 'undefined') { var ro = new ResizeObserver(function() { checkMobileView(); }); ro.observe(chartWrapper); } window.addEventListener('resize', checkMobileView); var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true'; if (labelsOnTop) { var charts = chartWrapper.querySelectorAll('.fv-chart-item'); var hasVisibleBarChart = false; charts.forEach(function(c) { if (window.getComputedStyle(c).display !== 'none') { var cType = c.dataset.chartType; if (cType === 'Bar' || cType === 'Diverging Bar' || cType === 'Stacked Bar' || cType === 'Versus') { hasVisibleBarChart = true; } } }); if (hasVisibleBarChart) { chartWrapper.classList.add('labels-on-top'); } else { chartWrapper.classList.remove('labels-on-top'); } } else { chartWrapper.classList.remove('labels-on-top'); } /* Legend interactions */ chartWrapper.querySelectorAll('.riv-line-legend').forEach(function(legend) { var chartId = legend.dataset.chart; var chart = chartWrapper.querySelector('[id="' + chartId + '"]'); if (!chart) return; var lines = chart.querySelectorAll('.riv-line-path'); var dots = chart.querySelectorAll('.riv-dot'); var legendItems = legend.querySelectorAll('.riv-legend-item'); legendItems.forEach(function(item) { var productName = item.dataset.product; var safeProductName = productName.replace(/"/g, '\\"'); var line = chart.querySelector('.riv-line-path[data-product="' + safeProductName + '"]'); var productDots = chart.querySelectorAll('.riv-dot[data-product="' + safeProductName + '"]'); if (line && !line.dataset.origStroke) { line.dataset.origStroke = line.getAttribute('stroke-width') || '2'; } var highlight = function() { if (legend.querySelector('.isolated')) return; lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); }); dots.forEach(function(d) { d.style.opacity = '0.2'; }); legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; }); if (line) { line.style.opacity = '1'; line.setAttribute('stroke-width', '4'); } productDots.forEach(function(d) { d.style.opacity = '1'; }); item.style.opacity = '1'; }; var clearHighlight = function() { if (legend.querySelector('.isolated')) return; lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); }); dots.forEach(function(d) { d.style.opacity = '1'; }); legendItems.forEach(function(i) { i.style.opacity = '1'; }); }; var toggleIsolate = function() { var isIsolated = item.classList.contains('isolated'); legendItems.forEach(function(i) { i.classList.remove('isolated'); }); if (isIsolated) { lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); }); dots.forEach(function(d) { d.style.opacity = '1'; }); legendItems.forEach(function(i) { i.style.opacity = '1'; }); } else { item.classList.add('isolated'); lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); }); dots.forEach(function(d) { d.style.opacity = '0.2'; }); legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; }); if (line) { line.style.opacity = '1'; line.setAttribute('stroke-width', '4'); } productDots.forEach(function(d) { d.style.opacity = '1'; }); item.style.opacity = '1'; } }; item.addEventListener('mouseenter', highlight); item.addEventListener('focus', highlight); item.addEventListener('mouseleave', clearHighlight); item.addEventListener('blur', clearHighlight); item.addEventListener('click', toggleIsolate); if (line) { line.style.cursor = 'pointer'; line.addEventListener('mouseenter', highlight); line.addEventListener('mouseleave', clearHighlight); line.addEventListener('click', toggleIsolate); } }); }); /* Versus Chart Logic */ var versusCharts = chartWrapper.querySelectorAll('.fv-versus-chart'); versusCharts.forEach(function(vc) { var dataJson = vc.getAttribute('data-versus-data'); var leftColor = vc.getAttribute('data-left-color') || '#E53935'; var rightColor = vc.getAttribute('data-right-color') || '#FFB300'; if (!dataJson) return; var versusData = JSON.parse(dataJson); var leftSelect = vc.querySelector('.fv-select-left'); var rightSelect = vc.querySelector('.fv-select-right'); var rows = vc.querySelectorAll('.fv-versus-row'); function updateVersusChart() { var leftProduct = leftSelect.value; var rightProduct = rightSelect.value; leftSelect.style.color = leftColor; leftSelect.style.borderColor = leftColor; rightSelect.style.color = rightColor; rightSelect.style.borderColor = rightColor; rows.forEach(function(row) { var index = parseInt(row.getAttribute('data-index')); var data = versusData[index]; if (!data) return; var leftVal = data.productData[leftProduct] ? data.productData[leftProduct].value : undefined; var rightVal = data.productData[rightProduct] ? data.productData[rightProduct].value : undefined; var leftIsNum = typeof leftVal === 'number'; var rightIsNum = typeof rightVal === 'number'; var leftNum = leftIsNum ? leftVal : 0; var rightNum = rightIsNum ? rightVal : 0; var maxVal = Math.max(leftNum, rightNum, 0.0001); var leftWidth = leftIsNum ? (leftNum / maxVal) * 95 : 0; var rightWidth = rightIsNum ? (rightNum / maxVal) * 85 : 0; var winner = null; var pctDiffStr = null; if (leftIsNum && rightIsNum) { if (leftNum > rightNum) { winner = 'left'; if (rightNum > 0) { var diff = Math.round(((leftNum - rightNum) / rightNum) * 100); pctDiffStr = '+' + diff.toLocaleString() + '%'; } } else if (rightNum > leftNum) { winner = 'right'; if (leftNum > 0) { var diff = Math.round(((rightNum - leftNum) / leftNum) * 100); pctDiffStr = '+' + diff.toLocaleString() + '%'; } } } var leftDisplay = data.productData[leftProduct] && data.productData[leftProduct].displayValue !== undefined ? data.productData[leftProduct].displayValue : (leftIsNum ? leftNum.toLocaleString() : (leftVal !== undefined ? leftVal : '-')); var rightDisplay = data.productData[rightProduct] && data.productData[rightProduct].displayValue !== undefined ? data.productData[rightProduct].displayValue : (rightIsNum ? rightNum.toLocaleString() : (rightVal !== undefined ? rightVal : '-')); var unit = (data.productData[leftProduct] && data.productData[leftProduct].unit) || (data.productData[rightProduct] && data.productData[rightProduct].unit) || ''; var leftTextStr = leftDisplay; var rightTextStr = rightDisplay; var leftBar = row.querySelector('.fv-versus-bar-left'); var rightBar = row.querySelector('.fv-versus-bar-right'); var leftText = row.querySelector('.fv-inside-left'); var rightText = row.querySelector('.fv-inside-right'); var labelText = row.querySelector('.fv-versus-label span'); var existingPctDiffs = row.querySelectorAll('.fv-versus-pct-diff'); existingPctDiffs.forEach(function(el) { el.remove(); }); if (winner === 'left' && pctDiffStr) { var pctSpan = document.createElement('span'); pctSpan.className = 'fv-versus-pct-diff'; pctSpan.style.color = 'rgba(255, 255, 255, 0.9)'; pctSpan.textContent = pctDiffStr; if (leftBar) leftBar.insertBefore(pctSpan, leftBar.firstChild); } else if (winner === 'right' && pctDiffStr) { var pctSpan = document.createElement('span'); pctSpan.className = 'fv-versus-pct-diff'; pctSpan.style.color = 'rgba(255, 255, 255, 0.9)'; pctSpan.textContent = pctDiffStr; if (rightBar) rightBar.appendChild(pctSpan); } if (leftBar) { leftBar.style.backgroundColor = leftColor; leftBar.dataset.targetWidth = leftWidth; leftBar.style.setProperty('--target-width', leftWidth + '%'); leftBar.style.width = leftWidth + '%'; } if (rightBar) { rightBar.style.backgroundColor = rightColor; rightBar.dataset.targetWidth = rightWidth; rightBar.style.setProperty('--target-width', rightWidth + '%'); rightBar.style.width = rightWidth + '%'; } if (leftText) { leftText.innerHTML = leftTextStr; } if (rightText) { rightText.innerHTML = rightTextStr; } if (labelText) { labelText.textContent = data.attribute + (unit ? ' (' + unit + ')' : ''); } }); } if (leftSelect) leftSelect.addEventListener('change', updateVersusChart); if (rightSelect) rightSelect.addEventListener('change', updateVersusChart); }); /* Bar Commentary Hover Logic */ var barRows = chartWrapper.querySelectorAll('.fv-bar-row'); var globalCaptionEl = chartWrapper.querySelector('.rv-chart-caption'); var fallbackCaptionHtml = globalCaptionEl ? globalCaptionEl.innerHTML : ''; barRows.forEach(function(row) { var commentaryEl = row.querySelector('[data-commentary-key]'); if (commentaryEl) { var commentaryText = commentaryEl.textContent; if (commentaryText && commentaryText.trim().length > 0) { row.addEventListener('mouseenter', function() { if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) { globalCaptionEl.innerHTML = commentaryText; globalCaptionEl.classList.add('fv-bar-active-caption'); } }); row.addEventListener('mouseleave', function() { if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) { globalCaptionEl.innerHTML = fallbackCaptionHtml; globalCaptionEl.classList.remove('fv-bar-active-caption'); } }); } } }); /* Carousel & Dropdown Logic */ var charts = chartWrapper.querySelectorAll('.fv-chart-item'); var dropdown = chartWrapper.querySelector('.fv-dropdown-title'); var prevBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.prev'); var nextBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.next'); var carouselTitle = chartWrapper.querySelector('.fv-carousel-title-controls .fv-benchmark-title'); var counter = chartWrapper.querySelector('.fv-carousel-counter'); var subheadEl = chartWrapper.querySelector('.fv-chart-subhead'); var captionEl = chartWrapper.querySelector('.rv-chart-caption'); var footerContentEl = chartWrapper.querySelector('.fv-footer-content'); var bottomBarEl = chartWrapper.querySelector('.fv-bottom-bar'); var logoEl = chartWrapper.querySelector('.fv-logo'); if (charts.length > 1 && (dropdown || prevBtn)) { var currentChartIndex = 0; var titles = []; if (dropdown) { titles = Array.from(dropdown.options).map(function(o) { return o.text; }); } else { charts.forEach(function(c) { titles.push(c.getAttribute('data-title') || ''); }); } function showInternalChart(index) { if (index < 0) index = charts.length - 1; if (index >= charts.length) index = 0; currentChartIndex = index; charts.forEach(function(c, i) { c.style.display = i === index ? 'block' : 'none'; if (i === index) { var cType = c.dataset.chartType; if (cType !== 'Pie') { fvLocalAnimate(chartWrapper); } var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true'; if (labelsOnTop && (cType === 'Bar' || cType === 'Diverging Bar' || cType === 'Stacked Bar' || cType === 'Versus')) { chartWrapper.classList.add('labels-on-top'); } else { chartWrapper.classList.remove('labels-on-top'); } } }); if (dropdown) dropdown.value = index; if (carouselTitle && titles[index]) carouselTitle.textContent = titles[index]; if (counter) counter.textContent = (index + 1) + ' of ' + charts.length; var activeChart = charts[index]; if (activeChart) { var newSubhead = activeChart.getAttribute('data-subhead'); var newCaption = activeChart.getAttribute('data-caption'); var currentChartType = activeChart.getAttribute('data-chart-type'); var hideGlobalCaption = currentChartType === 'Countdown' || currentChartType === 'Image Comparison' || currentChartType === 'Shop the Collection'; if (subheadEl) subheadEl.textContent = newSubhead || ''; if (captionEl) { captionEl.textContent = newCaption || ''; fallbackCaptionHtml = newCaption || ''; } if (footerContentEl) { if (newCaption && newCaption.trim().length > 0 && !hideGlobalCaption) { footerContentEl.style.display = 'block'; if (bottomBarEl) bottomBarEl.style.display = 'flex'; } else { footerContentEl.style.display = 'none'; if (bottomBarEl && !logoEl) { bottomBarEl.style.display = 'none'; } } } } } if (dropdown) dropdown.addEventListener('change', function(e) { showInternalChart(parseInt(e.target.value)); }); if (prevBtn) prevBtn.addEventListener('click', function() { showInternalChart(currentChartIndex - 1); }); if (nextBtn) nextBtn.addEventListener('click', function() { showInternalChart(currentChartIndex + 1); }); } /* Image Comparison Logic */ var imageCompareWrappers = chartWrapper.querySelectorAll('.fv-image-compare-wrapper'); imageCompareWrappers.forEach(function(wrapper) { var inner = wrapper.querySelector('.fv-image-compare-inner') || wrapper; var slider = wrapper.querySelector('.fv-image-compare-slider'); var fgImage = wrapper.querySelector('.fv-image-compare-fg'); var bgImage = wrapper.querySelector('.fv-image-compare-bg'); var labelLeft = wrapper.querySelector('.fv-image-compare-label-left'); var labelRight = wrapper.querySelector('.fv-image-compare-label-right'); var isDragging = false; var scale = 1; var panX = 0; var panY = 0; var isPanning = false; var hasPanned = false; var lastClientX = 0; var lastClientY = 0; var initialDistance = null; var lastCenterX = null; var lastCenterY = null; function updateTransform() { if (wrapper.classList.contains('fv-image-compare-fullscreen')) { inner.style.setProperty('transform', 'translate(' + panX + 'px, ' + panY + 'px) scale(' + scale + ')', 'important'); } else { inner.style.removeProperty('transform'); scale = 1; panX = 0; panY = 0; } } function constrainPan() { var rect = wrapper.getBoundingClientRect(); var maxPanX = Math.max(0, (rect.width * scale - rect.width) / 2); var maxPanY = Math.max(0, (rect.height * scale - rect.height) / 2); panX = Math.max(-maxPanX, Math.min(panX, maxPanX)); panY = Math.max(-maxPanY, Math.min(panY, maxPanY)); } wrapper.addEventListener('wheel', function(e) { if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return; e.preventDefault(); var zoomSensitivity = 0.005; var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity); var newScale = Math.max(1, Math.min(scale * zoomFactor, 5)); if (newScale === scale) return; var rect = wrapper.getBoundingClientRect(); var mouseX = e.clientX - rect.left - rect.width / 2; var mouseY = e.clientY - rect.top - rect.height / 2; var ratio = newScale / scale; panX = mouseX - (mouseX - panX) * ratio; panY = mouseY - (mouseY - panY) * ratio; scale = newScale; constrainPan(); updateTransform(); }, { passive: false }); wrapper.addEventListener('mousedown', function(e) { if (!wrapper.classList.contains('fv-image-compare-fullscreen') || scale <= 1) return; if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return; isPanning = true; hasPanned = false; lastClientX = e.clientX; lastClientY = e.clientY; }); window.addEventListener('mousemove', function(e) { if (!isPanning) return; var dx = e.clientX - lastClientX; var dy = e.clientY - lastClientY; if (Math.abs(dx) > 2 || Math.abs(dy) > 2) { hasPanned = true; } lastClientX = e.clientX; lastClientY = e.clientY; panX += dx; panY += dy; constrainPan(); updateTransform(); }); window.addEventListener('mouseup', function() { isPanning = false; }); wrapper.addEventListener('touchstart', function(e) { if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return; if (e.touches.length === 2) { e.preventDefault(); var dx = e.touches[0].clientX - e.touches[1].clientX; var dy = e.touches[0].clientY - e.touches[1].clientY; initialDistance = Math.sqrt(dx * dx + dy * dy); var rect = wrapper.getBoundingClientRect(); lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2; lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2; hasPanned = true; } else if (e.touches.length === 1 && scale > 1) { if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return; isPanning = true; hasPanned = false; lastClientX = e.touches[0].clientX; lastClientY = e.touches[0].clientY; } }, { passive: false }); wrapper.addEventListener('touchmove', function(e) { if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return; if (e.touches.length === 2 && initialDistance !== null) { e.preventDefault(); var dx = e.touches[0].clientX - e.touches[1].clientX; var dy = e.touches[0].clientY - e.touches[1].clientY; var distance = Math.sqrt(dx * dx + dy * dy); if (initialDistance > 0) { var zoomFactor = distance / initialDistance; var newScale = Math.max(1, Math.min(scale * zoomFactor, 5)); var rect = wrapper.getBoundingClientRect(); var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2; var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2; var ratio = newScale / scale; panX = centerX - (centerX - panX) * ratio; panY = centerY - (centerY - panY) * ratio; if (lastCenterX !== null && lastCenterY !== null) { panX += (centerX - lastCenterX); panY += (centerY - lastCenterY); } scale = newScale; lastCenterX = centerX; lastCenterY = centerY; constrainPan(); updateTransform(); } initialDistance = distance; } else if (e.touches.length === 1 && isPanning) { e.preventDefault(); var dx = e.touches[0].clientX - lastClientX; var dy = e.touches[0].clientY - lastClientY; if (Math.abs(dx) > 2 || Math.abs(dy) > 2) { hasPanned = true; } lastClientX = e.touches[0].clientX; lastClientY = e.touches[0].clientY; panX += dx; panY += dy; constrainPan(); updateTransform(); } }, { passive: false }); wrapper.addEventListener('touchend', function(e) { if (e.touches.length < 2) { initialDistance = null; } if (e.touches.length === 0) { isPanning = false; } }); function handleMove(clientX) { var rect = inner.getBoundingClientRect(); var x = Math.max(0, Math.min(clientX - rect.left, rect.width)); var percent = Math.max(0, Math.min((x / rect.width) * 100, 100)); if (slider) slider.style.setProperty('left', percent + '%', 'important'); if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important'); if (labelLeft) { if (percent < 10) { labelLeft.style.setProperty('opacity', '0', 'important'); } else { labelLeft.style.setProperty('opacity', '1', 'important'); } } if (labelRight) { if (percent > 90) { labelRight.style.setProperty('opacity', '0', 'important'); } else { labelRight.style.setProperty('opacity', '1', 'important'); } } } function onMouseMove(e) { if (!isDragging) return; handleMove(e.clientX); } function onTouchMove(e) { if (!isDragging) return; e.preventDefault(); handleMove(e.touches[0].clientX); } function stopDragging() { isDragging = false; window.removeEventListener('mousemove', onMouseMove); window.removeEventListener('mouseup', stopDragging); window.removeEventListener('touchmove', onTouchMove); window.removeEventListener('touchend', stopDragging); } if (slider) { var startDrag = function(clientX) { isDragging = true; handleMove(clientX); window.addEventListener('mousemove', onMouseMove); window.addEventListener('mouseup', stopDragging); }; var startTouchDrag = function(clientX) { isDragging = true; handleMove(clientX); window.addEventListener('touchmove', onTouchMove, { passive: false }); window.addEventListener('touchend', stopDragging); }; slider.addEventListener('mousedown', function(e) { e.preventDefault(); startDrag(e.clientX); }); slider.addEventListener('touchstart', function(e) { e.preventDefault(); startTouchDrag(e.touches[0].clientX); }, { passive: false }); } var expandBtn = wrapper.querySelector('.fv-image-compare-expand-btn'); var closeBtn = wrapper.querySelector('.fv-image-compare-close-btn'); if (expandBtn) { if (window !== window.parent) { expandBtn.style.display = 'none'; } else { expandBtn.addEventListener('click', function(e) { e.stopPropagation(); wrapper.classList.add('fv-image-compare-fullscreen'); document.body.style.overflow = 'hidden'; if (fgImage && fgImage.dataset.highresSrc) { fgImage.src = fgImage.dataset.highresSrc; fgImage.removeAttribute('srcset'); fgImage.removeAttribute('sizes'); } if (bgImage && bgImage.dataset.highresSrc) { bgImage.src = bgImage.dataset.highresSrc; bgImage.removeAttribute('srcset'); bgImage.removeAttribute('sizes'); } }); } } if (closeBtn) { closeBtn.addEventListener('click', function(e) { e.stopPropagation(); wrapper.classList.remove('fv-image-compare-fullscreen'); document.body.style.overflow = ''; updateTransform(); }); } document.addEventListener('keydown', function(e) { if (e.key === 'Escape' && wrapper.classList.contains('fv-image-compare-fullscreen')) { wrapper.classList.remove('fv-image-compare-fullscreen'); document.body.style.overflow = ''; updateTransform(); } }); }); /* Shop The Look Hotspots */ var hotspots = chartWrapper.querySelectorAll('.fv-stl-hotspot-btn'); var allProductsModal = chartWrapper.querySelector('.fv-stl-all-products-modal'); var shopAllBtn = chartWrapper.querySelector('.fv-stl-shop-all-btn'); var stlContainer = chartWrapper.querySelector('.fv-stl-container'); function closeAllModals() { if (allProductsModal) { allProductsModal.classList.remove('is-active'); var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item'); items.forEach(function(item) { item.classList.remove('is-highlighted'); }); if (stlContainer) { setTimeout(function() { if (!allProductsModal.classList.contains('is-active')) { stlContainer.style.minHeight = ''; if ('parentIFrame' in window) { window.parentIFrame.size(); } } }, 300); } } hotspots.forEach(function(btn) { btn.setAttribute('aria-expanded', 'false'); }); if ('parentIFrame' in window) { window.parentIFrame.size(); } } hotspots.forEach(function(btn) { btn.addEventListener('click', function(e) { e.stopPropagation(); var hotspotId = btn.getAttribute('data-hotspot-id'); var isExpanded = btn.getAttribute('aria-expanded') === 'true'; closeAllModals(); if (!isExpanded && allProductsModal) { btn.setAttribute('aria-expanded', 'true'); allProductsModal.classList.add('is-active'); var container = btn.closest('.fv-stl-container'); if (container && container.offsetHeight < 450) { container.style.minHeight = '450px'; } var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]'); if (targetItem) { targetItem.classList.add('is-highlighted'); setTimeout(function() { targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' }); }, 100); } if ('parentIFrame' in window) { window.parentIFrame.size(); } } }); }); if (shopAllBtn && allProductsModal) { shopAllBtn.addEventListener('click', function(e) { e.stopPropagation(); closeAllModals(); allProductsModal.classList.add('is-active'); var container = shopAllBtn.closest('.fv-stl-container'); if (container && container.offsetHeight < 450) { container.style.minHeight = '450px'; } if ('parentIFrame' in window) { window.parentIFrame.size(); } }); } if (allProductsModal) { var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close'); if (closeAllBtn) { closeAllBtn.addEventListener('click', function(e) { e.stopPropagation(); closeAllModals(); }); } } chartWrapper.addEventListener('click', function(e) { if (!e.target.closest('.fv-stl-all-products-content')) { closeAllModals(); } }); if (allProductsModal) { allProductsModal.addEventListener('click', function(e) { if (!e.target.closest('.fv-stl-all-products-content')) { closeAllModals(); } }); } /* Image Annotation Logic */ var iaNodes = chartWrapper.querySelectorAll('.fv-ia-node-button'); var iaWrapper = chartWrapper.querySelector('.fv-ia-wrapper'); var originalCaption = chartWrapper.querySelector('.fv-original-caption') || captionEl; var dynamicCaption = chartWrapper.querySelector('.fv-ia-dynamic-caption'); var exploreBtn = chartWrapper.querySelector('.fv-ia-explore-btn'); var currentIaIndex = -1; function closeAllIANodes() { iaNodes.forEach(function(btn) { btn.classList.remove('is-active'); }); if (originalCaption) originalCaption.style.display = 'block'; if (dynamicCaption) dynamicCaption.style.display = 'none'; } function resetExploreBtn() { currentIaIndex = -1; if (exploreBtn) { var exploreSpan = exploreBtn.querySelector('span'); if (exploreSpan) exploreSpan.textContent = 'Explore'; } } iaNodes.forEach(function(btn, index) { btn.addEventListener('click', function(e) { e.stopPropagation(); var isActive = btn.classList.contains('is-active'); closeAllIANodes(); if (!isActive) { currentIaIndex = index; if (exploreBtn) { var exploreSpan = exploreBtn.querySelector('span'); if (exploreSpan) exploreSpan.textContent = 'Next'; } btn.classList.add('is-active'); if (dynamicCaption) { var title = btn.getAttribute('data-title') || ''; var desc = btn.getAttribute('data-desc') || ''; dynamicCaption.innerHTML = ''; var strongTag = document.createElement('strong'); strongTag.textContent = title; dynamicCaption.appendChild(strongTag); if (desc) { dynamicCaption.appendChild(document.createTextNode(' - ' + desc)); } if (originalCaption) originalCaption.style.display = 'none'; dynamicCaption.style.display = 'block'; if (footerContentEl) footerContentEl.style.display = 'block'; } } else { resetExploreBtn(); } }); }); if (exploreBtn) { exploreBtn.addEventListener('click', function(e) { e.stopPropagation(); if (iaNodes.length === 0) return; var nextIndex = currentIaIndex + 1; if (nextIndex >= iaNodes.length) { closeAllIANodes(); resetExploreBtn(); } else { currentIaIndex = nextIndex; var targetBtn = iaNodes[currentIaIndex]; if (targetBtn) { if (targetBtn.classList.contains('is-active')) { targetBtn.click(); } targetBtn.click(); } } }); } if (iaWrapper) { iaWrapper.addEventListener('click', function(e) { if (!e.target.closest('.fv-ia-node-button') && !e.target.closest('.fv-ia-explore-btn')) { closeAllIANodes(); resetExploreBtn(); } }); } /* Initial Animation */ chartWrapper._fvAnimate = fvLocalAnimate; fvLocalAnimate(chartWrapper); /* Countdown Logic */ var countdownContainer = chartWrapper.querySelector('.fv-countdown-container'); if (countdownContainer) { var targetDateAttr = countdownContainer.getAttribute('data-target-date'); if (targetDateAttr) { var targetDate = new Date(targetDateAttr); var pad = function(n) { return (n < 10 ? '0' : '') + n; }; var updateCountdown = function() { var difference = +targetDate - +new Date(); var d = 0, h = 0, m = 0, s = 0; if (difference > 0) { d = Math.floor(difference / (1000 * 60 * 60 * 24)); h = Math.floor((difference / (1000 * 60 * 60)) % 24); m = Math.floor((difference / 1000 / 60) % 60); s = Math.floor((difference / 1000) % 60); } var daysEl = countdownContainer.querySelector('[data-time="days"]'); var hoursEl = countdownContainer.querySelector('[data-time="hours"]'); var minsEl = countdownContainer.querySelector('[data-time="minutes"]'); var secsEl = countdownContainer.querySelector('[data-time="seconds"]'); if (daysEl) daysEl.textContent = d; if (hoursEl) hoursEl.textContent = pad(h); if (minsEl) minsEl.textContent = pad(m); if (secsEl) secsEl.textContent = pad(s); }; updateCountdown(); setInterval(updateCountdown, 1000); } } } if (false) { var slideshowContainer = document.getElementById(uniqueId + '-slideshow'); if (slideshowContainer) { var slides = slideshowContainer.querySelectorAll('.fv-slide'); slides.forEach(function(slide) { setupWrapper(slide.querySelector('.fv-chart-wrapper')); }); } } else { setupWrapper(root); } } if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1792487841164-42y2kup0b', false); }); } else { initialize('fv-chart-1792487841164-42y2kup0b', false); } })();

Because Googlebook OS has been designed as a lightweight operating system, similar to Chrome OS, I was expecting very good results from the Acer Googlebook 14’s battery.

Acer suggests that it will last up to 14 hours for local video playback and up to 16 hours of web browsing. In our battery benchmark tests, which replicated moderate web browsing activity, the Acer Googlebook 14 in fact lasted for just under 10 and a half hours.

This is below what Acer claims, but it’s not bad — expect the Acer Googlebook 14 to last well over a single work or school day on battery, and with some tweaks you should be able to get a few more hours out of the battery.

However, we’re increasingly seeing laptops with battery lives hovering around 20 hours these days, so the 10 hour battery life of the Acer Googlebook 14 isn’t as impressive as it would have been a few years ago.View Deal

Should I buy the Acer Googlebook 14?Buy the Acer Googlebook 14 if...

✅ You have an Android smartphone and need a new laptop
The Acer Googlebook 14 works really well with Android smartphones thanks to some great features of Googlebook OS, such as streaming apps from your phone to the laptop. Just check compatibility before you buy.
✅ You were thinking of buying an Android tablet as well
Thanks to its 2-in-1 design and ability to run Android apps natively, the Acer Googlebook 14 offers a great way to save a bit of money and have a device that can act as both a laptop and an Android tablet.
✅ You’re all-in on Google’s AI ambitions
Google’s Gemini AI is tightly integrated into the Googlebook OS software, so if you already use it a lot, then you’ll love the Acer Googlebook 14.

Don't buy the Acer Googlebook 14 if...

❌ You rely on a certain Windows or macOS app
While Googlebooks can run web apps and thousands of Android apps, it can’t run Windows or macOS apps. In the future, devs might make Googlebook OS-compatible versions, but that’s not guaranteed, so if there’s a critical app you rely on, you should look elsewhere.
❌ You have an iPhone
So many of the Acer Googlebook 14’s benefits are tied to having an Android phone, and while there are some features that work with iPhones, you’ll be missing out on a lot — and you’d be much better off getting a MacBook, anyway.

Also consider

Samsung Galaxy Book6 Pro (14-inch)

Pros
  • Exquisite design
  • Glorious large display
  • Respectable graphical performance
Cons
  • Not the lightest
  • Lacks ports
  • Heavy keys

HP Chromebook Plus 15.6-inch

Pros
  • Great all-round performance
  • Good display for a Chromebook
  • Premium build quality
Cons
  • Small lid opening angle
  • Not convertible
  • Typing can feel cramped
How I tested the Acer Googlebook 14

(Image credit: Future)
  • Used as main work laptop for several weeks
  • Travelled with it
  • Connected it up to my Android smartphone

I used the Acer Googlebook 14 for several weeks, for all manner of tasks, including writing some of this review on it. During that time, I also connected my Android smartphone to it to make full use of the ecosystem. I ran a variety of apps and games on the Acer Googlebook 14 during my time testing it.

I also attended Google’s launch event in London, as well as Acer’s own event, for deep dives into the technology and features. I’ve been reviewing laptops, including Chromebooks, for nearly 20 years, and have used that experience to inform my review.

  • First reviewed: October 2026
  • Read more about how we test
Categories: Reviews

Hisense U6SF Pro review: a richly hued mini-LED TV with strong features, especially for the price

Tue, 10/20/2026 - 14:00
Hisense U6SF Pro: One-minute review

The Hisense U6SF Pro felt like a budget TV reaching for the mid-range when I first unboxed it. After spending some time with it, I think that impression stands. I don’t mean that in a derogatory way, either. If you had $650 for a TV, getting the 65-inch size of the Hisense U6SF Pro is certainly worth it.

That price tag gets you a 4K resolution with a native 144Hz refresh rate, all the HDR and spatial audio support one could want, a Fire TV interface, and Alexa+ built-in. And just to clear the air, the Hisense U6SF Pro does have appreciable if somewhat hidden upgrades over the non-Pro version. The Pro version is a couple pounds heavier, comes with a built-in subwoofer (and has double the speaker wattage) and WiFi 6, and has the pro version of AMD FreeSync Premium and support for DTS Virtual:X.

The Hisense U6SF Pro has most of the bonafides of the best gaming TVs, such as two HDMI 2.1 ports for up to 4K@144Hz refresh rate passthrough support and the aforementioned AMD FreeSync Premium Pro, though I do wish there was a game-specific bar or menu. I can see an argument for putting this model among the best TVs for the price, though it still comes with some compromises, such as some vignetting all along the bottom of the screen and a lack of detail in the shadows.

The Hisense U6SF Pro showing off its colors with a Youtube screen test (Image credit: Future / James Holland)Hisense U6SF Pro review: Price and release date
  • Release date? March 2026
  • 55-inch: $499.99
  • 65-inch: $649.99
  • 75-inch: $799.99
  • 85-inch: $1,099.99
  • 100-inch: $2,299.99

The Hisense U6SF and U6SF Pro, along with the Hisense U7, hit the market in March of 2026. While the listed MSRP of the U6SF Pro is much higher on retail sites like Amazon and Best Buy, where the TV’s “value” at 65 inches is listed at $1,099.99, the actual and consistent prices listed above are what I consider the real prices and are what you’ll actually pay.

With a price range of $499.99 for the 55-inch to $2,299.99 for the 100-inch, the Hisense U6SF Pro really falls right into that area between budget TVs and more mid-range models (most TVs within a couple hundred dollars above or below a grand). And it comes in just about every size one could need, unless you’re looking for a smaller TV. The 55-inch model is the smallest it comes in.

Hisense U6SF Pro Series MiniLED TV review: Specs

Screen type

Hi-QLED Mini-LED

Refresh rate

144Hz

HDR support

Dolby Vision, Dolby Vision IQ, HDR10, HDR10+, HDR10+ Adaptive, HLG

Audio support

Dolby Atmos + DTS Virtual X, Bluetooth Audio

Smart TV

Fire TV with Alexa+

HDMI ports

2 HDMI 2.1 ports(4K@144Hz), 2 HDMI 2.0 (4K @ 60Hz)

Built-in tuner

ATSC 3.0

Hisense U6SF Pro Series MiniLED TV review: Benchmark results@import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap'); @import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap'); #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper *, #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper *:before, #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper *:after, #fv-chart-1792492395285-jtpd1lwb2-slideshow *, #fv-chart-1792492395285-jtpd1lwb2-slideshow *:before, #fv-chart-1792492395285-jtpd1lwb2-slideshow *:after { box-sizing: border-box !important; margin: 0; padding: 0; border: 0; font-size: 100%; font: inherit; vertical-align: baseline; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper, #fv-chart-1792492395285-jtpd1lwb2-slideshow { font-family: 'Open Sans', sans-serif !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper { position: relative !important; overflow: visible !important; --riv-primary: #2E6E93; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-inner-wrapper { color: #1F2937 !important; background-color: #ffffff !important; padding: 1.5rem 1.5rem 2rem !important; border-radius: 0.5rem !important; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1) !important; margin: 1rem 0 !important; display: flex !important; flex-direction: column !important; overflow: hidden !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-inner-wrapper.fv-no-header.fv-is-image-compare { padding-top: 0 !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.fv-full-bleed { width: 100vw !important; margin-left: calc(50% - 50vw) !important; } body { overflow-x: clip !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.fv-full-bleed .fv-inner-wrapper { padding: 0 !important; border-radius: 0 !important; box-shadow: none !important; margin: 0 !important; background-color: transparent !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-inner-wrapper.fv-is-shop-the-look { padding: 0 !important; border-radius: 0 !important; box-shadow: none !important; margin: 0 !important; background-color: transparent !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow { position: relative !important; width: 100% !important; margin: 1rem 0 !important; --riv-primary: #2E6E93; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-slides-wrapper { position: relative !important; width: 100% !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-slide { width: 100% !important; animation: fv-fade-in 0.3s ease-in-out; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-slideshow-nav-row { position: relative !important; display: flex !important; justify-content: space-between !important; align-items: center !important; padding: 0 0 16px 0 !important; width: 100% !important; z-index: 20 !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-nav-btn { background-color: var(--riv-primary) !important; color: #ffffff !important; border: none !important; border-radius: 4px !important; padding: 8px 16px !important; font-size: 14px !important; font-weight: 700 !important; cursor: pointer !important; display: flex !important; align-items: center !important; justify-content: center !important; gap: 6px !important; transition: opacity 0.2s, background-color 0.2s !important; height: 36px !important; text-transform: none !important; box-shadow: 0 1px 2px rgba(0,0,0,0.1) !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-nav-btn svg { width: 18px !important; height: 18px !important; stroke-width: 3px !important; filter: none !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-nav-btn:hover { opacity: 0.9 !important; transform: translateY(-1px) !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-nav-btn.disabled, #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-nav-btn:disabled { background-color: #E5E7EB !important; color: #9CA3AF !important; cursor: default !important; pointer-events: none !important; box-shadow: none !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-slide-counter { font-family: 'Poppins', sans-serif !important; font-size: 14px !important; font-weight: 600 !important; color: #374151 !important; text-align: center !important; min-width: 40px !important; background-color: rgba(255,255,255,0.8) !important; padding: 2px 8px !important; border-radius: 10px !important; user-select: none !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-slideshow-select { position: absolute !important; top: 10px !important; right: 10px !important; z-index: 20 !important; appearance: none !important; -webkit-appearance: none !important; -moz-appearance: none !important; background-color: white !important; border: 1px solid #d1d5db !important; color: #1F2937 !important; font-family: 'Open Sans', sans-serif !important; font-size: 14px !important; font-weight: 600 !important; padding: 6px 32px 6px 12px !important; border-radius: 4px !important; cursor: pointer !important; box-shadow: 0 1px 2px rgba(0,0,0,0.05) !important; background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e") !important; background-position: right 0.5rem center !important; background-repeat: no-repeat !important; background-size: 1.5em 1.5em !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-slideshow-select:focus { outline: 2px solid #2E6E93 !important; border-color: #2E6E93 !important; } @keyframes fv-fade-in { from { opacity: 0; } to { opacity: 1; } } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-chart-title { font-weight: bold !important; text-align: center !important; margin-bottom: 0.5rem !important; color: var(--riv-primary) !important; font-size: 20px !important; line-height: 1.2 !important; font-family: 'Open Sans', sans-serif !important; text-transform: none !important; white-space: normal !important; overflow-wrap: break-word !important; padding: 0 20px !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-chart-subhead { font-size: 18px !important; font-weight: 500 !important; text-align: center !important; margin-bottom: 2rem !important; color: #374151 !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; text-transform: none !important; padding: 0 20px !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .rv-chart-caption { font-size: 15px !important; color: #374151 !important; text-align: center !important; font-style: normal !important; font-weight: normal !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-versus-select-wrapper { flex: 1; min-width: 0; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-versus-select { background: transparent; border: none; border-bottom: 2px solid; font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; padding: 0.25rem 0; cursor: pointer; outline: none; appearance: none; -webkit-appearance: none; -moz-appearance: none; max-width: 100%; width: 100%; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-versus-select option { font-family: 'Open Sans', sans-serif; font-weight: 400; font-size: 14px; color: #374151; direction: ltr; text-align: left; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-versus-vs { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; color: #374151; letter-spacing: 0.1em; padding: 0 1rem; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-versus-bar { height: 32px; width: var(--target-width); transition: width 0.8s ease-out; animation: fv-grow-max-width 0.8s ease-out forwards; display: flex; align-items: center; overflow: hidden; color: #ffffff; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-versus-bar-right { border-radius: 0 4px 4px 0; justify-content: flex-start; padding: 0 8px; } @keyframes fv-grow-max-width { from { max-width: 0; } to { max-width: 100%; } } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-versus-center-line { position: absolute; left: 50%; top: 0; bottom: 0; width: 4px; background-color: #ffffff; transform: translateX(-50%); z-index: 1; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-inside-left { white-space: nowrap; flex-shrink: 0; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-inside-right { white-space: nowrap; flex-shrink: 0; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-versus-pct-diff { font-size: 12px; font-weight: 600; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-versus-label { position: absolute; left: 50%; transform: translateX(-50%); top: 0; background-color: transparent; border: none; box-shadow: none; padding: 0; font-family: 'Open Sans', sans-serif; font-weight: 700; font-size: 14px; color: #374151; white-space: nowrap; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-footer-content { text-align: center !important; width: 100% !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-logo { display: block !important; margin: 0 auto !important; width: 120px !important; min-width: 120px !important; max-width: 120px !important; height: auto !important; object-fit: contain !important; flex-shrink: 0 !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-dropdown-title { appearance: none !important; -webkit-appearance: none !important; -moz-appearance: none !important; background: transparent !important; border: none !important; font-size: 18px !important; font-weight: 600 !important; color: var(--riv-primary) !important; padding-right: 28px !important; padding-left: 10px !important; cursor: pointer !important; text-align: center !important; text-align-last: center !important; width: auto !important; max-width: 100% !important; font-family: 'Open Sans', sans-serif !important; line-height: 1.3 !important; margin: 0 !important; text-overflow: ellipsis !important; overflow: hidden !important; white-space: nowrap !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-dropdown-title:focus { outline: none !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-dropdown-title::-ms-expand { display: none !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-dropdown-chevron { position: absolute !important; right: 0 !important; top: 50% !important; transform: translateY(-50%) !important; pointer-events: none !important; color: var(--riv-primary) !important; display: flex !important; align-items: center !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-carousel-title-controls { display: flex !important; justify-content: space-between !important; align-items: center !important; margin-bottom: 16px !important; width: 100% !important; gap: 12px !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-carousel-nav-btn { background: transparent !important; border: 1px solid #d1d5db !important; border-radius: 6px !important; padding: 6px 10px !important; cursor: pointer !important; font-size: 14px !important; color: #374151 !important; display: flex !important; align-items: center !important; gap: 4px !important; font-family: 'Open Sans', sans-serif !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-legend { display: flex !important; justify-content: center !important; flex-wrap: wrap !important; gap: 8px 16px !important; margin: 0 !important; padding: 0 !important; margin-top: 1rem !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-multi-value-legend { display: flex !important; justify-content: center !important; flex-wrap: wrap !important; gap: 12px 24px !important; margin-bottom: 1.5rem !important; padding: 0 !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-multi-legend-item { display: flex !important; align-items: center !important; gap: 8px !important; font-size: 14px !important; color: #374151 !important; font-weight: 500 !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-benchmark-group { margin-bottom: 1rem !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-benchmark-title { font-size: 18px !important; font-weight: 600 !important; margin-bottom: 16px !important; margin-top: 0 !important; padding: 0 !important; text-align: center !important; color: var(--riv-primary) !important; flex: 1 !important; min-width: 0 !important; font-family: 'Open Sans', sans-serif !important; line-height: 1.3 !important; text-transform: none !important; white-space: normal !important; overflow-wrap: break-word !important; word-wrap: break-word !important; max-width: 100% !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-bar-row, #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; position: relative !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-bar-label { width: 150px !important; flex-shrink: 0 !important; font-size: 14px !important; color: #374151 !important; padding-right: 10px !important; text-align: right !important; font-weight: 500 !important; display: block !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-bar-container { flex-grow: 1 !important; background-color: #E5E7EB !important; border-radius: 4px !important; min-height: 25px !important; border: 1px solid #D1D5DB !important; position: relative !important; display: flex !important; align-items: center !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-bar-commentary-inline { display: none !important; position: absolute !important; left: 150px !important; top: 0 !important; bottom: 0 !important; right: 0 !important; width: calc(100% - 150px) !important; margin: 0 !important; padding: 0 8px !important; font-size: 13px !important; color: #fff !important; background: rgba(0,0,0,0.8) !important; border-radius: 4px !important; line-height: 1.4 !important; font-weight: normal !important; text-transform: none !important; word-wrap: break-word !important; z-index: 10 !important; align-items: center !important; overflow-y: auto !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.preview-wrapper .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.preview-wrapper .fv-bar-commentary-inline:focus, #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.preview-wrapper .fv-bar-commentary-inline:focus-within, #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.mobile-view .fv-bar-commentary-inline:focus, #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.mobile-view .fv-bar-commentary-inline:focus-within { display: flex !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-bar { height: 100% !important; border-radius: 3px !important; display: flex !important; align-items: center !important; transition: opacity 0.2s ease, width 0.8s ease-out !important; min-height: 23px !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-bar:hover { opacity: 0.8 !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-bar-inner-content { display: flex !important; justify-content: space-between !important; align-items: center !important; width: 100% !important; height: 100% !important; padding: 0 8px !important; font-size: 14px !important; font-weight: bold !important; overflow: hidden !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-bar-inner-value { flex-shrink: 0 !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-bar-value-outside { padding-left: 8px !important; font-size: 14px !important; font-weight: bold !important; color: #374151 !important; white-space: nowrap !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-stacked-bar { display: flex !important; overflow: hidden !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-stacked-segment { height: 100% !important; display: flex !important; align-items: center !important; justify-content: flex-end !important; padding-right: 8px !important; border-right: 1px solid rgba(255,255,255,0.3) !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-stacked-segment:last-child { border-right: none !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-segment-value { font-size: 14px !important; font-weight: bold !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-grouped-product-title-wrapper { padding-left: 150px !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.5rem !important; font-weight: 700 !important; font-size: 14px !important; color: #374151 !important; text-transform: none !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-bar-cluster .fv-bar-container { height: 20px !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-dials-grid { display: grid !important; grid-template-columns: repeat(auto-fit, minmax(145px, 1fr)) !important; gap: 1.5rem 1rem !important; width: 100% !important; margin: 0.75rem 0 1.25rem !important; align-items: start !important; justify-items: center !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-dial-card { display: flex !important; flex-direction: column !important; align-items: center !important; text-align: center !important; width: 100% !important; max-width: 220px !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-dial-title { font-family: 'Poppins', 'Open Sans', sans-serif !important; font-size: 18px !important; font-weight: 700 !important; color: #2b2b2b !important; line-height: 1.25 !important; margin-bottom: 0.35rem !important; text-align: center !important; width: 100% !important; overflow-wrap: break-word !important; text-transform: none !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-dial-svg-wrapper { width: 100% !important; max-width: 200px !important; display: flex !important; justify-content: center !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-dial-svg { width: 100% !important; height: auto !important; display: block !important; overflow: visible !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-dial-needle { transition: transform 0.9s cubic-bezier(0.22, 1, 0.36, 1) !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-dial-commentary { margin-top: 0.35rem !important; font-size: 13px !important; line-height: 1.45 !important; color: #4B5563 !important; text-align: center !important; width: 100% !important; padding: 0 4px !important; font-family: 'Open Sans', sans-serif !important; word-wrap: break-word !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.preview-wrapper .fv-dial-commentary-input { min-height: 22px !important; border: 1px dashed transparent !important; border-radius: 4px !important; transition: border-color 0.15s ease, background-color 0.15s ease !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.preview-wrapper .fv-dial-card:hover .fv-dial-commentary-input, #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.preview-wrapper .fv-dial-commentary-input:focus { border-color: #CBD5E1 !important; background-color: rgba(241, 245, 249, 0.6) !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .riv-grid line { stroke: #D1D5DB !important; stroke-dasharray: 3 3 !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-x-axis-ticks { display: flex !important; justify-content: space-between !important; padding-top: 4px !important; font-size: 13px !important; color: #374151 !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-x-axis-ticks span { position: relative !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-x-axis-ticks span::before { content: '' !important; position: absolute !important; top: -6px !important; left: 50% !important; transform: translateX(-50%) !important; width: 2px !important; height: 4px !important; background-color: #D1D5DB !important; border-radius: 1px !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-x-axis-title { text-align: center !important; font-size: 15px !important; color: #374151 !important; margin-top: 8px !important; margin-bottom: 16px !important; line-height: 1.5 !important; padding: 0 1rem !important; display: block !important; font-weight: bold !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-y-axis-title { font-size: 15px !important; color: #374151 !important; line-height: 1.5 !important; text-align: left !important; padding-left: 5.83% !important; margin-bottom: 4px !important; display: block !important; font-weight: bold !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.mobile-view .fv-pie-container, #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.labels-on-top .fv-pie-container { flex-direction: column !important; gap: 1rem !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.mobile-view .fv-grouped-product-title-wrapper, #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.labels-on-top .fv-grouped-product-title-wrapper { padding-left: 0 !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.mobile-view .fv-bar-row, #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.mobile-view .fv-stacked-product, #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.mobile-view .fv-grouped-bar-product, #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.labels-on-top .fv-bar-row, #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.labels-on-top .fv-stacked-product, #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.labels-on-top .fv-grouped-bar-product { flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.mobile-view .fv-bar-label:not(.fv-grouped-product-title), #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.labels-on-top .fv-bar-label:not(.fv-grouped-product-title) { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.mobile-view .fv-bar-label, #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.mobile-view .fv-grouped-product-title, #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.labels-on-top .fv-bar-label, #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.labels-on-top .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.mobile-view .fv-bar-container, #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.mobile-view .fv-bar-cluster, #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.labels-on-top .fv-bar-container, #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.labels-on-top .fv-bar-cluster { width: 100% !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.mobile-view .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus-within, #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.labels-on-top .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.labels-on-top .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus-within { position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.mobile-view .fv-x-axis-wrapper, #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.labels-on-top .fv-x-axis-wrapper { margin-left: 0 !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.mobile-view .fv-x-axis-label-space, #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.labels-on-top .fv-x-axis-label-space { display: none !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.mobile-view .fv-x-axis-chart-space, #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.labels-on-top .fv-x-axis-chart-space { padding-right: 0 !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.mobile-view .fv-benchmark-title, #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.labels-on-top .fv-benchmark-title { font-size: 16px !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.mobile-view .fv-dropdown-title, #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.labels-on-top .fv-dropdown-title { font-size: 16px !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.mobile-view .fv-carousel-nav-btn, #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.labels-on-top .fv-carousel-nav-btn { padding: 8px 12px !important; font-size: 14px !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.mobile-view .fv-chart-title, #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.labels-on-top .fv-chart-title { padding: 0 8px !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.mobile-view .fv-chart-subhead, #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.labels-on-top .fv-chart-subhead { padding: 0 8px !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.mobile-view .fv-versus-header, #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.labels-on-top .fv-versus-header { flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.mobile-view .fv-versus-select-wrapper, #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.labels-on-top .fv-versus-select-wrapper { flex: 1 !important; min-width: 0 !important; width: 100% !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.mobile-view .fv-versus-select-wrapper.fv-left, #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.labels-on-top .fv-versus-select-wrapper.fv-left { text-align: center !important; padding-right: 0 !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.mobile-view .fv-versus-select-wrapper.fv-right, #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.labels-on-top .fv-versus-select-wrapper.fv-right { text-align: center !important; padding-left: 0 !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.mobile-view .fv-versus-select.fv-select-left, #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.labels-on-top .fv-versus-select.fv-select-left { text-align: center !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.mobile-view .fv-versus-select.fv-select-right, #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.labels-on-top .fv-versus-select.fv-select-right { text-align: center !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.mobile-view .fv-versus-vs, #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.labels-on-top .fv-versus-vs { text-align: center !important; padding: 0.25rem 0 !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.mobile-view .fv-versus-select-container, #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.labels-on-top .fv-versus-select-container { max-width: 100% !important; width: 100% !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.mobile-view .fv-versus-select, #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.labels-on-top .fv-versus-select { font-size: 14px !important; width: 100% !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.mobile-view .fv-stl-shop-all-btn, #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.labels-on-top .fv-stl-shop-all-btn { bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.mobile-view .fv-stl-shop-all-logo, #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.mobile-view .fv-stl-shop-all-icon, #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.labels-on-top .fv-stl-shop-all-logo, #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.labels-on-top .fv-stl-shop-all-icon { width: 2rem !important; height: 2rem !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.mobile-view .fv-stl-shop-all-icon svg, #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.labels-on-top .fv-stl-shop-all-icon svg { width: 14px !important; height: 14px !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.mobile-view .fv-bar-commentary-inline, #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.labels-on-top .fv-bar-commentary-inline { display: block !important; margin-left: 0 !important; width: 100% !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.mobile-view .fv-dials-grid, #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.labels-on-top .fv-dials-grid { grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)) !important; gap: 1.25rem 0.75rem !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.mobile-view .fv-dial-title, #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.labels-on-top .fv-dial-title { font-size: 16px !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.mobile-view .fv-y-axis-title { padding-left: 5% !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.mobile-view.fv-contains-line-chart .fv-footer-content { margin-left: -1rem !important; margin-right: -1rem !important; } @media (max-width: 599px) { #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-pie-container { flex-direction: column !important; gap: 1rem !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-grouped-product-title-wrapper { padding-left: 0 !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-bar-row, #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-stacked-product, #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-grouped-bar-product { flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-bar-label:not(.fv-grouped-product-title) { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-bar-label, #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-bar-container, #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-bar-cluster { width: 100% !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-bar-row .fv-bar-commentary-inline, #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-bar-row .fv-bar-commentary-inline:focus, #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-bar-row .fv-bar-commentary-inline:focus-within { position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-x-axis-wrapper { margin-left: 0 !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-x-axis-label-space { display: none !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-x-axis-chart-space { padding-right: 0 !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-benchmark-title { font-size: 16px !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-dropdown-title { font-size: 16px !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-carousel-nav-btn { padding: 8px 12px !important; font-size: 14px !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-chart-title { padding: 0 8px !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-chart-subhead { padding: 0 8px !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-versus-header { flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-versus-select-wrapper { flex: 1 !important; min-width: 0 !important; width: 100% !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-versus-select-wrapper.fv-left { text-align: center !important; padding-right: 0 !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-versus-select-wrapper.fv-right { text-align: center !important; padding-left: 0 !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-versus-select.fv-select-left { text-align: center !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-versus-select.fv-select-right { text-align: center !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-versus-vs { text-align: center !important; padding: 0.25rem 0 !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-versus-select-container { max-width: 100% !important; width: 100% !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-versus-select { font-size: 14px !important; width: 100% !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-stl-shop-all-btn { bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-stl-shop-all-logo, #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-stl-shop-all-icon { width: 2rem !important; height: 2rem !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-stl-shop-all-icon svg { width: 14px !important; height: 14px !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-bar-commentary-inline { display: block !important; margin-left: 0 !important; width: 100% !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-dials-grid { grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)) !important; gap: 1.25rem 0.75rem !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-dial-title { font-size: 16px !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper .fv-y-axis-title { padding-left: 5% !important; } #fv-chart-1792492395285-jtpd1lwb2-slideshow .fv-chart-wrapper.fv-contains-line-chart .fv-footer-content { margin-left: -1rem !important; margin-right: -1rem !important; } }[{ "@context": "https://schema.org", "@type": "Dataset", "name": "Brightness measurements", "description": "Subhead to describe the test and what's being measured and why", "creator": { "@type": "Organization", "name": "TechRadar", "logo": "https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png" }, "isAccessibleForFree": true, "dateCreated": "2026-10-20T10:33:15.286Z", "citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized", "keywords": [ "Hisense U6SF Pro", "Hisense U7", "Roku Pro Series (2025)", "HDR Filmmaker Mode (10% window)", "HDR Standard Mode (10% window)", "SDR Filmmaker Mode (10% window)", "SDR Standard Mode (10% window)", "HDR Filmmaker Mode (Fullscreen)", "HDR Standard Mode (Fullscreen)", "HDR Filmmaker Mode", "HDR Standard", "SDR Filmmaker Mode", "SDR Standard", "benchmark", "comparison", "performance", "review", "TechRadar" ], "measurementTechnique": "Performance Benchmarking", "variableMeasured": [ { "@type": "PropertyValue", "name": "Hisense U6SF Pro – HDR Filmmaker Mode (10% window)", "value": 1265, "unitText": "nits" }, { "@type": "PropertyValue", "name": "Hisense U6SF Pro – HDR Filmmaker Mode (Fullscreen)", "value": 713, "unitText": "nits" }, { "@type": "PropertyValue", "name": "Hisense U7 – HDR Filmmaker Mode (10% window)", "value": 2866, "unitText": "nits" }, { "@type": "PropertyValue", "name": "Hisense U7 – HDR Filmmaker Mode (Fullscreen)", "value": 793, "unitText": "nits" }, { "@type": "PropertyValue", "name": "Roku Pro Series (2025) – HDR Filmmaker Mode (10% window)", "value": 820, "unitText": "nits" }, { "@type": "PropertyValue", "name": "Roku Pro Series (2025) – HDR Filmmaker Mode (Fullscreen)", "value": 373, "unitText": "nits" }, { "@type": "PropertyValue", "name": "Hisense U6SF Pro – HDR Standard Mode (10% window)", "value": 1033, "unitText": "nits" }, { "@type": "PropertyValue", "name": "Hisense U6SF Pro – HDR Standard Mode (Fullscreen)", "value": 708, "unitText": "nits" }, { "@type": "PropertyValue", "name": "Hisense U7 – HDR Standard Mode (10% window)", "value": 2891, "unitText": "nits" }, { "@type": "PropertyValue", "name": "Hisense U7 – HDR Standard Mode (Fullscreen)", "value": 782, "unitText": "nits" }, { "@type": "PropertyValue", "name": "Roku Pro Series (2025) – HDR Standard Mode (10% window)", "value": 841, "unitText": "nits" }, { "@type": "PropertyValue", "name": "Roku Pro Series (2025) – HDR Standard Mode (Fullscreen)", "value": 390, "unitText": "nits" }, { "@type": "PropertyValue", "name": "Hisense U6SF Pro – SDR Filmmaker Mode (10% window)", "value": 358, "unitText": "nits" }, { "@type": "PropertyValue", "name": "Hisense U7 – SDR Filmmaker Mode (10% window)", "value": 185, "unitText": "nits" }, { "@type": "PropertyValue", "name": "Roku Pro Series (2025) – SDR Filmmaker Mode (10% window)", "value": 434, "unitText": "nits" }, { "@type": "PropertyValue", "name": "Hisense U6SF Pro – SDR Standard Mode (10% window)", "value": 788, "unitText": "nits" }, { "@type": "PropertyValue", "name": "Hisense U7 – SDR Standard Mode (10% window)", "value": 1994, "unitText": "nits" }, { "@type": "PropertyValue", "name": "Roku Pro Series (2025) – SDR Standard Mode (10% window)", "value": 876, "unitText": "nits" } ]},{ "@context": "https://schema.org", "@type": "Dataset", "name": "HDR color gamut", "description": "Closer to 100% is better. Taken using a colorimeter and test pattern generator.", "creator": { "@type": "Organization", "name": "TechRadar", "logo": "https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png" }, "isAccessibleForFree": true, "dateCreated": "2026-10-20T10:33:15.286Z", "citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized", "keywords": [ "Hisense U6SF Pro", "Hisense U7", "Roku Pro Series (2025)", "UHDA-P3", "BT.2020", "HDR Filmmaker Mode", "benchmark", "comparison", "performance", "review", "TechRadar" ], "measurementTechnique": "Performance Benchmarking", "variableMeasured": [ { "@type": "PropertyValue", "name": "Hisense U6SF Pro – UHDA-P3", "value": 96.1, "unitText": "" }, { "@type": "PropertyValue", "name": "Hisense U6SF Pro – BT.2020", "value": 75.1, "unitText": "" }, { "@type": "PropertyValue", "name": "Hisense U7 – UHDA-P3", "value": 97.3, "unitText": "" }, { "@type": "PropertyValue", "name": "Hisense U7 – BT.2020", "value": 82.7, "unitText": "" }, { "@type": "PropertyValue", "name": "Roku Pro Series (2025) – UHDA-P3", "value": 96.9, "unitText": "" }, { "@type": "PropertyValue", "name": "Roku Pro Series (2025) – BT.2020", "value": 80.6, "unitText": "" } ]},{ "@context": "https://schema.org", "@type": "Dataset", "name": "Picture accuracy", "description": "A lower score is better. Taken using a colorimeter and test pattern generator.", "creator": { "@type": "Organization", "name": "TechRadar", "logo": "https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png" }, "isAccessibleForFree": true, "dateCreated": "2026-10-20T10:33:15.286Z", "citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized", "keywords": [ "Hisense U6SF Pro", "Hisense U7", "Roku Pro Series (2025)", "Delta-E", "SDR Delta-E", "benchmark", "comparison", "performance", "review", "TechRadar" ], "measurementTechnique": "Performance Benchmarking", "variableMeasured": [ { "@type": "PropertyValue", "name": "Hisense U6SF Pro – Delta-E", "value": 1.5, "unitText": "" }, { "@type": "PropertyValue", "name": "Hisense U7 – Delta-E", "value": 3, "unitText": "" }, { "@type": "PropertyValue", "name": "Roku Pro Series (2025) – Delta-E", "value": 2.5, "unitText": "" } ]},{ "@context": "https://schema.org", "@type": "Dataset", "name": "Input lag", "description": "Lower is better. Taken using a Leo Bodnar 4K HDMI Video Signal Lag Tester.", "creator": { "@type": "Organization", "name": "TechRadar", "logo": "https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png" }, "isAccessibleForFree": true, "dateCreated": "2026-10-20T10:33:15.286Z", "citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized", "keywords": [ "Hisense U6SF Pro", "Hisense U7", "Roku Pro Series (2025)", "4K 60Hz", "benchmark", "comparison", "performance", "review", "TechRadar" ], "measurementTechnique": "Performance Benchmarking", "variableMeasured": [ { "@type": "PropertyValue", "name": "Hisense U6SF Pro – 4K 60Hz", "value": 13.2, "unitText": "ms" }, { "@type": "PropertyValue", "name": "Hisense U7 – 4K 60Hz", "value": 9.8, "unitText": "ms" }, { "@type": "PropertyValue", "name": "Roku Pro Series (2025) – 4K 60Hz", "value": 9.3, "unitText": "ms" } ]}]{"version":2,"exportedAt":"2026-10-20T10:33:15.286Z","state":{"data":[{"productName":"Hisense U6SF Pro","attribute":"4K 60Hz","value":13.2,"unit":"ms","site":"TechRadar"},{"productName":"Hisense U7","attribute":"4K 60Hz","value":9.8,"unit":"ms","site":"TechRadar"},{"productName":"Roku Pro Series (2025)","attribute":"4K 60Hz","value":9.3,"unit":"ms","site":"TechRadar"}],"products":["Hisense U6SF Pro","Hisense U7","Roku Pro Series (2025)"],"attributes":["4K 60Hz"],"selectedProducts":[],"selectedPrimaryProduct":null,"selectedAttributes":[],"productColors":[{"productName":"Hisense U6SF Pro","color":"#2E6E93"},{"productName":"Hisense U7","color":"#E8238C"},{"productName":"Roku Pro Series (2025)","color":"#5DA8D4"}],"initialProductColors":[{"productName":"Hisense U6SF Pro","color":"#2E6E93"},{"productName":"Hisense U7","color":"#E8238C"},{"productName":"Roku Pro Series (2025)","color":"#5DA8D4"}],"attributeColors":[],"attributeGroups":[{"name":"Group 1","attributes":[]}],"chartType":"Bar","roundupViewType":"bars","stlSelectedHotspotId":null,"iaSelectedNodeId":null,"barChartMaxValueOverrides":{},"barChartMinValueOverrides":{},"displayMode":"All Charts","brand":{"name":"TechRadar","logoUrl":"https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png","sliderLogoUrl":"https://proof.vanilla.tools/media/images/brandLogos/techradar.png","colors":{"primary":"#2E6E93","secondary":"#E8238C","accent":"#FFFFFF","background":"#ffffff","text":"#1F2937","productColors":["#2E6E93","#E8238C","#5DA8D4","#F06EAF","#1A4E6B","#B81C70","#8CC3E0","#F499C9"]}},"textContent":{"title":"Input lag","subhead":"Lower is better. Taken using a Leo Bodnar 4K HDMI Video Signal Lag Tester.","caption":"Add your caption to explain the data, the learnings and the key takeaways of the data being visualized","productNameOverrides":{},"attributeNameOverrides":{},"chartTitleOverrides":{"grouped-bar-Group 1":"HDR Filmmaker Mode","grouped-bar-Group 2":"HDR Standard","grouped-bar-Group 3":"SDR Filmmaker Mode","grouped-bar-Group 4":"SDR Standard","bar-Delta-E":"SDR Delta-E"},"xAxisLabelOverrides":{},"subheadOverrides":{"grouped-bar-Group 4":"Taken using a colorimeter and test pattern generator. Click the test name for measurements and select the chosen test from the dropdown menu."},"captionOverrides":{},"unitOverrides":{},"multiValueLegendOverrides":{},"barCommentaryOverrides":{}},"dataEverLoaded":true,"showAISuggestionsButton":false,"barChartShowXAxis":true,"groupedBarChartShowProductName":true,"barChartLabelsOnTop":false,"experimentalEnablePieChart":false,"slideshowUseDropdown":false},"slides":[{"id":"slide-1792492232431","snapshot":{"selectedProducts":["Hisense U6SF Pro","Hisense U7","Roku Pro Series (2025)"],"selectedPrimaryProduct":"Hisense U6SF Pro","selectedAttributes":["HDR Filmmaker Mode (10% window)","HDR Standard Mode (10% window)","SDR Filmmaker Mode (10% window)","SDR Standard Mode (10% window)","HDR Filmmaker Mode (Fullscreen)","HDR Standard Mode (Fullscreen)"],"productColors":[{"productName":"Hisense U6SF Pro","color":"#2E6E93"},{"productName":"Hisense U7","color":"#E8238C"},{"productName":"Roku Pro Series (2025)","color":"#5DA8D4"}],"initialProductColors":[{"productName":"Hisense U6SF Pro","color":"#2E6E93"},{"productName":"Hisense U7","color":"#E8238C"},{"productName":"Roku Pro Series (2025)","color":"#5DA8D4"}],"attributeColors":[],"attributeGroups":[{"name":"Group 1","attributes":["HDR Filmmaker Mode (10% window)","HDR Filmmaker Mode (Fullscreen)"]},{"name":"Group 2","attributes":["HDR Standard Mode (10% window)","HDR Standard Mode (Fullscreen)"]},{"name":"Group 3","attributes":["SDR Filmmaker Mode (10% window)"]},{"name":"Group 4","attributes":["SDR Standard Mode (10% window)"]}],"chartType":"Bar","roundupViewType":"bars","stlSelectedHotspotId":null,"iaSelectedNodeId":null,"barChartMaxValueOverrides":{},"barChartMinValueOverrides":{},"displayMode":"Dropdown","brand":{"name":"TechRadar","logoUrl":"https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png","sliderLogoUrl":"https://proof.vanilla.tools/media/images/brandLogos/techradar.png","colors":{"primary":"#2E6E93","secondary":"#E8238C","accent":"#FFFFFF","background":"#ffffff","text":"#1F2937","productColors":["#2E6E93","#E8238C","#5DA8D4","#F06EAF","#1A4E6B","#B81C70","#8CC3E0","#F499C9"]}},"textContent":{"title":"Brightness measurements","subhead":"Subhead to describe the test and what's being measured and why","caption":"Add your caption to explain the data, the learnings and the key takeaways of the data being visualized","productNameOverrides":{},"attributeNameOverrides":{},"chartTitleOverrides":{"grouped-bar-Group 1":"HDR Filmmaker Mode","grouped-bar-Group 2":"HDR Standard","grouped-bar-Group 3":"SDR Filmmaker Mode","grouped-bar-Group 4":"SDR Standard"},"xAxisLabelOverrides":{},"subheadOverrides":{"grouped-bar-Group 4":"Taken using a colorimeter and test pattern generator. Click the test name for measurements and select the chosen test from the dropdown menu."},"captionOverrides":{},"unitOverrides":{},"multiValueLegendOverrides":{},"barCommentaryOverrides":{}},"dataEverLoaded":true,"showAISuggestionsButton":false,"barChartShowXAxis":true,"groupedBarChartShowProductName":true,"barChartLabelsOnTop":false,"experimentalEnablePieChart":false,"slideshowUseDropdown":false}},{"id":"slide-1792492291117","snapshot":{"selectedProducts":["Hisense U6SF Pro","Hisense U7","Roku Pro Series (2025)"],"selectedPrimaryProduct":"Hisense U6SF Pro","selectedAttributes":["UHDA-P3","BT.2020"],"productColors":[{"productName":"Hisense U6SF Pro","color":"#2E6E93"},{"productName":"Hisense U7","color":"#E8238C"},{"productName":"Roku Pro Series (2025)","color":"#5DA8D4"}],"initialProductColors":[{"productName":"Hisense U6SF Pro","color":"#2E6E93"},{"productName":"Hisense U7","color":"#E8238C"},{"productName":"Roku Pro Series (2025)","color":"#5DA8D4"}],"attributeColors":[],"attributeGroups":[{"name":"Group 1","attributes":["UHDA-P3","BT.2020"]}],"chartType":"Bar","roundupViewType":"bars","stlSelectedHotspotId":null,"iaSelectedNodeId":null,"barChartMaxValueOverrides":{},"barChartMinValueOverrides":{},"displayMode":"All Charts","brand":{"name":"TechRadar","logoUrl":"https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png","sliderLogoUrl":"https://proof.vanilla.tools/media/images/brandLogos/techradar.png","colors":{"primary":"#2E6E93","secondary":"#E8238C","accent":"#FFFFFF","background":"#ffffff","text":"#1F2937","productColors":["#2E6E93","#E8238C","#5DA8D4","#F06EAF","#1A4E6B","#B81C70","#8CC3E0","#F499C9"]}},"textContent":{"title":"HDR color gamut","subhead":"Closer to 100% is better. Taken using a colorimeter and test pattern generator.","caption":"Add your caption to explain the data, the learnings and the key takeaways of the data being visualized","productNameOverrides":{},"attributeNameOverrides":{},"chartTitleOverrides":{"grouped-bar-Group 1":"HDR Filmmaker Mode","grouped-bar-Group 2":"HDR Standard","grouped-bar-Group 3":"SDR Filmmaker Mode","grouped-bar-Group 4":"SDR Standard"},"xAxisLabelOverrides":{},"subheadOverrides":{"grouped-bar-Group 4":"Taken using a colorimeter and test pattern generator. Click the test name for measurements and select the chosen test from the dropdown menu."},"captionOverrides":{},"unitOverrides":{},"multiValueLegendOverrides":{},"barCommentaryOverrides":{}},"dataEverLoaded":true,"showAISuggestionsButton":false,"barChartShowXAxis":true,"groupedBarChartShowProductName":true,"barChartLabelsOnTop":false,"experimentalEnablePieChart":false,"slideshowUseDropdown":false}},{"id":"slide-1792492346796","snapshot":{"selectedProducts":["Hisense U6SF Pro","Hisense U7","Roku Pro Series (2025)"],"selectedPrimaryProduct":"Hisense U6SF Pro","selectedAttributes":["Delta-E"],"productColors":[{"productName":"Hisense U6SF Pro","color":"#2E6E93"},{"productName":"Hisense U7","color":"#E8238C"},{"productName":"Roku Pro Series (2025)","color":"#5DA8D4"}],"initialProductColors":[{"productName":"Hisense U6SF Pro","color":"#2E6E93"},{"productName":"Hisense U7","color":"#E8238C"},{"productName":"Roku Pro Series (2025)","color":"#5DA8D4"}],"attributeColors":[],"attributeGroups":[{"name":"Group 1","attributes":[]}],"chartType":"Bar","roundupViewType":"bars","stlSelectedHotspotId":null,"iaSelectedNodeId":null,"barChartMaxValueOverrides":{},"barChartMinValueOverrides":{},"displayMode":"All Charts","brand":{"name":"TechRadar","logoUrl":"https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png","sliderLogoUrl":"https://proof.vanilla.tools/media/images/brandLogos/techradar.png","colors":{"primary":"#2E6E93","secondary":"#E8238C","accent":"#FFFFFF","background":"#ffffff","text":"#1F2937","productColors":["#2E6E93","#E8238C","#5DA8D4","#F06EAF","#1A4E6B","#B81C70","#8CC3E0","#F499C9"]}},"textContent":{"title":"Picture accuracy","subhead":"A lower score is better. Taken using a colorimeter and test pattern generator.","caption":"Add your caption to explain the data, the learnings and the key takeaways of the data being visualized","productNameOverrides":{},"attributeNameOverrides":{},"chartTitleOverrides":{"grouped-bar-Group 1":"HDR Filmmaker Mode","grouped-bar-Group 2":"HDR Standard","grouped-bar-Group 3":"SDR Filmmaker Mode","grouped-bar-Group 4":"SDR Standard","bar-Delta-E":"SDR Delta-E"},"xAxisLabelOverrides":{},"subheadOverrides":{"grouped-bar-Group 4":"Taken using a colorimeter and test pattern generator. Click the test name for measurements and select the chosen test from the dropdown menu."},"captionOverrides":{},"unitOverrides":{},"multiValueLegendOverrides":{},"barCommentaryOverrides":{}},"dataEverLoaded":true,"showAISuggestionsButton":false,"barChartShowXAxis":true,"groupedBarChartShowProductName":true,"barChartLabelsOnTop":false,"experimentalEnablePieChart":false,"slideshowUseDropdown":false}},{"id":"slide-1792492395284","snapshot":{"selectedProducts":["Hisense U6SF Pro","Hisense U7","Roku Pro Series (2025)"],"selectedPrimaryProduct":"Hisense U6SF Pro","selectedAttributes":["4K 60Hz"],"productColors":[{"productName":"Hisense U6SF Pro","color":"#2E6E93"},{"productName":"Hisense U7","color":"#E8238C"},{"productName":"Roku Pro Series (2025)","color":"#5DA8D4"}],"initialProductColors":[{"productName":"Hisense U6SF Pro","color":"#2E6E93"},{"productName":"Hisense U7","color":"#E8238C"},{"productName":"Roku Pro Series (2025)","color":"#5DA8D4"}],"attributeColors":[],"attributeGroups":[{"name":"Group 1","attributes":[]}],"chartType":"Bar","roundupViewType":"bars","stlSelectedHotspotId":null,"iaSelectedNodeId":null,"barChartMaxValueOverrides":{},"barChartMinValueOverrides":{},"displayMode":"All Charts","brand":{"name":"TechRadar","logoUrl":"https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png","sliderLogoUrl":"https://proof.vanilla.tools/media/images/brandLogos/techradar.png","colors":{"primary":"#2E6E93","secondary":"#E8238C","accent":"#FFFFFF","background":"#ffffff","text":"#1F2937","productColors":["#2E6E93","#E8238C","#5DA8D4","#F06EAF","#1A4E6B","#B81C70","#8CC3E0","#F499C9"]}},"textContent":{"title":"Input lag","subhead":"Lower is better. Taken using a Leo Bodnar 4K HDMI Video Signal Lag Tester.","caption":"Add your caption to explain the data, the learnings and the key takeaways of the data being visualized","productNameOverrides":{},"attributeNameOverrides":{},"chartTitleOverrides":{"grouped-bar-Group 1":"HDR Filmmaker Mode","grouped-bar-Group 2":"HDR Standard","grouped-bar-Group 3":"SDR Filmmaker Mode","grouped-bar-Group 4":"SDR Standard","bar-Delta-E":"SDR Delta-E"},"xAxisLabelOverrides":{},"subheadOverrides":{"grouped-bar-Group 4":"Taken using a colorimeter and test pattern generator. Click the test name for measurements and select the chosen test from the dropdown menu."},"captionOverrides":{},"unitOverrides":{},"multiValueLegendOverrides":{},"barCommentaryOverrides":{}},"dataEverLoaded":true,"showAISuggestionsButton":false,"barChartShowXAxis":true,"groupedBarChartShowProductName":true,"barChartLabelsOnTop":false,"experimentalEnablePieChart":false,"slideshowUseDropdown":false}}]}Previous1 / 4NextBrightness measurementsHDR Filmmaker ModeHDR StandardSDR Filmmaker ModeSDR StandardHisense U6SF ProHDR Filmmaker Mode (10% window)1265HDR Filmmaker Mode (Fullscreen)713Hisense U7HDR Filmmaker Mode (10% window)2866HDR Filmmaker Mode (Fullscreen)793Roku Pro Series (2025)HDR Filmmaker Mode (10% window)820HDR Filmmaker Mode (Fullscreen)37307501,5002,2503,000nitsHDR Filmmaker Mode DataProductHDR Filmmaker Mode (10% window) (nits)HDR Filmmaker Mode (Fullscreen) (nits)Hisense U6SF Pro1265713Hisense U72866793Roku Pro Series (2025)820373Hisense U6SF ProHDR Standard Mode (10% window)1033HDR Standard Mode (Fullscreen)708Hisense U7HDR Standard Mode (10% window)2891HDR Standard Mode (Fullscreen)782Roku Pro Series (2025)HDR Standard Mode (10% window)841HDR Standard Mode (Fullscreen)39007501,5002,2503,000nitsHDR Standard DataProductHDR Standard Mode (10% window) (nits)HDR Standard Mode (Fullscreen) (nits)Hisense U6SF Pro1033708Hisense U72891782Roku Pro Series (2025)841390Hisense U6SF ProSDR Filmmaker Mode (10% window)358Hisense U7SDR Filmmaker Mode (10% window)185Roku Pro Series (2025)SDR Filmmaker Mode (10% window)4340150300450600nitsSDR Filmmaker Mode DataProductSDR Filmmaker Mode (10% window) (nits)Hisense U6SF Pro358Hisense U7185Roku Pro Series (2025)434Hisense U6SF ProSDR Standard Mode (10% window)788Hisense U7SDR Standard Mode (10% window)1994Roku Pro Series (2025)SDR Standard Mode (10% window)87605001,0001,5002,000nitsSDR Standard DataProductSDR Standard Mode (10% window) (nits)Hisense U6SF Pro788Hisense U71994Roku Pro Series (2025)876HDR color gamut

Closer to 100% is better. Taken using a colorimeter and test pattern generator.

Hisense U6SF ProUHDA-P396.1BT.202075.1Hisense U7UHDA-P397.3BT.202082.7Roku Pro Series (2025)UHDA-P396.9BT.202080.60255075100HDR Filmmaker Mode DataProductUHDA-P3 ()BT.2020 ()Hisense U6SF Pro96.175.1Hisense U797.382.7Roku Pro Series (2025)96.980.6Picture accuracy

A lower score is better. Taken using a colorimeter and test pattern generator.

SDR Delta-EHisense U6SF Pro1.5Hisense U73Roku Pro Series (2025)2.50123SDR Delta-E DataProductValueHisense U6SF Pro1.5Hisense U73Roku Pro Series (2025)2.5Input lag

Lower is better. Taken using a Leo Bodnar 4K HDMI Video Signal Lag Tester.

4K 60HzHisense U6SF Pro13.2Hisense U79.8Roku Pro Series (2025)9.303.757.511.2515ms4K 60Hz DataProductValueHisense U6SF Pro13.2Hisense U79.8Roku Pro Series (2025)9.3 window.iFrameResizer = { heightCalculationMethod: 'taggedElement' }; (function() { function createChartAnimator() { return function animateChartWrapper(chartWrapper) { if (!chartWrapper) return; function animateBars(chartElement) { if (!chartElement) return; var bars = chartElement.querySelectorAll('.fv-bar, .fv-stacked-segment'); bars.forEach(function(bar, index) { bar.style.setProperty('width', '0%', 'important'); bar.style.setProperty('transition', 'none', 'important'); var targetWidth = bar.dataset.targetWidth; if (targetWidth === undefined) return; void bar.offsetWidth; var targetMargin = bar.dataset.targetMargin; var baseMargin = bar.dataset.baseMargin; if (baseMargin !== undefined) { bar.style.setProperty('margin-left', baseMargin + '%', 'important'); } setTimeout(function() { var marginTransition = baseMargin !== undefined ? ', margin-left 0.8s ease-out' : ''; bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out' + marginTransition, 'important'); bar.style.setProperty('width', targetWidth + '%', 'important'); if (targetMargin !== undefined && baseMargin !== undefined) { bar.style.setProperty('margin-left', targetMargin + '%', 'important'); } }, index * 50 + 50); }); } function animateLineChart(chartElement) { if (!chartElement) return; var lineSvg = chartElement.querySelector('svg'); if (!lineSvg) return; var paths = lineSvg.querySelectorAll('.riv-line-path'); paths.forEach(function(p, i) { if (typeof p.getTotalLength === 'function') { var len = p.getTotalLength(); p.style.transition = 'none'; p.style.strokeDasharray = len; p.style.strokeDashoffset = len; p.getBoundingClientRect(); setTimeout(function() { p.style.transition = 'stroke-dashoffset 1s ease-out ' + (i * 0.1) + 's, stroke-width 0.2s, opacity 0.2s'; p.style.strokeDashoffset = '0'; }, 100); } }); var dots = lineSvg.querySelectorAll('.riv-dot'); dots.forEach(function(dot, i) { dot.style.opacity = '0'; setTimeout(function() { dot.style.transition = 'opacity 0.3s ease'; dot.style.opacity = '1'; }, 500 + i * 10); }); } function animateDials(chartElement) { if (!chartElement) return; var needles = chartElement.querySelectorAll('.fv-dial-needle'); needles.forEach(function(needle, index) { var targetAngle = needle.dataset.targetAngle; var baseAngle = needle.dataset.baseAngle || '-132'; if (targetAngle === undefined) return; needle.style.setProperty('transition', 'none', 'important'); needle.style.setProperty('transform', 'rotate(' + baseAngle + 'deg)', 'important'); void needle.getBoundingClientRect(); setTimeout(function() { needle.style.setProperty('transition', 'transform 0.9s cubic-bezier(0.22, 1, 0.36, 1)', 'important'); needle.style.setProperty('transform', 'rotate(' + targetAngle + 'deg)', 'important'); }, index * 60 + 50); }); } var charts = chartWrapper.querySelectorAll('.fv-chart-item'); charts.forEach(function(chart) { if (window.getComputedStyle(chart).display === 'none') return; var chartType = chart.dataset.chartType; if (chartType === 'Line') { animateLineChart(chart); } else if (chartType !== 'Pie') { animateBars(chart); animateDials(chart); } }); }; } var fvLocalAnimate = createChartAnimator(); window.fvAnimateCharts = fvLocalAnimate; function initialize(uniqueId, isSlideshow) { var root = document.getElementById(uniqueId); if (!root && !isSlideshow) return; function setupWrapper(chartWrapper) { if (!chartWrapper) return; /* Responsive mobile view handling */ function checkMobileView() { var width = chartWrapper.getBoundingClientRect().width; var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599; var isMobile; if (width === 0) { isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches; } else { isMobile = isMobileDevice || width < 600; } if (isMobile) { chartWrapper.classList.add('mobile-view'); } else { chartWrapper.classList.remove('mobile-view'); } } checkMobileView(); if (typeof ResizeObserver !== 'undefined') { var ro = new ResizeObserver(function() { checkMobileView(); }); ro.observe(chartWrapper); } window.addEventListener('resize', checkMobileView); var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true'; if (labelsOnTop) { var charts = chartWrapper.querySelectorAll('.fv-chart-item'); var hasVisibleBarChart = false; charts.forEach(function(c) { if (window.getComputedStyle(c).display !== 'none') { var cType = c.dataset.chartType; if (cType === 'Bar' || cType === 'Diverging Bar' || cType === 'Stacked Bar' || cType === 'Versus') { hasVisibleBarChart = true; } } }); if (hasVisibleBarChart) { chartWrapper.classList.add('labels-on-top'); } else { chartWrapper.classList.remove('labels-on-top'); } } else { chartWrapper.classList.remove('labels-on-top'); } /* Legend interactions */ chartWrapper.querySelectorAll('.riv-line-legend').forEach(function(legend) { var chartId = legend.dataset.chart; var chart = chartWrapper.querySelector('[id="' + chartId + '"]'); if (!chart) return; var lines = chart.querySelectorAll('.riv-line-path'); var dots = chart.querySelectorAll('.riv-dot'); var legendItems = legend.querySelectorAll('.riv-legend-item'); legendItems.forEach(function(item) { var productName = item.dataset.product; var safeProductName = productName.replace(/"/g, '\\"'); var line = chart.querySelector('.riv-line-path[data-product="' + safeProductName + '"]'); var productDots = chart.querySelectorAll('.riv-dot[data-product="' + safeProductName + '"]'); if (line && !line.dataset.origStroke) { line.dataset.origStroke = line.getAttribute('stroke-width') || '2'; } var highlight = function() { if (legend.querySelector('.isolated')) return; lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); }); dots.forEach(function(d) { d.style.opacity = '0.2'; }); legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; }); if (line) { line.style.opacity = '1'; line.setAttribute('stroke-width', '4'); } productDots.forEach(function(d) { d.style.opacity = '1'; }); item.style.opacity = '1'; }; var clearHighlight = function() { if (legend.querySelector('.isolated')) return; lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); }); dots.forEach(function(d) { d.style.opacity = '1'; }); legendItems.forEach(function(i) { i.style.opacity = '1'; }); }; var toggleIsolate = function() { var isIsolated = item.classList.contains('isolated'); legendItems.forEach(function(i) { i.classList.remove('isolated'); }); if (isIsolated) { lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); }); dots.forEach(function(d) { d.style.opacity = '1'; }); legendItems.forEach(function(i) { i.style.opacity = '1'; }); } else { item.classList.add('isolated'); lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); }); dots.forEach(function(d) { d.style.opacity = '0.2'; }); legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; }); if (line) { line.style.opacity = '1'; line.setAttribute('stroke-width', '4'); } productDots.forEach(function(d) { d.style.opacity = '1'; }); item.style.opacity = '1'; } }; item.addEventListener('mouseenter', highlight); item.addEventListener('focus', highlight); item.addEventListener('mouseleave', clearHighlight); item.addEventListener('blur', clearHighlight); item.addEventListener('click', toggleIsolate); if (line) { line.style.cursor = 'pointer'; line.addEventListener('mouseenter', highlight); line.addEventListener('mouseleave', clearHighlight); line.addEventListener('click', toggleIsolate); } }); }); /* Versus Chart Logic */ var versusCharts = chartWrapper.querySelectorAll('.fv-versus-chart'); versusCharts.forEach(function(vc) { var dataJson = vc.getAttribute('data-versus-data'); var leftColor = vc.getAttribute('data-left-color') || '#E53935'; var rightColor = vc.getAttribute('data-right-color') || '#FFB300'; if (!dataJson) return; var versusData = JSON.parse(dataJson); var leftSelect = vc.querySelector('.fv-select-left'); var rightSelect = vc.querySelector('.fv-select-right'); var rows = vc.querySelectorAll('.fv-versus-row'); function updateVersusChart() { var leftProduct = leftSelect.value; var rightProduct = rightSelect.value; leftSelect.style.color = leftColor; leftSelect.style.borderColor = leftColor; rightSelect.style.color = rightColor; rightSelect.style.borderColor = rightColor; rows.forEach(function(row) { var index = parseInt(row.getAttribute('data-index')); var data = versusData[index]; if (!data) return; var leftVal = data.productData[leftProduct] ? data.productData[leftProduct].value : undefined; var rightVal = data.productData[rightProduct] ? data.productData[rightProduct].value : undefined; var leftIsNum = typeof leftVal === 'number'; var rightIsNum = typeof rightVal === 'number'; var leftNum = leftIsNum ? leftVal : 0; var rightNum = rightIsNum ? rightVal : 0; var maxVal = Math.max(leftNum, rightNum, 0.0001); var leftWidth = leftIsNum ? (leftNum / maxVal) * 95 : 0; var rightWidth = rightIsNum ? (rightNum / maxVal) * 85 : 0; var winner = null; var pctDiffStr = null; if (leftIsNum && rightIsNum) { if (leftNum > rightNum) { winner = 'left'; if (rightNum > 0) { var diff = Math.round(((leftNum - rightNum) / rightNum) * 100); pctDiffStr = '+' + diff.toLocaleString() + '%'; } } else if (rightNum > leftNum) { winner = 'right'; if (leftNum > 0) { var diff = Math.round(((rightNum - leftNum) / leftNum) * 100); pctDiffStr = '+' + diff.toLocaleString() + '%'; } } } var leftDisplay = data.productData[leftProduct] && data.productData[leftProduct].displayValue !== undefined ? data.productData[leftProduct].displayValue : (leftIsNum ? leftNum.toLocaleString() : (leftVal !== undefined ? leftVal : '-')); var rightDisplay = data.productData[rightProduct] && data.productData[rightProduct].displayValue !== undefined ? data.productData[rightProduct].displayValue : (rightIsNum ? rightNum.toLocaleString() : (rightVal !== undefined ? rightVal : '-')); var unit = (data.productData[leftProduct] && data.productData[leftProduct].unit) || (data.productData[rightProduct] && data.productData[rightProduct].unit) || ''; var leftTextStr = leftDisplay; var rightTextStr = rightDisplay; var leftBar = row.querySelector('.fv-versus-bar-left'); var rightBar = row.querySelector('.fv-versus-bar-right'); var leftText = row.querySelector('.fv-inside-left'); var rightText = row.querySelector('.fv-inside-right'); var labelText = row.querySelector('.fv-versus-label span'); var existingPctDiffs = row.querySelectorAll('.fv-versus-pct-diff'); existingPctDiffs.forEach(function(el) { el.remove(); }); if (winner === 'left' && pctDiffStr) { var pctSpan = document.createElement('span'); pctSpan.className = 'fv-versus-pct-diff'; pctSpan.style.color = 'rgba(255, 255, 255, 0.9)'; pctSpan.textContent = pctDiffStr; if (leftBar) leftBar.insertBefore(pctSpan, leftBar.firstChild); } else if (winner === 'right' && pctDiffStr) { var pctSpan = document.createElement('span'); pctSpan.className = 'fv-versus-pct-diff'; pctSpan.style.color = 'rgba(255, 255, 255, 0.9)'; pctSpan.textContent = pctDiffStr; if (rightBar) rightBar.appendChild(pctSpan); } if (leftBar) { leftBar.style.backgroundColor = leftColor; leftBar.dataset.targetWidth = leftWidth; leftBar.style.setProperty('--target-width', leftWidth + '%'); leftBar.style.width = leftWidth + '%'; } if (rightBar) { rightBar.style.backgroundColor = rightColor; rightBar.dataset.targetWidth = rightWidth; rightBar.style.setProperty('--target-width', rightWidth + '%'); rightBar.style.width = rightWidth + '%'; } if (leftText) { leftText.innerHTML = leftTextStr; } if (rightText) { rightText.innerHTML = rightTextStr; } if (labelText) { labelText.textContent = data.attribute + (unit ? ' (' + unit + ')' : ''); } }); } if (leftSelect) leftSelect.addEventListener('change', updateVersusChart); if (rightSelect) rightSelect.addEventListener('change', updateVersusChart); }); /* Bar Commentary Hover Logic */ var barRows = chartWrapper.querySelectorAll('.fv-bar-row'); var globalCaptionEl = chartWrapper.querySelector('.rv-chart-caption'); var fallbackCaptionHtml = globalCaptionEl ? globalCaptionEl.innerHTML : ''; barRows.forEach(function(row) { var commentaryEl = row.querySelector('[data-commentary-key]'); if (commentaryEl) { var commentaryText = commentaryEl.textContent; if (commentaryText && commentaryText.trim().length > 0) { row.addEventListener('mouseenter', function() { if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) { globalCaptionEl.innerHTML = commentaryText; globalCaptionEl.classList.add('fv-bar-active-caption'); } }); row.addEventListener('mouseleave', function() { if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) { globalCaptionEl.innerHTML = fallbackCaptionHtml; globalCaptionEl.classList.remove('fv-bar-active-caption'); } }); } } }); /* Carousel & Dropdown Logic */ var charts = chartWrapper.querySelectorAll('.fv-chart-item'); var dropdown = chartWrapper.querySelector('.fv-dropdown-title'); var prevBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.prev'); var nextBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.next'); var carouselTitle = chartWrapper.querySelector('.fv-carousel-title-controls .fv-benchmark-title'); var counter = chartWrapper.querySelector('.fv-carousel-counter'); var subheadEl = chartWrapper.querySelector('.fv-chart-subhead'); var captionEl = chartWrapper.querySelector('.rv-chart-caption'); var footerContentEl = chartWrapper.querySelector('.fv-footer-content'); var bottomBarEl = chartWrapper.querySelector('.fv-bottom-bar'); var logoEl = chartWrapper.querySelector('.fv-logo'); if (charts.length > 1 && (dropdown || prevBtn)) { var currentChartIndex = 0; var titles = []; if (dropdown) { titles = Array.from(dropdown.options).map(function(o) { return o.text; }); } else { charts.forEach(function(c) { titles.push(c.getAttribute('data-title') || ''); }); } function showInternalChart(index) { if (index < 0) index = charts.length - 1; if (index >= charts.length) index = 0; currentChartIndex = index; charts.forEach(function(c, i) { c.style.display = i === index ? 'block' : 'none'; if (i === index) { var cType = c.dataset.chartType; if (cType !== 'Pie') { fvLocalAnimate(chartWrapper); } var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true'; if (labelsOnTop && (cType === 'Bar' || cType === 'Diverging Bar' || cType === 'Stacked Bar' || cType === 'Versus')) { chartWrapper.classList.add('labels-on-top'); } else { chartWrapper.classList.remove('labels-on-top'); } } }); if (dropdown) dropdown.value = index; if (carouselTitle && titles[index]) carouselTitle.textContent = titles[index]; if (counter) counter.textContent = (index + 1) + ' of ' + charts.length; var activeChart = charts[index]; if (activeChart) { var newSubhead = activeChart.getAttribute('data-subhead'); var newCaption = activeChart.getAttribute('data-caption'); var currentChartType = activeChart.getAttribute('data-chart-type'); var hideGlobalCaption = currentChartType === 'Countdown' || currentChartType === 'Image Comparison' || currentChartType === 'Shop the Collection'; if (subheadEl) subheadEl.textContent = newSubhead || ''; if (captionEl) { captionEl.textContent = newCaption || ''; fallbackCaptionHtml = newCaption || ''; } if (footerContentEl) { if (newCaption && newCaption.trim().length > 0 && !hideGlobalCaption) { footerContentEl.style.display = 'block'; if (bottomBarEl) bottomBarEl.style.display = 'flex'; } else { footerContentEl.style.display = 'none'; if (bottomBarEl && !logoEl) { bottomBarEl.style.display = 'none'; } } } } } if (dropdown) dropdown.addEventListener('change', function(e) { showInternalChart(parseInt(e.target.value)); }); if (prevBtn) prevBtn.addEventListener('click', function() { showInternalChart(currentChartIndex - 1); }); if (nextBtn) nextBtn.addEventListener('click', function() { showInternalChart(currentChartIndex + 1); }); } /* Image Comparison Logic */ var imageCompareWrappers = chartWrapper.querySelectorAll('.fv-image-compare-wrapper'); imageCompareWrappers.forEach(function(wrapper) { var inner = wrapper.querySelector('.fv-image-compare-inner') || wrapper; var slider = wrapper.querySelector('.fv-image-compare-slider'); var fgImage = wrapper.querySelector('.fv-image-compare-fg'); var bgImage = wrapper.querySelector('.fv-image-compare-bg'); var labelLeft = wrapper.querySelector('.fv-image-compare-label-left'); var labelRight = wrapper.querySelector('.fv-image-compare-label-right'); var isDragging = false; var scale = 1; var panX = 0; var panY = 0; var isPanning = false; var hasPanned = false; var lastClientX = 0; var lastClientY = 0; var initialDistance = null; var lastCenterX = null; var lastCenterY = null; function updateTransform() { if (wrapper.classList.contains('fv-image-compare-fullscreen')) { inner.style.setProperty('transform', 'translate(' + panX + 'px, ' + panY + 'px) scale(' + scale + ')', 'important'); } else { inner.style.removeProperty('transform'); scale = 1; panX = 0; panY = 0; } } function constrainPan() { var rect = wrapper.getBoundingClientRect(); var maxPanX = Math.max(0, (rect.width * scale - rect.width) / 2); var maxPanY = Math.max(0, (rect.height * scale - rect.height) / 2); panX = Math.max(-maxPanX, Math.min(panX, maxPanX)); panY = Math.max(-maxPanY, Math.min(panY, maxPanY)); } wrapper.addEventListener('wheel', function(e) { if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return; e.preventDefault(); var zoomSensitivity = 0.005; var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity); var newScale = Math.max(1, Math.min(scale * zoomFactor, 5)); if (newScale === scale) return; var rect = wrapper.getBoundingClientRect(); var mouseX = e.clientX - rect.left - rect.width / 2; var mouseY = e.clientY - rect.top - rect.height / 2; var ratio = newScale / scale; panX = mouseX - (mouseX - panX) * ratio; panY = mouseY - (mouseY - panY) * ratio; scale = newScale; constrainPan(); updateTransform(); }, { passive: false }); wrapper.addEventListener('mousedown', function(e) { if (!wrapper.classList.contains('fv-image-compare-fullscreen') || scale <= 1) return; if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return; isPanning = true; hasPanned = false; lastClientX = e.clientX; lastClientY = e.clientY; }); window.addEventListener('mousemove', function(e) { if (!isPanning) return; var dx = e.clientX - lastClientX; var dy = e.clientY - lastClientY; if (Math.abs(dx) > 2 || Math.abs(dy) > 2) { hasPanned = true; } lastClientX = e.clientX; lastClientY = e.clientY; panX += dx; panY += dy; constrainPan(); updateTransform(); }); window.addEventListener('mouseup', function() { isPanning = false; }); wrapper.addEventListener('touchstart', function(e) { if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return; if (e.touches.length === 2) { e.preventDefault(); var dx = e.touches[0].clientX - e.touches[1].clientX; var dy = e.touches[0].clientY - e.touches[1].clientY; initialDistance = Math.sqrt(dx * dx + dy * dy); var rect = wrapper.getBoundingClientRect(); lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2; lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2; hasPanned = true; } else if (e.touches.length === 1 && scale > 1) { if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return; isPanning = true; hasPanned = false; lastClientX = e.touches[0].clientX; lastClientY = e.touches[0].clientY; } }, { passive: false }); wrapper.addEventListener('touchmove', function(e) { if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return; if (e.touches.length === 2 && initialDistance !== null) { e.preventDefault(); var dx = e.touches[0].clientX - e.touches[1].clientX; var dy = e.touches[0].clientY - e.touches[1].clientY; var distance = Math.sqrt(dx * dx + dy * dy); if (initialDistance > 0) { var zoomFactor = distance / initialDistance; var newScale = Math.max(1, Math.min(scale * zoomFactor, 5)); var rect = wrapper.getBoundingClientRect(); var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2; var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2; var ratio = newScale / scale; panX = centerX - (centerX - panX) * ratio; panY = centerY - (centerY - panY) * ratio; if (lastCenterX !== null && lastCenterY !== null) { panX += (centerX - lastCenterX); panY += (centerY - lastCenterY); } scale = newScale; lastCenterX = centerX; lastCenterY = centerY; constrainPan(); updateTransform(); } initialDistance = distance; } else if (e.touches.length === 1 && isPanning) { e.preventDefault(); var dx = e.touches[0].clientX - lastClientX; var dy = e.touches[0].clientY - lastClientY; if (Math.abs(dx) > 2 || Math.abs(dy) > 2) { hasPanned = true; } lastClientX = e.touches[0].clientX; lastClientY = e.touches[0].clientY; panX += dx; panY += dy; constrainPan(); updateTransform(); } }, { passive: false }); wrapper.addEventListener('touchend', function(e) { if (e.touches.length < 2) { initialDistance = null; } if (e.touches.length === 0) { isPanning = false; } }); function handleMove(clientX) { var rect = inner.getBoundingClientRect(); var x = Math.max(0, Math.min(clientX - rect.left, rect.width)); var percent = Math.max(0, Math.min((x / rect.width) * 100, 100)); if (slider) slider.style.setProperty('left', percent + '%', 'important'); if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important'); if (labelLeft) { if (percent < 10) { labelLeft.style.setProperty('opacity', '0', 'important'); } else { labelLeft.style.setProperty('opacity', '1', 'important'); } } if (labelRight) { if (percent > 90) { labelRight.style.setProperty('opacity', '0', 'important'); } else { labelRight.style.setProperty('opacity', '1', 'important'); } } } function onMouseMove(e) { if (!isDragging) return; handleMove(e.clientX); } function onTouchMove(e) { if (!isDragging) return; e.preventDefault(); handleMove(e.touches[0].clientX); } function stopDragging() { isDragging = false; window.removeEventListener('mousemove', onMouseMove); window.removeEventListener('mouseup', stopDragging); window.removeEventListener('touchmove', onTouchMove); window.removeEventListener('touchend', stopDragging); } if (slider) { var startDrag = function(clientX) { isDragging = true; handleMove(clientX); window.addEventListener('mousemove', onMouseMove); window.addEventListener('mouseup', stopDragging); }; var startTouchDrag = function(clientX) { isDragging = true; handleMove(clientX); window.addEventListener('touchmove', onTouchMove, { passive: false }); window.addEventListener('touchend', stopDragging); }; slider.addEventListener('mousedown', function(e) { e.preventDefault(); startDrag(e.clientX); }); slider.addEventListener('touchstart', function(e) { e.preventDefault(); startTouchDrag(e.touches[0].clientX); }, { passive: false }); } var expandBtn = wrapper.querySelector('.fv-image-compare-expand-btn'); var closeBtn = wrapper.querySelector('.fv-image-compare-close-btn'); if (expandBtn) { if (window !== window.parent) { expandBtn.style.display = 'none'; } else { expandBtn.addEventListener('click', function(e) { e.stopPropagation(); wrapper.classList.add('fv-image-compare-fullscreen'); document.body.style.overflow = 'hidden'; if (fgImage && fgImage.dataset.highresSrc) { fgImage.src = fgImage.dataset.highresSrc; fgImage.removeAttribute('srcset'); fgImage.removeAttribute('sizes'); } if (bgImage && bgImage.dataset.highresSrc) { bgImage.src = bgImage.dataset.highresSrc; bgImage.removeAttribute('srcset'); bgImage.removeAttribute('sizes'); } }); } } if (closeBtn) { closeBtn.addEventListener('click', function(e) { e.stopPropagation(); wrapper.classList.remove('fv-image-compare-fullscreen'); document.body.style.overflow = ''; updateTransform(); }); } document.addEventListener('keydown', function(e) { if (e.key === 'Escape' && wrapper.classList.contains('fv-image-compare-fullscreen')) { wrapper.classList.remove('fv-image-compare-fullscreen'); document.body.style.overflow = ''; updateTransform(); } }); }); /* Shop The Look Hotspots */ var hotspots = chartWrapper.querySelectorAll('.fv-stl-hotspot-btn'); var allProductsModal = chartWrapper.querySelector('.fv-stl-all-products-modal'); var shopAllBtn = chartWrapper.querySelector('.fv-stl-shop-all-btn'); var stlContainer = chartWrapper.querySelector('.fv-stl-container'); function closeAllModals() { if (allProductsModal) { allProductsModal.classList.remove('is-active'); var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item'); items.forEach(function(item) { item.classList.remove('is-highlighted'); }); if (stlContainer) { setTimeout(function() { if (!allProductsModal.classList.contains('is-active')) { stlContainer.style.minHeight = ''; if ('parentIFrame' in window) { window.parentIFrame.size(); } } }, 300); } } hotspots.forEach(function(btn) { btn.setAttribute('aria-expanded', 'false'); }); if ('parentIFrame' in window) { window.parentIFrame.size(); } } hotspots.forEach(function(btn) { btn.addEventListener('click', function(e) { e.stopPropagation(); var hotspotId = btn.getAttribute('data-hotspot-id'); var isExpanded = btn.getAttribute('aria-expanded') === 'true'; closeAllModals(); if (!isExpanded && allProductsModal) { btn.setAttribute('aria-expanded', 'true'); allProductsModal.classList.add('is-active'); var container = btn.closest('.fv-stl-container'); if (container && container.offsetHeight < 450) { container.style.minHeight = '450px'; } var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]'); if (targetItem) { targetItem.classList.add('is-highlighted'); setTimeout(function() { targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' }); }, 100); } if ('parentIFrame' in window) { window.parentIFrame.size(); } } }); }); if (shopAllBtn && allProductsModal) { shopAllBtn.addEventListener('click', function(e) { e.stopPropagation(); closeAllModals(); allProductsModal.classList.add('is-active'); var container = shopAllBtn.closest('.fv-stl-container'); if (container && container.offsetHeight < 450) { container.style.minHeight = '450px'; } if ('parentIFrame' in window) { window.parentIFrame.size(); } }); } if (allProductsModal) { var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close'); if (closeAllBtn) { closeAllBtn.addEventListener('click', function(e) { e.stopPropagation(); closeAllModals(); }); } } chartWrapper.addEventListener('click', function(e) { if (!e.target.closest('.fv-stl-all-products-content')) { closeAllModals(); } }); if (allProductsModal) { allProductsModal.addEventListener('click', function(e) { if (!e.target.closest('.fv-stl-all-products-content')) { closeAllModals(); } }); } /* Image Annotation Logic */ var iaNodes = chartWrapper.querySelectorAll('.fv-ia-node-button'); var iaWrapper = chartWrapper.querySelector('.fv-ia-wrapper'); var originalCaption = chartWrapper.querySelector('.fv-original-caption') || captionEl; var dynamicCaption = chartWrapper.querySelector('.fv-ia-dynamic-caption'); var exploreBtn = chartWrapper.querySelector('.fv-ia-explore-btn'); var currentIaIndex = -1; function closeAllIANodes() { iaNodes.forEach(function(btn) { btn.classList.remove('is-active'); }); if (originalCaption) originalCaption.style.display = 'block'; if (dynamicCaption) dynamicCaption.style.display = 'none'; } function resetExploreBtn() { currentIaIndex = -1; if (exploreBtn) { var exploreSpan = exploreBtn.querySelector('span'); if (exploreSpan) exploreSpan.textContent = 'Explore'; } } iaNodes.forEach(function(btn, index) { btn.addEventListener('click', function(e) { e.stopPropagation(); var isActive = btn.classList.contains('is-active'); closeAllIANodes(); if (!isActive) { currentIaIndex = index; if (exploreBtn) { var exploreSpan = exploreBtn.querySelector('span'); if (exploreSpan) exploreSpan.textContent = 'Next'; } btn.classList.add('is-active'); if (dynamicCaption) { var title = btn.getAttribute('data-title') || ''; var desc = btn.getAttribute('data-desc') || ''; dynamicCaption.innerHTML = ''; var strongTag = document.createElement('strong'); strongTag.textContent = title; dynamicCaption.appendChild(strongTag); if (desc) { dynamicCaption.appendChild(document.createTextNode(' - ' + desc)); } if (originalCaption) originalCaption.style.display = 'none'; dynamicCaption.style.display = 'block'; if (footerContentEl) footerContentEl.style.display = 'block'; } } else { resetExploreBtn(); } }); }); if (exploreBtn) { exploreBtn.addEventListener('click', function(e) { e.stopPropagation(); if (iaNodes.length === 0) return; var nextIndex = currentIaIndex + 1; if (nextIndex >= iaNodes.length) { closeAllIANodes(); resetExploreBtn(); } else { currentIaIndex = nextIndex; var targetBtn = iaNodes[currentIaIndex]; if (targetBtn) { if (targetBtn.classList.contains('is-active')) { targetBtn.click(); } targetBtn.click(); } } }); } if (iaWrapper) { iaWrapper.addEventListener('click', function(e) { if (!e.target.closest('.fv-ia-node-button') && !e.target.closest('.fv-ia-explore-btn')) { closeAllIANodes(); resetExploreBtn(); } }); } /* Initial Animation */ chartWrapper._fvAnimate = fvLocalAnimate; fvLocalAnimate(chartWrapper); /* Countdown Logic */ var countdownContainer = chartWrapper.querySelector('.fv-countdown-container'); if (countdownContainer) { var targetDateAttr = countdownContainer.getAttribute('data-target-date'); if (targetDateAttr) { var targetDate = new Date(targetDateAttr); var pad = function(n) { return (n < 10 ? '0' : '') + n; }; var updateCountdown = function() { var difference = +targetDate - +new Date(); var d = 0, h = 0, m = 0, s = 0; if (difference > 0) { d = Math.floor(difference / (1000 * 60 * 60 * 24)); h = Math.floor((difference / (1000 * 60 * 60)) % 24); m = Math.floor((difference / 1000 / 60) % 60); s = Math.floor((difference / 1000) % 60); } var daysEl = countdownContainer.querySelector('[data-time="days"]'); var hoursEl = countdownContainer.querySelector('[data-time="hours"]'); var minsEl = countdownContainer.querySelector('[data-time="minutes"]'); var secsEl = countdownContainer.querySelector('[data-time="seconds"]'); if (daysEl) daysEl.textContent = d; if (hoursEl) hoursEl.textContent = pad(h); if (minsEl) minsEl.textContent = pad(m); if (secsEl) secsEl.textContent = pad(s); }; updateCountdown(); setInterval(updateCountdown, 1000); } } } if (true) { var slideshowContainer = document.getElementById(uniqueId + '-slideshow'); if (slideshowContainer) { var slides = slideshowContainer.querySelectorAll('.fv-slide'); slides.forEach(function(slide) { setupWrapper(slide.querySelector('.fv-chart-wrapper')); }); } var slideshowContainer = document.getElementById(uniqueId + '-slideshow'); if (slideshowContainer) { var currentSlideIndex = 0; var slides = slideshowContainer.querySelectorAll('.fv-slide'); var counter = slideshowContainer.querySelector('.fv-slide-counter'); var prevBtn = slideshowContainer.querySelector('.fv-nav-btn.prev'); var nextBtn = slideshowContainer.querySelector('.fv-nav-btn.next'); var dropdown = slideshowContainer.querySelector('.fv-slideshow-select'); function updateControls(index) { if (counter) counter.textContent = (index + 1) + ' / ' + slides.length; if (dropdown) dropdown.value = index; if (prevBtn) { if (index === 0) prevBtn.classList.add('disabled'); else prevBtn.classList.remove('disabled'); } if (nextBtn) { if (index === slides.length - 1) nextBtn.classList.add('disabled'); else nextBtn.classList.remove('disabled'); } } function showSlide(index) { if (index < 0) return; if (index >= slides.length) return; currentSlideIndex = index; slides.forEach(function(slide, i) { slide.style.display = i === index ? 'block' : 'none'; if (i === index) { var chartEl = slide.querySelector('.fv-chart-wrapper'); if (chartEl) { fvLocalAnimate(chartEl); } } }); updateControls(currentSlideIndex); } if (prevBtn) { prevBtn.addEventListener('click', function() { showSlide(currentSlideIndex - 1); }); } if (nextBtn) { nextBtn.addEventListener('click', function() { showSlide(currentSlideIndex + 1); }); } if (dropdown) { dropdown.addEventListener('change', function(e) { showSlide(parseInt(e.target.value)); }); } updateControls(currentSlideIndex); if (slides.length > 0) { var firstChart = slides[0].querySelector('.fv-chart-wrapper'); if (firstChart) { setTimeout(function() { fvLocalAnimate(firstChart); }, 100); } } } } else { setupWrapper(root); } } if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1792492395285-jtpd1lwb2', true); }); } else { initialize('fv-chart-1792492395285-jtpd1lwb2', true); } })();

The Hisense U6SF Pro does a decent job with blooming as showcased by this scene from the movie Soul (Image credit: Future / James Holland)Hisense U6SF Pro Series MiniLED TV review: Features
  • Supports all the necessary HDR and spatial audio formats
  • Alexa+ works well but isn’t hands-free
  • Ambient mode includes options to load personal photos or AI art

Let’s get the basics in terms of features out of the way. The Hisense U6SF Pro supports the litany of HDR formats one would need including Dolby Vision IQ. It also comes with Dolby Atmos and DTS: Virtual X for anyone wanting or needing spatial audio support. And you can connect to the TV via Bluetooth (whether that’s playing music or connecting a device like a game controller), Apple AirPlay, and Smart Home integration.

Since the Hisense U6SF Pro is a Fire TV, it comes with Alexa+, Amazon’s AI-powered version of the company’s long-standing voice assistant. One of the places where this TV’s limitations are a little more obvious than slightly more expensive TVs like the Hisense U7 is the fact that, while there is an actual voice assistant on hand, I have to press the mic button on the remote to use it. In essence, there’s no hands-free control here.

As far as using Alexa+, it’s conversational and does one thing that I’ve had issues with on Google TVs and Google Gemini and that is actually play content directly from the home screen when asked instead of bringing me to an intermediary landing page. Sometimes, I don’t want more info. Sometimes, I just want to watch Psych.

Since it is 2026, AI is implemented throughout this TV and not just with Alexa+. For one, it comes with what Hisense calls “Hi-View AI Engine,” which from what I can tell is the same thing as Dolby Vision. Also worth noting that this TV is said to support Dolby Vision IQ but doesn’t have any Dolby-Vision-related settings in its menu (it only pops up as a picture mode when watching certain media), but it does have more generic sounding settings that do the same thing. I assume this is Hisense’s Hi-View AI Engine.

Also implemented on this TV is an AI-powered Ambient mode, a neat feature that I personally don’t get a lot out of, but you might. You can use premade art, create AI-generated art, or upload pictures using the Amazon Photos app.

  • Features score: 4.5 / 5

The Hisense U6SF Pro shows plenty of detail as seen in this scene from The Batman (Image credit: Future / James Holland)Hisense U6SF Pro Series MiniLED TV review: picture quality
  • Not a lot of detail in shadows
  • Smooth action; little blooming
  • Quite a bit of vignetting

The interesting thing about a TV like the Hisense U6SF Pro is that the picture quality is generally decent but looks a little two-dimensional compared to more expensive TVs. Whether I’m watching Coco, Top Gun: Maverick, or The Batman, the colors are vibrant enough — this TV has around 96% P3 color coverage — for me to feel like I’m seeing everything as intended. Of course, I have Filmmaker Mode and Imax Mode available along with Dolby Vision IQ.

And the action is smooth — something I noticed with my gaming tests as well. The Hisense U6SF Pro has a 144Hz refresh rate that applies to any content capable of taking advantage, including sources coming through the two 2.1 HDMI ports.

Considering that this TV has all the HDR formats one could need as well as a peak brightness of over 1200 nits (at 10% in Filmmaker Mode) in our benchmarks, I was surprised that the screen felt a little flat. That’s because I consider that flatness to be an issue with the contrast.

While a Hi-QLED mini-LED TV, the Hisense U6SF Pro doesn’t have as much separation of detail in shadows, something I noticed most sharply when gaming but I think contributed to the more two dimensional quality of the picture.

That said, the TV did a good job with blooming, as I didn’t notice any of that halo effect show up when watching a bright subject against a dark background.

The one other issue that I noticed with this TV is vignetting, not just in the corners as I’ve seen with TVs in this range, but along the bottom of the screen as well.

  • Picture quality score: 4 / 5

The Hisense U6SF Pro has a 2.1 system including a subwoofer (Image credit: Future / James Holland)Hisense U6SF Pro Series MiniLED TV review: sound quality
  • Sounds good enough to skip a soundbar
  • Soundstage is pretty narrow
  • Dialog enhancer and night mode work well

The Hisense U6SF Pro’s sound quality is pretty good. With a 50 watt 2.1 built-in system, it should be good enough to skip a soundbar. And I think it is, within reason. I can hear dialog clearly with whatever I’m watching and there’s a bit of a sound stage where I can hear audio elements go from one side to the other, though it’s only as wide as the TV itself.

Since there’s a built-in sub, you do get some low-end information. For instance, one of the scenes I use to test is the Penguin chase scene in The Batman and explosions had a bit of that low-end rumble that you want when watching an action-packed movie.

I will say that the sound quality won’t reach home theater levels, however, so using a soundbar system with a subwoofer (and surrounds) will still sound better. The sound here, with its crisp highs and balanced mids, will do the job if you don’t want to also invest in a full system.

When deep diving into the settings, I noticed that Devialet has licensed its name to Hisense for this model so you can thank the company for the sound quality here. I also noticed that there’s some Atmos and surround sound virtualization, the latter of which completely removes any stereo separation when on.

There’s also a dialog enhancer that works as intended while not sounding too hinky (this feature can sometimes do that since it’s basically boosting the frequencies where voices typically sit). And there’s also a night mode that does a good job of compressing audio so that you can watch at night without loud sections of audio waking someone up. A five-band EQ is also available, as well as a handful of sound modes.

  • Sound quality score: 4 / 5

The Hisense U6SF Pro comes with two HDMI 2.1 ports (Image credit: Future / James Holland)Hisense U6SF Pro Series MiniLED TV review: Design
  • Uses feet instead of stand but are width-adjustable
  • Plenty of ports including two 2.1 HDMI
  • Anti-glare screen

The Hisense U6SF Pro comes in the usual sizes one would expect from most models these days with its smallest size at 55 inches and its biggest at 100. There are also 65, 75, and 85 inch sizes available.

As far as stands go, the Hisense U6SF Pro has two feet on the outer ends of the TV instead of the center base. While this means that the TV isn’t height adjustable (some stands can be screwed in at different heights), there are a couple places to screw in the feet so that one can have the feet wider or narrower. This is helpful if you have a smaller entertainment console. Just be aware that this particular feature is not available on the 55-inch model.

The ports on the TV are more than enough for most people. There are the usual four HDMI ports — two 2.1 that support 4K@144Hz — a single LAN, two USB (one USB 3.0 and one USB 2.0), an optical port, and an RF Antenna port.

While I don’t want to talk too much about the screen here, Hisense does use an anti-glare screen that makes this TV a little easier to watch in a bright room. Also worth noting is that there’s a 2.1 50 watt built-in sound system with an included subwoofer.

  • Design score: 4 / 5

The Hisense U6SF Pro comes with Alexa+ built in (Image credit: Future / James Holland)Hisense U6SF Pro Series MiniLED TV review: Smart TV & Menus
  • Amazon-focused content and ads in interface
  • Less free content than expected
  • Some menu settings only accessible when playing content

Being a Fire TV, using the Hisense U6SF Pro is going to be a little Amazon-focused. The layout, which is composed of a banner of rotating content followed by rows of suggested content and apps, is littered with ads and content on Prime. Of course, this isn’t new nor is it unique. Whenever I review a Google TV, it’s the same except with Youtube-related suggestions instead of Prime.

The layout itself is one that I think has been broadly adopted because it’s intuitive and lets you navigate to content without having to open an app just to see what’s locked in there. Interestingly, maybe because Amazon wants everyone on Prime, there’s less free content here than I typically find included in an OS. Sure, there’s a Guide app that looks like an old school cable interface with plenty of free content, but that’s about it.

The OSD menu, integrated into the Fire TV OS, seems intuitive to use. However, certain settings, particularly for picture and sound settings, are not accessible through the settings menu in the interface. Instead, you have to press the settings button on the remote when some content is playing to get access to advanced settings. So, if I want to turn on “Intelligent Picture” or change to Filmmaker Mode or Imax Mode (both of which are available on this TV), I need something to be playing first.

  • Smart TV & menus score: 4 / 5

Hisense U6SF Pro showcasing its gaming with Alan Wake II (Image credit: Future / James Holland)Hisense U6SF Pro Series MiniLED TV review: Gaming
  • Screen holds gaming back a little, especially with shadows
  • No gaming-related menu settings or game bar
  • Smooth action thanks to fast refresh rate and a few key features

There are only two things that really hold the Hisense U6SF Pro back as a gaming TV. The first are the limitations of the screen that I’ve covered above. For instance, because the Hisense U6SF Pro’s HDR support is good but not up to the standards of a mid-range $1,000+ TV (let alone a flagship TV), there’s less differentiation in shadows so games that are overall just darker or have a lot of shadow are harder to make out what’s happening. On top of that, the colors aren’t quite as vibrant as they are on something like the Hisense U7 that I keep comparing this TV to.

That said, without being able to A/B the way I am, the colors probably won’t bother you, as they still look good. You might have to compensate in the settings for the shadows, however.

The other is the fact that, outside of a Game Picture Mode, there aren’t any gaming specific menus. There certainly isn’t a gaming bar. I would appreciate being able to make more specific adjustments based on the type of game or to bring up an FPS counter.

That said, I do appreciate that AMD FreeSync Premium Pro is on offer (non-Pro version for the 100-inch) that uses a variable refresh rate along with an auto low-latency mode. I also appreciate the Motion Rate 480 feature, which gives a virtual representation (though not a true one) of having a 480 Hz refresh rate. The end result is smooth action no matter the game.

  • Gaming score: 4 / 5

The Hisense U6SF Pro remote doesn't break any molds (Image credit: Future / James Holland)Hisense U6SF Pro Series MiniLED TV review: Value
  • Occupies that mid-range performance at budget price point
  • Strong value but can find slightly better TVs for slightly more
  • The competition has at best similar value

When I think of the Hisense U6SF Pro, I think of a few other specific TVs. The Hisense U7 is a natural comparison since they came out at the same time and is the next step up. Interestingly each TV has a slightly different issue. Whereas the U6SF Pro has more vignetting and a flatter picture, the U7 has some color bleed. But the Hisense U7 is a slightly better TV at just $150 more at the 65-inch size and the 75-inch model has even been cheaper in the past. While this is a rarity, the U7 is generally worth the higher price.

I also think of the TCL QM6K, which came out in 2025 and only got a mild refresh in 2026. It occupies a similar mid-range at almost budget price space, especially since its prices have come down since first reviewed last year. Originally, a 65-inch size would have cost $999.99, but it now goes for $649.99 just like the U6SF Pro. And it’s basically the same or similar prices at the various other sizes as well. That’s for a TV with a slightly better picture quality and slightly worse audio and brightness.

  • Value score: 4.5 / 5
Should I buy the Hisense U6SF Pro Series MiniLED TV?Hisense U6SF Pro Series MiniLED TV

Attributes

Notes

Rating

Features

This TV has all the features you could want from HDR and spatial audio support to the inclusion of Alexa+, though you can’t use that last one hands-free.

4.5 / 5

Picture quality

There could be a little more detail in the shadows and there’s more vignetting than I would like, but the picture quality is very good for the price.

4 / 5

Sound quality

You can skip the soundbar with this TV as its 2.1 system has enough detail and low-end rumble for casual use.

4 / 5

Design

The port selection is good including two 2.1 HDMI ports and the screen is anti-glare. While the TV uses feet instead of a stand, they are width-adjustable.

4 / 5

Smart TV and menus

I don’t like how some of the settings are separated. It makes adjusting the screen a bit counter intuitive. But the OS is generally easy to use.

4 / 5

Gaming

The Hisense U6SF Pro comes with some nifty features like AMD Freesync Premium Pro for smooth action, but there’s no game-specific menu and no game bar.

4 / 5

Value

The price for what you get the Hisense U6SF Pro for is quite the deal, especially when you consider all the features on hand.

4.5 / 5

Buy it if...

You want mid-range quality at budget prices
With all the features and good quality picture and sound, this TV almost reaches the heights of mid-range TVs at a lower price point.

You don’t want to buy a soundbar
It won’t be home theater level, but for casual use, the 2.1 Devialet-branded system sounds good enough that you won’t feel compelled to buy an external soundbar.

You’re in the Alexa Smart Home ecosystem
Being a Fire TV, it comes with Alexa+ so you can ask it all sorts of questions, not just to play content. And being a Fire TV, you can integrate it into an Alexa-based smart home.

Don't buy it if…

You want hands-free control
There’s something to being able to just talk to your TV, and, unfortunately, that’s just not a feature on this TV. For some, it’s not a big deal. For others, it might be as vital as any of the accessibility ones that usually come stock in a smart TV.

You can stretch your budget a few extra hundred dollars
The Hisense U6SF Pro is a good TV for the price and comes at a good price. But for just a few hundred dollars more, there are slightly better TVs, including ones from Hisense.

Hisense U6SF Pro Series MiniLED TV review: Also consider

Hisense U6SF Pro

TCL QM6K

Hisense U7

Roku Pro Series (2025)

Price (65-inch)

$649.99

$649.99

$999.99

$899.99

Screen type

Hi-QLED Mini-LED

Mini-LED

Mini-LED Pro

QLED

Refresh rate

144Hz

144Hz

165Hz

120Hz

HDR support

Dolby Vision, Dolby Vision IQ, HDR10, HDR10+, HDR10+ Adaptive, HLG

Dolby Vision IQ, HDR10+, HDR10, HLG

HDR10, HDR10+, HDR10+ Adaptive, HLG, Dolby Vision

Dolby Vision IQ, HDR10+ Adaptive, HLG

Smart TV

Fire TV with Alexa+

Google TV

Google TV

Roku

HDMI ports

4 (2x HDMI 2.1)

4 (2x HDMI 2.1)

4 HDMI 2.1

4 (2x HDMI 2.1)

TCL QM6K
The TCL QM6K is just as good value if you’re looking for a mid-range TV for almost budget prices. It has a relatively great picture quality with vibrant colors, and good contrast, but suffers a little bit in the audio department and comes with lower brightness. Read our full TCL QM6K review.

Hisense U7
While the audio on the Hisense U7 has a little less low end and the picture has some color bleed, this TV outperforms its price by a wide margin making it an even better deal than the Hisense U6SF Pro here. However, it is at a slightly higher price point. Read our full Hisense U7 review.

Roku Pro Series (2025)
The Roku Pro Series (2025) is a little more expensive, but comes with a lot of the same features, has a similarly fast refresh rate for gamers (though no game bar), and has a unique shadowbox design that makes it sit flush on the wall when mounted, making it the better TV for that situation. Read our full Roku Pro Series (2025) review.

How I tested the Hisense U6SF Pro Series MiniLED TV
  • I used the TV for a couple weeks
  • Tested with both TV, movies, music, and games

I used the Hisense U6SF Pro MiniLED TV regularly for a couple weeks. I tested it using streaming shows, movies, music, and games (via PS5). I went through the various features, particularly Alexa+. I also spent time listening to the audio as well as paying attention to the picture quality.

After spending some time with this TV, it’s my humble opinion that this TV is ideal for those who are looking for a mid-range TV but wanting to pay closer to budget prices.

I’ve tested a lot of tech gear over the years from laptops to keyboards and speakers, and so have been able to use my expertise towards giving an honest and fair opinion, not to mention a critical eye, to any product I test.

Categories: Reviews

Cloudways web hosting (2026) review

Tue, 10/20/2026 - 09:01

Cloudways, owned by DigitalOcean, sits between conventional web hosting and a do-it-yourself cloud server.

It manages the operating system, web stack, security patches, caching, monitoring, and backups while leaving customers with more infrastructure control than most shared or managed WordPress hosts.

We rated Cloudways the top pick in our best WordPress hosting guide for most users. But the important question is whether the platform still makes cloud hosting easier without giving away the flexibility that attracts experienced users.

Cloudways: Pricing & plans

(Image credit: Cloudways // Future)

Cloudways Flexible uses pay-as-you-go billing, with prices that vary by provider and server size. The 1GB DigitalOcean option was listed at $14 a month after the free period. Cloudways displayed $0 during the three-day trial and did not require payment details. There is no conventional money-back guarantee, so the trial is the safest way to inspect the platform before upgrading.

The lowest price should not be treated as the default production recommendation. Cloudways itself suggests 2GB or more for production, staging, or low-traffic sites. Larger DigitalOcean, Vultr, and Linode servers remain comparatively straightforward, while AWS and Google Cloud pricing can be more complex. Flexible is billed according to usage, but stopping a server does not end its charges; customers must delete unwanted resources or close the account correctly.

(Image credit: Cloudways // Future)

Backups illustrate how small extras affect the bill. My server defaulted to one off-site backup per day with one-week retention, and an on-demand backup completed in 23 seconds. Cloudways support confirmed that off-site storage costs $0.033 per GB per month, with backup charges rounded up in $0.50 increments, so any non-zero usage effectively costs at least $0.50 for the month. Local backups were disabled by default.

Email hosting and domain registration are not included. Cloudways offers services such as Rackspace Email, Elastic Email, Cloudflare Enterprise, DNS Made Easy, malware protection, and enhanced support separately. That modular approach avoids paying for tools you do not need, but an all-in-one host can be cheaper and simpler for a small personal site.

Cloudways: Features

(Image credit: Cloudways // Future)

Cloudways Flexible supports WordPress, Magento, Laravel, and other PHP applications across DigitalOcean, Vultr, Linode, AWS, and Google Cloud. Customers choose the provider, server size, and location, then manage applications and infrastructure from the Cloudways panel. Multiple applications can run on one server, which is useful for developers and agencies that do not want a separate hosting account for every site.

The current platform also includes Cloudways Autonomous, a fully managed WordPress and WooCommerce service that scales automatically during traffic spikes. Velocity is a newer product for Node.js applications. Most readers of this review should start with Flexible for granular server control or Autonomous when predictable scaling matters more than choosing the underlying provider.

Flexible servers use the NGINX-based Lightning Stack by default, with a Hybrid stack available when an application needs Apache compatibility. WordPress installations include the Breeze caching plugin and Object Cache Pro. In my test, both were already active in WordPress. Free SSL, staging and cloning, scheduled tasks, Git deployment, SSH and SFTP access, firewalls, IP controls, vertical scaling, and real-time monitoring cover most day-to-day hosting work.

Cloudways Copilot adds AI-assisted monitoring, diagnosis, and fixes for common server problems. It is more relevant than a generic content generator because it addresses infrastructure work that would otherwise require log analysis or support. The platform also offers Cloudflare Enterprise, SafeUpdates, malware protection, transactional email, DNS, and enhanced support as paid services. These options are useful, but they make it important to compare the full monthly cost rather than the server price alone.

Cloudways: In use

(Image credit: Cloudways // Future)

I opened a three-day Flexible trial without entering a credit card, chose WordPress on a 1GB DigitalOcean server, and selected London. Cloudways estimated seven minutes for provisioning; the server was ready in six. The configuration screen is considerably easier than building the same stack directly on a cloud provider, although it recommends at least 2GB for a production or low-traffic site.

The dashboard separates server controls from application controls. Monitoring presents CPU, memory, disk, and bandwidth without requiring command-line tools. After the setup activity had settled, the test server showed 9% CPU use, 526MB of 961MB of RAM in use, 8.77GB of 24.44GB of disk space used, and 152MB of bandwidth. The interface made it easy to see how much headroom the small server had during testing.

I did hit a genuine onboarding problem. The WordPress admin password shown in Cloudways was rejected, and changing it in Access Details did not fix the login. WordPress reset messages also failed because the new site did not yet have SMTP or an email add-on configured. A support agent checked the account, supplied working credentials through a secure one-time link, and I was able to sign in. The resolution was quick, but credentials displayed in the dashboard should have worked without support.

Cloudways does not provide cPanel or a browser-based file manager. Files are managed through SFTP or SSH, and the panel includes a browser-based SSH terminal. That is normal for many cloud platforms and suits developers, but users accustomed to clicking through File Manager in cPanel may find it an unnecessary extra step.

Cloudways: Speed

(Image credit: Cloudways // Future)

I tested the public WordPress installation three times with GTmetrix and received similar results. One run from Seattle against the London-hosted server returned an A grade, 98% performance, 99% structure, a 903ms Largest Contentful Paint, zero Total Blocking Time, and zero Cumulative Layout Shift. These are excellent numbers for the entry server.

The test used a fresh, lightweight WordPress site, so a large WooCommerce catalog, heavy theme, or crowded plugin stack will be more demanding. Even with that scope, the result shows that Cloudways' default WordPress setup, Breeze, Object Cache Pro, and managed stack provide a fast starting point before further optimization.

Cloudways: Support

Cloudways knowledgebase and FAQ can answer a lot of the questions you may have (Image credit: Cloudways)

Standard support is available 24/7 through live chat and tickets, with Advanced and Premium support add-ons for customers who need faster responses and deeper application help. The knowledge base is extensive and covers both platform tasks and command-line workflows.

My support check started with an automated assistant, which suggested resetting the WordPress password directly in the database. After I asked for a person, a human agent joined in about 10 seconds. The agent reviewed the existing conversation, tested the credentials, shared screenshots, and provided a secure fallback login that worked. I liked that the agent did not repeat the bot's checklist and moved directly to resolving the account-specific problem.

The same chat also confirmed the backup charge and explained that Cloudways has no cPanel or browser-based file manager. The answers were specific and useful. In this case, support was fast, technically capable, and willing to inspect the live account rather than simply link to documentation.

Cloudways: Alternatives

Cloudways charges more than renting the same infrastructure directly from DigitalOcean, Vultr, AWS, or Google Cloud, but the comparison is not like for like.

The premium pays for the managed stack, patches, backups, caching, monitoring, staging, security controls, and support. Experienced system administrators can save money with a raw VPS, while WordPress teams without dedicated server administrators may save time with Cloudways.

Bluehost and DreamHost are easier all-in-one choices for a first website because they bundle domain services, email options, and familiar hosting workflows. Kinsta and WP Engine provide similarly polished managed WordPress experiences with less server-level choice.

ScalaHosting combines managed cloud hosting with a browser-based SPanel file manager and email tools. Cloudways stands out when users want to choose their cloud provider, location, and resources while keeping the operating environment managed.

Is Cloudways cloud hosting right for you?

Cloudways is best for a growing WordPress site, WooCommerce store, agency portfolio, or PHP application that has outgrown basic shared hosting. Flexible gives developers meaningful control without the maintenance burden of a raw VPS, while Autonomous is the cleaner option for WordPress teams that expect traffic spikes and do not want to think about server scaling.

It is less convincing for an absolute beginner who wants one bill for hosting, a domain, email, and a simple file manager. The vocabulary, separate server and application layers, and add-on pricing require more attention than mainstream shared hosting. The password issue in my test also shows that onboarding is not friction-free.

Even so, the six-minute deployment, excellent GTmetrix result, detailed monitoring, fast backup, and exceptionally responsive support make a strong practical case for Cloudways. For users who need more power and flexibility than shared hosting but do not want to become their own server administrator, Cloudways remains an excellent choice.

For more options, we've tested the best web hosting services.

Categories: Reviews

Nintendo Switch Sports Resort review: multiplayer mayhem in motion

Tue, 10/20/2026 - 08:00

Nintendo Switch Sports Resort is here, and this new first-party Nintendo Switch 2 exclusive has big shoes to fill.

You see, when Wii Sports entered the scene 20 years ago, it was a total phenomenon. It was a smash hit thanks to its simplistic yet addictive gameplay, enticing players of all ages…even your grandparents could get involved.

Review info

Platform reviewed: Nintendo Switch 2
Available on: Nintendo Switch 2 only
Release date: October 22, 2026

Its successor, Wii Sports Resort, expanded on the formula, adding more sports, more depth, and more precise controls. And Nintendo Switch Sports Resort is attempting to do the very same for a new generation — to refine the relatively basic Nintendo Switch Sports and create a more fleshed-out experience, all while retaining that sense of widespread appeal for players of all ages.

But can Nintendo Switch Sports Resort pull off this seemingly daunting task? I’ve spent about 15 hours playing the game solo, with friends, and with fellow gaming journalists online, and this is my verdict.

Getting sporty on Switch 2

(Image credit: Nintendo)

The original Nintendo Switch Sports was a decent overall experience. It was a bit thin at launch and lacked single-player replayability, but the version we know today has a solid lineup of events, with fairly responsive controls, and is a good party game to enjoy with friends. And luckily, it feels like Nintendo Switch Sports Resort has fixed a lot of the issues I had with its predecessor.

Let’s start off by talking about the sporting variety on offer. There are 12 core sports available here. You’ve got some classic options like Basketball, Bowling, Boxing, and Tennis, as well as some Leisure Sports, such as Power Cruising and Prop Plane. What’s more, there are two sports that have never been seen in previous entries — namely Skateboarding and Thumb Wrestling.

I found that all 12 of the included sports were great fun to play. Let’s start with the returning events. Sports such as Basketball and Tennis are much unchanged, but feel incredibly tight and enjoyable, with accurate motion controls and multiple modes, such as Three-Point Contest for the former and a slower-paced Laid-Back Match for the latter. Bowling, Golf, and Volleyball are similarly unchanged, and continue to be a favorite for my pals and me, with plenty of laughs and tense moments.

Some of the returning sports feel far more refined, though. The biggest example of this is Boxing. Gone are the days of randomly flailing your disconnected gloves to down your opponent. Now, Boxing feels far more tactical. You have a stamina bar; it's far easier to land uppercuts and hooks, and picking the right moment to land your knockout punch is crucial.

Best bit

(Image credit: Nintendo)

My highlight was definitely conquering the island champion in Table Tennis. This was my favorite sport by quite a margin, and landing a crushing power shot to snag the number one ranking felt incredible. Take that, Yunsu. I’m the champion now.

It’s a similar story with Table Tennis, which, in my view, is the most fun sport in the game. At higher levels, you’ll need to be incredibly strategic with your slice shots to recover back to the centre and perfect your timing to hit shots right onto the table edge. The Return Challenge mode is also a whole lot of fun, and honing your accuracy to beat your high score feels super rewarding.

Archery is another highlight, with the Joy-Con 2 controllers providing pinpoint precision when aiming for the target. There are also some hidden targets to discover, adding plenty of replay value to the sport. Other sports, like Power Cruising and Prop Plane, translate nicely onto Switch 2 as well, and although the latter asks you to hold the Joy-Con 2 in a slightly bizarre way, it’s fairly comfortable and effective after you get used to it.

Out with the old, in with the new

(Image credit: Nintendo)

We’ll get onto the new events in just a moment, but before we do that, let’s talk about something that irked me a little. Some of the events from the original Nintendo Switch Sports have been cut.

Yes, it’s out with the old and in with the new, as three events — Badminton, Chambara, and Football (or soccer) — are no more. This is a shame, as these were all among my favorite sports last time out. Football in particular is a big miss — it provided a chaotic, all-action multi-player experience with tense last-minute theatrics. Will these sports return in some kind of update or DLC? Quite possibly. But I would’ve loved to have seen them here at launch.

Anyway, no point in crying over spilt milk, eh? After all, the newly added sports are a blast. Thumb wrestling is a truly bizarre addition, and I can’t believe that Nintendo managed to make this feel fun. You have to hold your thumb against your opponent's hand to enlarge it, and then pin them down to attain victory. I feel like they missed a trick by leaving out ‘one, two, three, four, I declare a thumb war’ as the countdown, but otherwise, no complaints here.

Nintendo Switch Sports Resort has made one other key addition that helps it to totally surpass its predecessor, that being Island Crown.

I can see skateboarding dividing opinion, but I had good fun with it. This mode makes use of the Switch 2’s mouse mode capabilities, and this works surprisingly well. Whether I was lifting the Joy-Con 2 to jump or trick, tilting to steer, or pushing back to accelerate, movement always seemed to be accurate. The Skate Sprint mode is definitely the highlight here; tricking to gain speed, sneaking up behind your opponents, and grinding on railings is a whole lot of fun.

What I would say, however, is that the Free Play mode could’ve been better. The world that you skate around isn’t empty or anything, but I wish there was more to do and explore. The Sightseeing Tour is also a little lacking; you’re tasked with collecting photos, which isn’t the most thrilling experience — I would’ve preferred the option to collect customization parts for my board or character instead. This also applies to the Prop Plane and Power Cruising modes, which have Free Play options as well.

Oh, and a quick note on online play, which was very enjoyable in my experience. Here, you can expect highly responsive, smooth controls. Even though my home Wi-Fi is far from great, I ran into no performance issues whatsoever when linking up with a couple of other gaming journalists online — vital when playing reaction-based sports like Table Tennis and Volleyball.

A more replayable sporting experience

(Image credit: Nintendo)

Nintendo Switch Sports Resort has made one other key addition that helps it to totally surpass its predecessor, that being Island Crown.

Island Crown is a primarily single-player experience, where you have to rise up the ranks in a particular sport and challenge the island champion. Initially, your foes will seem laughably weak, but as you climb up the table, some highly skilled challengers will stand before you. If you manage to beat the island champion, you’ll have the opportunity to face a legendary Mii from the Wii era…I won’t spoil the identity of these, though; I’ll let you discover them for yourself.

This mode has kept me coming back to Nintendo Switch Sports Resort time after time. You get new customization options as you improve your rank; the challenge of beating tough opponents is highly compelling, and the mode serves as an excellent way to develop your sporting prowess. This is the sort of single-player replayability that the original Switch Sports was crying out for, and I absolutely loved it.

I’ve mentioned customization options a few times in this review, so let’s talk about them. By playing sports, you’ll earn points which you can spend at the item center to get a random title, hairstyle, costume, or such things. Previously, you could only earn points online to customize your character — meaning you’d need a Nintendo Switch Online subscription, but no longer. Now, you can earn points offline too, and I loved a lot of the straight-up weird customization options available. I mean, come on, just look at my character.

Just like Wii Sports Resort, this entry succeeds in building on its predecessor with additional depth and versatility.

You can either customize your standard character or a Mii that’s saved on your Switch 2 console. But I never deviated from the standard option. I’m afraid that the Miis just look so out of place in this game, with this visual style...and I feel like it’s time to let them go. Maybe they should simply remain as a relic of a bygone era.

More generally, I would say that the visual style of Nintendo Switch Sports is a bit lackluster. It misses the personality and sauce of the Wii era titles, and goes for a more ‘streamlined,’ modern look which ends up feeling a tad soulless. Even the menus are a touch dull, and given that this is a Nintendo game, I expected more flair, and perhaps a few nods to the company’s most beloved IPs to add even more charm.

The quality of the visuals is generally strong, though, and frame rates are consistent in docked or tabletop mode. I did notice a few texture loading issues in tabletop when playing Prop Plane, but this was fairly minor.

Otherwise, though, I’m coming away from my experience with Nintendo Switch Sports Resort feeling largely positive. The bolstered single-player replayability, enjoyable new sports, refined classics, and brilliantly responsive controls ensure it's a hit that’s especially great for multiplayer mayhem.

It’s a shame that some sports were cut, and I’m still not sold on this series’ visual direction, but just like Wii Sports Resort, this entry succeeds in building on its predecessor with additional depth and versatility. So, if you’re looking for a fun sporting experience to add to your Switch 2 library, this is well worth picking up.

Should you play Nintendo Switch Sports Resort?

(Image credit: Nintendo)Play it if…

You want to enjoy more multiplayer mayhem on Switch 2
The Nintendo Switch 2 already has an excellent lineup of multiplayer experiences, and Nintendo Switch Sports only adds more variety into the mix. I enjoyed playing all 12 of the sports here with friends and family, and had no end of chaotic showdowns. This one’s definitely going to remain in my party game rotation alongside Mario Party Jamboree and Mario Kart World.

You’re looking for more single-player goodness
The inclusion of Island Crown means that there’s so much single player replayability on offer in Nintendo Switch Sports Resort. Fighting to rise up the ranks and defeat the island champion is an absolute blast, and keeps the experience feeling fresh, even without friends or online rivals.

Don't play it if...

You’re not a big fan of motion controls
If you don’t enjoy motion controls, this is one to be avoided. All of the sports here highly rely on motion, with no other control schemes available, other than the mouse mode-enabled Skateboarding.

You didn’t vibe with the previous game’s visuals
The visual style from the original Nintendo Switch Sports has been retained here, and again, it doesn’t feel very inspired or charismatic. If that ended up being a major turn off for you last time, don’t expect much in the way of change here.

Accessibility features

You can change the dominant hand for each individual sport, alter camera controls for Prop Plane and Skateboarding, and turn on Shot Assist for Golf, which makes it easier to hit the ball accurately. Otherwise, there aren’t many ways to customize your experience in Nintendo Switch Sports Resort, with no colorblind modes or alternate control schemes available.

How I reviewed Nintendo Switch Sports Resort

(Image credit: Nintendo)

I spent 15 hours playing Nintendo Switch Sports Resort, trying out Island Crown mode in single-player, as well as a number of core and Leisure Sports via local and online multiplayer.

For the most part, I played in docked mode, with my console connected to the Sky Glass Gen 2 TV and the Marshall Heston 120 soundbar. However, I did dabble in some tabletop mode gameplay, and used the JBL Live Beam 4 to enjoy in-game audio.

More generally, I’ve spent years reviewing gaming software and hardware here at TechRadar. I’ve reviewed a number of Nintendo Switch 2 exclusives, including Fire Emblem: Fortune’s Weave, Yoshi and the Mysterious Book, and Kirby Air Riders. I've also logged more than 50 hours on the original Nintendo Switch Sports, which I directly compared against its newly released successor.

First reviewed October 2026

Categories: Reviews

Resident Evil 4 for Nintendo Switch 2 review: a good, but imperfect port

Mon, 10/19/2026 - 19:00

When the remake of Resident Evil 4 launched in 2023, it was met with universal acclaim, even netting a Game of the Year nomination. And that came as no surprise to me. This is a brilliant entry in Capcom’s legendary series, packing in spectacular survival horror gameplay, a massively engaging story, and a memorable cast of characters.

Review info

Platform reviewed: Nintendo Switch 2
Available on: PS4, PS5, Nintendo Switch 2, Xbox One, Xbox Series X and Series S, PC, iOS
Release date: October 16, 2026 (Switch 2 edition)

And now, Resident Evil 4 (Gold Edition) has arrived on Nintendo Switch 2. I’ve put about 20 hours into the game, during which time I’ve played through a good chunk of the main story and completed many a request. So how does this game hold up on Nintendo’s hybrid platform? Here’s everything you need to know.

Let me start by saying that the core Resident Evil 4 remake experience is incredible. Leon is a charming and likeable protagonist, the gunplay is excellent with a fantastic suite of weapons to choose from, and the narrative is top-class too. Sure, this entry perhaps lacks the chilling, claustrophobic atmosphere of its predecessors, but there’s plenty of high-octane action segments, fun puzzles, and big scares to experience. So if you haven’t played this game just yet, I highly recommend it.

A remake that's great on the go...but has a few graphical gremlins

(Image credit: Capcom)

How exactly does this title perform on Switch 2, though? Well, between this game and the other two entries recently ported to Nintendo Switch 2 — Resident Evil 2 and Resident Evil 3 — Resident Evil 4 is the one that has the highest amount of performance issues. This is totally understandable — it’s a newer release than the other two entries and carries a higher technical demand — but this isn’t quite the definitive way to play through Leon’s adventure.

So, let’s take a look at some of the blemishes I noticed on this port. The largest of these relates to texture pop-in. Whether I was playing in handheld or docked mode, some visual elements — such as trees or cliffs — would appear lower in resolution from a distance, and suddenly appear more detailed and intricate as I drew closer to them. Is this a major issue? Not really. It had no impact on my ability to vanquish my foes. But it’s something I did encounter regularly, and it could sometimes make the experience a little less immersive.

In addition, I encountered a few frame drops throughout my playthrough. When I ventured into a cave with a purple flickering flame, the game appeared to run less smoothly. This only lasted for a second or two, but it happened a good handful of times during my time with the game. Like the Resident Evil 2 Switch 2 port, and the Resi 3 Switch 2 port, the motion of some distant enemies appeared shaky, with some noticeable frame drops. With that said, combat was generally very smooth, and I rarely found said frame drops to give me a disadvantage in skirmishes.

Another thing worth noting is that this version of the game supports motion controls, something I was really hoping to see in the recent ports of the game’s predecessors. This is a most welcome inclusion, giving fans of gyro aiming another way to play…but it could’ve been implemented more effectively. While vertical aiming feels precise and responsive, horizontal movement is sluggish by comparison. Still, traditional controls work like a dream, and there are a number of schemes you can choose from in the Options menu to suit your personal preferences.

Best bit

(Image credit: Capcom)

When I rescued the friendly dog (wolf?) in the village, I felt like I’d done my good deed for the day. And what do you know, when it was time to face off against a towering giant, the trusty pooch came to my aid, distracting my towering foe as I blasted him repeatedly with my rifle. Talk about good karma.

I want to be clear: this game doesn’t perform badly, not by any means.

For the most part, Resident Evil 4 plays nicely on the Switch 2, with largely smooth performance and solid graphical fidelity, especially in docked mode. Of course, some textures look a bit less refined in handheld mode, but the dark and dismal environments still translate over nicely. The game also has HDR support for enhanced contrast, and character models look pretty sharp too. And all in all, I found the port to be totally serviceable — just expect an experience closer to the PS4 version than the PS5 one.

In the end, the Nintendo Switch 2 port of the Resident Evil 4 remake is decent. A lot of the issues, like pop-in and occasional frame drops, feel relatively minor in the grand scheme of things, though I wish motion controls felt more precise. Still, you get generally smooth performance, good visual fidelity, and all of the major DLC bundled in, including the excellent Separate Ways.

Is this the definitive way to play through Leon Kennedy’s journey? Perhaps not. But if you want to experience Resident Evil 4 on the go, this Switch 2 port is a perfectly fine option.

Should you play Resident Evil 4 for Nintendo Switch 2?

(Image credit: Capcom)Play it if…

You want to experience Leon’s adventure on the go
As is the case with any Switch 2 port, the system’s hybrid capabilities are a huge plus. The game runs relatively well, even in handheld mode, so if you want to take Leon on the go, the Switch 2 version is a serviceable way of doing so.

You’re yet to experience the RE4 remake
If you missed the Resident Evil 4 remake, now is the time to play it. The Switch 2 version is the Gold Edition, meaning you get the base game along with the major DLC like Separate Ways.

Don’t play it if…

You want best-in-class performance
While Resident Evil 4 runs fairly well on Switch 2, there are some clear blemishes. The most obvious is texture pop-in, which means that some parts of the environment, like trees and cliffs, switch from a lower to a higher resolution as you approach them. There are also a few frame drops here and there, which isn’t overly problematic, but still something you’re less likely to experience on PS5, for instance.

You’re new to Resident Evil
The story beats of Resident Evil 4 won’t hit as hard for you if you’ve not played some previous entries in the series, mainly Resident Evil 2. I highly recommend playing that title first, and believe me it’s well-worth it.

Accessibility features

The options menu allows you to make a few changes to your experience, with a range of camera options, a number of control schemes including motion aiming, toggle or hold run modes, and a range of voice and text languages available. What’s more, you can change the color of the reticle, laser dot sight, and biosensor scope, alter HUD opacity, and tone down damage display if you’d prefer.

How I reviewed Resident Evil 4 for Nintendo Switch 2

(Image credit: Capcom)

I put more than 20 hours into the Resident Evil 4 remake on Nintendo Switch 2, during which time I played through the main story and completed as many requests as possible while playing in both docked and handheld mode.

The vast majority of the time, I played the game docked, with my Switch 2 connected to the Sky Glass Gen 2 TV and Marshall Heston 120 soundbar. I also dabbled in handheld gameplay now and then, though, and used my JBL Live Beam 4 earbuds to experience the game’s virtual spatial sound.

More generally, I’m an experienced gaming hardware and software reviewer, and have been testing all kinds of games and accessories at TechRadar for years now, where I serve as a Senior Reviews Writer. I’ve reviewed all sorts of Nintendo Switch 2 titles, from major first-party releases like Fire Emblem: Fortune’s Weave to ports like Yakuza Kiwami. I’ve also played a number of Resident Evil games, including the Switch 2 ports of the Resident Evil 2 and 3 remakes.

First reviewed October 2026

Categories: Reviews

Logitech G Pro X2 Rapid review: rapid by nature

Mon, 10/19/2026 - 11:14
Logitech G Pro X2 Rapid review: Two-minute review

Let’s get one thing out of the way: the Logitech G Pro X2 Rapid commands a premium price tag. At $229.99 / £209.99 / AU$399.95, it sits near the top of the gaming keyboard market — costing more than similarly high-end alternatives like the Razer Huntsman V3 HE or Corsair K70 Max. It’s currently the most expensive gaming keyboard that Logitech sells, reflecting its positioning as the very best of the best.

What does that price get you, though? The big draw here is the custom KS-20 POM switches. They’re manufactured by Gateron, one of the most popular keyboard switch brands, with contactless Hall effect operation. They feature a customizable actuation point, allowing you to select actuation depth all the way from 4mm to a very shallow 0.1mm in 0.05mm increments.

(Image credit: Future)

Raising the actuation point reduces the time taken for each keystroke to be registered, facilitating lightning-fast responses in intense competitive titles like Counter-Strike 2 or Valorant. You can customize the actuation point on a per-button basis as well, meaning you can make your movement inputs as sensitive as possible while leaving the button to switch weapons, for example, a more deliberate press to prevent misclicks in key moments.

This works in tandem with the rapid trigger setting, which sets the point at which a key needs to be lifted in order to reset. You can practically remove the delay between rapid inputs, meaning much more responsive movement. Getting used to the snappy responses certainly took some adjustment in my testing, but I found strafing felt much more precise, and this could make a big difference in a competitive setting where speed can make the difference between a win and defeat.

(Image credit: Future)

You can also set up key priority, which determines how the keyboard interprets almost simultaneous inputs via metrics like key travel or a chosen override. This sounds great on paper, as it should allow for much easier counter-strafing or ‘jiggle peeking’ (emerging from cover for a split second to try and bait an opponent into taking a shot), but there’s a big catch. This feature is banned in some competitive titles (including Counter-Strike 2) and will result in automated server kicks, so it should be treated with some degree of caution.

The built-in OLED display is also a pretty cool addition, though honestly, it’s not as useful as I first assumed it would be. It’s a small vertical display positioned on the far right-hand side of the keyboard above a small button and a little scroll wheel. By default, the wheel controls your system volume, but a quick tap of the button opens a menu with access to activation point adjustment, rapid trigger, mkey priority, RGB lighting, and game mode settings.

Adjusting them like this is very fiddly and much more easily accomplished right in the compatible Logitech G Hub software. With G Hub, you can save settings directly onto the keyboard’s memory, and I suspect that most pro players would rather create their settings in advance with the software rather than try and adjust them on the fly in the middle of a game.

The spec sheet is also impressive, with highlights like an optional 8,000Hz report rate. The keyboard also has a physical game mode switch, designed almost like a light switch. Flick this on to enable your game mode preset, which disables the two Windows keys by default to prevent accidental tab changes.

The physical design of the Logitech G Pro X2 Rapid exudes quality too, with the compact TKL form factor making it easy to incorporate into your setup. All three colorways (Black, White, and Magenta) look excellent, and key presses feel suitably satisfying with a very smooth motion and lovely sound. It feels great to type on as a result, but I am still disappointed that the exterior of the keyboard is entirely plastic when most gaming keyboards above a hundred bucks incorporate more durable metal faceplates instead.

I also don’t understand why Logitech G didn’t opt to go for a nice braided USB Type-C cable rather than a rubbery plastic one at this price. Maybe there’s some reason for pro players to prefer plastic, but if that’s the case, the brand could surely just throw in two alternate cable options given the $229.99 / £209.99 / AU$399.95 price tag.

There’s also the matter of the included wrist rest, which I unfortunately don’t think is particularly good. It’s basically just a huge rectangular hunk of cold, rubbery plastic that you have to flop awkwardly onto your desk. It’s not well padded, and I quickly relegated it to confinement back in the box. It’s presumably a very cheap extra to include, but I’m not too happy with the prospect of having to store it.

Logitech G Pro X2 Rapid review: Price & availability
  • Costs $229.99 / £209.99 / AU$399.95
  • Available via the Logitech website or online retailers
  • More expensive than many alternatives

At $229.99 / £209.99 / AU$399.95, the Logitech G Pro X2 Rapid is expensive for a gaming keyboard, particularly a wired-only model with a predominantly plastic construction.

To give just two examples, similarly priced high-end options such as the Razer Huntsman V3 HE or Keychron Q1 Ultra 8K incorporate more premium materials like aluminum and, in the case of the Keychron model, offer wireless connectivity.

Still, it’s not offensively bad value by any means, as you are paying specifically for the high-end spec sheet, built-in screen, custom switches, and suite of esports features. You also get a wrist rest in the box and, while I’m not a huge fan, it might be useful for some.

The Logitech G Pro X2 Rapid can be purchased directly from the Logitech G website or at online retailers like Amazon.

Should I buy the Logitech G Pro X2 Rapid?Scorecard

Value

Expensive for a wired gaming keyboard, but goes some way to justify its price with its feature set.

4/5

Design and features

Looks great and is tuned to deliver serious esports performance with specialist features like rapid trigger and custom actuation points.

4/5

Performance

A joy to type on and an excellent pick for competitive games.

4.5/5

Final score

Expensive, but worth it if you’re serious about competitive gaming given the performance and features.

4/5

Buy it if…

You want esports-grade performance
The Logitech G Pro X2 Rapid is all about competitive gaming performance with features like the optional 8,000Hz polling rate and custom actuation point settings designed to help you do your best when it counts.

You’re after the ultimate switch customization
The Logitech G Pro X2 Rapid offers multiple ways to customize its KS-20 POM switches. You can adjust the actuation depth to your preference on a key-by-key basis, or enable the rapid trigger mode for accurate repeat inputs.

Don't buy it if…

You’re used to more premium materials
The exterior of the Logitech G Pro X2 Rapid is fully plastic, which is unfortunate when cheaper alternatives offer more durable-feeling metal elements.

Logitech G Pro X2 Rapid review: Also consider

Razer Huntsman V3 HEThis Razer keyboard offers Hall effect magnetic switches and features an integrated OLED screen, yet costs significantly less than the Logitech G Pro X2 Rapid. It even has a metal faceplate, which feels more premium than the X2 Rapid’s plastic.

Read our full Razer Huntsman V3 HE review

Keychron Q1 Ultra 8K
This high-end option from Keychron is often on sale for cheaper than the Logitech G Pro X2 Rapid and delivers an excellent typing experience with a robust aluminium chassis. It’s also capable of an 8K report rate, but unfortunately isn’t widely available in the UK or Australia.

Read our full Keychron Q1 Ultra 8K review

(Image credit: Future)How I tested the Logitech G Pro X2 Rapid
  • Tested for multiple weeks
  • Used as main keyboard for work and gaming
  • Compared to other gaming keyboards

I tested the Logitech G Pro X2 Rapid for multiple weeks alongside the Logitech G Pro X3 Superstrike mouse, with my hands on both before and after the official reveal and release.

I used it for gaming sessions and productivity tasks throughout my days. This included plenty of time in popular esports titles such as Counter-Strike 2 and Call of Duty: Black Ops 7. I also played a range of other games, including the likes of Gears of War: E-Day, Cities: Skylines 2, and Far Cry 6.

Throughout my time with the keyboard, I compared it to my hands-on testing of other gaming keyboards across the price spectrum.

Categories: Reviews

TT Nature bird feeder review: two weeks with the budget wooden smart feeder camera

Mon, 10/19/2026 - 09:00
TT Nature Bird Feeder Station: Two-minute review

Unlike companies like Netvue (which originated as a smart security camera maker before launching the Birdfy line) or Bird Buddy (which built its platform from the ground up around a custom app experience), TT Nature uses off-the-shelf camera hardware paired with third-party software.

Its wooden Smart Bird Feeder Station is a rustic, budget-friendly alternative to the sleek, plastic-heavy smart feeders dominating the market. It’s solidly built from FSC-certified natural timber and topped with a dark metal roof, making it look more like a traditional garden birdhouse than smart home tech, and a natural fit for rustic outdoor setups. It also matches my garden office perfectly.

Beware, the camera is more like a retrofitted security device than a specialized bird snapper. After mounting the feeder to my garden fence and monitoring it for several weeks, I appreciate its physical design and reasonable cost, while also finding the basic software setup frustrating.

As mentioned, the wooden housing feels very sturdy, though it will inherently be harder to clean and maintain than all-plastic constructions. The included mounting template and accessories make locking it securely onto a fence panel or post easy, provided you have a decent drill. The external solar panel and full mounting kit are included, whereas most rivals require you to buy these as extras.

(Image credit: Lauren Scott)

The physical assembly is minimal, but setting up the camera with TT Nature's accompanying app, PerchLens, proved to be less straightforward than the process with Birdfy models. The app refused to detect the camera automatically, forcing a manual setup that meant temporarily locking my home router to a 2.4GHz band — a hurdle I’ve never had to clear with other feeders I’ve tested. Once past that, though, the Wi-Fi connection has remained stable, even with the feeder at the far end of my garden.

The feeder captures 1080p HD video with a wide field of view and a pleasantly sharp focus on the perch itself. However, clips aren't detailed enough to see individual feathers. I found that the camera’s motion sensor is slow to trigger, so clips often start a fraction too late and catch the tail end of a visit or an empty perch. The camera lens also fogged up several times on damp mornings, muting contrast and visibility during the busiest dawn feeding hours.

(Image credit: Lauren Scott)

You can use microSD recording (cards up to 128GB are supported) and also get three-day cloud storage without a monthly fee. However, AI species identification is locked behind an optional monthly or annual subscription. Without it, incoming alerts are just listed as 'bird'. The software is far more rudimentary than the polished, gamified ecosystems of the Bird Buddy 2 or Birdfy. If you don't mind manually spotting your visitors, though, the app does at least neatly organize your clips by date and time.

Despite its basic app and trigger lag (something I hope will be less of an issue when the birds feel brave enough to spend longer feeding), the TT Nature delivers undeniable value. It offers a nice-to-look-at wooden build and set-and-forget solar power, at a fraction of the price of most flagship competitors. If you’re a casual bird lover who wants a budget-friendly garden camera that blends in naturally, I think it can still earn a spot in your yard or garden.

  • Interested in other options available besides the TT Nature Bird Feeder Station? Check out our best bird feeder cameras guide.

I found live streaming to be occasionally laggy, sometimes not loading at all, and even when I set the camera to Frenzy Mode, the AI postcard capture missed birds I could clearly see sitting on the feeder from my kitchen window. It’s not the most reliable feeder I’ve used, and not ideal if you want to capture every single bird and build a picture of their visiting habits; however, it does stop your feed from getting clogged with thousands of similar clips.

Despite these niggles and quirks, I really enjoy the core experience. The AI bird identification is almost perfect, the postcard collection system provides a handy highlight reel, and the solar roof means near-continuous use.

The Bird Buddy 2 is a sleek, low-maintenance smart feeder with strong app design and best-in-class solar performance. For now, it earns its spot in my garden (and believe me, I have four smart feeders on the go), though I can’t help thinking about its price and hope tighter bird detection lands in future updates.

TT Nature Smart Bird Feeder: Price and availability

At around $140 (£75), the TT Nature smart bird feeder station sits at the affordable end of the best bird cameras, especially given its solid timber construction. It sits well below Netvue’s premium wooden options like the Birdfy Bamboo (~£199) and costs about the same as the plastic entry-level Birdfy Rookie (~£80), which doesn’t include a solar panel.

The feeder includes free AI species identification, and I like that it has a local MicroSD card slot (supporting up to 128GB) for storage, plus a free 3-day rolling cloud buffer. Not hugely generous, but enough for a freebie. Unlike rivals that lock some features under a premium membership, you don’t have to budget for recurring monthly fees here.

Availability is primarily via Amazon in both the US and UK, or directly from TT Nature in the US. The package includes the wooden feeder housing, 1080p camera module, mounting hardware, and an external 3W solar panel. Considering the full package, I think TT Nature delivers good upfront value for birdwatchers who want a complete, low-maintenance setup on a sensible budget.

Software is as important as hardware, though. I found its accompanying app lags behind Birdfy and Bird Buddy in terms of enjoyment and features, and I’d still consider paying a bit more for them.

TT Nature Smart Bird Feeder camera: Specs

Feature

Specification

Sensor

1/2.7" CMOS

Photo quality

12MP - 1080p snapshot capture with 130-degree FOV

Video quality

1080p HD @ 30fps

Memory

MicroSD slot (up to 128GB) + Cloud storage options

Dimensions

185 x 198 x 270 mm (7.3 x 7.8 x 10.6")

Weight

0.95 kg (2.1 lbs)

Seed capacity

1.5 Litres (~6.3 Cups)

Weather resistance

IP65 Certified

Battery

5200 mAh rechargeable battery with an external 3W Solar Panel included

Connectivity

2.4 GHz Wi-Fi

TT Nature Smart Bird Feeder camera: Design
  • Rustic wooden build with a black metal roof
  • Mounting kit included for trees, walls, or poles
  • Separate wired solar panel for charging

The TT Nature feeder, made from FSC-certified natural timber housing, immediately sets the kind of traditional, garden-friendly tone that I like over a plastic model. On its website, the brand sells two roof options, but the dark metal roof on my version feels sturdy and well-built. The packaging is neat and secure, though I found it a shame that TT Nature uses single-use plastic wrapping for some elements instead of easily recyclable cardboard—a missed opportunity for a nature-friendly product.

Assembly takes less than ten minutes and is intuitive enough that you likely won't need the instruction manual. You simply pop the perching ledge onto the front, lift the hinged wooden flap to slide in the camera module, and tilt up the roof to pour in your seed mix.

Initially, the physical assembly took about ten minutes. There are clear instructions included in the box, but I didn't find I needed them because it was all intuitive. You slot the metal perching ledge into pre-drilled holes at the end of the wooden feeding area, pull down the branded wooden flap at the front to slot the camera module in, and tilt up the roof when you want to add seed. The camera sits loosely in its designated space rather than clipping or mounting in, which is surprisingly secure even if it feels a little unanchored at first.

Lauren ScottLauren ScottLauren Scott

Though putting together the wooden unit was easy, I struggled for a while to get the camera to pair with TT Nature's accompanying app over Wi-Fi. It took me about an hour of troubleshooting to get the camera connected, as it wouldn’t find the camera automatically during scanning and I had to switch over to manual setup.

Even then, I had to temporarily set my Virgin Media home router to broadcast on a 2.4GHz network only—a step I’ve never had to take with any of the other smart feeders I’ve tested. Luckily, now that the initial connection has been established, I‘ve been able to switch my router back to a dual 2.4GHz/5GHz band without any ongoing drops.

Even with some premium smart feeders, wall or fence mounting brackets are sold as extra accessories. The TT Nature feeder has mounting options for trees, poles, walls, and fences included, and I opted to mount the feeder directly onto my garden fence panel with the supplied screws.

Once these were drilled in—made much easier thanks to an included mounting template—the feeder sat firmly on its plate with no wobbling. I do appreciate the sturdy, locked-in feel this gives you, but note that it’s far less flexible to reposition the feeder on a whim when compared to hanging designs like the Bird Buddy 2.

(Image credit: Lauren Scott)

I found out (the fiddly way) that it’s better to mount the wooden feeder to your fence or post first, pair the camera to your phone app second, and then slide the camera module into its front slot. You’ll also need to thread the solar panel cable through a small access hole in the back of the wooden housing to connect it to the camera.

The solar panel can be mounted separately nearby, but to save drilling extra holes into my garden fence, for now I’ve chosen to rest it directly on top of the feeder’s metal roof for easy adjusting. The white trailing wires from the panel aren't the prettiest to look at, and I prefer a feeder with flush solar panels integrated directly into the roof design, but you can easily tuck the excess cable behind the wooden housing to tidy things up.

Filling the 1.5-litre hopper is quick and easy, though I found seed doesn't always flow freely down to the perch and needs some encouragement—either a nudge with your fingers or a gentle shake of the housing. There are drainage holes built into the feeding perch to allow water drainage, but these are wide enough to let smaller seeds fall straight through to the ground, which feels wasteful when you’ve bought premium bird food mix.

TT Nature Smart Bird Feeder camera: Performance
  • Clear 1080p video in dry conditions and direct sun
  • Consistent motion detection but a recording lag
  • The app is functional, with AI species ID paywalled

It took only a few days for the local birds to grow bold enough to land on the TT Nature feeder in my garden, and soon after, my phone started pinging with initial motion alerts. Whenever I’m first testing out a new bird cameras, I also like to do a bit of an observation check out of my kitchen window to see how real-time landings translates to app notifications. More advanced software can take a few days to calibrate, but the motion sensors triggered reliably for almost every visitor I spotted.

That said, playing the clips back revealed a particularly frustrating flaw: the camera often triggers a fraction of a second too slowly. For particularly short visits, by the time the recording had started, the bird had often already flown off. Videos are capped at a fixed 20-second duration with no option in the app to adjust clip length. By default, the motion sensitivity is set to Medium (the other options being low or high); I bumped this up to High in the hope of catching birds as they first approached, but it didn’t make a noticeable difference to the trigger lag.

The camera settings are rudimentary overall, though Iappreciate that you can filter notifications to alert you to animal visitors only. This stopped my phone from pinging me every time I took out some washing or my dog sniffed past. Of course, you can leave it set to all motion if you want—at its core, this is essentially a standard security camera housed inside a wooden birdhouse.

In terms of video quality, the camera definitely needs even lighting and a dry day to perform at its best, a slight drawback when your feeder is at its busiest during the early hours. On several damp autumn mornings, the glass lens completely fogged up with condensation, making visiting birds look like blurs. There’s also no automatic white balance or HDR tone-mapping at play (I don’t know how exposure works on other cameras, but the Bird Buddy has often seemed to compensate); birds sitting in deep morning shade can also look quite dark and hard to make out.

When the weather is fair, however, the optical performance is more charming. The lens offers a crisp, fixed focal plane right on the front perch, paired with a natural, shallow depth of field that softens the garden background nicely. I also like how wide the field of view is, allowing you to watch where birds fly in from and trace their exit paths after a feed. Video playback is generally clear, if occasionally a bit juddery during fast wing-flaps.

Lauren ScottLauren ScottLauren Scott

The accompanying PerchLens app is where the TT Nature camera feels most in tune with its entry-level price. Unlike the slick, fun ecosystems of Birdfy or Bird Buddy—which feature near-flawless AI identification out of the box—the software experience here is basic.

Without paying for an optional monthly subscription (£6.10/month, processed painstakingly via PayPal or bank transfer), you don't get any automatic AI species tagging, and incoming sightings are simply labelled as "bird".

TT Nature doesn't push the camera as a heavy AI play, and personally, I don't mind manually spotting the birds coming and going since I recognise common local garden species anyway. But I think if your goal is to automatically curate a digital log, track species frequency and behaviour, or build up a solid collection of identified visitors, the app simply isn’t advanced enough for that. The camera also doesn't automatically generate shareable photo cards like the Bird Buddy 2, and if you want stills, your best bet is capturing a manual screenshot while watching the 1080p live stream.

Should you buy the TT Nature Smart Bird Feeder camera?Buy it if...

You want a natural-looking design

Constructed from FSC-certified natural timber with a weather-resistant metal roof, the wooden TT Nature looks like a traditional garden birdhouse rather than a plastic security cam. It blended well into my garden, though mounting the solar panel is extra faff.

You want a no-subscription storage option

The TT Nature includes a physical MicroSD card slot (up to 128GB) and a free 3-day cloud loop, meaning you can save and download 1080p footage (if you're quick) without recurring costs.

Don't buy it if...

You want a large-capacity seed tray

With a 1.5-litre capacity, I'd say this feeder is on the smaller side for big or busy gardens. If you have high bird traffic or frequent squirrel visits, you might have to refill the seed tray every few days compared to larger 3L+ feeders.

You want an all-in-one solar roof

The camera's 3W solar panel is connected via a wire rather than being a seamless, flush panel built into the roof. If you want a clean, single-piece feeder, this setup feels a bit more modular and requires extra consideration.

Also consider

Bird Buddy Pro (with solar roof)

If you don't want to maintain the TT Nature's wooden exterior and prefer an easier-to-clean, modern design, the Bird Buddy Pro is a premium alternative. Its solar roof is integrated, and the companion app curates daily Postcard highlight reels instead of sending constant motion alerts.

Read our Bird Buddy Pro reviewView Deal

Birdfy Bamboo

If you like the naturalistic look of the TT Nature wooden camera but want something a little bigger, Netvue's Birdfy Bamboo gives you almost double the seed capacity. It's sustainably made and looks just as integrated in a traditional garden setting. The product is more expensive, but it offers better build quality.

Read our Netvue Birdfy Bamboo reviewView Deal

(Image credit: Lauren Scott)How I tested the TT Nature Smart Bird Feeder camera
  • Tested for several weeks in a UK garden in October
  • Mounted using the included hanging hardware
  • Connected to an iPhone 15 Pro running the PerchLens app

I tested the TT Nature Bird Feeder Station in my garden for two weeks, after mounting it securely onto my fence using the metal plate and screws included in the box. I powered up the camera using the wired external 3W solar panel balanced on the feeder's roof.

I connected the camera to my iPhone 15 Pro via TT Nature's app, PerchLens, so I could see how effective the Wi-Fi pairing process and motion alert notifications were. I spent time navigating the app and reading the FAQs to see what the camera's support and community were like.

I mostly followed RSPB guidance on feeding birds and left small amounts of mealworms in the base of the feeder, adding a few seeds close to the end of October. I took the camera inside once during the testing period to refill it and wipe it down, as I wanted to gauge how easy it would be to clean.

First reviewed October 2026

Categories: Reviews

DreamHost email review

Mon, 10/19/2026 - 06:50

You’ve spent hours on a quote for a new client. The numbers are right, the work is solid, and you hit send. Then you notice the address it went from, a personal Gmail account you set up years ago.

It may not bother the client, but a business email address can help your company look more established from the very first interaction. That’s where DreamHost Professional Email comes in. It lets you use your own domain for business email, with 25GB of storage per mailbox, ad-free webmail and spam filtering. You can also check your messages through apps like Apple Mail, Outlook and Thunderbird.

And there’s no need to move your website to get started. If your domain is registered with another provider, you can keep it there and connect it to DreamHost for email. That makes it easier to give your business a more professional email address without changing how your website works.

So is it enough for a small business? Here’s what you get, what it costs and where it falls short.

DreamHost email: Plans and pricing

(Image credit: DreamHost)

DreamHost has a separate email hosting plan that you can pay for month-to-month or annually. The monthly plan is $1.99 per mailbox and includes 25GB of storage, ad-free webmail, and mobile and desktop syncing. Pricing starts at $1.67 per mailbox per month (billed yearly) saving 16% over billed monthly. Both options have the same features.

If you’re looking for a more comprehensive hosting package, think about email, and make sure your plan supports it before you buy a standalone mailbox. DreamHost’s web hosting plans – Launch, Growth and Scale – each come with 20, 40 and 60 email mailboxes respectively for the first three months. Once the trial period is over, your account is automatically subscribed to a paid email plan to keep the service running.

DreamHost email: Features

(Image credit: DreamHost)

DreamHost’s Professional Email keeps things simple. It focuses on the basics a small business needs from an inbox, rather than trying to be a full office suite.

Email organization and automatic filters

Drag messages into folders and set up automatic delivery filters so incoming mail is sorted to where it belongs without having to sort it out by hand! “Use this to keep client conversations, ongoing projects, and invoices and receipts separate,” says DreamHost.

That means less time sifting through one overstuffed inbox when you need to locate a contract or a payment confirmation for a small business.

Custom email aliases

DreamHost lets you create custom email aliases to help manage incoming messages. This gives you more flexibility in how you organise business correspondence, making it easier to handle different types of enquiries.

Ad-free webmail

You can read and send email from a web browser, without installing another app. The webmail is ad-free, so your inbox shows only your conversations, with no sponsored messages or banners mixed in.

This is handy when you’re working on a shared or borrowed computer, or just need to check something quickly.

Email syncing across devices

DreamHost supports IMAP, so you can sync your mailbox with compatible email apps such as Apple Mail, Outlook, and Thunderbird. These apps sync messages and read status across devices. Sent messages and other folders are also synchronized if both apps are configured to use the same server folders.

25GB of storage per mailbox

Each mailbox comes with 25GB of storage for messages and attachments. If your team grows, you can add more paid mailboxes, and each new one gets its own 25GB.

Built-in spam filtering

Every mailbox includes inbound filtering that helps catch spam, viruses and phishing messages before they reach you. DreamHost says the filtering updates automatically as new threats appear, and it’s included with your mailbox, so there’s no separate add-on to buy.

You can also review your spam folder and adjust your filters if useful mail gets caught. DreamHost is upfront that no filter catches every threat, so it’s still worth being careful with unfamiliar links and attachments.

DreamHost email: Support

(Image credit: DreamHost)

Drag messages into folders and set up automatic delivery filters so incoming mail is sorted to where it belongs without having to sort it out by hand! “Use this to keep client conversations, ongoing projects, and invoices and receipts separate,” says DreamHost.

That means less time sifting through one overstuffed inbox when you need to locate a contract or a payment confirmation for a small business.

DreamHost also provides a full knowledge base if you’d rather try to solve an issue on your own. It includes services like web hosting, WordPress and databases and email.

The knowledge base provides guides on creating an account, setting up your email applications, backing up messages, troubleshooting common issues and managing spam filters for email hosting in particular. You can also find an email FAQ page that covers topics such as account access, DNS settings, storage limits, and email migration.

DreamHost email: Security

DreamHost’s Professional Email includes built-in filtering to help keep spam, viruses and phishing emails out of your inbox. The filters update automatically, and you don’t need to pay extra to use them.

No filter catches everything, though, so it’s still worth being careful with unfamiliar links and attachments. If a genuine email lands in your spam folder, you can review it and adjust your filters as needed.

DreamHost also includes free Domain Privacy Protection for eligible domains registered through the company. This domain registration benefit helps keep your personal contact information out of public domain records while you own the domain. It doesn’t protect the contents of emails, and it’s not automatic when you use DreamHost’s email service with an externally registered domain.

DreamHost email: The competition

DreamHost offers a straightforward email hosting service, but it also gives customers the option to use Google Workspace instead. One useful advantage is that you don’t need to move your website or domain to DreamHost to use its email service. You can keep your domain with your current provider and connect its email settings to DreamHost.

For those who need more than a business inbox, DreamHost also offers Google Workspace as a separate service. This gives teams access to Gmail alongside Google’s productivity and collaboration tools. DreamHost can help with the setup and domain connection, making it an alternative for businesses that prefer Google’s email and workplace tools.

DreamHost email: Final verdict

DreamHost is a solid option for businesses that need a professional email address without the extra tools of a full office suite. It includes the essentials, such as 25GB of storage per mailbox, ad-free webmail, syncing across compatible email apps and built-in spam filtering. You can also use it without moving your domain or website to DreamHost.

If you need Gmail alongside shared documents and video meetings, DreamHost offers Google Workspace as a separate service. Overall, DreamHost is worth considering if you want straightforward business email, though businesses looking for a broader set of collaboration tools may prefer Google Workspace.

DreamHost email: FAQsHow much does DreamHost email cost per month?

DreamHost Professional Email starts at $1.99 per mailbox per month with monthly billing. If you pay annually, the equivalent price is $1.67 per mailbox per month, saving 16%. Both plans include 25GB of storage per mailbox, ad-free webmail, email syncing and spam filtering.

What is the cheapest email hosting?

The cheapest option depends on whether you need a free personal email account or a business email address using your own domain. DreamHost offers business email from $1.67 per mailbox per month with annual billing, but its official page alone does not establish whether it is the cheapest provider overall.

Which email provider is the best in 2026?

There is no single best email hosting provider for everyone. The right choice depends on your budget, security needs, storage requirements and whether you need tools for collaboration. A reliable recommendation would require comparing current plans and features from several providers.

Is it worth hosting your own email server?

Hosting your own email server can give you more control over your data and settings, but it also means managing security, spam filtering, software updates and email delivery. For most small businesses, a managed email hosting service is simpler because the provider handles much of that technical work.

What is the safest free email to have?

There is no email provider that is safest for everyone. Look for strong account protection, two-factor authentication, encryption and clear privacy policies. Your own habits matter, too. Use a unique password, enable two-factor authentication and be cautious with suspicious links and attachments.

Why are people moving away from Gmail?

Some people explore alternatives to Gmail because of privacy concerns, advertising, their preferred email features or a desire to use a different provider. Others switch to a custom business email address to present a more professional image. However, the reasons vary, and I would need approved sources to establish whether people are moving away from Gmail in significant numbers.

Categories: Reviews

Bluehost web hosting (2026) review

Mon, 10/19/2026 - 06:23

Bluehost has been hosting websites since 2003 and has worked closely with WordPress since 2005. It is owned by Newfold Digital, the company behind HostGator, Network Solutions, Web.com, and Yoast.

Its range covers shared and WordPress hosting, WooCommerce, managed cloud, self-managed and managed VPS, and dedicated servers.

Bluehost's clearest strength is the WordPress guidance around its hosting. Our current best WordPress hosting guide names it the best option for beginners, making the beginner experience the standard Bluehost has to meet.

For a quick run through what Bluehost is like to use check out our article One hour with Bluehost.

Cheapest Bluehost Shared Plan | $11.99 $1.99 p/m | 75% off
A fantastic bargain for TechRadar visitors, Bluehost has cut the price of its Shared Plan (regularly $11.99 p/m) down to a mere $1.99 per month for the first term only.View Deal

Bluehost: Pricing & plans

Bluehost offers quality WordPress plans with some powerful extras (Image credit: Future)

Bluehost provides some of the best website hosting in the shape of shared, VPS hosting, cloud, and dedicated hosting plans. These plans are good for everything from blogs to ecommerce sites of all sizes.

The shared plans come in four flavours: Starter, Business, eCommerce Essentials, and eCommerce Essentials Premium. You'll find yourself directed to these plans if you click through from WordPress Hosting, WooCommerce, and Web Hosting. The only difference is that if you click through from WooCommerce you'll only be offered eCommerce Essentials, and eCommerce Essentials Premium.

The shared plans are ideal for up to 400K visits but those figures are based on the average site and don't specify a performance level for the sites. You should consider the number an estimate and safety net. If your site gets a lot of visitors, you'll likely need to use one of the VPS, cloud, or dedicated plans.

The VPS plans come in three flavours: Standard NVMe 4, Enhanced NVMe 8, and Ultimate NVMe 16. Plus, a bonus custom flavour. The number in the name corresponds to the amount of RAM you get with each plan. You get a 1:2 ratio of CPU cores to gigabytes of RAM. As for site visits, you're on your own here when it comes to estimated levels but support will help you make the choice on which one is best for you.

The cloud plans also come in three flavours: Cloud 10, Cloud 25, and Cloud 50. Plus, the additional custom plan. The number in this name corresponds to how many sites each plan supports. The cloud plans are ideal for 300K - 23 million site visits a month.

It's the same pattern with dedicated hosting plans: Standard NVMe 32, Enhanced NVMe 64, and Premium NVMe 128...and the custom plan. These plans have a CPU core to RAM ratio of 1:4.

Bluehost shared & WordPress hosting

(Image credit: Bluehost // Future)

Starter costs $3.99 a month on a 36-month term and renews at $9.99. It supports 10 websites, 10GB of NVMe storage, and an advertised 40,000 monthly visits. Business is $6.99, renewing at $13.99, with 50 websites, 50GB, and an estimated 200,000 visits. eCommerce Essentials costs $14.99, renewing at $21.99, with 100 websites, 100GB, and an estimated 400,000 visits. These are monthly equivalents, not monthly payments: Bluehost's terms say the full selected term is charged in advance.

All three include a free domain for the first year, SSL, CDN, managed WordPress updates, migration, staging, SSH and WP-CLI, caching, malware scanning and removal, a web application firewall, DDoS protection, and weekly backups. Starter has chat but no phone support.

Business adds phone support, first-year domain privacy, and AI-powered malware detection and removal. eCommerce Essentials adds WooCommerce and selling tools. I like that staging, caching, and weekly backups are included even with Starter, although professional email is only a one-month trial and then renews at $2.99 a month.

The advertised visit limits compare plans rather than guarantee performance: a brochure site and a plugin-heavy store can consume very different resources at the same traffic level.

Bluehost VPS, cloud, and dedicated hosting

(Image credit: Bluehost // Future)

Bluehost's self-managed VPS range is the biggest change. NVMe 2 starts at $4.69 a month for 24 months and renews at $5.69, with one vCPU, 2GB of RAM, and 50GB of storage. NVMe 4 costs $9.49 and renews at $11.99, with two cores, 4GB, and 100GB. The 8GB and 16GB plans start at $12.99 and $25.99, then renew at $28.99 and $49.99. All include root access and unmetered bandwidth, but buyers administer the server.

Managed VPS starts at $49.99 a month on a 36-month term and renews at $68.99. Its entry specification matches NVMe 4 but adds cPanel, management, and two dedicated IP addresses. I would only pay that large premium if I genuinely needed Bluehost to maintain the environment.

Cloud is much more expensive. Cloud 10 is $65 a month on a 36-month term, with 10 sites, 125GB of storage, 20 vCPU threads, edge caching, real-time backups, priority support, and a 100% data-center-network SLA. Dedicated hosting begins at $144.19 and renews at $191.79, with eight cores, 32GB of RAM, 1TB of storage, and three IPs.

Bluehost: In use

Bluehost website builder dashboard (Image credit: Future)

Bluehost's Portal handles most everyday hosting tasks, while cPanel remains available for managing websites, databases, FTP accounts, and other technical settings. Bluehost Cloud is the exception and does not include cPanel.

WordPress installs automatically, and the onboarding flow asks about the site's purpose and the user's experience before generating a starting design. Advanced tools remain available, but beginners do not have to confront them immediately.

The AI builder produces a usable first layout, while WonderBlocks supplies ready-made page sections. In our one-hour hands-on test, WonderBlocks was the standout: adding a prepared section was faster than wrestling with WordPress's standard block editor.

Gutenberg can still feel unintuitive, and choosing the wrong onboarding level may mean starting again, but Bluehost's guidance makes WordPress easier than on many generic hosts.

Read our full Bluehost website builder review.

A full-featured cPanel setup is stuffed with web management features (Image credit: Future)Bluehost: Speed

Bluehost's uptime (Image credit: Future)

Our shared-hosting test used a basic plan with a small WooCommerce store. The WordPress Benchmark plugin returned an overall server score of 7.9, with particularly strong filesystem, database, and network results. Persistent object caching scored zero in that test. Bluehost now lists object caching with Starter, so the result records the earlier configuration rather than the current advertised feature set.

Siege testing simulated 5, 9, and 15 concurrent visitors. Availability remained above 95% at each level, while average response time rose from 0.41 seconds to 2.61 seconds at the highest load. This was adequate for a modest site and supported the 7.9 benchmark result. These results apply specifically to the shared plan.

Bluehost now advertises a 99.99% uptime SLA for shared hosting. If measured uptime falls below that level, customers can claim a single 5% monthly credit within 30 days. Cloud plans carry a separate 100% data-center-network SLA, with a 5% credit for every 30 minutes of qualifying downtime, up to the affected server's monthly fee. Those commitments are a material improvement, as shared hosting had no formal uptime guarantee when we last reviewed it.

WordPress benchmark testing

CPU & Memory

Operations with large text data

8.8

Random binary data operations

5.14

Recursive mathematical calculations

6.13

Iterative mathematical calculations

7.2

Filesystem

Filesystem write ability

8.82

Local file copy and access speed

9.36

Small file IO test

10

Database

Importing large amount of data to database

8.68

Simple queries on single table

10

Complex database queries on multiple tables

7.7

Object Cache

Persistent object cache enabled

0

Network

Network download speed test

10

Overall

Your server score

7.9

Siege test

Concurrent users

5

9

15

Transactions

1086

2110

1473

availability

95.6

96.7

95.71

elapsed time

299.22

299.87

299.11

Data transactions

13.96

25.95

19.45

response time

0.41

1.17

2.61

Transaction rate

3.36

7.04

4.92

throughput

0.05

0.09

0.07

concurrency

1.49

8.22

12.87

sucesful transactions

1086

2110

1473

failed transactions

50

72

66

longest transaction

19.77

19.93

20.21

shortest transaction

0.11

0.11

0.1

Bluehost: Support

Support remains available around the clock, but the channel depends on the plan. Starter includes live chat only, while Business, ecommerce, managed VPS, and other higher tiers include phone support. Bluehost provides US and international phone numbers, and its support and knowledge-base material is primarily in English.

I contacted Bluehost's pre-sales chat to check the current backup policy. After around five minutes, an agent confirmed that weekly backups are included with all shared plans at no additional cost. I would call that a solid rather than exceptional response time, but the answer itself was direct and useful.

In our hands-on testing, support responded clearly when the WordPress onboarding level could not be changed, saving time looking for a non-existent setting. WordPress Academy and the knowledge base are also useful for beginners.

Bluehost: Final verdict

Bluehost makes a stronger case than in 2025. Shared hosting has gained an SLA, weekly backups, and object caching, while self-managed VPS is genuinely inexpensive. The main reason to choose it remains the beginner experience: guided setup, AI assistance, WonderBlocks, WordPress Academy, and a clean dashboard form a coherent path to a functioning site.

Three-year upfront billing weakens the headline prices, renewals rise, email becomes another subscription, and weekly backups trail competitors with daily schedules. I think Bluehost still deserves its best-for-WordPress-beginners position, and I would recommend it most confidently to someone building a first WordPress site who values guidance over the absolute lowest long-term price.

Experienced users should compare the self-managed VPS range, while high-traffic businesses should weigh Bluehost Cloud against specialist managed WordPress providers.

Bluehost FAQsIs Bluehost good for beginners?

Yes, particularly for people who want to learn WordPress rather than avoid it. Automated installation, guided onboarding, an AI-assisted starting design, WonderBlocks, staging, and WordPress Academy reduce the initial learning curve. Our current best WordPress hosting guide names Bluehost its best WordPress host for beginners, although the WordPress editor itself can still take time to master.

Does Bluehost have an uptime guarantee?

Yes. Shared hosting now has a 99.99% SLA, with a single 5% monthly credit available when qualifying uptime falls below the threshold. Cloud hosting has a separate 100% data-center-network SLA and a different credit schedule.

Where are Bluehost's data centers located?

Bluehost now says its global data-center range covers North America, South America, Europe, and Asia, and that customers can select a preferred location during checkout. This replaces the older arrangement described in the live review, where bluehost.com customers were automatically placed in the US.

Does Bluehost offer refunds?

Eligible hosting purchases carry a 30-day money-back guarantee. Most add-ons are excluded, and if a plan includes a free domain, Bluehost deducts a non-refundable domain fee when the customer keeps it. No refunds are offered after 30 days.

What is my Bluehost IP address?

Finding your website server's IP address can be handy, especially if you need to point a domain hosted elsewhere to your website.

There's no single way to manage this on Bluehost - it depends on your product and control panel - but if your plan has access to cPanel, it only takes a moment.

Log into your Bluehost account dashboard (my.bluehost.com).

Click Advanced in the left-hand sidebar.

Browse the General Information box on the right. The server IP address is displayed as 'Shared IP address.' (If you don't see a General Information box, look for and click a Server Information link).

What are Bluehost's nameservers?

Bluehost's nameservers are:

ns1.bluehost.com 162.88.60.37
ns2.bluehost.com 162.88.61.37

If you need more help, the support site has several useful articles on nameservers and DNS

How do I cancel Bluehost?

Bluehost customers can disable automatic renewal in the Renewal Center. For terms of three months or longer, payment is taken 15 days before the term ends, so users must opt out at least 16 days before expiry to avoid the charge.

Check out the latest Bluehost promo codes.

Categories: Reviews

Ahrefs Brand Radar review

Mon, 10/19/2026 - 06:10

When a competitor appears in an AI answer and your brand doesn't, the obvious reaction is to publish more content. But that skips the useful questions like:

Which answer?

What was the person asking?

And did the assistant reference your competitor's website, an independent review, or neither?

Those questions shaped this review. To test the platform, I compared Saily eSIM with two of its close competitors, Airalo and Holafly. The aim was to find something worth investigating and see whether the Brand Radar data holds up to the hype.

My hands-on work focused on its existing AI Visibility Index, moving from combined-platform reports to ChatGPT-specific checks using recent data. Here’s how it went.

Ahrefs Brand Radar: Plans and pricing

First, separate the two purchases. The AI Visibility Index lets you search data Ahrefs has already collected, and the Custom Prompts run the questions you choose from the point you set up tracking. Now, Brand Radar is sold separately, so you don't need to buy the wider Ahrefs SEO suite first.

Ahrefs pricing breaks the options down as follows. These are monthly US-dollar prices, accurate as of October 15, 2026.

Purchase

Monthly price

What it covers

One AI index

$199

Existing data for one AI platform

All AI indexes

$699

All available AI indexes and 2,500 custom checks

Custom Prompts: Basic

$50

2,500 additional monthly checks

Custom Prompts: Growth

$100

7,000 additional monthly checks

Custom Prompts: Scale

$250

25,000 additional monthly checks

Lite, Standard, and Advanced subscribers already receive 150, 300, and 600 custom checks per month, respectively. That gives existing customers a small starting allowance without buying index access.

The catch is that checks aren't interchangeable with prompts. Each platform, location, and scheduled run consumes allowance. At the standard one-check rate, 20 prompts checked daily across three platforms and two countries use 3,600 checks over 30 days. By the way, Claude consumes eight checks per execution, so its allowance disappears faster.

For an agency researching different brands every week, the index has a clear purpose. But for a small, growing business following ten buying questions, paying for the entire archive before using those smaller allowances feels premature to me.

Ahrefs Brand Radar: Features and specsAI Visibility Index

I entered Saily, an eSIM provider, along with its competitors (Airalo and Holafly), and opened the overview.

Mentions, citations, estimated impressions, and AI Share of Voice sit together, with platform comparisons underneath. The index already includes historical data to explore, which is what makes it attractive. That means you can investigate a competitor before deciding which questions deserve ongoing tracking.

My starting point was a comparison of Saily, Airalo, and Holafly across the selected AI platforms. (Image credit: Ahrefs) (Image credit: Ahrefs)

Saily's smaller mention footprint gave the investigation a direction. Scrolling down brought its own performance history and associated topics into view, making it easier to move from a broad comparison to a specific question.

Performance trends and topic breakdowns help narrow a broad brand comparison. (Image credit: Ahrefs) (Image credit: Ahrefs)

You still need to understand the sample here. Ahrefs' methodology combines search-informed questions, including Google's People Also Ask, with semantic expansion. These aren't private conversations gathered from ChatGPT users. Its newer AI-adjusted volume applies platform-specific usage estimates to a parent keyword's Google search volume.

I prefer that qualification to treating Google demand as AI demand, but it remains a model. A rising line isn't proof that more customers saw your brand, and dataset changes can affect comparisons. AI Share of Voice also depends on the brands and filters you selected.

Competitor gap analysis

The comparison became more useful when I isolated ChatGPT answers mentioning competitors but excluding Saily. This turns an intimidating report into a reading list. You can investigate the questions behind the gap instead of guessing what another brand is doing right.

This filtered ChatGPT view excludes Saily. Its zero line reflects the selection, not Saily's overall visibility. (Image credit: Ahrefs) (Image credit: Ahrefs)

Opening “What's the best eSIM in the UK?” revealed a stored response dated October 9. Brand Radar's tracked-brand panel listed Airalo and Holafly, with no Saily. The question also mixed domestic mobile service with travel data, a useful reminder that apparently relevant prompts can cover different needs.

The individual response separates tracked-brand mentions from cited and uncited sources. (Image credit: Ahrefs) (Image credit: Ahrefs)

That response exposed some friction too. Parts of the answer displayed raw markup, which made it harder to read. The sidebar reported no citations while listing pages under “Found but not cited.” Keeping those categories separate was helpful, even if the presentation needed tidying.

This is where your judgment matters. A missing brand is worth investigating when the question fits its product. It isn't automatically an instruction to write an article, and a brand mention doesn't necessarily amount to a recommendation.

AI citation analysis

The Cited pages report was the natural next stop. Its page-type view groups results into formats such as articles, landing pages, and reviews. That gives you a starting hypothesis about the material appearing around your category before you inspect individual URLs.

Page-type groupings provide a starting point for investigating the source material. (Image credit: Ahrefs) (Image credit: Ahrefs)

Switching to individual pages made the distinction between discovery and citation much clearer. “Found in” includes pages retrieved while producing an answer. “Cited in” records answers that actually cite the page. A source can appear frequently in the first column without receiving much visible credit in the second.

Individual URLs expose the difference between pages retrieved and pages cited in this filtered comparison. (Image credit: Ahrefs) (Image credit: Ahrefs)

TechRadar's own best eSIMs guide appeared alongside review website listings and provider-owned pages. More interestingly, the guide's “Mentions on page” indicators included Saily even though this investigation had excluded Saily from the AI answers. A roundup can mention your product without an assistant carrying that mention into its response.

That is a better research lead than a score alone. You can inspect the source's coverage and ask what information an answer used or omitted. However, “Other” wasn't a ready-made outreach list because Holafly-owned URLs were present too. So, always check actual domains and your brand setup before treating a result as independent coverage. Not to forget, getting included on a cited page also doesn't guarantee a future AI recommendation.

Brand sentiment analysis

Ahrefs initially described sentiment analysis as a work in progress, but a native Sentiment report was available in my review account. In simple terms, this report adds a useful second question to the comparison, i.e., when AI mentions a brand, how does it describe it?

The Sentiment report adds a view of how the selected brands are described. (Image credit: Ahrefs) (Image credit: Ahrefs)

Saily's lower mention volume sat alongside a higher positive-response share than the two competitors. I found that contrast useful because, in my opinion, being discussed less often and being described less favorably are different problems. The former might prompt discovery research, while the latter calls for examining what the answers say.

I didn't independently audit the classifications, so this isn't a verdict on sentiment accuracy or customer satisfaction. So, use the report to identify answers worth reading, then check their wording.

Custom prompt tracking

The existing index is convenient until the question you care about isn't there. Custom Prompts let you add it, choose platforms and locations, organize questions with tags, and schedule daily, weekly, or monthly checks. Its history starts with collection, not arriving pre-populated.

For ChatGPT and Perplexity, Brand Radar also exposes Fan-out queries (extra searches an assistant generates while working through a prompt). They suggest useful supporting topics, although Ahrefs only shows the queries returned with the response, not necessarily every search the model ran.

The public indexes cover ChatGPT, Perplexity, Gemini, Copilot, Google AI Overviews, and AI Mode. However, platform coverage needs a closer look than a row of logos. Plus, Claude is available for Custom Prompts rather than in the public index. Grok collection is paused, with historical data retained. Such distinctions are pretty vital in case either platform is central to your audience.

AI research tools

Brand Radar also offers search-demand and web-visibility reports. YouTube research covers titles, descriptions, and transcripts, while Reddit visibility focuses on threads appearing in Google results. TikTok has its own beta report.

These surrounding reports have separate Ahrefs-plan and beta conditions, so don't assume an index purchase includes every sidebar item. I see these as ways to investigate surrounding coverage, not proof that every mention influences an AI answer.

There is more assistance than the old “research only” description suggests. “Ask Ahrefs” is built into the interface, and the agent previously called Agent A now lives under Letaido, which offers additional analysis and automation.

Is Ahrefs Brand Radar worth it?

The strongest reason to buy Brand Radar is the ability to move between a competitive overview, an individual answer, and its source material. My eSIM investigation showed why that matters. Having lower visibility, positive sentiment, source-page mentions, and actual AI recommendations can tell different stories.

For agencies and in-house teams investigating several competitors, that depth can justify paying for research access. Entity matching, which distinguishes a company from unrelated uses of its name, is another useful safeguard when your brand isn't as distinctive as Saily.

For a small business with a short list of questions, the smaller Custom Prompts allowance or a limited manual check is a more proportionate start. The expensive part shouldn't arrive before you have a plan for using the findings.

I came away with useful leads and a clearer understanding of their limits. Brand Radar makes the evidence easier to inspect. Whether that evidence becomes better content, corrected information, or relevant coverage still depends on what you do next.

FAQsWhat does Ahrefs Brand Radar do?

Ahrefs Brand Radar researches brand mentions, citations, and estimated visibility across supported AI platforms. You can compare competitors, inspect stored answers and source pages, or set up tracking for questions you choose.

Is Brand Radar included in an Ahrefs subscription?

Brand Radar is included in Ahrefs Lite and higher plans with a limited Custom Prompts allowance. If you want full AI Visibility Index access, then that’s a separate purchase. Keep in mind, an included tracking allowance doesn't give you unrestricted access to the existing index.

What is the difference between the index and Custom Prompts?

The index is an existing research database that you can search immediately. Custom Prompts collects answers to your selected questions on a schedule, with tracking history building from setup onward.

Does Brand Radar track Claude and Grok?

Claude is available for Custom Prompts and uses eight checks per execution. However, it isn't part of the public AI Visibility Index. The new Grok collection is currently paused, although historical results remain available.

Does AI Share of Voice measure traffic?

No. It compares a brand's share of modeled impressions with the other tracked brands. It isn't a count of visits, clicks, or conversions. Keep referral and conversion reporting separate when evaluating commercial results.

Can a brand be mentioned without its website being cited?

Yes. An answer can name a brand without linking to its website. It can also cite a third-party page that discusses several brands. Check the answer's wording rather than assuming every source-page mention reached the reader.

How often does Brand Radar update its data?

Ahrefs describes monthly chatbot question-set refreshes using a 90-day reporting window. Google's AI search indexes follow different refresh cycles. Custom Prompts has its own daily, weekly, or monthly schedule, so a daily chart doesn't mean every archived answer was refreshed that day.

Which prompts should an SEO team track first?

Start with buying decisions like comparisons, pricing, suitability, alternatives, and specific customer requirements. Include unbranded questions as well as questions naming your business. Keep the set small enough that someone can review and act on it.

Will Brand Radar improve my AI citations automatically?

The reports identify evidence and opportunities, not guaranteed improvements. You still need to decide what to correct, publish, or pursue. Connected automation can assist with work, but this review didn't test a resulting citation uplift.

Is Brand Radar worth it for a small business?

Potentially, but start with the workload. A few recurring questions rarely justify the full index on their own. Broader access becomes more persuasive when you regularly investigate new topics, competitors, and cited sources.

Categories: Reviews

Hands on: Ugreen HomeAgent HA100

Mon, 10/19/2026 - 01:20

Rather than a review, this is a ‘hands-on’ since the HomeAgent hardware isn't in retail channels yet.

So much has happened since it's difficult to comprehend that Ugreen only sold its first NAS in 2021 exclusively in China, but its global retail products only arrived in 2024.

Since the initial five NASync models, we’ve seen the incredible iDX6011, HD products, GT series updates for the DXP machines, Pro series additions, and a new DXP8800 Ultra that I covered recently.

Now, alongside those thirteen NAS devices, Ugreen has taken another branch and created the HomeAgent series. It combines some of the development path of the UGOS Pro, a basic NAS hardware platform, with a device that’s made to create a bubble of AI away from the internet to handle a variety of agentic tasks.

Initially available only via pre-order and Kickstarter, with a retail release in early 2027, there are three models: HomeAgent HA100 reviewed here, the HA100 Pro for those who want more AI performance, and the MasterAgent MA100 that pushes local AI power to the max.

Alongside the HomeAgent devices, Ugreen has also created a collection of peripheral devices, including three AI-connected cameras, a smart speaker, and a connected colour E-Paper picture frame.

While the launch ecosystem may seem modest, Ugreen will likely expand this collection in the near future.

These systems are designed to address issues that smart home (or business) users face when technology is so fragmented. Typically, people have components from different brands, Google and Amazon, alongside peripherals made by others, and they try to bring it together using a platform like Home Assistant run on a NAS or dedicated PC.

The Ugreen HomeAgent takes all that technology and control, adds AI components that will still work even if the internet isn’t functional and distils it into an attractive white plastic box.

Instead of needing regular attention, the AI in the HomeAgent is meant to run the NAS and connected peripherals without intervention, and it can tell you if a problem is beyond its ability to address.

Asus Ascent GX10: Price and availability
  • How much does it cost? From $799
  • When is it out? Available for pre-order, shipping in February 2027
  • Where can you get it? Via Kickstarter

Ugreen has offered some amazing deals when launching NAS on Kickstarter, and this hardware is no exception.

The HA100 costs only $799 at the pre-launch early-bird price, down from a $1,599 MSRP. Conversely, the HA100 Pro is $2,699 on a $5,399 MSRP, and the MA100 is $9,999 on a $19,999 MSRP.

The Kickstarter initiates on November 17th, but Ugreen is taking reserve deposits before then, where you get a 50% discount on the HA100, HA100 Pro and MA100.

After the Kickstarter is launched, early bird pricing will be 40% off, and presumably full MSRP will be the norm after February 2027, when the Kickstarter ends.

To get those prices, you need a $50 reserve deposit for the HA100 and HA100 Pro, and a $200 deposit for the MA100. As an additional sweetener, Ugreen is bundling the SynCare ID500 Pro camera with the HA100 and HA100 Pro (MSRP $149) and four 8TB NAS drives with the MA100, which must easily be worth another $1200.

The HA100 pricing is for a NAS with only three HDD bays and 16GB of RAM. That said, it includes an AI accelerator, which makes it hard to compare to Ugreen’s DXP and iDCX series machines.

Therefore, if you are primarily looking for a NAS, then this might not be the product range for you; if you are more interested in AI, it might be.

I should also mention the high-end MA100, which I believe has four drive bays and is built around an NVIDIA accelerator. Considering it was possible a few months ago to get an NVIDIA DGX Spark system for around $3000, that does seem pricey, but it should offer similar performance.

However, the ASUS Ascent GX10 I was referring to now costs twice as much, and that’s for a machine with 128GB of RAM, whereas the MA100 has 256GB. So, at the Kickstarter price, the MA100 might be a bargain.

What I can say with some certainty is that no other NAS brand is making anything remotely like this right now, although there is some overlap with the DXG Spark platforms.

(Image credit: Mark Pickavance)Ugreen HomeAgent HA100: Specs

Item

Spec

HomeAgent Model:

HA100

CPU:

Rockchip RK3588 (8 Cores, 4x Cortex-A76 + 4x Cortex-A55

GPU:

ARM Mali-G610 MP4

NPU:

Rockchip RK1828 (6 TOPS)
Ugreen AI Accelerator T20, RK1228, 5GB (20TOPS)

RAM:

16GB LPDDR5 (not expandable)

Internal Storage:

64GB eMMC for UGOS Pro

SATA Storage:

3x 3.5/2.5-inch SATA III (2x NAS, 1x Surveilance Drive)

M.2 Storage:

1x M.2 NVMe PCIe Gen 3 x1

Ports:

1x USB-C 3.2 Gen 1 (5Gbps)

2x USB-A 3.2 Gen 1 (5Gbps)

1x HDMI 2.0b

1x SD 3.0 slot (front)

Networking:

1x 2.5GbE RJ45

4x PoE 10/100Mbps (Max power 65W)

Wireless:

Thread 1.4

ZigBee 3.0

Bluetooth 6.0

Bluetooth 5.3

OS:

UGOS Pro

File Systems:

EXT4, Btrfs

Maximum Capacity:

68TB (2x 30TB SATA) + 1x 8TB M.2)

RAID Modes:

JBOD/Basic/RAID 0/RAID 1

Microphone:

Omnidirectional 4-microphone array

Speakers:

2x 5W

PSU:

20V 9A 180W external

Power Consumption:

42.36 W (drive access), 18.12 W(drive hibernation)

Dimensions:

192 x 218 x 251mm (LxWxH)

Weight:

520g (including PSU and drives)

Warranty:

2 Years

Ugreen HomeAgent HA100: Design
  • Large enclosure
  • PoE switch inside
  • Three HDD bays, dual-function storage

(Image credit: Mark Pickavance)

The first thing that strikes you about the HA100 is how much bigger it is than a typical four-bay NAS, like the DXP4800 Pro or Plus.

Standing about 218mm high and 251mm deep, this is a large, shiny white box that feels substantial when you pull it from its packaging.

On the top front is a wide OLED panel, which I think is the same one that I saw on the iDX6011 Pro, but on its side. This acts as both a touch-sensitive menu and can also display various useful information.

Just above this on the left is a volume rocker, and to the right is a microphone mute, which hints that you can talk to this device, or rather the AI running on it.

The front face also has a single USB-C port and an SD card slot; the USB-C is 3.2 Gen 1 (5Gbps), and the SD card reader is SD 3.0 spec. And just below them is an LED that projects different colours to indicate whether there is a problem or all is well.

On the back, there are two USB-A ports, both 5Gbps, a single 2.5GbE RJ45 LAN port and a four-port PoE 10/100Mbps (Max power 65W) switch. That last feature matters for the unit's surveillance function, since you can directly connect and power PoE cameras.

(Image credit: Mark Pickavance)

Finally, we come to drive bays, and the HA100 isn’t quite like anything else Ugreen has made so far, though it has minor similarities to the DH4300 in that it’s a top loader.

The top of the HA100 is magnetically attached, making it easily removed to reveal four bays, with three for hard drives and one for an AI accelerator. These are all lockable and colour-coded. The drives have plastic tool-less cradles if you use 3.5-inch media, and screws if you insist on 2.5-inch HDDs.

But what genuinely surprised me is that two of the HDD bays are allocated to NAS storage, and one, coloured purple, is meant to hold a surveillance-tailored drive. I’ve never seen that predefined on a NAS before, but it does reveal one way that Ugreen envision the HA100 being used.

On the underside of the unit, there is also a removable panel that provides access to an M.2 NVMe PCIe Gen 3 x1 slot, which can be used for caching or a high-performance drive for AI models. You are recommended to use it for the latter.

I won’t be tempted to say the HA100 breaks the NAS mould, but it certainly strays off the beaten NAS path, and in some truly interesting ways.

Ugreen HomeAgent HA100: Features
  • ARM SoC
  • T20 accelerator
  • M.2 and PCIe slots
  • No upgrade path in series

Given how many newer Ugreen NAS designs use mobile Intel platforms, it seems odd that none of the HomeAgent hardware uses them.

Even more curiously, the three machines (HA100, HA100 Pro, and MA100) all use different ARM SoCs, completely eliminating any consistency.

Of these, the Rockchip RK3588 in the HA100 is the most recognisable, since it's an Armv8.2-A platform with four each of Cortex-A76 plus and Cortex-A55 cores, much like is often found in phones or tablets.

The HA100 Pro is rocking more cores with an Armv9.2-A platform, the 12-core CIX P1 CP8180. SoC diversity is completed with the MA100 that uses a fourteen-core NVIDIA Jetson Thor T5000.

Similarly, GPU power scales by level, starting with the Arm Mali-G610 MC4 on the HA100, moving to the Arm Immortalis-G720 MC10 on the HA100 Pro, and ending with the 2,560-core NVIDIA Blackwell GPU with 5th-generation Tensor Cores on the MA100. This helps explain why MA100 hardware costs so much, but it's hardly a smooth power ramp.

When the CPU, GPU, and NPU all work on an AI task, the HA100 has an advertised total AI performance of 26 TOPS (6 TOPS platform, 20 TOPS T20 accelerator).

That’s actually not enough to run CoPilot locally on a PC, but it can still run some LLM models adequately. But the total performance of the Pro model with an as-yet-unnamed accelerator is a much more sprightly 205 TOPS, and the MA100, as you might expect, has up to 2,070 FP4 sparse TFLOPS.

So, in summary, for AI, it scales 10x and then 1000x, approximately. Those are not exactly incremental jumps.

It also makes the HA100 look decidedly underpowered, although the Kickstarter entry-level pricing does make it attractive to someone who wants to explore local AI.

What confuses me is that HA100 or HA100 Pro owners have no upgrade path, since the systems aren’t interchangeable in any way. As I assume you can’t put the accelerator from the HA100 Pro in the HA100, what was the point of having the accelerators removable? And why make the MA100 the only one with four bays?

Surely, if all the cases were the same, Ugreen could redirect production more easily than it does now?

(Image credit: Mark Pickavance)

I understand that part of the purpose of using Kickstarter in this instance isn’t about funding; it's about getting indicators of demand for each model. But if you’ve already made too many black four-bay MA100 cases for demand, it's too late to repurpose them for the HA100 Pro. But then Ugreen already undermined that flexibility with the three-bay designs.

And, here’s the real rub. If you get a low-profile RTX 460 video card and mount it in one of the DXP or iDX machines, then that can generate 242 TOPS of AI processing, making that NAS more powerful than the HA100 Pro. How well that would work in reality is debatable, and I’ve never tried it, but the issue is obvious if you look at the costs.

In a similar vein, the MA100 is up against DXG Spark systems. But all of those I’ve seen come with dual 10GbE LAN ports, not one and four 1GbE PoE ports. But critically, the DXG systems also have the Nvidia ConnectX-7 SmartNIC on them, which is a 200GbE network connection designed to fuse two DXG systems into a single platform.

The MA100 doesn’t have this port, I assume, and therefore, unless Ugreen releases an accelerator upgrade, moving from Blackwell to Vera Rubin when it arrives, then there isn’t an upgrade path here either.

Coming back to the HA100, the basis for my experience so far, the T20 accelerator on this machine is modest, yet it took up most of the free PCIe lanes, leaving only a single lane for the M.2 slot, once all the other ports were covered.

Given the price, I think it should have shared an architecture with the DXP4800 Pro, or better, and maybe had either dual M.2 slots, Gen 3 x4 or a single Gen4 x4 slot. Because Gen3 x1 is only 1000MB/s, and external devices on this machine can go that quickly.

I guess, based on the number of pledges they get, Ugreen will know whether the performance ramp from the HA100 to the HA100 Pro and the MA100 was right or wrong.

My feeling, and it’s a gut reaction, is that all the systems should have shared the same enclosure, the HA100 should have been more powerful, and there should have been more consideration given to a potential upgrade path, at least from the HA100 to the HA100 Pro.

Ugreen HomeAgent HA100: Software
  • UGOS Pro
  • Local Gwen 3.5
  • Smart Home

(Image credit: Mark Pickavance)

The hardware in this series is effectively done, and I’d be massively surprised if anything changes between the machines reviewers received and what ultimately arrives for those on Kickstarter and in later retail.

That leaves the software side of the equation, and it isn’t at the same stage of production, even if it is underpinned by the same UGOS Pro platform as all the DH, DXP, and iDX NAS Ugreen has already launched.

However, at the time of writing, my DXP8800 Plus workhorse is running UGOS Pro 1.20.0.0142 and the HomeAgent HA100 is on 1.20.0.0127 Beta.

That might not seem hugely different, but there are significant differences between the two, so much that the HomeAgent machine needs a special version of the mobile application to even be accessible.

It seems reasonable to assume that closer to retail release, all the extra functionality needed for HomeAgent will be settled into the latest general-purpose UGOS Pro release, rather than it spawning a whole new separate OS.

The biggest difference anyone who has used UGOS Pro will notice is that you can’t access this version from a web interface, although Ugreen has promised that in a future update.

Using it from the mobile app doesn’t limit what you can control, but it's nice to use the web interface when it's available.

It’s a generalisation, but the NAS side of the HomeAgent is practically identical to that in prior Ugreen NAS, where you can install apps, manage the drives and data. Obviously, in this configuration with only two data drives, you can’t configure a RAID 5 pack, but you can configure RAID 0 or 1, and you can create backups to another NAS.

The app selection is mostly the same as that on the standard NAS, with a couple of special function apps that bind the T20 accelerator into the system and an IoT Gateway that are loaded by default. What’s genuinely interesting is how some of the apps we’ve seen before on UGOS Pro now have added significance in this context.

The one that stands out most is Model Manager, since the whole AI function of this system is built around a locally run AI on this app using Docker as a subsystem. By default, the system loads the LLM Qwen 3.5 4B.

This 4B model is a sensible fit for this hardware, as being quantised, it occupies only a few gigabytes, which leaves plenty of the 16GB for the operating system and camera analysis running alongside it. Anything much larger would start to squeeze this box.

To try and make things as efficient as possible, the model has modules that you can either install or not depending on if you want it to recognise people, pets or even the appearance of a parcel. As these features infer, it works closely with Surveillance Centre and the new camera peripherals.

It can also link to Smart Home functionality, enabling it to turn things on and off, like lights and also read temperature and security sensors.

The HomeAgent box and some of the peripherals, such as the SynCare cameras and the Smart Speaker, allow you to verbally interact with an AI assistant, Uliya.

And frankly, this is where things need some considerable work. While the hardware in the HA100 can process 40 or more tokens a second, I’d hardly describe it as conversational.

It can alert you when someone is approaching the house, has left a package, or where a known person is in the home, but ask it anything more complicated, and it often says it can’t do that yet.

While I’ve not tried the HA100 Pro or the MA100, I’d assume they can run much more sophisticated LLMs with greater capabilities, but the AI component of the basic system is more agentic-focused than something like ChatGPT.

That said, you can plug a Cloud-based AI in alongside Qwen 3.5. The current options are OpenAI (ChatGPT), Qwen, MiniMax, DeepSeek, GLM and Kimi, and you will need an API key to plug those in.

However, Ugreen made it clear that the purpose of the HomeAgent was to provide a local AI that wasn’t dependent on the internet, so using a Cloud model undermines that assertion.

Obviously, the engineers can do plenty with the local Qwen 3.5 4B model to make it more interactive and able to handle a wider range of scenarios, but at this point in development, it is rather underwhelming.

(Image credit: Mark Pickavance)

The other part of this solution that needs considerable effort is the Smart Home app, since currently it only connects to the associated Ugreen peripherals or Matter-compliant devices.

Since all my home automation hardware is older and doesn’t use Matter, that’s a problem.

I did consider using the Matter Hub on my Home Assistant installation to make non-Matter hardware visible, but the way this is handled on the HA100 requires either a Matter QR code or pairing number. At a minimum, this needs to be expanded to include older Google and Amazon equipment, as well as popular brands like Tapo, SmartLife, and Hue.

I’m sure these things will be added, but unless you have Matter hardware or Ugreen peripherals, it's a bit of a technological desert right now. Once these items become part of this ecosystem, you can easily build automations and interact with Uliya to control them, or that’s the promise.

For my assessment, Ugreen provided two peripherals: the SynCare ID500 Pro and the SynCare OD600 Pro. If you didn’t connect the dots, ID is for indoors and OD is for outdoors.

The ID500 Pro, which you can get for only $89 as part of the Kickstarter offering, comes for free with the HA100 and HA100 Pro. This device gets power via USB and comes with a phone-style power source and a long USB cable.

Equipped with a 4K camera on a smooth pan-tilt tracking system that enables it to follow movement automatically across a room or even outdoors. Working with AI, it can identify people, vehicles, pets, and packages, and record those events on the HomeAgent for later review.

The only issue I ran into was that I put it in a window to cover anyone approaching, and it did that well, but at night, when it turned on its IR lights for night vision, it blinded itself with the IR reflection off the glass.

Undoubtedly, a superior option for tracking outside activity is the OD600 Pro, which is designed to be mounted outside, ideally on the eaves of a property. It has dual cameras and takes its power from a PoE LAN connection, allowing it to be directly connected with a single LAN cable to the HomeAgent PoE switch. A more advanced version, the OD800 Pro, includes a solar panel and battery to power the camera and can use Wi-Fi, so it can be installed without cabling.

I'm slightly disappointed the PoE ports are only 10/100 and not gigabit or even 2.5GbE, but that's a choice Ugreen made.

As part of the launch, the OD600 Pro can be had for $159 (MSRP $269) and the OD800 Pro for $199 (MSRP $339), which, given their specifications and build quality, seems a good deal. Hopefully, the devices will also work with an ordinary Ugreen NAS at some point, because they don’t currently.

Having been part of the original DXP NAS launch, HomeAgent has a strong element of things repeating themselves. However, since UGOS Pro has had two or more years of development, the underlying platform is more mature.

Updates for the extra HomeAgent part of this package are arriving often, and things are improving, but with the Kickstarter about to officially begin, and its end a few months away, this solution needs to become much more sophisticated quickly.

Today, it’s another Ugreen work in progress, but UGOS Pro was one not so long ago.

Ugreen HomeAgent HA100: Early verdict

(Image credit: Mark Pickavance)

First, I think it's far too early in the HA100's gestation to fully appreciate what this device might accomplish, since much of the software side of this equation isn’t nearly complete.

That said, when Ugreen first launched the NASync DXP series globally, UGOS Pro looked decidedly primitive, and two and a half years later it is much more sophisticated.

It wouldn’t be unrealistic to expect it to be much more functional by the time this hardware hits retail, and to continue rapid development from there.

Where I’m less on board is the three different platforms, each based on a unique platform and with a different accelerator.

The HA100 is built on a Rockchip RK3588, the HA100 Pro uses the CIX-CP8180(P1), which previously appeared in the Minisforum MS-R1 ARM workstation, and the MA100 is powered by the NVIDIA Jetson Thor T5000.

The problem with this range is that even if the accelerator modules are removable, there isn’t an upgrade path that can take you between these options. Had the HA100 and HA100 Pro had a common platform, that would have made sense, with the differences being in the accelerator module.

But since the accelerator on the HA100 uses a PCIe 3.0 slot, and the one on the HA100 Pro uses a PCIe 4.0 slot, then that was never going to work.

Unfortunately, upgrading forces you to buy an entirely new machine if you want more AI power.

I also have some negative feelings about having a NAS for home use with the potential of a $20,000 price tag. But that version's future depends on a company now utterly dependent on the AI bubble not bursting, which seems, at best, unrealistic.

I’ve been a big supporter of what Ugreen has done with its NAS products; since before they arrived on the scene, things seemed disturbingly cosy between the various NAS brands.

The HomeAgent is their most ambitious leap yet, since it glues two elements together in a way few users are considering until now. People who like NAS understand what it offers and how it's used, whereas AI has unresolved PR issues, a less defined use case, and users who are either negative or, at best, agnostic about AI.

The HA100 is a product Ugreen created to elevate NAS with AI, but it could just as easily drag it down. Only time will tell, but for those who want to ride, the tickets start at $50 for a reservation.

To crystallise my thoughts, there are two ways to think about HomeAgent hardware, and I’m not inclined to favour either. One is that these represent a new hybrid type of appliance where AI and local information come together, creating new efficiencies and fewer dependencies on external services. Or, from this point onwards, all NAS will have a shell of AI logic around them, and the era of dumb NAS will soon be behind us.

Either way, the NAS market needs to buckle up, because this ride could get bumpy.

For more compact computing, see our guide to the best mini PCs you can buy

Categories: Reviews

Sony ULT Tower 7 review: a top-class party speaker with pounding bass

Sun, 10/18/2026 - 12:00
Sony ULT Tower 7 review

The Sony ULT Tower 7 is another strong entry in Sony’s refreshed ULT line, coming in with newly developed, rounded woofers for enhanced deep bass, a swathe of connectivity options for personal or professional use, and customizable lighting for highly immersive listening.

This model is the mid-sized option in Sony’s new ULT Tower lineup, sitting above the Tower 5 and below the ULT Max. It has a seven driver setup, with a single 280mm woofer, two mid-ranges, and four tweeters — including two rear-facing tweeters for Sony’s 360-degree Party Sound. It also has an impressive 420W of power meaning that it can get unbelievably loud — honestly I had to test this one outdoors for the most part, as it shook the foundations of our music testing space to its very core.

How good is the Sony ULT Tower 7? I’ve tested it for hours on end, listening to countless tunes, playing around with the light settings, and assessing its various features and functions available through Sony’s Sound Connect app. Here’s why I think it can compete with some of the very best Bluetooth speakers.

(Image credit: Future)

Let’s start with the most important thing of all: sound quality. The ULT Tower 7 is an excellent-sounding model, providing clarity and insight right across the frequency range, but the clear standout is the bass. It can extend all the way down to 20Hz with confidence, plating up regimented, meaty bass and even rippling sub-bass.

When tuning into First Summer by H.K., the deep, pounding bass was replicated fantastically, sounding just as dynamic, full-bodied and agile as I’d hoped. But still, vocals were textured and clear in the build up, keys and vocals were brilliantly balanced in the mid-range, and higher-pitched drums had a highly energetic, rhythmic quality.

A lot of these positive qualities were mirrored when listening to Rocking Chair by Mr. Scruff. Rich, deep bass was mesmerizing and phenomenally full-sounding, with tonally accurate keys in the mid-range and expressive drums up top adding plenty of color. In addition, guitars had a great sense of width to them, sounding as if they were playing from the corners of our testing room during my indoor assessment.

When blasting tunes from the ULT Tower 7 outdoors, I was astonished by its raw, uncompromised power. It has a maximum power output of 420W, and sound can fill large open spaces confidently, without losing low-end impact or clarity in the mids and treble. One of my colleagues could hear the speaker clearly from the other side of the parking lot in which I was testing the speaker, and let me tell you, this thing is borderline deafening (in a good way) at top volumes.

My only criticism, sonically speaking, is that the 360-degree sound on this speaker is a bit underwhelming. When listening at less favorable angles, like the side and rear of the speaker, the experience was noticeably worse. The overall sound of my tracks just wasn’t as cohesive and balanced as I’d hoped for, and while the larger ULT Tower Max may remedy this issue, the Tower 7 is certainly outclassed for 360-degree sound by rivals like the Marshall Bromley 450.

Still, this is a fantastic sounding speaker that handles dynamics beautifully, and plates up emphatic deep bass, clear mids and highs, and a whole lot of power. The ULT Tower 7’s Sound Field Optimization — which analyzes speaker placement and background noise and accordingly adjusts sound balance across the frequency range — also means that you’re getting consistent quality in any environment.

(Image credit: Future)

Something else I love about the ULT Tower 7 is how easy it is to customize its audio output, thanks to its top-tier EQ options. ULT 1 is best for huge outdoor spaces, and places additional emphasis on deep bass, while ULT 2 provides a more rounded sound that focuses on delivering the most energetic, powerful sound. There’s also a Live mode if you want to replicate live recordings more faithfully, a Flat signature for a more balanced sound, and a custom 10-band equalizer which gives you more granular control over the speaker’s output.

What’s more, this speaker supports the higher-res Bluetooth codec LDAC, enabling you to get a surprisingly detailed, insightful listen from the speaker. If you’re after true lossless audio, you’re in luck too — there’s USB-C, 3.5mm, and RCA connectivity on board. This flexibility is great for professionals who want to hook up a DJ controller via RCA or casual listeners who just want to run with Bluetooth or USB-C. In addition, there’s a pair of mic ports so you can dabble in a bit of karaoke from time to time.

If you’re using the ULT Tower 7 for karaoke, there are some effects available to you in Sony’s Sound Connect app, including a voice changer, echo, and so on. There’s also a party pad for effects like a flanger and sampler, as well as playing drum sounds and robotic noises when DJing. These are easy to access, and more generally, I found the SoundConnect app to be highly user-friendly and reliable — it wasn’t filled with bugs like some rivals’ apps are.

While we’re talking about features, it only seems right to talk about battery life. The ULT Tower 7 can offer up to 30 hours of playback with the LEDs turned off, and for a party speaker in this size-category, that’s very strong indeed. That’s almost double of a rival like the JBL PartyBox 330, and means you can keep the party going well into the early hours. There’s also a Stamina mode for extended playtime, or you can use the speaker while hooked up to the mains.

Let’s move onto design now, an area where the ULT Tower 7 largely excels. It looks fantastic, with eye-catching yet tasteful lighting, an attractive rounded aesthetic, and well-sized, illuminated buttons. Even the ULT logo impressed me because it enables you to adjust volume and cycle through EQ modes swiftly — adding a functional layer here is a very nice touch. While it’s not made of the most premium materials, it’s still built to a great standard, and has a rugged yet refined appearance.

My issue with the overall build, however, is that this speaker is not as practical as it could be. At 50.3lbs / 22.8kg, it’s very heavy, and will take a fair bit of effort to move around. Yes, there are a couple of handles built-in alongside some wheels, but a model this hefty really could’ve done with a pull-out handle for easier transportation. When using the main handle on the reverse side of the speaker, I found the ULT Tower 7 to be awkward to maneuver, something that you won’t find with a lot of the JBL PartyBoxes, for instance.

I also would’ve liked to have seen slightly better waterproofing on the ULT Tower 7. IPX4 means it's safe against splashes of water, and this is essentially the standard for party speakers of this size. But some models, like the Marshall Bromley 450, provide superior IP55 protection, which also shields against dust ingress.

But anyway, let’s get down to the crucial question: is the Sony ULT Tower 7 worth the money? Well, for $649.99 / £499 / AU$799, I think you’re actually getting great quality overall. With imposing, gigantic sound, a flashy look, long battery life, and broad connectivity options, the ULT Tower 7 is more accomplished than a lot of the competition in this price-range.

It’s still a big investment, sure, but pound-for-pound, you’re getting an awful lot of functionality and great audio. If you’re looking to save a bit of cash, then I’d personally go for the Sony ULT Tower 5, but for some added oomph, you really can’t go wrong with the ULT Tower 7.

(Image credit: Future)Sony ULT Tower 7 review: price & release date
  • Priced at $649.99 / £499 / AU$799
  • Released in September 2026

The Sony ULT Tower 7 released in September 2026, and is the mid-sized option in the new Tower lineup, sitting right between the smaller Sony ULT Tower 5 and the giant Sony ULT Tower Max. It comes in at $649.99 / £499 / AU$799, which is a reasonable price for a model with such powerful sound and fleshed-out features.

While the ULT Tower 7 is a fair bit pricier than the ULT Tower 5, it does come with the benefits of rear-facing tweeters for 360-degree sound, added power, and better battery life. It’s also priced pretty well against rivals in this size category, such as the JBL PartyBox 330 and the Marshall Bromley 450 — which you can read more about in the ‘also consider’ section.

Sony ULT Tower 7 review: specs

Weight

50.3lbs / 22.8kg

Dimensions

16.6 x 28 x 13.7 inches / 421 x 710 x 347mm

Connectivity

Bluetooth 5.3, RCA, XLR (in and out), USB-A, USB-C, mic input (6.3mm)

Battery life

30 hours

Speaker drivers

1x 280mm woofer, 2x 120mm mid-range, 4x 50mm tweeters (incl. 2x rear-facing tweeters)

Waterproofing

IPX4

(Image credit: Future)Should I buy the Sony ULT Tower 7?

Attribute

Notes

Score

Features

Versatile connectivity, LDAC support, customizable lighting, and top EQ options.

5/5

Performance

Powerful, regimented bass, clear mids and expressive highs, but 360 sound could be better.

4.5/5

Design

Flashy, striking look with tasteful lighting, but could do with a pull-out handle, waterproofing is OK.

4/5

Value

Good price for the sound and expansive set of features on offer.

4/5

Buy it if…

You want premium party sound
The Sony ULT Tower 7 sounds spectacular, with extremely powerful yet regimented bass, clear mids, and expressive treble. LDAC is on-board for higher-res Bluetooth streaming, or you can use a wired connection for lossless audio, and advanced EQ settings help you get the perfect sound for any genre or environment.

You’re looking for versatile connectivity
The ULT Tower 7 is the ultimate party device with so many connectivity options. You’ve obviously got Bluetooth there, but you can also plug in a DJ controller or turntable via RCA, hook up a device over USB-C, or play music back from a USB drive. Pair that with microphone ports for karaoke shenanigans, and you’ve got everything you need in one box.

Don’t buy it if…

You’re on a budget
If you want a great party speaker but you’re on a budget, then I’d strongly recommend going for the Sony ULT Tower 5 over this model. The ULT Tower 5 is smaller, and skips on the 360 sound, but it provides almighty bass output for its size, and comes in at a tempting price of $449.99 / £349 / AU$549.

You need great 360-degree sound
While the ULT Tower 7 sounds great when facing you, its sound falters a bit from side and rear listening angles, even in spite of the 360 sound tech that Sony has included here. If you want a speaker with no real blind spots, then I’d recommend checking out the Marshall Bromley 450 or 750.

Sony ULT Tower 7 review: also consider

Sony ULT Tower 7

JBL PartyBox 330

Marshall Bromley 450

Price

$649.99 / £499 / AU$799

$629.95 / £579.99 / AU$799

$799.99 / £549.99 / AU$1,079

Weight

50.3lbs / 22.8kg

43.5lbs / 19.8kg

26.9lbs / 12.2kg

Dimensions

16.6 x 28 x 13.7 inches / 421 x 710 x 347mm

13.2 x 26.1 x 14.8 inches / 334 x 663 x 375mm

19.4 x 14.2 x 10.3 inches / 492 x 359.9 x 260.9mm

Connectivity

Bluetooth 5.3, RCA, XLR (in and out), USB-A, USB-C, mic input (6.3mm)

Bluetooth 6.0, 3.5mm (in and out), optical, USB-C, 2x mic inputs (6.3mm)

Bluetooth 5.3, 3.5mm, USB-C, RCA, 2x XLR / 6.35mm combo jacks

Battery life

30 hours

18 hours

40 hours

Speaker drivers

1x 280mm woofer, 2x 120mm mid-range, 4x 50mm tweeters (incl. 2x rear-facing tweeters)

2x 165mm woofers, 2x 25mm tweeters

2x 6.5-inch 40W woofers, 4x 2-inch 6W full-ranges, 2x passive radiators

Waterproofing

IPX4

IPX4

IP55

JBL PartyBox 330
The JBL PartyBox 330 feels like the ULT Tower 7’s main competitor, with a powerful party-ready sound signature, similarly eye-catching LED lighting, and a lot of shared connectivity options. While the PartyBox 330 can’t quite compete in terms of battery life, it has a pull-out handle making it more mobile, and has attractive features like karaoke support and IPX4 waterproofing.

Marshall Bromley 450
Sure, the Marshall Bromley 450 has a high asking price, but it offers the luxurious quality to back that up. It has stunning stage-light inspired LEDs, beautifully detailed and powerful 360-degree sound, and strong connectivity options to boot. Throw in top-tier battery life and solid waterproofing, and you’re looking at one of the best party speakers in this size-class. Read my full Marshall Bromley 450 review.

How I tested the Sony ULT Tower 7

(Image credit: Future)
  • Tested outdoors and at the Future Labs music testing space
  • Mainly streamed tunes over Tidal
  • Tried Party Chain functionality alongside ULT Tower 5

I spent many an hour testing the Sony ULT Tower 7, using it both in our music testing space at Future Labs and outdoors. As well as testing the ULT Tower 7 on its own, I also tried using it alongside the Sony ULT Tower 5 with the Party Chain function.

For the most part, I made use of Bluetooth connectivity to stream tunes over Tidal on my Xiaomi 17 phone, which supports the higher-res LDAC codec. I started by sifting through the TechRadar reference playlist, which features tracks from a wide variety of genres, but I also made sure to bump countless tunes from my personal library as well.

More generally, I’ve spent years testing audio gear here at TechRadar, where I serve as a Senior Reviews Writer. I’ve reviewed everything from wireless headphones like the Sonos Ace Ultra to Dolby Atmos soundbar systems like the JBL Bar 1300MK2. On top of that, I’ve tested a large number of party speakers, including ULT Tower 7 competitors like the Marshall Bromley 450.

Categories: Reviews

Lavazza Tabli review: eco-friendly coffee tablets make quick, delicious espresso

Sun, 10/18/2026 - 09:00
Lavazza Tabli: 30-second review

Coffee pods are out, and tablets are in. Recently, Keurig announced that it was killing off the K-Cup in favor of compressed coffee tablets, but it wasn't the first to the punch. Italian coffee company Lavazza had debuted its own coffee tablets and brewer — the Tabli system — months before, and it's excellent.

The main appeal of Tabli's compressed coffee pucks (called tabs) is their minimal packaging — there's no metal or plastic pod that needs to be recycled after each brew or worse, end up in landfill. Using ground coffee or whole beans is a much less wasteful way to prepare an espresso, but it takes longer, and while it's a fun hobby for some of us, not everyone is interested in getting into the technicalities of brewing a balanced shot.

Each of Lavazza's tabs provides exactly the right amount of coffee for a single serving, so there's no weighing required, and no loose grounds to make a mess of your counter. The whole process is just as clean and simple as using coffee capsules, but without the empty capsules to dispose of at the end. It seems like such a simple idea that it's surprising it hasn't hit the mainstream before — and the results are very impressive.

I've become quite picky during my years reviewing coffee machines, and the Tabli system produces a better-tasting brew than any coffee capsule I've tried. Its app compatibility is a nice touch too, but the ease of use and flavor are what really count — and they're both truly impressive.

(Image credit: Future)Lavazza Tabli: price and availability
  • List price $129 / £199 for the machine alone
  • Available as a bundle that includes a milk frother and coffee tabs
  • Tabs are competitively priced and cheaper than Nespresso

The Tabli coffee machine has a list price of $129 / £199. That's between AU$190 and AU$380, though the Tabli system isn't available in Australia yet. There are also bundles available that include the Lavazza MilkEasy frother and several boxes of Tabs for much less than all the components would cost separately.

Although it's not the cheapest single-serve coffee maker around, bear in mind that unlike some of its rivals, the Tabli system won't sting you with the price of coffee in the longer term. Bosch Tassimo machines, for example, are very cheap, but the pods are some of the priciest around.

A box of 12 Tabs costs £5.89 in the UK, which is about 49p per drink. You can also pick up a multipack of eight boxes for £40, which brings the cost per drink down to 42p.

Things are slightly more expensive in the US, where you can buy a four-pack of boxes for $48, meaning each drink costs $1. That's still very reasonable, though. For comparison, Nespresso Vertuo capsules cost between $1.40 and $1.60 each.

  • Value score: 4.5/5
Lavazza Tabli: specifications

Name

Lavazza Tabli

Type

Tablet coffee maker

Dimensions (W x H x D)

6.5 x 12.9 x 15.4 inches / 16.5 x 32.7 x 39cm

Weight

9.9lbs / 4.5kg

Water reservoir capacity

40.58oz / 1.2 liters

Milk frother

No (but can be bought with a standalone one)

Bars of pressure

15 bar

User profiles

None

Lavazza Tabli: design
  • Sleek, modern aesthetic
  • Minimalist controls
  • Available in three colors

The Lavazza Tabli is a sleek-looking single-serve coffee maker that comes in three colors: graphite black (shown here), sand white, and walnut brown. The top panel has four buttons — power, single shot, double shot, and lungo — and slides back with a smooth motion to reveal the small chamber resembling the bottom of a manual espresso machine’s filter basket, where you’ll place the compressed coffee pod.

There are also warning lights that will alert you if the used tab collection bin has been removed or needs emptying, if the water tank needs filling or hasn’t been properly inserted, and if the machine needs descaling.

(Image credit: Future)

At the very back of the top panel, you’ll notice a flashing blue light, which indicates that the Tabli machine is ready to connect to your phone via Bluetooth. Once it’s connected, the blue light will remain steady — but more on that later.

Unlike some other Lavazza coffee machines, such as the Assoluta, the Tabli doesn’t have its own milk frothing system. However, if you’re a fan of lattes and cappuccinos, the Tabli is available bundled with a standalone frother that works extremely well. My colleague Josh Russell has just finished testing it and will be publishing his review very soon.

The Tabli has a small drip tray that’s just the right height for an espresso cup. If you want to brew into a larger cup or mug, just slide the tray out to make room. Behind the tray, you’ll find the bin into which the Tabli machine drops used coffee tabs. The tabs don’t break apart, keeping mess to a minimum, and are caught in a basket so they’re not left sitting in water.

(Image credit: Future)

Unlike most other coffee makers I’ve tested, the Tabli dispenses dirty water into this bin after rinsing itself rather than expelling it into the drip tray — a tidier solution that keeps the front of the machine clean.

The Tabli’s removable components aren’t dishwasher-safe, but they’re easy to hand-wash, and since this machine doesn’t have an integrated milk frother, there’s minimal maintenance necessary. Just keep the bin and drip tray clean, and follow the descaling instructions periodically.

  • Design score: 5/5
Lavazza Tabli: performance
  • Very simple to use
  • Much better coffee than most single-serve machines
  • App works well, but Google Home connectivity does not

Using the Tabli is just as simple as any ordinary capsule coffee maker: place your chosen tab in the recess under the lid, slide it closed, and pick the type of drink you want. A minute later, your drink will be ready to enjoy.

Coffee tabs are given a strength score on a scale of 1-13, and although there are currently only six types available, if the system proves successful, I'm hopeful Lavazza will increase its range.

There aren't any of the elaborate flavors you get with Nespresso or Tassimo pods; all Tabli tabs are made using nothing but compressed coffee, with no additives, and in my opinion that's no bad thing.

(Image credit: Future)

I've tried three Tabli varieties during testing. Qualità Rossa and Qualità Oro both produced a smooth-tasting, easy-drinking espresso, while the Espresso Ristretto was a little punchier — but not at all bitter.

None of them had the astringent taste I associate with most coffee capsules, and their taste is much more like a drink made with freshly ground coffee beans. The espresso also has a good layer of crema that beats what I've come to expect from single-serve machines.

(Image credit: Future)

The Lavazza Tabli has a smartphone app, which you can use to operate the machine remotely and create custom drinks. After installing the Tabli app, you’ll be prompted to create an account and then connect your coffee maker. This was quick and easy; the app will request permission to search for nearby devices, then locate the Tabli machine without the need to scan any QR codes. The first time I connected to the machine, I was prompted to grant access to my calling history and contacts, but it seems this was a temporary bug. Following an app update, I disconnected from the Tabli machine, then restarted the process, and the prompt did not appear.

The app is nicely designed, and the brewing options are presented front and center. You can choose from the machine's three brewing options or create your own, give it a name, and save it for quick access in the future. You can adjust the volume and temperature of the drink, which is particularly useful if you enjoy an Americano in the morning. Because the machine uses prepared coffee tablets rather than ground beans, if you want to change the taste any more, you’ll need to pick a different type of coffee tab,

FutureFutureFuture

Naturally, the app allows you to order more tabs (as well as other Lavazza products), but you have to scroll down to find the store — it’s not thrust in your face, which is refreshing.

The only issue I encountered involved the coffee maker’s smart home connectivity. The Tabli’s box advertises compatibility with Google Home and Alexa, but during my tests it sadly didn’t work. I was able to connect the Tabli machine to Google Home easily enough, but although Gemini could turn it on, it couldn’t start brewing. Nor could I use voice commands to choose different drinks, as described in the Tabli’s manual.

However, I’m not certain whether this is an issue with the Tabli or with Google Home and Gemini, which aren’t known for their flawless reliability. The Tabli app works exactly as intended, but don't count on being able to brew drinks using voice commands through a smart speaker.

  • Performance score: 4.5/5
Should you buy the Lavazza Tabli?Lavazza Tabli score card

Attribute

Notes

Score

Value

Not the cheapest single-serve machine, but bundles are great value and coffee tabs are very reasonably priced for better value in the long term,

4.5/5

Design

Modern design with clean lines, which is easy to clean and maintain. Simple user interface.

5/5

Performance

Brews delicious coffee and is very easy to use. App works well, though smart home functionality does not.

4.5/5

Buy it if

You hate the waste of coffee capsules

Talbi tabs are made from nothing but ground coffee, and their packaging is almost entirely cardboard, with just a thin layer of plastic over the top of the carton.

You want tasty coffee without mess

Tabli tabs are pre-measured and ground, and they don't leave residue or crumbs on your fingers. They produce a smooth, easy-drinking espresso.

Don't buy it if

You really want to experiment

Tabs are made from pre-measured and ground coffee, so you can't tinker with brew options like you can with whole beans.

You really want smart home connectivity

Google Home didn't play nicely with the Tabli during my tests, though I'm not sure whether that's an issue with Lavazza's software or Google's platform.

How I tested the Lavazza Tabli

I tested the Lavazza Tabli for three weeks, using it instead of my usual manual espresso machine. I used filtered water in its tank and used three different Tabli tab varieties. I experimented with brewing coffee remotely and creating custom drinks using the apps. I connected the coffee maker to Google Home and attempted to operate it using typed and spoken commands. I cleaned the coffee maker at the end of each day following Lavazza's instructions.

First reviewed October 2026

Categories: Reviews

LiberNovo Omni Pro Dynamic Ergonomic Office Chair review

Sun, 10/18/2026 - 04:10

For the last 160 days, I've used this chair as my primary desk chair. I spend about 8 to 9 hours a day, 5 to 6 days a week. If you've followed any of my other reviews, you know that I work across several workspaces, but this one is my primary for this season.

Previously, I had the Lenovo Omni here, and I loved it. There are a few things, like build quality and a few other areas, that, if it were a perfect chair, I wouldn't see problems with. Then Lenovo, without anyone asking, dropped the Omni Pro, and my goodness, this thing answers and checks all those boxes.

I sit in this chair all day long, and I have zero comfort issues. Every time it gets too warm, which it normally does, I can turn on the fan. If it gets way too warm, I can turn on the cooling aspect as well. I need to lean back to look under my desk to relax, and I can do so fully flat.

If I just need a little tension resistance so I can lean back against my desk while sitting and working, I can do that as well. The arms are great, and the adjustability is great. Really, the only thing I wish for is adding more features. I can't find anything wrong with this chair from my testing, making it one of the best office chairs - if you can afford it.

LiberNovo Omni Pro: Price and Availability

You can buy the LiberNovo Omni Pro direct from the company here. List price is $1299 / £1,369. However, at time of review, it's down to $1,109 / £1,191. That's a premium price comparable with Herman Miller and Steelcase seats. Whether that's good value really depends on whether you want a chair with all the bells and whistles, or one with a strong design and engineering heritage.

The Omni Pro chair comes in three different bundles: One with the chair, one with chair and footrest, and the premium which includes chair, footrest, and spare battery for the seat.

(Image credit: Collin Probst // Future )LiberNovo Omni Pro: Unboxing and First Impressions

First of all, I was so excited for this year that I didn't even have time to sign up, but luckily I did. Time: literally less than a minute, start to finish.

LiberNovo spares no expense on the shipping box for this chair and the RMD to make assembly very simple. Yes, there's a unique actuator screw that I need to connect, and I have to do that for other chairs, but even with that, there are only 7 screws total, 1 multi-bit screwdriver, and very clear instructions.

Some chairs have 7 screws just for the base, so does this: 7 screws maximum made me smile.

(Image credit: Collin Probst // Future )LiberNovo Omni Pro: Design and Build Quality

I absolutely love this chair's design. I know it's not for everybody, but I've worked with people who do like the look of this chair. They think it looks futuristic or isn't their style, which I understand, but for me, this pairs beautifully with my Parsons standing desk and all my gear.

In my testing so far, I've had zero durability or reliability issues. The material still looks like new. Well, I don't typically eat at this desk. The few crumbs that have fallen on this chair wipe off easily, too. I don't usually get stuck in the fibers, but if there were crumbs, you could easily knock them out or wipe them off.

The unique-looking bionic flex backrest is almost like it is designed to fit your back, with multiple sections that cover its curvature and adjust and bend as you move the lumbar support in and out with the buttons.

The five allowed recline positions, more than the last chair, are spectacular and well placed. I occasionally use the 105 mode when I need to lock in. I usually set my chair super, super tight with the crank wheel, then lock it at 115 or 125 so that, if I want to push back, I can stop there easily.

Occasionally, if I want, I kick it all the way back to 160 and use the massaging function, which is, of course, yet another spectacular bonus of this chair.

(Image credit: Collin Probst // Future )LiberNovo Omni Pro: In use

I've been sitting in this chair for over 160 days. During that time, I've spent an embarrassing amount of time here.

So far, I'm thrilled with how comfortable it is. Wow, it's breathable, especially as the weather gets warm, and it's supportive. I haven't had any fatigue or pain after a day of sitting in the chair.

Yes, this chair is incredibly cushy, but it also feels like it lives up to the hype. I've only had to charge the battery a few times. I like the backrest features.

I really haven't sent one I like, and I occasionally will use the massaging function. I do, however, use the fan and even the cooling feature regularly. They work great, especially I run hot - if you're the same, it's practically worth the price of admission alone.

(Image credit: Collin Probst // Future )LiberNovo Omni Pro: Final verdict

This chair is genuinely just about everything I wish a chair could have (within reason) and lives up to the hype. It's not just a chaotic rush of ads you've seen; it's also a spectacular seat that I don't see myself swapping out at this desk for a long time.

What's funny is that, since I work in an office space where I have several coworkers and other people that come through, I've had friends, coworkers, and some of my employees try my chair and then immediately turn around and wish that had one.

They find times to come and sit in it while I'm away, of course. Everyone has mentioned how much they love it. So, it's not just me. And I totally understand that feeling.

Collin Probst // Future Collin Probst // Future Collin Probst // Future Collin Probst // Future Collin Probst // Future Collin Probst // Future Collin Probst // Future Collin Probst // Future Collin Probst // Future Collin Probst // Future
Categories: Reviews

EA Sports FC 27 review: come for The Grounds, stay for Career

Sun, 10/18/2026 - 02:00

I’ll say one thing for EA Sports FC 27: it’s not the same game as EA Sports FC 26.

That reads like a compliment — and in some respects, it is — but where previous entries in EA’s long-running football simulator series shipped with minor improvements and equally minor frustrations, FC 27 takes bigger swings that flip between successful, insignificant, and occasionally experience-worsening in their execution.

Review info

Platform reviewed: PS5
Available on: PS5, Xbox Series X|S, Nintendo Switch 2, PC
Release date: Early Access: September 18, 2026 | Full release: September 25, 2026

I wish I could package that sentiment into a neat metaphor (‘a mixed bag’ is too hackneyed), but I can’t — so here’s the Cliffs Notes version of my review:

EA’s shiny new mode, The Grounds, is a hollow imitation of NBA 2K's The City. Ultimate Team is objectively better than it was in FC 26, but is still geared towards card-collecting youngsters and time-rich YouTubers. Career mode is the best it’s ever been, but is oddly prone to breakage by the same new features that make it better. And the overall FC gameplay experience is more challenging than before, but more rewarding as a result.

Still with me? I’ll run through each of those mini-verdicts as you read on, but you get the idea: EA Sports FC 27 is immense fun in parts, dull in others, and a generally quite confusing entry in a series that rarely changes so much from one year to the next. But hey, change is good... right?

Around The Grounds (and out again)

Yes, you can emote in The Grounds (Image credit: Future)

This year’s big new addition to the FC franchise is The Grounds — an ‘open-world’ reimagining of the series’ Clubs mode in which you can compete with friends or randoms in both stadium- and street-based challenges.

I put ‘open-world’ in quotation marks because The Grounds is not so much a free-roam experience as a third-person menu-hopping one. The idea of exploring three “cultural hubs of football” sounds cool, but in reality, these hubs are little more than poorly rendered maps populated by lifeless NPCs (non-player characters), Riddler Trophy-style Drop Kick Targets, and PvP waiting areas.

Each of The Grounds' three districts are connected by a central hub (Image credit: Future)

The game modes available within The Grounds are fun enough — there are traditional 11v11 matches, FIFA Street-style cage matches, and more casual mini-games like the basketball-inspired Bucket Ball — but the ‘open-world’ aspect of the experience adds little beyond longer wait times (because you now have to travel from A to B on foot) and the ability to customize your pro’s wardrobe with licensed clothing. At a price, of course.

There was quite a difference between the appearance of my virtual pro in the avatar creation menu (left) and The Grounds itself (right) (Image credit: Future)

I won’t lie: I did have a good time building my pro and was excited to get out into The Grounds’ virtual world. But once I’d played a handful of matches and completed enough Alex Hunter-ordered errands to buy myself a cool headband (Kylian Mbappé, Paulo Dybala, and Chloe Kelly are the other ‘mentors’), the novelty of this new open-but-actually-closed game mode quickly wore off.

With enough friends in tow, I can imagine The Grounds being a lot of fun, and I don’t criticize EA for trying something genuinely new with FC 27. I’m just not sure The Grounds actually is all that new — it’s more like Clubs with an extremely elaborate menu system.

Players for points

An example of a Streamlined SBC (Image credit: Future)

Opening Ultimate Team (FUT) for the first time in FC 27 feels like walking into a nightclub sober. You’re immediately hit with a barrage of menus, cards, and checklists, which is a frankly disorienting experience until you remember that this is exactly what FUT has been like for several years now.

Still, once you get over the customary nausea, there are some genuinely neat improvements to be found in this year’s edition of EA’s most popular (and profitable) mode.

My favorite addition is Streamlined SBCs (Squad Building Challenges). These are essentially SBCs that swap the starting XI puzzle aspect for a cumulative target score — each player in your club has a value, and you need to exchange enough players to reach that score. You don’t need to worry about formations, positions, or chemistry; instead, Streamlined SBCs are purely a numbers game.

Traditional SBCs are still present and correct in FC 27 — I personally enjoy the challenge of completing the weekly Marquee Matchups SBC — but with Streamlined SBCs, EA has acknowledged that most players aren’t fussed about the puzzling they require. Streamlined SBCs are for those who, understandably, want to snag the SBC reward in as little time as possible. But I appreciate that EA has kept both SBC types in the game.

An example of a Gallery Set (Image credit: Future)

The Gallery is a less meaningful but otherwise harmless addition to FUT. It’s a sticker book-style card-collection feature that tracks every player who’s ever passed through your club and encourages you to curate these players into graded sets. Doing so earns you trinkets and cosmetics (boring), but also Gallery Tokens (less boring), which can be spent on special Hall of FUT players like Loïc Rémy, Adebayo Akinfenwa, and Marouane Fellaini.

Honestly, the Gallery interface is as dizzying to navigate as everything else in FUT, but at least there are tangible player rewards to be gained from taking the time to understand it. I just wish The Gallery were available in the FC 27 Web App, so I could kill time grading cards while on my evening commute, and not while playing FC 27 proper.

Jockey down the line

Auto-tackling is gone in EA Sports FC 27 (Image credit: Future)

It’s a little hard to give a comprehensive verdict on gameplay in FC 27, since EA is tweaking the mechanics all the time, but broadly speaking, the biggest gameplay changes apply to defending and set pieces.

On the former, there’s now less AI assistance, so computer-controlled players on your team (i.e., those you haven’t switched to yet) won’t auto-tackle an opponent, meaning you’ve got to be quicker on your L1/LB draw and smarter with your tackle timing. Jockeying is faster for all players as a result, which also makes the Jockey PlayStyle less overpowered than it was in FC 27.

As someone who’s better at defending than attacking, I’m all for these defensive changes — and the redesigned corner kicks system also puts more importance on defenders in this year’s game.

You can now manually control player positioning in the box when taking a corner (Image credit: Future)

There’s now a longer pause between the taking of a corner kick and the ball’s arrival in the box, and — finally! — you get manual control over player positioning within the box itself. This change means corners are now skill-based rather than luck-based, which is absolutely what they felt like before (even if EA would never say so).

I spend most of my time playing the Authentic gameplay preset in Career mode, which is a different kettle of fish entirely, but for those who play Competitive in FUT, I’d say defending and corner kicks have seen the most noticeable tweaks in FC 27.

Skilled dribblers now ride challenges more effectively, too, but this isn’t such a significant gameplay tweak in my experience — but then again, I haven’t played too many online matches in FUT, which is where you’re likely to come up against the dribble-happy duo of Ousmane Dembélé and Lamine Yamal. I’ll pray for your controller.

The Art of the Deal

The redesigned transfer negotiation interface in EA Sports FC 27 (Image credit: EA)

After fulfilling my testing-time obligations in The Grounds and Ultimate Team, I couldn’t wait to dive into FC 27’s refreshed Career mode. And judging by the view counts on EA’s YouTube Deep Dives for the game (the Career Deep Dive has the most views by a margin of over 1 million ), there’s a good chance that you, too, are more interested in FC 27’s slower-paced managerial simulator than any of its other modes.

The big changes this year apply to transfers. The awkward 3D negotiation scenes have been replaced with FIFA 13-style 2D negotiations, primarily because there’s a lot (and I mean a lot) more negotiating to be done in FC 27.

Previously, you’d offer a sum of money for a player, and if the selling club accepted your price, you’d then negotiate personal terms with the player in question. That was it. Two steps. You could pretty much buy any player for any club if you had the funds to do so.

In FC 27, transfer negotiations are far more realistic — for better and worse.

Now, if you’ve got your eyes on a player, you first have to send an inquiry to determine whether their current club is willing to sell them. The players themselves can also reject your advances if they’re simply not interested in joining your club — regardless of the money you might’ve been prepared to pay them and their club. If you’re rejected, you won’t be told the reasons why, but EA says player decision-making is based on tactical fit, club finances, form, historical rivalries, and long-term club philosophy.

A small sample of my rejected player approaches (Image credit: Future)

And trust me: you will get rejected a lot. Or at least I was while playing as Everton. I couldn’t convince 80% of my transfer targets to even come to the negotiating table, and even when I did get close to signing a target, they’d invariably be stolen at the last minute by a bigger rival (Newcastle, for instance, accepted my offer for Harvey Barnes, but Barnes rejected me to join Chelsea on deadline day. Mercenary!).

Best bit

(Image credit: Future)

Actually being able to score from corners and free-kicks using carefully positioned target men, thanks to the revamped set-piece system.

If you do get to the negotiation stage, there are some nice new ways to structure deals, including with transfer instalments, agent fees, and performance-based bonuses. But I was honestly surprised by how difficult it was to sign players generally.

You can make transfer negotiations easier — they’re set to strict by default when you start a save — but actually, after the initial difficulty shock, I came to enjoy the challenge. Sure, I didn’t get most of my initial transfer targets, but that struggle made my eventual signings — Patrik Schick, Lucas Bergvall, Dan Ballard, and Raúl Asencio on loan — feel more rewarding as a result. It also felt very Everton to be rejected or outbid so frequently.

One big negative, though, is that players are absolute prima donnas in FC 27 Career mode — and their stinking attitudes can sometimes present a real headache.

It’s entirely possible that large groups of players hand in transfer requests at the same time because, as per the new minutes system, a player with 41% or higher stamina expects to play. If they don’t, they get annoyed and request a transfer. That (sort of) makes sense, but it’s particularly problematic if you like to simulate lots of matches, as the computer will only play high-stamina players (think 70% stamina and above).

I’ve seen some streamers complain that the game’s liberal transfer request system has ground their Career saves to a halt, and even if you can appease your unruly squad, it’s not particularly enjoyable to feel like virtual players are managing you, rather than the other way around.

Unexpected Events are back in FC 27, too, and these random scenarios — like Abrupt Retirement or Urgent Family Leave — can similarly disrupt the flow of a season.

I’m all for being tested as a manager, but Career mode feels particularly patience-testing this year — it’s more rewarding in places, sure, but it would be nice to play five straight matches without an injury, a mutiny, or an unmissable family funeral.

Dynamic Overall gives more weight to form, morale, and fitness (Image credit: Future)

Dynamic Overall is a more positive addition to Career mode in FC 27. It’s essentially a dynamic rating system that causes player ratings to fluctuate throughout the season instead of staying fixed. Form, morale, and fitness can all make a player’s rating go up or down, and transfer values are impacted by big changes in rating.

In my Everton save, Tyler Dibling played so well so consistently that his rating went from 74 to 83 in a matter of months — that seems ridiculous on paper, but it’s actually representative of how player values change drastically in real life. Good feature!

Should you play EA Sports FC 27?Play it if...

You've always wanted a more challenging Career mode
The redesigned transfer system has a huge impact on the realism and difficulty of Career mode in FC 27.

You can't resist FUT's shiny player cards
FC 27 makes it easier than ever to unlock special player cards in FUT via Streamlined SBCs, while The Gallery gives you a place to show off your collection.

Don't play it if...

You want an open-world footballing experience
Yes, The Grounds is 'open-world' to some extent, but it's more like an elaborate menu system than an enjoyable place to explore and engage with.

You want an arcade-style Career mode
Career mode is more feature-packed than ever in FC 27. Its difficulty can be lowered, but it's no longer an arcade-style experience.

Accessibility features

(Image credit: Future)

Like its predecessors, EA Sports FC 27 offers a comprehensive suite of accessibility options, including settings for subtitles, button remapping, color blindness, and increasing the size of the player indicator. It also features a dedicated High Contrast Mode for low-vision and cognitively disabled players.

All of these accessibility options can be found in a dedicated Accessibility Settings tab. The game has six difficulty levels — Beginner, Amateur, Semi-Pro, Professional, World Class, Legendary, and Ultimate — and features support for 21 languages.

How I reviewed EA Sports FC 27

I played EA Sports FC 27 for a month, having received the game a few days ahead of its official Early Access release on September 18. During that time, I had access to all modes and features and was able to compete against real-world players who also had early review access to the game.

I played on PS5, using a standard DualSense controller, on a Samsung QN95A Neo QLED 4K TV. I’ve played every EA Sports football title since FIFA 13, and also reviewed FIFA 22, FIFA 23, EA Sports FC 24, EA Sports FC 25, and EA Sports FC 26 for TechRadar Gaming.

First reviewed: October 2025.

Categories: Reviews

Crystal Lake review: Peacock's Friday the 13th prequel series is a must-watch this Halloween

Sat, 10/17/2026 - 13:00

Friday the 13th's prequel series Crystal Lake has arrived on Peacock, with all eight episodes available to watch. International viewers need to wait a little longer, though; check out our Crystal Lake release date schedule for more on that.

Across eight episodes, Crystal Lake explores the origins of Pamela Voorhees, Jason's mother and the original killer in the popular slasher franchise. I've been excited about this for months, as we haven't really had a deep dive into who Pamela is across the original movie series.

Linda Cardellini stars in the leading role, bringing many layers to Pamela. The catalyst for her behavior comes when her young son, Jason (Callum Vinson), drowns at Camp Crystal Lake, where she works as a cook. Grief-stricken, Pamela struggles to cope, leading to increasing paranoia and an eventual spiral into the serial killer we know her as.

Pamela is shown through a very empathetic lens, as a lonely single mother who has lost her only child. She has everything ripped away from her and even so, tries her best to keep it together. But her descent into insanity is inevitable, and even in the first episode, the kills are brutal and shocking.

There's some mystery surrounding Pamela's past that's well worth sticking around for. In Crystal Lake, Pamela feels really well-rounded, and as a huge fan of the original movies, I loved how much care the creators put into fleshing her out.

Crystal Lake was penned by Brad Caleb Kane, who recently worked on HBO Max's excellent IT series Welcome to Derry. I've really been enjoying his adaptations of classic horror media recently, and I hope it continues.

(Image credit: Peacock)

There's also a welcome expansion on another character. Jason's father, Elias, gets a new storyline that ties in well with Pamela's mysterious backstory. Elias is played by Hamish Linklater, who delivers a great performance as a man whose decisions severely influence how Jason turns out and, crucially, how he actually survives his drowning, as we've seen in the original Friday the 13th movie.

Crystal Lake adds a lot of new lore to the franchise, but it does feel like it's stretched out in places. These pacing issues didn't affect my enjoyment of the series too much, but even a six-episode run would've felt tighter, in my opinion.

I hope many Friday the 13th fans share my opinions about Crystal Lake, particularly when it comes to the characters, and how they've been given genuinely interesting backstories and expansions beyond the original movies. This is the kind of prequel that feels like it was made by someone who really cares about the source material.

There are a lot of nods to the movies, such as seeing the killer's point of view, that chilling score, and a title sequence that will make anyone feel nostalgic for the era of 80s slasher films. It's a well-crafted series with great editing, something that fits right in with the abundance of Friday the 13th stories.

In my opinion, this is the perfect series to watch over Halloween, or indeed sooner if you're feeling impatient. It's gripping and binge-worthy, giving horror fans both familiarity and some new material for them to get excited about.

Categories: Reviews

I tested the Sony Bravia 9 II for weeks. It’s the best mini-LED TV of 2026, and a ‘showcase for what RGB can do’ — and it takes the fight to OLED

Sat, 10/17/2026 - 13:00
Sony Bravia 9 II review: Two-minute review

RGB TVs, called ‘True RGB LED’ here by Sony, are still in their infancy, with RGB regularly touted as the technology that will topple OLED at the top of the TV mountain — and of the few I’ve tested so far, the Sony Bravia 9 II is the one that comes closest to succeeding. It takes everything I liked about the step-down Sony Bravia 7 II (also True RGB LED) and levels it up, including picture quality, sound and gaming performance, all of which are up there with the best TVs of 2026.

The Bravia 9 II’s picture quality is its crowning achievement. It delivers vibrant yet accurate-looking colors which make movies pop, fluid motion that’s great for sports and, with its anti-glare matte screen, it’s perfect for bright-room viewing too. Its most impressive elements, though, are its contrast and reproduction of dark tones, which are arguably the best I’ve seen from a backlit TV — if this is what RGB is capable of now, then expect it to rival the very best OLED TVs. While viewing angles could still be better, and some blooming exists, this is an excellent backlit TV.

The Bravia 9 II’s built-in sound is strong overall. Its speakers deliver remarkable detail, with a good sense of space that fills a room more than most TV speakers, and it delivers clear speech. I did find its bass and low-end lacking however, and it didn’t deliver the power I expected; so while the speakers are good enough that you don’t necessarily need one of the best soundbars, cinephiles may want to invest.

Gaming is another of the Bravia 9 II’s strong suits. It comes with a comprehensive set of features, (though sadly only has two HDMI 2.1 ports out of its four HDMIs available), and delivers great overall performance that handles even the fastest-paced games well.

The Bravia 9 II’s major downside is its price. At $3,599 / £3,499 / AU$5,995 for the 65-inch model I tested, this is one of the most expensive TVs on the market, at around a full $500 / £500 / AU$750-1000 dollars more than both rival OLEDs and other RGB TVs. And prices are unlikely to drop, as Sony doesn’t often discount its TVs, so if you’re looking for the best value you may want to go elsewhere, despite this TV’s excellent performance.

Sony Bravia 9 II review: Prices & release date

The Bravia 9 II's colors are one its real strengths (Image credit: Future)
  • Release date: August 2026
  • 65-inch: $3,599.99 / £3,499.99 / AU$5,995
  • 75-inch: $4,599.99 / £4,299.99 / AU$7,495
  • 85-inch: $6,499.99 / £5,499.99 / AU$9,995
  • 115-inch: $30,999.99 / £22,999.99 / AU$44,995

The Bravia 9 II is Sony’s flagship RGB LED TV for 2026, sitting above the Sony Bravia 7 II. It’s available in 65, 75, 85 and 115-inch sizes. The 65-inch model I tested launched for $3,599.99 / £3,499.99 / AU$5,995, putting it at the premium end of the market.

At the time of writing (October 2026), the Bravia 9 II’s prices remain unchanged in the US and UK, but in Australia prices have dropped across the 65-85-inch sizes, with the 65-inch now available for AU$4,795.

Sony Bravia 9 II review: Specs

Screen type:

RGB LED

Refresh rate:

120Hz

HDR support:

Dolby Vision, HDR10, HLG

Audio support:

Dolby Atmos, DTS:X

Smart TV:

Google TV

HDMI ports:

4 (2x HDMI 2.1)

Built-in tuner:

ATSC 1.0 (US)

Sony Bravia 9 II review: Benchmark results @import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap');@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap');#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper *, #fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper *:before, #fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper *:after, #fv-chart-1791989772096-3jrkl1tdu-slideshow *, #fv-chart-1791989772096-3jrkl1tdu-slideshow *:before, #fv-chart-1791989772096-3jrkl1tdu-slideshow *:after {box-sizing: border-box !important; margin: 0; padding: 0; border: 0;font-size: 100%; font: inherit; vertical-align: baseline;}#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper, #fv-chart-1791989772096-3jrkl1tdu-slideshow { font-family: 'Open Sans', sans-serif !important; }#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper {position: relative !important; overflow: visible !important;--riv-primary: #2E6E93;}#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper .fv-inner-wrapper {color: #1F2937 !important; background-color: #ffffff !important;padding: 1.5rem 1.5rem 2rem !important; border-radius: 0.5rem !important;box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1) !important;margin: 1rem 0 !important; display: flex !important; flex-direction: column !important;overflow: hidden !important;}#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper .fv-inner-wrapper.fv-no-header.fv-is-image-compare {padding-top: 0 !important;}#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper.fv-full-bleed {width: 100vw !important;margin-left: calc(50% - 50vw) !important;}body {overflow-x: clip !important;}#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper.fv-full-bleed .fv-inner-wrapper {padding: 0 !important;border-radius: 0 !important;box-shadow: none !important;margin: 0 !important;background-color: transparent !important;}#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper .fv-inner-wrapper.fv-is-shop-the-look {padding: 0 !important;border-radius: 0 !important;box-shadow: none !important;margin: 0 !important;background-color: transparent !important;}#fv-chart-1791989772096-3jrkl1tdu-slideshow {position: relative !important;width: 100% !important;margin: 1rem 0 !important;--riv-primary: #2E6E93;}#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-slides-wrapper {position: relative !important;width: 100% !important;}#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-slide {width: 100% !important;animation: fv-fade-in 0.3s ease-in-out;}@keyframes fv-fade-in {from { opacity: 0; }to { opacity: 1; }}#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-slideshow-nav-row {position: relative !important;display: flex !important;justify-content: space-between !important;align-items: center !important;padding: 0 0 16px 0 !important;width: 100% !important;z-index: 20 !important;}#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-nav-btn {background-color: var(--riv-primary) !important;color: #ffffff !important;border: none !important;border-radius: 4px !important;padding: 8px 16px !important;font-size: 14px !important;font-weight: 700 !important;cursor: pointer !important;display: flex !important;align-items: center !important;justify-content: center !important;gap: 6px !important;transition: opacity 0.2s, background-color 0.2s !important;height: 36px !important;text-transform: none !important;box-shadow: 0 1px 2px rgba(0,0,0,0.1) !important;}#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-nav-btn svg {width: 18px !important;height: 18px !important;stroke-width: 3px !important;filter: none !important;}#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-nav-btn:hover {opacity: 0.9 !important;transform: translateY(-1px) !important;}#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-nav-btn.disabled {background-color: #E5E7EB !important;color: #9CA3AF !important;cursor: default !important;pointer-events: none !important;box-shadow: none !important;}#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-slide-counter {font-family: 'Poppins', sans-serif !important;font-size: 14px !important;font-weight: 600 !important;color: #374151 !important;text-align: center !important;min-width: 40px !important;background-color: rgba(255,255,255,0.8) !important;padding: 2px 8px !important;border-radius: 10px !important;}#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-slideshow-select {position: absolute !important;top: 10px !important;right: 10px !important;z-index: 20 !important;appearance: none !important;-webkit-appearance: none !important;-moz-appearance: none !important;background-color: white !important;border: 1px solid #d1d5db !important;color: #1F2937 !important;font-family: 'Open Sans', sans-serif !important;font-size: 14px !important;font-weight: 600 !important;padding: 6px 32px 6px 12px !important;border-radius: 4px !important;cursor: pointer !important;box-shadow: 0 1px 2px rgba(0,0,0,0.05) !important;background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e") !important;background-position: right 0.5rem center !important;background-repeat: no-repeat !important;background-size: 1.5em 1.5em !important;}#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-slideshow-select:focus {outline: 2px solid #2E6E93 !important;border-color: #2E6E93 !important;}#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper .fv-chart-title {font-weight: bold !important;text-align: center !important;margin-bottom: 0.5rem !important;color: var(--riv-primary) !important;font-size: 20px !important;line-height: 1.2 !important;font-family: 'Open Sans', sans-serif !important;text-transform: none !important;white-space: normal !important;overflow-wrap: break-word !important;padding: 0 20px !important;}#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper .fv-chart-subhead {font-size: 18px !important;font-weight: 500 !important;text-align: center !important;margin-bottom: 2rem !important;color: #374151 !important;line-height: 1.7 !important;font-family: 'Open Sans', sans-serif !important;display: block !important;text-transform: none !important;padding: 0 20px !important;}#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper .rv-chart-caption { font-size: 15px !important; color: #374151 !important; text-align: center !important; font-style: normal !important; font-weight: normal !important; line-height: 1.7 !important; font-family: 'Open Sans', sans-serif !important; display: block !important; }#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper .fv-versus-chart { display: flex; flex-direction: column; width: 100%; margin-top: 1rem; }#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper .fv-versus-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding: 0 1rem; }#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper .fv-versus-select-wrapper { flex: 1; min-width: 0; }#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper .fv-versus-select-wrapper.fv-left { text-align: center; padding-right: 1rem; }#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper .fv-versus-select-wrapper.fv-right { text-align: center; padding-left: 1rem; }#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper .fv-versus-select-container { position: relative; display: inline-block; max-width: 100%; width: 100%; }#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper .fv-versus-chevron { position: absolute; top: 50%; transform: translateY(-50%); pointer-events: none; width: 16px; height: 16px; flex-shrink: 0; }#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper .fv-versus-select-wrapper.fv-left .fv-versus-chevron { right: 0; }#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper .fv-versus-select-wrapper.fv-right .fv-versus-chevron { right: 0; }#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper .fv-versus-select { background: transparent; border: none; border-bottom: 2px solid; font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; padding: 0.25rem 0; cursor: pointer; outline: none; appearance: none; -webkit-appearance: none; -moz-appearance: none; max-width: 100%; width: 100%; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; }#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper .fv-versus-select.fv-select-left { text-align: center; direction: ltr; padding-right: 1.25rem; }#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper .fv-versus-select.fv-select-right { text-align: center; padding-right: 1.25rem; }#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper .fv-versus-select option { font-family: 'Open Sans', sans-serif; font-weight: 400; font-size: 14px; color: #374151; direction: ltr; text-align: left; }#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper .fv-versus-vs { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; color: #374151; letter-spacing: 0.1em; padding: 0 1rem; }#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper .fv-versus-body { display: flex; flex-direction: column; gap: 1.5rem; }#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper .fv-versus-row { position: relative; height: auto; padding-top: 20px; margin-bottom: 0.25rem; display: block; }#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper .fv-versus-bar-container { position: relative; height: 32px; display: flex; align-items: center; }#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper .fv-versus-bar-left-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-end; align-items: center; }#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper .fv-versus-bar-right-wrapper { flex: 1; height: 100%; display: flex; justify-content: flex-start; align-items: center; }#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper .fv-versus-bar { height: 32px; width: var(--target-width); transition: width 0.8s ease-out; animation: fv-grow-max-width 0.8s ease-out forwards; display: flex; align-items: center; overflow: hidden; color: #ffffff; }#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper .fv-versus-bar-left { border-radius: 4px 0 0 4px; justify-content: flex-end; padding: 0 8px; }#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper .fv-versus-bar-right { border-radius: 0 4px 4px 0; justify-content: flex-start; padding: 0 8px; }@keyframes fv-grow-max-width {from { max-width: 0; }to { max-width: 100%; }}#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper .fv-versus-center-line { position: absolute; left: 50%; top: 0; bottom: 0; width: 4px; background-color: #ffffff; transform: translateX(-50%); z-index: 1; }#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper .fv-inside-left { white-space: nowrap; flex-shrink: 0; }#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper .fv-inside-right { white-space: nowrap; flex-shrink: 0; }#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper .fv-versus-val-text { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 14px; }#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper .fv-versus-pct-diff { font-size: 12px; font-weight: 600; }#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper .fv-versus-label { position: absolute; left: 50%; transform: translateX(-50%); top: 0; background-color: transparent; border: none; box-shadow: none; padding: 0; font-family: 'Open Sans', sans-serif; font-weight: 700; font-size: 14px; color: #374151; white-space: nowrap; }#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper .sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; }#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper .fv-bottom-bar { display: flex !important; flex-direction: column !important; align-items: center !important; margin-top: 0.5rem !important; gap: 1rem !important; }#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper .fv-footer-content { text-align: center !important; width: 100% !important; }#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper .fv-logo {display: block !important;margin: 0 auto !important;width: 120px !important;min-width: 120px !important;max-width: 120px !important;height: auto !important;object-fit: contain !important;flex-shrink: 0 !important;}#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper .fv-dropdown-wrapper { text-align: center !important; margin-bottom: 16px !important; margin-top: 0 !important; }#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper .fv-dropdown-title-container { position: relative !important; display: inline-block !important; max-width: 100% !important; }#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper .fv-dropdown-title {appearance: none !important;-webkit-appearance: none !important;-moz-appearance: none !important;background: transparent !important;border: none !important;font-size: 18px !important;font-weight: 600 !important;color: var(--riv-primary) !important;padding-right: 28px !important;padding-left: 10px !important;cursor: pointer !important;text-align: center !important;text-align-last: center !important;width: auto !important;max-width: 100% !important;font-family: 'Open Sans', sans-serif !important;line-height: 1.3 !important;margin: 0 !important;text-overflow: ellipsis !important;overflow: hidden !important;white-space: nowrap !important;}#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper .fv-dropdown-title:focus { outline: none !important; }#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper .fv-dropdown-title::-ms-expand { display: none !important; }#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper .fv-dropdown-chevron {position: absolute !important;right: 0 !important;top: 50% !important;transform: translateY(-50%) !important;pointer-events: none !important;color: var(--riv-primary) !important;display: flex !important;align-items: center !important;}#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper .fv-carousel-title-controls { display: flex !important; justify-content: space-between !important; align-items: center !important; margin-bottom: 16px !important; width: 100% !important; gap: 12px !important; }#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper .fv-carousel-nav-btn {background: transparent !important; border: 1px solid #d1d5db !important; border-radius: 6px !important; padding: 6px 10px !important;cursor: pointer !important; font-size: 14px !important; color: #374151 !important; display: flex !important; align-items: center !important; gap: 4px !important; font-family: 'Open Sans', sans-serif !important;}#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper .fv-carousel-nav-btn:hover { border-color: #9ca3af !important; }#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper .fv-carousel-counter { font-size: 14px !important; color: #374151 !important; text-align: center !important; margin-top: 1rem !important; }#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper .fv-legend { display: flex !important; justify-content: center !important; flex-wrap: wrap !important; gap: 8px 16px !important; margin: 0 !important; padding: 0 !important; margin-top: 1rem !important; }#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper .fv-legend-item { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 14px !important; color: #374151 !important; }#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper .fv-legend-color { width: 12px !important; height: 12px !important; border-radius: 3px !important; }#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper .fv-multi-value-legend {display: flex !important;justify-content: center !important;flex-wrap: wrap !important;gap: 12px 24px !important;margin-bottom: 1.5rem !important;padding: 0 !important;}#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper .fv-multi-legend-item { display: flex !important; align-items: center !important; gap: 8px !important; font-size: 14px !important; color: #374151 !important; font-weight: 500 !important; }#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper .fv-multi-legend-swatch { width: 16px !important; height: 16px !important; border-radius: 3px !important; }#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper .fv-benchmark-group { margin-bottom: 1rem !important; }#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper .fv-benchmark-title {font-size: 18px !important; font-weight: 600 !important; margin-bottom: 16px !important; margin-top: 0 !important; padding: 0 !important;text-align: center !important; color: var(--riv-primary) !important; flex: 1 !important; min-width: 0 !important;font-family: 'Open Sans', sans-serif !important; line-height: 1.3 !important;text-transform: none !important;white-space: normal !important;overflow-wrap: break-word !important;word-wrap: break-word !important;max-width: 100% !important;}#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper .fv-bar-row, #fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper .fv-stacked-product { display: flex !important; align-items: center !important; width: 100% !important; margin-bottom: 0.75rem !important; position: relative !important; }#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper .fv-bar-label { width: 150px !important; flex-shrink: 0 !important; font-size: 14px !important; color: #374151 !important; padding-right: 10px !important; text-align: right !important; font-weight: 500 !important; display: block !important; }#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper .fv-bar-container { flex-grow: 1 !important; background-color: #E5E7EB !important; border-radius: 4px !important; min-height: 25px !important; border: 1px solid #D1D5DB !important; position: relative !important; display: flex !important; align-items: center !important; }#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper .fv-bar-commentary-inline { display: none !important; position: absolute !important; left: 150px !important; top: 0 !important; bottom: 0 !important; right: 0 !important; width: calc(100% - 150px) !important; margin: 0 !important; padding: 0 8px !important; font-size: 13px !important; color: #fff !important; background: rgba(0,0,0,0.8) !important; border-radius: 4px !important; line-height: 1.4 !important; font-weight: normal !important; text-transform: none !important; word-wrap: break-word !important; z-index: 10 !important; align-items: center !important; overflow-y: auto !important; }#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper.preview-wrapper .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper.preview-wrapper .fv-bar-commentary-inline:focus, #fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper.preview-wrapper .fv-bar-commentary-inline:focus-within, #fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline, #fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper.mobile-view .fv-bar-commentary-inline:focus, #fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper.mobile-view .fv-bar-commentary-inline:focus-within { display: flex !important; }#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper .fv-bar { height: 100% !important; border-radius: 3px !important; display: flex !important; align-items: center !important; transition: opacity 0.2s ease, width 0.8s ease-out !important; min-height: 23px !important; }#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper .fv-bar:hover { opacity: 0.8 !important; }#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper .fv-bar-inner-content { display: flex !important; justify-content: space-between !important; align-items: center !important; width: 100% !important; height: 100% !important; padding: 0 8px !important; font-size: 14px !important; font-weight: bold !important; overflow: hidden !important; }#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper .fv-bar-inner-label { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-right: 8px !important; }#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper .fv-bar-inner-value { flex-shrink: 0 !important; }#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper .fv-bar-value-outside { padding-left: 8px !important; font-size: 14px !important; font-weight: bold !important; color: #374151 !important; white-space: nowrap !important; }#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper .fv-bar-label.fv-primary-product { font-weight: bold !important; color: var(--riv-primary) !important; }#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper .fv-multi-bar-container { flex-direction: column !important; padding: 4px !important; align-items: stretch !important; gap: 4px !important; height: auto !important; }#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper .fv-multi-bar-item { display: flex !important; align-items: center !important; height: 25px !important; width: 100% !important; }#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper .fv-stacked-bar { display: flex !important; overflow: hidden !important; }#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper .fv-stacked-segment { height: 100% !important; display: flex !important; align-items: center !important; justify-content: flex-end !important; padding-right: 8px !important; border-right: 1px solid rgba(255,255,255,0.3) !important; }#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper .fv-stacked-segment:last-child { border-right: none !important; }#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper .fv-segment-value { font-size: 14px !important; font-weight: bold !important; }#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper .fv-grouped-bar-product { display: flex !important; flex-direction: column !important; width: 100% !important; margin-bottom: 1.25rem !important; }#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper .fv-grouped-product-title-wrapper { padding-left: 150px !important; }#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper .fv-grouped-product-title { width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.5rem !important; font-weight: 700 !important; font-size: 14px !important; color: #374151 !important; text-transform: none !important; }#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper .fv-bar-cluster { width: 100% !important; flex-grow: 1 !important; display: flex !important; flex-direction: column !important; }#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper .fv-bar-cluster .fv-bar-row { margin-bottom: 3px !important; }#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper .fv-bar-cluster .fv-bar-container { height: 20px !important; }#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper .riv-grid line {stroke: #D1D5DB !important;stroke-dasharray: 3 3 !important;}#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper .fv-x-axis-wrapper { display: flex !important; width: 100% !important; margin-top: 0.5rem !important; }#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper .fv-x-axis-label-space { width: 150px !important; padding-right: 10px !important; flex-shrink: 0 !important; }#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper .fv-x-axis-chart-space { flex-grow: 1 !important; padding-right: 8px !important; }#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper .fv-x-axis-wrapper.fv-grouped-x-axis { margin-left: 0 !important; }#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper .fv-x-axis-line { border-top: 1px solid #D1D5DB !important; }#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper .fv-x-axis-ticks { display: flex !important; justify-content: space-between !important; padding-top: 4px !important; font-size: 13px !important; color: #374151 !important; }#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper .fv-x-axis-ticks span { position: relative !important; }#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper .fv-x-axis-ticks span::before { content: '' !important; position: absolute !important; top: -6px !important; left: 50% !important; transform: translateX(-50%) !important; width: 2px !important; height: 4px !important; background-color: #D1D5DB !important; border-radius: 1px !important; }#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper .fv-x-axis-unit { text-align: center !important; font-size: 14px !important; color: #374151 !important; margin-top: 8px !important; display: block !important; }#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper .fv-x-axis-title { text-align: center !important; font-size: 15px !important; color: #374151 !important; margin-top: 8px !important; margin-bottom: 16px !important; line-height: 1.5 !important; padding: 0 1rem !important; display: block !important; font-weight: bold !important; }#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper .fv-y-axis-title {font-size: 15px !important;color: #374151 !important;line-height: 1.5 !important;text-align: left !important;padding-left: 5.83% !important;margin-bottom: 4px !important;display: block !important;font-weight: bold !important;}#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper.mobile-view .fv-pie-container,#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper.labels-on-top .fv-pie-container {flex-direction: column !important; gap: 1rem !important;}#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper.mobile-view .fv-grouped-product-title-wrapper,#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper.labels-on-top .fv-grouped-product-title-wrapper {padding-left: 0 !important;}#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper.mobile-view .fv-bar-row,#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper.mobile-view .fv-stacked-product,#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper.mobile-view .fv-grouped-bar-product,#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper.labels-on-top .fv-bar-row,#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper.labels-on-top .fv-stacked-product,#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper.labels-on-top .fv-grouped-bar-product {flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;}#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper.mobile-view .fv-bar-label:not(.fv-grouped-product-title),#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper.labels-on-top .fv-bar-label:not(.fv-grouped-product-title) {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper.mobile-view .fv-bar-label,#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper.mobile-view .fv-grouped-product-title,#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper.labels-on-top .fv-bar-label,#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper.labels-on-top .fv-grouped-product-title {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper.mobile-view .fv-bar-container,#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper.mobile-view .fv-bar-cluster,#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper.labels-on-top .fv-bar-container,#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper.labels-on-top .fv-bar-cluster {width: 100% !important;}#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper.mobile-view .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper.mobile-view .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper.mobile-view .fv-bar-row .fv-bar-commentary-inline:focus-within,#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper.labels-on-top .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper.labels-on-top .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper.labels-on-top .fv-bar-row .fv-bar-commentary-inline:focus-within {position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important;}#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper.mobile-view .fv-x-axis-wrapper,#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper.labels-on-top .fv-x-axis-wrapper {margin-left: 0 !important;}#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper.mobile-view .fv-x-axis-label-space,#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper.labels-on-top .fv-x-axis-label-space {display: none !important;}#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper.mobile-view .fv-x-axis-chart-space,#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper.labels-on-top .fv-x-axis-chart-space {padding-right: 0 !important;}#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper.mobile-view .fv-benchmark-title,#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper.labels-on-top .fv-benchmark-title {font-size: 16px !important;}#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper.mobile-view .fv-dropdown-title,#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper.labels-on-top .fv-dropdown-title {font-size: 16px !important;}#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper.mobile-view .fv-carousel-nav-btn,#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper.labels-on-top .fv-carousel-nav-btn {padding: 8px 12px !important; font-size: 14px !important;}#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper.mobile-view .fv-chart-title,#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper.labels-on-top .fv-chart-title {padding: 0 8px !important;}#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper.mobile-view .fv-chart-subhead,#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper.labels-on-top .fv-chart-subhead {padding: 0 8px !important;}#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper.mobile-view .fv-versus-header,#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper.labels-on-top .fv-versus-header {flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;}#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper.mobile-view .fv-versus-select-wrapper,#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper.labels-on-top .fv-versus-select-wrapper {flex: 1 !important; min-width: 0 !important; width: 100% !important;}#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper.mobile-view .fv-versus-select-wrapper.fv-left,#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper.labels-on-top .fv-versus-select-wrapper.fv-left {text-align: center !important; padding-right: 0 !important;}#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper.mobile-view .fv-versus-select-wrapper.fv-right,#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper.labels-on-top .fv-versus-select-wrapper.fv-right {text-align: center !important; padding-left: 0 !important;}#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper.mobile-view .fv-versus-select.fv-select-left,#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper.labels-on-top .fv-versus-select.fv-select-left {text-align: center !important;}#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper.mobile-view .fv-versus-select.fv-select-right,#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper.labels-on-top .fv-versus-select.fv-select-right {text-align: center !important;}#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper.mobile-view .fv-versus-vs,#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper.labels-on-top .fv-versus-vs {text-align: center !important; padding: 0.25rem 0 !important;}#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper.mobile-view .fv-versus-select-container,#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper.labels-on-top .fv-versus-select-container {max-width: 100% !important; width: 100% !important;}#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper.mobile-view .fv-versus-select,#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper.labels-on-top .fv-versus-select {font-size: 14px !important; width: 100% !important;}#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper.mobile-view .fv-stl-shop-all-btn,#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper.labels-on-top .fv-stl-shop-all-btn {bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important;}#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper.mobile-view .fv-stl-shop-all-logo,#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper.mobile-view .fv-stl-shop-all-icon,#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper.labels-on-top .fv-stl-shop-all-logo,#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper.labels-on-top .fv-stl-shop-all-icon {width: 2rem !important; height: 2rem !important;}#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper.mobile-view .fv-stl-shop-all-icon svg,#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper.labels-on-top .fv-stl-shop-all-icon svg {width: 14px !important; height: 14px !important;}#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper.mobile-view .fv-bar-commentary-inline,#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper.labels-on-top .fv-bar-commentary-inline {display: block !important; margin-left: 0 !important; width: 100% !important;}#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper.mobile-view .fv-y-axis-title { padding-left: 5% !important; }#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper.mobile-view.fv-contains-line-chart .fv-footer-content {margin-left: -1rem !important;margin-right: -1rem !important;}@media (max-width: 599px) {#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper .fv-pie-container {flex-direction: column !important; gap: 1rem !important;}#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper .fv-grouped-product-title-wrapper {padding-left: 0 !important;}#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper .fv-bar-row,#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper .fv-stacked-product,#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper .fv-grouped-bar-product {flex-direction: column !important; align-items: flex-start !important; margin-bottom: 1.25rem !important;}#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper .fv-bar-label:not(.fv-grouped-product-title) {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper .fv-bar-label,#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper .fv-grouped-product-title {width: 100% !important; text-align: left !important; padding-right: 0 !important; margin-bottom: 0.25rem !important; font-size: 14px !important; font-weight: 700 !important;}#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper .fv-bar-container,#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper .fv-bar-cluster {width: 100% !important;}#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper .fv-bar-row .fv-bar-commentary-inline,#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper .fv-bar-row:hover .fv-bar-commentary-inline,#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper .fv-bar-row .fv-bar-commentary-inline:focus,#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper .fv-bar-row .fv-bar-commentary-inline:focus-within {position: static !important; display: block !important; width: 100% !important; margin: 4px 0 0 0 !important; padding: 0 !important; background: transparent !important; color: #6B7280 !important; font-size: 12px !important;}#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper .fv-x-axis-wrapper {margin-left: 0 !important;}#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper .fv-x-axis-label-space {display: none !important;}#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper .fv-x-axis-chart-space {padding-right: 0 !important;}#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper .fv-benchmark-title {font-size: 16px !important;}#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper .fv-dropdown-title {font-size: 16px !important;}#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper .fv-carousel-nav-btn {padding: 8px 12px !important; font-size: 14px !important;}#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper .fv-chart-title {padding: 0 8px !important;}#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper .fv-chart-subhead {padding: 0 8px !important;}#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper .fv-versus-header {flex-direction: column !important; align-items: center !important; padding: 0 !important; gap: 0.5rem !important;}#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper .fv-versus-select-wrapper {flex: 1 !important; min-width: 0 !important; width: 100% !important;}#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper .fv-versus-select-wrapper.fv-left {text-align: center !important; padding-right: 0 !important;}#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper .fv-versus-select-wrapper.fv-right {text-align: center !important; padding-left: 0 !important;}#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper .fv-versus-select.fv-select-left {text-align: center !important;}#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper .fv-versus-select.fv-select-right {text-align: center !important;}#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper .fv-versus-vs {text-align: center !important; padding: 0.25rem 0 !important;}#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper .fv-versus-select-container {max-width: 100% !important; width: 100% !important;}#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper .fv-versus-select {font-size: 14px !important; width: 100% !important;}#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper .fv-stl-shop-all-btn {bottom: 0.5rem !important; right: 0.5rem !important; height: 2rem !important; font-size: 0.75rem !important; padding: 0 0.75rem 0 2.5rem !important; max-width: calc(100% - 1rem) !important;}#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper .fv-stl-shop-all-logo,#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper .fv-stl-shop-all-icon {width: 2rem !important; height: 2rem !important;}#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper .fv-stl-shop-all-icon svg {width: 14px !important; height: 14px !important;}#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper .fv-bar-commentary-inline {display: block !important; margin-left: 0 !important; width: 100% !important;}#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper .fv-y-axis-title { padding-left: 5% !important; }#fv-chart-1791989772096-3jrkl1tdu-slideshow .fv-chart-wrapper.fv-contains-line-chart .fv-footer-content {margin-left: -1rem !important;margin-right: -1rem !important;}}[{"@context": "https://schema.org","@type": "Dataset","name": "Brightness Measurements","description": "Taken using a colorimeter and test pattern generator. Click the test name for measurements and select the chosen test from the dropdown menu.","creator": {"@type": "Organization","name": "TechRadar","logo": "https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png"},"isAccessibleForFree": true,"dateCreated": "2026-10-14T14:56:12.098Z","citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized","keywords": ["Sony Bravia 9 II","Samsung R95H","Sony Bravia 7 II","HDR Filmmaker Mode (10% window)","HDR Standard Mode (10% window)","SDR Filmmaker Mode (10% window)","SDR Standard Mode (10% window)","HDR Filmmaker Mode (Fullscreen)","HDR Standard Mode (Fullscreen)","SDR Filmmaker Mode (Fullscreen)","SDR Standard Mode (Fullscreen)","HDR Filmmaker mode","HDR Standard","SDR Filmmaker Mode","SDR Standard","benchmark","comparison","performance","review","TechRadar"],"measurementTechnique": "Performance Benchmarking","variableMeasured": [{"@type": "PropertyValue","name": "Sony Bravia 9 II – HDR Filmmaker Mode (10% window)","value": 4416,"unitText": "nits"},{"@type": "PropertyValue","name": "Sony Bravia 9 II – HDR Filmmaker Mode (Fullscreen)","value": 974,"unitText": "nits"},{"@type": "PropertyValue","name": "Samsung R95H – HDR Filmmaker Mode (10% window)","value": 1977,"unitText": "nits"},{"@type": "PropertyValue","name": "Samsung R95H – HDR Filmmaker Mode (Fullscreen)","value": 612,"unitText": "nits"},{"@type": "PropertyValue","name": "Sony Bravia 7 II – HDR Filmmaker Mode (10% window)","value": 1114,"unitText": "nits"},{"@type": "PropertyValue","name": "Sony Bravia 7 II – HDR Filmmaker Mode (Fullscreen)","value": 829,"unitText": "nits"},{"@type": "PropertyValue","name": "Sony Bravia 9 II – HDR Standard Mode (10% window)","value": 4044,"unitText": "nits"},{"@type": "PropertyValue","name": "Sony Bravia 9 II – HDR Standard Mode (Fullscreen)","value": 903,"unitText": "nits"},{"@type": "PropertyValue","name": "Samsung R95H – HDR Standard Mode (10% window)","value": 2066,"unitText": "nits"},{"@type": "PropertyValue","name": "Samsung R95H – HDR Standard Mode (Fullscreen)","value": 600,"unitText": "nits"},{"@type": "PropertyValue","name": "Sony Bravia 7 II – HDR Standard Mode (10% window)","value": 1295,"unitText": "nits"},{"@type": "PropertyValue","name": "Sony Bravia 7 II – HDR Standard Mode (Fullscreen)","value": 788,"unitText": "nits"},{"@type": "PropertyValue","name": "Sony Bravia 9 II – SDR Filmmaker Mode (10% window)","value": 105,"unitText": "nits"},{"@type": "PropertyValue","name": "Sony Bravia 9 II – SDR Filmmaker Mode (Fullscreen)","value": 110,"unitText": "nits"},{"@type": "PropertyValue","name": "Samsung R95H – SDR Filmmaker Mode (10% window)","value": 115,"unitText": "nits"},{"@type": "PropertyValue","name": "Samsung R95H – SDR Filmmaker Mode (Fullscreen)","value": 185,"unitText": "nits"},{"@type": "PropertyValue","name": "Sony Bravia 7 II – SDR Filmmaker Mode (10% window)","value": 90,"unitText": "nits"},{"@type": "PropertyValue","name": "Sony Bravia 7 II – SDR Filmmaker Mode (Fullscreen)","value": 94,"unitText": "nits"},{"@type": "PropertyValue","name": "Sony Bravia 9 II – SDR Standard Mode (10% window)","value": 821,"unitText": "nits"},{"@type": "PropertyValue","name": "Sony Bravia 9 II – SDR Standard Mode (Fullscreen)","value": 703,"unitText": "nits"},{"@type": "PropertyValue","name": "Samsung R95H – SDR Standard Mode (10% window)","value": 413,"unitText": "nits"},{"@type": "PropertyValue","name": "Samsung R95H – SDR Standard Mode (Fullscreen)","value": 187,"unitText": "nits"},{"@type": "PropertyValue","name": "Sony Bravia 7 II – SDR Standard Mode (10% window)","value": 608,"unitText": "nits"},{"@type": "PropertyValue","name": "Sony Bravia 7 II – SDR Standard Mode (Fullscreen)","value": 476,"unitText": "nits"}]},{"@context": "https://schema.org","@type": "Dataset","name": "HDR color gamut","description": "Closer to 100% is better. Taken using a colorimeter and test pattern generator.","creator": {"@type": "Organization","name": "TechRadar","logo": "https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png"},"isAccessibleForFree": true,"dateCreated": "2026-10-14T14:56:12.098Z","citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized","keywords": ["Sony Bravia 9 II","Samsung R95H","Sony Bravia 7 II","UHDA-P3","BT.2020","HDR Filmmaker mode","benchmark","comparison","performance","review","TechRadar"],"measurementTechnique": "Performance Benchmarking","variableMeasured": [{"@type": "PropertyValue","name": "Sony Bravia 9 II – UHDA-P3","value": 95.6,"unitText": ""},{"@type": "PropertyValue","name": "Sony Bravia 9 II – BT.2020","value": 88.4,"unitText": ""},{"@type": "PropertyValue","name": "Samsung R95H – UHDA-P3","value": 148,"unitText": ""},{"@type": "PropertyValue","name": "Samsung R95H – BT.2020","value": 94.1,"unitText": ""},{"@type": "PropertyValue","name": "Sony Bravia 7 II – UHDA-P3","value": 99.2,"unitText": ""},{"@type": "PropertyValue","name": "Sony Bravia 7 II – BT.2020","value": 87.7,"unitText": ""}]},{"@context": "https://schema.org","@type": "Dataset","name": "Picture accuracy","description": "A lower score is better. Taken using a colorimeter and test pattern generator.","creator": {"@type": "Organization","name": "TechRadar","logo": "https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png"},"isAccessibleForFree": true,"dateCreated": "2026-10-14T14:56:12.098Z","citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized","keywords": ["Sony Bravia 9 II","Samsung R95H","Sony Bravia 7 II","Delta-E","benchmark","comparison","performance","review","TechRadar"],"measurementTechnique": "Performance Benchmarking","variableMeasured": [{"@type": "PropertyValue","name": "Sony Bravia 9 II – Delta-E","value": 5.3,"unitText": ""},{"@type": "PropertyValue","name": "Samsung R95H – Delta-E","value": 3.7,"unitText": ""},{"@type": "PropertyValue","name": "Sony Bravia 7 II – Delta-E","value": 6.5,"unitText": ""}]},{"@context": "https://schema.org","@type": "Dataset","name": "Input lag","description": "Lower is better. Taken using a Leo Bodnar 4K HDMI Video Signal Lag Tester.","creator": {"@type": "Organization","name": "TechRadar","logo": "https://cdn.mos.cms.futurecdn.net/dAwPEozB9GMMhAngdFJTHb.png"},"isAccessibleForFree": true,"dateCreated": "2026-10-14T14:56:12.098Z","citation": "Add your caption to explain the data, the learnings and the key takeaways of the data being visualized","keywords": ["Sony Bravia 9 II","Samsung R95H","Sony Bravia 7 II","4K 60Hz","1080p 120Hz","HDR Filmmaker mode","benchmark","comparison","performance","review","TechRadar"],"measurementTechnique": "Performance Benchmarking","variableMeasured": [{"@type": "PropertyValue","name": "Sony Bravia 9 II – 4K 60Hz","value": 9.8,"unitText": "ms"},{"@type": "PropertyValue","name": "Sony Bravia 9 II – 1080p 120Hz","value": 5.2,"unitText": "ms"},{"@type": "PropertyValue","name": "Samsung R95H – 4K 60Hz","value": 11.7,"unitText": "ms"},{"@type": "PropertyValue","name": "Samsung R95H – 1080p 120Hz","value": 9.4,"unitText": "ms"},{"@type": "PropertyValue","name": "Sony Bravia 7 II – 4K 60Hz","value": 10.4,"unitText": "ms"},{"@type": "PropertyValue","name": "Sony Bravia 7 II – 1080p 120Hz","value": 5.7,"unitText": "ms"}]}]Previous1 / 4NextBrightness Measurements

Taken using a colorimeter and test pattern generator. Click the test name for measurements and select the chosen test from the dropdown menu.

HDR Filmmaker modeHDR StandardSDR Filmmaker ModeSDR StandardSony Bravia 9 IIHDR Filmmaker Mode (10% window)4416HDR Filmmaker Mode (Fullscreen)974Samsung R95HHDR Filmmaker Mode (10% window)1977HDR Filmmaker Mode (Fullscreen)612Sony Bravia 7 IIHDR Filmmaker Mode (10% window)1114HDR Filmmaker Mode (Fullscreen)82901,5003,0004,5006,000nitsHDR Filmmaker mode DataProductHDR Filmmaker Mode (10% window) (nits)HDR Filmmaker Mode (Fullscreen) (nits)Sony Bravia 9 II4416974Samsung R95H1977612Sony Bravia 7 II1114829Sony Bravia 9 IIHDR Standard Mode (10% window)4044HDR Standard Mode (Fullscreen)903Samsung R95HHDR Standard Mode (10% window)2066HDR Standard Mode (Fullscreen)600Sony Bravia 7 IIHDR Standard Mode (10% window)1295HDR Standard Mode (Fullscreen)78801,5003,0004,5006,000nitsHDR Standard DataProductHDR Standard Mode (10% window) (nits)HDR Standard Mode (Fullscreen) (nits)Sony Bravia 9 II4044903Samsung R95H2066600Sony Bravia 7 II1295788Sony Bravia 9 IISDR Filmmaker Mode (10% window)105SDR Filmmaker Mode (Fullscreen)110Samsung R95HSDR Filmmaker Mode (10% window)115SDR Filmmaker Mode (Fullscreen)185Sony Bravia 7 IISDR Filmmaker Mode (10% window)90SDR Filmmaker Mode (Fullscreen)94050100150200nitsSDR Filmmaker Mode DataProductSDR Filmmaker Mode (10% window) (nits)SDR Filmmaker Mode (Fullscreen) (nits)Sony Bravia 9 II105110Samsung R95H115185Sony Bravia 7 II9094Sony Bravia 9 IISDR Standard Mode (10% window)821SDR Standard Mode (Fullscreen)703Samsung R95HSDR Standard Mode (10% window)413SDR Standard Mode (Fullscreen)187Sony Bravia 7 IISDR Standard Mode (10% window)608SDR Standard Mode (Fullscreen)47602505007501,000nitsSDR Standard DataProductSDR Standard Mode (10% window) (nits)SDR Standard Mode (Fullscreen) (nits)Sony Bravia 9 II821703Samsung R95H413187Sony Bravia 7 II608476HDR color gamut

Closer to 100% is better. Taken using a colorimeter and test pattern generator.

Sony Bravia 9 IIUHDA-P395.6BT.202088.4Samsung R95HUHDA-P3148BT.202094.1Sony Bravia 7 IIUHDA-P399.2BT.202087.7037.575112.5150HDR Filmmaker mode DataProductUHDA-P3 ()BT.2020 ()Sony Bravia 9 II95.688.4Samsung R95H14894.1Sony Bravia 7 II99.287.7Picture accuracy

A lower score is better. Taken using a colorimeter and test pattern generator.

Delta-ESony Bravia 9 II5.3Samsung R95H3.7Sony Bravia 7 II6.501234567Delta-E DataProductValueSony Bravia 9 II5.3Samsung R95H3.7Sony Bravia 7 II6.5Input lag

Lower is better. Taken using a Leo Bodnar 4K HDMI Video Signal Lag Tester.

Sony Bravia 9 II4K 60Hz9.81080p 120Hz5.2Samsung R95H4K 60Hz11.71080p 120Hz9.4Sony Bravia 7 II4K 60Hz10.41080p 120Hz5.703.757.511.2515msHDR Filmmaker mode DataProduct4K 60Hz (ms)1080p 120Hz (ms)Sony Bravia 9 II9.85.2Samsung R95H11.79.4Sony Bravia 7 II10.45.7window.iFrameResizer = {heightCalculationMethod: 'taggedElement'};(function() {window.fvAnimateCharts = function(chartWrapper) {if (!chartWrapper) return;function animateBars(chartElement) {if (!chartElement) return;var bars = chartElement.querySelectorAll('.fv-bar, .fv-stacked-segment');bars.forEach(function(bar, index) {bar.style.setProperty('width', '0%', 'important');bar.style.setProperty('transition', 'none', 'important');var targetWidth = bar.dataset.targetWidth;if (targetWidth === undefined) return;void bar.offsetWidth;var targetMargin = bar.dataset.targetMargin;var baseMargin = bar.dataset.baseMargin;if (baseMargin !== undefined) {bar.style.setProperty('margin-left', baseMargin + '%', 'important');}setTimeout(function() {var marginTransition = baseMargin !== undefined ? ', margin-left 0.8s ease-out' : '';bar.style.setProperty('transition', 'opacity 0.2s ease, width 0.8s ease-out' + marginTransition, 'important');bar.style.setProperty('width', targetWidth + '%', 'important');if (targetMargin !== undefined && baseMargin !== undefined) {bar.style.setProperty('margin-left', targetMargin + '%', 'important');}}, index * 50 + 50);});}function animateLineChart(chartElement) {if (!chartElement) return;var lineSvg = chartElement.querySelector('svg');if (!lineSvg) return;var paths = lineSvg.querySelectorAll('.riv-line-path');paths.forEach(function(p, i) {if (typeof p.getTotalLength === 'function') {var len = p.getTotalLength();p.style.transition = 'none';p.style.strokeDasharray = len;p.style.strokeDashoffset = len;p.getBoundingClientRect();setTimeout(function() {p.style.transition = 'stroke-dashoffset 1s ease-out ' + (i * 0.1) + 's, stroke-width 0.2s, opacity 0.2s';p.style.strokeDashoffset = '0';}, 100);}});var dots = lineSvg.querySelectorAll('.riv-dot');dots.forEach(function(dot, i) {dot.style.opacity = '0';setTimeout(function() {dot.style.transition = 'opacity 0.3s ease';dot.style.opacity = '1';}, 500 + i * 10);});}var charts = chartWrapper.querySelectorAll('.fv-chart-item');charts.forEach(function(chart) {if (window.getComputedStyle(chart).display === 'none') return;var chartType = chart.dataset.chartType;if (chartType === 'Line') {animateLineChart(chart);} else if (chartType !== 'Pie') {animateBars(chart);}});};function initialize(uniqueId, isSlideshow) {var root = document.getElementById(uniqueId);if (!root && !isSlideshow) return;function setupWrapper(chartWrapper) {if (!chartWrapper) return;function checkMobileView() {var width = chartWrapper.getBoundingClientRect().width;var isMobileDevice = window.screen && Math.min(window.screen.width, window.screen.height) <= 599;var isMobile;if (width === 0) {isMobile = isMobileDevice || window.matchMedia('(max-width: 599px)').matches;} else {isMobile = isMobileDevice || width < 600;}if (isMobile) {chartWrapper.classList.add('mobile-view');} else {chartWrapper.classList.remove('mobile-view');}}checkMobileView();if (typeof ResizeObserver !== 'undefined') {var ro = new ResizeObserver(function() {checkMobileView();});ro.observe(chartWrapper);}window.addEventListener('resize', checkMobileView);var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';if (labelsOnTop) {var charts = chartWrapper.querySelectorAll('.fv-chart-item');var hasVisibleBarChart = false;charts.forEach(function(c) {if (window.getComputedStyle(c).display !== 'none') {var cType = c.dataset.chartType;if (cType === 'Bar' || cType === 'Stacked Bar' || cType === 'Versus') {hasVisibleBarChart = true;}}});if (hasVisibleBarChart) {chartWrapper.classList.add('labels-on-top');} else {chartWrapper.classList.remove('labels-on-top');}} else {chartWrapper.classList.remove('labels-on-top');}chartWrapper.querySelectorAll('.riv-line-legend').forEach(function(legend) {var chartId = legend.dataset.chart;var chart = chartWrapper.querySelector('[id="' + chartId + '"]');if (!chart) return;var lines = chart.querySelectorAll('.riv-line-path');var dots = chart.querySelectorAll('.riv-dot');var legendItems = legend.querySelectorAll('.riv-legend-item');legendItems.forEach(function(item) {var productName = item.dataset.product;var safeProductName = productName.replace(/"/g, '\"');var line = chart.querySelector('.riv-line-path[data-product="' + safeProductName + '"]');var productDots = chart.querySelectorAll('.riv-dot[data-product="' + safeProductName + '"]');if (line && !line.dataset.origStroke) {line.dataset.origStroke = line.getAttribute('stroke-width') || '2';}var highlight = function() {if (legend.querySelector('.isolated')) return;lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '0.2'; });legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });if (line) {line.style.opacity = '1';line.setAttribute('stroke-width', '4');}productDots.forEach(function(d) { d.style.opacity = '1'; });item.style.opacity = '1';};var clearHighlight = function() {if (legend.querySelector('.isolated')) return;lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '1'; });legendItems.forEach(function(i) { i.style.opacity = '1'; });};var toggleIsolate = function() {var isIsolated = item.classList.contains('isolated');legendItems.forEach(function(i) { i.classList.remove('isolated'); });if (isIsolated) {lines.forEach(function(l) { l.style.opacity = '1'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '1'; });legendItems.forEach(function(i) { i.style.opacity = '1'; });} else {item.classList.add('isolated');lines.forEach(function(l) { l.style.opacity = '0.2'; l.setAttribute('stroke-width', l.dataset.origStroke); });dots.forEach(function(d) { d.style.opacity = '0.2'; });legendItems.forEach(function(i) { i.style.opacity = '0.3'; i.style.transition = 'opacity 0.2s'; });if (line) {line.style.opacity = '1';line.setAttribute('stroke-width', '4');}productDots.forEach(function(d) { d.style.opacity = '1'; });item.style.opacity = '1';}};item.addEventListener('mouseenter', highlight);item.addEventListener('focus', highlight);item.addEventListener('mouseleave', clearHighlight);item.addEventListener('blur', clearHighlight);item.addEventListener('click', toggleIsolate);if (line) {line.style.cursor = 'pointer';line.addEventListener('mouseenter', highlight);line.addEventListener('mouseleave', clearHighlight);line.addEventListener('click', toggleIsolate);}});});var versusCharts = chartWrapper.querySelectorAll('.fv-versus-chart');versusCharts.forEach(function(vc) {var dataJson = vc.getAttribute('data-versus-data');var leftColor = vc.getAttribute('data-left-color') || '#E53935';var rightColor = vc.getAttribute('data-right-color') || '#FFB300';if (!dataJson) return;var versusData = JSON.parse(dataJson);var leftSelect = vc.querySelector('.fv-select-left');var rightSelect = vc.querySelector('.fv-select-right');var rows = vc.querySelectorAll('.fv-versus-row');function updateVersusChart() {var leftProduct = leftSelect.value;var rightProduct = rightSelect.value;leftSelect.style.color = leftColor;leftSelect.style.borderColor = leftColor;rightSelect.style.color = rightColor;rightSelect.style.borderColor = rightColor;rows.forEach(function(row) {var index = parseInt(row.getAttribute('data-index'));var data = versusData[index];if (!data) return;var leftVal = data.productData[leftProduct] ? data.productData[leftProduct].value : undefined;var rightVal = data.productData[rightProduct] ? data.productData[rightProduct].value : undefined;var leftIsNum = typeof leftVal === 'number';var rightIsNum = typeof rightVal === 'number';var leftNum = leftIsNum ? leftVal : 0;var rightNum = rightIsNum ? rightVal : 0;var maxVal = Math.max(leftNum, rightNum, 0.0001);var leftWidth = leftIsNum ? (leftNum / maxVal) * 95 : 0;var rightWidth = rightIsNum ? (rightNum / maxVal) * 85 : 0;var winner = null;var pctDiffStr = null;if (leftIsNum && rightIsNum) {if (leftNum > rightNum) {winner = 'left';if (rightNum > 0) {var diff = Math.round(((leftNum - rightNum) / rightNum) * 100);pctDiffStr = '+' + diff.toLocaleString() + '%';}} else if (rightNum > leftNum) {winner = 'right';if (leftNum > 0) {var diff = Math.round(((rightNum - leftNum) / leftNum) * 100);pctDiffStr = '+' + diff.toLocaleString() + '%';}}}var leftDisplay = data.productData[leftProduct] && data.productData[leftProduct].displayValue !== undefined ? data.productData[leftProduct].displayValue : (leftIsNum ? leftNum.toLocaleString() : (leftVal !== undefined ? leftVal : '-'));var rightDisplay = data.productData[rightProduct] && data.productData[rightProduct].displayValue !== undefined ? data.productData[rightProduct].displayValue : (rightIsNum ? rightNum.toLocaleString() : (rightVal !== undefined ? rightVal : '-'));var unit = (data.productData[leftProduct] && data.productData[leftProduct].unit) ||(data.productData[rightProduct] && data.productData[rightProduct].unit) || '';var leftTextStr = leftDisplay;var rightTextStr = rightDisplay;var leftBar = row.querySelector('.fv-versus-bar-left');var rightBar = row.querySelector('.fv-versus-bar-right');var leftText = row.querySelector('.fv-inside-left');var rightText = row.querySelector('.fv-inside-right');var labelText = row.querySelector('.fv-versus-label span');var leftWrapper = row.querySelector('.fv-versus-bar-left-wrapper');var rightWrapper = row.querySelector('.fv-versus-bar-right-wrapper');var existingPctDiffs = row.querySelectorAll('.fv-versus-pct-diff');existingPctDiffs.forEach(function(el) { el.remove(); });if (winner === 'left' && pctDiffStr) {var pctSpan = document.createElement('span');pctSpan.className = 'fv-versus-pct-diff';pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';pctSpan.textContent = pctDiffStr;if (leftBar) leftBar.insertBefore(pctSpan, leftBar.firstChild);} else if (winner === 'right' && pctDiffStr) {var pctSpan = document.createElement('span');pctSpan.className = 'fv-versus-pct-diff';pctSpan.style.color = 'rgba(255, 255, 255, 0.9)';pctSpan.textContent = pctDiffStr;if (rightBar) rightBar.appendChild(pctSpan);}if (leftBar) {leftBar.style.backgroundColor = leftColor;leftBar.dataset.targetWidth = leftWidth;leftBar.style.setProperty('--target-width', leftWidth + '%');leftBar.style.width = leftWidth + '%';}if (rightBar) {rightBar.style.backgroundColor = rightColor;rightBar.dataset.targetWidth = rightWidth;rightBar.style.setProperty('--target-width', rightWidth + '%');rightBar.style.width = rightWidth + '%';}if (leftText) {leftText.innerHTML = leftTextStr;}if (rightText) {rightText.innerHTML = rightTextStr;}if (labelText) {labelText.textContent = data.attribute + (unit ? ' (' + unit + ')' : '');}});}if (leftSelect) leftSelect.addEventListener('change', updateVersusChart);if (rightSelect) rightSelect.addEventListener('change', updateVersusChart);});var barRows = chartWrapper.querySelectorAll('.fv-bar-row');var globalCaptionEl = chartWrapper.querySelector('.rv-chart-caption');var fallbackCaptionHtml = globalCaptionEl ? globalCaptionEl.innerHTML : '';barRows.forEach(function(row) {var commentaryEl = row.querySelector('[data-commentary-key]');if (commentaryEl) {var commentaryText = commentaryEl.textContent;if (commentaryText && commentaryText.trim().length > 0) {row.addEventListener('mouseenter', function() {if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {globalCaptionEl.innerHTML = commentaryText;globalCaptionEl.classList.add('fv-bar-active-caption');}});row.addEventListener('mouseleave', function() {if (!chartWrapper.classList.contains('mobile-view') && globalCaptionEl) {globalCaptionEl.innerHTML = fallbackCaptionHtml;globalCaptionEl.classList.remove('fv-bar-active-caption');}});}}});var charts = chartWrapper.querySelectorAll('.fv-chart-item');var dropdown = chartWrapper.querySelector('.fv-dropdown-title');var prevBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.prev');var nextBtn = chartWrapper.querySelector('.fv-carousel-nav-btn.next');var carouselTitle = chartWrapper.querySelector('.fv-carousel-title-controls .fv-benchmark-title');var counter = chartWrapper.querySelector('.fv-carousel-counter');var subheadEl = chartWrapper.querySelector('.fv-chart-subhead');var captionEl = chartWrapper.querySelector('.rv-chart-caption');var footerContentEl = chartWrapper.querySelector('.fv-footer-content');var bottomBarEl = chartWrapper.querySelector('.fv-bottom-bar');var logoEl = chartWrapper.querySelector('.fv-logo');if (charts.length > 1 && (dropdown || prevBtn)) {var currentChartIndex = 0;var titles = [];if (dropdown) {titles = Array.from(dropdown.options).map(function(o) { return o.text; });} else {charts.forEach(function(c) {titles.push(c.getAttribute('data-title') || '');});}function showInternalChart(index) {if (index < 0) index = charts.length - 1;if (index >= charts.length) index = 0;currentChartIndex = index;charts.forEach(function(c, i) {c.style.display = i === index ? 'block' : 'none';if (i === index) {var cType = c.dataset.chartType;if (cType === 'Line') {} else if (cType !== 'Pie') {window.fvAnimateCharts(chartWrapper);}var labelsOnTop = chartWrapper.dataset.barLabelsOnTop === 'true';if (labelsOnTop && (cType === 'Bar' || cType === 'Stacked Bar' || cType === 'Versus')) {chartWrapper.classList.add('labels-on-top');} else {chartWrapper.classList.remove('labels-on-top');}}});if (dropdown) dropdown.value = index;if (carouselTitle && titles[index]) carouselTitle.textContent = titles[index];if (counter) counter.textContent = (index + 1) + ' of ' + charts.length;var activeChart = charts[index];if (activeChart) {var newSubhead = activeChart.getAttribute('data-subhead');var newCaption = activeChart.getAttribute('data-caption');var currentChartType = activeChart.getAttribute('data-chart-type');var hideGlobalCaption = currentChartType === 'Countdown' || currentChartType === 'Image Comparison' || currentChartType === 'Shop the Collection';if (subheadEl) subheadEl.textContent = newSubhead || '';if (captionEl) {captionEl.textContent = newCaption || '';fallbackCaptionHtml = newCaption || '';}if (footerContentEl) {if (newCaption && newCaption.trim().length > 0 && !hideGlobalCaption) {footerContentEl.style.display = 'block';if (bottomBarEl) bottomBarEl.style.display = 'flex';} else {footerContentEl.style.display = 'none';if (bottomBarEl && !logoEl) {bottomBarEl.style.display = 'none';}}}}}if (dropdown) dropdown.addEventListener('change', function(e) { showInternalChart(parseInt(e.target.value)); });if (prevBtn) prevBtn.addEventListener('click', function() { showInternalChart(currentChartIndex - 1); });if (nextBtn) nextBtn.addEventListener('click', function() { showInternalChart(currentChartIndex + 1); });}var imageCompareWrappers = chartWrapper.querySelectorAll('.fv-image-compare-wrapper');imageCompareWrappers.forEach(function(wrapper) {var inner = wrapper.querySelector('.fv-image-compare-inner') || wrapper;var slider = wrapper.querySelector('.fv-image-compare-slider');var fgImage = wrapper.querySelector('.fv-image-compare-fg');var bgImage = wrapper.querySelector('.fv-image-compare-bg');var labelLeft = wrapper.querySelector('.fv-image-compare-label-left');var labelRight = wrapper.querySelector('.fv-image-compare-label-right');var isDragging = false;var scale = 1;var panX = 0;var panY = 0;var isPanning = false;var hasPanned = false;var lastClientX = 0;var lastClientY = 0;var initialDistance = null;var lastCenterX = null;var lastCenterY = null;function updateTransform() {if (wrapper.classList.contains('fv-image-compare-fullscreen')) {inner.style.setProperty('transform', 'translate(' + panX + 'px, ' + panY + 'px) scale(' + scale + ')', 'important');} else {inner.style.removeProperty('transform');scale = 1;panX = 0;panY = 0;}}function constrainPan() {var rect = wrapper.getBoundingClientRect();var maxPanX = Math.max(0, (rect.width * scale - rect.width) / 2);var maxPanY = Math.max(0, (rect.height * scale - rect.height) / 2);panX = Math.max(-maxPanX, Math.min(panX, maxPanX));panY = Math.max(-maxPanY, Math.min(panY, maxPanY));}wrapper.addEventListener('wheel', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;e.preventDefault();var zoomSensitivity = 0.005;var zoomFactor = Math.exp(-e.deltaY * zoomSensitivity);var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));if (newScale === scale) return;var rect = wrapper.getBoundingClientRect();var mouseX = e.clientX - rect.left - rect.width / 2;var mouseY = e.clientY - rect.top - rect.height / 2;var ratio = newScale / scale;panX = mouseX - (mouseX - panX) * ratio;panY = mouseY - (mouseY - panY) * ratio;scale = newScale;constrainPan();updateTransform();}, { passive: false });wrapper.addEventListener('mousedown', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen') || scale <= 1) return;if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;isPanning = true;hasPanned = false;lastClientX = e.clientX;lastClientY = e.clientY;});window.addEventListener('mousemove', function(e) {if (!isPanning) return;var dx = e.clientX - lastClientX;var dy = e.clientY - lastClientY;if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {hasPanned = true;}lastClientX = e.clientX;lastClientY = e.clientY;panX += dx;panY += dy;constrainPan();updateTransform();});window.addEventListener('mouseup', function() {isPanning = false;});wrapper.addEventListener('touchstart', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;if (e.touches.length === 2) {e.preventDefault();var dx = e.touches[0].clientX - e.touches[1].clientX;var dy = e.touches[0].clientY - e.touches[1].clientY;initialDistance = Math.sqrt(dx * dx + dy * dy);var rect = wrapper.getBoundingClientRect();lastCenterX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;lastCenterY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;hasPanned = true;} else if (e.touches.length === 1 && scale > 1) {if (e.target.closest('.fv-image-compare-slider') || e.target.closest('button')) return;isPanning = true;hasPanned = false;lastClientX = e.touches[0].clientX;lastClientY = e.touches[0].clientY;}}, { passive: false });wrapper.addEventListener('touchmove', function(e) {if (!wrapper.classList.contains('fv-image-compare-fullscreen')) return;if (e.touches.length === 2 && initialDistance !== null) {e.preventDefault();var dx = e.touches[0].clientX - e.touches[1].clientX;var dy = e.touches[0].clientY - e.touches[1].clientY;var distance = Math.sqrt(dx * dx + dy * dy);if (initialDistance > 0) {var zoomFactor = distance / initialDistance;var newScale = Math.max(1, Math.min(scale * zoomFactor, 5));var rect = wrapper.getBoundingClientRect();var centerX = (e.touches[0].clientX + e.touches[1].clientX) / 2 - rect.left - rect.width / 2;var centerY = (e.touches[0].clientY + e.touches[1].clientY) / 2 - rect.top - rect.height / 2;var ratio = newScale / scale;panX = centerX - (centerX - panX) * ratio;panY = centerY - (centerY - panY) * ratio;if (lastCenterX !== null && lastCenterY !== null) {panX += (centerX - lastCenterX);panY += (centerY - lastCenterY);}scale = newScale;lastCenterX = centerX;lastCenterY = centerY;constrainPan();updateTransform();}initialDistance = distance;} else if (e.touches.length === 1 && isPanning) {e.preventDefault();var dx = e.touches[0].clientX - lastClientX;var dy = e.touches[0].clientY - lastClientY;if (Math.abs(dx) > 2 || Math.abs(dy) > 2) {hasPanned = true;}lastClientX = e.touches[0].clientX;lastClientY = e.touches[0].clientY;panX += dx;panY += dy;constrainPan();updateTransform();}}, { passive: false });wrapper.addEventListener('touchend', function(e) {if (e.touches.length < 2) {initialDistance = null;}if (e.touches.length === 0) {isPanning = false;}});function handleMove(clientX) {var rect = inner.getBoundingClientRect();var x = Math.max(0, Math.min(clientX - rect.left, rect.width));var percent = Math.max(0, Math.min((x / rect.width) * 100, 100));if (slider) slider.style.setProperty('left', percent + '%', 'important');if (fgImage) fgImage.style.setProperty('clip-path', 'polygon(0 0, ' + percent + '% 0, ' + percent + '% 100%, 0 100%)', 'important');if (labelLeft) {if (percent < 10) {labelLeft.style.setProperty('opacity', '0', 'important');} else {labelLeft.style.setProperty('opacity', '1', 'important');}}if (labelRight) {if (percent > 90) {labelRight.style.setProperty('opacity', '0', 'important');} else {labelRight.style.setProperty('opacity', '1', 'important');}}}function onMouseMove(e) {if (!isDragging) return;handleMove(e.clientX);}function onTouchMove(e) {if (!isDragging) return;e.preventDefault();handleMove(e.touches[0].clientX);}function stopDragging() {isDragging = false;window.removeEventListener('mousemove', onMouseMove);window.removeEventListener('mouseup', stopDragging);window.removeEventListener('touchmove', onTouchMove);window.removeEventListener('touchend', stopDragging);}if (slider) {var startDrag = function(clientX) {isDragging = true;handleMove(clientX);window.addEventListener('mousemove', onMouseMove);window.addEventListener('mouseup', stopDragging);};var startTouchDrag = function(clientX) {isDragging = true;handleMove(clientX);window.addEventListener('touchmove', onTouchMove, { passive: false });window.addEventListener('touchend', stopDragging);};slider.addEventListener('mousedown', function(e) {e.preventDefault();startDrag(e.clientX);});slider.addEventListener('touchstart', function(e) {e.preventDefault();startTouchDrag(e.touches[0].clientX);}, { passive: false });}var expandBtn = wrapper.querySelector('.fv-image-compare-expand-btn');var closeBtn = wrapper.querySelector('.fv-image-compare-close-btn');if (expandBtn) {if (window !== window.parent) {expandBtn.style.display = 'none';} else {expandBtn.addEventListener('click', function(e) {e.stopPropagation();wrapper.classList.add('fv-image-compare-fullscreen');document.body.style.overflow = 'hidden';if (fgImage && fgImage.dataset.highresSrc) {fgImage.src = fgImage.dataset.highresSrc;fgImage.removeAttribute('srcset');fgImage.removeAttribute('sizes');}if (bgImage && bgImage.dataset.highresSrc) {bgImage.src = bgImage.dataset.highresSrc;bgImage.removeAttribute('srcset');bgImage.removeAttribute('sizes');}});}}if (closeBtn) {closeBtn.addEventListener('click', function(e) {e.stopPropagation();wrapper.classList.remove('fv-image-compare-fullscreen');document.body.style.overflow = '';updateTransform();});}document.addEventListener('keydown', function(e) {if (e.key === 'Escape' && wrapper.classList.contains('fv-image-compare-fullscreen')) {wrapper.classList.remove('fv-image-compare-fullscreen');document.body.style.overflow = '';updateTransform();}});});var hotspots = chartWrapper.querySelectorAll('.fv-stl-hotspot-btn');var allProductsModal = chartWrapper.querySelector('.fv-stl-all-products-modal');var shopAllBtn = chartWrapper.querySelector('.fv-stl-shop-all-btn');var allProductsList = chartWrapper.querySelector('.fv-stl-all-products-list');var stlContainer = chartWrapper.querySelector('.fv-stl-container');function closeAllModals() {if (allProductsModal) {allProductsModal.classList.remove('is-active');var items = allProductsModal.querySelectorAll('.fv-stl-all-products-item');items.forEach(function(item) {item.classList.remove('is-highlighted');});if (stlContainer) {setTimeout(function() {if (!allProductsModal.classList.contains('is-active')) {stlContainer.style.minHeight = '';if ('parentIFrame' in window) {window.parentIFrame.size();}}}, 300);}}hotspots.forEach(function(btn) { btn.setAttribute('aria-expanded', 'false'); });if ('parentIFrame' in window) {window.parentIFrame.size();}}hotspots.forEach(function(btn) {btn.addEventListener('click', function(e) {e.stopPropagation();var hotspotId = btn.getAttribute('data-hotspot-id');var isExpanded = btn.getAttribute('aria-expanded') === 'true';closeAllModals();if (!isExpanded && allProductsModal) {btn.setAttribute('aria-expanded', 'true');allProductsModal.classList.add('is-active');var container = btn.closest('.fv-stl-container');if (container && container.offsetHeight < 450) {container.style.minHeight = '450px';}var targetItem = allProductsModal.querySelector('.fv-stl-all-products-item[data-product-id="' + hotspotId + '"]');if (targetItem) {targetItem.classList.add('is-highlighted');setTimeout(function() {targetItem.scrollIntoView({ behavior: 'smooth', block: 'center' });}, 100);}if ('parentIFrame' in window) {window.parentIFrame.size();}}});});if (shopAllBtn && allProductsModal) {shopAllBtn.addEventListener('click', function(e) {e.stopPropagation();closeAllModals();allProductsModal.classList.add('is-active');var container = shopAllBtn.closest('.fv-stl-container');if (container && container.offsetHeight < 450) {container.style.minHeight = '450px';}if ('parentIFrame' in window) {window.parentIFrame.size();}});}if (allProductsModal) {var closeAllBtn = allProductsModal.querySelector('.fv-stl-all-products-close');if (closeAllBtn) {closeAllBtn.addEventListener('click', function(e) {e.stopPropagation();closeAllModals();});}}chartWrapper.addEventListener('click', function(e) {if (!e.target.closest('.fv-stl-all-products-content')) {closeAllModals();}});if (allProductsModal) {allProductsModal.addEventListener('click', function(e) {if (!e.target.closest('.fv-stl-all-products-content')) {closeAllModals();}});}var iaNodes = chartWrapper.querySelectorAll('.fv-ia-node-button');var iaWrapper = chartWrapper.querySelector('.fv-ia-wrapper');var originalCaption = chartWrapper.querySelector('.fv-original-caption') || captionEl;var dynamicCaption = chartWrapper.querySelector('.fv-ia-dynamic-caption');var exploreBtn = chartWrapper.querySelector('.fv-ia-explore-btn');var currentIaIndex = -1;function closeAllIANodes() {iaNodes.forEach(function(btn) { btn.classList.remove('is-active'); });if (originalCaption) originalCaption.style.display = 'block';if (dynamicCaption) dynamicCaption.style.display = 'none';}function resetExploreBtn() {currentIaIndex = -1;if (exploreBtn) {var exploreSpan = exploreBtn.querySelector('span');if (exploreSpan) exploreSpan.textContent = 'Explore';}}iaNodes.forEach(function(btn, index) {btn.addEventListener('click', function(e) {e.stopPropagation();var isActive = btn.classList.contains('is-active');closeAllIANodes();if (!isActive) {currentIaIndex = index;if (exploreBtn) {var exploreSpan = exploreBtn.querySelector('span');if (exploreSpan) exploreSpan.textContent = 'Next';}btn.classList.add('is-active');if (dynamicCaption) {var title = btn.getAttribute('data-title') || '';var desc = btn.getAttribute('data-desc') || '';dynamicCaption.innerHTML = '';var strongTag = document.createElement('strong');strongTag.textContent = title;dynamicCaption.appendChild(strongTag);if (desc) {dynamicCaption.appendChild(document.createTextNode(' - ' + desc));}if (originalCaption) originalCaption.style.display = 'none';dynamicCaption.style.display = 'block';if (footerContentEl) footerContentEl.style.display = 'block';}} else {resetExploreBtn();}});});if (exploreBtn) {exploreBtn.addEventListener('click', function(e) {e.stopPropagation();if (iaNodes.length === 0) return;var nextIndex = currentIaIndex + 1;if (nextIndex >= iaNodes.length) {closeAllIANodes();resetExploreBtn();} else {currentIaIndex = nextIndex;var targetBtn = iaNodes[currentIaIndex];if (targetBtn) {if(targetBtn.classList.contains('is-active')) {targetBtn.click();}targetBtn.click();}}});}if (iaWrapper) {iaWrapper.addEventListener('click', function(e) {if (!e.target.closest('.fv-ia-node-button') && !e.target.closest('.fv-ia-explore-btn')) {closeAllIANodes();resetExploreBtn();}});}window.fvAnimateCharts(chartWrapper);var countdownContainer = chartWrapper.querySelector('.fv-countdown-container');if (countdownContainer) {var targetDateAttr = countdownContainer.getAttribute('data-target-date');if (targetDateAttr) {var targetDate = new Date(targetDateAttr);var primaryColor = countdownContainer.getAttribute('data-primary-color') || '#f97316';var subheadColor = countdownContainer.getAttribute('data-subhead-color') || '#ffffff';var pad = function(n) { return (n < 10 ? '0' : '') + n; };var updateCountdown = function() {var difference = +targetDate - +new Date();var d = 0, h = 0, m = 0, s = 0;if (difference > 0) {d = Math.floor(difference / (1000 * 60 * 60 * 24));h = Math.floor((difference / (1000 * 60 * 60)) % 24);m = Math.floor((difference / 1000 / 60) % 60);s = Math.floor((difference / 1000) % 60);}var daysEl = countdownContainer.querySelector('[data-time="days"]');var hoursEl = countdownContainer.querySelector('[data-time="hours"]');var minsEl = countdownContainer.querySelector('[data-time="minutes"]');var secsEl = countdownContainer.querySelector('[data-time="seconds"]');if (daysEl) daysEl.textContent = d;if (hoursEl) hoursEl.textContent = pad(h);if (minsEl) minsEl.textContent = pad(m);if (secsEl) secsEl.textContent = pad(s);};updateCountdown();setInterval(updateCountdown, 1000);}}}if (true) {var slideshowContainer = document.getElementById(uniqueId + '-slideshow');if (slideshowContainer) {var slides = slideshowContainer.querySelectorAll('.fv-slide');slides.forEach(function(slide) {setupWrapper(slide.querySelector('.fv-chart-wrapper'));});}var slideshowContainer = document.getElementById(uniqueId + '-slideshow');if (slideshowContainer) {var currentSlideIndex = 0;var slides = slideshowContainer.querySelectorAll('.fv-slide');var counter = slideshowContainer.querySelector('.fv-slide-counter');var prevBtn = slideshowContainer.querySelector('.fv-nav-btn.prev');var nextBtn = slideshowContainer.querySelector('.fv-nav-btn.next');var dropdown = slideshowContainer.querySelector('.fv-slideshow-select');function updateControls(index) {if (counter) counter.textContent = (index + 1) + ' / ' + slides.length;if (dropdown) dropdown.value = index;if (prevBtn) {if (index === 0) prevBtn.classList.add('disabled');else prevBtn.classList.remove('disabled');}if (nextBtn) {if (index === slides.length - 1) nextBtn.classList.add('disabled');else nextBtn.classList.remove('disabled');}}function showSlide(index) {if (index < 0) return;if (index >= slides.length) return;currentSlideIndex = index;slides.forEach(function(slide, i) {slide.style.display = i === index ? 'block' : 'none';if (i === index) {var chartEl = slide.querySelector('.fv-chart-wrapper');if (chartEl && window.fvAnimateCharts) {window.fvAnimateCharts(chartEl);}}});updateControls(currentSlideIndex);}if (prevBtn) {prevBtn.addEventListener('click', function() { showSlide(currentSlideIndex - 1); });}if (nextBtn) {nextBtn.addEventListener('click', function() { showSlide(currentSlideIndex + 1); });}if (dropdown) {dropdown.addEventListener('change', function(e) { showSlide(parseInt(e.target.value)); });}updateControls(currentSlideIndex);if (slides.length > 0) {var firstChart = slides[0].querySelector('.fv-chart-wrapper');if (firstChart && window.fvAnimateCharts) {setTimeout(function() { window.fvAnimateCharts(firstChart); }, 100);}}}} else {setupWrapper(root);}}if (document.readyState === 'loading') {document.addEventListener('DOMContentLoaded', function() { initialize('fv-chart-1791989772096-3jrkl1tdu', true); });} else {initialize('fv-chart-1791989772096-3jrkl1tdu', true);}})();The above EOTF graphs show the accuracy of the Sony Bravia 9 II for hitting different HDR brightness levels in grayscale. The closer to the yellow line, the more accurate a TV is. As with all our tests, these results are out of the box, without calibration, to demonstrate the performance most people will see. As you can see, the Bravia 9 II did very well when set to Professional modeFutureWhile Cinema mode is the preferred picture mode for brighter rooms and scenes, the EOTF graphs show the Bravia 9 II loses accuracy in the 40-80% brightness range, but does well with blacksFutureSpectral power distribution refers to the intensity of light that a source will display at various wavelengths of color. It can reveal how accurate a source can show color at different light levels, and can be instructive to understand how a TV is handling color. The Bravia 9 II scored well in Professional mode FutureIn the Bravia 9 II's Cinema mode results were again excellent, with more distinct reds compared to Professional mode FutureSony Bravia 9 II review: Features

The Bravia 9 II has a good range of ports, but only two of its HDMI ports are 2.1 (Image credit: Future)
  • RGB LED panel
  • XR processor with AI features
  • Google TV interface

The Bravia 9 II uses an RGB mini-LED panel (dubbed True RGB LED by Sony), which uses red, green and blue mini-LEDs, rather than the standard white you’ll find in regular mini-LED panels, to boost color reproduction.

It uses Sony’s XR Processor, which powers several AI picture features such as XR Clear Image AI for upscaling, as well as XR Motion Clarity, which analyzes movement on screen to produce a clearer, judder-free image.

In terms of HDR support, the Bravia 9 II supports Dolby Vision, but there’s no support for HDR10+. If you’re looking for a TV that supports both you’ll need to look at Hisense, TCL and Philips models. The Bravia 9 II also supports IMAX Enhanced content.

For audio, the Bravia 9 II has an 80W speaker system, consisting of two tweeters, two full-range speakers, two subwoofers and two beam tweeters. Several audio features, such as Voice Zoom 3, Auto Calibration and Acoustic Multi-Audio+, are included. There’s support for Dolby Atmos and DTS:X formats too.

The Bravia 9 II has two fully-specced HDMI 2.1 ports set for gaming, with 4K 120Hz, VRR and ALLM support. Perfect For PS5 features are also present, including Auto HDR Tone Mapping and Auto Genre Picture Mode.

Like all Sony TVs, the Bravia 9 II uses Google TV as its smart TV interface. This gives you access to all major apps such as Netflix, Prime Video and Disney Plus, and, in the UK, BBC iPlayer and ITVX. Google TV with Gemini is included, which can be controlled hands-free and recommend content.

  • Features score: 4.5 / 5
Sony Bravia 9 II review: Picture quality

Movies like The Super Mario Galaxy Movie are great for showcasing the Bravia 9 II's vibrant colors (Image credit: Nintendo / Universal Pictures / Future )
  • Excellent color reproduction
  • Accurate, OLED-level blacks
  • Some mild blooming off-axis

The Bravia 9 II’s measured brightness is fantastic. In Cinema and Professional mode (the latter is the closest to Filmmaker Mode) it hit 4,180 nits and 4,416 nits peak HDR brightness respectively. This puts it at double what rival flagship RGB TVs like the Samsung R95H hit (1,977 nits in its own Filmmaker Mode).

It also delivers superb fullscreen brightness, hitting 974 nits HDR brightness in Cinema and Professional modes. It even delivers big SDR numbers, hitting 703 nits fullscreen SDR brightness in Standard and 656 nits in Cinema, making it a great choice for broadcast TV in bright rooms.

Speaking of bright rooms, the Bravia 9 II demonstrates much better handling of mirror-like reflections than the step-down Sony Bravia 7 II, which I found quite reflective in our testing lab. When I viewed the Bravia 9 II and Samsung R95H side-by-side, the Bravia 9 II’s own matte screen was seriously effective.

The Bravia 9 II did a good job of upscaling SDR/HD content. Watching videos on YouTube, textures did look sharper, and although it wasn’t to a 4K-level, it was improved. Watching HD movies like Fight Club on Disney Plus, textures looked crisp and contrast was improved.

The Bravia 9 II, also demonstrated excellent picture quality with 4K Blu-ray reference discs. Its color reproduction during The Super Mario Galaxy Movie was gorgeous, with deep, rich colors that really popped on-screen. Any time the Lumas appeared, they had a sense of depth to them, thanks to how bold their colors were.

Even in live-action movies like Speed Racer, the Bravia 9 II demonstrates its superb colors (Image credit: Warner Bros / Future )

Colors in live-action content looked similarly great. In Speed Racer, the bold aesthetic of the Racer family home, with orange doors, green and purple walls and yellow furnishings, not only looked vivid to suit the movie’s cartoon-ish nature, but also had a nice accuracy to them.

The Bravia 9 II’s HDR color gamut results were fantastic overall. It clocked 98.6% UHDA-P3 coverage, a number consistent with other mini-LED and OLED TVs, but most impressive was its 86.7% BT.2020 coverage. While I’ve tested higher on some RGB TVs, this puts the Bravia 9 II in line with QD-OLED models.

The Bravia 9 II has excellent contrast, perfect for movies like The Batman. Even in bright conditions, the movie looks great on this TV (Image credit: Warner Bros / Future )

Another area where the Bravia 9 II impressed was its contrast and black-tone reproduction. In The Batman, as Bruce works in the Batcave, the monitors on his desk were bright, and contrasted well with the dark tones in the surrounding walls and crevices. The Bravia 9 II’s peak brightness meant HDR highlights, such as overhead lamps, really dazzled on screen, and this didn’t come at the expense of dark tones.

In Project Hail Mary, scenes of space demonstrated just how good the Bravia 9 II’s black levels were, especially for a backlit-TV. In theory, OLED has an advantage when it comes to reproducing deep blacks, in that it uses individually controlled pixels, but I found that the Bravia 9 II rivalled most OLEDs. Not only were black levels deep, but there were few signs of blooming when viewing head-on, with the Bravia 9 II showing superb backlight control.

It’s no surprise that the Bravia 9 II’s black tones were good, as when I measured its out-of-the-box grayscale accuracy, it hit a staggering 0.92 in Cinema mode. Anything below 3 is indiscernible to the human eye, and a number like this rivals most OLEDs.

The Bravia 9 II delivers great motion as well. Watching soccer with the TV set to Standard mode, it was able to handle the fast-paced action with minimal signs of judder, though it’s best to set the motion settings to Custom and set Smoothness and Clearness to 1, as at the full 2 the TV could sometimes be aggressive with its processing. For movies, with the TV set to Cinema, action always looked smooth. Watching Speed Racer, the Bravia 9 II handled the swerving cars, and even the commentators panning across the screen, well.

It wasn’t all plain sailing for the Bravia 9 II, however. Viewed off-center, signs of blooming crept back in, with halos of light appearing around bright objects on dark backgrounds. Although there was still significantly less blooming than you’d find on other mini-LEDs, OLED still takes the crown for off-angle viewing.

  • Picture quality score: 5 / 5
Sony Bravia 9 II review: Sound quality The Bravia 9 II has very good built-in soundFutureThe Bravia 9 II forgoes more traditional sound modes for deeper sound settings, such as an EQ (pictured)Future
  • Excellent detail
  • Great virtual surround-sound processing
  • Bass could be better

Sony’s TVs are often among the very best for built-in sound, so I had high expectations for the Bravia 9 II and spoiler alert, it mostly lived up to them. The Bravia 9 II 65-inch I tested uses a multi-speaker array consisting of two beam tweeters, two frame tweeters, two mid-range drivers and two subwoofers.

Watching the Penguin/Batmobile chase from The Batman, I was impressed most of all by the Bravia 9 II’s detail. As the Batmobile glides in and out of traffic, there were lots of effects I’d not been able to hear when watching the movie on other TVs, such as the creaking of tall lorries, the wind whipping past the Batmobile as debris fell around it, and the clattering of metal. The same was true with effects you’d hear in height channels, such as rain, which wasn’t crystal clear, but was still audible — no mean feat for TV speakers.

The Bravia 9 II also showcased very good virtual spatial sound, with the sound extending beyond the screen to create a somewhat immersive experience. Speech was also clear throughout, with the Penguin’s shouting audible even amid the chaos of the scene.

One area where the Bravia 9 II is lacking, however, is its bass. For such a large-framed TV with two subwoofers, I expected more punch in the lower tone range. The Batmobile’s engines had some heft to them, but it didn’t have the rumble I was looking for. This isn’t uncommon for a TV, but I was surprised that in this case it was one of Sony’s models that was lacking.

  • Sound quality score: 4.5 / 5
Sony Bravia 9 II review: Design The Bravia 9 II feels premium, with a weighty pedestal stand and build FutureIts anti-glare screen is effective at eliminating mirror-like reflections Future
  • Sturdy but weighty build
  • Thicker than other TVs
  • Looks premium

Like several other RGB models I’ve tested, the Bravia 9 II is bulkier than a lot of other TVs. The Bravia 9 II’s frame is chunkier and deeper than you’d expect for a modern TV, so this is something to bear in mind if you’re going to be fitting it into a tight space. It’s weighty as well — this 65-inch TV is easily one of the heaviest I’ve set up.

That said, the Bravia 9 II still looks like a premium TV, with a central pedestal stand consisting of three metal components that feel and look appropriate for a TV of this price. The stand also comes with a clear bit of plastic that can be attached to the rear of the stand to create what the brand calls a ‘mirage effect’, where the stand seemingly disappears when viewed head-on, to give the TV a floating effect.

The Bravia 9 II’s supplied remote is perfectly serviceable, with shortcut buttons to major apps like Netflix and buttons laid out in a standard format. However, it feels lightweight and cheap, which is disappointing for a TV in this price range. It does however use USB-C charging, similar to Samsung and Hisense’s remotes, which is a nice touch.

  • Design score: 4 / 5
Sony Bravia 9 II review: Smart TV & menus

Google TV is a decent smart TV platform, but the banner ads on its home page (pictured) can be very distracting (Image credit: Future)
  • Google TV interface
  • Tons of picture settings
  • Google home page quite cluttered

The Bravia 9 II uses Google TV as its smart TV platform, with access to major apps including Netflix and Disney Plus, and, in the UK, to major UK apps like BBC iPlayer and ITVX. There’s also the option of hands-free control via Google Assistant, and the TV is compatible with Google Cast, Alexa and Apple Airplay2.

Google TV’s home page is a good hub for recommending relevant content, as well making content you’re watching easy to find, particularly on YouTube. One issue with the home page, which Google TV has had for a while, is that its large banner ads can make the screen look cluttered, and push your apps further down the screen.

The Bravia 9 II has a comprehensive suite of settings, especially for adjusting the picture. There are plentiful settings to enable you to tailor the picture to your liking, and while some of these are a little hidden (the ambient light sensor is in a totally separate menu for example), the menus are mostly easy to navigate and use. While I don’t find Google TV as aesthetically pleasing or easy to use as LG’s webOS, Samsung’s One UI Tizen, or Roku, it’s a perfectly fine smart TV system.

  • Smart TV & menus score: 4 / 5
Sony Bravia 9 II review: Gaming

The Bravia 9 II is great for gaming, with brilliant response times (Image credit: Future)
  • 9.8ms input lag time
  • Good performance overall
  • Only two HDMI 2.1 ports

The Bravia 9 II has a good array of gaming features, supporting 4K 120Hz, VRR, Dolby Vision gaming and ALLM, as well as Perfect for PS5 features including Auto HDR Tone Mapping. Sadly, only two of its four HDMI ports are 2.1 compatible for gaming, which is still a step behind a lot of other rival TVs from LG, Samsung, Hisense, and TCL.

I measured the Bravia 9 II’s input lag at 9.8ms (4K 60Hz), which is a nice improvement over other Sony TVs I’ve tested, including the brand’s Bravia 8 II flagship OLED, which registered 16.8ms (also in 4K 60Hz).

Actual gameplay on the Bravia 9 II is very smooth. When I played Battlefield V, movement felt fluid and responsive, with the Bravia 9 II showing no judder during a chaotic desert mission where I dodged enemy fire while jumping in and out of vehicles. I did notice that during some particularly fast-paced action, where I sprinted across the battlefield, there was a slight blurring of finer details, but overall the game looked great, with the Bravia 9 II’s excellent picture quality for movies translating over to games.

  • Gaming score: 4.5 / 5
Sony Bravia 9 II review: Value

The Bravia 9 II's supplied remote has everything you need, but feels cheap for a TV at this price (Image credit: Future)
  • Premium price
  • Pricier than rival RGBs and OLEDs
  • Great performance for the money

There’s no denying that the Bravia 9 II is a premium-priced TV. It sits at the top end of the market and is pricier than most, if not all, of its major rivals. The 65-inch model I tested costs $3,599 / £3,499 / AU$5,999, which is pricier than a flagship OLED like the LG G6, the 65-inch model of which costs $2,499 / £2,699 / AU$4,999. It’s pricier than even the Samsung R95H, that brand’s flagship RGB TV, with its 65-inch costing $2,799 / £2,899 / AU$4,499.

Both those rival TVs have more features than the Bravia 9 II, especially for gaming, and they deliver very good performance in their own right. That being said, the Bravia 9 II is easily the most impressive RGB TV I’ve tested, delivering superb performance that exceeded my expectations. It’s just a shame that you’re paying a premium for that performance — and based on Sony’s history when it comes to pricing, it’s unlikely that the Bravia 9 II’s price will fall into line with competitors.

  • Value score: 3.5 / 5
Should you buy the Sony Bravia 9 II?

The Bravia 9 II's black tones are one of its most impressive features (Image credit: Future)Sony Bravia 9 II

Attributes

Notes

Rating

Features

Impressive anti-glare screen, RGB panel and good gaming features

4.5/5

Picture quality

Stunning colors, impressive contrast and black tones, excellent backlight control and reflection handling. Some blooming when viewed off-center

5/5

Sound quality

Very good overall sound quality with exceptional detail and accuracy, along with a wide soundstage, but bass is lacking.

4.5/5

Design

Premium build with sturdy feel, but thicker and weightier than a lot of other TVs

4.5/5

Smart TV and menus

Google TV has good app recommendations, but banner ads are distracting. Good amount of picture settings; sound settings could be confusing for some

4/5

Gaming

Fantastic gaming performance with a good array of features, but only two HDMI 2.1 ports.

4.5/5

Value

Pricier than most rival RGB and OLED TVs, and beyond the budgets of many potential buyers. Very good performance for the price, however

3.5/5

Buy it if...

You want superb picture quality
The Bravia 9 II's rich, gorgeous colors, excellent contrast, OLED-level blacks and impressive backlight control all combine to deliver a near-complete picture experience

You want a TV for bright rooms
The Bravia 9 II's anti-glare screen eliminates mirror-like reflections effectively, which combined with its high brightness, makes it terrific for bright rooms

You want the best of RGB
The Bravia 9 II is the best RGB TV I've tested so far, showing a real evolution of LED, backlit TVs that makes the tech competitive with OLED

Don't buy it if...

You're on a budget
The Bravia 9 II is one of the pricier TVs on the market, with a higher price tag than most rival RGB and OLED TVs in the same sizes.

You have multiple game consoles
The Bravia 9 II only comes with two HDMI 2.1 ports, meaning those with multiple consoles may want to look elsewhere.

You want to watch from an angle
While the Bravia 9 II's backlight control is excellent, there is still some blooming present when viewed off-center. OLED is still the best for off-axis viewing

Also Consider

Sony Bravia 9 II

Samsung R95H

Sony Bravia 7 II

LG G6

Price (65-inch)

$3,599 / £3,499 / AU$5,995

$2,799 / £2,899 / AU$4,495

$2,599 / £2,299 / AU$3,299

$2,499 / £2,699 / AU$4,995

Screen type

RGB LED

Micro RGB

RGB LED

OLED

Refresh rate

120Hz

165Hz

120Hz

165Hz

HDR support

Dolby Vision, HDR10, HLG

HDR10+, HDR10, HLG

Dolby Vision, HDR10, HLG

Dolby Vision, HDR10, HLG

Smart TV

Google TV

One UI Tizen

Google TV

webOS 26

HDMI ports

4 (2x HDMI 2.1)

4 x HDMI 2.1

4 (2x HDMI 2.1)

4x HDMI 2.1

Samsung R95H
One of the Sony Bravia 9 II's main rivals, the Samsung R95H delivers bold colors, solid black levels and an effective anti-glare screen. The R95H is cheaper, and has a more comprehensive feature set for gaming too. That being said, the Bravia 9 II's picture and sound quality are better — but the price difference may be too great for some to ignore.

Read our full Samsung R95H review

Sony Bravia 7 II
The Bravia 7 II is the step-down model to the Bravia 9 II, and while the 7 II doesn't have the 9 II's full picture or sound quality, what it does deliver, at a much cheaper price, is very good indeed, showing what RGB is capable of at this price point. People with bright rooms may want to look elsewhere however, as the Bravia 7 II isn't great with reflections.

Read our full Sony Bravia 7 II review

LG G6
LG's flagship OLED is cheaper than the Bravia 9 II, and has the same rich colors, fantastic contrast and black tones. It's even great for bright rooms, showing only minimal reflections. The G6 is also better for gaming, and comes at a cheaper price. OLED fans will want to pick this, while non-OLED fans may want to opt for the Bravia 9 II.

Read our full LG G6 review

How I tested the Sony Bravia 9 II

(Image credit: Future)
  • Tested over several weeks
  • Tested using different SDR and HDR sources and in varying lighting conditions
  • Measurements taken using Portrait Displays' Calman color calibration software

After spending a few days establishing the Bravia 9 II's best pictures modes (Cinema for brighter rooms and HDR content, Professional for dark-room viewing, and Standard for sport and SDR TV), I watched reference movies and TV shows to test its picture and sound quality.

I used 4K Blu-rays to analyze its color, contrast, detail, motion and backlight control. I also used 4K Blu-rays to analyze its built-in sound quality, in particular using a scene from The Batman.

For gaming, I used an Xbox Series X and played Battlefield V.

Once these tests were complete, I took measurements using a Murideo Six G 8K test pattern generator, Jeti Spectral 15VA Spectroradiometer and Klein K-10A colorimeter (profiled together) and used Portrait Displays' Calman color calibration software to take said measurements.

Brightness measurements were taken using white window patterns in both SDR and HDR, noting results for windows 1-100% in size. These were taken in the TV's Professional, Cinema and Standard modes.

Next, I analyzed its HDR color gamut coverage using both the UHDA-P3 (the standard used to master 4K Blu-ray and digital cinema releases) and BT.2020 ( a wide color-gamut format) color spaces.

After this, I measured the Bravia 9 II's color and grayscale accuracy using the Delta-E averages, which measures the difference between the source test pattern and what's shown on screen.

Finally, I analyzed its input lag in both 4K 60Hz and 1080p 120Hz using a Leo Bodnar 4K HMDI Input Lag Tester.

Read our in-depth overview of how we test TVs at TechRadar.

Categories: Reviews

TDM Neo review: they twist and shout, but they don't sound good

Sat, 10/17/2026 - 12:00
TDM Neo: Two-minute review

If you follow your audio news, no doubt you followed the early-2026 unveiling of the TDM Neo with fascination. It’s a novel audio gadget: it functions both as a loudspeaker and as a pair of headphones, with a neat twisting mechanism folding it or unfolding it between the two.

Months on, and the TDM Neo has been released, so I naturally made sure to test a pair to see how well they work… and unfortunately, I can’t really recommend it to anyone but collectors of neat knicknacks.

The problem is almost entirely in the audio department: the Neo just doesn’t sound good. As a pair of headphones it’s okay, but imprecise in a way that many rivals aren’t. However, when you turn it into a portable speaker, you get a tinny bass-less hiss which even bargain-bin Amazon options beat.

I’ll be forgiving: it’s likely that you can’t get high-tech driver systems in a gadget like this due to its form function. But at the same time, a valid reason for something bad doesn’t mean it’s not bad. Pick up something else from our list of the best Bluetooth speakers, I promise you’ll enjoy it more.

Not helping the Neo's case are a few other imprecisions. Take, for example, the design: the twisting mechanism locks the speaker mostly in place, but not always; it’s a bit loose. This means you don’t always get a secure fit, and the speaker can be quite wobbly.

Another gripe: there’s a TDM app, but to use some of its key features, you need to make an account. You can’t just boot up your speaker and change the EQ, without giving over some of your data. Why?

It’s a real shame that the TDM Neo has these issues, because there are signs that the company put some real thought into the device, with some neat touches. There are some useful in-box extras such as a sturdy carry case and high-quality cables, and some of the features (including different EQ modes per format) let you tweak with the nitty-gritty.

I’d be remiss not to mention the price. It matches top-tier Bluetooth speakers or mid-range headphones, despite the sound and build quality — again, as a proposition it's just really hard to justify.

As a viable consumer product, the TDM Neo isn't easy to recommend. It’s a neat concept, with some thought put into its various departments, but several gaping weaknesses mean you’ll be disappointed if you spent your money on it. Keep your eyes peeled for a Neo 2, though – if TDM fixes these issues, it could make something really special.

TDM Neo review: Price and release date

(Image credit: Future)
  • Unveiled in January 2026, sold from October
  • Available for $249 / £249 (about AU$500)
  • TDM also sells battery replacements

The TDM Neo was initially unveiled at CES 2026 in January of the year, but it took until September for the device to go on sale and October for it to ship.

You can buy the Neo for $249 / £249 (about AU$500, but I can’t find the device available to buy in Australia). It’s a high price, but a little more justified when you consider that you’re getting two devices.

While repairability isn’t touted as one of the Neo’s key features, TDM does sell battery replacement kits online for $29 / £23 (about AU$46) , and has an online guide on how to swap them out. So the brand deserves kudos on the repairability front.

TDM Neo review: Specs

Drivers

40mm / 40mm

Active noise cancellation

No / No

Battery life

16 hours (speaker) 200 hours (headphone)

Weight

340g

Connectivity

3.5mm, USB-C, Bluetooth 6.0

Frequency response

Not specified

Waterproofing

None

TDM Neo review: Features

(Image credit: Future)
  • Incredibly good battery life
  • App brings EP, some extra tools
  • Account required for some features

One real strong suit is the TDM Neo's battery life. You’re looking at 16 hours of listening in speaker mode, which is above-average for a device of this size… and a wild 200 hours of listening when you’re in headphone mode.

That’s right, well over a week straight of listening without having to charge them up, and dwarfing the 100-plus hours the previous frontrunners hit. Helping that figure is the lack of ANC, which is par for the course with on-ears, so nothing to get upset about.

On your smartphone, you can download the TDM. app to get some extra features. I found it a little tricky to locate, since putting ‘TDM’ into the app store brings up loads of options, so make sure to download the option with the full stop after the letters.

(Image credit: Future)

The app offers all the basics: you can see battery level, toggle a low-latency gaming mode, and find the Neo if you’ve mis-placed it. There’s also an option to change what twisting the unit does, away from switching formats as it currently does, and some battery saver modes which are an appreciated rarity.

The equalizer has several presets and space for two custom modes, and I really appreciate that you can set a separate EQ for when the Neo is in headphone mode and when it’s in speaker mode. It’s a neat touch, but it shows that TDM has really thought through the design.

However to actually edit the 5-band equalizer yourself, and also to use the find-device function, you have to create an account and log in on the app. The TDM Neo is an audio gadget; you shouldn’t need to create an account to use all of its features.

  • Features score: 3.5/5
TDM Neo review: Design

(Image credit: Future)
  • Twisty twisty: headphones to speakers using magnets
  • Headphones are fairly sturdy, but a little heavy
  • Speakers feel unstable and wobbly

Well, this is the whole thing of the TDM Neo, isn’t it? They’re designed to be dual-purpose. They begin as headphones, and you twist them into a speaker configuration, wherein the cups are housed in the headphone band and use outward-facing drivers. I’d compare the process most to using those pop-up festival tents: it takes a knack but when you know, you know.

As headphones, they’re fairly sturdy on-ears which are surprisingly comfortable to wear. That’s despite these puppies weighing a fair bit more than the average pair, at 340g. They have a fairly reliable fit, as long as you’re not jogging in these things. A small release catch lets you extend the length of these; I say this because it took me a good week of testing to realize that’s what the buttons do, so if you own a pair, there’s a good chance you missed it.

But twist the Neo into speaker mode, and it’s a different affair. Music automatically switches to play from the speakers when the cups are bent to a certain degree, and two magnets on the band meet (or roughly at that point, although they don’t need to physically touch).

(Image credit: Future)

It’s not a precise science, and every time I twisted the device down, I’d end with the two halves of the speaker in different places; sometimes they were aligned, sometimes not, and sometimes pointed in different angles.

Musically, this doesn’t make much of a difference, but it means the device is weighted in different ways, and doesn’t have a flat base to lean on. As a result, the speaker would be unstable, rocking when I put it down and constantly shaking if it was on a surface that was being jolted (like, say, a table where board games were being played).

On one of the cups there’s an LED indicator and USB-C port, the latter of which is facing directly upwards, so I imagine this is a no-go in rainy environments or anywhere where particles could fall in (there’s no IP rating). The other cup houses a 3.5mm jack, pairing button, volume rocker and power button. The volume and power buttons are made of a cheap-feeling rubber, which quickly looked scuffed on my review unit.

At least it’s a fairly compact speaker, being only slightly bigger than my Tribit Stormbox Micro 3. Several times I took it to other locations, because it’s small enough to carry in a bag fairly comfortably, without taking up too much room.

  • Design score: 3/5
TDM Neo review: Sound quality

(Image credit: Future)
  • Headphones & speakers both have dual 40mm drivers
  • Speakers are tinny, lack much bass
  • Headphones have muddy, rumbly sound

Important context: the TDM Neo has two sets of drivers, and so when you’re in headphone mode, you’re listening to different drivers than when you’re in speaker mode. Otherwise, the room-filling audio would deafen you the first time you put the Neo on your head. Sensible.

This results in two very different sound profiles for the device, even if all four drivers are 40mm ones. Unfortunately, depending on your mode, the sound ranges from ‘not great’ to ‘bad’.

It’s the loudspeaker mode that I’m filing as ‘bad’ – years of using Tribit, JBL or Ultimate Ears speakers has ruined me, it seems. Put frankly, the TDM Neo sounds tinny. It lacks any credible bass to speak of, relying on a steaming pile of treble to pass as a song. But even then, high treble and mid lines are conspicuously absent too.

One of my favorite bands to test hi-fi gadgets with is Morningsiders, as their varied instrumentation (‘band’ instruments with strings, brass, piano, so on) makes it easy to analyze speakers. I wanted to put on one of their songs with a more prominent bassline, to see how the Neo fared, and skipped through nearly an entire album without finding one… until I realized that the Morningsiders weren’t the problem.

In something like Hang the Cedar, bass is only apparent from the void in a track it leaves, while acoustic guitar sounds like a metallic sneeze and even some of the guitar harmonics are missing.

(Image credit: Future)

I don’t like being overly negative in product reviews, and luckily I can calm it, because the headphones don’t sound as bad. I still wouldn’t pick them over… well, much, but I didn’t physically recoil while testing them for this review.

The headphones have bass — in fact, it’s quite prominent, even if you’re not coming straight from the speakers. It’s a little ‘looser’ than I like from bass, sometimes sounding rumbly and imprecise, but it’s certainly powerful. I was half expecting the treble to be missing in compensation, but that’s not the case — it’s not too energetic or sharp, but it completes the V-shape sound profile that ensure the headphones are much more pleasant than the speaker.

Yes, V-shape means that mids are a little lacking, but not to a fault. In Morningsiders’ Four Face Liar, for example, acoustic guitar is barely audible between the bass and vocals. But ‘barely audible’ is still a step above the ‘nonexistent’ bass of the speakers.

With support only for the SBC and AAC codecs, you won’t be able to enjoy high-res music with the Neo. And you’re probably wondering whether the equalizer or presets saves the sound? Unfortunately not, it just exacerbates or masks the issue depending on how you use it.

  • Sound quality: 2.5/5
TDM Neo review: Value

(Image credit: Future)
  • You're getting two devices in one...
  • ... but two devices would be cheaper...
  • ... and they'd work and sound better, too

As mentioned before, the TDM Neo is essentially two devices in one. In the same way that you pay a premium for folding phones, because they’re both smartphones and tablets, you’d expect to pay a little more for a novel hybrid gadget like this.

Saying that, it dashes their appeal against the rocks. You could easily pick up a solid option from our Bluetooth speakers buying guide and one of the best cheap headphones for less; each device would beat the TDM Neo’s audio and design pretty handily

The premium price really doesn’t help the Neo; $249 / £249 is a cost that you’d only really consider going for if you were buying from a big audio brand like Sony or Bose, not a Kickstarter brand selling a rough-and-ready piece of kit. If you find it half price, maybe it’s worth buying; and if you have some unique use case in which you need a 2-in-1, then perhaps pick it up. But if you’re just interested in the novelty, it’s hard to recommend.

  • Value: 3/5
Should I buy the TDM Neo?TDM Neo score card

Attributes

Notes

Rating

Features

The incredible battery life, and a few other neat touches, work well. It's a shame that you need an account to run them.

3.5/5

Design

It's a neat twisty concept, but neither form works well compared to alternatives.

3/5

Sound quality

The speaker sound bad, and the headphones aren't great.

2.5/5

Value

It's a jack of all trades, but a master of none

3/5

Buy them if…

You only have space for one device
I've said you'd be better off buying two devices for the price, but if you literally only have space for one, this is basically your only way of listening to music.

You need headphones with incredible battery
Need a pair of headphones with an absolutely ludicrous battery life? This is it.

Don’t buy them if…

You want good audio
Not everyone buys audio gadgets with sound quality in mind, but if you care even 1% about how your music sounds, you might want to skip these.

You don't want any more accounts
Hate making new accounts for every app, service and feature? Honestly, me too.

TDM Neo review: Also consider

Usually, we'd list several similar gadgets to the reviewed one, which you may want to do instead. However I'm going to do something different here; I'm going to list one speaker and one pair of on-ear headphones, which together cost less than the TDM Neo.

TDM Neo

Tribit Stormbox Micro 3 (speaker)

OneOdio Focus A1 Pro (headphones)

Drivers

40mm

48mm

40mm

Active noise cancellation

No

No

Yes

Battery life (ANC on)

16 hours (speaker) 200 hours (headphone)

24 hours

70 hours (ANC off)

Weight

340g

330g

200g

Connectivity

Bluetooth 6.0, USB-C, 3.5mm

Bluetooth 6.0

Bluetooth 6.0

Waterproofing

N/A

IP68

N/A

Tribit Stormbox Micro 3
This is my go-to portable Bluetooth speaker; it's about a quarter of the price of the Neo, yet sounds far better. It has a useful carry strap and sits nice and flat on a surface. Plus, it's incredibly durable.
Read our full Tribit Stormbox Micro 3 review

OneOdio Focus A1 Pro
For even less money than the Tribit, these are solid on-ear headphones released earlier in year. They sound decent and last for ages, plus weigh far less than the Neo.
Read our full OneOdio Focus A1 Pro review

How I tested the TDM Neo

(Image credit: Future)
  • Tested for over two weeks
  • Paired with Android phone for Bluetooth
  • Used mostly at home, but on some walks too

The testing time for the TDM Neo lasted for two weeks, not including the writing time for the review.

I used the TDM paired with my Samsung Galaxy Z Fold 8, over Bluetooth. Lots of the testing took place at home in speaker mode, but I also used the headphones at home and while going on walks around my local area. Testing was largely done via Spotify, for music and audiobooks, but also on YouTube and several games.

I've been reviewing gadgets for TechRadar since early 2019, and in that time have tested plenty of speakers and headphones.

  • First reviewed in October 2026
Categories: Reviews

Lenovo Yoga Pro 7i Gen 11 Aura Edition OLED laptop review

Sat, 10/17/2026 - 09:25

This is a laptop that's designed for creators who are on the go. The 15-inch screen is big enough to give you enough workspace to do what you need on the go, without being so cumbersome that it won't fit in a standard laptop backpack. 15 inches is usually the sweet spot that makes or breaks whether it fits in a standard bag.

While this may not have full 4K, it has a crisp, color-accurate display, making it fantastic for those who need absolute perfection in color profiles. It is also powerful enough to handle almost anything you throw at it. While it's not designed for the average business user, those who dabble in creative work but still need to get business done can do so with ease on this laptop.

It has enough dedicated GPU to carve through video, enough RAM to run several lines at once, a beautiful enough screen to edit photos without a problem, and a solid enough machine to handle everything else, all in one device.

In short, if you want to get this kind of work done while still on the go, this is the machine for you. If you plan to park it at a desk or workstation most of the time, the 9i may be a better fit. Either way, this is for the creator.

Lenovo Yoga Pro 7i: Price and Availability

The Lenovo Pro 7i Gen 11 Aura Edition is available direct from Lenovo in the US, in the UK, and other territories. Prices start at $2,599.99 / £2,430 for the base configuration.

My review unit, however, had a slight upgrade and was sitting around $2,700. The Yoga Pro 7 could be configured up to a Core Ultra 9 with an RTX 570, 64 GB of RAM, and 2 TB of SSD.

Compared to the Lenovo Yoga Pro 9i Gen 11 Aura Edition I just reviewed, which sits around $3,000 for the same configuration, the Pro 7i saves about $250 for the same CPU, GPU, RAM, and SSD storage.

That means it is up to you whether it's worth saving $250 for giving up an inch of screen, or perhaps gaining an inch of screen for portability, depending on which camp you're in

(Image credit: Collin Probst // Future )Lenovo Yoga Pro 7i: Unboxing and First Impressions

I'll admit it, life has gotten crazy. I've had this laptop in my queue, sitting on my testing desk or in testing, for 178 days.

I've used it for: numerous meetings, a few days in my life to see how it operates, several articles have been written on it, a lot of testing, some benchmarking, thrown in the backpack a couple of times, used it as my main machine while in my home office for a couple of days

All around, this machine runs fantastic. The Luna Gray color is fantastic. It boots quickly, and it runs fast. The 15-inch OLED touchscreen is spectacular and accurate. The colors are incredible, and the ports are great. Overall, it's a laptop most people would dream of having.

I even prefer the 15-inch over the larger 16-inch 9i I just finished testing, though it is still a tad large for my liking. 14-inch seems to be my sweet spot. The 15-inch is still manageable and fits in most full-size laptop backpacks. For example, it fits well in my Nomatic Navigator and my Nomatic backpack.

(Image credit: Collin Probst // Future )Lenovo Yoga Pro 7i: Design and Build Quality

As expected, the keyboard and trackpad are spectacular. Like the 9i variant, the trackpad also doubles as a drawing surface for the Yoga Pen. Since I adjusted on the 9i, it was much easier for me to get used to it. However, as I said in the 9i review, if this is your first time using a drawing surface like this, it will take a second to get used to. It's not quite as seamless as drawing on the screen, but it becomes fairly intuitive after a little use.

The 15-inch 2.5K display is hard to recognize as only 2.5K. It looks significantly nicer than that. It could be because of the colors and the 165 Hz refresh rate, but this display (HDR True Black 1000, 100% sRGB, P3, Adobe RGB, 1,100 nits peak brightness, and PureSight) makes this OLED panel look absolutely spectacular. Unless you know for a fact you need a 4K display, you can use this for creative content pretty easily.

The last thing I'll mention is that the port layout is also what I would hope for. I've never been a fan of laptops that shove ports on the back and make it seem like they're meant to stay stationary on a desk. Even though I love the thinner laptops, I've never been a fan of the laptops that only have USB-C. I get it, and I get what they're going for, but in the professional space, that's really hard to justify.

For ultrabooks, that makes sense, but for professional business laptops or even creative laptops like this one, having only a USB-C means that you are guaranteed to need a dongle. This laptop, though, has a good range of ports for its intended use, and it's designed for that use case, which is ultimately what a laptop should be tested against anyway.

(Image credit: Collin Probst // Future )Lenovo Yoga Pro 7i: In use

I've been able to do some light photo editing and some video editing, and more, on this machine. While creating, I actually did a lot of content approval on this laptop during my testing. My roles in other companies have shifted. For now, I review content my team makes daily, so I appreciate this screen more and more.

The OLED is absolutely spectacular and has made me want an OLED panel for pretty much everything that I have. 165 Hz is also buttery smooth. The RTX 5060 is absurdly powerful. I tested it by running 22 lines of a security system I was setting up for a client without any issues. It barely taxed the memory, and I ran all 22 lines at full speed without any issues.

Of course, because even creatives still need to write some things out, I tested the keyboard thoroughly as well. It's a comfortable keyboard, just as I expected from Lenovo. It's comfortable to use for days on end, hours each day, and you won't need a different laptop keyboard unless you want one purely for aesthetic or ergonomic purposes.

(Image credit: Collin Probst // Future )Lenovo Yoga Pro 7i: Final verdict

The question that we land on is: should you buy this laptop? If you want a more portable but powerful creator workstation that isn't difficult to carry around in a backpack, then yes, you probably should buy this. It does everything mobile photo and video editors will need it to do.

However, if you need the extra screen space afforded by the 9i, I can see why that'd make sense for many deskbound creatives.

Either way, either laptop is a spectacular buy if you're in the creative space and don't need a true 4K display, because the screen itself, with its color accuracy, visuals, and refresh rate, is absolutely gorgeous. You get the reliability and dependability of the Lenovo family, all in a machine designed for creators to do exactly that: create.

Collin Probst // Future Collin Probst // Future Collin Probst // Future Collin Probst // Future Collin Probst // Future Collin Probst // Future

For more creator machines, we've tested the best photo editing laptops and the best laptops for video editing.

Categories: Reviews

Kiwibit Bird Feeder 2 Pro review: sharp 4K detail, choppy video

Sat, 10/17/2026 - 09:00
Kiwibit Bird Feeder 2 Pro: two-minute review

Smart bird feeders have quietly become one of the busiest corners of the camera world. Hang one in your yard, garden or on a balcony railing and it’ll snap and film every feathered visitor automatically, often identifing the species for you, too. We’ve tested plenty of them here at TechRadar — you’ll find the best in our guide to the best bird feeder cameras — and the Kiwibit Bird Feeder 2 Pro is the latest to land in my garden.

If it looks familiar, that’s because it’s clearly a descendant of the Kiwibit Beako, which we tested last year. The headline upgrade is in the camera: Kiwibit says this is the first bird feeder camera to combine 4K HDR with phase-detection autofocus (PDAF), the kind of focusing tech you’ll find in a decent smartphone. The other big change is a roof with solar panels built into it, so there’s no separate panel to mount and wire up.

(Image credit: Future | Sam Kieldsen)

That roof turns out to be one of the feeder’s best features. After an initial charge I never needed to plug it in again during testing, and the battery hovered near full. The rest of the hardware impresses too: the plastic shell is tough and well finished, mounting it took minutes, and lifting out the two-chamber seed hopper for a refill or clean is about as easy as it gets.

The camera is a game of two halves, though. Photos and 4K clips are crisp, and the autofocus generally locks on to birds reliably — though ones that hop right into the seed tray can get too close for it focus. The biggest frustration is motion: 4K is limited to 15 frames per second, which makes footage look juddery, and the 120fps slow-motion mode currently produces clips that are little better than slideshows. The 1080p 60fps mode is the pick of the bunch.

Then there’s the app, which is cluttered and hard to navigate, and keeps its most compelling feature — AI species identification — behind a Kiwibit Plus subscription. That ID system was accurate in my testing, even if it can only name one species per clip. Taken as a whole, the Bird Feeder 2 Pro’s hardware is impressive, but its software and video modes need to catch up.

Kiwibit Bird Feeder 2 Pro: price and availability
  • $279.99 in the US with 'lifetime AI' included, or $219.99 without
  • £289.99 in the UK; launching Q1 2027
  • Kiwibit Plus subscription priced from $7.99 per month

The Kiwibit Bird Feeder 2 Pro is currently on sale in the US for $219.99, or $279.99 with a lifetime subscription to the Kiwibit Plus service. It’s due to arrive in the UK in the first quarter of 2027, priced at £289.99.

That price puts it in premium territory, alongside the likes of the Bird Buddy 2. And there’s a running cost to factor in, because AI species identification and several other app features require a Kiwibit Plus subscription, which costs from $89.99 (a UK price is TBC) per year or $7.99 a month.

Kiwibit Bird Feeder 2 Pro: key specsCamouflage EZ BirdFeed specs

Photo

Up to 12MP

Video

4K at 15fps; 1080p at 60fps or 120fps

Lens

130-degree field of view

Memory

Up to 128GB microSD card (not included)

Dimensions

9.8 x 8.7 x 8.9 inches / 25 x 22 x 22.7cm

Weight

4.08lbs / 1.85kg

Connectivity

USB-C, Dual-band Wi-Fi 6

Battery

5,200mAh battery, 5W solar panel

Kiwibit Bird Feeder 2 Pro: design
  • Solar panels built into the hinged roof
  • Removable 1.7l dual-compartment hopper
  • IP65 rated and works in -4F to 122F (-20C to 50C) temperature range

Side by side with the Kiwibit Beako, the Bird Feeder 2 Pro is almost a dead ringer. The one key difference is up on top, with the solar panels now built into the roof. It’s a smart move that cuts down on clutter, as you don’t need to find somewhere else to mount a panel or route a cable.

The same roof also hides one of the feeder’s best design touches. Flip it up (it just requires you to press a button to release a latch) and you can lift the seed hopper straight out to clean or refill it. That hopper has two compartments, so you can offer two different seed mixes if you like, and each one has its own sliding door for shutting off the supply.

The body is almost entirely plastic, which won’t appeal to everyone. There are wooden and metal bird feeder cameras out there, and personally I’d prefer either material on something that lives in my garden. I also wonder whether the green plastic will fade in the sun over time, although I didn’t notice any change in my few weeks of testing.

Future | Sam KieldsenFuture | Sam KieldsenFuture | Sam KieldsenFuture | Sam Kieldsen

On the plus side, this is solid, hard-wearing plastic, and the feeder feels sturdier than others I’ve reviewed — the hinged roof, for instance, opens and closes without a hint of rattle. It’s IP65 rated and Kiwibit says it’ll work in temperatures from -4F to 122F (-20C to 50C), so bad weather shouldn’t be a worry for the electronics inside.

My review sample came with three mounting options: a fabric strap for wrapping around a tree or lamppost, a pole mount for stick it on the top of poles up to one inch (25.4mm) in diameter, and a wall bracket. I used the bracket to fix the feeder to a trellis against the back wall of my courtyard garden, and it took no time at all. A positioning sticker in the box shows you where to drill two guide holes, then two screws (also supplied) hold the bracket in place. There are wall plugs in the box too, should you need them.

Future | Sam KieldsenFuture | Sam KieldsenFuture | Sam Kieldsen

The feeder itself attaches to the bracket with four small hex screws, and the same screws secure the perch. An Allen key is included in the box, but make sure you keep it somewhere safe or have a spare, as you’ll be in a pickle without one. My sample also came with a water beaker that clips on to the perch.

Power comes from a rechargeable, removable battery that’s topped up by the solar roof panels, and the combination works very well. I fully charged the battery via USB-C before installation, as the manual instructs, and haven’t charged it manually since — weeks later, it’s still sitting at 99% capacity. To be fair, my testing took place in a sunny late summer and early autumn, and I positioned the feeder to catch a few hours of direct sun each day. I’m curious to see how it copes with the gloomier winter months here in southeast England.

Kiwibit Bird Feeder 2 Pro: performance
  • 4K video capped at 15fps
  • AI species ID requires a Kiwibit Plus subscription
  • Phase-detection autofocus with a 130-degree view

Some bird feeder cameras I’ve tested have struggled to stay connected to my home Wi-Fi, but the Bird Feeder 2 Pro’s dual-band connection was stable throughout, even though the signal was rarely at full strength. The live feed kicked in from my phone without much delay, whenever I requested it.

Everything runs through Kiwibit’s app, and frankly it isn’t very well designed. There are too many sections with vague names, I regularly forgot where things lived, and getting to my photos and videos took more taps than it should. A simpler, pared-back layout would make a big difference.

There are some nice touches, mind you. Each species gets a written description, the Nature Expert section answers your bird questions, and the Collection page gives you a quick rundown of every species your camera has spotted. The catch is that many of the best features — especially the AI species identification, which feels like a core reason to buy this feeder — sit behind a Kiwibit Plus subscription. Kiwibit gave me a code for a year’s access, but for everyone else it’s an extra $89.99 on top of an already premium price, and the feeder feels noticeably less capable without it.

Future | Sam KieldsenFuture | Sam KieldsenFuture | Sam KieldsenFuture | Sam KieldsenFuture | Sam KieldsenFuture | Sam Kieldsen

The identification itself was largely accurate. Only five species visited during my testing period, and the feeder correctly named four of them. That one miss was interesting, though: in a clip featuring a robin, a sparrow and a blue tit, only the robin was identified. That was the only clip containing a blue tit, so it appears the system tags just the first species it spots in each video. I’ve no doubt it would have recognized the blue tit on its own, but it’s a shame it can’t log multiple species in one clip.

Image quality is a more complicated story. 4K videos and photos generally look good, with plenty of sharpness and clarity, and the autofocus is accurate. There's even a microphone to capture sound, and it's nice to hear the birds chomping away on seeds or tweeting at each other. But 4K video is capped at just 15fps, which I found baffling. It makes clips look jerky, and it put me off using the 4K mode altogether. Why couldn't it just be 24fps or 30fps?

Future | Sam KieldsenFuture | Sam KieldsenFuture | Sam KieldsenFuture | Sam KieldsenFuture | Sam KieldsenFuture | Sam KieldsenFuture | Sam KieldsenFuture | Sam Kieldsen

Shooting in 4K does have one perk: the software may automatically pull a 12MP Ultra HD “Keyshot” still from your footage. These are sharpened and upscaled for extra detail, but I found them a little over-sharpened, and they’re oddly large files at around 10MB each, given the modest resolution. You can’t pick the frame yourself, either — the software chooses for you, and it doesn’t always choose well. There’s a second type of auto photo, called SwiftShot, which is generated in Ultra Slow Motion mode and is meant to freeze birds in flight. That never happened for me; every SwiftShot I got showed a bird sitting on the feeder, and in noticeable less detail than with the Ultra HD Keyshots.

Video clips are 10 seconds long by default, but extendable to three minutes. I’d have liked to catch birds flying in more often, but my videos generally started with the visitor already perched.

There are two slow-motion modes, both 1080p: 60fps and 120fps. The 120fps mode doesn’t appear to work properly at the time of writing. Whatever settings I tried, the footage seemed to be captured at 15fps, so it plays back like a slideshow when slowed down. I was expecting something akin to the iPhone's buttery-smooth slow-motion mode, but this is in the single digits frames-per-second wise. I’ve reported this to Kiwibit and I hope a firmware update fixes it, because for now it’s useless as a video mode. It may be intended mainly for grabbing crisp stills of birds in motion, but since you can’t choose the frame yourself and have to rely on Kiwibit’s cloud processing to pick it, that’s not much consolation.

The 60fps mode is far better. Played back at half speed you get smooth 30fps slow motion, or at quarter speed you get the same 15fps as the 4K clips. It lacks the fine detail of 4K, but its smoothness at normal and half speed makes it the sweet spot of the lineup for me. One quirk to note: neither slow-motion mode records sound, even when you play clips back at normal speed.

Autofocus is generally reliable, but birds that came right into the seed tray, rather than staying on the perch, were sometimes out of focus. They seem to be inside the minimum focus distance, which was also an issue with the Beako. It’s not a huge deal, but it’s annoying when a bird’s body is sharp and its eyes and beak are soft.

Sharing and saving photos and videos is easy – you just hit the share button when viewing in the app and you get the option to download the file to your phone, or share via a variety of means. Subscribers also get cloud storage for all their files.

Should you buy the Kiwibit Bird Feeder 2 Pro?Buy it if...

You want detailed 4K stills

Its 4K photos are sharp and clear, and the phase-detection autofocus is accurate.

You never want to charge a battery

The solar roof kept the battery near full for weeks without me plugging it in once.

You want easy upkeep

The removable two-chamber hopper makes refilling and cleaning quick and lets you offer two seed mixes.View Deal

Don't buy it if...

You want smooth video

4K is capped at 15fps, and the 120fps slow-motion mode currently plays back like a slideshow.

You don’t want a subscription

AI species identification, a key selling point, is locked behind Kiwibit Plus.

You’d prefer a natural-looking feeder

It’s almost entirely plastic, so look elsewhere if you’d rather have wood or metal in your garden.

Kiwibit Bird Feeder 2 Pro: also consider

Bird Buddy 2

Priced at around $299 / £300, the Bird Buddy 2 also has a solar roof, and its app is far more polished and enjoyable to use, with free AI species ID. Its standard video is only at 1080p resolution, though, with 2K reserved for subscribers.

Read our Bird Buddy 2 review

Camouflage EZ BirdFeed

If you’re in Europe and value matters more than image quality, this £139 feeder is hard to beat. It offers AI bird ID with no subscription and twin roof-mounted solar panels, but its 1080p images can’t match the Kiwibit’s crisp detail.

Read our Camouflage EZ BirdFeed review

How I tested the Kiwibit Bird Feeder 2 Pro

(Image credit: Future | Sam Kieldsen)
  • Mounted on a garden trellis for several weeks in late summer/early fall
  • Tested all video modes, including both slow-motion settings
  • Used the app with a Kiwibit Plus subscription

I installed the Kiwibit Bird Feeder 2 Pro in my garden in southeast England using the supplied wall bracket, fixing it to a trellis in a spot that got a few hours of direct sunlight a day. After fully charging the battery via USB, I left it to run on solar power for the rest of the testing period, which ran through late summer into early autumn.

I tested the feeder with the Kiwibit app on my phone, using a year’s Kiwibit Plus subscription supplied by Kiwibit to access the AI species ID and other premium features. I tried every video mode, including 4K and both 1080p slow-motion settings, compared the automatically generated KeyShot and SwiftShot stills, and checked the AI identifications against the birds I could see in each clip.

  • First reviewed October 2026
Categories: Reviews

Pages