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).

Feed aggregator

New forum topics

Spotify Launches Paid Fan Memberships for Podcast Creators

CNET News - Tue, 10/20/2026 - 16:50
Early adopters are charging $5 per month for premium content, but pricing is up to them.
Categories: Technology

Cloud Strife, Sephiroth and Other FF7 Characters Land on Xbox Game Pass Soon

CNET News - Tue, 10/20/2026 - 15:46
It wouldn’t be Halloween without some spooky games, too, and Xbox Game Pass has you covered.
Categories: Technology

Nigeria confirms an Ebola case in Abuja as a woman arriving from Uganda tests positive

NPR News Headlines - Tue, 10/20/2026 - 15:19

Nigeria is the latest country to report an Ebola case as the outbreak spreads across the region. Kenya confirmed its first case earlier this month and has since recorded nine infections.

(Image credit: Sebastien Kitsa Musayi)

Categories: News

Today’s NYT Wordle Hints, Answer and Help for Wednesday, Oct. 21, #1950

CNET News - Tue, 10/20/2026 - 15:00
Need a Wordle hint today? Get spoiler-free hints for NYT Wordle No. 1,950 on Wednesday, Oct. 21, then the answer, plus yesterday’s word.
Categories: Technology

Acer Googlebook 14 review

TechRadar Reviews - 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

As Midterms Approach, Top American Fears Include AI Interference in the Political Process

CNET News - Tue, 10/20/2026 - 14:28
Some fears remain the same, but new tech-related ones are emerging and climbing the ranks.
Categories: Technology

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

TechRadar Reviews - 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

Apple’s 512GB Mac Studio Is Almost Here: What Buyers Should Know

TechRepublic News - Tue, 10/20/2026 - 13:12

Apple's 512GB Mac Studio is coming in late October 2026. Here's what to know about its M5 Ultra chip, AI capabilities, pricing, and availability.

The post Apple’s 512GB Mac Studio Is Almost Here: What Buyers Should Know appeared first on TechRepublic.

Categories: Technology

Vanessa Kerry is the new WHO envoy for health resilience. What's on her to-do list?

NPR News Headlines - Tue, 10/20/2026 - 11:27

A respected figure in the world of global health, Dr. Kerry takes on a new responsibility. She says it's challenging but not "daunting."

(Image credit: Joel Saget)

Categories: News

'One of the great things about Star Wars is it has all kinds of other opportunities to tell stories in different genres' — Lucasfilm VP says 'the goal' is 'to find the best partner' to make more games like Galactic Racer and Zero Company

TechRadar News - Tue, 10/20/2026 - 10:43
  • Lucasfilm Games vice president Douglas Reilly suggests more Star Wars games could be made following the success of Star Wars: Galactic Racer and Star Wars: Zero Company
  • Reilly says that while "huge triple-A games like Battlefront are always going to be an essential part of the strategy," the "goal" is to find "the best partner"
  • This goes for both triple-A and smaller independent studios

It sounds like Lucasfilm Games wants to release more Star Wars games following the success of Star Wars: Galactic Racer and Star Wars: Zero Company, but it's not necessarily looking for triple-A studio pitches.

That's according to Lucasfilm Games vice president Douglas Reilly, who told The Game Business that games developed by independent studios "very much is part of the strategy."

"Obviously, huge triple-A games like Battlefront are always going to be an essential part of the strategy," Reilly added. "But one of the great things about Star Wars is it has all kinds of other opportunities to tell stories in different genres.

Reilly said, "The goal has been to find the best partner who makes that experience come alive inside the galaxy far, far away," and it doesn't necessarily "have to always be triple-A."

"Sometimes it can be double-A, and it’s really about the experience that we’re delivering and the fantasy we’re fulfilling," he said, adding that Lucasfilm Games has "tried to be more flexible about who we’re willing to take pitches from."

Saber Interactive is quietly working on its Star Wars: Knights of the Old Republic remake, which it confirmed is still in development, while a new game from Arcnaut Studios and Mass Effect trilogy director Casey Hudson, Star Wars: Fate of the Old Republic, is now in the works.

In addition, a new report has now claimed that Destiny developer Bungie and DICE are "aggressively" pursuing a Star Wars: Battlefront 3 project, but official confirmation has yet to come in.

"Good ideas can come from a lot of different places," Reilly continued. "You don’t have to necessarily be a top five publisher to make a great Star Wars game. There are some hurdles.

