/* =================================================================
   PRAGATI GAS SYSTEMS PVT LTD — style.css
   Sections: tokens · base · topbar · header · hero · marquee · about
   · services · range · why · process · gallery carousels · faq
   · testimonials · contact · footer · floating buttons · responsive
================================================================= */

/* =================================================================
   THEME TOKENS  — change these to re-skin the whole site
================================================================= */
:root {
   /* Brand colours */
   --color-primary: #4698D0;
   /* clean LPG-flame blue  */
   --color-primary-d: #2f78ad;
   /* darker blue (hover)   */
   --color-accent: #BC4B43;
   /* heat / flame red      */
   --color-accent-d: #9c3b34;
   /* darker red (hover)    */

   /* Neutrals */
   --ink: #18242e;
   /* primary text  */
   --ink-soft: #4b5a66;
   /* body text     */
   --line: #e6ecf1;
   /* hairlines     */
   --white: #ffffff;
   --dark: #102733;
   /* dark sections */
   --dark-2: #0b1d27;

   /* Section tints (so no two adjacent sections are flat-same) */
   --tint-blue: #f3f9fd;
   --tint-warm: #fdf5f4;
   --tint-grey: #f6f9fb;

   /* Type */
   --font-head: 'Sora', sans-serif;
   --font-body: 'Inter', sans-serif;

   /* Shape & motion */
   --radius: 16px;
   --radius-sm: 10px;
   --shadow: 0 18px 50px -22px rgba(16, 39, 51, .30);
   --shadow-sm: 0 10px 30px -16px rgba(16, 39, 51, .28);
   --ease: cubic-bezier(.22, .61, .36, 1);
   --container: 1180px;
}

html, body {
  max-width: 100%;
  overflow-x: hidden;
}

* {
  box-sizing: border-box;
}

.container,
.container-fluid {
  overflow: hidden;
}

img,
video {
  max-width: 100%;
  height: auto;
}

/* =================================================================
   BASE
================================================================= */
* {
   box-sizing: border-box;
}

html {
   scroll-behavior: smooth;
   scroll-padding-top: 96px;
}

body {
   margin: 0;
   font-family: var(--font-body);
   color: var(--ink-soft);
   background: var(--white);
   line-height: 1.7;
   overflow-x: hidden;
   -webkit-font-smoothing: antialiased;
}

h1,
h2,
h3,
h4 {
   font-family: var(--font-head);
   color: var(--ink);
   line-height: 1.18;
   margin: 0;
   font-weight: 700;
}

p {
   margin: 0 0 1rem;
}

a {
   text-decoration: none;
   color: inherit;
}

img {
   max-width: 100%;
   display: block;
}

ul {
   margin: 0;
   padding: 0;
   list-style: none;
}

.container {
   max-width: var(--container);
}

.section {
   padding: 96px 0;
   position: relative;
}

.section__head {
   max-width: 680px;
   margin: 0 auto 56px;
   text-align: center;
}

.section__title {
   font-size: clamp(1.7rem, 3.4vw, 2.5rem);
   font-weight: 800;
   letter-spacing: -.02em;
   margin-bottom: 14px;
}

.section__lead {
   font-size: 1.05rem;
   color: var(--ink-soft);
   margin: 0;
}

.section__lead.mx-auto {
   max-width: 600px;
}

.eyebrow {
   display: inline-block;
   font-family: var(--font-head);
   font-weight: 600;
   font-size: .74rem;
   letter-spacing: .18em;
   text-transform: uppercase;
   color: var(--color-accent);
   margin-bottom: 14px;
   padding-left: 30px;
   position: relative;
}

.eyebrow::before {
   content: "";
   position: absolute;
   left: 0;
   top: 50%;
   width: 20px;
   height: 2px;
   background: var(--color-accent);
   transform: translateY(-50%);
}

.eyebrow--light {
   color: #9ed2f1;
}

.eyebrow--light::before {
   background: #9ed2f1;
}

.section__title--light {
   color: var(--white);
}

.section__lead--light {
   color: rgba(255, 255, 255, .78);
}

/* ---------- Buttons (3 distinct styles) ---------- */
.btn-quote {
   display: inline-flex;
   align-items: center;
   justify-content: center;
   gap: 10px;
   background: var(--color-accent);
   color: #fff;
   font-family: var(--font-head);
   font-weight: 600;
   font-size: .95rem;
   padding: 14px 28px;
   border: none;
   border-radius: 50px;
   cursor: pointer;
   position: relative;
   overflow: hidden;
   transition: transform .35s var(--ease), box-shadow .35s var(--ease);
   box-shadow: 0 12px 24px -10px rgba(188, 75, 67, .6);
}

.btn-quote::after {
   content: "";
   position: absolute;
   inset: 0;
   background: var(--color-accent-d);
   transform: translateX(-101%);
   transition: transform .4s var(--ease);
   z-index: -1;
}

.btn-quote:hover {
   transform: translateY(-3px);
   color: #fff;
}

.btn-quote:hover::after {
   transform: translateX(0);
}

.btn-quote--light {
   background: var(--white);
   color: var(--color-accent);
   box-shadow: none;
}

.btn-quote--light::after {
   background: #eef5fa;
}

