/* ============================================================
   systems.css
   Securevision — Systems Pages Stylesheet
   Version: 1.0 — May 2026

   SCOPE: /systems/ pages ONLY.
   Load this file on every systems page alongside sv-shared.css.
   Do NOT load on solutions, portfolio, resources, insights,
   or any other page type.

   Load order in <head>:
     <link rel="stylesheet" href="/sv-shared.css">
     <link rel="stylesheet" href="/sv-systems.css">
     <script src="/site-config.js"></script>

   WHAT THIS FILE OWNS:
   - Section 35: Systems page components (compare-wrap, arch-grid,
     scenario-grid, integration-panel, feature-grid, capabilities-grid)
   - Section 36: Systems hub index components (sys-group-card,
     cohesion-flow, property-fit-card, group-icon variants)

   WHAT THIS FILE DOES NOT TOUCH:
   - sv-shared.css global classes (nav, footer, buttons, heroes,
     CTAs, grids, .card, .container, etc.)
   - Any solutions, portfolio, or resources page classes

   NOTE: The same CSS currently exists in sv-shared.css Sections 35–36.
   Both files define these classes during the transition period.
   sv-shared.css will be stripped of Sections 35–36 once all
   systems pages are confirmed loading systems.css correctly.

   VERSION HISTORY:
   v1.0  May 2026   Created. Extracted from sv-shared.css Sections 35–36.
   v1.2  May 2026   Section 38 added: .img-float-right, .img-float-left,
                    .clearfix — float image layout for network-infrastructure
                    and any systems page with long-form prose + images.
                    Width 38% / max 380px to avoid full-viewport images.
   ============================================================ */


/* ============================================================
   SECTION 35: Systems Page Components
   Scope: premises-security.html, vehicle-lpr-management.html,
          entry-access-control.html, ip-phone-communications.html,
          security-management-platform.html
   ============================================================ */

/* ── 35a. Comparison cards (Before/After split) ─────────────
   .compare-wrap    2-col grid wrapper
   .compare-card    individual card (negative / positive)
   .silo-compare / .silo-card  aliases for security-management-platform.html */

/* feature-card--full: spans full width below a grid-2 pair */
.feature-card--full {
  height: auto;
  margin-top: 0;
}

.feature-card--full .feature-card-icon {
  display: inline-flex;
}

.compare-wrap,
.silo-compare {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 32px;
  margin-top: 48px;
}

/* --inline: same as base but explicitly named for responsive override targeting */
.compare-wrap--inline {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 32px;
  margin-top: 48px;
}

.compare-card,
.silo-card {
  background: #fff;
  padding: 40px;
  padding-top: 64px;
  border-radius: 16px;
  border: 1px solid var(--border-light);
}

.compare-card.negative,
.silo-card.negative { border-top: 4px solid #c53030; }

.compare-card.positive,
.silo-card.positive { border-top: 4px solid var(--page-accent); }

.compare-card h3,
.silo-card h3 { margin-bottom: 16px; font-size: 18px; font-weight: 700; }

.compare-card p,
.silo-card p { font-size: 15px; color: var(--text-gray); line-height: 1.7; margin-bottom: 16px; }

.compare-card ul,
.silo-card ul { list-style: none; padding: 0; }

.compare-card li,
.silo-card li {
  margin-bottom: 12px;
  padding-left: 28px;
  position: relative;
  font-size: 15px;
  color: var(--text-gray);
}

.compare-card.negative li::before,
.silo-card.negative li::before { content: '✕'; position: absolute; left: 0; color: #c53030; font-weight: 700; }

.compare-card.positive li::before,
.silo-card.positive li::before { content: '✓'; position: absolute; left: 0; color: var(--page-accent); font-weight: 700; }

/* ── Text cards inside grid layouts
   .card on systems pages contains text (h3, p) directly with
   no inner wrapper. This rule ensures content has breathing
   room from the border on both grid-2 and grid-3 layouts.
   Scoped to direct children so image-top cards elsewhere
   are not affected.                                          */
.grid-2 > .card,
.grid-3 > .card {
  padding: 32px;
}

/* ── Callout box
   Highlighted prose block with accent left border.
   Defined in sv-solutions.css for solutions pages —
   duplicated here so systems pages render it correctly.     */
.callout-box {
  background: var(--bg-light);
  border: 1px solid var(--border-light);
  border-left: 4px solid var(--page-accent, var(--primary-blue));
  border-radius: 0 12px 12px 0;
  padding: 36px 40px;
  max-width: 860px;
  margin-top: 40px;
}

.callout-box h3 {
  font-family: var(--display-font);
  font-size: 20px;
  font-weight: 700;
  color: var(--text-dark);
  margin-bottom: 14px;
}

.callout-box p {
  font-size: 15px;
  color: var(--text-gray);
  line-height: 1.7;
  margin-bottom: 14px;
}

.callout-box p:last-child {
  margin-bottom: 0;
}

.callout-box .callout-label {
  font-family: var(--display-font);
  font-size: 12px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 1.5px;
  color: var(--primary-blue);
  margin-bottom: 10px;
  display: block;
}

/* ── Pillar closing note
   Centred summary card below a pillar compare section.
   Defined in sv-solutions.css — duplicated here so
   systems pages render it correctly.                      */
.pillar-closing-note {
  text-align: center;
  max-width: 800px;
  margin: 48px auto 0;
  font-size: 15px;
  color: var(--text-gray);
  line-height: 1.7;
  padding: 28px;
  background: var(--bg-light);
  border-radius: 12px;
  border: 1px solid var(--border-light);
}

/* ── 35b. Scenario cards (use-case grid) ────────────────────
   2-col grid of scenario examples with icon + text           */

.scenario-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 24px;
  margin-top: 40px;
}

.scenario-card {
  background: #fff;
  padding: 32px;
  border-radius: 12px;
  border: 1px solid var(--border-light);
  display: flex;
  gap: 20px;
  align-items: flex-start;
}

.scenario-icon { font-size: 24px; flex-shrink: 0; }

.scenario-content strong {
    display: block;
    font-family: var(--display-font);
    font-size: 15px;
    font-weight: 700;
    color: var(--text-dark);
    margin-bottom: 8px;
}

.scenario-content p { font-size: 15px; color: var(--text-gray); margin: 0; line-height: 1.7; }

/* ── 35c. Architecture pillar mini-cards (4-up icon grid) ───
   Shows all 5 system groups with the current page highlighted.
   .arch-active = highlighted card (current page).            */

.arch-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 20px;
  margin-top: 40px;
}

