/*
  Computer Modules site stylesheet. One file, no external requests. Design plan:
  Palette: ink #0B1021 (hero, footer, closing band), paper #F6F7F9 (page), white surfaces (cards, tables,
    panels), graphite #2B3141 (secondary text), blue #1443A8 (links, primary buttons, active state),
    cyan #7CE0FF (hero and tiny LED dots only, never text on white), hairline #E3E7EE.
  Type: Manrope variable, one family. Display at 800, letter spacing -0.035em, line height 1.02 at the top
    of the scale. Body 400 at 17px / 1.6. Spec tables, labels and badges 15px; nothing on the site is set
    below 15px. Figures and part numbers 600 with tabular numerals, no monospace.
    Scale: 15, 17, 20, 24, 26, 32, 36, 44, 60. Prose measures at most 72ch.
  Layout: 1240 content width, everything left aligned, section rhythm 96 / 64 / 48, breakpoints 1240, 960, 600.
  Surfaces: cards and panels are white with a 1px hairline and a 12px radius, never a drop shadow. The only
    shadows belong to the nav dropdown and the scrolled header, because they float. Index lists (Shop by GPU,
    Solutions) are ruled, not carded: hairlines between rows, no box.
  Colour: blue is for the primary button, links in running text and focus. Tile links, card links and
    secondary actions are ink. Cyan is light and lives only on ink (hero, closing band LED).
  Signature: the spec table. No card around it: a 2px ink rule opens each group, hairlines between rows,
    200px label column in graphite, every figure in tabular numerals. Highlights, facts and card specs echo it.
  Motion: only in answer to the user. Dropdown fade and rise, the search bar opening, the mobile menu and
    filter panel opening, filter reflow, the add confirmation, the quote count pop. Nothing moves on scroll.
  Every page ends the way the home page starts: the closing quote band and the footer are ink.
*/

@font-face {
  font-family: "Manrope";
  /* The woff2 is inlined because Chromium refuses cross origin font loads from file:// and the site must open from a folder. Source file: src/fonts/manrope-latin-wght-normal.woff2 */
  src: url(data:font/woff2;base64,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) format('woff2');
  font-weight: 200 900;
  font-style: normal;
  font-display: swap;
}

:root {
  --ink: #0B1021;
  --paper: #F6F7F9;
  --white: #FFFFFF;
  --graphite: #2B3141;
  --quiet: #5E6678;
  --blue: #1443A8;
  --blue-deep: #0F3486;
  --blue-pale: #E9EFF9;
  --panel: #EEF1F6;
  --cyan: #7CE0FF;
  --hairline: #E3E7EE;
  --rule: #C9D0DB;
  --on-ink: #C5CBD8;
  --on-ink-quiet: #9CA3B4;
  --amber-fg: #7A4F00;
  --font: "Manrope", "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
  --mono: ui-monospace, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace;
  --wrap: 1240px;
  --gutter: 24px;
  --radius: 12px;
  --radius-s: 8px;
  --header-h: 72px;
  --section: 96px;
  --ease: cubic-bezier(0.2, 0.7, 0.2, 1);
  --led: 0 0 0 3px rgba(124, 224, 255, 0.22), 0 0 10px rgba(124, 224, 255, 0.55);
}

/* ---------- base ---------- */

*, *::before, *::after { box-sizing: border-box; }
/* Anchor jumps are plain; the jump nav scrolls smoothly from site.js and respects reduced motion there. */
html { -webkit-text-size-adjust: 100%; scroll-padding-top: calc(var(--header-h) + 24px); }
/* Short pages (404, empty search) still end on the ink footer: the main column grows to fill the viewport. */
body {
  margin: 0;
  min-height: 100vh;
  display: flex;
  flex-direction: column;
  font-family: var(--font);
  font-size: 17px;
  line-height: 1.6;
  color: var(--ink);
  background: var(--paper);
  font-feature-settings: "kern";
}
main { flex: 1 0 auto; }
.site-header, .site-footer { flex: none; }
img, svg { display: block; max-width: 100%; height: auto; }
a { color: var(--blue); text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 0.16em; text-decoration-color: rgba(20, 67, 168, 0.45); }
a:hover { color: var(--blue-deep); text-decoration-color: currentColor; }
:focus-visible { outline: 2px solid var(--blue); outline-offset: 3px; }
/* The ring follows each element's own corners (12px on tiles and cards); plain text links and ruled rows get a 4px corner. */
p a:focus-visible, li a:focus-visible, td a:focus-visible, th a:focus-visible, .link-btn:focus-visible, .card-link:focus-visible, .section-link:focus-visible, .breadcrumbs a:focus-visible, .gpu-tile:focus-visible, .solution-list a:focus-visible, .guide-list a:focus-visible, .toc a:focus-visible, .jump-nav a:focus-visible { border-radius: 4px; }
button { font: inherit; color: inherit; }
button, input, select, textarea { font-family: inherit; }
::selection { background: var(--cyan); color: var(--ink); }

h1, h2, h3, h4 { margin: 0 0 0.5em; font-weight: 800; letter-spacing: -0.025em; line-height: 1.1; color: var(--ink); text-wrap: balance; }
h1 { font-size: 60px; letter-spacing: -0.035em; line-height: 1.02; }
h2 { font-size: 32px; letter-spacing: -0.03em; line-height: 1.08; }
h3 { font-size: 20px; font-weight: 700; letter-spacing: -0.015em; line-height: 1.3; }
h4 { font-size: 17px; font-weight: 700; letter-spacing: -0.01em; line-height: 1.4; }
p { margin: 0 0 1em; text-wrap: pretty; }
ul, ol { margin: 0 0 1em; padding-left: 1.25em; }
dl { margin: 0; }
table { border-collapse: collapse; width: 100%; }
strong { font-weight: 700; }
code { font-family: var(--mono); font-size: 0.92em; }
.fig { font-weight: 600; font-variant-numeric: tabular-nums; letter-spacing: 0; }
.nb { white-space: nowrap; }
.visually-hidden { position: absolute !important; width: 1px; height: 1px; margin: -1px; padding: 0; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }
[hidden] { display: none !important; }

.wrap { max-width: var(--wrap); margin: 0 auto; padding-left: var(--gutter); padding-right: var(--gutter); }
/* A narrow wrap keeps the left edge of the content column; only its children are limited to a reading measure. */
.wrap-narrow > * { max-width: 820px; }

