/* download-redesign.css — Connecter Download page (indigo redesign).
   All rules scoped under body.dc-download. Loaded AFTER redesign-tokens.css.
   Tokens (fonts, indigo colors, radii) are NOT duplicated here — they are
   inherited via the `dc-redesign` class added to <body> (see newindex.htm),
   which puts this page under the `.dc-redesign, .dc-auth` selector scope
   in redesign-tokens.css. */

/* Base font for the whole page. The `!important` is REQUIRED: a shared global
   legacy rule (from another app's stylesheet) forces `font-family:
   designconnected !important` — an icon font with no text glyphs — onto the
   body, so any text that merely INHERITS from body (the footer copyright text
   node, the feedback/Contact modal, the mobile nav link text) renders in the
   browser's serif fallback. Re-declaring with !important wins. This does NOT
   break icons: every icon on the page (.icn-nav, .cnnctr-icon, the download /
   info glyphs) declares its own `font-family` (connecter / connecter-new), and
   a self-declared font always beats an inherited one — verified in-browser. */
body.dc-download { margin: 0; font-family: var(--dc-font-body) !important; }

/* ==========================================================================
   Task 2 — Header reskin (`.dl-header`)
   The legacy `header` rule in new_style.css is a fixed, 200px-wide vertical
   icon rail (position:absolute; width:200px) meant for other Connecter
   pages. `header_connecter.htm` is only ever used by this page (verified —
   DesktopApp::actionIndex() is its sole caller), so we fully replace that
   layout here rather than patch it. The header is transparent and sits over
   the hero aurora painted by `.dl-hero` in Task 3 (this page has no hero
   background yet, so it renders on a plain page for now — expected).
   ========================================================================== */

body.dc-download .dl-header {
  position: relative;
  z-index: 3;
  width: auto;
  /* The legacy `header` rule forces height:170px at <=1024px, which is far
     taller than this slim flex row and leaves a white band above the aurora
     (the hero pulls up by the header height). Pin the height to the content so
     the header always sits within the aurora at every width. */
  height: auto;
  min-height: 0;
  display: flex;
  align-items: center;
  justify-content: space-between;
  /* Base = mobile: full-width row, logo left + hamburger right at 48px. On
     desktop (>=1025px) the whole row (logo + nav) is constrained to the centred
     section content column instead — see the desktop block below. */
  padding: 28px 48px;
  margin: 0;
  background-color: transparent;
}

/* White logo: the source asset (logo_suite_blue.svg) is blue; the header
   sits on a dark aurora so it must read as clean white. Inverting via
   filter keeps the shared asset untouched and this rule page-scoped.
   Size override is REQUIRED: the legacy `header .logo img` rule in
   new_style.css sets height:126px (140px/110px in its media queries),
   sized for a 200px-wide vertical icon rail — that would render the mark
   hugely oversized in this slim ~28px-padded header row. This selector
   out-specifies `header .logo img`, so the mark tracks the ~40px height it
   has in Hero Image.png. Scoped to `.dl-header__logo` (the top header-row
   logo only), so the mobile-overlay duplicate (`li.logo-mobile a.logo img`,
   which has no `dl-header__logo` class) keeps its own larger sizing. */
body.dc-download .dl-header .dl-header__logo img {
  filter: brightness(0) invert(1);
  /* Base (mobile) keeps the original 40px so the mobile header stays ~96px and
     its hero spacing is unchanged. The 2x (80px) enlargement is applied on
     desktop (>=1025px) only — see the desktop header block — where the layout
     already changes from the hamburger overlay to the full nav row. */
  height: 40px;
  width: auto;
  max-height: 40px;
}

body.dc-download .dl-header .dl-header__logo {
  margin: 0;
  display: inline-flex;
  align-items: center;
}

/* Mobile hamburger / close icon bars: recolor to white so they read over
   the dark aurora. Only visible at <=1024px via the existing `.mobile-only`
   rule in new_style.css — safe to set unconditionally here. */
body.dc-download .dl-header span.icon-hamburger i,
body.dc-download .dl-header span.icon-hamburger i:before,
body.dc-download .dl-header span.icon-hamburger i:after {
  background-color: var(--dc-white);
}

body.dc-download .dl-header span.icon-close-nav:before,
body.dc-download .dl-header span.icon-close-nav:after {
  background-color: var(--dc-white);
}

/* "NEW" badge on the Connecter 8 nav item. Defined OUTSIDE the desktop media
   query so it also renders in the <=1024px mobile overlay. Self-colored (brand
   blue gradient + white text) so it reads on both the dark desktop bar and the
   light mobile overlay panel. */
body.dc-download .dl-header .dl-header__badge {
  display: inline-block;
  margin-left: 8px;
  padding: 2px 8px;
  border-radius: var(--dc-radius-pill);
  background: var(--dc-btn-gradient);
  color: var(--dc-white);
  font-family: var(--dc-font-body);
  font-size: 11px;
  font-weight: 700;
  line-height: 1.4;
  letter-spacing: .04em;
  text-transform: uppercase;
  opacity: 1;
}

/* Desktop nav row (>1024px matches the breakpoint new_style.css uses to
   switch into the full-screen mobile overlay nav — leave that overlay's
   own layout/colors alone below 1025px so the existing hamburger behaviour
   keeps working unmodified). */