.btn-quote--light:hover {
   color: var(--color-accent-d);
}

.btn-ghost {
   display: inline-flex;
   align-items: center;
   gap: 10px;
   background: transparent;
   color: #fff;
   font-family: var(--font-head);
   font-weight: 600;
   font-size: .95rem;
   padding: 13px 26px;
   border: 1.5px solid rgba(255, 255, 255, .55);
   border-radius: 50px;
   transition: .35s var(--ease);
}

.btn-ghost:hover {
   background: #fff;
   color: var(--ink);
   border-color: #fff;
   transform: translateY(-3px);
}

.btn-ghost--dark {
   color: var(--color-primary);
   border-color: var(--color-primary);
}

.btn-ghost--dark:hover {
   background: var(--color-primary);
   color: #fff;
}

.btn-ghost .ic {
   width: 18px;
   height: 18px;
   fill: currentColor;
}

.ic {
   width: 16px;
   height: 16px;
   fill: currentColor;
   flex: none;
}

/* =================================================================
   TOP BAR
================================================================= */
.topbar {
   background: var(--dark);
   color: rgba(255, 255, 255, .8);
   font-size: .85rem;
}

.topbar__inner {
   display: flex;
   justify-content: space-between;
   align-items: center;
   min-height: 44px;
   gap: 16px;
}

.topbar__contacts {
   display: flex;
   align-items: center;
   gap: 22px;
   flex-wrap: wrap;
}

.topbar__link {
   display: inline-flex;
   align-items: center;
   gap: 8px;
   color: rgba(255, 255, 255, .8);
   transition: color .25s;
}

.topbar__link:hover {
   color: #fff;
}

.topbar__link .ic {
   fill: var(--color-primary);
}

.topbar__hours .ic {
   fill: var(--color-accent);
}

.topbar__social {
   display: flex;
   gap: 8px;
}

.topbar__soc {
   width: 30px;
   height: 30px;
   display: grid;
   place-items: center;
   border-radius: 8px;
   background: rgba(255, 255, 255, .07);
   transition: .3s var(--ease);
}

.topbar__soc svg {
   width: 15px;
   height: 15px;
   fill: rgba(255, 255, 255, .75);
   transition: .3s;
}

.topbar__soc:hover {
   background: var(--color-primary);
   transform: translateY(-2px);
}

.topbar__soc:hover svg {
   fill: #fff;
}

/* =================================================================
   STICKY HEADER
================================================================= */
.header {
   position: sticky;
   top: 0;
   z-index: 1000;
   background: rgba(255, 255, 255, .92);
   backdrop-filter: blur(12px);
   border-bottom: 1px solid var(--line);
   transition: box-shadow .3s, padding .3s;
}

.header.scrolled {
   box-shadow: var(--shadow-sm);
}

.header .navbar {
   padding: 14px 0;
   transition: padding .3s;
}

.header.scrolled .navbar {
   padding: 8px 0;
}

.brand {
   display: inline-flex;
   align-items: center;
   gap: 12px;
}

.brand__mark {
   width: 44px;
   height: 44px;
   display: grid;
   place-items: center;
   border-radius: 12px;
   background: linear-gradient(135deg, var(--color-primary), var(--color-primary-d));
   box-shadow: var(--shadow-sm);
}

.brand__mark svg {
   width: 24px;
   height: 24px;
   fill: #fff;
}

.brand__text {
   font-family: var(--font-head);
   font-weight: 600;
   font-size: 1.1rem;
   color: var(--ink);
   line-height: 1.1;
}

.brand__text strong {
   color: var(--color-primary);
   font-weight: 800;
}

.brand__text small {
   display: block;
   font-size: .68rem;
   letter-spacing: .06em;
   color: var(--ink-soft);
   font-weight: 500;
}

.navmenu {
   display: flex;
   align-items: center;
   gap: 28px;
   margin-left: auto;
}

.navmenu__list {
   display: flex;
   gap: 6px;
}

.navmenu__link {
   font-family: var(--font-head);
   font-weight: 500;
   font-size: .93rem;
   color: var(--ink);
   padding: 8px 12px;
   border-radius: 8px;
   position: relative;
   transition: color .25s;
}

.navmenu__link::after {
   content: "";
   position: absolute;
   left: 12px;
   right: 12px;
   bottom: 3px;
   height: 2px;
   background: var(--color-accent);
   transform: scaleX(0);
   transform-origin: left;
   transition: transform .3s var(--ease);
}

.navmenu__link:hover,
.navmenu__link.active {
   color: var(--color-primary);
}

.navmenu__link:hover::after,
.navmenu__link.active::after {
   transform: scaleX(1);
}

.navmenu__cta {
   padding: 11px 22px;
   font-size: .9rem;
}

/* hamburger */
.navbar-toggler {
   border: none;
   background: transparent;
   width: 42px;
   height: 42px;
   padding: 0;
   display: none;
   flex-direction: column;
   gap: 5px;
   justify-content: center;
   align-items: center;
   cursor: pointer;
}

.navbar-toggler__bar {
   width: 24px;
   height: 2px;
   background: var(--ink);
   border-radius: 2px;
   transition: .3s var(--ease);
}

.navbar-toggler.open .navbar-toggler__bar:nth-child(1) {
   transform: translateY(7px) rotate(45deg);
}