"We have a high-quality bar, and that means typically we work with more experienced teams than ones with no track record. But we’re exploring all kinds of things, large and small, with partners that are going to surprise folks."

I reviewed both Star Wars: Galactic Racer and Star Wars: Zero Company, and they're among the best games of the year. Galactic Racer is the Star Wars racing game I've always wanted and an exhilarating roguelike racer with endless customization, while Zero Company acts as an excellent companion story to the Clone Wars era with immensely fun turn-based tactics gameplay.

Categories: Technology

'One of the great things about Star Wars is it has all kinds of other opportunities to tell stories in different genres' — Lucasfilm VP says 'the goal' is 'to find the best partner' to make more games like Galactic Racer and Zero Company

TechRadar News - Tue, 10/20/2026 - 10:43
  • Lucasfilm Games vice president Douglas Reilly suggests more Star Wars games could be made following the success of Star Wars: Galactic Racer and Star Wars: Zero Company
  • Reilly says that while "huge triple-A games like Battlefront are always going to be an essential part of the strategy," the "goal" is to find "the best partner"
  • This goes for both triple-A and smaller independent studios

It sounds like Lucasfilm Games wants to release more Star Wars games following the success of Star Wars: Galactic Racer and Star Wars: Zero Company, but it's not necessarily looking for triple-A studio pitches.

That's according to Lucasfilm Games vice president Douglas Reilly, who told The Game Business that games developed by independent studios "very much is part of the strategy."

"Obviously, huge triple-A games like Battlefront are always going to be an essential part of the strategy," Reilly added. "But one of the great things about Star Wars is it has all kinds of other opportunities to tell stories in different genres.

Reilly said, "The goal has been to find the best partner who makes that experience come alive inside the galaxy far, far away," and it doesn't necessarily "have to always be triple-A."

"Sometimes it can be double-A, and it’s really about the experience that we’re delivering and the fantasy we’re fulfilling," he said, adding that Lucasfilm Games has "tried to be more flexible about who we’re willing to take pitches from."

Saber Interactive is quietly working on its Star Wars: Knights of the Old Republic remake, which it confirmed is still in development, while a new game from Arcnaut Studios and Mass Effect trilogy director Casey Hudson, Star Wars: Fate of the Old Republic, is now in the works.

In addition, a new report has now claimed that Destiny developer Bungie and DICE are "aggressively" pursuing a Star Wars: Battlefront 3 project, but official confirmation has yet to come in.

"Good ideas can come from a lot of different places," Reilly continued. "You don’t have to necessarily be a top five publisher to make a great Star Wars game. There are some hurdles.

"We have a high-quality bar, and that means typically we work with more experienced teams than ones with no track record. But we’re exploring all kinds of things, large and small, with partners that are going to surprise folks."

I reviewed both Star Wars: Galactic Racer and Star Wars: Zero Company, and they're among the best games of the year. Galactic Racer is the Star Wars racing game I've always wanted and an exhilarating roguelike racer with endless customization, while Zero Company acts as an excellent companion story to the Clone Wars era with immensely fun turn-based tactics gameplay.

Categories: Technology

Elon Musk's stock grants and Anthropic's public fund are band-aids on an open sore and do not address AI's most fundamental and pressing problems

TechRadar News - Tue, 10/20/2026 - 10:13

AI development and expansion is rocketing across our society, sparkling and bright like a Roman candle, but with its tail on fire. The disruptions are coming so fast, and the concerns are rising so quickly, that no one, not even those running the biggest AI companies, knows what to do. Instead of addressing issues like AI slop, job loss, self-replicating and developing AI running amok, and data centers, these AI bosses have come up with a better solution: cold, hard cash.

On Monday, Elon Musk casually posted on his X platform that he would give one of his SpaceX shares to every child in America, with the promise of more to come. Over at Anthropic, Dario Amodei proposed a public fund built on the value of 5% of his company's shares when it goes public next month.

Next year, I will give one of my SpaceX shares to every kid in America. This will be the first of many.October 19, 2026

Of the two offers, Anthropic has the most obvious value. The company might be worth a trillion dollars when it goes public in November, which means the fund will be close to $50 billion. That's a lot of money.

Whether it's $150 (the approximate value of a SpaceX share) or $5 billion, neither offer actually addresses AI's myriad issues. None of this equals regulation, oversight, a pause, or a concrete global discussion about a technology that may in 12 months' time be able to do any of our jobs, access most of our systems, and start making decisions on our behalf. None address the real-time, growing cybersecurity threats posed by AI that can crack any encryption and set off Denial of Service attacks at unimaginable scales.