@media screen and (min-width: 1025px) {
  /* Desktop header: the WHOLE row (logo + nav) is constrained to the centred
     section content column — the logo aligns to the section content-left and
     "Get started" to the content-right. Mirrors the sections exactly: their
     max-width:1600 inner sits inside 64px section padding, so reproducing that
     here (max-width 1600 + 2*64, box-sizing:border-box, 64px side padding, auto
     margins) yields the same content box, min(1600px, 100vw - 128px), centred.
     min-height holds the row tall enough for the 2x (80px) logo. */
  body.dc-download .dl-header {
    max-width: 1728px;
    margin: 0 auto;
    padding: 28px 64px;
    box-sizing: border-box;
    min-height: 136px;
  }

  /* 2x logo (80px, up from the 40px base) — desktop only. Portrait asset
     (viewBox 140.6x223.1) → ~50px wide, so it barely affects the nav; it does
     make the header ~136px tall, so the hero -136px pull-up (desktop-scoped)
     keeps the aurora covering the full header (no white band). */
  body.dc-download .dl-header .dl-header__logo img {
    height: 80px;
    max-height: 80px;
  }

  /* Nav fills from the logo across to the header content-right (= section
     content-right); the right cluster is pushed there by margin-left:auto on
     `.nav-right-start`. 64px gap between the logo and the first item. */
  body.dc-download .dl-header .dl-header__nav {
    display: flex;
    align-items: center;
    flex: 1 1 auto;
    margin-left: 64px;
  }

  body.dc-download .dl-header .dl-header__nav .nav {
    display: flex;
    align-items: center;
    /* 32px (was 40) keeps all 8 items on one row down to the 1025px desktop
       floor; below 1025px the mobile overlay takes over. */
    gap: 32px;
    list-style: none;
    margin: 0;
    padding: 0;
    width: 100%;
  }

  body.dc-download .dl-header .dl-header__nav .nav li {
    display: block;
    /* Hold each item at its natural single-line width so a tight row never
       shrinks an item enough to wrap its label; at <=1232px the gap/offsets
       tighten instead (media block after this one). */
    flex-shrink: 0;
  }

  /* Mobile-only duplicate logo inside the nav — never shown on desktop. */
  body.dc-download .dl-header .dl-header__nav .nav li.logo-mobile {
    display: none;
  }

  /* The legacy new_style.css puts clearfix ::before/::after (content:" ";
     display:table) on `.nav`. In this flex row they blockify into zero-width
     flex items, so `gap:32px` reserves 32px before the first and after the
     last real item — that trailing 32px pushes the right cluster (Get started)
     in from the section content edge. Drop them so the row sits flush with the
     content column on both sides. Desktop-only (>=1025px) — the <=1024 mobile
     overlay keeps the legacy clearfix untouched. */
  body.dc-download .dl-header .dl-header__nav .nav::before,
  body.dc-download .dl-header .dl-header__nav .nav::after {
    display: none;
  }

  /* Split the row into a left cluster (Pricing…Connecter 8, by the logo) and a
     right cluster (Login/Logout · Feedback · Get started). `.nav-right-start`
     is set on BOTH the login_button and logout_button <li> in
     header_connecter.htm; exactly one renders, so it is always the first
     right-cluster item — `margin-left:auto` on it pushes it and everything
     after to the right, regardless of how many left items precede it. This
     replaces an earlier `nth-last-child(3)` selector that hard-coded a 5-<li>
     nav; nav items can now be added/removed without touching this rule. */
  body.dc-download .dl-header .dl-header__nav .nav li.nav-right-start {
    margin-left: auto;
  }

  body.dc-download .dl-header .dl-header__nav .nav li a {
    display: inline-flex;
    align-items: center;
    position: static;
    margin: 0;
    padding: 0;
    font-family: var(--dc-font-body);
    font-size: 15px;
    font-weight: 500;
    line-height: 1;
    text-transform: none;
    /* Multi-word labels ("Customer Stories", "Get started") never break to a
       second line; the 1025–1232px media block tightens spacing to keep the
       nowrap row fitting. */
    white-space: nowrap;
    text-decoration: none;
    color: var(--dc-white);
    opacity: .92;
    border-top: none;
    background-color: transparent;
    transition: opacity .2s ease-in-out;
  }

  body.dc-download .dl-header .dl-header__nav .nav li a:hover,
  body.dc-download .dl-header .dl-header__nav .nav li a:focus {
    color: var(--dc-white);
    opacity: 1;
    background-color: transparent;
  }

  /* Plain text nav — icons from the legacy icon-rail layout are hidden. */
  body.dc-download .dl-header .dl-header__nav .nav li a .icn-nav {
    display: none;
  }

  /* Get started — the sole white-outlined rounded pill, transparent fill.
     (Login/Logout are now plain text links; they inherit the nav-link style
     above.) */
  body.dc-download .dl-header .dl-header__nav .nav li a.nav-cta {
    padding: 10px 24px;
    border: 1px solid var(--dc-white);
    border-radius: var(--dc-radius-pill);
    opacity: 1;
    text-align: center;
  }

  body.dc-download .dl-header .dl-header__nav .nav li a.nav-cta:hover,
  body.dc-download .dl-header .dl-header__nav .nav li a.nav-cta:focus {
    background-color: rgba(255, 255, 255, .12);
  }
}