.navbar-toggler.open .navbar-toggler__bar:nth-child(2) {
   opacity: 0;
}

.navbar-toggler.open .navbar-toggler__bar:nth-child(3) {
   transform: translateY(-7px) rotate(-45deg);
}

/* =================================================================
   HERO CAROUSEL
================================================================= */
.hero {
   position: relative;
   min-height: 88vh;
   overflow: hidden;
   background: var(--dark);
}

.hero__track {
   position: relative;
   height: 88vh;
   min-height: 560px;
}

.hero__slide {
   position: absolute;
   inset: 0;
   background-size: cover;
   background-position: center;
   display: flex;
   align-items: center;
   opacity: 0;
   visibility: hidden;
   transform: scale(1.06);
   transition: opacity 1s var(--ease), transform 6s linear, visibility 1s;
}

.hero__slide.is-active {
   opacity: 1;
   visibility: visible;
   transform: scale(1);
}

.hero__overlay {
   position: absolute;
   inset: 0;
   background: linear-gradient(105deg, rgba(0, 0, 0, 0.92) 0%, rgba(0, 0, 0, 0.72) 45%, rgba(0, 0, 0, 0.3) 100%);
}

.hero__content {
   position: relative;
   max-width: 660px;
   color: #fff;
   padding: 40px 0;
}

.hero__eyebrow {
   display: inline-block;
   font-family: var(--font-head);
   font-weight: 600;
   font-size: .78rem;
   letter-spacing: .16em;
   text-transform: uppercase;
   color: #9ed2f1;
   padding: 7px 16px;
   border: 1px solid rgba(158, 210, 241, .4);
   border-radius: 50px;
   margin-bottom: 22px;
}

.hero__title {
   color: #fff;
   font-size: clamp(2rem, 5vw, 3.4rem);
   font-weight: 800;
   letter-spacing: -.025em;
   margin-bottom: 20px;
}

.hero__lead {
   font-size: 1.12rem;
   color: rgba(255, 255, 255, .86);
   max-width: 560px;
   margin-bottom: 30px;
}

.hero__actions {
   display: flex;
   gap: 16px;
   flex-wrap: wrap;
}

.hero__nav {
   position: absolute;
   top: 50%;
   transform: translateY(-50%);
   z-index: 5;
   width: 50px;
   height: 50px;
   border-radius: 50%;
   border: 1px solid rgba(255, 255, 255, .35);
   background: rgba(255, 255, 255, .08);
   color: #fff;
   cursor: pointer;
   display: grid;
   place-items: center;
   transition: .3s var(--ease);
   backdrop-filter: blur(4px);
}

.hero__nav svg {
   width: 24px;
   height: 24px;
}

.hero__nav:hover {
   background: var(--color-accent);
   border-color: var(--color-accent);
}

.hero__nav--prev {
   left: 24px;
}

.hero__nav--next {
   right: 24px;
}

.hero__dots {
   position: absolute;
   bottom: 28px;
   left: 50%;
   transform: translateX(-50%);
   display: flex;
   gap: 10px;
   z-index: 5;
}

.hero__dots button {
   width: 32px;
   height: 4px;
   border: none;
   border-radius: 4px;
   background: rgba(255, 255, 255, .4);
   cursor: pointer;
   transition: .3s;
   padding: 0;
}

.hero__dots button.active {
   background: var(--color-accent);
   width: 48px;
}

.hero__gauge {
   position: absolute;
   right: 6%;
   bottom: 12%;
   width: 120px;
   height: 120px;
   z-index: 4;
   opacity: .85;
}

@media (max-width:991px) {
   .hero__gauge {
      display: none;
   }
}

/* floating animations */
@keyframes floatY {

   0%,
   100% {
      transform: translateY(0);
   }

   50% {
      transform: translateY(-14px);
   }
}

@keyframes floatSoft {

   0%,
   100% {
      transform: translateY(0);
   }

   50% {
      transform: translateY(-9px);
   }
}

.float-slow {
   animation: floatY 6s ease-in-out infinite;
}

.float-soft {
   animation: floatSoft 5s ease-in-out infinite;
}

/* =================================================================
   MARQUEE
================================================================= */
.marquee {
   background: var(--color-accent);
   color: #fff;
   padding: 16px 0;
   overflow: hidden;
}

.marquee__track {
   display: flex;
   white-space: nowrap;
   will-change: transform;
}

.marquee__group {
   display: flex;
   align-items: center;
   gap: 0;
}

.marquee__item {
   font-family: var(--font-head);
   font-weight: 600;
   font-size: 1.02rem;
   letter-spacing: .02em;
   padding: 0 26px;
}

.marquee__sep {
   color: rgba(255, 255, 255, .5);
   font-size: 1.1rem;
}

/* =================================================================
   ABOUT
================================================================= */
.about {
   background: var(--white);
}

.about__media {
   position: relative;
   padding: 0 10px 30px 0;
}

.about__img {
   width: 100%;
   border-radius: var(--radius);
   box-shadow: var(--shadow);
   aspect-ratio: 4/3.4;
   object-fit: cover;
   background: var(--tint-grey);
}