But how?

Let’s leave aside all that for a moment and talk about the nuts and bolts of these proposals.

First of all, there’s the question of how Elon Musk is going to give every one of the 72 million children in America a stock grant (assuming — a big assumption — he follows through). There are ways of doing this (custodial accounts, transfer to a brokerage, even platforms like GiveaShare that support stock gifts for children). Trump Account recently did something similar (sort of tiny Individual Retirement Accounts for pint-sized people). However, when those stocks go in there, they're not something the children will access now or in the near future.

What would be the value of $150? A couple of toys, a few outfits? More likely, what’s going to happen here is those SpaceX shares will sit and maybe accumulate value (maybe not), and then, when the child is an adult looking for one of the few jobs AI has not taken over, they’ll use it to help support themselves for a little while. Maybe buy a meal.

Those SpaceX shares will sit and maybe accumulate value (maybe not), and then, when the child is an adult looking for one of the few jobs AI has not taken over

As for Amodei's Anthropic offer, well, it is a lot of money, but once you set up the fund, you’d figure out how to manage it and allocate it. Who is going to control that fund, and how will it be parceled out? Will it, for instance, go to every individual state? Will it go to schools, grade schools, maybe high schools, maybe universities? Will it be used to set up AI curriculum? If so, what curriculum built now will be useful a decade from now? Those billions could be used, but they’ll have to be sort of churned and replenished so that new curriculum could be built (probably by AI).

I’m not saying that’s what’s going to happen because it could just be for job training centers, retraining for new jobs that people have never done before, but that AI cannot reasonably do. Maybe Anthropic will be funding trade schools. I have yet to see an AI plumber or electrician, though I guess eventually the robots will be skilled enough to run a pipe or fix a circuit.

Of the two plans, I have far less confidence in Musk to hand over those 72 million shares because he’s made promises like this before and has not carried through. It becomes a bit of a show, a flurry of hands and a digital wink to convince people that he actually cares, but there’s no indication that he really does beyond the growth of his company and personal wealth.

Money for something

Now, these things are not mutually exclusive. I do believe we need money to help retrain vast workforces in this AI age, and that should happen sooner as opposed to later. And sure, you know, giving a child a share is not a terrible gesture, a little something to put aside for later, for a rainy day, or a day when they realize that the AI is in control and the only way they can buy food is directly from another person because the AI is running the grocery store.

I have yet to see an AI plumber or electrician, though I guess eventually the robots will be skilled enough to run a pipe or fix a circuit.

Maybe though, Anthropic's Fund could be used to figure out a better, more environmentally and community-friendly way to build data centres, perhaps in places where both people and wildlife don’t need to live (space, underground). I don’t know what the answer is to that, but that research needs to happen.

It’s unclear if either one of these monetary plans will actually come through, but one thing I can guarantee is that AI is not slowing down. Yes, there’s probably a coming correction, and there may be more consolidation, but the trajectory is set. It will continue, and if we don’t get people together to actually talk about how we’re managing this revolution, no amount of money is going to solve our AI problems.

Categories: Technology

Elon Musk's stock grants and Anthropic's public fund are band-aids on an open sore and do not address AI's most fundamental and pressing problems

TechRadar News - Tue, 10/20/2026 - 10:13

AI development and expansion is rocketing across our society, sparkling and bright like a Roman candle, but with its tail on fire. The disruptions are coming so fast, and the concerns are rising so quickly, that no one, not even those running the biggest AI companies, knows what to do. Instead of addressing issues like AI slop, job loss, self-replicating and developing AI running amok, and data centers, these AI bosses have come up with a better solution: cold, hard cash.

On Monday, Elon Musk casually posted on his X platform that he would give one of his SpaceX shares to every child in America, with the promise of more to come. Over at Anthropic, Dario Amodei proposed a public fund built on the value of 5% of his company's shares when it goes public next month.

Next year, I will give one of my SpaceX shares to every kid in America. This will be the first of many.October 19, 2026

Of the two offers, Anthropic has the most obvious value. The company might be worth a trillion dollars when it goes public in November, which means the fund will be close to $50 billion. That's a lot of money.

