    :root {
      --ink: #0f172a;
      --muted: #5b6472;
      --line: #e5e7eb;
      --soft: #f5f6f8;
      --brand: #0b5ed7;
      --ease: cubic-bezier(.22, .61, .36, 1);
      --h1: 40px;
      --h2: 32px;
      --hero-h: 700px;
      --hero-pb: 360px;
      --bs-primary: #0b5ed7;
      --bs-primary-rgb: 11, 94, 215;
      --bs-dark-rgb: 15, 23, 42;
      --bs-light-rgb: 245, 246, 248;
      --bs-body-font-family: "Jost", sans-serif;
      --bs-body-color: #0f172a;
      --bs-secondary-color: #5b6472;
      --bs-border-color: #e5e7eb;
      --bs-border-radius-xl: 20px;
      --bs-border-radius-xxl: 24px;
    }

    @media (max-width: 991.98px) {
      :root {
        --h1: 40px;
        --h2: 28px;
        --hero-h: 600px;
        --hero-pb: 260px
      }
    }

    @media (max-width: 575.98px) {
      :root {
        --h1: 30px;
        --h2: 24px;
        --hero-h: 560px;
        --hero-pb: 180px
      }
    }

    /* ---------- base ---------- */
    html {
      scroll-padding-top: 90px
    }

    body {
      -webkit-font-smoothing: antialiased;
      overflow-x: clip
    }

    a {
      color: inherit;
      text-decoration: none
    }

    :focus-visible {
      outline: 2px solid var(--brand);
      outline-offset: 3px;
      border-radius: 6px
    }

    .container {
      max-width: 1328px
    }

    section {
      padding-block: 50px
    }

    h1,
    h2,
    h3,
    h4,
    h5,
    h6,
    p {
      margin: 0
    }

    h1,
    h2,
    h3 {
      font-weight: 600;
      letter-spacing: -.02em;
      line-height: 1.12
    }

    h1 {
      font-size: var(--h1)
    }

    h2 {
      font-size: var(--h2)
    }

    h3 {
      font-size: 18px;
      line-height: 1.3;
      letter-spacing: -.01em
    }

    .head {
      margin-bottom: 40px
    }

    .lead {
      color: var(--muted);
      font-size: 18px;
      font-weight: 400
    }

    .ttl {
      font-size: 14px;
      font-weight: 600;
      letter-spacing: .06em;
      text-transform: uppercase
    }

    .zoom img {
      transition: transform .8s var(--ease)
    }

    .zoom:hover img {
      transform: scale(1.05)
    }

    /* ---------- buttons ---------- */
    .btn {
      --bs-btn-padding-x: 28px;
      --bs-btn-padding-y: 13px;
      --bs-btn-font-size: 15px;
      --bs-btn-font-weight: 500;
      --bs-btn-border-width: 0;
      --bs-btn-border-radius: 50rem;
      --bs-btn-hover-bg: var(--ink);
      --bs-btn-hover-color: #fff;
      --bs-btn-hover-border-color: var(--ink);
      --bs-btn-active-bg: var(--ink);
      --bs-btn-active-color: #fff;
      text-transform: uppercase;
      transition: transform .3s var(--ease), box-shadow .3s var(--ease), background .3s
    }

    .btn:hover {
      transform: translateY(-2px);
      box-shadow: 0 10px 24px rgba(36, 36, 36, .158)
    }

    .btn-primary {
      --bs-btn-bg: var(--brand);
      --bs-btn-color: #fff
    }

    .btn-light {
      --bs-btn-bg: #fff;
      --bs-btn-color: var(--ink)
    }

    /* ---------- top bar ---------- */
    .top {
      background: #333;
      color: #fff;
      font-size: 14px;
      border-bottom: 1px solid var(--line)
    }

    .top .container {
      height: 44px;
      line-height: 1
    }

    .top a {
      transition: color .2s
    }

    .top a:hover {
      color: var(--ink)
    }

    .soc {
      margin-left: -7px
    }

    .soc a {
      display: grid;
      place-items: center;
      width: 32px;
      height: 32px;
      border-radius: 50%;
      transition: background .3s
    }

    .soc a:hover {
      background: rgba(15, 23, 42, .07)
    }

    .soc svg {
      width: 21px;
      height: 21px;
      fill: currentColor
    }

    /* ---------- navbar + mega menu ---------- */
    header {
      background: rgba(255, 255, 255, .92);
      backdrop-filter: blur(12px);
      transition: box-shadow .4s
    }

    header.s {
      box-shadow: 0 8px 24px rgba(15, 23, 42, .08)
    }

    .navbar {
      --bs-navbar-padding-y: 8px;
      --bs-navbar-color: var(--ink);
      --bs-navbar-hover-color: var(--ink);
      --bs-navbar-active-color: var(--ink)
    }

    .navbar-brand img,
    footer img {
      height: 60px;
      width: auto
    }

    .navbar-nav {
      --bs-nav-link-padding-y: 10px;
      --bs-navbar-nav-link-padding-x: 16px;
      --bs-nav-link-font-size: 15px;
      --bs-nav-link-font-weight: 500
    }

    .nav-link {
      display: flex;
      align-items: center;
      gap: 8px;
      text-transform: uppercase;
      border-radius: 50rem;
      transition: background .3s
    }

    .nav-link:hover,
    .dropdown:hover>.nav-link {
      background: var(--soft)
    }

    .nav-link.cta {
      background: var(--brand);
      color: #fff;
      justify-content: center;
      transition: background .3s, transform .3s var(--ease)
    }

    .nav-link.cta:hover {
      background: #0a54c0;
      color: #fff;
      transform: translateY(-1px)
    }

    @media (min-width: 992px) {
      .nav-link.cta {
        margin-left: 8px
      }
    }

    .dropdown-toggle {
      justify-content: space-between
    }

    @media (min-width: 992px) {
      .dropdown-toggle {
        justify-content: flex-start
      }
    }

    .dropdown-toggle::after {
      width: 6px;
      height: 6px;
      margin: 0;
      vertical-align: 0;
      border: solid currentColor;
      border-width: 0 1.5px 1.5px 0;
      transform: rotate(45deg) translateY(-2px);
      transition: transform .3s
    }

    .dropdown-toggle.show::after,
    .dropdown:hover>.dropdown-toggle::after {
      transform: rotate(225deg) translateY(-2px)
    }

    .mega {
      --bs-dropdown-spacer: 0;
      padding: 0;
      border: 0;
      border-radius: 0;
      border-bottom: 1px solid var(--line);
      box-shadow: 0 24px 40px rgba(15, 23, 42, .08)
    }

    .mega .container {
      padding-block: 8px 12px
    }

    .mega .row {
      --bs-gutter-x: 24px;
      --bs-gutter-y: 28px
    }

    .mega h4 {
      padding-bottom: 10px;
      margin-bottom: 6px;
      border-bottom: 1px solid var(--line)
    }

    .mlink {
      display: block;
      padding: 7px 0;
      font-size: 15.5px;
      color: var(--muted);
      transition: color .2s, transform .3s var(--ease)
    }

    .mlink:hover {
      color: var(--brand);
      transform: translateX(4px)
    }

    @media (max-width: 991.98px) {
      .mega {
        box-shadow: none;
        border: 0
      }

      .navbar-collapse {
        max-height: calc(100dvh - 76px);
        overflow-x: hidden;
        overflow-y: auto;
        padding-bottom: 16px
      }

      .mega .container {
        padding-inline: 12px
      }

      .mega .row {
        --bs-gutter-x: 0;
        --bs-gutter-y: 16px
      }

      .mega .row.g-3 {
        --bs-gutter-x: 1rem;
        --bs-gutter-y: 1rem
      }
    }

    @media (min-width: 992px) {
      .mega {
        display: block;
        opacity: 0;
        visibility: hidden;
        transform: translateY(8px);
        transition: opacity .3s var(--ease), transform .3s var(--ease), visibility 0s .3s
      }

      .dropdown:hover .mega,
      .dropdown:focus-within .mega,
      .mega.show {
        opacity: 1;
        visibility: visible;
        transform: none;
        transition-delay: 0s
      }

      .mega .container {
        padding-block: 32px 40px
      }
    }

    .navcard {
      min-height: 150px;
      padding: 60px 24px 24px;
      transition: transform .4s var(--ease), box-shadow .4s var(--ease)
    }

    @media (min-width: 992px) {
      .navcard {
        height: 260px !important;
        padding-top: 24px
      }
    }

    .navcard::before {
      content: "";
      position: absolute;
      inset: 0;
      background: var(--g);
      transition: transform .6s var(--ease)
    }

    .navcard::after {
      content: "";
      position: absolute;
      inset: 0;
      background: linear-gradient(to top, rgba(0, 0, 0, .6), transparent 65%)
    }

    .navcard>* {
      position: relative;
      z-index: 1
    }

    .navcard h3 {
      font-size: 22px;
      font-weight: 400
    }

    .navcard p {
      font-size: 16px;
      color: rgba(255, 255, 255, .85);
      margin-top: 4px;
      max-width: calc(100% - 36px)
    }

    .navcard:hover {
      transform: translateY(-4px);
      box-shadow: 0 14px 30px rgba(0, 0, 0, .2)
    }

    .navcard:hover::before {
      transform: scale(1.07)
    }

    .tag {
      padding: 5px 14px;
      font-size: 13px;
      font-weight: 500
    }

    .ic {
      top: 56px;
      left: 50%;
      translate: -50% 0;
      width: 72px;
      height: 72px;
      fill: none;
      stroke: #fff;
      stroke-width: 1.2;
      stroke-linecap: round;
      stroke-linejoin: round;
      opacity: .85
    }

    .ar {
      right: 24px;
      bottom: 28px;
      width: 18px;
      height: 18px;
      fill: none;
      stroke: #fff;
      stroke-width: 1.6;
      stroke-linecap: round;
      stroke-linejoin: round;
      transition: transform .3s var(--ease)
    }

    .navcard:hover .ar {
      transform: translateX(5px)
    }

    /* ---------- hero (Swiper fade) ---------- */
    .hero {
      height: var(--hero-h);
      background: #0b1220;
      padding: 0
    }

    .hero .swiper {
      height: 100%
    }

    .hero .swiper-slide::after {
      content: "";
      position: absolute;
      inset: 0;
      background: linear-gradient(to bottom, rgba(8, 13, 25, 0.432) 0%, rgba(8, 13, 25, .3) 30%, rgba(8, 13, 25, 0.356) 60%)
    }

    .swiper-slide-active .slide-bg {
      animation: zoom 8s var(--ease) both
    }

    .hero-in {
      padding-bottom: var(--hero-pb)
    }

    .hero h1 {
      max-width: 22ch;
      margin-bottom: 10px;
      text-shadow: 2px 2px 4px rgba(0, 0, 0, .4)
    }

    .hero p {
      max-width: 600px;
      margin-bottom: 20px;
      font-size: 18px;
      color: rgba(255, 255, 255, .85);
      text-shadow: 2px 2px 4px rgba(0, 0, 0, .4)
    }

    .swiper-slide-active .hero-in>* {
      animation: up .9s var(--ease) backwards
    }

    .swiper-slide-active .hero-in p {
      animation-delay: .12s
    }

    .swiper-slide-active .hero-in .btn {
      animation-delay: .24s
    }

    .ctl {
      bottom: 36px
    }

    .dots,
    .arr {
      gap: 10px
    }

    .dot {
      position: relative;
      width: 56px;
      height: 3px;
      padding: 0;
      border: 0;
      border-radius: 2px;
      overflow: hidden;
      background: rgba(255, 255, 255, .3)
    }

    .dot::after {
      content: "";
      position: absolute;
      inset: 0;
      background: #fff;
      transform: scaleX(0);
      transform-origin: left
    }

    .dot.on::after {
      animation: fill 6.5s linear forwards
    }

    .arr button {
      width: 48px;
      height: 48px;
      border: 1px solid rgba(255, 255, 255, .4);
      background: rgba(255, 255, 255, .08);
      color: #fff;
      backdrop-filter: blur(4px);
      transition: background .3s, transform .3s var(--ease)
    }

    .arr button:hover,
    .arr button.on {
      color: var(--ink);
      background: #fff;
      transform: scale(1.06)
    }

    @media (max-width: 575.98px) {
      .dots {
        gap: 6px
      }

      .dot {
        width: 24px
      }

      .arr {
        gap: 8px
      }

      .arr button {
        width: 40px;
        height: 40px
      }
    }

    /* ---------- brands marquee (Swiper, linear autoplay) ---------- */
    .brands {
      padding-block: 20px;
      border-bottom: 1px solid var(--line)
    }

    .brands .swiper {
      -webkit-mask-image: linear-gradient(90deg, transparent, #000 10%, #000 90%, transparent);
      mask-image: linear-gradient(90deg, transparent, #000 10%, #000 90%, transparent)
    }

    .brands .swiper-wrapper {
      transition-timing-function: linear
    }

    .brands .swiper-slide {
      width: auto;
      padding-right: 80px
    }

    .brands img {
      width: 120px;
      height: auto;
      opacity: .8;
      transition: opacity .4s
    }

    .brands img:hover {
      opacity: 1
    }

    /* ---------- about strip (Swiper) ---------- */
    .mid {
      max-width: 850px;
      margin: clamp(48px, 5vw, 72px) auto 32px
    }

    .strip .swiper-slide {
      height: auto
    }

    .strip .swiper-slide:nth-child(odd) {
      margin-top: 32px
    }

    /* ---------- products (3D tilt) ---------- */
    .pcard {
      min-height: 300px;
      padding: 32px;
      transform-style: preserve-3d;
      transform: perspective(1100px) rotateX(var(--rx, 0deg)) rotateY(var(--ry, 0deg));
      translate: 0 0;
      transition: translate .5s var(--ease), box-shadow .5s var(--ease), border-color .3s
    }

    @media (max-width: 575.98px) {
      .pcard {
        padding: 24px
      }
    }

    .pcard:hover {
      translate: 0 -6px;
      border-color: #d3d8e0;
      box-shadow: 0 28px 48px -14px rgba(15, 35, 70, .22)
    }

    .pcard::before {
      content: "";
      position: absolute;
      inset: 0;
      border-radius: inherit;
      pointer-events: none;
      opacity: 0;
      background: radial-gradient(420px circle at var(--mx, 50%) var(--my, 50%), rgba(11, 94, 215, .07), transparent 60%);
      transition: opacity .4s
    }

    .pcard:hover::before {
      opacity: 1
    }

    .pcard p {
      font-size: 17px
    }

    .pm {
      transform-style: preserve-3d;
      pointer-events: none
    }

    .pm img {
      max-height: 240px;
      width: auto;
      object-fit: contain;
      filter: drop-shadow(0 16px 18px rgba(15, 35, 70, .18));
      transform: translateZ(56px);
      transition: transform .6s var(--ease)
    }

    .pcard.tall .pm img {
      max-height: 380px
    }

    .pcard:hover .pm img {
      transform: translateZ(80px) scale(1.04)
    }

    .go {
      width: 44px;
      height: 44px;
      transform: translateZ(40px);
      transition: background .3s, transform .4s var(--ease)
    }

    .pcard:hover .go {
      background: var(--brand) !important;
      transform: translateZ(40px) translateX(4px)
    }

    .go svg {
      width: 18px;
      height: 18px;
      fill: none;
      stroke: currentColor;
      stroke-width: 2;
      stroke-linecap: round;
      stroke-linejoin: round
    }

    /* ---------- feature band ---------- */
    #cta-section {
      margin-block: 50px;
      max-width: 1240px;
      min-height: 500px;
      padding: 40px;
      background-image: url('../images/cta.png');
      background-position: right center;
      background-repeat: no-repeat;
      background-size: cover;
    }

    @media (max-width: 575.98px) {
      #cta-section {
        padding: 24px 20px
      }
    }

    .cta-box {
      color: var(--ink);
      background: #f4f8fd;
      border-radius: 20px;
      padding: 20px 25px
    }

    .cta-box h6 {
      font-size: 20px;
    }

    .cta-box svg {
      background: var(--brand);
      color: #fff;
      padding: 10px;
      border-radius: 50%
    }

    /* ---------- footer ---------- */
    footer {
      padding: 72px 0 32px
    }

    footer img {
      margin-bottom: 20px
    }

    footer p {
      max-width: 40ch;
      font-size: 16px;
      color: #cbd5e1
    }

    footer h4 {
      margin: 0 0 16px;
      color: #94a3b8
    }

    footer .f-addr {
      margin: 28px 0 12px
    }

    footer li a {
      display: inline-block;
      padding: 5px 0;
      font-size: 17px;
      color: #e2e8f0;
      transition: color .2s, transform .3s var(--ease)
    }

    footer li a:hover {
      color: #fff;
      transform: translateX(4px)
    }

    .fb {
      margin-top: 56px;
      font-size: 16px;
      border-radius: 15px;
      background: #f4f8fd1f;
      color: #eaeaeb
    }

    .soc2 {
      gap: 8px 20px
    }

    .soc2 a {
      transition: color .2s
    }

    .soc2 a:hover {
      color: #fff
    }

    /* ---------- motion ---------- */
    .js [data-r] {
      opacity: 0;
      transform: translateY(16px);
      transition: opacity .8s var(--ease) var(--d, 0s), transform .8s var(--ease) var(--d, 0s)
    }

    .js [data-r].in {
      opacity: 1;
      transform: none
    }

    @keyframes up {
      from {
        opacity: 0;
        transform: translateY(18px)
      }
    }

    @keyframes zoom {
      from {
        transform: scale(1.06)
      }
    }

    @keyframes fill {
      to {
        transform: scaleX(1)
      }
    }

    @media (prefers-reduced-motion: reduce) {

      *,
      ::before,
      ::after {
        animation: none !important;
        transition-duration: .01ms !important
      }

      .js [data-r] {
        opacity: 1;
        transform: none
      }
    }