/* Skip link */
.skip-link { position: absolute; left: 12px; top: -80px; z-index: 100; background: var(--ink); color: #fff; padding: 12px 16px; border-radius: var(--radius-s); text-decoration: none; font-weight: 600; }
.skip-link:focus { top: 12px; color: #fff; outline-color: var(--cyan); }

/* ---------- buttons ---------- */

.btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 8px;
  min-height: 44px; padding: 10px 20px; border-radius: var(--radius-s); border: 1px solid transparent;
  font-size: 15px; font-weight: 600; line-height: 1.2; letter-spacing: -0.005em; text-decoration: none; text-align: center; cursor: pointer;
  transition: background-color 160ms var(--ease), border-color 160ms var(--ease), color 160ms var(--ease);
}
.btn-primary { background: var(--blue); color: #fff; border-color: var(--blue); }
.btn-primary:hover { background: var(--blue-deep); border-color: var(--blue-deep); color: #fff; }
.btn-secondary { background: #fff; color: var(--ink); border-color: var(--rule); }
.btn-secondary:hover { border-color: var(--ink); color: var(--ink); }
.btn.is-added, .btn.is-added:hover { background: var(--ink); border-color: var(--ink); color: #fff; white-space: nowrap; }
.btn.is-added::before { content: ""; flex: none; width: 7px; height: 12px; margin-top: -4px; border: solid #fff; border-width: 0 2px 2px 0; transform: rotate(45deg); }
.link-btn { background: none; border: 0; padding: 0; color: var(--blue); font-size: 15px; font-weight: 600; text-decoration: underline; text-underline-offset: 0.16em; text-decoration-color: rgba(20, 67, 168, 0.45); cursor: pointer; }
.link-btn:hover { color: var(--blue-deep); text-decoration-color: currentColor; }
.link-ext { font-weight: 600; }
/* Ink text links for tiles, cards and section corners: underline on hover, never blue. */
.card-link, .section-link, .line-tile-link { color: var(--ink); font-size: 15px; font-weight: 600; text-decoration: none; }
.card-link:hover, .section-link:hover { color: var(--ink); text-decoration: underline; text-underline-offset: 0.16em; }
/* The 40px add to quote list button: a plus that becomes a check. */
.icon-btn { flex: none; display: inline-grid; place-items: center; width: 40px; height: 40px; padding: 0; border: 1px solid var(--rule); border-radius: 50%; background: #fff; color: var(--ink); cursor: pointer; transition: border-color 160ms var(--ease), background-color 160ms var(--ease), color 160ms var(--ease); }
.icon-btn:hover { border-color: var(--ink); }
.icon-btn .ic { grid-area: 1 / 1; }
.icon-btn .ic-check { display: none; }
.icon-btn.is-added { background: var(--ink); border-color: var(--ink); color: #fff; }
.icon-btn.is-added .ic-plus { display: none; }
.icon-btn.is-added .ic-check { display: block; }

/* ---------- badges: the three availability exceptions, ink text with a dot, no fill ---------- */

.badge { display: inline-flex; align-items: center; gap: 8px; min-height: 24px; padding: 0; font-size: 15px; font-weight: 600; line-height: 1.2; color: var(--ink); white-space: nowrap; }
.badge::before { content: ""; flex: none; width: 6px; height: 6px; border-radius: 50%; background: currentColor; }

/* ---------- header ---------- */

.site-header { position: sticky; top: 0; z-index: 40; background: #fff; border-bottom: 1px solid var(--hairline); transition: box-shadow 200ms var(--ease); }
.site-header.is-scrolled { box-shadow: 0 8px 24px rgba(11, 16, 33, 0.07); }
.header-row { display: flex; align-items: center; gap: 16px; height: var(--header-h); }
.logo { display: inline-flex; align-items: center; flex: none; min-height: 44px; border-radius: 4px; }
.logo img { width: 176px; height: 24px; }

.site-nav { flex: 1 1 auto; min-width: 0; display: flex; justify-content: center; }
.nav-list { list-style: none; margin: 0; padding: 0; display: flex; align-items: center; gap: 0; }
.nav-item { position: relative; display: flex; align-items: center; }
.nav-item > a { display: inline-flex; align-items: center; height: 40px; padding: 0 8px; border-radius: var(--radius-s); color: var(--ink); text-decoration: none; font-size: 15px; font-weight: 500; letter-spacing: -0.01em; white-space: nowrap; transition: color 120ms var(--ease), background-color 120ms var(--ease); }
.nav-item > a:hover { color: var(--ink); background: var(--paper); }
.nav-expand { border: 0; background: none; width: 20px; height: 40px; padding: 0; margin-left: -8px; cursor: pointer; display: inline-flex; align-items: center; justify-content: center; border-radius: 6px; color: var(--quiet); }
.nav-expand:hover { color: var(--ink); }
.chev { width: 7px; height: 7px; border-right: 1.5px solid currentColor; border-bottom: 1.5px solid currentColor; transform: translateY(-2px) rotate(45deg); }
/* The Servers dropdown: 56px rows, a 40px chassis drawing, the name and one line on what the class is for. */
.nav-sub {
  list-style: none; margin: 0; padding: 8px; position: absolute; top: calc(100% + 16px); left: 0; min-width: 360px; z-index: 30;
  background: #fff; border: 1px solid var(--hairline); border-radius: 10px; box-shadow: 0 16px 40px rgba(11, 16, 33, 0.12), 0 2px 6px rgba(11, 16, 33, 0.06);
  opacity: 0; visibility: hidden; transform: translateY(4px);
  transition: opacity 160ms var(--ease), transform 160ms var(--ease), visibility 0s linear 160ms;
}
.nav-sub::before { content: ""; position: absolute; left: 0; right: 0; top: -16px; height: 16px; }
.nav-item.is-open > .nav-sub, .nav-item.has-children:hover > .nav-sub, .nav-item.has-children:focus-within > .nav-sub { opacity: 1; visibility: visible; transform: none; transition-delay: 0s, 0s, 0s; }
.nav-sub a { display: flex; align-items: center; gap: 14px; min-height: 56px; padding: 6px 12px 6px 8px; border-radius: 6px; color: var(--ink); text-decoration: none; }
.nav-sub a:hover { background: var(--paper); color: var(--ink); }
.nav-sub-illus { flex: none; width: 40px; height: 30px; object-fit: contain; border-radius: 4px; }
.nav-sub-text { display: flex; flex-direction: column; gap: 1px; min-width: 0; }
.nav-sub-name { font-size: 15px; font-weight: 600; line-height: 1.3; }
.nav-sub-line { font-size: 15px; font-weight: 400; line-height: 1.35; color: var(--graphite); white-space: nowrap; }
.nav-sub a:hover .nav-sub-name { text-decoration: underline; text-underline-offset: 0.16em; }
.nav-mobile-extra { display: none; }

/* Search: a 40px icon button in the header opens a 56px white bar under the header that spans the wrap.
   It rises 8px and fades in over 200ms; site.js moves focus into the field and back to the button on close. */
.search-toggle { flex: none; display: inline-flex; align-items: center; justify-content: center; width: 40px; height: 40px; border: 1px solid var(--rule); border-radius: var(--radius-s); background: #fff; color: var(--graphite); cursor: pointer; transition: border-color 160ms var(--ease), color 160ms var(--ease); }
.search-toggle:hover, .search-toggle[aria-expanded="true"] { border-color: var(--ink); color: var(--ink); }
.search-toggle svg { width: 17px; height: 17px; }
.search-bar { position: absolute; left: 0; right: 0; top: 100%; z-index: 35; height: 56px; background: #fff; border-bottom: 1px solid var(--hairline); box-shadow: 0 12px 32px rgba(11, 16, 33, 0.08); opacity: 0; visibility: hidden; transform: translateY(-8px); transition: opacity 200ms var(--ease), transform 200ms var(--ease), visibility 0s linear 200ms; }
.search-bar.is-open { opacity: 1; visibility: visible; transform: none; transition-delay: 0s, 0s, 0s; }
.search-form { display: flex; align-items: center; gap: 12px; height: 56px; }
.search-bar-icon { flex: none; display: inline-flex; color: var(--quiet); }
.search-form input { flex: 1 1 auto; min-width: 0; height: 40px; padding: 0 12px; border: 1px solid var(--rule); border-radius: var(--radius-s); background: #fff; font: inherit; font-size: 17px; color: var(--ink); }
.search-form input::placeholder { color: var(--quiet); }
.search-form input::-webkit-search-cancel-button { display: none; }
.search-form input:focus { outline: 2px solid var(--blue); outline-offset: -1px; border-color: transparent; }
.search-submit { flex: none; height: 40px; padding: 0 16px; border: 1px solid var(--rule); border-radius: var(--radius-s); background: #fff; color: var(--ink); font-size: 15px; font-weight: 600; cursor: pointer; transition: border-color 160ms var(--ease); }
.search-submit:hover { border-color: var(--ink); }
.search-close { flex: none; display: inline-flex; align-items: center; justify-content: center; width: 40px; height: 40px; border: 0; border-radius: var(--radius-s); background: transparent; color: var(--graphite); cursor: pointer; }
.search-close:hover { color: var(--ink); background: var(--paper); }

.header-tools { margin-left: 0; flex: none; display: flex; align-items: center; gap: 12px; }
.header-phone { display: none; color: var(--graphite); text-decoration: none; font-weight: 600; font-size: 15px; white-space: nowrap; }
.header-phone:hover { color: var(--ink); }
.header-quote { display: inline-flex; align-items: center; gap: 8px; height: 40px; padding: 0 14px; border: 1px solid var(--rule); border-radius: var(--radius-s); color: var(--ink); text-decoration: none; font-size: 15px; font-weight: 600; white-space: nowrap; transition: border-color 160ms var(--ease); }
.header-quote:hover { border-color: var(--ink); color: var(--ink); }
/* The count pill: 15px in a 24px pill. At zero it is invisible but keeps its width, so nothing in the header moves
   when the first item arrives. */
.js-quote-count { display: inline-grid; place-items: center; min-width: 24px; height: 24px; padding: 0 7px; border-radius: 999px; background: var(--blue); color: #fff; font-size: 15px; font-weight: 700; line-height: 1; font-variant-numeric: tabular-nums; }
.js-quote-count[data-count="0"] { visibility: hidden; }
.js-quote-count.is-bumped { animation: count-pop 300ms var(--ease); }
@keyframes count-pop { 0% { transform: scale(1); } 50% { transform: scale(1.15); } 100% { transform: scale(1); } }

.menu-toggle { display: none; width: 44px; height: 44px; border: 1px solid var(--rule); background: #fff; border-radius: var(--radius-s); cursor: pointer; position: relative; flex: none; }
.burger, .burger::before, .burger::after { display: block; width: 18px; height: 2px; border-radius: 1px; background: var(--ink); position: absolute; left: 12px; }
.burger { top: 20px; transition: background-color 120ms var(--ease); }
.burger::before { content: ""; top: -6px; left: 0; transition: transform 160ms var(--ease); }
.burger::after { content: ""; top: 6px; left: 0; transition: transform 160ms var(--ease); }
.menu-toggle[aria-expanded="true"] .burger { background: transparent; }
.menu-toggle[aria-expanded="true"] .burger::before { transform: translateY(6px) rotate(45deg); }
.menu-toggle[aria-expanded="true"] .burger::after { transform: translateY(-6px) rotate(-45deg); }

/* ---------- breadcrumbs ---------- */

.breadcrumbs { font-size: 15px; padding: 20px 0 0; }
.breadcrumbs ol { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 4px 0; }
.breadcrumbs li + li::before { content: "/"; color: #B3BAC7; padding: 0 10px; }
.breadcrumbs a { color: var(--graphite); text-decoration: none; }
.breadcrumbs a:hover { color: var(--ink); text-decoration: underline; }
.breadcrumbs [aria-current] { color: var(--ink); font-weight: 500; }

/* ---------- trust line: home only, one 15px graphite line under the hero, no dots on paper ---------- */

.trust-bar { background: var(--paper); border-bottom: 1px solid var(--hairline); }
.trust-bar ul { list-style: none; margin: 0; padding: 14px 0; display: flex; flex-wrap: wrap; gap: 6px 32px; }
.trust-bar li { font-size: 15px; line-height: 1.5; font-weight: 500; color: var(--graphite); white-space: nowrap; }

/* ---------- sections ---------- */

.section { padding: var(--section) 0; }
/* The home page carries seven bands, so its rhythm is a step tighter than inner pages. */
.page-home { --section: 64px; }
.section-alt { background: #fff; border-top: 1px solid var(--hairline); border-bottom: 1px solid var(--hairline); }
.section-alt + .section-alt { border-top: 0; }
.section-tight { padding-top: 48px; }
.section-lead { padding-bottom: 0; }
.section-lead .notice { margin-bottom: 0; }
.section-head { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: end; gap: 8px 32px; margin-bottom: 28px; }
.section-head h2 { margin: 0; grid-column: 1; font-size: 36px; letter-spacing: -0.032em; }
.section-head p { margin: 0; grid-column: 1; color: var(--graphite); max-width: 60ch; }
.section-link { grid-column: 2; grid-row: 1; align-self: end; margin-bottom: 7px; white-space: nowrap; }
.section-title { margin-bottom: 40px; }
.section-row { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: 8px 24px; }
.section-row h2 { margin: 0 0 20px; }
.page-head { padding: 28px 0 56px; }
.page-head h1 { margin-bottom: 20px; max-width: 20ch; }
.page-head + .section { padding-top: 48px; }
main > .page-head:last-child { padding-bottom: 120px; }
.page-search .page-head { padding-bottom: 16px; }
.page-search .page-head + .section { padding-top: 24px; }
.lead { font-size: 20px; line-height: 1.5; color: var(--graphite); max-width: 54ch; margin-bottom: 0; }
.lead p { margin-bottom: 0.8em; }
.lead p:last-child { margin-bottom: 0; }
.lead h2 { font-size: 24px; letter-spacing: -0.025em; margin: 0.8em 0 0.4em; }
.lead h2:first-child { margin-top: 0; }
.lead.prose { max-width: 54ch; }
.sub-links { list-style: none; margin: 28px 0 0; padding: 0; display: flex; flex-wrap: wrap; gap: 8px; }
.sub-links a { display: inline-flex; align-items: center; min-height: 40px; padding: 0 16px; border: 1px solid var(--rule); border-radius: 999px; background: #fff; text-decoration: none; color: var(--ink); font-size: 15px; font-weight: 600; transition: border-color 160ms var(--ease); }
.sub-links a:hover { border-color: var(--ink); color: var(--ink); }

/* ---------- what we sell ---------- */

/* Six product line tiles. The 24px name and the description span the tile; the chassis drawing sits in the
   bottom right corner at 112px beside the link line, so no name ever wraps against it and the 36px section
   heading stays the biggest thing in the section. */
.line-tiles { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 20px; }
.line-tile { position: relative; display: flex; flex-direction: column; gap: 10px; height: 100%; min-height: 0; padding: 24px 26px 18px; background: #fff; border: 1px solid var(--hairline); border-radius: var(--radius); text-decoration: none; color: var(--ink); transition: border-color 160ms var(--ease); }
.line-tile:hover { border-color: var(--ink); color: var(--ink); }
.line-tile-name { font-size: 24px; font-weight: 800; letter-spacing: -0.03em; line-height: 1.1; text-wrap: balance; }
.line-tile-desc { font-size: 15px; line-height: 1.55; color: var(--graphite); max-width: 44ch; }
.line-tile-foot { display: flex; align-items: flex-end; justify-content: space-between; gap: 16px; margin-top: auto; padding-top: 6px; }
.line-tile-illus { flex: none; width: 112px; height: 84px; object-fit: contain; }
.line-tile-link { padding-bottom: 8px; }
.line-tile:hover .line-tile-link { text-decoration: underline; text-underline-offset: 0.16em; }
.line-tiles > li:first-child .line-tile { background: var(--ink); border-color: var(--ink); color: #fff; }
.line-tiles > li:first-child .line-tile-desc { color: var(--on-ink); }
.line-tiles > li:first-child .line-tile-link { color: #fff; }
.line-tiles > li:first-child .line-tile:hover { border-color: var(--ink); color: #fff; }

/* ---------- customer wall ---------- */

/* Three ruled rows on white: the sector label holds the left column, the logos flow on the right. The logos
   are one colour graphite PNGs (scripts/logos/make-logos.py) shown at 55%, so the wall reads as one texture
   rather than twenty eight competing brands; each comes to full strength under the pointer. The first time
   the wall scrolls into view the logos rise in a 28ms stagger (site.js adds is-in once). */
.customers { background: #fff; border-top: 1px solid var(--hairline); border-bottom: 1px solid var(--hairline); }
.customers + .section-alt { border-top: 0; }
.customer-groups { border-top: 1px solid var(--hairline); }
.customer-group { display: grid; grid-template-columns: 224px minmax(0, 1fr); column-gap: 48px; align-items: start; padding: 24px 0; border-bottom: 1px solid var(--hairline); }
.customer-label { margin: 0; padding-top: 28px; font-size: 15px; font-weight: 600; line-height: 1.45; letter-spacing: 0; color: var(--quiet); text-wrap: balance; }
/* The logos fill the row in as many 168px columns as fit, so every row of the wall shares one grid. */
.customer-logos, .prose .customer-logos { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(168px, 1fr)); gap: 4px 8px; }
.customer-logos li, .prose .customer-logos li { display: flex; align-items: center; justify-content: center; height: 80px; margin: 0; padding: 0 14px; }
.customer-logos img, .prose .customer-logos img { display: block; width: auto; height: auto; max-width: 148px; max-height: 54px; border: 0; border-radius: 0; opacity: 0.55; transition: opacity 160ms var(--ease); }
.customer-logos li:hover img { opacity: 1; }
/* Square marks (network bugs, insignia) run to the full height; long wordmarks are held a little narrower
   so they do not outweigh them (the template classes each image by its aspect ratio). */
.customer-logos img.logo-square { max-height: 56px; }
.customer-logos img.logo-wide { max-width: 144px; }
.customer-note { margin: 16px 0 0; font-size: 15px; line-height: 1.5; color: var(--quiet); }
.js .customers .customer-logos li { opacity: 0; transform: translateY(8px); transition: opacity 560ms var(--ease), transform 560ms var(--ease); transition-delay: calc(var(--i, 0) * 28ms); }
.js .customers.is-in .customer-logos li { opacity: 1; transform: none; }
/* Compact form inside the About page column: labels above the logos, smaller boxes. */
.customers-compact { margin: 0 0 1.6em; }
.customers-compact .customer-groups { margin-top: 4px; }
.customers-compact .customer-group { grid-template-columns: minmax(0, 1fr); row-gap: 6px; padding: 18px 0; }
.customers-compact .customer-label { padding-top: 0; }
.customers-compact .customer-logos, .prose .customers-compact .customer-logos { grid-template-columns: repeat(auto-fill, minmax(132px, 1fr)); }
.customers-compact .customer-logos li, .prose .customers-compact .customer-logos li { height: 60px; padding: 0 10px; }
.customers-compact .customer-logos img, .prose .customers-compact .customer-logos img { max-width: 116px; max-height: 42px; }
.customers-compact .customer-logos img.logo-wide { max-width: 108px; }

/* ---------- ruled indexes: Shop by GPU (three columns) and Solutions (two columns) ---------- */

.gpu-tiles, .solution-list, .guide-list { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); column-gap: 48px; }
.gpu-tiles > li, .solution-list > li, .guide-list > li { display: grid; }
.gpu-tile, .solution-list a, .guide-list a { height: 100%; align-content: start; padding: 14px 0; border-bottom: 1px solid var(--hairline); color: var(--ink); text-decoration: none; }
.gpu-tile { display: grid; grid-template-columns: minmax(0, 1fr) auto; column-gap: 16px; row-gap: 4px; }
.gpu-tiles > li:nth-child(-n+3) .gpu-tile { border-top: 1px solid var(--hairline); }
.gpu-tile-name { grid-column: 1; grid-row: 1; font-size: 20px; font-weight: 700; letter-spacing: -0.02em; line-height: 1.25; }
.gpu-tile-meta { grid-column: 1 / -1; grid-row: 2; font-size: 15px; line-height: 1.45; color: var(--graphite); }
.gpu-tile-family { grid-column: 2; grid-row: 1; align-self: start; display: inline-flex; align-items: center; gap: 12px; padding-top: 4px; font-size: 15px; color: var(--quiet); white-space: nowrap; }
.gpu-tile:hover, .solution-list a:hover, .guide-list a:hover { color: var(--ink); }
.gpu-tile:hover .gpu-tile-name, .solution-list a:hover .solution-name, .guide-list a:hover .solution-name { text-decoration: underline; text-underline-offset: 0.16em; }
.solution-list { grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: 64px; }
.solution-list a, .guide-list a { display: grid; gap: 4px; align-content: start; }
.guide-list a { grid-template-columns: minmax(0, 1fr) auto; column-gap: 16px; }
.guide-list .solution-name { grid-column: 1; grid-row: 1; }
.guide-list .solution-sum { grid-column: 1 / -1; grid-row: 2; }
.solution-list > li:nth-child(-n+2) a, .guide-list > li:nth-child(-n+3) a { border-top: 1px solid var(--hairline); }
.solution-name { font-size: 20px; font-weight: 700; letter-spacing: -0.02em; line-height: 1.25; }
.solution-sum { font-size: 15px; line-height: 1.5; color: var(--graphite); }
.guide-meta { grid-column: 2; grid-row: 1; align-self: start; padding-top: 4px; font-size: 15px; color: var(--quiet); white-space: nowrap; }

/* ---------- grids and cards ---------- */

.grid { display: grid; gap: 24px; }
.grid-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.grid-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.grid-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 20px; }
.grid-4 > .card { --media-ratio: 16 / 9; }
/* A card is a flex column. The wide variant (an orphan at the end of a grid) turns it into a two column grid,
   drawing left at 240px and text right. The grid placement below is inert under flex, so the variant only has
   to switch display and a few custom properties. */
.card { position: relative; display: flex; flex-direction: column; grid-template-columns: var(--wide-media, 240px) minmax(0, 1fr); grid-template-rows: minmax(0, 1fr) auto; background: #fff; border: 1px solid var(--hairline); border-radius: var(--radius); overflow: hidden; transition: border-color 160ms var(--ease); }
.card:hover { border-color: var(--rule); }
.card-media { position: relative; display: flex; align-items: center; grid-column: 1; grid-row: 1 / -1; background: var(--panel); border-bottom: var(--media-bottom, 1px solid var(--hairline)); border-right: var(--media-right, 0); }
.card-media img { width: 100%; aspect-ratio: var(--media-ratio, 16 / 10); max-height: var(--media-max, none); object-fit: contain; }
.card-media::after { content: ""; position: absolute; inset: 0; background: rgba(20, 67, 168, 0.08); opacity: 0; pointer-events: none; transition: opacity 200ms var(--ease); }
.card:hover .card-media::after, .card:focus-within .card-media::after { opacity: 1; }
.card-body { flex: 1 1 auto; grid-column: 2; grid-row: 1; display: flex; flex-direction: column; align-items: flex-start; gap: 10px; padding: var(--body-pad, 20px 24px 8px); }
.card-body > * { width: 100%; }
.card-body .badge { width: auto; }
.card-title { margin: 0; font-size: 20px; font-weight: 700; letter-spacing: -0.02em; line-height: 1.25; text-wrap: balance; }
/* Product and GPU card titles reserve two lines so the spec rows start at one height across a row. */
.product-card .card-title, .gpu-card .card-title { min-height: 50px; }
.product-card, .gpu-card { --media-ratio: 16 / 9; }
.card-title a { color: var(--ink); text-decoration: none; }
.card-title a:hover { text-decoration: underline; text-underline-offset: 0.16em; }
.card-summary { margin: 0; font-size: 15px; line-height: 1.55; color: var(--graphite); max-width: 64ch; }
.card-meta { margin: 0; font-size: 15px; color: var(--quiet); }
/* The spec rows are one grid for the whole list so the label column is as wide as the card's widest label (up to
   96px) and the values share one left edge; each row's rule runs under both cells. The wide variant shows the rows
   two across (the second pair's label is indented). */
.card-specs { display: grid; grid-template-columns: var(--specs-cols, fit-content(96px) minmax(0, 1fr)); margin-top: 4px; font-size: 15px; line-height: 1.4; }
.card-specs > div { display: contents; }
.card-specs dt, .card-specs dd { padding: 7px 0; border-top: 1px solid var(--hairline); }
.card-specs dt { padding-right: 12px; color: var(--graphite); font-weight: 500; }
.card-specs dd { margin: 0; color: var(--ink); font-weight: 500; font-variant-numeric: tabular-nums; }
.card-specs > div:nth-child(even) dt { padding-left: var(--specs-indent, 0); }
/* One ink text link and one 40px icon button; the height never changes on hover. */
.card-actions { grid-column: 2; grid-row: 2; display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: var(--actions-pad, 8px 24px 18px); }
.card-link { display: inline-flex; align-items: center; min-height: 40px; }
.content-card .card-body { padding: 24px 24px 24px; gap: 8px; }
.content-card .card-meta { margin-top: auto; padding-top: 8px; }
/* The guide's first two sections, shown only on a card that spans its row (the wide rules below). */
.card-toc { display: none; grid-column: 2; grid-row: 1 / -1; align-self: start; padding: 26px 28px 24px 0; }
.card-toc-title { margin: 0 0 8px; font-size: 15px; font-weight: 700; color: var(--ink); }
.card-toc ol { list-style: none; margin: 0; padding: 0; border-top: 1px solid var(--hairline); }
.card-toc li { padding: 8px 0; border-bottom: 1px solid var(--hairline); font-size: 15px; line-height: 1.4; color: var(--graphite); }
/* Narrow cards (listing columns beside the filters, four up on the home page) stack each spec label over its value. */
.product-card, .gpu-card { container-type: inline-size; }
@container (max-width: 340px) {
  .card-body { padding: 16px 20px 6px; gap: 8px; }
  .card-actions { padding: 8px 20px 16px; }
  .card-specs dt { padding-right: 10px; }
}
/* Filter reflow: a card that comes back fades in. is-ready is set by site.js after the first paint, so the
   fade answers a filter change and never runs on page load. */
.js-product-grid .product-card { transition: opacity 200ms var(--ease), border-color 160ms var(--ease); }
@starting-style { .js-product-grid.is-ready .product-card { opacity: 0; } }

/* The wide variant. Static grids trigger it with nth-child at each column count; the filtered listing grid
   gets .is-wide from site.js, because hidden cards still count for nth-child. A content card has no media. */
.card.is-wide, .card.card-wide {
  grid-column: 1 / -1; display: grid;
  --media-bottom: 0; --media-right: 1px solid var(--hairline); --media-ratio: 4 / 3; --media-max: 240px;
  --body-pad: 22px 28px 6px; --actions-pad: 8px 28px 20px; --specs-cols: fit-content(96px) minmax(0, 1fr) fit-content(128px) minmax(0, 1fr); --specs-indent: 32px;
}
.content-card.is-wide, .content-card.card-wide { grid-template-columns: minmax(0, 1fr) 280px; column-gap: 48px; }
.content-card.is-wide > .card-body, .content-card.card-wide > .card-body { grid-column: 1; max-width: 72ch; }
.content-card.is-wide > .card-toc, .content-card.card-wide > .card-toc { display: block; }
@media (min-width: 961px) {
  .grid-3:not(.js-product-grid) > .card:last-child:nth-child(3n+1) { grid-column: 1 / -1; display: grid; --media-bottom: 0; --media-right: 1px solid var(--hairline); --media-ratio: 4 / 3; --media-max: 240px; --body-pad: 22px 28px 6px; --actions-pad: 8px 28px 20px; --specs-cols: fit-content(96px) minmax(0, 1fr) fit-content(128px) minmax(0, 1fr); --specs-indent: 32px; }
  .grid-3:not(.js-product-grid) > .content-card:last-child:nth-child(3n+1) { grid-template-columns: minmax(0, 1fr) 280px; column-gap: 48px; }
  .grid-3:not(.js-product-grid) > .content-card:last-child:nth-child(3n+1) > .card-body { grid-column: 1; max-width: 72ch; }
  .grid-3:not(.js-product-grid) > .content-card:last-child:nth-child(3n+1) > .card-toc { display: block; }
}
@media (min-width: 601px) {
  .grid-2:not(.js-product-grid) > .card:last-child:nth-child(2n+1) { grid-column: 1 / -1; display: grid; --media-bottom: 0; --media-right: 1px solid var(--hairline); --media-ratio: 4 / 3; --media-max: 240px; --body-pad: 22px 28px 6px; --actions-pad: 8px 28px 20px; --specs-cols: fit-content(96px) minmax(0, 1fr) fit-content(128px) minmax(0, 1fr); --specs-indent: 32px; }
  .grid-2:not(.js-product-grid) > .content-card:last-child:nth-child(2n+1) { grid-template-columns: minmax(0, 1fr) 280px; column-gap: 48px; }
  .grid-2:not(.js-product-grid) > .content-card:last-child:nth-child(2n+1) > .card-body { grid-column: 1; max-width: 72ch; }
  .grid-2:not(.js-product-grid) > .content-card:last-child:nth-child(2n+1) > .card-toc { display: block; }
}
/* Three up grids are two up between 600 and 960; the four up featured row is three up between 960 and 1240. */
@media (min-width: 601px) and (max-width: 960px) {
  .grid-3:not(.js-product-grid) > .card:last-child:nth-child(2n+1) { grid-column: 1 / -1; display: grid; --media-bottom: 0; --media-right: 1px solid var(--hairline); --media-ratio: 4 / 3; --media-max: 240px; --body-pad: 22px 28px 6px; --actions-pad: 8px 28px 20px; --specs-cols: fit-content(96px) minmax(0, 1fr) fit-content(128px) minmax(0, 1fr); --specs-indent: 32px; }
  .grid-3:not(.js-product-grid) > .content-card:last-child:nth-child(2n+1) { grid-template-columns: minmax(0, 1fr) 240px; column-gap: 32px; }
  .grid-3:not(.js-product-grid) > .content-card:last-child:nth-child(2n+1) > .card-body { grid-column: 1; max-width: 72ch; }
  .grid-3:not(.js-product-grid) > .content-card:last-child:nth-child(2n+1) > .card-toc { display: block; }
}
@media (min-width: 961px) and (max-width: 1240px) {
  .grid-4 > .card:last-child:nth-child(3n+1) { grid-column: 1 / -1; display: grid; --media-bottom: 0; --media-right: 1px solid var(--hairline); --media-ratio: 4 / 3; --media-max: 240px; --body-pad: 22px 28px 6px; --actions-pad: 8px 28px 20px; --specs-cols: fit-content(96px) minmax(0, 1fr) fit-content(128px) minmax(0, 1fr); --specs-indent: 32px; }
}

/* ---------- quote block ---------- */

.quote-block { background: #fff; border: 1px solid var(--hairline); border-radius: var(--radius); padding: 28px; }
.quote-title { font-size: 24px; letter-spacing: -0.025em; line-height: 1.15; margin-bottom: 8px; }
.quote-lead { color: var(--graphite); font-size: 15px; line-height: 1.55; margin-bottom: 20px; }
.quote-actions { display: flex; flex-wrap: wrap; gap: 10px; margin-bottom: 20px; }
.quote-actions .btn { flex: 1 1 180px; }
.quote-side > :last-child { margin-bottom: 0; }
/* Who writes the quotation, under the product panel's buttons. */
.quote-human { margin: 0; padding: 16px 0 0; border-top: 1px solid var(--hairline); font-size: 15px; line-height: 1.55; color: var(--graphite); }
.quote-human a { color: var(--ink); font-weight: 600; text-decoration: none; white-space: nowrap; }
.quote-human a:hover { color: var(--blue); text-decoration: underline; }
.contact-lines { list-style: none; margin: 0; padding: 16px 0 0; border-top: 1px solid var(--hairline); font-size: 15px; line-height: 1.5; color: var(--graphite); display: grid; gap: 4px; }
.contact-lines a { color: var(--ink); font-weight: 600; text-decoration: none; }
.contact-lines a:hover { color: var(--blue); text-decoration: underline; }
.quote-sticky { position: sticky; top: calc(var(--header-h) + 24px); }

/* The closing band: ink, white text, one cyan LED. */
.closing-band { background: var(--ink); color: #fff; -webkit-font-smoothing: antialiased; }
.closing-band .quote-block { background: transparent; border: 0; border-radius: 0; padding: 0; display: grid; grid-template-columns: minmax(0, 1.25fr) minmax(0, 1fr); column-gap: 64px; row-gap: 24px; align-items: start; }
/* The LED sits in the margin so both lines of the headline share one left edge. */
.closing-band .quote-title { position: relative; grid-column: 1; grid-row: 1; margin: 0; padding-left: 0; font-size: 44px; line-height: 1.05; letter-spacing: -0.035em; color: #fff; max-width: 18ch; }
.closing-band .quote-title::before { content: ""; position: absolute; left: -28px; top: 0.45em; margin: 0; width: 9px; height: 9px; border-radius: 50%; background: var(--cyan); box-shadow: var(--led); }
.closing-band .quote-lead { grid-column: 1; grid-row: 2; margin: 0; font-size: 17px; line-height: 1.6; color: var(--on-ink); max-width: 50ch; }
.closing-band .quote-lead a { color: #fff; text-decoration-color: rgba(255, 255, 255, 0.45); }
.closing-band .quote-lead a:hover { color: #fff; text-decoration-color: #fff; }
.closing-band .quote-side { grid-column: 2; grid-row: 1 / 3; align-self: start; display: grid; gap: 24px; padding-top: 6px; }
.closing-band .quote-actions { margin: 0; }
.closing-band .contact-lines { padding: 0; border: 0; color: var(--on-ink); font-size: 17px; }
.closing-band .contact-lines a { color: #fff; }
.closing-band .contact-lines a:hover { color: #fff; }
.closing-band .btn-primary { background: #fff; border-color: #fff; color: var(--ink); }
.closing-band .btn-primary:hover { background: #E6E9F0; border-color: #E6E9F0; color: var(--ink); }
.closing-band .btn-secondary { background: transparent; border-color: rgba(255, 255, 255, 0.4); color: #fff; }
.closing-band .btn-secondary:hover { border-color: #fff; color: #fff; }
.closing-band :focus-visible { outline-color: var(--cyan); }

/* ---------- notices ---------- */

.notice { position: relative; margin: 0 0 24px; padding: 18px 20px 18px 24px; background: #fff; border: 1px solid var(--hairline); border-left: 4px solid var(--amber-fg); border-radius: var(--radius); }
.notice p { margin: 0; font-size: 15px; line-height: 1.55; color: var(--graphite); }
.notice strong { color: var(--ink); }
.filter-notice { margin: 0 0 20px; padding: 14px 18px; border: 1px solid var(--hairline); border-radius: var(--radius-s); background: #fff; font-size: 15px; color: var(--graphite); }

/* ---------- spec tables: the signature element. No card: a 2px ink rule opens each group, hairlines between rows. ---------- */

.spec-table { width: 100%; border-collapse: separate; border-spacing: 0; margin: 0; background: transparent; border: 0; border-radius: 0; font-size: 15px; line-height: 1.45; }
.spec-table caption { caption-side: top; text-align: left; padding: 40px 0 10px; font-size: 15px; font-weight: 700; line-height: 1.4; color: var(--ink); }
.spec-table:first-of-type caption { padding-top: 0; }
.spec-table th, .spec-table td { text-align: left; vertical-align: top; padding: 11px 16px 11px 0; border-bottom: 1px solid var(--hairline); }
.spec-table tbody tr:first-child th, .spec-table tbody tr:first-child td { border-top: 2px solid var(--ink); }
.spec-table tbody th { width: 200px; padding-right: 24px; color: var(--graphite); font-weight: 500; }
.spec-table td { color: var(--ink); font-weight: 500; font-variant-numeric: tabular-nums; }
.spec-table thead th { font-size: 15px; font-weight: 600; color: var(--graphite); border-bottom: 2px solid var(--ink); white-space: nowrap; }
.spec-table thead + tbody tr:first-child th, .spec-table thead + tbody tr:first-child td { border-top: 0; }
.spec-table .fig { font-weight: 600; }
.spec-table .num { text-align: right; font-variant-numeric: tabular-nums; }
.table-scroll { position: relative; overflow-x: auto; max-width: 100%; }
.table-scroll:focus-visible { outline: 2px solid var(--blue); outline-offset: 3px; }
/* The compare table has nine columns, so the widths are set once and the wrapper scrolls below 1100px. */
.compare-table { table-layout: fixed; min-width: 1100px; }
.compare-table th, .compare-table td { padding: 12px 12px 12px 0; vertical-align: middle; }
.compare-table thead th { white-space: normal; }
.compare-table tbody th { width: auto; color: var(--ink); font-weight: 700; }
.compare-table tbody th a { color: var(--ink); text-decoration: none; }
.compare-table tbody th a:hover { text-decoration: underline; text-underline-offset: 0.16em; }
.compare-table thead th:nth-child(1) { width: 14%; }
.compare-table thead th:nth-child(2) { width: 10%; }
.compare-table thead th:nth-child(3) { width: 9%; }
.compare-table thead th:nth-child(4) { width: 7%; }
.compare-table thead th:nth-child(5) { width: 11%; }
.compare-table thead th:nth-child(6) { width: 10%; }
.compare-table thead th:nth-child(7) { width: 15%; }
.compare-table thead th:nth-child(8) { width: 13%; }
.compare-table thead th:nth-child(9) { width: 11%; }
.compare-table th:last-child, .compare-table td:last-child { padding-right: 0; }
.compare-table .badge { white-space: normal; }
.table-link { font-weight: 600; white-space: nowrap; color: var(--ink); text-decoration: none; }
.table-link:hover { color: var(--ink); text-decoration: underline; text-underline-offset: 0.16em; }
.compare-table + .spec-note { margin-top: 16px; }

/* ---------- prose ---------- */

.prose { max-width: 72ch; }
.prose h2 { margin-top: 1.8em; font-size: 32px; }
.prose h2:first-child { margin-top: 0; }
.prose h3 { margin-top: 1.6em; }
.prose p, .prose ul, .prose ol { margin-bottom: 1.1em; }
.prose li { margin-bottom: 0.35em; }
/* Tables in guides are ruled the same way as the spec table. */
.prose table { width: 100%; border-collapse: separate; border-spacing: 0; margin: 0 0 1.5em; font-size: 15px; line-height: 1.45; }
.prose th, .prose td { text-align: left; vertical-align: top; padding: 11px 16px 11px 0; border-bottom: 1px solid var(--hairline); }
.prose thead th { font-weight: 600; color: var(--graphite); border-bottom: 2px solid var(--ink); }
.prose tbody td { font-weight: 500; font-variant-numeric: tabular-nums; }
.prose tbody th { color: var(--graphite); font-weight: 500; }
.prose img { border: 1px solid var(--hairline); border-radius: var(--radius); }
.prose blockquote { margin: 0 0 1.1em; padding: 4px 0 4px 20px; border-left: 3px solid var(--rule); color: var(--graphite); }
.prose hr { border: 0; border-top: 1px solid var(--hairline); margin: 2em 0; }

/* ---------- GPU page: copy, facts and description left; drawing and sticky quote panel right ---------- */

.gpu-layout { display: grid; grid-template-columns: minmax(0, 1fr) 380px; gap: 64px; align-items: start; }
.gpu-layout h1, .product-head h1, .content-head h1 { font-size: 44px; letter-spacing: -0.035em; line-height: 1.05; max-width: none; }
.gpu-main .lead { max-width: 60ch; }
.gpu-side { position: sticky; top: calc(var(--header-h) + 24px); display: grid; gap: 20px; }
.product-head-copy .badge { margin-bottom: 20px; }
.facts { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 32px; margin-top: 32px; }
.facts div { display: grid; grid-template-columns: 140px minmax(0, 1fr); gap: 12px; padding: 10px 0; border-top: 1px solid var(--hairline); font-size: 15px; line-height: 1.45; }
.facts dt { color: var(--graphite); font-weight: 500; }
.facts dd { margin: 0; color: var(--ink); font-weight: 500; font-variant-numeric: tabular-nums; }
.gpu-prose { margin-top: 40px; }
.illus-large { width: 100%; aspect-ratio: 16 / 10; object-fit: contain; background: var(--panel); border: 1px solid var(--hairline); border-radius: var(--radius); }

/* ---------- listing with filters ---------- */

.listing-layout { display: grid; grid-template-columns: 220px minmax(0, 1fr); gap: 40px; align-items: start; }
.js-product-grid { gap: 20px; }
.filters { position: sticky; top: calc(var(--header-h) + 24px); max-height: calc(100vh - var(--header-h) - 48px); overflow: auto; padding-right: 8px; }
.filters-head { display: flex; align-items: baseline; justify-content: space-between; padding-bottom: 12px; border-bottom: 1px solid var(--hairline); }
.filters-head h2 { font-size: 20px; margin: 0; }
.facet { border: 0; border-bottom: 1px solid var(--hairline); margin: 0; padding: 16px 0; min-width: 0; }
.facet legend { float: left; width: 100%; padding: 0; margin: 0 0 8px; font-size: 15px; font-weight: 700; }
.facet-option { display: flex; align-items: flex-start; gap: 10px; padding: 5px 0; font-size: 15px; line-height: 1.45; color: var(--graphite); clear: both; }
.facet-option input { width: 18px; height: 18px; margin: 2px 0 0; accent-color: var(--blue); flex: none; cursor: pointer; }
.facet-option label { cursor: pointer; flex: 1 1 auto; }
.listing-bar { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 12px 20px; padding-bottom: 16px; margin-bottom: 28px; border-bottom: 1px solid var(--hairline); }
.results-count { margin: 0; font-size: 15px; color: var(--graphite); }
.results-count span { color: var(--ink); font-weight: 700; font-variant-numeric: tabular-nums; }
.listing-ack { flex: 1 1 100%; order: 4; margin: -6px 0 0; font-size: 15px; color: var(--graphite); }
.listing-ack b { font-weight: 600; color: var(--ink); }
.listing-ack a { margin-left: 2px; }
.sort-field { order: 3; margin-left: auto; display: flex; align-items: center; gap: 10px; font-size: 15px; color: var(--graphite); }
.listing-about { margin-top: 40px; padding-top: 24px; border-top: 1px solid var(--hairline); }
.listing-about h2 { font-size: 24px; letter-spacing: -0.025em; margin-bottom: 12px; }
.listing-about p { margin: 0; color: var(--graphite); }
select { appearance: none; -webkit-appearance: none; background-color: #fff; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1.5l5 5 5-5' fill='none' stroke='%232B3141' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E"); background-repeat: no-repeat; background-position: right 12px center; }
.sort-field select { height: 40px; padding: 0 36px 0 12px; border: 1px solid var(--rule); border-radius: var(--radius-s); font: inherit; font-size: 15px; font-weight: 600; color: var(--ink); }
.sort-field select:focus { outline: 2px solid var(--blue); outline-offset: -1px; border-color: transparent; }
.filters-toggle { display: none; order: 2; margin-left: auto; }
.empty-state { padding: 48px 32px; background: #fff; border: 1px solid var(--hairline); border-radius: var(--radius); text-align: left; color: var(--graphite); }
.empty-state p:first-child { font-size: 20px; font-weight: 700; color: var(--ink); letter-spacing: -0.015em; }
.empty-state p:last-child { margin: 0; }

/* ---------- product page ---------- */

.product-head { display: grid; grid-template-columns: minmax(0, 1.5fr) minmax(280px, 400px); gap: 48px; align-items: start; }
.gpu-links { margin: 16px 0 0; font-size: 15px; color: var(--graphite); }
.product-layout { display: grid; grid-template-columns: minmax(0, 1fr) 360px; gap: 64px; align-items: start; padding-bottom: var(--section); }
.highlights { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0 32px; margin: 0 0 40px; }
.highlights div { border-top: 1px solid var(--rule); padding: 14px 0 18px; }
.highlights dt { font-size: 15px; color: var(--graphite); font-weight: 500; margin-bottom: 4px; }
.highlights dd { margin: 0; font-size: 17px; line-height: 1.45; color: var(--ink); font-weight: 500; font-variant-numeric: tabular-nums; }
.jump-nav { position: sticky; top: var(--header-h); z-index: 10; margin-bottom: 40px; background: var(--paper); border-bottom: 1px solid var(--hairline); }
.jump-nav ul { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 0 4px; }
.jump-nav a { display: block; padding: 14px 12px 12px; margin-bottom: -1px; text-decoration: none; font-size: 15px; font-weight: 600; color: var(--graphite); border-bottom: 2px solid transparent; transition: color 160ms var(--ease), border-color 160ms var(--ease); }
.jump-nav li:first-child a { padding-left: 0; }
.jump-nav a:hover, .jump-nav a[aria-current="true"] { color: var(--ink); border-bottom-color: var(--ink); }
.product-section { padding: 0 0 48px; scroll-margin-top: calc(var(--header-h) + 64px); }
.product-section h2 { margin-bottom: 20px; }
.product-section h3 { margin-top: 1.6em; }
.product-section .prose h3 { margin-top: 1.6em; }
.chips { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 8px; }
.chips li { padding: 7px 14px; border-radius: 999px; background: #fff; border: 1px solid var(--hairline); color: var(--ink); font-size: 15px; font-weight: 500; }
.spec-note { margin: 20px 0 0; color: var(--quiet); font-size: 15px; }
.included-list { list-style: none; margin: 0; padding: 0; border-top: 1px solid var(--hairline); }
.included-list li { padding: 11px 0; border-bottom: 1px solid var(--hairline); font-size: 17px; }
.product-section .notice { margin-bottom: 0; }
.product-section .grid { margin-top: 20px; }

/* ---------- content pages ---------- */

.content-page { padding-top: 24px; }
.content-page > .wrap-narrow, .content-page > .content-grid { padding-bottom: var(--section); }
.content-head { margin-bottom: 36px; }
.content-meta { color: var(--quiet); font-size: 15px; margin: 0; }
.content-related { padding: 0 0 var(--section); }
.content-related h2 { margin-bottom: 32px; }
/* Guides: the article at its reading measure with a sticky contents list in the right column. */
.content-grid { display: grid; grid-template-columns: minmax(0, 820px) 240px; justify-content: space-between; gap: 64px; align-items: start; container-type: inline-size; }
.content-col { min-width: 0; }
/* The first comparison table leaves the 820px reading column and runs to the wrap edge (100cqw is the grid's
   inner width); under 960px the column is already full width and the table scrolls sideways. */
.table-wide { position: relative; z-index: 1; width: 100cqw; max-width: none; margin: 0.4em 0 2em; overflow-x: auto; background: var(--paper); }
.table-wide table { min-width: 720px; margin: 0; }
.content-grid .table-wide th:last-child, .content-grid .table-wide td:last-child { padding-right: 0; }
.toc { position: sticky; top: calc(var(--header-h) + 32px); padding-top: 8px; }
.toc-title { margin: 0 0 10px; font-size: 15px; font-weight: 700; color: var(--ink); }
.toc ol { list-style: none; margin: 0; padding: 0; border-left: 1px solid var(--hairline); }
.toc a { display: block; padding: 7px 0 7px 16px; margin-left: -1px; border-left: 2px solid transparent; font-size: 15px; line-height: 1.4; color: var(--graphite); text-decoration: none; transition: color 160ms var(--ease), border-color 160ms var(--ease); }
.toc a:hover { color: var(--ink); }
.toc a[aria-current="true"] { color: var(--ink); font-weight: 600; border-left-color: var(--ink); }
.prose h2[id] { scroll-margin-top: calc(var(--header-h) + 24px); }

/* ---------- quote page ---------- */

.quote-layout { display: grid; grid-template-columns: minmax(0, 1.3fr) minmax(320px, 440px); gap: 56px; align-items: start; }
/* Nothing in the list yet: the empty state spans the page and the form sits under it with its fields two up. */
.quote-layout.is-empty { grid-template-columns: minmax(0, 1fr); gap: 40px; }
.quote-layout.is-empty .quote-items h2 { position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.quote-layout.is-empty .js-quote-empty { display: grid; grid-template-columns: minmax(0, 1fr) auto; column-gap: 48px; align-items: center; }
.quote-layout.is-empty .js-quote-empty p:first-child { grid-column: 1 / -1; }
.quote-layout.is-empty .quote-form { grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: 24px; max-width: 920px; }
.quote-layout.is-empty .quote-form h2, .quote-layout.is-empty .quote-form .quote-actions, .quote-layout.is-empty .quote-form .form-note, .quote-layout.is-empty .quote-form .contact-lines { grid-column: 1 / -1; }
.quote-layout.is-empty .quote-form .quote-actions .btn { flex: 1 1 220px; }
.btn[aria-disabled="true"], .btn[aria-disabled="true"]:hover { background: var(--panel); border-color: var(--panel); color: var(--quiet); cursor: not-allowed; }
/* What happens next: under the items, only once there is something in the list. */
.quote-next { margin-top: 40px; max-width: 60ch; }
.quote-next h3 { font-size: 20px; margin-bottom: 10px; }
.quote-next ol { margin: 0; padding: 0; list-style: none; counter-reset: step; border-top: 1px solid var(--hairline); }
.quote-next li { counter-increment: step; display: grid; grid-template-columns: 28px minmax(0, 1fr); gap: 12px; padding: 11px 0; border-bottom: 1px solid var(--hairline); font-size: 15px; line-height: 1.5; color: var(--graphite); }
.quote-next li::before { content: counter(step) "."; font-weight: 700; font-variant-numeric: tabular-nums; color: var(--ink); }
.quote-layout.is-empty .quote-next { display: none; }
.quote-items h2, .quote-form h2 { font-size: 24px; letter-spacing: -0.025em; margin-bottom: 20px; }
.quote-form { background: #fff; border: 1px solid var(--hairline); border-radius: var(--radius); padding: 32px; display: grid; gap: 16px; }
.quote-form h2 { margin: 0; }
.field { display: grid; gap: 6px; }
.field label { font-weight: 600; font-size: 15px; }
.field input, .field select { height: 44px; width: 100%; border: 1px solid var(--rule); border-radius: var(--radius-s); padding: 0 14px; font: inherit; font-size: 15px; color: var(--ink); background: #fff; }
.field select { padding-right: 36px; }
.field input::placeholder { color: var(--quiet); }
.field input:focus, .field select:focus { outline: 2px solid var(--blue); outline-offset: -1px; border-color: transparent; }
.quote-form .quote-actions { margin-bottom: 0; }
.quote-form .quote-actions .btn { flex: 1 1 100%; }
.quote-form .contact-lines { font-size: 15px; }
.form-note { margin: 0; font-size: 15px; color: var(--quiet); }
.form-note:empty { display: none; }
.quote-table { border-collapse: separate; border-spacing: 0; background: #fff; border: 1px solid var(--hairline); border-radius: var(--radius); margin-bottom: 16px; font-size: 15px; }
.quote-table th, .quote-table td { text-align: left; padding: 11px 16px; border-bottom: 1px solid var(--hairline); vertical-align: middle; }
.quote-table thead th { font-size: 15px; font-weight: 600; color: var(--graphite); background: var(--paper); }
.quote-table thead th:first-child { border-top-left-radius: 11px; }
.quote-table thead th:last-child { border-top-right-radius: 11px; }
.quote-table tbody tr:last-child td { border-bottom: 0; }
.quote-table tbody td a { color: var(--ink); font-weight: 600; text-decoration: none; }
.quote-table tbody td a:hover { text-decoration: underline; text-underline-offset: 0.16em; }
/* Each item: a 56px drawing, the name and the GPU line. */
.quote-item { display: flex; align-items: center; gap: 16px; min-height: 56px; }
.quote-item-illus { flex: none; width: 56px; height: 42px; object-fit: contain; border-radius: 6px; border: 1px solid var(--hairline); background: var(--panel); }
.quote-item-text { display: grid; gap: 2px; min-width: 0; }
.quote-item-gpu { font-size: 15px; line-height: 1.4; color: var(--graphite); }
.qty-input { width: 84px; height: 40px; border: 1px solid var(--rule); border-radius: var(--radius-s); padding: 0 10px; font: inherit; font-size: 15px; font-weight: 600; font-variant-numeric: tabular-nums; }
.qty-input:focus { outline: 2px solid var(--blue); outline-offset: -1px; border-color: transparent; }
.quote-plain { width: 100%; font: 15px / 1.5 var(--font); border: 1px solid var(--rule); border-radius: var(--radius-s); padding: 12px; }
.copy-fallback { position: fixed; left: -9999px; top: 0; }

/* ---------- search page ---------- */

.search-page-form { display: flex; gap: 10px; max-width: 640px; margin: 28px 0 16px; }
.search-page-form input { flex: 1 1 auto; min-width: 0; height: 48px; border: 1px solid var(--rule); border-radius: var(--radius-s); padding: 0 16px; font: inherit; font-size: 17px; background: #fff; }
.search-page-form input:focus { outline: 2px solid var(--blue); outline-offset: -1px; border-color: transparent; }
.search-page-form .btn { min-height: 48px; }
.search-card .card-title { font-size: 20px; min-height: 0; }
.search-card .card-meta { margin-top: auto; padding-top: 8px; }
.search-head { display: flex; align-items: flex-start; gap: 14px; }
.search-thumb { flex: none; width: 56px; height: 42px; object-fit: contain; border-radius: 6px; border: 1px solid var(--hairline); background: var(--panel); margin-top: 1px; }
.search-card.has-thumb .card-title { min-height: 42px; display: flex; align-items: center; }

/* ---------- footer ---------- */

.site-footer { background: var(--ink); color: var(--on-ink); padding: 48px 0 28px; font-size: 15px; line-height: 1.55; box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1); -webkit-font-smoothing: antialiased; }
.footer-grid { display: grid; grid-template-columns: 1.6fr 1fr 1fr 1fr; gap: 32px; }
.footer-brand { color: #fff; font-weight: 700; font-size: 17px; margin-bottom: 16px; }
.footer-company p { margin: 0 0 10px; }
.footer-heading { font-size: 15px; font-weight: 700; color: #fff; margin: 0 0 14px; letter-spacing: 0; }
.footer-col ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 6px; }
.footer-col a, .footer-company a { color: var(--on-ink); text-decoration: none; }
.footer-company a { color: #fff; }
.footer-col a:hover, .footer-company a:hover { color: #fff; text-decoration: underline; text-underline-offset: 0.16em; }
.footer-legal { border-top: 1px solid rgba(255, 255, 255, 0.12); margin-top: 32px; padding-top: 24px; display: flex; flex-wrap: wrap; gap: 12px 32px; align-items: baseline; color: var(--on-ink-quiet); font-size: 15px; }
.footer-legal p { margin: 0; }
.legal-links { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 4px 20px; }
.legal-links a { color: var(--on-ink); text-decoration: none; }
.legal-links a:hover { color: #fff; text-decoration: underline; }
.site-footer :focus-visible { outline-color: var(--cyan); }

/* ---------- responsive: 1240 ---------- */

@media (max-width: 1240px) {
  /* Below 1240 the nine item nav no longer fits beside the logo and tools, so the menu button takes over. */
  .header-row { gap: 12px; }
  .menu-toggle { display: block; order: 10; }
  .search-toggle { margin-left: auto; }
  .header-tools { margin-left: 0; }
  .site-nav { display: none; }
  /* The menu panel and the search bar open together under the header: the bar at the top, the list under it.
     Both fade and rise over 200ms from display none (starting-style); closing is immediate. */
  .site-nav.is-open { display: block; position: absolute; left: 0; right: 0; top: calc(var(--header-h) + 56px); max-height: calc(100vh - var(--header-h) - 56px); overflow: auto; padding: 0 var(--gutter) 16px; background: #fff; border-bottom: 1px solid var(--hairline); box-shadow: 0 24px 48px rgba(11, 16, 33, 0.12); transition: opacity 200ms var(--ease), transform 200ms var(--ease); }
  @starting-style { .site-nav.is-open { opacity: 0; transform: translateY(-6px); } }
  body.nav-open .search-bar { display: block; opacity: 1; visibility: visible; transform: none; transition: none; box-shadow: none; }
  body.nav-open .search-form { padding-left: var(--gutter); padding-right: var(--gutter); }
  body.nav-open .search-close { display: none; }
  .nav-list { flex-direction: column; align-items: stretch; gap: 0; }
  .nav-item { flex-wrap: wrap; border-bottom: 1px solid var(--hairline); }
  .nav-item > a { flex: 1 1 auto; height: 52px; padding: 0 4px; border-radius: 0; font-size: 17px; font-weight: 600; letter-spacing: -0.005em; }
  .nav-item > a:hover { background: none; }
  .nav-expand { width: 44px; height: 44px; margin: 0; }
  .nav-sub { position: static; display: none; opacity: 1; visibility: visible; transform: none; transition: none; min-width: 0; padding: 0 0 8px 16px; border: 0; border-radius: 0; box-shadow: none; flex-basis: 100%; }
  .nav-sub::before { display: none; }
  .nav-item.has-children:hover > .nav-sub, .nav-item.has-children:focus-within > .nav-sub { display: none; }
  .nav-item.has-children.is-open > .nav-sub, .nav-item.has-children.is-open:hover > .nav-sub, .nav-item.has-children.is-open:focus-within > .nav-sub { display: block; }
  .nav-sub a { min-height: 44px; padding: 8px 4px; gap: 12px; }
  .nav-sub-name { font-size: 17px; }
  .nav-sub-line { white-space: normal; }
  .nav-mobile-extra { display: flex; flex-wrap: wrap; gap: 8px 24px; padding: 14px 4px 4px; }
  .nav-mobile-extra a { display: inline-flex; align-items: center; gap: 8px; min-height: 44px; font-weight: 600; text-decoration: none; color: var(--ink); }

  .grid-4 { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 24px; }
  .line-tile { padding: 24px; min-height: 240px; }
  .line-tile-illus { width: 112px; height: 84px; }
  .product-layout { grid-template-columns: minmax(0, 1fr) 320px; gap: 40px; }
  .gpu-layout { grid-template-columns: minmax(0, 1fr) 340px; gap: 40px; }
  .listing-layout { gap: 40px; }
  .content-grid { gap: 48px; }
}

/* ---------- responsive: 960 ---------- */

@media (max-width: 960px) {
  :root { --section: 64px; }
  h1 { font-size: 44px; }
  .gpu-layout h1, .product-head h1, .content-head h1 { font-size: 36px; }
  .lead { font-size: 18px; }
  .logo img { width: 170px; height: 23px; }
  .section-head { grid-template-columns: minmax(0, 1fr); }
  .section-head h2 { font-size: 32px; }
  .section-link { grid-column: 1; grid-row: auto; justify-self: start; margin: 0; }
  .line-tiles { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; }
  .gpu-tiles { grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: 32px; }
  .gpu-tiles > li:nth-child(-n+3) .gpu-tile { border-top: 0; }
  .gpu-tiles > li:nth-child(-n+2) .gpu-tile { border-top: 1px solid var(--hairline); }
  .solution-list { column-gap: 40px; }
  .guide-list { grid-template-columns: minmax(0, 1fr); column-gap: 0; }
  .guide-list > li:nth-child(-n+3) a { border-top: 0; }
  .guide-list > li:first-child a { border-top: 1px solid var(--hairline); }
  .grid-3, .grid-4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .gpu-layout, .product-head, .quote-layout { grid-template-columns: minmax(0, 1fr); gap: 32px; }
  .gpu-side { position: static; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); align-items: start; gap: 24px; }
  .product-head-media { max-width: 400px; }
  .product-layout { grid-template-columns: minmax(0, 1fr); gap: 32px; }
  .product-side { order: -1; }
  .quote-sticky { position: static; }
  .content-grid { grid-template-columns: minmax(0, 1fr); }
  .toc { display: none; }
  /* The closing band stacks; the LED moves above the headline where the margin no longer has room for it. */
  .closing-band .quote-block { grid-template-columns: minmax(0, 1fr); row-gap: 20px; }
  .closing-band .quote-title, .closing-band .quote-lead, .closing-band .quote-side { grid-column: 1; grid-row: auto; }
  .closing-band .quote-title { font-size: 36px; padding-top: 22px; }
  .closing-band .quote-title::before { left: 0; top: 0; }
  .closing-band .quote-side { padding-top: 8px; }
  .listing-layout { grid-template-columns: minmax(0, 1fr); gap: 24px; }
  .filters { position: static; display: none; max-height: none; overflow: visible; padding: 20px 24px; background: #fff; border: 1px solid var(--hairline); border-radius: var(--radius); transition: opacity 200ms var(--ease), transform 200ms var(--ease); }
  .filters.is-open { display: block; }
  @starting-style { .filters.is-open { opacity: 0; transform: translateY(-6px); } }
  .filters-toggle { display: inline-flex; }
  .sort-field { margin-left: 12px; }
  .facet-option { min-height: 44px; align-items: center; padding: 0; }
  .facet-option input { margin: 0; }
  .facet-option label { display: flex; align-items: center; min-height: 44px; }
  .footer-grid { grid-template-columns: 1fr 1fr; gap: 32px; }
  .facts { grid-template-columns: minmax(0, 1fr); }
  .highlights { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 24px; }
  .jump-nav { top: var(--header-h); }
  /* The customer wall stacks its label above the logos once the left column would squeeze them. */
  .customer-group { grid-template-columns: minmax(0, 1fr); row-gap: 8px; padding: 20px 0; }
  .customer-label { padding-top: 0; }
  .customer-logos, .prose .customer-logos { grid-template-columns: repeat(auto-fill, minmax(148px, 1fr)); }
  .customer-logos li, .prose .customer-logos li { height: 68px; padding: 0 12px; }
  .customer-logos img, .prose .customer-logos img { max-width: 124px; max-height: 46px; }
  .customer-logos img.logo-square { max-height: 48px; }
  .customer-logos img.logo-wide { max-width: 116px; }
}

/* ---------- responsive: 600 ---------- */

@media (max-width: 600px) {
  :root { --gutter: 16px; --section: 48px; }
  body { font-size: 16px; }
  h1 { font-size: 36px; }
  h2 { font-size: 28px; }
  .gpu-layout h1, .product-head h1, .content-head h1 { font-size: 30px; }
  .lead { font-size: 17px; }
  .page-head { padding: 20px 0 36px; }
  .page-head h1 { margin-bottom: 14px; }
  .logo img { width: 156px; height: 21px; }
  .header-quote { height: 44px; padding: 0 10px; }
  .search-toggle { display: none; }
  .header-tools { margin-left: auto; }
  .search-form input { height: 44px; }
  .listing-ack { margin-top: 0; }
  .quote-layout.is-empty .js-quote-empty { grid-template-columns: minmax(0, 1fr); row-gap: 8px; }
  .quote-layout.is-empty .quote-form { grid-template-columns: minmax(0, 1fr); }
  .line-tile-foot { padding-top: 0; }
  .search-submit { padding: 0 12px; }
  .sort-field select { height: 44px; padding-right: 32px; }
  .sort-field label { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
  .results-word { display: none; }
  .link-btn { display: inline-flex; align-items: center; min-height: 44px; }
  .filters-head { align-items: center; padding-bottom: 4px; }
  /* Only the parent crumb shows, as a back link with a chevron. */
  .breadcrumbs li { display: none; }
  .breadcrumbs li:nth-last-child(2) { display: inline-flex; align-items: center; }
  .breadcrumbs li:nth-last-child(2)::before { content: ""; width: 8px; height: 8px; margin-right: 10px; padding: 0; border-left: 1.5px solid var(--graphite); border-bottom: 1.5px solid var(--graphite); transform: rotate(45deg); }
  .grid-3, .grid-2, .grid-4 { grid-template-columns: minmax(0, 1fr); gap: 16px; }
  .card.is-wide { grid-column: auto; display: flex; --media-bottom: 1px solid var(--hairline); --media-right: 0; --media-ratio: 16 / 9; --media-max: none; --body-pad: 18px 18px 6px; --actions-pad: 8px 18px 18px; --specs-cols: fit-content(96px) minmax(0, 1fr); --specs-indent: 0; }
  .line-tiles { grid-template-columns: minmax(0, 1fr); }
  .line-tile { min-height: 0; padding: 20px; }
  .line-tile-name { font-size: 24px; }
  .line-tile-illus { width: 96px; height: 72px; }
  .gpu-tiles, .solution-list, .guide-list { grid-template-columns: minmax(0, 1fr); }
  .gpu-tiles > li:nth-child(-n+2) .gpu-tile, .solution-list > li:nth-child(2) a { border-top: 0; }
  .gpu-tiles > li:first-child .gpu-tile { border-top: 1px solid var(--hairline); }
  .gpu-tile { padding: 14px 0; min-height: 0; }
  .gpu-tile-name { font-size: 18px; }
  .solution-list a, .guide-list a { padding: 12px 0; }
  .section-head { margin-bottom: 28px; }
  .section-head h2 { font-size: 28px; }
  .trust-bar ul { gap: 2px 24px; padding: 12px 0; }
  .trust-bar li { white-space: normal; }
  .card-body { padding: 18px 18px 6px; }
  .card-actions { padding: 8px 18px 18px; }
  .quote-block { padding: 22px; }
  .quote-actions .btn { flex: 1 1 100%; }
  .closing-band .quote-title { font-size: 30px; padding-top: 20px; }
  .closing-band .quote-title::before { width: 8px; height: 8px; }
  .quote-items h2 { margin-top: 0; }
  /* Each quote item stacks: the drawing, name and GPU line across the row, quantity and Remove under it. */
  .quote-table thead { display: none; }
  .quote-table, .quote-table tbody { display: block; }
  .quote-table tr { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 12px 16px; align-items: center; padding: 14px 16px; border-bottom: 1px solid var(--hairline); }
  .quote-table tbody tr:last-child { border-bottom: 0; }
  .quote-table td { display: block; padding: 0; border: 0; }
  .quote-table td:first-child { grid-column: 1 / -1; }
  .quote-table td:last-child { text-align: right; }
  .gpu-side { grid-template-columns: minmax(0, 1fr); }
  .facts div { grid-template-columns: 116px minmax(0, 1fr); }
  .spec-table tbody th { width: 40%; }
  .spec-table th, .spec-table td, .prose th, .prose td, .quote-table th, .quote-table td { padding: 10px 12px; }
  .spec-table caption { padding-top: 24px; }
  .highlights { grid-template-columns: minmax(0, 1fr); gap: 0; }
  .highlights div { padding: 12px 0 14px; }
  .jump-nav { overflow-x: auto; -webkit-overflow-scrolling: touch; }
  .jump-nav ul { flex-wrap: nowrap; }
  .jump-nav a { white-space: nowrap; }
  .product-layout { padding-bottom: var(--section); }
  .sort-field { margin-left: 0; }
  .listing-bar { gap: 10px 12px; }
  .search-page-form { flex-direction: column; }
  .quote-form { padding: 22px; }
  .footer-grid { grid-template-columns: 1fr 1fr; gap: 28px 20px; }
  .footer-company { grid-column: 1 / -1; }
  .site-footer { padding: 48px 0 24px; }
  .footer-legal { margin-top: 36px; }
  .empty-state { padding: 28px 20px; }
  .notice { padding: 16px 16px 16px 18px; }
  /* Phones: two logos per row, boxes sized to the column. */
  .customer-logos, .prose .customer-logos, .prose .customers-compact .customer-logos { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 8px; }
  .customer-logos li, .prose .customer-logos li, .prose .customers-compact .customer-logos li { height: 60px; padding: 0 10px; }
  .customer-logos img, .prose .customer-logos img, .prose .customers-compact .customer-logos img { max-width: 124px; max-height: 40px; }
  .customer-logos img.logo-square { max-height: 42px; }
  .customer-logos img.logo-wide { max-width: 118px; }
}

/* ---------- reduced motion ---------- */

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { transition: none !important; animation: none !important; }
  .js .customers .customer-logos li { opacity: 1; transform: none; }
}

/* ---------- print: product pages and spec tables read cleanly on paper ---------- */

@media print {
  @page { margin: 16mm; }
  body { font-size: 11pt; color: #000; background: #fff; }
  .site-header, .site-nav, .search-bar, .trust-bar, .breadcrumbs, .site-footer, .jump-nav, .toc, .js-print, .card-actions, .quote-actions, .filters, .listing-bar, .skip-link, .closing-band, .page-product #related, .page-product .gpu-links { display: none !important; }
  body { display: block; }
  .page-product .product-layout { display: flex; flex-direction: column; }
  .page-product .product-side { order: 1; }
  .page-product .product-main { order: 2; }
  .page-product .quote-block { padding: 0 0 6mm; border: 0; border-bottom: 1px solid #000; border-radius: 0; margin-bottom: 6mm; }
  .page-product .quote-lead { display: none; }
  .page-product .quote-human { border: 0; padding: 0; }
  main { padding: 0; }
  .wrap { max-width: none; padding: 0; }
  a { color: #000; text-decoration: none; }
  .product-layout, .gpu-layout, .product-head { display: block; }
  .gpu-side { position: static; display: block; }
  .product-head-media, .gpu-side .illus-large { max-width: 60mm; margin-bottom: 8mm; }
  .product-side { margin-top: 8mm; }
  .quote-block { page-break-inside: avoid; border: 1px solid #000; }
  .highlights { grid-template-columns: 1fr 1fr 1fr; }
  .highlights div { border-color: #000; page-break-inside: avoid; }
  .spec-table { page-break-inside: avoid; }
  .spec-table tbody tr:first-child th, .spec-table tbody tr:first-child td { border-top-color: #000; }
  .spec-table th, .spec-table td { border-bottom-color: #999; }
  .badge { color: #000 !important; }
  .notice { border-color: #000; background: none; }
  .grid { display: block; }
  .card { page-break-inside: avoid; margin-bottom: 6mm; }
}