Whether it's $150 (the approximate value of a SpaceX share) or $5 billion, neither offer actually addresses AI's myriad issues. None of this equals regulation, oversight, a pause, or a concrete global discussion about a technology that may in 12 months' time be able to do any of our jobs, access most of our systems, and start making decisions on our behalf. None address the real-time, growing cybersecurity threats posed by AI that can crack any encryption and set off Denial of Service attacks at unimaginable scales.

But how?

Let’s leave aside all that for a moment and talk about the nuts and bolts of these proposals.

First of all, there’s the question of how Elon Musk is going to give every one of the 72 million children in America a stock grant (assuming — a big assumption — he follows through). There are ways of doing this (custodial accounts, transfer to a brokerage, even platforms like GiveaShare that support stock gifts for children). Trump Account recently did something similar (sort of tiny Individual Retirement Accounts for pint-sized people). However, when those stocks go in there, they're not something the children will access now or in the near future.

What would be the value of $150? A couple of toys, a few outfits? More likely, what’s going to happen here is those SpaceX shares will sit and maybe accumulate value (maybe not), and then, when the child is an adult looking for one of the few jobs AI has not taken over, they’ll use it to help support themselves for a little while. Maybe buy a meal.

Those SpaceX shares will sit and maybe accumulate value (maybe not), and then, when the child is an adult looking for one of the few jobs AI has not taken over

As for Amodei's Anthropic offer, well, it is a lot of money, but once you set up the fund, you’d figure out how to manage it and allocate it. Who is going to control that fund, and how will it be parceled out? Will it, for instance, go to every individual state? Will it go to schools, grade schools, maybe high schools, maybe universities? Will it be used to set up AI curriculum? If so, what curriculum built now will be useful a decade from now? Those billions could be used, but they’ll have to be sort of churned and replenished so that new curriculum could be built (probably by AI).

I’m not saying that’s what’s going to happen because it could just be for job training centers, retraining for new jobs that people have never done before, but that AI cannot reasonably do. Maybe Anthropic will be funding trade schools. I have yet to see an AI plumber or electrician, though I guess eventually the robots will be skilled enough to run a pipe or fix a circuit.

Of the two plans, I have far less confidence in Musk to hand over those 72 million shares because he’s made promises like this before and has not carried through. It becomes a bit of a show, a flurry of hands and a digital wink to convince people that he actually cares, but there’s no indication that he really does beyond the growth of his company and personal wealth.

Money for something

Now, these things are not mutually exclusive. I do believe we need money to help retrain vast workforces in this AI age, and that should happen sooner as opposed to later. And sure, you know, giving a child a share is not a terrible gesture, a little something to put aside for later, for a rainy day, or a day when they realize that the AI is in control and the only way they can buy food is directly from another person because the AI is running the grocery store.

I have yet to see an AI plumber or electrician, though I guess eventually the robots will be skilled enough to run a pipe or fix a circuit.

Maybe though, Anthropic's Fund could be used to figure out a better, more environmentally and community-friendly way to build data centres, perhaps in places where both people and wildlife don’t need to live (space, underground). I don’t know what the answer is to that, but that research needs to happen.

It’s unclear if either one of these monetary plans will actually come through, but one thing I can guarantee is that AI is not slowing down. Yes, there’s probably a coming correction, and there may be more consolidation, but the trajectory is set. It will continue, and if we don’t get people together to actually talk about how we’re managing this revolution, no amount of money is going to solve our AI problems.

Categories: Technology

Cyberpunk Edgerunners Season 2 preview: greatest binge watch of your life

TechRadar News - Tue, 10/20/2026 - 09:55

When you create a smash-hit like Season 1 of Cyberpunk Edgerunners, returning for a second outing was never going to be easy. Setting the bar so high you’ll need top-shelf cybernetics to make that leap — but with Edgerunners Season 2, Studio Trigger yet again proves why it stands alone as master animators of high-octane action that is as visually stunning as it is visceral.

The story itself will be familiar in theme and setting to fans of Edgerunner's first outing, but the series is more of an anthology than direct follow-ons to what came before. The events of the first season are referenced — David is a known Night City legend by characters in the show — but don’t expect to see any follow-ups on Lucy or other stories.

Instead Edgerunners gives us a whole new cast — focused on budding videographer Roman, the chrome-obsessed renegade Talia, cyberpsychosis-survivor King, and revenge-fuelled netrunner D — whose individual stories cross and diverge as the events of Season 2 unfold.

(Image credit: Netflix / CDPR)