.about__img-sm {
   position: absolute;
   right: -6px;
   bottom: 0;
   width: 42%;
   border-radius: var(--radius-sm);
   box-shadow: var(--shadow);
   border: 5px solid #fff;
   aspect-ratio: 4/3;
   object-fit: cover;
   background: var(--tint-blue);
}

.about__badge {
   position: absolute;
   top: 24px;
   left: -12px;
   background: var(--color-primary);
   color: #fff;
   padding: 16px 20px;
   border-radius: 14px;
   box-shadow: var(--shadow);
   max-width: 160px;
}

.about__badge strong {
   font-family: var(--font-head);
   font-size: 1.8rem;
   font-weight: 800;
   display: block;
   line-height: 1;
}

.about__badge span {
   font-size: .78rem;
   line-height: 1.3;
   display: block;
   margin-top: 4px;
   opacity: .92;
}

.about__points {
   margin: 22px 0 28px;
   display: grid;
   gap: 12px;
}

.about__points li {
   display: flex;
   gap: 12px;
   align-items: flex-start;
   color: var(--ink);
   font-weight: 500;
}

.tick {
   flex: none;
   width: 24px;
   height: 24px;
   border-radius: 50%;
   background: rgba(70, 152, 208, .14);
   color: var(--color-primary);
   display: grid;
   place-items: center;
   font-size: .8rem;
   font-weight: 700;
   margin-top: 2px;
}

.about__stats {
   display: flex;
   gap: 34px;
   flex-wrap: wrap;
   padding-top: 24px;
   border-top: 1px solid var(--line);
}

.stat {
   display: flex;
   align-items: baseline;
   flex-wrap: wrap;
}

.stat__num {
   font-family: var(--font-head);
   font-size: 2.2rem;
   font-weight: 800;
   color: var(--color-accent);
   line-height: 1;
}

.stat__plus {
   font-family: var(--font-head);
   font-size: 1.4rem;
   font-weight: 700;
   color: var(--color-accent);
}

.stat__label {
   width: 100%;
   font-size: .82rem;
   color: var(--ink-soft);
   margin-top: 4px;
}

/* =================================================================
   SERVICES
================================================================= */
.services {
   background: var(--tint-blue);
}

.scard {
   background: #fff;
   border: 1px solid var(--line);
   border-radius: var(--radius);
   height: 100%;
   position: relative;
   overflow: hidden;
   isolation: isolate;
   transition: transform .4s var(--ease), box-shadow .4s var(--ease), border-color .4s;
}

.scard::before {
   content: "";
   position: absolute;
   top: 0;
   left: 0;
   width: 100%;
   height: 4px;
   z-index: 3;
   background: linear-gradient(90deg, var(--color-primary), var(--color-accent));
   transform: scaleX(0);
   transform-origin: left;
   transition: transform .4s var(--ease);
}

.scard:hover {
   transform: translateY(-8px);
   box-shadow: var(--shadow);
   border-color: transparent;
}

.scard:hover::before {
   transform: scaleX(1);
}

/* Service image — drop a photo at assets/images/service-N.jpg */
.scard__media {
   position: relative;
   width: 100%;
   height: 180px;
   overflow: hidden;
   background: rgba(70, 152, 208, .08);
}

.scard__img {
   width: 100%;
   height: 100%;
   object-fit: cover;
   display: block;
   transition: transform .6s var(--ease);
}

.scard:hover .scard__img {
   transform: scale(1.08);
}

.scard__icon {
   position: absolute;
   left: 10px;
   bottom: 10px;
   z-index: 2;
   width: 48px;
   height: 48px;
   border-radius: 14px;
   display: grid;
   place-items: center;
   background: #fff;
   color: var(--color-primary);
   box-shadow: 0 6px 18px rgba(0, 0, 0, .12);
   transition: .4s var(--ease);
}

.scard__icon svg {
   width: 28px;
   height: 28px;
}

.scard:hover .scard__icon {
   background: var(--color-primary);
   color: #fff;
   transform: rotate(-6deg);
}

.scard__body {
   padding: 38px 26px 30px;
}

.scard__title {
   font-size: 1.12rem;
   font-weight: 700;
   margin-bottom: 10px;
}

.scard__text {
   font-size: .92rem;
   margin: 0;
}

/* =================================================================
   COMPLETE SERVICE RANGE
================================================================= */
.range {
   background: var(--white);
}

.range__grid {
   display: grid;
   grid-template-columns: repeat(3, 1fr);
   gap: 14px;
}

.range__item {
   display: flex;
   align-items: center;
   gap: 16px;
   background: var(--tint-grey);
   border: 1px solid var(--line);
   border-left: 3px solid var(--color-primary);
   border-radius: var(--radius-sm);
   padding: 18px 22px;
   font-family: var(--font-head);
   font-weight: 600;
   font-size: .98rem;
   color: var(--ink);
   transition: .35s var(--ease);
}

.range__no {
   font-size: .82rem;
   font-weight: 700;
   color: var(--color-accent);
   opacity: .7;
}

.range__item:hover {
   background: var(--color-primary);
   color: #fff;
   border-left-color: var(--color-accent);
   transform: translateX(6px);
}

.range__item:hover .range__no {
   color: #fff;
   opacity: .9;
}