/* ==========================================================================
   Narrow desktop (1025–1232px): with the whole row constrained to the content
   column (64px side padding) plus the 2x logo, the 8 nav items + Get-started
   pill don't fit at the base 64px logo-gap / 32px item-gap once labels are
   `nowrap`. Tighten both (logo→nav gap 32px, item gap 16px). Below 1100px the
   page sections drop to 24px side padding, so the header padding follows suit —
   this keeps the logo aligned to the section content-left AND frees the extra
   room the tightest widths (down to the 1025px floor) need. Verified no
   horizontal overflow down to 1025px (below that the mobile overlay takes over).
   ========================================================================== */
@media screen and (min-width: 1025px) and (max-width: 1232px) {
  body.dc-download .dl-header .dl-header__nav {
    margin-left: 32px;
  }
  body.dc-download .dl-header .dl-header__nav .nav {
    gap: 16px;
  }
}

@media screen and (min-width: 1025px) and (max-width: 1100px) {
  body.dc-download .dl-header {
    padding-left: 24px;
    padding-right: 24px;
  }
}

/* ==========================================================================
   Task 7 — Mobile nav legibility (<=1024px)
   Below 1025px, new_style.css swaps `header nav` into a full-screen LIGHT
   overlay panel (background:#fff; each `header nav .nav li a` row painted
   on #f4f4f4). The white nav-link color set above is scoped to the
   >=1025px desktop rule only, so it never reaches this range — the legacy
   base rule `header .nav li a{color:#444}` is what actually paints the
   text there. Pin that explicitly to the design token (rather than resting
   on the legacy fallback) so it can't regress if the legacy rule changes.
   Also fixes a real bug: the close (X) icon was forced white unconditionally
   above (correct for the hamburger's resting state over the dark aurora),
   but the (X) itself is only ever drawn on top of this light open panel —
   white-on-white was invisible. Icons inside nav links (`.icn-nav`) have no
   color of their own (icon-font glyphs use `currentColor`), so they follow
   the link color fix automatically. */
@media screen and (max-width: 1024px) {
  body.dc-download .dl-header .dl-header__nav .nav li a {
    color: var(--dc-ink);
  }

  body.dc-download .dl-header .dl-header__nav .nav li a:hover,
  body.dc-download .dl-header .dl-header__nav .nav li a:focus {
    color: var(--dc-ink);
  }

  body.dc-download .dl-header span.icon-close-nav:before,
  body.dc-download .dl-header span.icon-close-nav:after {
    background-color: var(--dc-ink);
  }
}

/* ==========================================================================
   Task 3 — Hero (`.dl-hero`)
   `header` and `.dl-hero` are adjacent siblings under `#main` (index.htm
   outputs {$header}{$content}{$footer} in normal flow). `.dl-hero` gets a
   negative top margin equal to the header's own layout height (96px: 28px
   padding top+bottom + 40px logo, see Task 2) so its aurora background
   starts at the very top of the page, behind the transparent header, instead
   of leaving a plain gap above it. `padding-top` then pushes the H1 back
   down to clear the header row (96px) plus the breathing room visible in
   Hero Image.png before the title starts.
   No z-index is needed on `.dl-hero` for the header to stay on top: the
   header is a positioned element with an explicit z-index (3), which always
   paints above an in-flow, non-positioned sibling like `.dl-hero`,
   regardless of DOM order. */
body.dc-download .dl-hero {
  /* `cover` keeps the aurora spanning the full width at every viewport (no side
     gaps). Because the hero is shorter than the image's natural height at
     desktop widths, cover crops vertically — `background-position: center 82%`
     pulls that crop down so the lighter lower band sits behind the H1/subtitle
     (keeping the dark title + muted subtitle readable) while the nav keeps a
     darker blue above. The indigo background-color only shows through the fully
     transparent nothing — it's a harmless backstop. */
  background-image: url("../../../img/cnnctr/download/header-bg.png");
  background-repeat: no-repeat;
  background-position: center 82%;
  background-size: cover;
  background-color: var(--dc-indigo-deep);
  /* Pull the aurora up under the full header height so it covers the header with
     no white band. Base = the ~96px mobile header (40px logo + 2*28 padding).
     On desktop the logo is 80px → 136px header, so the pull-up and padding-top
     are overridden to -136 / 208 in the desktop block below. */
  margin-top: -96px;
  padding: 168px 24px 96px;
  text-align: center;
}

/* Desktop (>=1025px): the 2x (80px) logo makes the header 136px, so pull the
   aurora up the extra 40px and add it back to padding-top, keeping the title's
   spacing below the taller header and the aurora covering it (no white band). */
@media screen and (min-width: 1025px) {
  body.dc-download .dl-hero {
    margin-top: -136px;
    padding-top: 208px;
  }
}

body.dc-download .dl-hero__inner {
  max-width: 1200px;
  margin: 0 auto;
}

body.dc-download .dl-hero__title {
  margin: 0 0 20px;
  font-family: var(--dc-font-display);
  font-size: 76px;
  font-weight: 800;
  line-height: 1.08;
  color: var(--dc-ink);
}