Don’t worry, things are easy to follow, and the plots develop at an excellent pace — keeping you engaged while also making sure characters aren’t abandoned for longer than you want.

To some extent, you *could* start here considering the disconnect to Season 1, but (1) you’ll be missing out on a phenomenal season of animated TV, and (2) while the characters don’t make a return, the world of Cyberpunk and Night City and its factions do.

More generally, Season 2 is fuelled by the same themes as its predecessor, and there are familiarities between the new cast and Maine’s crew. There’s naivety and dreams of a different world to what exists, grizzled veterans and long-standing grudges between factions, and a looming sense of inevitable tragedy that seems to eventually catch up with everyone in Night City.

The context of Season 1 will help you better appreciate Season 2, even if it isn’t necessarily required reading (though required or not, you’re depriving yourself if you skip it).

(Image credit: Netflix / CDPR)

I’m aiming to keep things spoiler-lite for this preview, so I’ll cut myself off here before I get into more specific plot details and shift gear to the animation.

Simply put: it’s sublime.

Studio Trigger is well known for its dazzling action — delivering artistically beautiful scenes of violence, but also graphically gory fight scenes that make it clear you never want to be on the wrong side of a gunfight.

Each combat encounter is unique too, with Studio Trigger finding ways to keep its action constantly feeling fresh rather than just repetitive brawls and shootouts, thanks to engaging set pieces and aesthetic flashes that make every gory execution different from the last.

This was showcased in Season 1, and that same mastery is present in Season 2. But I love the artistic approaches taken in the show’s calmer moments too. The grainy film footage effect of Roman’s recordings gives the technofuturistic events an appropriately vintage quality; D’s traumatic and hazy flashbacks are rendered with minimal, blocky colors and silhouettes.

(Image credit: Netflix / CDPR)

There are also playful ‘anime moments.’ Roman’s over-the-top visual reaction to hearing of a rare 35mm camera almost doesn’t fit the gritty reality around him, but helps to cement his position of child-like wonder — one that has yet to be corrupted by the harsh reality of Night City.

In every case these artistic choices don’t add to a frenetic chaos — they emphasise moments both in and out of action, provide a deeper insight into the psyche of the characters, and bring the world of Cyberpunk Edgerunners to life in all its technofuturistic glory.

If you have a Netflix subscription and haven’t experienced Cyberpunk Edgerunners yet, you’re doing yourself a disservice — stop reading and get over there. Season 1 and now Season 2 are masterclasses in animated excellence that are sure to delight fans and non-fans of anime alike.

Heck, they’re worth subscribing to Netflix if you don’t already for a month to catch it all. It’ll be the best binge-watch of your life.

Categories: Technology

Cyberpunk Edgerunners Season 2 preview: greatest binge watch of your life

TechRadar News - Tue, 10/20/2026 - 09:55

When you create a smash-hit like Season 1 of Cyberpunk Edgerunners, returning for a second outing was never going to be easy. Setting the bar so high you’ll need top-shelf cybernetics to make that leap — but with Edgerunners Season 2, Studio Trigger yet again proves why it stands alone as master animators of high-octane action that is as visually stunning as it is visceral.

The story itself will be familiar in theme and setting to fans of Edgerunner's first outing, but the series is more of an anthology than direct follow-ons to what came before. The events of the first season are referenced — David is a known Night City legend by characters in the show — but don’t expect to see any follow-ups on Lucy or other stories.

Instead Edgerunners gives us a whole new cast — focused on budding videographer Roman, the chrome-obsessed renegade Talia, cyberpsychosis-survivor King, and revenge-fuelled netrunner D — whose individual stories cross and diverge as the events of Season 2 unfold.

(Image credit: Netflix / CDPR)

Don’t worry, things are easy to follow, and the plots develop at an excellent pace — keeping you engaged while also making sure characters aren’t abandoned for longer than you want.

To some extent, you *could* start here considering the disconnect to Season 1, but (1) you’ll be missing out on a phenomenal season of animated TV, and (2) while the characters don’t make a return, the world of Cyberpunk and Night City and its factions do.

More generally, Season 2 is fuelled by the same themes as its predecessor, and there are familiarities between the new cast and Maine’s crew. There’s naivety and dreams of a different world to what exists, grizzled veterans and long-standing grudges between factions, and a looming sense of inevitable tragedy that seems to eventually catch up with everyone in Night City.

The context of Season 1 will help you better appreciate Season 2, even if it isn’t necessarily required reading (though required or not, you’re depriving yourself if you skip it).