.arch-grid-3 {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 20px;
  margin-top: 40px;
}

.arch-card {
  background: var(--bg-light);
  border: 1px solid var(--border-light);
  border-radius: 12px;
  padding: 24px 16px;
  text-align: center;
}

.arch-card.arch-active {
  background: #fff;
  border: 2px solid var(--page-accent);
}

/* Clickable arch-card — system and deployment links */
a.arch-card-link {
  display: block;
  text-decoration: none;
  color: inherit;
  cursor: pointer;
  transition: transform 0.2s ease, box-shadow 0.2s ease, border-color 0.2s ease;
}

a.arch-card-link:hover {
  transform: translateY(-4px);
  box-shadow: var(--shadow-card-hover);
  border-color: var(--page-accent);
}

a.arch-card-link h4,
a.arch-card-link p {
  color: inherit;
}

.arch-card-icon { margin-bottom: 12px; }

.arch-card h3,
.arch-card h4 { font-size: 15px; margin-bottom: 8px; color: var(--text-dark); font-weight: 600; }

.arch-card p { font-size: 13px; margin: 0; color: var(--text-gray); }

/* ── 35d. Integration block (2-col image + list panel) ──────
   "Connected, Not Isolated" / "Works With Other Systems"
   section inside sv-section-grey.                            */

.integration-panel {
  background: #fff;
  border-radius: 24px;
  padding: 60px;
  display: flex;
  align-items: center;
  gap: 60px;
  flex-wrap: wrap;
}

.integration-text { flex: 1; min-width: 300px; }

.integration-text ul {
  list-style: none;
  padding: 0;
  margin-top: 24px;
}

.integration-text li {
  margin-bottom: 16px;
  font-size: 15px;
  color: var(--text-gray);
  line-height: 1.6;
}

.integration-img { flex: 1; min-width: 300px; }

.integration-img img { width: 100%; border-radius: 16px; }

/* ── 35e. Feature grid (3-col icon + text) ──────────────────
   Used in security-management-platform.html Section 2        */

.feature-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 32px;
  margin-top: 40px;
}

.feature-card {
  background: #fff;
  border-radius: 12px;
  padding: 32px;
  text-align: left;
  border: 1px solid var(--border-light);
  box-shadow: var(--shadow-card-rest);
  transition: transform 0.25s ease, box-shadow 0.25s ease, border-color 0.25s ease;
  display: flex;
  flex-direction: column;
  height: 100%;
}

.feature-card:hover {
  transform: translateY(-4px);
  box-shadow: var(--shadow-card-hover);
  border-color: var(--primary-blue);
}

.feature-card-icon {
  margin-bottom: 20px;
  flex-shrink: 0;
}

.feature-card h3 {
  font-size: 18px;
  margin-bottom: 12px;
  color: var(--text-dark);
  line-height: 1.4;
}

.feature-card p {
  font-size: 15px;
  color: var(--text-gray);
  line-height: 1.7;
  margin: 0;
  flex-grow: 1;
}

/* ── 35f. Capabilities detail grid (4-col compact) ──────────
   Used in security-management-platform.html Section 4        */

.capabilities-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 20px;
  margin-top: 40px;
}

.capabilities-card {
  background: #fff;
  border-radius: 12px;
  padding: 24px;
  border: 1px solid var(--border-light);
}

.capabilities-card h4 { font-size: 16px; margin-bottom: 8px; color: var(--text-dark); }

.capabilities-card p { font-size: 13px; color: var(--text-gray); margin: 0; }

/* ── 35g. Section intro paragraph ───────────────────────────
   Lead paragraph under section headings.                     */

.section-intro {
  max-width: 720px;
  margin: 0 0 48px;
  font-size: 17px;
  color: var(--text-gray);
  line-height: 1.7;
  text-align: left;
}

/* ── 35h. WhatsApp button SVG icon sizing ───────────────────
   Sizes SVG icons inside .btn elements sitewide.             */

.btn svg.btn-icon,
.btn .btn-icon {
  width: 18px;
  height: 18px;
  display: inline-block;
  vertical-align: middle;
  margin-right: 8px;
}

/* ── 35i. Responsive overrides ──────────────────────────────*/

@media (max-width: 992px) {
  .compare-wrap,
  .silo-compare,
  .feature-grid { grid-template-columns: 1fr; }

  /* --inline variant stays side by side at tablet */
  div.compare-wrap.compare-wrap--inline { grid-template-columns: 1fr 1fr; }

  .arch-grid-3 { grid-template-columns: repeat(2, 1fr); }

  .capabilities-grid { grid-template-columns: repeat(2, 1fr); }

  .integration-panel { padding: 32px; gap: 32px; }
}

@media (max-width: 768px) {
  .arch-grid { grid-template-columns: repeat(2, 1fr); }
}

@media (max-width: 480px) {
  .arch-grid,
  .arch-grid-3,
  .capabilities-grid,
  .scenario-grid,
  div.compare-wrap.compare-wrap--inline { grid-template-columns: 1fr; }
}

/* ── END Section 35 ─────────────────────────────────────────── */


/* ============================================================
   SECTION 36: Systems Hub Index Components
   Scope: /systems/index.html only
   ============================================================ */

/* ── 36a. Five-group card grid ───────────────────────────────
   .sys-group-grid      responsive grid wrapper
   .sys-group-card      clickable card with top accent bar,
                        icon, h3, p, tag pills, arrow link
   .sys-group-card--featured  highlighted variant (Platform)  */

.sys-group-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 24px;
  margin-top: 56px;
}