/* =================================================================
   WHY CHOOSE US (dark)
================================================================= */
.why {
   background: var(--dark);
   background-image: radial-gradient(circle at 80% 20%, rgba(70, 152, 208, .18), transparent 45%);
}

.why__card {
   background: rgba(255, 255, 255, .04);
   border: 1px solid rgba(255, 255, 255, .08);
   border-radius: var(--radius);
   padding: 28px 24px;
   height: 100%;
   transition: .4s var(--ease);
}

.why__card:hover {
   background: rgba(70, 152, 208, .12);
   border-color: rgba(70, 152, 208, .4);
   transform: translateY(-6px);
}

.why__icon {
   width: 54px;
   height: 54px;
   border-radius: 14px;
   display: grid;
   place-items: center;
   background: rgba(255, 255, 255, .07);
   color: #9ed2f1;
   margin-bottom: 18px;
   transition: .4s;
}

.why__icon svg {
   width: 28px;
   height: 28px;
}

.why__card:hover .why__icon {
   background: var(--color-accent);
   color: #fff;
}

.why__title {
   color: #fff;
   font-size: 1.08rem;
   margin-bottom: 8px;
}

.why__text {
   color: rgba(255, 255, 255, .7);
   font-size: .9rem;
   margin: 0;
}

/* =================================================================
   HOW IT WORKS
================================================================= */
.process {
   background: var(--tint-warm);
   overflow: hidden;
}

.process__row {
   position: relative;
}

.process__line {
   position: absolute;
   left: 12%;
   right: 12%;
   top: 60px;
   height: 2px;
   background: repeating-linear-gradient(90deg, var(--color-primary) 0 14px, transparent 14px 26px);
   display: none;
   z-index: 0;
}

@media(min-width:992px) {
   .process__line {
      display: block;
   }
}

.pstep {
   background: #fff;
   border-radius: var(--radius);
   padding: 32px 26px;
   text-align: center;
   box-shadow: var(--shadow-sm);
   height: 100%;
   transition: .4s var(--ease);
   position: relative;
}

.pstep:hover {
   transform: translateY(-8px);
   box-shadow: var(--shadow);
}

.pstep__no {
   width: 56px;
   height: 56px;
   margin: 0 auto 18px;
   border-radius: 50%;
   display: grid;
   place-items: center;
   font-family: var(--font-head);
   font-weight: 800;
   font-size: 1.4rem;
   color: #fff;
   background: linear-gradient(135deg, var(--color-primary), var(--color-primary-d));
   box-shadow: 0 10px 22px -8px rgba(70, 152, 208, .7);
   transition: .4s;
}

.pstep:hover .pstep__no {
   background: linear-gradient(135deg, var(--color-accent), var(--color-accent-d));
   transform: scale(1.08);
}

.pstep__title {
   font-size: 1.12rem;
   margin-bottom: 8px;
}

.pstep__text {
   font-size: .9rem;
   margin: 0;
}

/* =================================================================
   IMAGE GALLERY CAROUSEL
================================================================= */
.gcarousel {
   background: var(--white);
}

.gcarousel__viewport {
   overflow: hidden;
   padding: 6px 0;
}

.gcarousel__track {
   display: flex;
   gap: 22px;
   padding: 0 max(24px, calc((100vw - var(--container))/2));
   transition: transform .6s var(--ease);
}

.gcarousel__slide {
   flex: 0 0 auto;
   width: 380px;
   max-width: 80vw;
   margin: 0;
   border-radius: var(--radius);
   overflow: hidden;
   position: relative;
   box-shadow: var(--shadow-sm);
}

.gcarousel__slide img {
   width: 100%;
   height: 260px;
   object-fit: cover;
   background: var(--tint-grey);
   transition: transform .6s var(--ease);
}

.gcarousel__slide:hover img {
   transform: scale(1.08);
}

.gcarousel__slide figcaption {
   position: absolute;
   left: 0;
   bottom: 0;
   right: 0;
   padding: 30px 20px 16px;
   color: #fff;
   font-family: var(--font-head);
   font-weight: 600;
   font-size: .95rem;
   background: linear-gradient(transparent, rgba(16, 39, 51, .85));
}

.gcarousel__controls {
   display: flex;
   justify-content: flex-end;
   gap: 12px;
   margin-top: 26px;
}

.gcarousel__btn {
   width: 48px;
   height: 48px;
   border-radius: 50%;
   border: 1px solid var(--line);
   background: #fff;
   color: var(--color-primary);
   font-size: 1.5rem;
   line-height: 1;
   cursor: pointer;
   transition: .3s var(--ease);
   box-shadow: var(--shadow-sm);
}

.gcarousel__btn:hover {
   background: var(--color-primary);
   color: #fff;
   transform: translateY(-3px);
}

/* =================================================================
   GALLERY GRID  (4/row desktop, 2/row mobile)
================================================================= */
.gallery {
   background: var(--tint-grey);
}

.gallery__grid {
   display: grid;
   grid-template-columns: repeat(4, 1fr);
   gap: 18px;
}

.gallery__item {
   position: relative;
   border-radius: var(--radius-sm);
   overflow: hidden;
   aspect-ratio: 1/1;
   box-shadow: var(--shadow-sm);
}