(Image credit: Netflix / CDPR)

I’m aiming to keep things spoiler-lite for this preview, so I’ll cut myself off here before I get into more specific plot details and shift gear to the animation.

Simply put: it’s sublime.

Studio Trigger is well known for its dazzling action — delivering artistically beautiful scenes of violence, but also graphically gory fight scenes that make it clear you never want to be on the wrong side of a gunfight.

Each combat encounter is unique too, with Studio Trigger finding ways to keep its action constantly feeling fresh rather than just repetitive brawls and shootouts, thanks to engaging set pieces and aesthetic flashes that make every gory execution different from the last.

This was showcased in Season 1, and that same mastery is present in Season 2. But I love the artistic approaches taken in the show’s calmer moments too. The grainy film footage effect of Roman’s recordings gives the technofuturistic events an appropriately vintage quality; D’s traumatic and hazy flashbacks are rendered with minimal, blocky colors and silhouettes.

(Image credit: Netflix / CDPR)

There are also playful ‘anime moments.’ Roman’s over-the-top visual reaction to hearing of a rare 35mm camera almost doesn’t fit the gritty reality around him, but helps to cement his position of child-like wonder — one that has yet to be corrupted by the harsh reality of Night City.

In every case these artistic choices don’t add to a frenetic chaos — they emphasise moments both in and out of action, provide a deeper insight into the psyche of the characters, and bring the world of Cyberpunk Edgerunners to life in all its technofuturistic glory.

If you have a Netflix subscription and haven’t experienced Cyberpunk Edgerunners yet, you’re doing yourself a disservice — stop reading and get over there. Season 1 and now Season 2 are masterclasses in animated excellence that are sure to delight fans and non-fans of anime alike.

Heck, they’re worth subscribing to Netflix if you don’t already for a month to catch it all. It’ll be the best binge-watch of your life.

Categories: Technology

China’s MiniMax Says Its New AI Model Cuts Agent Costs by 70%

TechRepublic News - Tue, 10/20/2026 - 09:34

MiniMax launches M3.1 Flash with claims of faster, cheaper AI agents. See how its pricing, benchmarks, and reliability compare with enterprise requirements.

The post China’s MiniMax Says Its New AI Model Cuts Agent Costs by 70% appeared first on TechRepublic.

Categories: Technology

The newest AdGuard VPN update makes catching discounts and toggling connections faster than ever

TechRadar News - Tue, 10/20/2026 - 09:30
  • AdGuard VPN's v2.17 update improves both iOS and Android platforms simultaneously.
  • iOS users get revamped Shortcuts, allowing one-tap connections, Home Screen widgets, and Siri voice commands.
  • Android users can now spot promotional discounts directly inside the app, while both platforms benefit from expanded non-Latin script domain exclusions.

AdGuard has just launched version 2.17 of its virtual private network app, and this time, the privacy company is taking a unified approach.

For the first time, the release rolls out simultaneously for both iOS and Android devices. Moving forward, the provider says it will "keep updates for both platforms in sync to bring you key features and improvements faster."

For iPhone and iPad users, the standout feature is a revamped Shortcuts integration that lets you control your secure connection with just one tap or a simple voice command.

Meanwhile, Android users are getting a streamlined way to snag cheaper subscription deals, alongside improved split-tunneling exclusions for international websites across both operating systems.

Speeding up your connection on iOS

If you regularly toggle your VPN on and off to use local services, the process can quickly become tedious.

As AdGuard points out in its official release post, jumping between your privacy tunnel and restrictive local services can be a chore: "You start the day with AdGuard VPN on. Then you need it off for a few minutes to check your bank account, so you open the app, tap Disconnect, open the banking app, close the banking app, open the AdGuard VPN app again, and tap Connect."

To bypass this daily annoyance, version 2.17 introduces improved Shortcuts for iOS. Users can now place a Connect, Disconnect, or Toggle button directly on their Home Screen or within their phone's Control Center.

You can even set up background automations to ensure the VPN turns itself on the moment you open a specific application or connect to an unfamiliar public Wi-Fi network.

If tapping a widget is still too much effort, the update also brings full Siri integration to the table. By diving into the app's settings menu, you can record custom voice triggers, such as "Hey Siri, connect to AdGuard VPN", to control your privacy completely hands-free.

While we noted in our latest AdGuard VPN review that the service had room to grow against industry giants, quality-of-life updates like these certainly push it in the right direction.

