@charset "utf-8";
/* ============================================================
   FABRONIX V8 — "Cut with light" design layer
   Loads AFTER style.css. All rules scoped to body.v8
   Tokens: --ink steel black, --paper, --red brand, --molten hot
   beam end, --violet brand, --grid blueprint line, mono = spec
   ============================================================ */

body.v8 {
    --ink: #0D0D14;
    --ink-2: #16161F;
    --paper: #F7F7F9;
    --grid: #E9E9F2;
    --red: #D71D05;
    --molten: #FF5A1F;
    --violet: #2C009C;
    --steel: #52525E;
    --steel-soft: #7A7A88;
    --mono: ui-monospace, "Cascadia Code", "JetBrains Mono", Consolas, "Courier New", monospace;
    background: var(--paper);
}

body.v8 h2, body.v8 h3 { letter-spacing: -0.015em; }

/* Paragraph text runs on IBM Plex Sans — better reading comfort at body sizes.
   Headlines, nav, buttons, and mono spec/data-plate text stay on Neo Sans / mono. */
body.v8 p, body.v8 p * {
    font-family: 'IBM Plex Sans', 'Neo Sans Std', sans-serif;
}
/* mono-styled text inside a <p> (rare) should still use the mono stack, not Plex */
body.v8 p .specLabel, body.v8 p code, body.v8 p .plateHead {
    font-family: var(--mono);
}

/* spec annotation label — the engineering-drawing voice */
body.v8 .specLabel {
    font-family: var(--mono);
    font-size: 15px;
    font-weight: 600;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    color: var(--red);
}

/* ============ LASER CUT PRIMITIVES ============ */

/* headline that gets "cut open" left→right */
/* NOTE: style.css sets a global `span {font-size:18px}` — these spans must inherit */
body.v8 .cutReveal, body.v8 h2 span.lit, body.v8 .acroL, body.v8 .acroWord,
body.v8 .dimVal span, body.v8 .dimVal small {
    font-size: inherit; font-family: inherit; font-weight: inherit; line-height: inherit; color: inherit;
}
body.v8 .cutReveal { position: relative; display: inline-block; overflow: hidden; }
/* SAFE-BY-DEFAULT: the mask starts already "cut away" (scaleX(0), text visible).
   JS adds .primed to snap it to covering (scaleX(1)) right before animating it
   away again on scroll — so without JS, the heading is just visible, never hidden. */
body.v8 .cutReveal .cutMask {
    position: absolute; inset: 0; z-index: 3;
    background: inherit;
    transform: scaleX(0); transform-origin: right center;
}
body.v8 .cutReveal.primed .cutMask { transform: scaleX(1); }
body.v8 .cutReveal .cutBeam {
    position: absolute; top: -6%; bottom: -6%; left: -3px; width: 3px; z-index: 4;
    background: linear-gradient(180deg, var(--molten), var(--red));
    box-shadow: 0 0 8px 1px rgba(255, 90, 31, 0.9), 0 0 22px 4px rgba(215, 29, 5, 0.45);
    opacity: 0;
}
body.v8 .inview .cutReveal.primed .cutMask { animation: v8cutmask 0.9s cubic-bezier(.77,0,.18,1) 0.1s forwards; }
body.v8 .inview .cutReveal.primed .cutBeam { animation: v8cutbeam 0.9s cubic-bezier(.77,0,.18,1) 0.1s forwards; }
@keyframes v8cutmask { to { transform: scaleX(0); } }
@keyframes v8cutbeam { 0% { left: -3px; opacity: 1; } 92% { opacity: 1; } 100% { left: 100%; opacity: 0; } }

/* section-title mark: three tapering segments (engineering hatch), no dot */
body.v8 .cutLine {
    position: relative; display: flex; align-items: center; gap: 6px;
    height: 4px; width: auto; background: transparent; overflow: visible;
}
body.v8 .cutLine i {
    display: block; height: 4px; background: linear-gradient(90deg, var(--red), var(--molten));
    width: 0; transition: width 0.7s cubic-bezier(.77,0,.18,1);
}
body.v8 .cutLine i::after {
    content: ""; position: absolute; /* two more segments via box-shadow siblings won't work; use inline elems below */
    display: none;
}
/* segments */
body.v8 .cutLine::before {
    content: ""; display: block; height: 4px; width: 0; order: 2;
    background: var(--red); opacity: 0.55;
    transition: width 0.7s cubic-bezier(.77,0,.18,1) 0.1s;
}
body.v8 .cutLine::after {
    content: ""; display: block; height: 4px; width: 0; order: 3;
    background: var(--red); opacity: 0.3;
    transition: width 0.7s cubic-bezier(.77,0,.18,1) 0.2s;
}
body.v8 .cutLine i { order: 1; }
body.v8 .inview .cutLine i, body.v8 .cutLine.inview i { width: 46px; }
body.v8 .inview .cutLine::before, body.v8 .cutLine.inview::before { width: 20px; }
body.v8 .inview .cutLine::after, body.v8 .cutLine.inview::after { width: 10px; }

/* (unused notch utility removed — site now uses clean rectangles) */

/* generic scroll reveal */
/* SAFE-BY-DEFAULT reveal pattern: elements are fully visible unless JS
   explicitly primes them for animation. This means if a script tag is
   ever missing/blocked on some page, content simply has no fade-in —
   it can NEVER be stuck invisible. (v8.js adds .primed, then .inview.) */
body.v8 .rise { opacity: 1; transform: none; }
body.v8 .rise.primed { opacity: 0; transform: translateY(28px); transition: opacity 0.7s ease, transform 0.7s cubic-bezier(.22,.8,.28,1); }
body.v8 .rise.primed.inview, body.v8 .inview .rise.primed { opacity: 1; transform: none; }
body.v8 .rise.d1 { transition-delay: 0.08s; }
body.v8 .rise.d2 { transition-delay: 0.16s; }
body.v8 .rise.d3 { transition-delay: 0.24s; }

/* ============ HEADER — solid white, sticky ============ */
body.v8 header {
    position: sticky !important; top: 0; left: 0; width: 100%; z-index: 50;
    background: #ffffff;
    border-bottom: 1px solid var(--grid);
    box-shadow: 0 1px 12px rgba(13,13,20,0.05);
    padding-bottom: 0;
}
body.v8 header .navbar-brand img { max-height: 54px; width: auto; }
body.v8 header .contactLinks a span { color: var(--ink); font-weight: 500; }
body.v8 header .contactLinks a .iCon { filter: brightness(0) saturate(100%) invert(13%) sepia(89%) saturate(5626%) hue-rotate(6deg) brightness(97%) contrast(101%); }
body.v8 header .navbar .nav-item .nav-link { color: var(--ink); font-size: 16px; font-weight: 500; opacity: 0.85; text-shadow: none; }
body.v8 header .navbar .nav-item .nav-link:hover { opacity: 1; color: var(--red); }
body.v8 header .navbar .nav-item .nav-link.active { color: var(--red); opacity: 1; }
body.v8 header .contactLinks a:hover span { color: var(--red); }
body.v8 .hamBurger span { background: var(--ink); }
@media (max-width: 991px) {
    body.v8 header .navbar-collapse {
        background: #ffffff; padding: 16px 20px; margin-top: 10px;
        border: 1px solid var(--grid);
    }
    body.v8 header .navbar-collapse .nav-link { color: var(--ink) !important; }
}

/* hero no longer sits under an absolute header — give it back full height minus header */
body.v8 .secHeroV8 { min-height: calc(100vh - 90px); min-height: calc(100svh - 90px); }

