/* ============================================================================
   v2.css — site-wide "engineering document" visual system.

   Promotes the homepage restyle (originally an inline block in index.blade.php,
   scoped .home-v2) to every page that uses layouts.master. Everything is gated
   behind `body.site-v2` (set in layouts/master.blade.php). A single page can
   opt out with @section('body_class', 'v2-off').

   Load order: plugins → style.purged.css → apar.css → THIS → @yield('style').
   Rollback: remove the <link> + the `site-v2` body class in master.blade.php.

   Mirrored to public/assets/css/v2.css (that copy is what production loads —
   keep the two in sync, same as apar.css).
   ========================================================================== */

body.site-v2 {
    --ink:      #171c28;   /* headings, primary action */
    --ink-body: #55606f;   /* running text */
    --ink-mute: #5a6472;   /* captions, meta — was #8b94a3 (2.6–3.1:1, fails WCAG AA); this passes 4.5:1+ on paper/paper-2/white */
    --paper:    #f5f7fb;   /* section ground */
    --paper-2:  #edeff3;   /* recessed ground */
    --card:     #ffffff;
    --rule:     #e3e6ec;   /* hairline */
    --rule-2:   #d2d8e0;
    --accent:   #c2410c;   /* burnt amber, the one accent, on light */
    --accent-d: #f2a53c;   /* amber, on the dark break sections */
    --ink-dark: #12161f;   /* the deep-ink "break" sections */
    --mono: ui-monospace, "SFMono-Regular", "IBM Plex Mono", Menlo, Consolas, monospace;

    background-color: var(--paper) !important;
}
/* Opt-out: a page that sets @section('body_class', 'v2-off') gets no `site-v2`
   class from master.blade.php, so none of the rules below apply to it. */