.sys-group-card {
  display: flex;
  flex-direction: column;
  background: #fff;
  border: 1px solid var(--border-light);
  border-radius: 16px;
  padding: 32px 24px;
  text-decoration: none;
  color: inherit;
  position: relative;
  overflow: hidden;
  transition: transform 0.3s ease, box-shadow 0.3s ease, border-color 0.3s ease;
}

.sys-group-card:hover {
  transform: translateY(-6px);
  box-shadow: var(--shadow-card-hover);
  border-color: var(--page-accent);
  text-decoration: none;
  color: inherit;
}

.sys-group-card--featured {
  border-color: #38a169;
  box-shadow: 0 4px 20px rgba(56,161,105,0.12);
}

/* Top accent bar */
.group-accent-bar {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  height: 4px;
  background: var(--group-accent, var(--primary-blue));
  border-radius: 16px 16px 0 0;
}

/* Colour variants for group-accent-bar */
.group-accent-bar--surveillance { background: #2b6cb0; }
.group-accent-bar--access       { background: #319795; }
.group-accent-bar--vehicle      { background: #dd6b20; }
.group-accent-bar--comms        { background: #5a0892; }
.group-accent-bar--platform     { background: #38a169; }

/* Icon circle */
.sys-group-card .group-icon {
  width: 54px;
  height: 54px;
  border-radius: 12px;
  display: flex;
  align-items: center;
  justify-content: center;
  margin-bottom: 20px;
  flex-shrink: 0;
}

.sys-group-card .group-icon svg {
  width: 26px;
  height: 26px;
}

.sys-group-card h3 {
  font-size: 18px;
  margin-bottom: 10px;
  color: var(--text-dark);
  line-height: 1.4;
}

.sys-group-card p {
  font-size: 15px;
  color: var(--text-gray);
  line-height: 1.7;
  margin-bottom: 16px;
  flex-grow: 1;
}

/* Tag pills */
.group-tags {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin-bottom: 20px;
}

.group-tag {
  font-family: var(--display-font);
  font-size: 10px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.5px;
  padding: 3px 8px;
  border-radius: 4px;
  background: var(--bg-light);
  color: var(--text-light);
  border: 1px solid var(--border-light);
}

/* Arrow link — pinned to bottom */
.group-link {
  font-size: 13px;
  font-weight: 700;
  color: var(--primary-blue);
  text-decoration: none;
  margin-top: auto;
  display: inline-block;
  transition: color 0.2s;
}

.sys-group-card:hover .group-link {
  color: var(--dark-blue);
}

/* ── 36b. Cohesion flow (horizontal step sequence) ──────────
   .cohesion-flow       flex row with arrows between steps
   .cohesion-step-block individual step: number badge + label + desc
   .cohesion-num        blue circle number badge
   .cohesion-arrow      decorative → between steps           */

.cohesion-flow {
  display: flex;
  align-items: flex-start;
  justify-content: center;
  gap: 0;
  margin: 56px 0 96px;
}

.cohesion-step-block {
  flex: 1;
  text-align: center;
  padding: 0 12px;
}

.cohesion-step-block strong {
  display: block;
  font-family: var(--display-font);
  font-size: 15px;
  font-weight: 700;
  color: var(--text-dark);
  margin: 12px 0 6px;
}

.cohesion-step-block p {
  font-size: 13px;
  color: var(--text-light);
  line-height: 1.6;
  margin: 0;
}

.cohesion-num {
  width: 40px;
  height: 40px;
  border-radius: 50%;
  background: var(--primary-blue);
  color: #fff;
  font-family: var(--display-font);
  font-size: 16px;
  font-weight: 700;
  display: flex;
  align-items: center;
  justify-content: center;
  margin: 0 auto 20px;
  flex-shrink: 0;
}

.cohesion-num--center {
  margin-left: auto;
  margin-right: auto;
}

.cohesion-arrow {
  flex-shrink: 0;
  height: 40px;
  display: flex;
  align-items: center;
  align-self: flex-start;
  color: var(--primary-blue);
  opacity: 0.45;
  font-size: 20px;
}

/* ── 36c. Property fit cards ────────────────────────────────
   .property-fit-grid   3-col grid
   .property-fit-card   card with icon, h3, ul fit-list, link
   .fit-list            plain list of matched system groups   */

.property-fit-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 28px;
  margin-top: 48px;
}

.property-fit-card {
  background: #fff;
  border: 1px solid var(--border-light);
  border-radius: 16px;
  padding: 0;
  display: flex;
  flex-direction: column;
  transition: 0.3s;
  overflow: hidden;
  text-decoration: none;
  color: var(--text-dark);
}

.property-fit-card:hover {
  transform: translateY(-4px);
  box-shadow: var(--shadow-card-hover);
  border-color: var(--primary-blue);
}

.property-fit-card-img {
  width: 100%;
  aspect-ratio: 16 / 9;
  overflow: hidden;
  flex-shrink: 0;
}

.property-fit-card-img img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transition: transform 0.4s ease;
}

.property-fit-card:hover .property-fit-card-img img {
  transform: scale(1.04);
}

.property-fit-card-body {
  padding: 24px 24px 28px;
  display: flex;
  flex-direction: column;
  flex: 1;
}

.property-fit-card h3 {
  font-size: 16px;
  margin-bottom: 8px;
  color: var(--text-dark);
}

.property-fit-card > p,
.property-fit-card-body > p {
  font-size: 13px;
  color: var(--text-gray);
  line-height: 1.6;
  margin-bottom: 16px;
}

/* First p — short descriptor, no clamp */
.property-fit-card-body p:first-of-type {
  font-size: 13px;
  color: var(--text-light);
  margin-bottom: 8px;
}

/* Second p — full description, capped at 4 lines */
.property-fit-card-body p:last-of-type {
  display: -webkit-box;
  -webkit-line-clamp: 4;
  -webkit-box-orient: vertical;
  overflow: hidden;
  flex: 1;
}

/* Footer link inside card body */
/* group-link inside property-fit-card footer — block with border */
.property-fit-card-body .group-link {
  font-family: var(--display-font);
  font-size: 12px;
  font-weight: 700;
  color: var(--primary-blue);
  display: block;
  margin-top: auto;
  padding-top: 12px;
  border-top: 1px solid var(--border-light);
  text-decoration: none;
}

.fit-list {
  list-style: none;
  padding: 0;
  margin: 0 0 20px;
  flex-grow: 1;
}

.fit-list li {
  font-size: 13px;
  color: var(--text-gray);
  padding: 6px 0;
  border-bottom: 1px solid var(--border-light);
  line-height: 1.6;
}

.fit-list li:last-child {
  border-bottom: none;
}

/* ── 36d. Group icon colour variants ────────────────────────
   Named variants so inline style= is not needed in HTML.    */

.group-icon--surveillance { color: #2b6cb0; background: rgba(43,108,176,0.08); }
.group-icon--access       { color: #319795; background: rgba(49,151,149,0.08); }
.group-icon--vehicle      { color: #dd6b20; background: rgba(221,107,32,0.08); }
.group-icon--comms        { color: #5a0892; background: rgba(90,8,146,0.08); }
.group-icon--platform     { color: #38a169; background: rgba(56,161,105,0.08); }
.group-icon--condos       { color: #2d45c4; background: rgba(45,69,196,0.08); }
.group-icon--commercial   { color: #B54E00; background: rgba(181,78,0,0.08); }
.group-icon--industrial   { color: #5a0892; background: rgba(90,8,146,0.08); }
.group-icon--homes        { color: #257000; background: rgba(37,112,0,0.08); }
.group-icon--institutions { color: #1B4F72; background: rgba(27,79,114,0.08); }
.group-icon--healthcare   { color: #0D7377; background: rgba(13,115,119,0.08); }

/* Smaller icon size when group-icon is used inside a plain .card */
.card .group-icon {
  width: 40px;
  height: 40px;
  border-radius: 10px;
  display: flex;
  align-items: center;
  justify-content: center;
  margin-bottom: 16px;
  flex-shrink: 0;
}

.card .group-icon svg {
  width: 20px;
  height: 20px;
}

/* ── 36e. Card padding utilities ────────────────────────────*/
.card-pad-32 { padding: 32px; }
.card-pad-28 { padding: 28px; }
.card-center { text-align: center; }
.group-icon--center { margin-left: auto; margin-right: auto; margin-bottom: 20px; }

/* ── 36f. Systems group row layout (4 + platform row) ───────
   Row 1: 4 equal cards.
   Row 2: Platform card — full-width horizontal row.         */

.sys-group-row {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 24px;
  margin-top: 56px;
}

.sys-group-row--platform {
  display: block;
  margin-top: 24px;
}

.sys-group-card--platform {
  display: flex;
  flex-direction: row;
  align-items: center;
  gap: 40px;
  border-color: #38a169;
  box-shadow: 0 4px 20px rgba(56,161,105,0.12);
  padding: 32px 40px;
}

.sys-group-card--platform .group-icon {
  flex-shrink: 0;
  width: 64px;
  height: 64px;
  border-radius: 14px;
}

.sys-group-card--platform .group-icon svg {
  width: 32px;
  height: 32px;
}

.sys-group-card--platform .platform-body {
  flex: 1;
  min-width: 0;
}

.sys-group-card--platform h3 {
  font-size: 20px;
  margin-bottom: 8px;
}

.sys-group-card--platform p {
  font-size: 15px;
  margin-bottom: 16px;
  max-width: 640px;
}

.sys-group-card--platform .group-tags {
  margin-bottom: 16px;
}

.sys-group-card--platform .platform-badge {
  display: inline-block;
  font-family: var(--display-font);
  font-size: 10px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 1px;
  color: #38a169;
  background: rgba(56,161,105,0.10);
  padding: 3px 10px;
  border-radius: 4px;
  margin-bottom: 12px;
}

/* ── 36g. Property fit grid — 8-card 4-col layout ──────────
   2 rows of 4 at desktop. Stacks to 2-col tablet, 1-col mobile. */

.property-fit-grid-8 {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 24px;
  margin-top: 48px;
}

/* ── 36h. Responsive ────────────────────────────────────────*/

@media (max-width: 1200px) {
  .sys-group-grid {
    grid-template-columns: repeat(3, 1fr);
  }
}

@media (max-width: 992px) {
  .sys-group-row {
    grid-template-columns: repeat(2, 1fr);
  }
  .sys-group-card--platform {
    flex-direction: column;
    align-items: flex-start;
    gap: 20px;
    padding: 28px 24px;
  }
  .property-fit-grid-8 {
    grid-template-columns: repeat(2, 1fr);
  }
}

@media (max-width: 768px) {
  .sys-group-grid {
    grid-template-columns: repeat(2, 1fr);
  }
  .property-fit-grid {
    grid-template-columns: 1fr;
  }
  .cohesion-flow {
    flex-direction: column;
    align-items: center;
    gap: 16px;
  }
  .cohesion-arrow {
    transform: rotate(90deg);
    height: auto;
    margin: 0;
    padding: 0;
  }
  .cohesion-step-block {
    width: 100%;
    max-width: 400px;
    display: flex;
    align-items: flex-start;
    text-align: left;
    gap: 16px;
  }
  .cohesion-step-block .cohesion-num {
    flex-shrink: 0;
    margin: 0;
  }
}

@media (max-width: 480px) {
  .sys-group-grid,
  .sys-group-row,
  .property-fit-grid-8 {
    grid-template-columns: 1fr;
  }
}

/* ── END Section 36 ─────────────────────────────────────────── */

/* ============================================================
   sv-systems.css — Section 37: Systems Block (3+3 layout)
   Moved from sv-shared.css Section 39 — May 2026.
   Scope: .sv-systems-block placeholder — rendered by
   systems-block.js as a shared injectable component.
   Replaces legacy .subsystem-row-3 / .subsystem-row-2 pattern.
   ============================================================ */

/* ── 37a. 3x2 grid (3+3 layout) ── */
.sv-systems-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 20px;
    margin-top: 40px;
}

/* Platform card — subtle distinction within the grid */
.sv-sys-card--platform {
    border-top-color: #003d82;
}

/* Unifying Layer badge */
.sv-sys-badge {
    display: inline-block;
    font-family: var(--display-font);
    font-size: 10px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 1px;
    color: #003d82;
    background: #e6f0fa;
    padding: 3px 10px;
    border-radius: 4px;
    margin: 12px 20px 0;
    align-self: flex-start;
}

/* ── 37b. Standard card ── */
.sv-sys-card {
    background: var(--bg-light);
    border: 1px solid var(--border-light);
    border-radius: 10px;
    border-top: 3px solid var(--primary-blue);
    padding: 0;
    text-decoration: none;
    color: var(--text-dark);
    display: flex;
    flex-direction: column;
    transition: 0.3s;
    overflow: hidden;
}

.sv-sys-card:hover {
    box-shadow: 0 8px 28px rgba(0, 0, 0, 0.10);
    transform: translateY(-4px);
    background: #fff;
}

.sv-sys-img {
    width: 100%;
    aspect-ratio: 4 / 3;
    overflow: hidden;
}

.sv-sys-img img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}

.sv-sys-card h3 {
    font-size: 15px;
    font-family: var(--display-font);
    font-weight: 700;
    margin: 16px 20px 8px;
    color: var(--text-dark);
}

.sv-sys-card p {
    font-size: 15px;
    color: var(--text-light);
    line-height: 1.7;
    flex: 1;
    margin: 0 20px 16px;
}

.sv-sys-link {
    font-size: 12px;
    font-weight: 700;
    font-family: var(--display-font);
    text-transform: uppercase;
    letter-spacing: 0.5px;
    color: var(--primary-blue);
    padding: 0 20px 20px;
}

/* ── 37c. Platform card (unifying layer) ── */
.sv-sys-platform {
    display: flex;
    align-items: center;
    gap: 32px;
    margin-top: 20px;
    background: var(--bg-light);
    border: 1px solid var(--border-light);
    border-radius: 10px;
    border-top: 3px solid var(--dark-blue);
    text-decoration: none;
    color: var(--text-dark);
    overflow: hidden;
    transition: 0.3s;
}

.sv-sys-platform:hover {
    box-shadow: 0 8px 28px rgba(0, 0, 0, 0.10);
    transform: translateY(-4px);
    background: #fff;
}

.sv-sys-platform-img {
    width: 280px;
    min-width: 280px;
    aspect-ratio: 16 / 7;
    overflow: hidden;
    flex-shrink: 0;
}

.sv-sys-platform-img img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}

.sv-sys-platform-body {
    flex: 1;
    padding: 24px 32px 24px 0;
    min-width: 0;
}

.sv-sys-platform-badge {
    display: inline-block;
    font-size: 10px;
    font-weight: 700;
    font-family: var(--display-font);
    text-transform: uppercase;
    letter-spacing: 1px;
    color: var(--dark-blue);
    background: #e6f0fa;
    padding: 3px 10px;
    border-radius: 4px;
    margin-bottom: 10px;
}

.sv-sys-platform-body h3 {
    font-size: 18px;
    font-family: var(--display-font);
    font-weight: 700;
    margin: 0 0 10px;
    color: var(--text-dark);
}

.sv-sys-platform-body p {
    font-size: 15px;
    color: var(--text-light);
    line-height: 1.7;
    margin: 0 0 16px;
}

.sv-sys-platform-body .sv-sys-link {
    padding: 0;
    color: var(--dark-blue);
}

/* ── 37d. Responsive ── */
@media (max-width: 768px) {
    .sv-systems-grid {
        grid-template-columns: repeat(2, 1fr);
    }
}

@media (max-width: 480px) {
    .sv-systems-grid {
        grid-template-columns: 1fr;
    }
}

/* ── END Section 37 (Systems Block) ─────────────────────────── */

/* ============================================================
   sv-systems.css — Section 38: Float Image Layout
   Used on network-infrastructure.html and any systems page
   with long-form prose where an image sits beside running text.
   Image floats beside the first paragraphs; remaining text
   flows underneath once the float clears.
   Width set to 38% / max 380px — keeps image clearly to the
   side without dominating the viewport at desktop sizes.
   ============================================================ */

.img-float-right {
  float: right;
  width: 38%;
  max-width: 380px;
  margin: 4px 0 28px 40px;
  border-radius: 12px;
  display: block;
}

.img-float-left {
  float: left;
  width: 38%;
  max-width: 380px;
  margin: 4px 40px 28px 0;
  border-radius: 12px;
  display: block;
}

.clearfix::after {
  content: '';
  display: table;
  clear: both;
}

@media (max-width: 768px) {
  .img-float-right,
  .img-float-left {
    float: none;
    width: 100%;
    max-width: 100%;
    margin: 0 0 28px 0;
  }
}

/* ── END Section 38 (Float Image Layout) ────────────────────── */

/* ── END sv-systems.css ─────────────────────────────────────── */
/* ============================================================
   sv-systems.css — SECTION 39: Inline Style Extraction
   Wave 2 CSS Fix — June 2026

   PURPOSE:
   Extracts repeating inline style patterns found across
   all 6 systems pages (premises-security, entry-access-control,
   vehicle-lpr-management, ip-phone-communications,
   network-infrastructure, security-management-platform)
   and systems/index.html.

   APPEND this block to the END of sv-systems.css,
   after the final line of Section 38.

   VERSION: Add to sv-systems.css as v1.3
   ============================================================ */


/* ============================================================
   SECTION 39A — Systems Pages: Two-Column Integration Layout

   Appears on every systems page. Replaces:
     <div style="gap:48px; align-items:start;">
     (used as the two-column wrapper for integration/deployment sections)

   Replace with: <div class="sys-two-col">
   ============================================================ */

.sys-two-col {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 48px;
    align-items: start;
}

@media (max-width: 768px) {
    .sys-two-col {
        grid-template-columns: 1fr;
        gap: 32px;
    }
}


/* ============================================================
   SECTION 39B — Systems Pages: Deployment Card Panel

   Appears on every systems page. Replaces:
     <div style="margin-top:64px; padding:24px;">
     (used as the light-background deployment info panel)

   Replace with: <div class="sys-deployment-panel">
   ============================================================ */

.sys-deployment-panel {
    margin-top: 64px;
    padding: 24px;
    background: var(--bg-light);
    border-radius: var(--border-radius);
    border: 1px solid var(--border-light);
}


/* ============================================================
   SECTION 39C — Systems Pages: Brand Logo Grid

   Appears on every systems page. Replaces:
     <div style="gap:32px; margin-bottom:48px;">
     (used as the brand logo/partner grid in integration section)

   Replace with: <div class="sys-brand-grid">
   ============================================================ */

.sys-brand-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));
    gap: 32px;
    margin-bottom: 48px;
    align-items: center;
}

@media (max-width: 600px) {
    .sys-brand-grid {
        grid-template-columns: repeat(3, 1fr);
        gap: 20px;
    }
}


/* ============================================================
   SECTION 39D — Systems Pages: Brand Grid Item

   Appears on every systems page. Replaces:
     <div style="margin-top:24px;">
     (used as individual brand logo wrapper inside sys-brand-grid)

   Replace with: <div class="sys-brand-item">
   ============================================================ */

.sys-brand-item {
    margin-top: 24px;
    text-align: center;
}


/* ============================================================
   SECTION 39E — Network Infrastructure Page: Stat Cards

   Specific to systems/network-infrastructure.html.
   Replaces the heavy inline-styled stat/feature card pattern:

     <div style="background:var(--white); border:1px solid
       var(--border-light); border-radius:12px; padding:32px 40px;
       text-align:center;">
       <p style="font-family:'Inter',sans-serif;
         color:var(--text-gray); max-width:640px; margin:0 auto 20px;">
       <div style="font-size:32px; margin-bottom:16px;">[emoji]</div>
       <p style="font-family:var(--display-font); font-size:11px;
         font-weight:700; text-transform:uppercase; letter-spacing:1.5px;
         color:var(--text-light); margin-bottom:24px;">
       <div style="font-size:28px; margin-bottom:10px;">[value]</div>
       <p style="font-family:var(--display-font); font-size:13px;
         font-weight:700; color:var(--text-dark); margin-bottom:6px;">
       <p style="font-size:13px; color:var(--text-gray);">

   Replace with the .net-stat-card pattern below.
   ============================================================ */

/* Stat card wrapper */
.net-stat-card {
    background: var(--white);
    border: 1px solid var(--border-light);
    border-radius: 12px;
    padding: 32px 40px;
    text-align: center;
}

/* Intro paragraph inside stat card */
.net-stat-card-intro {
    font-family: 'Inter', sans-serif;
    color: var(--text-gray);
    max-width: 640px;
    margin: 0 auto 20px;
    font-size: 15px;
    line-height: 1.7;
}

/* Large emoji or icon */
.net-stat-icon {
    font-size: 32px;
    margin-bottom: 16px;
    display: block;
    line-height: 1;
}

/* Eyebrow label above the stat value */
.net-stat-eyebrow {
    font-family: var(--display-font);
    font-size: 11px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 1.5px;
    color: var(--text-light);
    margin-bottom: 24px;
    display: block;
}

/* The stat value itself */
.net-stat-value {
    font-size: 28px;
    font-weight: 800;
    font-family: var(--display-font);
    color: var(--text-dark);
    margin-bottom: 10px;
    display: block;
}

/* Stat label — bold line under the value */
.net-stat-label {
    font-family: var(--display-font);
    font-size: 13px;
    font-weight: 700;
    color: var(--text-dark);
    margin-bottom: 6px;
    display: block;
}

/* Stat description — lighter line below label */
.net-stat-desc {
    font-size: 13px;
    color: var(--text-gray);
    margin: 0;
    line-height: 1.7;
}

@media (max-width: 768px) {
    .net-stat-card {
        padding: 24px 20px;
    }
}


/* ============================================================
   SECTION 39F — Systems Index Page

   systems/index.html specific. Replaces:
     <div style="background:#0056b3;">
     (used as the accent bar / active-state highlight in architecture grid)
     <div style="gap:48px; align-items:start;">
     (used as two-col layout on systems index)

   Replace with: .sys-accent-bar and re-use .sys-two-col from 39A.
   ============================================================ */

.sys-accent-bar {
    background: var(--primary-blue);
    height: 4px;
    border-radius: 2px;
    width: 100%;
    display: block;
}

/* ── END SECTION 39 ──────────────────────────────────────── */

/* ── END sv-systems.css ─────────────────────────────────── */



/* ============================================================
   sv-systems.css — SECTION 39: Systems Page Inline Style Extraction
   June 2026
   ============================================================ */

/* 39A — Grid gap variants */
.sys-grid-wide    { gap: 48px; }
.sys-grid-who     { gap: 32px; margin-bottom: 48px; }
.sys-grid-process { gap: 48px; align-items: start; }

/* 39B — Full-width feature card top spacing + padding */
.sys-integration-panel { margin-top: 64px; padding: 24px; }

/* 39C — Accent bar (systems/index.html group headers) */
.group-accent-bar {
    background: var(--primary-blue);
    height: 3px;
    border-radius: 2px;
    width: 100%;
    display: block;
    margin-bottom: 16px;
}

/* 39D — Emoji icon inside .card (network page why-section) */
.sys-card-icon { font-size: 32px; margin-bottom: 16px; line-height: 1; display: block; }

/* 39E — Info/spec panels (network page) */
.sys-info-panel {
    background: var(--white);
    border: 1px solid var(--border-light);
    border-radius: 12px;
    padding: 32px 40px;
    text-align: center;
}
.sys-lifecycle-panel {
    background: var(--white);
    border-radius: 12px;
    padding: 32px 40px;
}
@media (max-width: 768px) {
    .sys-info-panel,
    .sys-lifecycle-panel { padding: 24px 20px; }
}

/* 39F — Info panel intro text */
.sys-info-panel-intro {
    font-family: 'Inter', sans-serif;
    color: var(--text-gray);
    max-width: 640px;
    margin: 0 auto 20px;
    font-size: 15px;
    line-height: 1.7;
}

/* 39G — Lifecycle eyebrow label */
.sys-lifecycle-label {
    font-family: var(--display-font);
    font-size: 11px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 1.5px;
    color: var(--text-light);
    margin-bottom: 24px;
    display: block;
}

/* 39H — Lifecycle step wrapper */
.sys-lifecycle-step { text-align: center; }

/* 39I — Lifecycle step icon */
.sys-lifecycle-icon { font-size: 28px; margin-bottom: 10px; display: block; line-height: 1; }

/* 39J — Lifecycle step title */
.sys-lifecycle-title {
    font-family: var(--display-font);
    font-size: 13px;
    font-weight: 700;
    color: var(--text-dark);
    margin-bottom: 6px;
    display: block;
}

/* 39K — Lifecycle step description */
.sys-lifecycle-desc { font-size: 13px; color: var(--text-gray); line-height: 1.7; margin: 0; }

/* 39L — Brand card vertical alignment (network page) */
.card-align-start { align-self: start; }

/* 39M — Deep-dive section compact padding (network page) */
.sys-section-compact { padding: 64px 0 !important; }

/* ── END SECTION 39 ─────────────────────────────────────────── */


/* ── SECTION 40: Process List ────────────────────────────────
   Numbered step list used in "How We Work With You" on all
   6 systems detail pages. Replaces browser default ol styles.
─────────────────────────────────────────────────────────────── */

.process-list {
    list-style: none;
    padding: 0;
    margin: 0;
    display: flex;
    flex-direction: column;
    gap: 28px;
    counter-reset: process-counter;
}

.process-list li {
    display: flex;
    flex-wrap: wrap;
    gap: 0 16px;
    align-items: flex-start;
    counter-increment: process-counter;
}

/* The number circle — fixed width, sits left */
.process-list li::before {
    content: counter(process-counter);
    font-family: var(--display-font);
    font-size: 13px;
    font-weight: 700;
    color: var(--white);
    background: var(--primary-blue);
    width: 32px;
    height: 32px;
    min-width: 32px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    margin-top: 3px;
}

/* Step title — fills remaining width on same row as number */
.process-list li strong {
    display: block;
    font-family: var(--display-font);
    font-size: 16px;
    font-weight: 700;
    color: var(--text-dark);
    margin-bottom: 6px;
    flex: 1;
    min-width: 0;
}

/* Step description — full width row below number + title */
.process-list li p {
    font-size: 15px;
    color: var(--text-gray);
    line-height: 1.7;
    margin: 0;
    width: 100%;
    padding-left: 48px; /* aligns with text above: 32px circle + 16px gap */
}

/* ── END SECTION 40 ─────────────────────────────────────────── */


/* ── SECTION 40B: Callout Box List Styles ───────────────────
   Bullet lists inside .callout-box — used in "How We Work
   With You" right column across systems detail pages.
─────────────────────────────────────────────────────────────── */

.callout-box ul {
    list-style: none;
    padding: 0;
    margin: 12px 0 0;
    display: flex;
    flex-direction: column;
    gap: 10px;
}

.callout-box li {
    position: relative;
    padding-left: 20px;
    font-size: 15px;
    color: var(--text-gray);
    line-height: 1.6;
}

.callout-box li::before {
    content: '·';
    position: absolute;
    left: 0;
    top: 0;
    font-size: 18px;
    font-weight: 700;
    color: var(--primary-blue);
    line-height: 1.4;
}

/* group-link inside callout-box li — render inline, not block.
   Prevents the link breaking word-by-word on its own line. */
.callout-box li .group-link {
    display: inline;
    font-size: 15px;
    font-weight: 600;
    border-top: none;
    padding-top: 0;
    margin-top: 0;
}

/* ── END SECTION 40B ────────────────────────────────────────── */


/* ── SECTION 41: Feature Card List Styles ────────────────────
   Bullet lists inside .feature-card — used in "Is This Right
   for You?" section on all systems detail pages.
   Replaces browser default ul/li rendering.
─────────────────────────────────────────────────────────────── */

.feature-card ul {
    list-style: none;
    padding: 0;
    margin: 16px 0 0;
    display: flex;
    flex-direction: column;
    gap: 12px;
}

.feature-card li {
    position: relative;
    padding-left: 24px;
    font-size: 15px;
    color: var(--text-gray);
    line-height: 1.6;
}

/* Positive card — blue tick marker, absolutely positioned
   so text flows naturally around inline elements like <a> */
.feature-card li::before {
    content: '✓';
    font-size: 13px;
    font-weight: 700;
    color: var(--primary-blue);
    position: absolute;
    left: 0;
    top: 2px;
}

/* Neutral card — softer dash marker */
.feature-card--neutral li::before {
    content: '–';
    color: var(--text-light);
    font-weight: 400;
}

/* Links inside list items */
.feature-card li a {
    color: var(--primary-blue);
    font-weight: 500;
    text-decoration: none;
}

.feature-card li a:hover {
    text-decoration: underline;
}

/* Neutral card — visually de-emphasised vs positive card.
   Slightly different background and no lift shadow. */
.feature-card--neutral {
    background: #F0F4F8 !important;
    box-shadow: none;
    border-color: var(--border-light);
}

.feature-card--neutral:hover {
    transform: none;
    box-shadow: none;
    border-color: var(--border-light);
}

.feature-card--neutral h3 {
    color: var(--text-gray);
}

/* ── END SECTION 41 ─────────────────────────────────────────── */




/* ── SECTION 43: Solutions Block on Systems Pages ────────────
   When the sv-solutions-block (rel-card grid) is used inside
   a systems page deployment section, constrain card body text
   to 3 lines and tighten card padding.
   This prevents long data-desc-* overrides from breaking
   the card layout when used in a 4-column grid context.
─────────────────────────────────────────────────────────────── */

/* Constrain description text to 3 lines in 4-col context */
.sv-section-grey .grid-4 .rel-card p,
.sv-section-white .grid-4 .rel-card p {
    display: -webkit-box;
    -webkit-line-clamp: 3;
    -webkit-box-orient: vertical;
    overflow: hidden;
    font-size: 13px;
    line-height: 1.6;
}

/* Slightly tighter card for 4-col grid */
.sv-section-grey .grid-4 .rel-card,
.sv-section-white .grid-4 .rel-card {
    padding: 20px 18px;
}

/* Image bleed adjustment for tighter padding */
.sv-section-grey .grid-4 .rel-card-img,
.sv-section-white .grid-4 .rel-card-img {
    width: calc(100% + 36px);
    margin: -20px -18px 16px -18px;
}

/* Card title slightly smaller in 4-col context */
.sv-section-grey .grid-4 .rel-card h3,
.sv-section-white .grid-4 .rel-card h3 {
    font-size: 15px;
    margin-bottom: 8px;
}

/* Footer link stays consistent */
.sv-section-grey .grid-4 .rel-card-footer,
.sv-section-white .grid-4 .rel-card-footer {
    font-size: 12px;
    padding-top: 12px;
}

@media (max-width: 992px) {
    /* Drop to 2-col on tablet */
    .sv-section-grey .grid-4,
    .sv-section-white .grid-4 {
        grid-template-columns: repeat(2, 1fr);
    }
}

/* ── END SECTION 43 ─────────────────────────────────────────── */


/* ── SECTION 45: Card Background Contrast ────────────────────
   Cards must contrast with their section background.
   Grey section → white card. White section → grey card.
   Applied via context selectors — no HTML changes needed.
   Covers all card types used across the 7 systems pages.
─────────────────────────────────────────────────────────────── */

/* Cards on grey sections — white background */
.sv-section-grey .feature-card,
.sv-section-grey .scenario-card,
.sv-section-grey .capabilities-card,
.sv-section-grey .sys-group-card,
.sv-section-grey .property-fit-card,
.sv-section-grey .compare-card,
.sv-section-grey .silo-card {
    background: var(--white);
}

/* Cards on white sections — grey background */
.sv-section-white .feature-card,
.sv-section-white .scenario-card,
.sv-section-white .capabilities-card,
.sv-section-white .sys-group-card,
.sv-section-white .property-fit-card,
.sv-section-white .compare-card,
.sv-section-white .silo-card {
    background: var(--bg-light);
}

/* arch-card — override its grey default to always white.
   The border handles visual separation regardless of section. */
.sv-section-grey .arch-card,
.sv-section-white .arch-card {
    background: var(--white);
}

/* arch-active always stays white with accent border */
.arch-card.arch-active {
    background: var(--white) !important;
    border: 2px solid var(--page-accent, var(--primary-blue));
}

/* callout-box — always white regardless of section.
   The left accent border provides the visual distinction. */
.sv-section-grey .callout-box,
.sv-section-white .callout-box {
    background: var(--white);
}

/* ── END SECTION 45 ─────────────────────────────────────────── */


/* ══════════════════════════════════════════════════════════════════
   Section 46 — Continue Exploring block
   Three-column card grid at the bottom of every systems page.
   Guides | Portfolio | Insights
   Classes: .ce-card, .ce-icon, .ce-desc, .ce-links, .ce-link,
            .ce-link--primary, .ce-count
══════════════════════════════════════════════════════════════════ */

.ce-card {
    display: flex;
    flex-direction: column;
    gap: 12px;
    padding: 28px;
}

.ce-icon {
    font-size: 28px;
    line-height: 1;
    flex-shrink: 0;
}

.ce-card h3 {
    font-size: 17px;
    font-weight: 700;
    color: var(--text-dark);
    margin: 0;
    font-family: var(--display-font);
}

.ce-desc {
    font-size: 14px;
    color: var(--text-gray);
    line-height: 1.7;
    margin: 0;
    flex-grow: 1;
}

.ce-links {
    display: flex;
    flex-direction: column;
    gap: 8px;
    border-top: 1px solid var(--border-light);
    padding-top: 16px;
    margin-top: 4px;
}

.ce-link {
    font-size: 14px;
    font-weight: 600;
    color: var(--primary-blue);
    text-decoration: none;
    line-height: 1.4;
    font-family: var(--display-font);
    transition: color 0.2s;
}

.ce-link:hover {
    color: var(--primary-blue-dark, #003d82);
    text-decoration: underline;
}

.ce-link--primary {
    font-size: 15px;
}

.ce-count {
    display: inline-block;
    font-size: 12px;
    color: var(--text-light);
    font-family: var(--display-font);
    margin-top: -4px;
}

/* ── END SECTION 46 ──────────────────────────────────────────── */

/* ============================================================
   FAQ Component
   Defined in sv-solutions.css — duplicated here so
   systems pages render it correctly.
   ============================================================ */

.faq-item {
    background: var(--white);
    border: 1px solid var(--border-light);
    border-radius: 12px;
    transition: border-color 0.2s, box-shadow 0.2s;
}

.faq-item:hover {
    border-color: var(--page-accent, var(--primary-blue));
    box-shadow: 0 4px 16px rgba(0, 0, 0, 0.06);
}

.faq-grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 20px;
    margin-top: 40px;
}

.faq-grid--single {
    grid-template-columns: 1fr;
}

.faq-grid .faq-item {
    padding: 28px 32px;
}

.faq-grid .faq-question {
    font-family: var(--display-font);
    font-size: 17px;
    font-weight: 600;
    color: var(--text-dark);
    margin-bottom: 12px;
    line-height: 1.4;
    padding-left: 34px;
}

.faq-grid .faq-question::before {
    content: 'Q';
    display: inline-block;
    width: 24px;
    height: 24px;
    background: var(--page-accent, var(--primary-blue));
    color: #fff;
    border-radius: 50%;
    font-size: 11px;
    font-weight: 700;
    font-family: var(--display-font);
    text-align: center;
    line-height: 24px;
    margin-left: -34px;
    margin-right: 10px;
    vertical-align: middle;
    flex-shrink: 0;
}

.faq-grid .faq-answer {
    font-size: 15px;
    color: var(--text-gray);
    line-height: 1.7;
    margin: 0;
    padding-left: 34px;
}

@media (max-width: 768px) {
    .faq-grid {
        grid-template-columns: 1fr;
    }
    .faq-grid .faq-item {
        padding: 24px;
    }
}

/* ── END FAQ Component ──────────────────────────────────────── */