/* ============ HERO ============ */
body.v8 .secHeroV8 {
    position: relative; min-height: 100vh; min-height: 100svh;
    display: flex; flex-direction: column; justify-content: flex-end;
    background: var(--ink); overflow: hidden;
}
body.v8 .secHeroV8 video {
    position: absolute; inset: 0; width: 100%; height: 100%;
    object-fit: cover; z-index: 1; opacity: 0.55;
}
body.v8 .secHeroV8 .shade {
    position: absolute; inset: 0; z-index: 2;
    background:
        linear-gradient(180deg, rgba(13,13,20,0.55) 0%, rgba(13,13,20,0.25) 35%, rgba(13,13,20,0.75) 72%, rgba(13,13,20,0.92) 100%),
        radial-gradient(120% 90% at 85% 10%, rgba(44,0,156,0.35), transparent 55%);
}
/* blueprint grid + crosshairs, from the brochure language */
body.v8 .secHeroV8 .bluGrid {
    position: absolute; inset: 0; z-index: 2; opacity: 0.16; pointer-events: none;
    background-image:
        linear-gradient(rgba(255,255,255,0.5) 1px, transparent 1px),
        linear-gradient(90deg, rgba(255,255,255,0.5) 1px, transparent 1px);
    background-size: 90px 90px;
    mask-image: radial-gradient(120% 100% at 50% 30%, #000 30%, transparent 80%);
    -webkit-mask-image: radial-gradient(120% 100% at 50% 30%, #000 30%, transparent 80%);
}
/* single sweeping scan beam on load */
body.v8 .secHeroV8 .scanBeam {
    position: absolute; top: 0; bottom: 0; width: 2px; z-index: 3; left: -2px;
    background: linear-gradient(180deg, transparent, var(--molten) 30%, var(--red) 70%, transparent);
    box-shadow: 0 0 14px 2px rgba(255,90,31,0.7);
    animation: v8scan 2.4s cubic-bezier(.65,0,.35,1) 0.4s forwards;
    opacity: 0;
}
@keyframes v8scan { 0% { left: -2px; opacity: 1; } 96% { opacity: 1; } 100% { left: 100%; opacity: 0; } }

body.v8 .secHeroV8 .heroInner { position: relative; z-index: 4; padding-top: 60px; padding-bottom: 56px; }
body.v8 .secHeroV8 .specLabel { color: #ff3b1a; display: inline-flex; align-items: center; gap: 12px; text-shadow: 0 1px 10px rgba(0,0,0,0.8); }
body.v8 .secHeroV8 .specLabel::before { content: ""; width: 34px; height: 3px; background: var(--red); display: inline-block; }
body.v8 .secHeroV8 h2 {
    font-size: clamp(46px, 7.2vw, 104px);
    font-weight: 500; line-height: 0.98; color: #ffffff; margin: 20px 0 26px;
}
body.v8 .secHeroV8 h2 .lit {
    color: transparent;
    background: linear-gradient(92deg, var(--molten), var(--red) 70%);
    -webkit-background-clip: text; background-clip: text;
}
body.v8 .secHeroV8 .heroSub { max-width: 620px; color: rgba(255,255,255,0.88); font-size: 20px; line-height: 1.5; }
body.v8 .secHeroV8 .heroCtas { margin-top: 36px; display: flex; gap: 16px; flex-wrap: wrap; }
body.v8 .bTn.Ghost {
    padding: 13px 26px; color: #ffffff; font-weight: 500; font-size: 17px;
    border: 1px solid rgba(255,255,255,0.4); background: transparent;
    display: inline-flex; align-items: center;
    transition: border-color 0.25s, background 0.25s;
}
body.v8 .bTn.Ghost:hover { border-color: var(--molten); background: rgba(255,90,31,0.12); }
body.v8 .bTn.Primary {
    padding: 12px 26px; border-radius: 0 !important;
    font-size: 17px; font-weight: 500; background: var(--violet); color: #fff;
    display: inline-flex; align-items: center;
    transition: background 0.25s;
}
body.v8 .bTn.Primary:hover { background: var(--red); }

/* spec ticker along the hero base — the machine talking */
body.v8 .specTicker {
    position: relative; z-index: 4; border-top: 1px solid rgba(255,255,255,0.14);
    background: rgba(13,13,20,0.55); backdrop-filter: blur(4px);
    overflow: hidden; padding: 13px 0;
}
body.v8 .specTicker .tick { display: flex; width: max-content; animation: v8tick 36s linear infinite; }
body.v8 .specTicker span {
    font-family: var(--mono); font-size: 13px; letter-spacing: 0.18em;
    color: rgba(255,255,255,0.65); white-space: nowrap; padding: 0 34px; position: relative;
}
body.v8 .specTicker span::after {
    content: ""; position: absolute; right: -3px; top: 50%; width: 6px; height: 6px;
    transform: translateY(-50%) rotate(45deg); background: var(--red);
}
@keyframes v8tick { to { transform: translateX(-50%); } }

/* ============ STATS — dimension annotations ============ */
/* ============ CAPABILITY BAND — dark, substantial ============ */
body.v8 .secDims { background: var(--ink); padding: 0; position: relative; }
body.v8 .secDims .dimGrid { display: grid; grid-template-columns: repeat(4, 1fr); }
body.v8 .secDims .dim {
    text-align: left; padding: 52px 40px 48px; position: relative;
    border-right: 1px solid rgba(255,255,255,0.08);
}
body.v8 .secDims .dim:last-child { border-right: none; }
body.v8 .secDims .dim::before {
    content: ""; position: absolute; left: 40px; top: 0; width: 34px; height: 3px;
    background: linear-gradient(90deg, var(--red), var(--molten));
}
body.v8 .secDims .dimVal {
    font-size: clamp(46px, 4.4vw, 68px); font-weight: 500; color: #ffffff; line-height: 1;
    font-variant-numeric: tabular-nums; letter-spacing: -0.02em;
}
body.v8 .secDims .dimVal small { font-size: 0.34em; color: var(--molten); font-weight: 500; margin-left: 6px; letter-spacing: 0; }
body.v8 .secDims .dimName {
    font-family: var(--mono); font-size: 12px; letter-spacing: 0.18em; text-transform: uppercase;
    color: rgba(255,255,255,0.5); margin-top: 16px; line-height: 1.4;
}
@media (max-width: 767px) {
    body.v8 .secDims .dimGrid { grid-template-columns: repeat(2, 1fr); }
    body.v8 .secDims .dim { padding: 34px 24px 30px; }
    body.v8 .secDims .dim:nth-child(2) { border-right: none; }
    body.v8 .secDims .dim:nth-child(1), body.v8 .secDims .dim:nth-child(2) { border-bottom: 1px solid rgba(255,255,255,0.08); }
    body.v8 .secDims .dim::before { left: 24px; }
}

/* ============ SECTION TITLES ============ */
body.v8 .tiTleV8 { margin-bottom: 44px; }
body.v8 .tiTleV8 h3 { font-size: clamp(34px, 4vw, 54px); font-weight: 500; color: var(--ink); background: var(--paper); }
body.v8 .tiTleV8 .cutLine { margin: 18px 0 22px; }
body.v8 .tiTleV8 p { max-width: 760px; color: var(--steel); font-size: 19px; }
body.v8 .onDark .tiTleV8 h3 { color: #ffffff; background: var(--ink); }
body.v8 .onDark .tiTleV8 p { color: rgba(255,255,255,0.65); }

/* ============ WE ARE FABRONIX — editorial split ============ */
body.v8 .secWeAreV8 { padding: 96px 0; background: var(--paper); position: relative; }
body.v8 .secWeAreV8 .leadCol { padding-right: 40px; }
body.v8 .secWeAreV8 .leadCol .lead {
    font-size: clamp(24px, 2.1vw, 30px); font-weight: 500; color: var(--ink);
    line-height: 1.35; letter-spacing: -0.01em; margin-bottom: 20px;
}
body.v8 .secWeAreV8 .leadCol .sub { color: var(--steel); font-size: 18px; line-height: 1.6; }
/* clean text cards, no photos */
body.v8 .secWeAreV8 .valCard {
    background: #ffffff; position: relative; padding: 30px 30px 32px; height: 100%;
    border: 1px solid var(--grid);
    transition: transform 0.35s cubic-bezier(.22,.8,.28,1), box-shadow 0.35s, border-color 0.35s;
}
body.v8 .secWeAreV8 .valCard:hover { transform: translateY(-4px); box-shadow: 0 16px 36px rgba(13,13,20,0.10); border-color: var(--red); }
body.v8 .secWeAreV8 .valCard .vNum {
    font-family: var(--mono); font-size: 13px; letter-spacing: 0.16em; color: var(--red); display: block; margin-bottom: 14px;
}
body.v8 .secWeAreV8 .valCard h4 { font-size: 22px; font-weight: 500; color: var(--ink); margin-bottom: 10px; }
body.v8 .secWeAreV8 .valCard p { color: var(--steel); font-size: 17px; line-height: 1.55; }
body.v8 .secWeAreV8 .valCard .edge {
    position: absolute; left: 0; bottom: 0; height: 3px; width: 0;
    background: linear-gradient(90deg, var(--red), var(--molten)); transition: width 0.45s cubic-bezier(.77,0,.18,1);
}
body.v8 .secWeAreV8 .valCard:hover .edge { width: 100%; }
@media (max-width: 991px) { body.v8 .secWeAreV8 .leadCol { padding-right: 0; margin-bottom: 40px; } }

/* ============ FABRONIX ACRONYM — kinetic type ============ */
body.v8 .secAcronym { background: var(--ink); color: #fff; padding: 120px 0; position: relative; overflow: hidden; }
body.v8 .secAcronym::before {
    content: ""; position: absolute; top: 30%; left: 50%; transform: translate(-50%,-50%);
    width: 70%; height: 340px; z-index: 0; pointer-events: none;
    background: radial-gradient(closest-side, rgba(44,0,156,0.35), rgba(255,90,31,0.08) 55%, transparent 75%);
    filter: blur(20px);
}
body.v8 .secAcronym .bluGrid {
    position: absolute; inset: 0; opacity: 0.07; pointer-events: none;
    background-image:
        linear-gradient(rgba(255,255,255,0.6) 1px, transparent 1px),
        linear-gradient(90deg, rgba(255,255,255,0.6) 1px, transparent 1px);
    background-size: 90px 90px;
}
body.v8 .secAcronym .specLabel { color: var(--red); }
body.v8 .secAcronym .acroRow {
    display: flex; flex-wrap: wrap; align-items: baseline; justify-content: center;
    gap: 0; margin: 40px 0 10px; position: relative; z-index: 2;
}
body.v8 .secAcronym .acroPair { display: inline-flex; align-items: baseline; }
body.v8 .secAcronym .acroL {
    font-size: clamp(48px, 8vw, 128px); font-weight: 500; line-height: 1; color: #ffffff;
    letter-spacing: 0.02em; position: relative;
}
/* (the "e" in "eXecution" now flows as part of the I-pair's suffix text,
   styled identically to the other word captions — no separate element needed) */
/* SCRUB MODE: width & opacity driven by per-word --wp (0..1), set by JS on scroll.
   No CSS transition — the scroll position IS the timeline, so it moves 1:1 with scroll. */
body.v8 .secAcronym .acroWord {
    --wp: 0;
    font-family: var(--mono); font-size: clamp(12px, 1.3vw, 17px); letter-spacing: 0.1em; text-transform: uppercase;
    color: rgba(255,255,255,0.6); align-self: center; white-space: nowrap; overflow: hidden;
}
body.v8 .secAcronym.scrub .acroWord {
    max-width: calc(var(--wp) * 280px);
    opacity: var(--wp);
    margin-right: calc(var(--wp) * 20px);
    margin-left: calc(var(--wp) * 4px);
}
/* the whole wordmark shifts subtly from white toward molten as it fully opens */
body.v8 .secAcronym.scrub .acroL {
    color: color-mix(in srgb, #ffffff calc((1 - var(--acro-p, 0)) * 100%), var(--molten));
}
@supports not (color: color-mix(in srgb, #fff 50%, #000)) {
    body.v8 .secAcronym.scrub .acroL { color: #ffffff; }
}

/* fallback caption: shown only when JS never runs; scrub mode hides it */
body.v8 .secAcronym .acroFallback {
    font-family: var(--mono); font-size: clamp(12px, 1.3vw, 15px); letter-spacing: 0.16em;
    text-transform: uppercase; color: rgba(255,255,255,0.5); margin-top: 20px; line-height: 1.6;
    position: relative; z-index: 2; max-height: 60px; overflow: hidden;
}
body.v8 .secAcronym .acroFallback b { color: var(--molten); font-weight: 500; }
body.v8 .secAcronym.scrub .acroFallback { display: none; }
/* trust points below the acronym (replaces the image) */
body.v8 .secAcronym .acroPoints {
    position: relative; z-index: 2; margin-top: 70px;
    display: grid; grid-template-columns: repeat(3, 1fr); gap: 28px; text-align: left;
}
body.v8 .secAcronym .acroPoint {
    padding: 26px 26px 28px; background: rgba(255,255,255,0.03);
    border: 1px solid rgba(255,255,255,0.1);
    transition: transform 0.35s cubic-bezier(.22,.8,.28,1), border-color 0.35s;
}
body.v8 .secAcronym .acroPoint:hover { transform: translateY(-4px); border-color: rgba(255,90,31,0.4); }
body.v8 .secAcronym .acroPoint .apNum {
    font-family: var(--mono); font-size: 15px; font-weight: 600; letter-spacing: 0.1em; color: var(--red);
    display: block; margin-bottom: 12px;
}
body.v8 .secAcronym .acroPoint h4 { color: #ffffff; font-size: 21px; font-weight: 500; margin-bottom: 8px; }
body.v8 .secAcronym .acroPoint p { color: rgba(255,255,255,0.62); font-size: 16px; line-height: 1.55; margin: 0; }
@media (max-width: 767px) {
    body.v8 .secAcronym .acroPoints { grid-template-columns: 1fr; gap: 16px; margin-top: 48px; }
}

/* ============ CAPABILITIES — dark data plates ============ */
body.v8 .secCapV8 { background: var(--paper); padding: 100px 0; position: relative; }
body.v8 .secCapV8 .tiTleV8 h3 { background: var(--paper); color: var(--ink); }
body.v8 .secCapV8 .tiTleV8 .cutReveal .cutMask { background: var(--paper); }
body.v8 .secCapV8 .nav { border: none; gap: 10px; margin-bottom: 34px; flex-wrap: wrap; }
body.v8 .secCapV8 .nav-link {
    position: relative;
    display: inline-flex; align-items: center; gap: 10px;
    font-family: var(--mono); font-size: 13px; font-weight: 500; letter-spacing: 0.14em; text-transform: uppercase;
    color: var(--steel); background: #ffffff; border: 1px solid var(--ink);
    padding: 13px 22px; border-radius: 0;
    transition: color 0.25s, background 0.25s, border-color 0.25s;
}
body.v8 .secCapV8 .nav-link > * { position: relative; z-index: 1; }
body.v8 .secCapV8 .nav-link span { color: inherit; }
body.v8 .secCapV8 .nav-link.active span { color: #ffffff; }
body.v8 .secCapV8 .nav-link img.iCon { position: relative; z-index: 1; width: 20px; height: 20px; filter: none; opacity: 0.7; }
body.v8 .secCapV8 .nav-link:hover { color: var(--ink); background: var(--grid); }
body.v8 .secCapV8 .nav-link.active {
    color: #ffffff; background: linear-gradient(92deg, var(--red), #a11603); border-color: transparent;
}
body.v8 .secCapV8 .nav-link.active img.iCon { opacity: 1; filter: brightness(0) invert(1); }
body.v8 .secCapV8 .capText h4 { color: var(--ink); font-size: 30px; font-weight: 500; margin-bottom: 14px; }
body.v8 .secCapV8 .capText p { color: var(--steel); font-size: 18px; line-height: 1.6; }
body.v8 .secCapV8 .capImg img { width: 100%; }
/* machine data plate — LIGHT variant, clean rectangle */
body.v8 .dataPlate {
    position: relative; margin-top: 30px;
    background: #ffffff; border: 1px solid var(--grid);
}
body.v8 .dataPlate .plateHead, body.v8 .dataPlate .plateRow { position: relative; z-index: 1; }
body.v8 .dataPlate .plateHead {
    font-family: var(--mono); font-size: 14px; font-weight: 600; letter-spacing: 0.16em; text-transform: uppercase;
    color: var(--red); padding: 13px 18px; border-bottom: 1px solid var(--grid);
    background: rgba(13,13,20,0.03);
}
body.v8 .dataPlate .plateRow { display: flex; border-bottom: 1px solid var(--grid); }
body.v8 .dataPlate .plateRow:last-child { border-bottom: none; }
body.v8 .dataPlate .plateRow > * { padding: 11px 18px; font-size: 15px; }
body.v8 .dataPlate .plateRow .k { width: 42%; color: var(--steel-soft); font-family: var(--mono); font-size: 13px; letter-spacing: 0.06em; }
body.v8 .dataPlate .plateRow .v { width: 58%; color: var(--ink); }

/* ============ INDUSTRIES ============ */
body.v8 .secIndV8 { padding: 100px 0; background: var(--paper); }
body.v8 .secIndV8 .indCard {
    background: #ffffff; height: 100%; padding: 28px 26px 30px; position: relative;
    border: 1px solid var(--grid);
    transition: transform 0.35s cubic-bezier(.22,.8,.28,1), box-shadow 0.35s, border-color 0.35s;
}
body.v8 .secIndV8 .indCard:hover { transform: translateY(-6px); box-shadow: 0 18px 40px rgba(13,13,20,0.12); border-color: var(--red); }
body.v8 .secIndV8 .indCard img.iCon { width: 52px; height: 52px; object-fit: contain; }
body.v8 .secIndV8 .indCard h4 { font-size: 21px; font-weight: 500; color: var(--ink); margin: 16px 0 8px; }
body.v8 .secIndV8 .indCard p { color: var(--steel); font-size: 16px; line-height: 1.55; }
body.v8 .secIndV8 .indCard .edge {
    position: absolute; left: 0; bottom: 0; height: 3px; width: 0;
    background: linear-gradient(90deg, var(--red), var(--molten)); transition: width 0.45s cubic-bezier(.77,0,.18,1);
}
body.v8 .secIndV8 .indCard:hover .edge { width: 100%; }

/* ============ CTA STRIP — richer, on-brand ============ */
body.v8 .secCta {
    background: var(--ink); padding: 0; position: relative; overflow: hidden;
}
body.v8 .secCta .ctaInner {
    position: relative; z-index: 3; padding: 90px 0;
    display: flex; flex-direction: column; align-items: flex-start;
}
/* parts image bleeding in from the right, faded into the dark */
body.v8 .secCta .ctaBG {
    position: absolute; inset: 0; z-index: 1; width: 100%; height: 100%;
    object-fit: cover; object-position: right center; opacity: 0.85;
}
body.v8 .secCta .ctaShade {
    position: absolute; inset: 0; z-index: 2;
    background:
        linear-gradient(90deg, var(--ink) 18%, rgba(13,13,20,0.72) 42%, rgba(13,13,20,0.15) 72%, rgba(13,13,20,0.05) 100%),
        radial-gradient(70% 120% at 100% 50%, rgba(44,0,156,0.28), transparent 65%);
}
body.v8 .secCta .bluGrid {
    position: absolute; inset: 0; z-index: 2; opacity: 0.08; pointer-events: none;
    background-image:
        linear-gradient(rgba(255,255,255,0.6) 1px, transparent 1px),
        linear-gradient(90deg, rgba(255,255,255,0.6) 1px, transparent 1px);
    background-size: 80px 80px;
}
body.v8 .secCta .specLabel { color: #ff3b1a; margin-bottom: 18px; display: inline-flex; align-items: center; gap: 12px; }
body.v8 .secCta .specLabel::before { content: ""; width: 34px; height: 3px; background: var(--red); }
body.v8 .secCta h3 { color: #ffffff; font-size: clamp(34px, 4.4vw, 62px); font-weight: 500; line-height: 1.02; letter-spacing: -0.02em; }
body.v8 .secCta p { color: rgba(255,255,255,0.78); font-size: 19px; margin-top: 18px; max-width: 520px; line-height: 1.55; }
body.v8 .secCta .ctaBtns { margin-top: 34px; display: flex; gap: 16px; flex-wrap: wrap; }

/* ============ FOOTER polish ============ */
/* ============ FOOTER — on-brand ============ */
body.v8 footer .blackBG {
    background: var(--ink); position: relative; padding-top: 72px !important; padding-bottom: 56px !important;
}
body.v8 footer .blackBG::before {
    content: ""; position: absolute; inset: 0; opacity: 0.05; pointer-events: none;
    background-image:
        linear-gradient(rgba(255,255,255,0.6) 1px, transparent 1px),
        linear-gradient(90deg, rgba(255,255,255,0.6) 1px, transparent 1px);
    background-size: 80px 80px;
}
body.v8 footer .blackBG::after {
    content: ""; position: absolute; top: 0; left: 0; width: 100%; height: 3px;
    background: linear-gradient(90deg, var(--red), var(--molten) 35%, transparent 70%);
}
body.v8 footer .blackBG .container { position: relative; z-index: 2; }
/* mono section labels with red tick */
body.v8 footer .quickLinks label {
    font-family: var(--mono); font-size: 15px; font-weight: 600; letter-spacing: 0.16em; text-transform: uppercase;
    color: var(--red); margin-bottom: 16px; display: inline-flex; align-items: center; gap: 10px;
}
body.v8 footer .quickLinks label::before { content: ""; width: 18px; height: 2px; background: var(--red); display: inline-block; }
body.v8 footer .quickLinks p { color: rgba(255,255,255,0.72); font-size: 16px; line-height: 1.7; }
body.v8 footer .quickLinks a { color: rgba(255,255,255,0.72); font-size: 16px; transition: color 0.2s, padding-left 0.2s; position: relative; }
body.v8 footer .quickLinks a:hover { color: #ffffff; }
/* quick-links nav: hover slides right with a red marker */
body.v8 footer .col-lg-4:nth-child(2) .quickLinks a { padding-left: 0; }
body.v8 footer .col-lg-4:nth-child(2) .quickLinks a::before {
    content: "›"; color: var(--red); opacity: 0; margin-right: 0; width: 0; display: inline-block;
    transition: opacity 0.2s, width 0.2s, margin 0.2s;
}
body.v8 footer .col-lg-4:nth-child(2) .quickLinks a:hover::before { opacity: 1; width: 12px; margin-right: 8px; }
/* social icons: red circle -> molten on hover */
body.v8 footer .socialMedia { gap: 14px; }
body.v8 footer .socialMedia a {
    width: 42px; height: 42px; display: inline-flex; align-items: center; justify-content: center;
    background: var(--red); border-radius: 50%; transition: background 0.25s, transform 0.25s;
}
body.v8 footer .socialMedia a:hover { background: var(--molten); transform: translateY(-3px); }
body.v8 footer .socialMedia a img { width: 18px; height: 18px; }
/* map: notch frame, subtle border */
body.v8 footer .googleMap {
    position: relative; overflow: hidden; border: 1px solid rgba(255,255,255,0.12);
    border-radius: 0 !important;
}
body.v8 footer .googleMap iframe { width: 100%; height: 320px; display: block; border-radius: 0 !important; filter: grayscale(0.2) contrast(1.05); }
/* bottom bar */
body.v8 footer .whiteBG { background: var(--paper); border-top: 1px solid var(--grid); padding-top: 20px !important; padding-bottom: 20px !important; }
body.v8 footer .whiteBG h5 img { max-height: 46px; width: auto; }
body.v8 footer .whiteBG h6 { color: var(--steel); font-size: 15px; }
body.v8 footer .whiteBG h6 .Link { color: var(--red); margin-left: 6px; }
body.v8 footer .whiteBG h6 .Link:hover { color: var(--molten); }
@media (max-width: 991px) {
    body.v8 footer .googleMap iframe { height: 260px; }
}

/* ============ MOTION SAFETY + MOBILE ============ */
@media (prefers-reduced-motion: reduce) {
    body.v8 .cutReveal .cutMask, body.v8 .cutReveal .cutBeam,
    body.v8 .secHeroV8 .scanBeam { animation: none !important; }
    body.v8 .cutReveal .cutMask { transform: scaleX(0); }
    body.v8 .specTicker .tick { animation: none; }
    body.v8 .rise { opacity: 1; transform: none; transition: none; }
    body.v8 .cutLine i { transition: none; width: 46px; }
    body.v8 .cutLine::before { transition: none; width: 20px; }
    body.v8 .cutLine::after { transition: none; width: 10px; }
}
@media (max-width: 991px) {
    body.v8 header, body.v8 section, body.v8 .secHeroV8, body.v8 footer > * { padding-left: 24px !important; padding-right: 24px !important; }
    body.v8 .secHeroV8 .heroInner { padding-top: 40px; }
    body.v8 .secAcronym .acroWord { display: none; }
    body.v8 .secAcronym.scrub .acroFallback { display: block; }
    body.v8 .dataPlate .plateRow { flex-direction: column; }
    body.v8 .dataPlate .plateRow .k, body.v8 .dataPlate .plateRow .v { width: 100%; padding: 8px 16px; }
    body.v8 .dataPlate .plateRow .k { padding-bottom: 0; }
}

/* ============================================================
   INNER PAGES — V8 skin (body.innerPages.v8)
   ============================================================ */
body.v8.innerPages .secHero {
    background: var(--ink); position: relative; overflow: hidden;
    padding-top: 150px; padding-bottom: 10px;
}
body.v8.innerPages .secHero .BG { opacity: 0.22; object-fit: cover; height: 100%; }
body.v8.innerPages .secHero::before {
    content: ""; position: absolute; inset: 0; z-index: 1; opacity: 0.12; pointer-events: none;
    background-image:
        linear-gradient(rgba(255,255,255,0.5) 1px, transparent 1px),
        linear-gradient(90deg, rgba(255,255,255,0.5) 1px, transparent 1px);
    background-size: 90px 90px;
}
body.v8.innerPages .secHero::after {
    content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: 3px; z-index: 3;
    background: linear-gradient(90deg, var(--red), var(--molten) 40%, transparent 80%);
}
body.v8.innerPages .secHero .teXt { position: relative; }
body.v8.innerPages .secHero .teXt::before {
    content: attr(data-crumb);
    display: block;
    font-family: var(--mono); font-size: 12px; letter-spacing: 0.22em; text-transform: uppercase;
    color: var(--molten); margin-bottom: 14px;
}
body.v8.innerPages .secHero h2 {
    font-size: clamp(42px, 5.5vw, 76px); font-weight: 500; line-height: 1; color: #ffffff;
}

/* section titles: hide old SVG line, draw the V8 cut line */
body.v8.innerPages .tiTle h3 { font-size: clamp(32px, 3.6vw, 48px); font-weight: 500; letter-spacing: -0.015em; }
body.v8.innerPages .tiTle h3 img.Line { display: none; }
body.v8.innerPages .tiTle h3::after {
    content: ""; display: block; width: 130px; height: 3px; margin: 16px 0 4px;
    background: linear-gradient(90deg, var(--red), var(--molten));
}
body.v8.innerPages .tiTle p { color: var(--steel); font-size: 18px; max-width: 860px; }

/* card language: notched blanks with edge trace */
body.v8.innerPages .iConBox,
body.v8.innerPages .teXtBox {
    background: #ffffff; position: relative;
    border: 1px solid var(--grid);
    box-shadow: 0 2px 6px rgba(13,13,20,0.05);
    transition: transform 0.35s cubic-bezier(.22,.8,.28,1), box-shadow 0.35s, border-color 0.35s;
}
body.v8.innerPages .iConBox:hover,
body.v8.innerPages .teXtBox:hover { transform: translateY(-5px); box-shadow: 0 16px 36px rgba(13,13,20,0.12); border-color: var(--red); }
body.v8.innerPages .iConBox::after,
body.v8.innerPages .teXtBox::after {
    content: ""; position: absolute; left: 0; bottom: 0; height: 3px; width: 0;
    background: linear-gradient(90deg, var(--red), var(--molten));
    transition: width 0.45s cubic-bezier(.77,0,.18,1);
}
body.v8.innerPages .iConBox:hover::after,
body.v8.innerPages .teXtBox:hover::after { width: 100%; }

/* tables on inner pages pick up the data-plate voice */
body.v8.innerPages table thead th,
body.v8.innerPages .table thead th {
    font-family: var(--mono); font-size: 13px; letter-spacing: 0.14em; text-transform: uppercase;
    background: var(--ink) !important; color: var(--molten) !important; border: none;
}

/* ============================================================
   INNER — polish for legacy sections (Quality / Certificates / Infra)
   ============================================================ */
/* Quality Assurance: tame the BG image so text stays readable */
body.v8.innerPages .secQualityAssurance { background: var(--paper); }
body.v8.innerPages .secQualityAssurance .BG { opacity: 0.06; object-fit: cover; height: 100%; }
body.v8.innerPages .secQualityAssurance .tiTle p { color: var(--steel); font-size: 17px; line-height: 1.65; }
body.v8.innerPages .qualityCheckedBy { gap: 20px; flex-wrap: wrap; }
body.v8.innerPages .qualityCheckedBy img { max-height: 64px; width: auto; object-fit: contain; }

/* Certificate cards: clean notch frames */
body.v8.innerPages .secCertificates .teXtBox { padding-bottom: 8px; }
body.v8.innerPages .secCertificates .teXtBox .iMG { width: 100%; object-fit: cover; }
body.v8.innerPages .secCertificates .teXtBox h4 { font-size: 18px; font-weight: 500; color: var(--ink); }

/* Infrastructure intro paragraphs */
body.v8.innerPages .secInfastructure p,
body.v8.innerPages .secContactInfo p { color: var(--steel); font-size: 17px; line-height: 1.65; }
body.v8.innerPages .secContactInfo h3 { color: var(--ink); font-weight: 500; }
body.v8.innerPages .secContactInfo h4 { color: var(--ink); font-weight: 500; }
body.v8.innerPages .secContactInfo .infoDetails a { color: var(--red); }
body.v8.innerPages .secContactInfo .infoDetails a:hover { color: var(--molten); }

/* generic: any leftover white h4 on light bg stays dark & readable */
body.v8.innerPages section h4 { color: var(--ink); }

/* ============ FACILITY BAND — full-bleed aerial ============ */
body.v8 .secFacility { position: relative; min-height: 480px; display: flex; align-items: center; overflow: hidden; }
body.v8 .secFacility .facilityBG {
    position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; z-index: 1;
}
body.v8 .secFacility .facilityShade {
    position: absolute; inset: 0; z-index: 2;
    background: linear-gradient(90deg, rgba(13,13,20,0.92) 0%, rgba(13,13,20,0.7) 45%, rgba(13,13,20,0.25) 100%);
}
body.v8 .secFacility .facilityInner { position: relative; z-index: 3; padding: 70px 0; }
body.v8 .secFacility h3 { color: #ffffff; font-size: clamp(32px, 3.6vw, 52px); font-weight: 500; margin: 18px 0 16px; letter-spacing: -0.015em; }
body.v8 .secFacility p { color: rgba(255,255,255,0.82); font-size: 19px; line-height: 1.6; max-width: 560px; }
@media (max-width: 767px) {
    body.v8 .secFacility .facilityShade { background: linear-gradient(180deg, rgba(13,13,20,0.75), rgba(13,13,20,0.88)); }
    body.v8 .secFacility .facilityInner { padding: 54px 0; }
}

/* (removed: .vdoWrap img rule — that image was replaced by acroPoints) */

/* ============================================================
   (removed: notchBox utility — no longer used, site uses rectangles)
   ============================================================ */


/* ============ FAQ (SEO) ============ */
body.v8 .secFaq { background: var(--paper); padding: 100px 0; }
body.v8 .secFaq .faqList { width: 100%; }
body.v8 .secFaq .faqItem {
    background: #ffffff; border: 1px solid var(--grid); margin-bottom: 14px;
    overflow: hidden; transition: border-color 0.2s;
}
body.v8 .secFaq .faqItem:hover { border-color: var(--red); }
body.v8 .secFaq summary {
    list-style: none; cursor: pointer; padding: 22px 26px;
    font-size: 19px; font-weight: 500; color: var(--ink);
    display: flex; align-items: center; justify-content: space-between; gap: 16px;
    transition: color 0.2s;
}
body.v8 .secFaq summary::-webkit-details-marker { display: none; }
body.v8 .secFaq summary::after {
    content: "+"; font-family: var(--mono); font-size: 26px; font-weight: 400; color: var(--red);
    line-height: 1; flex-shrink: 0; transition: transform 0.3s;
}
body.v8 .secFaq .faqItem[open] summary::after { transform: rotate(45deg); }
body.v8 .secFaq summary:hover { color: var(--red); }
body.v8 .secFaq .faqA { padding: 0 26px 24px; }
body.v8 .secFaq .faqA p { color: var(--steel); font-size: 17px; line-height: 1.6; margin: 0; }

/* ============================================================
   (removed: SVG notch-outline overlay technique — it distorted on
   wide/short elements like the FAQ rows, producing a doubled-border
   artifact. Cards now use plain CSS borders, set above per-component.)
   ============================================================ */

/* ============ SECTION DIVIDER — subtle break between sections ============ */
body.v8 .secDivider {
    background: var(--paper); padding: 0; position: relative;
    display: flex; align-items: center; justify-content: center;
}
body.v8 .secDivider span {
    position: relative; width: min(90%, 1200px); height: 1px; background: var(--grid);
}
body.v8 .secDivider span::before {
    content: ""; position: absolute; left: 50%; top: 50%; transform: translate(-50%,-50%);
    width: 34px; height: 3px; background: linear-gradient(90deg, var(--red), var(--molten));
}

/* ============================================================
   INNER PAGES V2 — full redesign component library
   Reuses homepage tokens/patterns: dark ink hero, white sections,
   red/molten accents, clean bordered cards, cutLine titles, dividers.
   ============================================================ */

/* --- Page intro / editorial lead block (About, Infra, Industries) --- */
body.v8.innerPages .pageIntro { padding: 90px 0 70px; background: var(--paper); }
body.v8.innerPages .pageIntro .row { align-items: flex-start; }
body.v8.innerPages .pageIntro .lead {
    font-size: clamp(24px, 2.1vw, 30px); font-weight: 500; color: var(--ink);
    line-height: 1.35; letter-spacing: -0.01em; margin-bottom: 18px; font-family: 'Neo Sans Std', sans-serif;
}
body.v8.innerPages .pageIntro .subCol p { color: var(--steel); font-size: 18px; line-height: 1.65; margin-bottom: 16px; }
body.v8.innerPages .pageIntro .subCol p:last-child { margin-bottom: 0; }

/* --- Stat strip (reuses .secDims dark band pattern, smaller) --- */
body.v8.innerPages .miniStats { background: var(--ink); }
body.v8.innerPages .miniStats .dimGrid { display: grid; }
body.v8.innerPages .miniStats .dim {
    text-align: left; padding: 40px 32px; position: relative;
    border-right: 1px solid rgba(255,255,255,0.08);
}
body.v8.innerPages .miniStats .dim:last-child { border-right: none; }
body.v8.innerPages .miniStats .dim::before {
    content: ""; position: absolute; left: 32px; top: 0; width: 28px; height: 3px;
    background: linear-gradient(90deg, var(--red), var(--molten));
}
body.v8.innerPages .miniStats .dVal { font-size: clamp(28px, 2.6vw, 40px); font-weight: 500; color: #ffffff; line-height: 1; }
body.v8.innerPages .miniStats .dName {
    font-family: var(--mono); font-size: 12px; letter-spacing: 0.16em; text-transform: uppercase;
    color: rgba(255,255,255,0.5); margin-top: 12px;
}
@media (max-width: 767px) {
    body.v8.innerPages .miniStats .dimGrid { grid-template-columns: repeat(2,1fr) !important; }
    body.v8.innerPages .miniStats .dim:nth-child(2n) { border-right: none; }
}

/* --- Generic clean section title (reuses tiTleV8 language) --- */
body.v8.innerPages .secTitle { margin-bottom: 40px; }
body.v8.innerPages .secTitle h3 { font-size: clamp(30px, 3.6vw, 46px); font-weight: 500; color: var(--ink); }
body.v8.innerPages .secTitle p { max-width: 760px; color: var(--steel); font-size: 18px; margin-top: 16px; }
body.v8.innerPages .onDark .secTitle h3 { color: #ffffff; }
body.v8.innerPages .onDark .secTitle p { color: rgba(255,255,255,0.65); }

/* --- Quality Assurance band (dark, with policy text + logos) --- */
body.v8.innerPages .secQA { background: var(--ink); padding: 90px 0; position: relative; overflow: hidden; }
body.v8.innerPages .secQA .bluGrid {
    position: absolute; inset: 0; opacity: 0.06; pointer-events: none;
    background-image: linear-gradient(rgba(255,255,255,0.6) 1px, transparent 1px), linear-gradient(90deg, rgba(255,255,255,0.6) 1px, transparent 1px);
    background-size: 80px 80px;
}
body.v8.innerPages .secQA .qaText { position: relative; z-index: 2; max-width: 780px; }
body.v8.innerPages .secQA p { color: rgba(255,255,255,0.72); font-size: 18px; line-height: 1.65; }
body.v8.innerPages .qualityCheckedBy { gap: 24px; flex-wrap: wrap; position: relative; z-index: 2; margin-top: 40px; padding-top: 32px; border-top: 1px solid rgba(255,255,255,0.1); }
body.v8.innerPages .qualityCheckedBy img { max-height: 56px; width: auto; object-fit: contain; filter: brightness(0) invert(1); opacity: 0.85; }

/* --- Certificate / value cards grid --- */
body.v8.innerPages .certGrid { padding: 90px 0; background: var(--paper); }
body.v8.innerPages .certCard {
    background: #ffffff; border: 1px solid var(--grid); overflow: hidden; height: 100%;
    transition: border-color 0.25s, transform 0.3s, box-shadow 0.3s;
}
body.v8.innerPages .certCard:hover { border-color: var(--red); transform: translateY(-4px); box-shadow: 0 16px 36px rgba(13,13,20,0.1); }
body.v8.innerPages .certCard img.iMG { width: 100%; height: 220px; object-fit: cover; display: block; }
body.v8.innerPages .certCard .cName { padding: 20px 22px; }
body.v8.innerPages .certCard h4 { font-size: 19px; font-weight: 500; color: var(--ink); margin: 0; }

/* --- Facility strip reused for Infrastructure page --- */
body.v8.innerPages .secFacilityFull { position: relative; min-height: 420px; display: flex; align-items: center; overflow: hidden; }
body.v8.innerPages .secFacilityFull img.facilityBG { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; z-index: 1; }
body.v8.innerPages .secFacilityFull .shade { position: absolute; inset: 0; z-index: 2; background: linear-gradient(90deg, rgba(13,13,20,0.9) 0%, rgba(13,13,20,0.55) 55%, rgba(13,13,20,0.2) 100%); }
body.v8.innerPages .secFacilityFull .inner { position: relative; z-index: 3; padding: 60px 0; max-width: 640px; }
body.v8.innerPages .secFacilityFull h3 { color: #ffffff; font-size: clamp(28px, 3.2vw, 42px); font-weight: 500; margin-bottom: 14px; }
body.v8.innerPages .secFacilityFull p { color: rgba(255,255,255,0.82); font-size: 18px; line-height: 1.6; }

/* --- Capability process cards (Infrastructure page: full detail per process) --- */
body.v8.innerPages .procSection { padding: 70px 0; }
body.v8.innerPages .procSection:nth-child(even) { background: var(--paper); }
body.v8.innerPages .procSection:nth-child(odd) { background: #ffffff; }
body.v8.innerPages .procHead { display: flex; align-items: center; gap: 16px; margin-bottom: 20px; }
body.v8.innerPages .procHead .procNum {
    font-family: var(--mono); font-size: 14px; font-weight: 600; color: #ffffff;
    background: var(--ink); width: 44px; height: 44px; display: flex; align-items: center; justify-content: center; flex-shrink: 0;
}
body.v8.innerPages .procHead h3 { font-size: 28px; font-weight: 500; color: var(--ink); margin: 0; }
body.v8.innerPages .procSection > .container > p.lead-p { color: var(--steel); font-size: 18px; line-height: 1.6; max-width: 720px; margin-bottom: 30px; }
body.v8.innerPages .procFeatures { display: grid; grid-template-columns: repeat(4, 1fr); gap: 20px; margin-bottom: 30px; }
body.v8.innerPages .procFeatures .pf { border: 1px solid var(--grid); padding: 20px; background: #ffffff; }
body.v8.innerPages .procFeatures .pf img.iCon { width: 30px; height: 30px; margin-bottom: 12px; }
body.v8.innerPages .procFeatures .pf h4 { font-size: 16px; font-weight: 500; color: var(--ink); margin-bottom: 6px; }
body.v8.innerPages .procFeatures .pf p { font-size: 14px; color: var(--steel); line-height: 1.5; margin: 0; }
@media (max-width: 991px) { body.v8.innerPages .procFeatures { grid-template-columns: repeat(2,1fr); } }
@media (max-width: 575px) { body.v8.innerPages .procFeatures { grid-template-columns: 1fr; } }

/* --- Industries: full-content stacked rows (SEO-friendly, no hidden tab content) --- */
body.v8.innerPages .indFullRow { padding: 60px 0; border-bottom: 1px solid var(--grid); }
body.v8.innerPages .indFullRow:last-child { border-bottom: none; }
body.v8.innerPages .indFullRow .indIcon {
    width: 60px; height: 60px; display: flex; align-items: center; justify-content: center;
    background: var(--ink); margin-bottom: 20px;
}
body.v8.innerPages .indFullRow .indIcon img { width: 30px; height: 30px; filter: brightness(0) invert(1); }
body.v8.innerPages .indFullRow h3 { font-size: 26px; font-weight: 500; color: var(--ink); margin-bottom: 14px; }
body.v8.innerPages .indFullRow p { color: var(--steel); font-size: 17px; line-height: 1.65; max-width: 780px; margin-bottom: 20px; }

/* --- Contact page redesign --- */
body.v8.innerPages .secContactV2 { padding: 90px 0; background: var(--paper); }
body.v8.innerPages .contactFormCard { background: #ffffff; border: 1px solid var(--grid); padding: 44px; }
body.v8.innerPages .contactFormCard h3 { font-size: 26px; font-weight: 500; color: var(--ink); margin-bottom: 8px; }
body.v8.innerPages .contactFormCard .formSub { color: var(--steel); font-size: 16px; margin-bottom: 26px; }

/* Info panel — dark card with icon rows */
body.v8.innerPages .contactInfoCard {
    background: var(--ink); padding: 40px; height: 100%; position: relative; overflow: hidden;
}
body.v8.innerPages .contactInfoCard .bluGrid {
    position: absolute; inset: 0; opacity: 0.06; pointer-events: none;
    background-image: linear-gradient(rgba(255,255,255,0.6) 1px, transparent 1px), linear-gradient(90deg, rgba(255,255,255,0.6) 1px, transparent 1px);
    background-size: 70px 70px;
}
body.v8.innerPages .contactInfoCard::before {
    content: ""; position: absolute; top: 0; left: 0; width: 100%; height: 3px;
    background: linear-gradient(90deg, var(--red), var(--molten) 40%, transparent 75%);
}
body.v8.innerPages .contactInfoCard .ciHead { position: relative; z-index: 2; margin-bottom: 8px; }
body.v8.innerPages .contactInfoCard .ciName { color: #fff; font-size: 22px; font-weight: 500; margin: 10px 0 30px; position: relative; z-index: 2; }
body.v8.innerPages .contactInfoCard .icBlock {
    position: relative; z-index: 2; display: flex; gap: 16px; align-items: flex-start;
    padding: 20px 0; border-bottom: 1px solid rgba(255,255,255,0.1);
}
body.v8.innerPages .contactInfoCard .icBlock:last-child { border-bottom: none; padding-bottom: 0; }
body.v8.innerPages .contactInfoCard .icBlock .icIcon {
    flex-shrink: 0; width: 42px; height: 42px; border: 1px solid rgba(255,255,255,0.2);
    display: flex; align-items: center; justify-content: center; color: var(--molten);
}
body.v8.innerPages .contactInfoCard .icBlock .icIcon svg { width: 20px; height: 20px; }
body.v8.innerPages .contactInfoCard .icBlock label {
    font-family: var(--mono); font-size: 12px; font-weight: 600; letter-spacing: 0.14em; text-transform: uppercase;
    color: var(--molten); display: block; margin-bottom: 6px;
}
body.v8.innerPages .contactInfoCard .icBlock address,
body.v8.innerPages .contactInfoCard .icBlock a,
body.v8.innerPages .contactInfoCard .icBlock p { font-style: normal; font-size: 16px; color: rgba(255,255,255,0.9); line-height: 1.5; margin: 0; }
body.v8.innerPages .contactInfoCard .icBlock a { display: block; }
body.v8.innerPages .contactInfoCard .icBlock a:hover { color: var(--molten); }

/* rounded inputs -> square to match rectangle system */
body.v8 form .form-group .form-control { border-radius: 0 !important; border-color: var(--grid); }
body.v8 form .form-group .form-control:focus,
body.v8 form .form-group .form-control.hasValue { border-color: var(--violet) !important; }
body.v8 form .form-group select.form-control { height: 50px; padding: 0 15px; appearance: none; background: transparent 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 1l5 5 5-5' stroke='%2352525E' stroke-width='1.5' fill='none'/%3E%3C/svg%3E") no-repeat right 16px center; }
body.v8 form .fileField {
    border: 1px dashed var(--steel-soft); padding: 16px 18px; display: flex; align-items: center; gap: 14px;
    cursor: pointer; transition: border-color 0.2s, background 0.2s; background: var(--paper);
}
body.v8 form .fileField:hover { border-color: var(--red); background: #fff; }
body.v8 form .fileField .ffIcon { color: var(--red); flex-shrink: 0; }
body.v8 form .fileField .ffText { font-size: 15px; color: var(--steel); }
body.v8 form .fileField .ffText b { color: var(--ink); font-weight: 500; }
body.v8 form .fileField input[type="file"] { display: none; }
body.v8 form .fileField .ffName { font-size: 14px; color: var(--red); font-family: var(--mono); }

/* --- Privacy policy: TOC + anchor sections --- */
body.v8.innerPages .secPolicyV2 { padding: 90px 0; background: var(--paper); }
body.v8.innerPages .policyGrid { display: grid; grid-template-columns: 280px 1fr; gap: 60px; align-items: flex-start; }
body.v8.innerPages .policyToc { position: sticky; top: 110px; border: 1px solid var(--grid); background: #ffffff; padding: 24px; }
body.v8.innerPages .policyToc .tocLabel { font-family: var(--mono); font-size: 12px; font-weight: 600; letter-spacing: 0.14em; text-transform: uppercase; color: var(--red); margin-bottom: 14px; display: block; }
body.v8.innerPages .policyToc a { display: block; font-size: 14px; color: var(--steel); padding: 7px 0; border-bottom: 1px solid var(--grid); }
body.v8.innerPages .policyToc a:last-child { border-bottom: none; }
body.v8.innerPages .policyToc a:hover { color: var(--red); }
body.v8.innerPages .policyBody > p.intro { font-size: 17px; color: var(--steel); line-height: 1.7; margin-bottom: 40px; padding-bottom: 30px; border-bottom: 1px solid var(--grid); }
body.v8.innerPages .policySec { margin-bottom: 34px; scroll-margin-top: 110px; }
body.v8.innerPages .policySec h4 { font-size: 21px; font-weight: 500; color: var(--ink); margin-bottom: 10px; }
body.v8.innerPages .policySec p { font-size: 16px; color: var(--steel); line-height: 1.7; margin-bottom: 10px; }
body.v8.innerPages .policySec ul { margin: 10px 0 10px 20px; }
body.v8.innerPages .policySec ul li { font-size: 16px; color: var(--steel); line-height: 1.7; margin-bottom: 6px; }
@media (max-width: 900px) {
    body.v8.innerPages .policyGrid { grid-template-columns: 1fr; }
    body.v8.innerPages .policyToc { position: relative; top: 0; }
}

/* --- Sitemap page --- */
body.v8.innerPages .secSitemapV2 { padding: 90px 0; background: var(--paper); min-height: 50vh; }
body.v8.innerPages .sitemapGrid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; margin-top: 30px; }
body.v8.innerPages .sitemapGrid a {
    display: flex; align-items: center; justify-content: space-between;
    border: 1px solid var(--grid); background: #ffffff; padding: 20px 22px;
    font-size: 17px; font-weight: 500; color: var(--ink); transition: border-color 0.2s, color 0.2s;
}
body.v8.innerPages .sitemapGrid a:hover { border-color: var(--red); color: var(--red); }
body.v8.innerPages .sitemapGrid a::after { content: "→"; color: var(--red); font-family: var(--mono); }
@media (max-width: 767px) { body.v8.innerPages .sitemapGrid { grid-template-columns: 1fr; } }

/* --- 404 page --- */
body.v8.innerPages .sec404 {
    min-height: 70vh; display: flex; align-items: center; justify-content: center; text-align: center;
    background: var(--ink); position: relative; overflow: hidden; padding: 60px 0;
}
body.v8.innerPages .sec404 .bluGrid {
    position: absolute; inset: 0; opacity: 0.08; pointer-events: none;
    background-image: linear-gradient(rgba(255,255,255,0.6) 1px, transparent 1px), linear-gradient(90deg, rgba(255,255,255,0.6) 1px, transparent 1px);
    background-size: 80px 80px;
}
body.v8.innerPages .sec404 .inner { position: relative; z-index: 2; }
body.v8.innerPages .sec404 .code {
    font-family: 'Neo Sans Std', sans-serif; font-size: clamp(90px, 14vw, 180px); font-weight: 500; line-height: 1;
    background: linear-gradient(92deg, var(--molten), var(--red) 70%); -webkit-background-clip: text; background-clip: text; color: transparent;
}
body.v8.innerPages .sec404 h4 { color: #ffffff; font-size: 28px; font-weight: 500; margin: 10px 0 16px; }
body.v8.innerPages .sec404 p { color: rgba(255,255,255,0.65); font-size: 17px; max-width: 460px; margin: 0 auto 8px; }
body.v8.innerPages .sec404 .pageLinks { display: flex; flex-wrap: wrap; gap: 12px; justify-content: center; margin-top: 30px; }
body.v8.innerPages .sec404 .pageLinks a {
    border: 1px solid rgba(255,255,255,0.25); color: #fff; padding: 10px 20px; font-size: 15px; transition: border-color 0.2s, background 0.2s;
}
body.v8.innerPages .sec404 .pageLinks a:hover { border-color: var(--molten); background: rgba(255,90,31,0.12); }

/* ============ QUOTE MODAL / FORM ENHANCEMENTS ============ */
body.v8 .mono-label {
    font-family: var(--mono); font-size: 12px; font-weight: 600; letter-spacing: 0.12em; text-transform: uppercase;
    color: var(--steel);
}
body.v8 .modal-content { border-radius: 0; border: none; }
body.v8 .modal-header { border-bottom: 1px solid var(--grid); }
body.v8 .modal-header .modal-title { font-family: 'Neo Sans Std', sans-serif; font-weight: 500; color: var(--ink); }
body.v8 .modal-body p { color: var(--steel); }
body.v8 .modal .bTn.Primary { margin-top: 8px; }