.gallery__item img {
   width: 100%;
   height: 100%;
   object-fit: cover;
   background: #dfe7ee;
   transition: transform .6s var(--ease);
}

.gallery__item::after {
   content: "";
   position: absolute;
   inset: 0;
   background: linear-gradient(transparent 40%, rgba(70, 152, 208, .55));
   opacity: 0;
   transition: opacity .4s;
}

.gallery__item:hover img {
   transform: scale(1.12);
}

.gallery__item:hover::after {
   opacity: 1;
}

.gallery__zoom {
   position: absolute;
   right: 14px;
   bottom: 14px;
   width: 38px;
   height: 38px;
   border-radius: 50%;
   background: #fff;
   color: var(--color-primary);
   display: grid;
   place-items: center;
   font-size: 1.4rem;
   font-weight: 700;
   opacity: 0;
   transform: translateY(10px) scale(.8);
   transition: .4s var(--ease);
   z-index: 2;
}

.gallery__item:hover .gallery__zoom {
   opacity: 1;
   transform: translateY(0) scale(1);
}

/* lightbox */
.lightbox {
   position: fixed;
   inset: 0;
   z-index: 2000;
   background: rgba(11, 29, 39, .92);
   display: none;
   align-items: center;
   justify-content: center;
   padding: 30px;
}

.lightbox.open {
   display: flex;
}

.lightbox img {
   max-width: 90vw;
   max-height: 86vh;
   border-radius: 12px;
   box-shadow: var(--shadow);
}

.lightbox__close {
   position: absolute;
   top: 22px;
   right: 28px;
   width: 46px;
   height: 46px;
   border-radius: 50%;
   border: none;
   background: rgba(255, 255, 255, .12);
   color: #fff;
   font-size: 2rem;
   line-height: 1;
   cursor: pointer;
   transition: .3s;
}

.lightbox__close:hover {
   background: var(--color-accent);
}

/* =================================================================
   FAQ
================================================================= */
.faq {
   background: var(--tint-blue);
}

.faq__list {
   display: grid;
   gap: 14px;
}

.faq__item {
   background: #fff;
   border: 1px solid var(--line);
   border-radius: var(--radius-sm);
   overflow: hidden;
   transition: box-shadow .3s, border-color .3s;
}

.faq__item.open {
   box-shadow: var(--shadow-sm);
   border-color: rgba(70, 152, 208, .5);
}

.faq__q {
   width: 100%;
   text-align: left;
   background: none;
   border: none;
   cursor: pointer;
   padding: 20px 56px 20px 22px;
   font-family: var(--font-head);
   font-weight: 600;
   font-size: 1rem;
   color: var(--ink);
   position: relative;
}

.faq__icon {
   position: absolute;
   right: 22px;
   top: 50%;
   transform: translateY(-50%);
   width: 18px;
   height: 18px;
}

.faq__icon::before,
.faq__icon::after {
   content: "";
   position: absolute;
   background: var(--color-primary);
   border-radius: 2px;
   transition: .3s var(--ease);
}

.faq__icon::before {
   top: 50%;
   left: 0;
   width: 18px;
   height: 2px;
   transform: translateY(-50%);
}

.faq__icon::after {
   left: 50%;
   top: 0;
   width: 2px;
   height: 18px;
   transform: translateX(-50%);
}

.faq__item.open .faq__icon::after {
   transform: translateX(-50%) scaleY(0);
}

.faq__item.open .faq__icon::before {
   background: var(--color-accent);
}

.faq__a {
   max-height: 0;
   overflow: hidden;
   transition: max-height .4s var(--ease);
}

.faq__a p {
   padding: 0 22px 22px;
   margin: 0;
   font-size: .94rem;
}