/* --- nav (page chrome) ------------------------------------------------- */
.site-v2 .navbar .btn-primary {
    background: var(--ink) !important;
    border-color: var(--ink) !important;
    color: #fff !important;
    box-shadow: none !important;
    border-radius: 3px !important;
    font-weight: 500;
}
.site-v2 .navbar .btn-primary:hover,
.site-v2 .navbar .btn-primary:focus-visible {
    background: #0b0f17 !important;
    border-color: #0b0f17 !important;
}
.site-v2 .navbar .nav-link.text-primary { color: var(--accent) !important; }
.site-v2 .navbar-clone.fixed { box-shadow: 0 1px 0 var(--rule) !important; }
.site-v2 .navbar .mega-menu .bg-soft-sky { background-color: #f5f6f8 !important; }
.site-v2 .navbar .dropdown-item.nav-item-desc:hover,
.site-v2 .navbar .nav_product_link.active {
    background-color: #eef0f4 !important;
    color: var(--ink) !important;
}

/* --- section grounds: paper + hairline dividers ---------------------- */
.site-v2 .wrapper {
    color: var(--ink-body);
}
.site-v2 .wrapper.bg-light,
.site-v2 .wrapper.bg-soft-primary,
.site-v2 .wrapper[class*="bg-soft-"],
.site-v2 .wrapper.bg-gray {
    background-color: var(--paper) !important;
    background-image: none !important;
}
.site-v2 .wrapper.bg-dark,
.site-v2 .wrapper.bg-navy,
.site-v2 .wrapper.gradient-8,
.site-v2 .wrapper.bg-lines,
.site-v2 .wrapper[class*="gradient-"] {
    background-color: var(--ink-dark) !important;
    background-image: none !important;
    color: rgba(255, 255, 255, 0.66);
}
.site-v2 .wrapper.bg-lines::before,
.site-v2 .wrapper.bg-lines::after { display: none !important; }

.site-v2 .content-wrapper > .home-v2 > .wrapper + .wrapper,
.site-v2 main > .wrapper + .wrapper { border-top: 1px solid var(--rule); }

/* --- typography ----------------------------------------------------- */
.site-v2 .wrapper h1, .site-v2 .wrapper h2, .site-v2 .wrapper h3,
.site-v2 .wrapper h4, .site-v2 .wrapper h5,
.site-v2 .display-1, .site-v2 .display-2, .site-v2 .display-3,
.site-v2 .display-4, .site-v2 .display-5, .site-v2 .display-6 {
    color: var(--ink);
    letter-spacing: -0.022em;
    line-height: 1.14;
    text-wrap: balance;
}
/* the Sandbox theme runs a 20px root, so its rem headings render ~25% large.
   These are tuned to the actual pixel result. (1rem = 20px here.) */
.site-v2 .display-1 { font-size: clamp(1.9rem, 1.2rem + 2vw, 2.6rem) !important; letter-spacing: -0.03em; line-height: 1.08; }
.site-v2 .display-2 { font-size: clamp(1.8rem, 1.15rem + 1.9vw, 2.45rem) !important; letter-spacing: -0.03em; }
.site-v2 .display-3 { font-size: clamp(1.7rem, 1.1rem + 1.7vw, 2.3rem) !important; letter-spacing: -0.03em; line-height: 1.1; }
.site-v2 .display-4 { font-size: clamp(1.35rem, 1.05rem + 1vw, 1.65rem) !important; }
.site-v2 .display-5 { font-size: clamp(1.1rem, 1rem + 0.5vw, 1.25rem) !important; }
.site-v2 .display-6 { font-size: clamp(1rem, 0.95rem + 0.4vw, 1.15rem) !important; }
.site-v2 .wrapper h2:not([class*="display"]):not([class*="fs-"]) { font-size: clamp(1.3rem, 1.05rem + 0.9vw, 1.55rem); }
.site-v2 .wrapper h4:not([class*="display"]):not([class*="fs-"]) { font-size: 0.95rem; }

.site-v2 .wrapper p { line-height: 1.7; }
.site-v2 .lead { font-size: 0.92rem !important; line-height: 1.6; }
.site-v2 .wrapper .lead:not(.text-white) { color: var(--ink-body); }
.site-v2 .wrapper section p:not([class*="fs-"]):not(.text-white):not(.lead) { max-width: 40rem; }

/* --- eyebrow: the "fs-15 / fs-16 text-uppercase" section kickers ---- */
.site-v2 .fs-15.text-uppercase,
.site-v2 .fs-16.text-uppercase {
    font-family: var(--mono) !important;
    font-size: 0.58rem !important;
    font-weight: 500 !important;
    letter-spacing: 0.15em !important;
    color: var(--accent) !important;
    margin-bottom: 0.85rem !important;
}
.site-v2 .fs-15.text-uppercase::before,
.site-v2 .fs-16.text-uppercase::before {
    content: "";
    display: block;
    width: 1.7rem;
    height: 1px;
    background: currentColor;
    margin: 0 auto 0.75rem;
}
.site-v2 .text-start .fs-15.text-uppercase::before,
.site-v2 .text-lg-start .fs-15.text-uppercase::before,
.site-v2 .fs-16.text-uppercase.text-line::before { margin-left: 0; margin-right: auto; }

/* --- buttons: ink primary, flat; amber text links ------------------ */
.site-v2 .btn-primary {
    background: var(--ink) !important;
    border-color: var(--ink) !important;
    color: #fff !important;
    border-radius: 3px !important;
    box-shadow: none !important;
    font-weight: 500;
    letter-spacing: -0.003em;
}
.site-v2 .btn-primary:hover,
.site-v2 .btn-primary:focus-visible {
    background: #0b0f17 !important;
    border-color: #0b0f17 !important;
    color: #fff !important;
}
.site-v2 .btn-lg { padding: 0.82rem 1.55rem; font-size: 0.95rem; }
.site-v2 .btn-link {
    color: var(--accent) !important;
    font-weight: 500;
    text-decoration: none;
}
.site-v2 .btn-outline-primary,
.site-v2 .btn-outline-dark {
    background: transparent !important;
    border: 1px solid var(--rule-2) !important;
    color: var(--ink) !important;
    border-radius: 3px !important;
    box-shadow: none !important;
    font-weight: 500;
}
.site-v2 .btn-outline-primary:hover,
.site-v2 .btn-outline-primary:focus-visible,
.site-v2 .btn-outline-dark:hover {
    background: var(--ink) !important;
    border-color: var(--ink) !important;
    color: #fff !important;
}
/* white / default buttons that sit on the dark break sections → amber */
.site-v2 .wrapper.bg-dark .btn-white,
.site-v2 .wrapper.bg-navy .btn-white,
.site-v2 .wrapper[class*="gradient-"] .btn-white,
.site-v2 .btn-white {
    background: var(--accent-d) !important;
    border-color: var(--accent-d) !important;
    color: var(--ink-dark) !important;
    border-radius: 3px !important;
    font-weight: 600;
    box-shadow: none !important;
}
.site-v2 .btn-white:hover { background: #ffb457 !important; border-color: #ffb457 !important; }
/* schedule button on a LIGHT hero (btn-default bg-white on paper) → solid ink */
.site-v2 .btn.btn-default.bg-white {
    background: var(--ink) !important;
    border-color: var(--ink) !important;
    color: #fff !important;
    border-radius: 3px !important;
    box-shadow: none !important;
    font-weight: 500;
}
.site-v2 .btn.btn-default.bg-white:hover { background: #0b0f17 !important; border-color: #0b0f17 !important; color: #fff !important; }
/* dark hero: the schedule button (btn-default bg-white) → solid amber CTA */
.site-v2 .wrapper.bg-image:not(.bg-map) .btn-default.bg-white,
.site-v2 .wrapper.bg-dark .btn-default.bg-white {
    background: var(--accent-d) !important;
    border-color: var(--accent-d) !important;
    color: var(--ink-dark) !important;
    border-radius: 3px !important;
    box-shadow: none !important;
    font-weight: 600;
}
.site-v2 .wrapper.bg-image:not(.bg-map) .btn-default.bg-white:hover,
.site-v2 .wrapper.bg-dark .btn-default.bg-white:hover {
    background: #ffb457 !important;
    border-color: #ffb457 !important;
}
/* dark hero: the trial "Start Free Plan" btn-primary → white, so the two CTAs read */
.site-v2 .wrapper.bg-image:not(.bg-map) .btn-primary,
.site-v2 .wrapper.bg-dark .btn-primary {
    background: #fff !important;
    border-color: #fff !important;
    color: var(--ink-dark) !important;
}
.site-v2 .wrapper.bg-image:not(.bg-map) .btn-primary:hover,
.site-v2 .wrapper.bg-dark .btn-primary:hover {
    background: #e7e9ee !important;
    border-color: #e7e9ee !important;
    color: var(--ink-dark) !important;
}

/* --- icon-list bullets: one solid accent check --------------------- */
.site-v2 .icon-list.bullet-bg li i,
.site-v2 .icon-list[class*="bullet-soft-"] i,
.site-v2 .icon-list[class*="bullet-"] i {
    background-color: var(--accent) !important;
    color: #fff !important;
    width: 0.95rem !important;
    height: 0.95rem !important;
    font-size: 0.62rem !important;
    top: 0.28rem !important;
}
.site-v2 .icon-list li { color: var(--ink-body); }

/* ==================================================================
   HEROES
   dark heroes (_header_s1, _header_video: .image-wrapper.bg-image /
   _header_type: .bg-dark.angled) stay dark, restyled to --ink-dark, flat.
   light heroes (_header_s2: .bg-soft-primary / _header_size, _header_case:
   .bg-light) already move to --paper via the section-ground rules above.
   ================================================================== */

/* dark hero grounds — flatten the SVG bg / gradient / angled clip */
.site-v2 .wrapper.image-wrapper.bg-image:not(.bg-map),
.site-v2 .wrapper.bg-dark.angled {
    background: var(--ink-dark) !important;
    background-image: none !important;
    color: rgba(255, 255, 255, 0.72);
}
.site-v2 .wrapper.bg-dark.angled {
    clip-path: none !important;
    -webkit-clip-path: none !important;
    min-height: 0 !important;
    margin-top: 0 !important;
    margin-bottom: 2.5rem !important;
}
.site-v2 .wrapper.bg-dark.angled .mb-n12 { margin-bottom: -2rem !important; }
.site-v2 .wrapper.angled::before,
.site-v2 .wrapper.angled::after {
    display: none !important;
    transform: none !important;
    background: transparent !important;
}
/* the bottom wave divider on _header_s1 / _header_video */
.site-v2 .wrapper.image-wrapper.bg-image:not(.bg-map) > .overflow-hidden,
.site-v2 .wrapper.image-wrapper.bg-image:not(.bg-map) .divider { display: none !important; }

/* hero eyebrow: .lead.fs-20.text-primary (sometimes an <h2>) → mono kicker */
.site-v2 .wrapper .lead.fs-20.text-primary,
.site-v2 .wrapper h2.lead.fs-20.text-primary {
    font-family: var(--mono) !important;
    font-size: 0.6rem !important;
    font-weight: 500 !important;
    letter-spacing: 0.15em !important;
    line-height: 1.4 !important;
    text-transform: uppercase !important;
    color: var(--accent) !important;
    margin-bottom: 1rem !important;
}
.site-v2 .wrapper .lead.fs-20.text-primary::before,
.site-v2 .wrapper h2.lead.fs-20.text-primary::before {
    content: "";
    display: block;
    width: 1.7rem;
    height: 1px;
    background: currentColor;
    margin-bottom: 0.7rem;
}
.site-v2 .text-center .lead.fs-20.text-primary::before { margin-left: auto; margin-right: auto; }
/* amber on the dark grounds for contrast */
.site-v2 .wrapper.image-wrapper.bg-image:not(.bg-map) .lead.fs-20.text-primary,
.site-v2 .wrapper.bg-dark .lead.fs-20.text-primary,
.site-v2 .wrapper.bg-dark h2.lead.fs-20.text-primary { color: var(--accent-d) !important; }

/* hero heading — cap the forced fs-46 / fs-50, tighten */
.site-v2 .wrapper h1.display-1 {
    font-size: clamp(1.75rem, 1.15rem + 1.9vw, 2.35rem) !important;
    letter-spacing: -0.032em;
    line-height: 1.1;
}
.site-v2 .wrapper h1.display-1 .underline-3,
.site-v2 .wrapper h1 .text-warning { color: var(--accent) !important; background-image: none !important; }
.site-v2 .wrapper.image-wrapper.bg-image:not(.bg-map) h1 .underline-3,
.site-v2 .wrapper.bg-dark h1 .underline-3 { color: var(--accent-d) !important; }

/* hero subheader — calm the fs-20 / fs-25 lead under the h1 */
.site-v2 .wrapper h1.display-1 + .lead,
.site-v2 .wrapper .lead.fs-25 { font-size: 0.95rem !important; line-height: 1.6; }

/* hero figures — flatten the shadow-lg / rounded frames */
.site-v2 .wrapper.bg-dark.angled figure.shadow-lg,
.site-v2 .wrapper.bg-light.min-vh-60 .img-mask img,
.site-v2 .wrapper.bg-light.min-vh-60 figure img {
    box-shadow: none !important;
    border: 1px solid var(--rule) !important;
    border-radius: 4px !important;
}
.site-v2 .wrapper.bg-light .shape.bg-gray { background: var(--paper-2) !important; }
.site-v2 .wrapper .img-fluid.rounded.shadow-lg {
    box-shadow: 0 1px 2px rgba(23,28,40,.06), 0 16px 34px -22px rgba(23,28,40,.3) !important;
    border-radius: 4px !important;
}

/* ==================================================================
   CONTENT SECTIONS (shared partials)
   ================================================================== */

/* cards → one flat hairline style everywhere (matches homepage .key-card) */
.site-v2:not(.home-page) .wrapper .card:not(.accordion-item):not(.pricing):not(.plan) {
    background: var(--card) !important;
    border: 1px solid var(--rule) !important;
    border-radius: 3px !important;
    box-shadow: none !important;
    transition: border-color 0.25s ease, box-shadow 0.3s cubic-bezier(0.16, 1, 0.3, 1),
                transform 0.3s cubic-bezier(0.16, 1, 0.3, 1);
}
.site-v2:not(.home-page) .wrapper .card.lift:hover,
.site-v2:not(.home-page) .wrapper .card.hover-card:hover,
.site-v2:not(.home-page) .wrapper a.card:hover {
    transform: none !important;
    border-color: var(--rule-2) !important;
    box-shadow: 0 1px 2px rgba(23,28,40,.05), 0 14px 34px -20px rgba(23,28,40,.22) !important;
}
.site-v2:not(.home-page) .wrapper .card .card-body { color: var(--ink-body); }

/* icon tiles (benefits / point / fit) → small, quiet */
.site-v2:not(.home-page) .icon-bg {
    height: 2.6rem !important;
    width: 2.6rem !important;
    border-radius: 6px !important;
    background: var(--paper-2) !important;
}
.site-v2:not(.home-page) .icon-bg img,
.site-v2:not(.home-page) .icon-bg .benefit-icon { height: 1.4rem !important; width: auto !important; }
.site-v2:not(.home-page) .benefit-title { font-weight: 600; color: var(--ink); }
.site-v2:not(.home-page) .benefit-text { color: var(--ink-body); }

/* _funcs — drop the doodle + blob decoration, frame the screenshots */
.site-v2:not(.home-page) .wrapper > img[src*="doodle"],
.site-v2:not(.home-page) .wrapper .svg-bg,
.site-v2:not(.home-page) .wrapper .shape.rellax,
.site-v2:not(.home-page) .wrapper [class*="shape"][class*="bg-pale-"] { display: none !important; }
.site-v2:not(.home-page) .func_text p { color: var(--ink-body); }
.site-v2:not(.home-page) .func_text + * { margin-top: 0.5rem; }

/* screenshots inside content sections → hairline frame, calm shadow */
.site-v2:not(.home-page) .wrapper figure img,
.site-v2:not(.home-page) .wrapper .rounded.shadow-lg,
.site-v2:not(.home-page) .wrapper .shadow-lg > img,
.site-v2:not(.home-page) .wrapper img.rounded {
    border-radius: 4px !important;
}
.site-v2:not(.home-page) .wrapper figure.shadow-lg,
.site-v2:not(.home-page) .wrapper figure.rounded {
    box-shadow: 0 1px 2px rgba(23,28,40,.06), 0 18px 40px -24px rgba(23,28,40,.28) !important;
    border-radius: 4px !important;
}

/* _faq — flat hairline accordion */
.site-v2 .accordion-wrapper .accordion-item {
    border: 1px solid var(--rule) !important;
    border-radius: 3px !important;
    box-shadow: none !important;
    margin-bottom: 0.6rem;
    background: var(--card) !important;
}
.site-v2 .accordion-wrapper .card-header { background: transparent !important; border: 0 !important; }
.site-v2 .accordion-wrapper .card-header button {
    color: var(--ink) !important;
    font-weight: 600;
    font-size: 0.95rem;
    padding: 1rem 1.15rem;
}
.site-v2 .accordion-wrapper .card-header button[aria-expanded="true"],
.site-v2 .accordion-wrapper .card-header button:not(.collapsed) { color: var(--accent) !important; }
.site-v2 .accordion-wrapper .card-body { color: var(--ink-body); padding: 0 1.15rem 1.15rem; }
.site-v2 .accordion-wrapper .card-body p { margin-bottom: 0; }

/* _fact_1_hour — amber "ONE hour" band → deep-ink break */
.site-v2:not(.home-page) .card.bg-soft-navy {
    background: var(--ink-dark) !important;
    border: 0 !important;
    border-radius: 4px !important;
}
.site-v2:not(.home-page) .card.bg-soft-navy .text-dark { color: #fff !important; }
.site-v2:not(.home-page) .card.bg-soft-navy .text-warning { color: var(--accent-d) !important; }
.site-v2:not(.home-page) .card.bg-soft-navy .display-5 span:last-child { color: rgba(255,255,255,0.7) !important; }

/* _guru — kill the map background, flatten the card */
.site-v2:not(.home-page) .wrapper.bg-map { background-image: none !important; background-color: var(--paper) !important; }
.site-v2:not(.home-page) .wrapper.bg-map .card { box-shadow: none !important; border: 1px solid var(--rule) !important; }
.site-v2:not(.home-page) .wrapper.bg-map .text-info { color: var(--ink) !important; }

/* _customers — flat quote cards */
.site-v2:not(.home-page) .wrapper blockquote p { color: var(--ink); font-family: THICCCBOI, sans-serif; letter-spacing: -0.01em; }
.site-v2:not(.home-page) .wrapper blockquote .blockquote-details .info p { color: var(--ink-mute) !important; font-family: var(--mono); font-size: 0.7rem; text-transform: uppercase; letter-spacing: 0.06em; }

/* process-wrapper (_benefits_s2) connector line → hairline */
.site-v2:not(.home-page) .process-wrapper [class*="col-"]::after { background: var(--rule) !important; }

/* ==================================================================
   PRICING  (price.blade.php, _plan_price, _recommend_price, _save)
   ================================================================== */
.site-v2:not(.home-page) .pricing.card {
    background: var(--card) !important;
    border: 1px solid var(--rule) !important;
    border-radius: 3px !important;
    box-shadow: none !important;
}
/* the highlighted / "recommended" plan (inline dark bg or .text-inverse / .bg-navy) */
.site-v2:not(.home-page) .pricing.card.text-inverse,
.site-v2:not(.home-page) .pricing.card.bg-navy,
.site-v2:not(.home-page) .pricing.card[style*="background"] {
    background: var(--ink-dark) !important;
    border-color: var(--ink-dark) !important;
}
.site-v2:not(.home-page) .pricing.card.text-inverse .card-title,
.site-v2:not(.home-page) .pricing.card.text-inverse .price-currency,
.site-v2:not(.home-page) .pricing.card.text-inverse .price-value,
.site-v2:not(.home-page) .pricing.card.text-inverse .price-duration,
.site-v2:not(.home-page) .pricing.card.text-inverse .price-decimal { color: #fff !important; }
.site-v2:not(.home-page) .pricing.card .price-currency,
.site-v2:not(.home-page) .pricing.card .price-value { color: var(--ink) !important; }
.site-v2:not(.home-page) .pricing.card .badge { background: var(--accent) !important; color: #fff !important; }

/* comparison table — hairline, quiet stripes, ink headers */
.site-v2:not(.home-page) .table-price { --bs-table-striped-bg: rgba(23, 28, 40, 0.025); }
.site-v2:not(.home-page) .table-price thead th { color: var(--ink) !important; border-bottom: 1px solid var(--rule-2) !important; }
.site-v2:not(.home-page) .table-price td,
.site-v2:not(.home-page) .table-price th { border-color: var(--rule) !important; }
.site-v2:not(.home-page) .table-price th a { color: var(--accent) !important; }

/* the sticky compare header shadow */
.site-v2:not(.home-page) .sticky { box-shadow: 0 1px 0 var(--rule-2) !important; }

/* photo card near the bottom of /price */
.site-v2:not(.home-page) .card.image-wrapper.bg-image.bg-overlay { border-radius: 4px !important; }

/* --- de-round the incidental bits --------------------------------- */
.site-v2 .card:not(.accordion-item),
.site-v2 .badge { border-radius: 3px !important; }

/* ==================================================================
   MOTION — feedback-tier micro-interactions. The hero video is the
   site's one authored focal moment; everything below just acknowledges
   a hover/press so the flat hairline system doesn't feel inert.
   Confident deceleration, no bounce. Killed entirely under
   prefers-reduced-motion (primitives block, top of file).
   ================================================================== */

.site-v2 .btn-primary,
.site-v2 .btn-outline-primary,
.site-v2 .btn-outline-dark,
.site-v2 .btn-white,
.site-v2 .btn.btn-default.bg-white {
    transition: transform 0.2s cubic-bezier(0.16, 1, 0.3, 1),
                background-color 0.2s ease, border-color 0.2s ease, box-shadow 0.2s ease;
}
.site-v2 .btn-primary:hover,
.site-v2 .btn-outline-primary:hover,
.site-v2 .btn-outline-dark:hover,
.site-v2 .btn-white:hover,
.site-v2 .btn.btn-default.bg-white:hover {
    transform: translateY(-1px);
}
.site-v2 .btn-primary:active,
.site-v2 .btn-outline-primary:active,
.site-v2 .btn-outline-dark:active,
.site-v2 .btn-white:active,
.site-v2 .btn.btn-default.bg-white:active {
    transform: translateY(0);
    transition-duration: 0.08s;
}

/* every hairline card lifts on hover, not just the homepage's .key-card
   (the transition itself lives on the base rule up in CONTENT SECTIONS) */
.site-v2:not(.home-page) .wrapper a.card:hover,
.site-v2:not(.home-page) .wrapper .card.lift:hover,
.site-v2:not(.home-page) .wrapper .card.hover-card:hover {
    transform: translateY(-3px);
}

/* underlined text links sweep in from the left on hover, everywhere */
.site-v2 .feat-more-link,
.site-v2 .wrapper a.btn-link {
    position: relative;
    display: inline-block;
}
.site-v2 .feat-more-link::after {
    content: "";
    position: absolute;
    left: 0; bottom: -2px;
    width: 100%; height: 1px;
    background: currentColor;
    transform: scaleX(0);
    transform-origin: 100% 50%;
    transition: transform 0.3s cubic-bezier(0.16, 1, 0.3, 1);
}
.site-v2 .feat-more-link:hover::after {
    transform: scaleX(1);
    transform-origin: 0 50%;
}

/* nav links + eyebrow hairline draw in on hover, a small nod to the
   engineering-document motif rather than a generic underline */
.site-v2 .fs-15.text-uppercase::before,
.site-v2 .fs-16.text-uppercase::before {
    transition: width 0.4s cubic-bezier(0.16, 1, 0.3, 1);
}

/* --- reduced motion ---------------------------------------------- */
@media (prefers-reduced-motion: reduce) {
    .site-v2 * { transition-duration: 0.01ms !important; animation-duration: 0.01ms !important; }
}