Smarter exclusions and easier savings

While Apple users get the flashy widgets, the Android camp hasn't been entirely left out.

Finding a good deal on a digital privacy subscription usually requires hunting through promotional emails or constantly refreshing a provider's website. Now, AdGuard VPN will display active promotions and discounts directly on the purchase screen inside the Android app.

Finally, the v2.17 update brings a highly requested technical tweak to both the iOS and Android platforms. AdGuard's Exclusions feature, which allows you to choose which websites automatically bypass the encrypted tunnel, now fully supports domains written in non-Latin scripts. This means users can seamlessly whitelist domains like *.рф for Russia and *.中国 for China without the application returning an error.

The version 2.17 update is available to download right now. If you spot any bugs, the provider encourages users to submit feedback directly through its social media channels or via its GitHub repositories.

Categories: Technology

The newest AdGuard VPN update makes catching discounts and toggling connections faster than ever

TechRadar News - Tue, 10/20/2026 - 09:30
  • AdGuard VPN's v2.17 update improves both iOS and Android platforms simultaneously.
  • iOS users get revamped Shortcuts, allowing one-tap connections, Home Screen widgets, and Siri voice commands.
  • Android users can now spot promotional discounts directly inside the app, while both platforms benefit from expanded non-Latin script domain exclusions.

AdGuard has just launched version 2.17 of its virtual private network app, and this time, the privacy company is taking a unified approach.

For the first time, the release rolls out simultaneously for both iOS and Android devices. Moving forward, the provider says it will "keep updates for both platforms in sync to bring you key features and improvements faster."

For iPhone and iPad users, the standout feature is a revamped Shortcuts integration that lets you control your secure connection with just one tap or a simple voice command.

Meanwhile, Android users are getting a streamlined way to snag cheaper subscription deals, alongside improved split-tunneling exclusions for international websites across both operating systems.

Speeding up your connection on iOS

If you regularly toggle your VPN on and off to use local services, the process can quickly become tedious.

As AdGuard points out in its official release post, jumping between your privacy tunnel and restrictive local services can be a chore: "You start the day with AdGuard VPN on. Then you need it off for a few minutes to check your bank account, so you open the app, tap Disconnect, open the banking app, close the banking app, open the AdGuard VPN app again, and tap Connect."

To bypass this daily annoyance, version 2.17 introduces improved Shortcuts for iOS. Users can now place a Connect, Disconnect, or Toggle button directly on their Home Screen or within their phone's Control Center.

You can even set up background automations to ensure the VPN turns itself on the moment you open a specific application or connect to an unfamiliar public Wi-Fi network.

If tapping a widget is still too much effort, the update also brings full Siri integration to the table. By diving into the app's settings menu, you can record custom voice triggers, such as "Hey Siri, connect to AdGuard VPN", to control your privacy completely hands-free.

While we noted in our latest AdGuard VPN review that the service had room to grow against industry giants, quality-of-life updates like these certainly push it in the right direction.

Smarter exclusions and easier savings

While Apple users get the flashy widgets, the Android camp hasn't been entirely left out.

Finding a good deal on a digital privacy subscription usually requires hunting through promotional emails or constantly refreshing a provider's website. Now, AdGuard VPN will display active promotions and discounts directly on the purchase screen inside the Android app.

Finally, the v2.17 update brings a highly requested technical tweak to both the iOS and Android platforms. AdGuard's Exclusions feature, which allows you to choose which websites automatically bypass the encrypted tunnel, now fully supports domains written in non-Latin scripts. This means users can seamlessly whitelist domains like *.рф for Russia and *.中国 for China without the application returning an error.

The version 2.17 update is available to download right now. If you spot any bugs, the provider encourages users to submit feedback directly through its social media channels or via its GitHub repositories.

Categories: Technology

Google’s AI Agents Finally Beat Minecraft. It Took 27 Hours and 605 Deaths

TechRepublic News - Tue, 10/20/2026 - 09:27

Four Google DeepMind AI agents defeated Minecraft's Ender Dragon after 27 hours and 605 deaths, revealing both the promise and limitations of autonomous AI.

The post Google’s AI Agents Finally Beat Minecraft. It Took 27 Hours and 605 Deaths appeared first on TechRepublic.

Categories: Technology

Cloudways web hosting (2026) review

TechRadar Reviews - 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

Pages

Subscribe to The Vortex aggregator