/* =================================================================
   TESTIMONIALS
================================================================= */
.testi {
   background: var(--white);
   background-image: linear-gradient(180deg, #fff, var(--tint-warm));
}

.testi__viewport {
   overflow: hidden;
}

.testi__track {
   display: flex;
   transition: transform .6s var(--ease);
}

.testi__card {
   flex: 0 0 100%;
   margin: 0;
   padding: 14px 14px 10px;
   position: relative;
}

@media(min-width:768px) {
   .testi__card {
      flex: 0 0 50%;
   }
}

.testi__quote {
   font-family: var(--font-head);
   font-size: 4rem;
   line-height: .6;
   color: rgba(70, 152, 208, .22);
   position: absolute;
   top: 30px;
   left: 34px;
   z-index: 1;
}

/* inner card surface drawn via pseudo-element */
.testi__card::before {
   content: "";
   position: absolute;
   inset: 14px 14px 10px;
   background: #fff;
   border: 1px solid var(--line);
   border-radius: var(--radius);
   box-shadow: var(--shadow-sm);
   z-index: 0;
}

.testi__text {
   position: relative;
   z-index: 1;
   padding: 46px 30px 0;
   font-size: 1.02rem;
   color: var(--ink);
   font-style: italic;
}

.testi__by {
   position: relative;
   z-index: 1;
   display: flex;
   align-items: center;
   gap: 14px;
   padding: 18px 30px 30px;
   border: 0;
}

.testi__by img {
   width: 50px;
   height: 50px;
   border-radius: 50%;
   object-fit: cover;
   background: var(--tint-blue);
   border: 2px solid var(--color-primary);
}

.testi__by strong {
   font-family: var(--font-head);
   display: block;
   color: var(--ink);
   font-size: .98rem;
}

.testi__by small {
   color: var(--ink-soft);
   font-size: .82rem;
}

.testi__dots {
   display: flex;
   gap: 10px;
   justify-content: center;
   margin-top: 30px;
}

.testi__dots button {
   width: 10px;
   height: 10px;
   border-radius: 50%;
   border: none;
   background: rgba(70, 152, 208, .3);
   cursor: pointer;
   transition: .3s;
   padding: 0;
}

.testi__dots button.active {
   background: var(--color-accent);
   transform: scale(1.3);
}

/* =================================================================
   CONTACT
================================================================= */
.contact {
   background: var(--tint-grey);
}

.contact__panel {
   border-radius: var(--radius);
   overflow: hidden;
   box-shadow: var(--shadow);
   background: #fff;
}

.contact__info {
   background: var(--dark);
   background-image: radial-gradient(circle at 20% 80%, rgba(70, 152, 208, .25), transparent 50%);
   color: #fff;
   padding: 48px 42px;
   height: 100%;
}

.contact__list {
   margin-top: 30px;
   display: grid;
   gap: 20px;
}

.contact__list li {
   display: flex;
   gap: 16px;
   align-items: flex-start;
}

.contact__ic {
   flex: none;
   width: 44px;
   height: 44px;
   border-radius: 12px;
   background: rgba(255, 255, 255, .08);
   display: grid;
   place-items: center;
}

.contact__ic svg {
   width: 20px;
   height: 20px;
   fill: #9ed2f1;
}

.contact__list small {
   display: block;
   font-size: .76rem;
   text-transform: uppercase;
   letter-spacing: .1em;
   color: #9ed2f1;
   margin-bottom: 3px;
}

.contact__list a,
.contact__list address {
   color: #fff;
   font-style: normal;
   font-weight: 500;
   margin: 0;
   font-size: .98rem;
}

.contact__list a:hover {
   color: #9ed2f1;
}

.contact__formwrap {
   padding: 48px 42px;
}

.form-label {
   font-family: var(--font-head);
   font-weight: 600;
   font-size: .85rem;
   color: var(--ink);
   margin-bottom: 6px;
}

.contact__form .form-control,
.contact__form .form-select {
   border: 1px solid var(--line);
   border-radius: var(--radius-sm);
   padding: 12px 16px;
   font-size: .95rem;
   transition: .25s;
   background: var(--tint-grey);
}

.contact__form .form-control:focus,
.contact__form .form-select:focus {
   border-color: var(--color-primary);
   box-shadow: 0 0 0 4px rgba(70, 152, 208, .14);
   background: #fff;
}

.contact__note {
   margin: 14px 0 0;
   font-size: .9rem;
   font-weight: 600;
}

.contact__note.ok {
   color: #1c8a4e;
}

.contact__note.err {
   color: var(--color-accent);
}

/* =================================================================
   FOOTER
================================================================= */
.footer {
   background: var(--dark-2);
   color: rgba(255, 255, 255, .66);
   padding: 64px 0 0;
}

.brand--footer .brand__text {
   color: #fff;
}

.brand--footer .brand__text small {
   color: rgba(255, 255, 255, .5);
}

.footer__about {
   margin: 18px 0;
   font-size: .92rem;
   max-width: 340px;
}

.footer__social {
   display: flex;
   gap: 10px;
}

.footer__social a {
   width: 36px;
   height: 36px;
   border-radius: 10px;
   background: rgba(255, 255, 255, .07);
   display: grid;
   place-items: center;
   transition: .3s var(--ease);
}

.footer__social svg {
   width: 17px;
   height: 17px;
   fill: rgba(255, 255, 255, .7);
   transition: .3s;
}

.footer__social a:hover {
   background: var(--color-primary);
   transform: translateY(-3px);
}

.footer__social a:hover svg {
   fill: #fff;
}

.footer__head {
   color: #fff;
   font-size: 1rem;
   margin-bottom: 18px;
}

.footer__links li,
.footer__contact li {
   margin-bottom: 11px;
}

.footer__links a {
   font-size: .92rem;
   color: rgba(255, 255, 255, .66);
   transition: .25s;
}

.footer__links a:hover {
   color: #9ed2f1;
   padding-left: 5px;
}

.footer__contact a,
.footer__contact address {
   font-size: .92rem;
   color: rgba(255, 255, 255, .66);
   font-style: normal;
}

.footer__contact a:hover {
   color: #9ed2f1;
}

.footer__bottom {
   margin-top: 48px;
   padding: 22px 0;
   border-top: 1px solid rgba(255, 255, 255, .08);
   display: flex;
   justify-content: space-between;
   gap: 10px;
   flex-wrap: wrap;
   font-size: .84rem;
}

.footer__bottom p {
   margin: 0;
}

/* =================================================================
   FLOATING BUTTONS
================================================================= */
.floatbtn {
   position: fixed;
   bottom: 26px;
   z-index: 1500;
   width: 56px;
   height: 56px;
   border-radius: 50%;
   display: grid;
   place-items: center;
   box-shadow: 0 12px 28px -8px rgba(0, 0, 0, .4);
   transition: transform .3s var(--ease);
}

.floatbtn svg {
   width: 30px;
   height: 30px;
   fill: #fff;
}

.floatbtn--wa {
   left: 24px;
   background: #25D366;
   animation: pulseWa 2.4s infinite;
}

.floatbtn--call {
   right: 24px;
   background: var(--color-accent);
   animation: pulseCall 2.4s infinite;
}

.floatbtn:hover {
   transform: scale(1.1);
}

@keyframes pulseWa {
   0% {
      box-shadow: 0 0 0 0 rgba(37, 211, 102, .5);
   }

   70% {
      box-shadow: 0 0 0 16px rgba(37, 211, 102, 0);
   }

   100% {
      box-shadow: 0 0 0 0 rgba(37, 211, 102, 0);
   }
}

@keyframes pulseCall {
   0% {
      box-shadow: 0 0 0 0 rgba(188, 75, 67, .5);
   }

   70% {
      box-shadow: 0 0 0 16px rgba(188, 75, 67, 0);
   }

   100% {
      box-shadow: 0 0 0 0 rgba(188, 75, 67, 0);
   }
}

.floatbtn__tip {
   position: absolute;
   left: 66px;
   background: var(--dark);
   color: #fff;
   font-size: .8rem;
   padding: 7px 12px;
   border-radius: 8px;
   white-space: nowrap;
   opacity: 0;
   pointer-events: none;
   transition: .3s;
   font-family: var(--font-head);
   font-weight: 500;
}

.floatbtn__tip--left {
   left: auto;
   right: 66px;
}

.floatbtn:hover .floatbtn__tip {
   opacity: 1;
}

@media(max-width:575px) {
   .floatbtn__tip {
      display: none;
   }
}

/* =================================================================
   SCROLL REVEAL
================================================================= */
.reveal {
   opacity: 0;
   transform: translateY(34px);
   transition: opacity .7s var(--ease), transform .7s var(--ease);
}

.reveal.visible {
   opacity: 1;
   transform: none;
}

/* =================================================================
   RESPONSIVE
================================================================= */
@media(max-width:1199px) {
   :root {
      --container: 960px;
   }
}

@media(max-width:991px) {
   :root {
      --container: 720px;
   }

   .navbar-toggler {
      display: flex;
      position: relative;
      z-index: 1002;
   }

   .navmenu {
      position: fixed;
      top: 0;
      right: 0;
      bottom: auto;
      z-index: 1001;
      /* explicit viewport height — do NOT use bottom:0, because .header's
         backdrop-filter makes it the containing block for fixed children,
         which would shrink the panel to header height */
      height: 100vh;
      height: 100dvh;
      width: min(320px, 82vw);
      flex-direction: column;
      align-items: stretch;
      justify-content: flex-start;
      gap: 0;
      background: #fff;
      padding: 90px 26px 32px;
      box-shadow: -12px 0 40px -12px rgba(16, 39, 51, .3);
      transform: translateX(100%);
      transition: transform .4s var(--ease);
      margin: 0;
      overflow-y: auto;
      -webkit-overflow-scrolling: touch;
   }

   .navmenu.open {
      transform: translateX(0);
   }

   .navmenu__list {
      flex-direction: column;
      gap: 2px;
   }

   .navmenu__link {
      display: block;
      padding: 13px 12px;
      border-radius: 10px;
      font-size: 1rem;
   }

   .navmenu__link::after {
      display: none;
   }

   .navmenu__cta {
      margin-top: 18px;
      width: 100%;
   }

   .section {
      padding: 72px 0;
   }

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

   .about__stats {
      gap: 24px;
   }
}

@media(max-width:767px) {
   :root {
      --container: 540px;
   }

   .topbar__contacts {
      gap: 14px;
      font-size: .78rem;
   }

   .topbar__link span {
      display: none;
   }

   .topbar__link .ic {
      width: 18px;
      height: 18px;
   }

   .hero__track {
      height: auto;
      min-height: auto;
   }

   .hero__slide {
      position: relative;
      min-height: 560px;
   }

   .hero__slide:not(.is-active) {
      display: none;
   }

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

   .footer__bottom {
      flex-direction: column;
   }

   .contact__info,
   .contact__formwrap {
      padding: 36px 26px;
   }
}

@media(max-width:479px) {
   .range__grid {
      grid-template-columns: 1fr;
   }

   .hero__actions .btn-quote,
   .hero__actions .btn-ghost {
      width: 100%;
      justify-content: center;
   }

   .hero__nav {
      width: 40px;
      height: 40px;
   }

   .section__head {
      margin-bottom: 40px;
   }
}

/* =================================================================
   ACCESSIBILITY — reduced motion
================================================================= */
@media (prefers-reduced-motion: reduce) {
   * {
      animation-duration: .001ms !important;
      animation-iteration-count: 1 !important;
      transition-duration: .01ms !important;
      scroll-behavior: auto !important;
   }

   .reveal {
      opacity: 1;
      transform: none;
   }
}

:focus-visible {
   outline: 3px solid var(--color-primary);
   outline-offset: 2px;
   border-radius: 4px;
}