/* Keep the title on ONE line only where it actually fits: at 76px it renders
   ~1050px wide, so it needs ≥~1100px of viewport. Below that it must wrap
   (otherwise it overflows the right edge, e.g. at ~1030px). nowrap is opt-in
   above the safe width rather than a base rule with narrower overrides. */
@media screen and (min-width: 1120px) {
  body.dc-download .dl-hero__title {
    white-space: nowrap;
  }
}

body.dc-download .dl-hero__subtitle {
  margin: 0 0 44px;
  font-family: var(--dc-font-body);
  font-size: 23px;
  line-height: 1.5;
  color: var(--dc-muted);
}

body.dc-download .dl-hero__cta {
  display: flex;
  align-items: center;
  justify-content: center;
  margin: 0 0 32px;
}

/* Single <button> per the auth-gated node (only one node ever renders — see
   partialContent()). Per the Figma the control is a WHITE outlined circle
   (the download glyph) sitting DETACHED to the left of a gradient pill, with
   a clear gap between them — so the button itself is transparent, the circle
   is a standalone flex item, and only the label carries the gradient pill. */
body.dc-download .dl-download-btn {
  display: inline-flex;
  align-items: center;
  gap: 0;
  border: 0;
  padding: 0;
  cursor: pointer;
  background: transparent;
  color: var(--dc-white);
  font-family: var(--dc-font-body);
  transition: transform .15s ease-in-out;
}

body.dc-download .dl-download-btn:hover,
body.dc-download .dl-download-btn:focus {
  transform: translateY(-1px);
}

body.dc-download .dl-download-btn__icon {
  position: relative;
  z-index: 1;
  flex: 0 0 auto;
  width: 56px;
  height: 56px;
  border-radius: 50%;
  background: var(--dc-white);
  border: 1px solid rgba(13, 12, 23, .22);
  box-shadow: 0 6px 16px rgba(13, 12, 23, .10);
}

body.dc-download .dl-download-btn__icon:before {
  font-family: "connecter-new" !important;
  content: "\e910"; /* icn-connecter-download glyph */
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  font-size: 20px;
  color: var(--dc-indigo-deep);
}

body.dc-download .dl-download-btn__label {
  margin-left: -20px; /* pull the pill left so the icon circle overlaps it (no gap) */
  padding: 19px 44px;
  border-radius: var(--dc-radius-pill);
  background: linear-gradient(110deg, #9d90f5 0%, #6a63f0 52%, #4a3fe0 100%);
  color: var(--dc-white);
  font-size: 18px;
  font-weight: 600;
  line-height: 1;
  white-space: nowrap;
  box-shadow: 0 16px 34px rgba(74, 63, 224, .28);
}

body.dc-download .dl-hero__meta {
  display: inline-block;
  padding: 20px 32px;
  border-radius: var(--dc-radius-card);
  background: rgba(232, 233, 251, .72);
  border: 1px solid rgba(255, 255, 255, .55);
  box-shadow: var(--dc-shadow-card);
  backdrop-filter: blur(16px);
  -webkit-backdrop-filter: blur(16px);
}

body.dc-download .dl-hero__os {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  margin: 0 0 14px;
  padding-bottom: 14px;
  border-bottom: 1px solid var(--dc-line);
  font-family: var(--dc-font-body);
  font-size: 15px;
  font-weight: 600;
  color: var(--dc-ink);
  white-space: nowrap;
}

body.dc-download .dl-hero__info {
  position: relative;
  display: inline-block;
  width: 16px;
  height: 16px;
}

body.dc-download .dl-hero__info:before {
  font-family: "connecter-new" !important;
  content: "\e93c"; /* icn-connecter-info glyph */
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  font-size: 15px;
  color: var(--dc-muted);
}

body.dc-download .dl-hero__version {
  margin: 0;
  font-family: var(--dc-font-body);
  font-size: 14px;
  color: var(--dc-muted);
  white-space: nowrap;
}

/* Task 7 — tablet/mobile tier (<=1024px). Here the logo is the 40px base, so the
   header stays ~96px and the base -96px hero pull-up is correct as-is (the 2x
   logo / -136px pull-up are desktop-only). Only the padding-top breathing room
   is trimmed per tier below. */
@media screen and (max-width: 1024px) {
  body.dc-download .dl-hero {
    padding: 152px 24px 80px;
  }

  body.dc-download .dl-hero__title {
    font-size: 52px;
    white-space: normal;
  }

  body.dc-download .dl-hero__subtitle {
    font-size: 19px;
  }
}

@media screen and (max-width: 600px) {
  body.dc-download .dl-hero {
    padding: 140px 20px 72px;
  }

  body.dc-download .dl-hero__title {
    font-size: 40px;
    white-space: normal;
  }

  body.dc-download .dl-hero__subtitle {
    font-size: 17px;
    margin-bottom: 32px;
  }

  body.dc-download .dl-hero__os,
  body.dc-download .dl-hero__version {
    white-space: normal;
  }
}

/* Task 7 — small-phone tier. `.dl-download-btn__label` is `white-space:
   nowrap` by default (Task 3) so long translated labels can't wrap inside
   the flex-centered `.dl-hero__cta`, which would push the pill wider than
   the viewport and cause horizontal scroll — allow wrapping here as a
   safety net. `.dl-hero__meta` is pinned to `max-width:100%` for the same
   reason (long localized OS/version strings). */
@media screen and (max-width: 480px) {
  body.dc-download .dl-hero {
    padding: 128px 16px 64px;
  }

  body.dc-download .dl-hero__title {
    font-size: 30px;
  }

  body.dc-download .dl-hero__subtitle {
    font-size: 15px;
  }

  body.dc-download .dl-hero__meta {
    max-width: 100%;
    box-sizing: border-box;
    padding: 16px 20px;
  }

  body.dc-download .dl-download-btn {
    max-width: 100%;
    box-sizing: border-box;
  }

  body.dc-download .dl-download-btn__label {
    white-space: normal;
  }
}

/* ==========================================================================
   Task 4 — System Requirements (`.dl-sysreq`)
   White section directly below the hero: intro copy (~40%) on the left,
   the comparison table in a floating white card (~60%) on the right, using
   the same card radius/shadow tokens as `.dl-hero__meta`. `.dl-link` is
   introduced here as the shared "arrow link" style — Task 5 (What's New)
   reuses it verbatim, so keep it generic (no `.dl-sysreq` prefix on it).
   ========================================================================== */

body.dc-download .dl-sysreq {
  background: var(--dc-white);
  padding: 120px 64px;
}

body.dc-download .dl-sysreq__inner {
  display: grid;
  grid-template-columns: minmax(0, 2fr) minmax(0, 3fr);
  align-items: start;
  gap: 88px;
  max-width: 1600px;
  margin: 0 auto;
}

body.dc-download .dl-sysreq__intro h2 {
  margin: 0 0 24px;
  font-family: var(--dc-font-display);
  font-size: 48px;
  font-weight: 800;
  line-height: 1.15;
  color: var(--dc-ink);
}

body.dc-download .dl-sysreq__intro p {
  margin: 0 0 22px;
  font-family: var(--dc-font-body);
  font-size: 18px;
  line-height: 1.7;
  color: var(--dc-muted);
}

/* Shared arrow-link style — reused by Task 5 (What's New section). */
body.dc-download .dl-link {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  margin-top: 8px;
  font-family: var(--dc-font-body);
  font-size: 16px;
  font-weight: 700;
  color: var(--dc-indigo-deep);
  text-decoration: none;
}

body.dc-download .dl-link:hover,
body.dc-download .dl-link:focus {
  text-decoration: underline;
}

/* Diagonal up-right arrow (↗) per the Figma — an inline SVG (indigo stroke)
   rather than the icon-font weblink/chain glyph the earlier pass used. */
body.dc-download .dl-link__arrow {
  display: inline-block;
  width: 20px;
  height: 20px;
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%230d0a4c' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M7 7h10v10'/%3E%3Cpath d='M7 17 17 7'/%3E%3C/svg%3E") no-repeat center / contain;
}

body.dc-download .dl-sysreq__table {
  padding: 8px 32px;
  border-radius: var(--dc-radius-card);
  background: var(--dc-white);
  box-shadow: var(--dc-shadow-card);
}

body.dc-download .dl-sysreq__table table {
  width: 100%;
  border-collapse: collapse;
  font-family: var(--dc-font-body);
}

body.dc-download .dl-sysreq__table th,
body.dc-download .dl-sysreq__table td {
  padding: 22px 16px;
  text-align: left;
  border-bottom: 1px solid var(--dc-line);
  font-size: 16px;
  line-height: 1.45;
}

body.dc-download .dl-sysreq__table tbody tr:last-child th,
body.dc-download .dl-sysreq__table tbody tr:last-child td {
  border-bottom: 0;
}

body.dc-download .dl-sysreq__table thead th {
  padding-top: 24px;
  font-size: 15px;
  font-weight: 500;
  text-transform: none;
  letter-spacing: normal;
  color: var(--dc-muted);
}

/* Component names (row headers) — bold, dark, per Figma. Intentionally NOT
   nowrap: on wide desktop the column has room so they stay on one line, but
   forcing nowrap inflates the table's min-content width and makes it overflow
   its card in the narrower two-column range (~1025-1150px). Letting them wrap
   only when cramped keeps the table inside its card. */
body.dc-download .dl-sysreq__table tbody th {
  font-weight: 700;
  color: var(--dc-ink);
}

body.dc-download .dl-sysreq__table tbody td {
  color: var(--dc-muted);
}

/* Only at wide widths (where even long localized labels fit) keep the column
   labels + component names on one line for the crisp desktop look. Below this
   they wrap, which is what keeps the table inside its card in the narrower
   two-column range. Value cells (td) always wrap — the long GPU string is meant
   to break to two lines. */
@media screen and (min-width: 1320px) {
  body.dc-download .dl-sysreq__table thead th,
  body.dc-download .dl-sysreq__table tbody th {
    white-space: nowrap;
  }
}

/* Soft-green "Recommended" pill on the Professional column header. */
body.dc-download .dl-badge {
  display: inline-block;
  margin-left: 6px;
  padding: 4px 12px;
  border-radius: var(--dc-radius-pill);
  background: #b6f0cd;
  color: #12864a;
  font-size: 12px;
  font-weight: 700;
  text-transform: none;
  letter-spacing: normal;
  white-space: nowrap;
  vertical-align: middle;
}

@media screen and (max-width: 1100px) {
  body.dc-download .dl-sysreq {
    padding: 72px 24px;
  }

  body.dc-download .dl-sysreq__inner {
    grid-template-columns: 1fr;
    gap: 40px;
  }

  body.dc-download .dl-sysreq__table {
    padding: 4px 16px;
  }

  body.dc-download .dl-sysreq__table th,
  body.dc-download .dl-sysreq__table td {
    padding: 16px 8px;
  }
}

/* Phone/small-tablet tier — STACK the 3-column comparison table instead of
   scrolling it. Each row becomes a block: the component name is a heading,
   then the Minimum and Professional values each sit on their own line prefixed
   by their column label (from the `data-label` attr — translated in the
   template). No horizontal scroll, all information visible. */
@media screen and (max-width: 767px) {
  body.dc-download .dl-sysreq__table {
    padding: 8px 20px;
    overflow: visible;
  }

  body.dc-download .dl-sysreq__table table,
  body.dc-download .dl-sysreq__table tbody,
  body.dc-download .dl-sysreq__table tr,
  body.dc-download .dl-sysreq__table th,
  body.dc-download .dl-sysreq__table td {
    display: block;
    width: 100%;
  }

  /* Column headers (Component/Minimum/Professional + badge) are replaced by
     per-row labels, so the header row is hidden on phones. */
  body.dc-download .dl-sysreq__table thead {
    display: none;
  }

  body.dc-download .dl-sysreq__table tbody tr {
    padding: 18px 0;
    border-bottom: 1px solid var(--dc-line);
  }

  body.dc-download .dl-sysreq__table tbody tr:last-child {
    border-bottom: 0;
  }

  /* Component name = row heading. */
  body.dc-download .dl-sysreq__table tbody th {
    padding: 0 0 10px;
    border: 0;
    font-size: 17px;
    white-space: normal;
  }

  /* Each value line: bold column label + value. */
  body.dc-download .dl-sysreq__table tbody td {
    display: flex;
    gap: 12px;
    padding: 5px 0;
    border: 0;
    text-align: left;
  }

  body.dc-download .dl-sysreq__table tbody td::before {
    content: attr(data-label);
    flex: 0 0 104px;
    font-weight: 700;
    color: var(--dc-ink);
  }
}

/* ==========================================================================
   Task 5 — What's New (`.dl-whatsnew`)
   Two-column section directly below System Requirements: the splash media
   sits left in a rounded lavender card, the eyebrow/heading/copy/links sit
   right. `.dl-link` / `.dl-link__arrow` are reused verbatim from Task 4 —
   not redefined here.
   ========================================================================== */

/* Soft aurora fading in toward the footer (per Figma), using the supplied
   footer-bg2.png asset (white at top → mint glow bottom-left, periwinkle glow
   bottom-right). Full-width (`100% auto`) so it never leaves side gaps, anchored
   to the bottom so the coloured glows land just above the footer; the white
   background-color backs the uncovered top so it blends seamlessly out of the
   white System Requirements section above. */
body.dc-download .dl-whatsnew {
  background: #ffffff url("../../../img/cnnctr/download/footer-bg2.png") no-repeat center bottom;
  background-size: 100% auto;
  padding: 24px 64px 140px;
}

body.dc-download .dl-whatsnew__inner {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  align-items: center;
  gap: 88px;
  max-width: 1600px;
  margin: 0 auto;
}

body.dc-download .dl-whatsnew__media {
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 48px;
  border-radius: var(--dc-radius-card);
  background: var(--dc-lavender);
}

/* Click-to-play video facade — replaces the former static splash `img`.
   The `.dl-video` anchor is a 16:9 box inside the lavender media card; the poster
   and play glyph absolutely fill it. On click the inline script in content.htm
   swaps the whole anchor for `.dl-video__frame` (the YouTube iframe), which sits
   as a flex sibling of the media card with no positioned ancestor — so it must
   reproduce the same 16:9 box itself rather than absolutely fill one. Nothing
   loads from YouTube until the click, so page load stays light. */
body.dc-download .dl-video {
  position: relative;
  display: block;
  width: 100%;
  aspect-ratio: 16 / 9;
  border-radius: calc(var(--dc-radius-card) - 8px);
  overflow: hidden;
  background: var(--dc-indigo-deep, #0d0a4c);
  cursor: pointer;
}

body.dc-download .dl-video__thumb {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  border: 0;
  object-fit: cover;
  transition: transform .4s ease, filter .4s ease;
}

body.dc-download .dl-video__frame {
  display: block;
  width: 100%;
  aspect-ratio: 16 / 9;
  border: 0;
  border-radius: calc(var(--dc-radius-card) - 8px);
  overflow: hidden;
  background: #000;
}

body.dc-download .dl-video:hover .dl-video__thumb,
body.dc-download .dl-video:focus-visible .dl-video__thumb {
  transform: scale(1.03);
  filter: brightness(1.04);
}

/* Play button — indigo gradient disc with an optically-centred white triangle. */
body.dc-download .dl-video__play {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  width: 88px;
  height: 88px;
  border-radius: 50%;
  background: var(--dc-btn-gradient);
  box-shadow: 0 10px 30px rgba(13, 10, 76, .35);
  transition: transform .2s ease, box-shadow .2s ease;
}

body.dc-download .dl-video__play::after {
  content: "";
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-40%, -50%);
  border-style: solid;
  border-width: 15px 0 15px 26px;
  border-color: transparent transparent transparent #fff;
}

body.dc-download .dl-video:hover .dl-video__play,
body.dc-download .dl-video:focus-visible .dl-video__play {
  transform: translate(-50%, -50%) scale(1.08);
  box-shadow: 0 14px 40px rgba(13, 10, 76, .45);
}

body.dc-download .dl-video:focus-visible {
  outline: 3px solid var(--dc-indigo-deep, #0d0a4c);
  outline-offset: 4px;
}

@media (prefers-reduced-motion: reduce) {
  body.dc-download .dl-video__thumb,
  body.dc-download .dl-video__play {
    transition: none;
  }
  body.dc-download .dl-video:hover .dl-video__thumb,
  body.dc-download .dl-video:focus-visible .dl-video__thumb,
  body.dc-download .dl-video:hover .dl-video__play,
  body.dc-download .dl-video:focus-visible .dl-video__play {
    transform: translate(-50%, -50%);
  }
  body.dc-download .dl-video:hover .dl-video__thumb,
  body.dc-download .dl-video:focus-visible .dl-video__thumb {
    transform: none;
  }
}

body.dc-download .dl-eyebrow {
  margin: 0 0 14px;
  font-family: var(--dc-font-body);
  font-size: 14px;
  font-weight: 700;
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--dc-muted);
}

body.dc-download .dl-whatsnew__body h2 {
  margin: 0 0 24px;
  font-family: var(--dc-font-display);
  font-size: 48px;
  font-weight: 800;
  line-height: 1.15;
  color: var(--dc-ink);
}

body.dc-download .dl-whatsnew__body p {
  margin: 0 0 24px;
  font-family: var(--dc-font-body);
  font-size: 18px;
  line-height: 1.7;
  color: var(--dc-muted);
}

body.dc-download .dl-whatsnew__links {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 32px;
  margin-top: 8px;
}

body.dc-download .dl-whatsnew__links .dl-link {
  margin-top: 0;
}

@media screen and (max-width: 1100px) {
  body.dc-download .dl-whatsnew {
    padding: 16px 24px 110px;
  }

  body.dc-download .dl-whatsnew__inner {
    grid-template-columns: 1fr;
    gap: 32px;
  }

  body.dc-download .dl-whatsnew__media {
    padding: 32px;
  }
}

/* ==========================================================================
   Task 6 — Footer (`.dl-footer`)
   `footer.htm` is a SHARED template — the `home_footer` node it defines also
   renders on Home/Subscriptions/Aistudio/Guide/Blog/Credits, so every rule
   here is scoped under `body.dc-download` and the watermark is a pure CSS
   pseudo-element (NOT a markup node) so it can never leak stray text onto
   those other pages.
   The legacy `footer` rule (new_style.css) sets `margin-top:-160px` to pull
   the footer up under a fading background on other pages — that offset is
   not wanted here (this page's `.dl-whatsnew` section is opaque white right
   above the footer), so it is zeroed below. Link/social colors are already
   white via the legacy `footer ul a` / icon `filter:brightness(0) invert(1)`
   rules, so only the un-linked copyright text and the aurora background
   need dark-theme treatment here.
   ========================================================================== */
body.dc-download .dl-footer {
  position: relative;
  z-index: 1;
  overflow: hidden;
  margin-top: 0;
  min-height: 0;
  padding: 64px 48px 120px;
  background: url("../../../img/cnnctr/download/footer-bg.png") no-repeat center center;
  background-size: cover;
}

body.dc-download .dl-footer .container {
  position: relative;
  z-index: 1;
  max-width: 1600px;
  margin: 0 auto;
  flex-wrap: wrap;
  align-items: center;
  row-gap: 28px;
}

/* Large, low-opacity "Connecter" wordmark clipped along the bottom edge of
   the footer. Pure CSS (::after) — never markup — because this footer
   partial is shared across pages that have no watermark styling. */
body.dc-download .dl-footer::after {
  content: "Connecter";
  position: absolute;
  left: 0;
  right: 0;
  bottom: -.18em;
  z-index: 0;
  text-align: center;
  font-family: var(--dc-font-display);
  font-weight: 700;
  font-size: 22vw;
  line-height: 1;
  color: var(--dc-white);
  opacity: .06;
  pointer-events: none;
  user-select: none;
}

/* The copyright entry is a plain <li> (no <a>), so it inherits the legacy
   `footer{color:#f17767}` salmon text color — override to a light, muted
   tone that reads on the dark aurora. */
body.dc-download .dl-footer .nav-footer-rules li {
  border-left-color: rgba(255, 255, 255, .24);
  color: #cfd6ee;
}

body.dc-download .dl-footer .nav-footer-rules li a {
  font-family: var(--dc-font-body);
  color: var(--dc-white);
  opacity: .8;
}

body.dc-download .dl-footer .nav-footer-rules li a:hover,
body.dc-download .dl-footer .nav-footer-rules li a:focus {
  opacity: 1;
}

/* The legacy `footer .logo-footer` rule absolute-centers the logo, which on
   this page lands it on top of the copyright text. Pull it out of that
   centering into a full-width top row so it sits top-left (per the Figma),
   letting the links + socials wrap onto the row below it. */
body.dc-download .dl-footer .logo-footer {
  position: static;
  transform: none;
  order: -1;
  flex: 0 0 auto;
  height: 40px;
  width: auto;
  margin-right: 32px;
}

@media screen and (max-width: 900px) {
  body.dc-download .dl-footer {
    padding: 48px 20px 96px;
  }

  body.dc-download .dl-footer::after {
    font-size: 28vw;
  }
}

/* Task 7 — narrow-phone tier. The watermark can never cause page-level
   horizontal overflow (`.dl-footer` has `overflow:hidden`, so any excess
   glyph width is clipped inside the footer itself), but at very narrow
   widths 28vw reads oddly small next to the footer's now-tighter padding —
   nudge it back up so it still lands as a bold clipped flourish rather
   than a thin sliver of text. */
@media screen and (max-width: 480px) {
  body.dc-download .dl-footer {
    padding: 40px 16px 72px;
  }

  body.dc-download .dl-footer::after {
    font-size: 32vw;
  }
}

/* ==========================================================================
   Task 7 — shared small-phone heading scale
   `.dl-sysreq__intro h2` and `.dl-whatsnew__body h2` both inherit the same
   36px display-font heading size from their Task 4/5 base rules; at
   narrow-phone widths that reads oversized relative to the now-single-
   column body copy, so both are trimmed together here rather than
   duplicating the same value under each section's own block.
   ========================================================================== */
@media screen and (max-width: 480px) {
  body.dc-download .dl-sysreq__intro h2,
  body.dc-download .dl-whatsnew__body h2 {
    font-size: 28px;
  }
}

/* ==========================================================================
   Suite footer (desktop-app only) — 2×2 grid + divider.
   Wrapper `.dl-footer` already supplies the blue footer-bg.png background and
   the ::after "Connecter" watermark; this only lays out the suite variant.
   ========================================================================== */
body.dc-download .footer-suite {
  position: relative;
  z-index: 1;                        /* above the ::after watermark */
  max-width: 1600px;
  margin: 0 auto;
  display: grid;
  grid-template-columns: 1fr auto;   /* brand | nav */
  align-items: center;
  column-gap: 32px;
  row-gap: 28px;
}

/* `justify-self: start` so the logo <a> hugs the logo (a grid item otherwise
   stretches to the full 1fr column, making a footer-wide click target). */
body.dc-download .footer-suite .fs-logo-link { display: inline-block; justify-self: start; }
body.dc-download .footer-suite .fs-logo { height: 72px; width: auto; display: block; }

body.dc-download .footer-suite .fs-links,
body.dc-download .footer-suite .fs-social {
  justify-self: end;
  display: flex;
  align-items: center;
  gap: 28px;
  margin: 0;
  padding: 0;
  list-style: none;
}

/* The shared footer's legacy `li` rule (new_style.css) adds border-left +
   padding, which renders as vertical pipe separators before every link/icon —
   not in the target. Reset for the suite lists; spacing comes from the flex
   `gap` above. */
body.dc-download .footer-suite .fs-links li,
body.dc-download .footer-suite .fs-social li {
  border: 0;
  padding: 0;
  margin: 0;
}

body.dc-download .footer-suite .fs-divider {
  grid-column: 1 / -1;
  height: 1px;
  border: 0;
  margin: 0;
  background: rgba(255, 255, 255, .15);
}

body.dc-download .footer-suite .fs-links a {
  font-family: var(--dc-font-body);
  color: var(--dc-white);
  opacity: .9;
  white-space: nowrap;
}
body.dc-download .footer-suite .fs-links a:hover,
body.dc-download .footer-suite .fs-links a:focus { opacity: 1; }

body.dc-download .footer-suite .fs-copyright {
  font-family: var(--dc-font-body);
  color: #cfd6ee;
}

body.dc-download .footer-suite .fs-social img {
  height: 24px;
  width: auto;
  display: block;
  /* Icons were extracted as inline SVG using fill="currentColor" (+ mixed
     fill="white"/#BEBEBE), so as <img> they render black/mixed — whiten them
     uniformly for the blue bg. MANDATORY (see Step 2). */
  filter: brightness(0) invert(1);
}

/* Suite footer — mobile: single column, CENTERED, divider kept, doubled group gap.
   DOM order (logo → links → divider → copyright → social) is the stack order.
   Each group is centered (overriding the desktop start/end alignment); the
   divider keeps its default stretch so it stays full-width. */
@media screen and (max-width: 900px) {
  body.dc-download .footer-suite {
    grid-template-columns: 1fr;
    row-gap: 40px;                 /* doubled spacing between each group */
    text-align: center;
  }
  body.dc-download .footer-suite .fs-logo-link,
  body.dc-download .footer-suite .fs-copyright,
  body.dc-download .footer-suite .fs-links,
  body.dc-download .footer-suite .fs-social {
    justify-self: center;
  }
  body.dc-download .footer-suite .fs-links,
  body.dc-download .footer-suite .fs-social {
    flex-wrap: wrap;
    justify-content: center;
    gap: 20px;
  }
}

@media screen and (max-width: 480px) {
  body.dc-download .footer-suite .fs-logo { height: 60px; }
  body.dc-download .footer-suite .fs-social { gap: 18px; }
  body.dc-download .footer-suite .fs-social a { display: inline-flex; padding: 6px; margin: -6px; } /* ≥40px tap target */
}
