
/* Local static-site reset: no CDN/framework runtime required. */
*,*::before,*::after{box-sizing:border-box}
html,body{margin:0;padding:0}
img,svg,video,canvas{display:block;max-width:100%}
button,input,textarea,select{font:inherit}
a{text-decoration:none;color:inherit}
button{cursor:pointer}
html{scroll-behavior:smooth}
body{font-family:Inter,sans-serif;color:#15171A}
h1,h2,h3,h4{font-family:Manrope,sans-serif}
::selection{background:#e52920;color:#fff}
.nav-scrolled{box-shadow:0 10px 35px rgba(20,29,45,.08);background:rgba(255,255,255,.96)!important;backdrop-filter:blur(16px)}
.reveal,.reveal-left,.reveal-right{opacity:0;transform:translateY(28px);transition:opacity .75s cubic-bezier(.2,.75,.25,1),transform .75s cubic-bezier(.2,.75,.25,1)}
.reveal-left{transform:translateX(-34px)} .reveal-right{transform:translateX(34px)}
.is-visible,.reveal.show{opacity:1!important;transform:none!important}
.delay-1{transition-delay:.08s}.delay-2{transition-delay:.16s}.delay-3{transition-delay:.24s}.delay-4{transition-delay:.32s}.delay-5{transition-delay:.4s}
.menu-open .mobile-menu{opacity:1;visibility:visible;transform:translateY(0)}
.mobile-menu{opacity:0;visibility:hidden;transform:translateY(-8px);transition:.25s ease}
.nav-shadow{box-shadow:0 10px 30px rgba(15,23,42,.06)}
.hero-grid{background-image:linear-gradient(rgba(23,43,93,.055) 1px,transparent 1px),linear-gradient(90deg,rgba(23,43,93,.055) 1px,transparent 1px);background-size:46px 46px}
.product-card{transition:transform .45s ease,box-shadow .45s ease}
.product-card:hover{transform:translateY(-7px);box-shadow:0 24px 55px rgba(23,43,93,.13)}
.product-visual{background:linear-gradient(135deg,#f0eee9,#fff 55%,#f7e9e5);position:relative;overflow:hidden}
.product-visual:before{content:"";position:absolute;inset:18px;border:1px solid rgba(239,43,37,.15);border-radius:24px}
.box-shape{position:absolute;width:135px;height:95px;border-radius:8px;background:linear-gradient(145deg,#d6a56f,#b87b43);box-shadow:0 20px 28px rgba(60,35,15,.16);transform:rotate(-6deg);left:50%;top:50%;translate:-50% -50%}
.box-shape:after{content:"";position:absolute;left:50%;top:0;width:2px;height:100%;background:rgba(95,48,18,.25)}
.box-shape.navy{background:linear-gradient(145deg,#243d76,#172b5d)} .box-shape.white{background:linear-gradient(145deg,#fff,#e8e6e2)}
.sheet-stack{position:absolute;width:190px;height:105px;left:50%;top:50%;translate:-50% -50%;transform:rotate(-4deg)}
.sheet-stack span{display:block;height:18px;margin-top:2px;border-radius:3px;background:linear-gradient(90deg,#bd8852,#d9ad7a,#bd8852);box-shadow:0 2px 3px rgba(0,0,0,.08)}
.partition{position:absolute;width:170px;height:105px;left:50%;top:50%;translate:-50% -50%;display:grid;grid-template-columns:repeat(3,1fr);gap:6px}
.partition span{border:5px solid #ad7440;border-radius:4px;background:#d6a36a}
.industry-card{will-change:transform}.industry-card>div{transition:transform .45s ease}.industry-card:hover>div{transform:translateY(-1px)}
.contact-card{transition:transform .35s ease,box-shadow .35s ease,border-color .35s ease}.contact-card:hover{transform:translateY(-6px);box-shadow:0 24px 60px rgba(23,43,93,.10);border-color:rgba(239,43,36,.22)}
.form-field{transition:border-color .25s ease,box-shadow .25s ease,background .25s ease}.form-field:focus{outline:none;border-color:#EF2B24;box-shadow:0 0 0 4px rgba(239,43,36,.10);background:#fff}
.pulse-soft{animation:pulseSoft 2.8s ease-in-out infinite}@keyframes pulseSoft{0%,100%{box-shadow:0 0 0 0 rgba(229,41,32,.22)}50%{box-shadow:0 0 0 7px rgba(229,41,32,0)}}
.btn-arrow svg{transition:transform .25s ease}.btn-arrow:hover svg{transform:translateX(4px)}

/* ---------- Shared floating WhatsApp contact ---------- */
.whatsapp-float{position:fixed;left:1.25rem;bottom:1.25rem;z-index:45;display:grid;width:3.75rem;height:3.75rem;place-items:center;border:3px solid #fff;border-radius:9999px;background:#25d366;color:#fff;box-shadow:0 10px 28px rgba(15,23,42,.28);transition:transform .25s ease,background-color .25s ease,box-shadow .25s ease}
.whatsapp-float svg{width:2rem;height:2rem}
.whatsapp-float:hover{transform:translateY(-3px) scale(1.04);background:#1fbd59;box-shadow:0 14px 34px rgba(15,23,42,.34)}
.whatsapp-float:focus-visible{outline:3px solid rgba(37,211,102,.35);outline-offset:4px}
@media(max-width:639px){.whatsapp-float{left:1rem;bottom:1rem;width:3.4rem;height:3.4rem}.whatsapp-float svg{width:1.8rem;height:1.8rem}}

/* ---------- Quote modal (opened by the header "Get a Quote" buttons) ---------- */
.quote-modal{position:fixed;inset:0;z-index:100;visibility:hidden}
.quote-modal.is-open{visibility:visible}
.quote-modal__backdrop{position:absolute;inset:0;background:rgba(13,24,54,.72);backdrop-filter:blur(6px);opacity:0;transition:opacity .3s ease}
.quote-modal.is-open .quote-modal__backdrop{opacity:1}
.quote-modal__scroll{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;overflow:hidden;padding:.75rem}
@media(min-width:640px){.quote-modal__scroll{padding:1.25rem}}
/* The panel never exceeds the viewport: it caps its own height and only the field area
   scrolls, and only on genuinely short screens. dvh keeps mobile browser chrome honest. */
.quote-modal__panel{position:relative;display:flex;flex-direction:column;width:100%;max-width:38rem;max-height:calc(100vh - 1.5rem);max-height:calc(100dvh - 1.5rem);opacity:0;transform:translateY(16px) scale(.985);transition:opacity .35s cubic-bezier(.22,1,.36,1),transform .35s cubic-bezier(.22,1,.36,1)}
@media(min-width:640px){.quote-modal__panel{max-height:calc(100vh - 2.5rem);max-height:calc(100dvh - 2.5rem)}}
.quote-modal__head{flex:0 0 auto}
.quote-modal__body{flex:1 1 auto;min-height:0;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}
/* Slim brand scrollbar instead of the chunky native one, and only when it is needed. */
.quote-modal__body{scrollbar-width:thin;scrollbar-color:rgba(23,43,93,.22) transparent}
.quote-modal__body::-webkit-scrollbar{width:6px}
.quote-modal__body::-webkit-scrollbar-track{background:transparent}
.quote-modal__body::-webkit-scrollbar-thumb{background:rgba(23,43,93,.2);border-radius:99px}
.quote-modal__body::-webkit-scrollbar-thumb:hover{background:rgba(229,41,32,.55)}
.quote-modal.is-open .quote-modal__panel{opacity:1;transform:none}
body.modal-open{overflow:hidden}
.quote-field{transition:border-color .2s ease,box-shadow .2s ease,background .2s ease}
.quote-field:focus{outline:none;border-color:#e52920;box-shadow:0 0 0 4px rgba(229,41,32,.12);background:#fff}
.quote-modal [data-quote-success]{display:none}
.quote-modal.is-sent [data-quote-success]{display:block}
.quote-modal.is-sent [data-quote-body]{display:none}
@media(max-width:767px){.industry-card{border-radius:24px}.industry-card p{font-size:.96rem;line-height:1.7}.hero-title{font-size:2.6rem!important;line-height:1.02!important}.hero-copy{font-size:1rem!important}.product-visual{height:230px!important}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{animation-duration:.01ms!important;transition-duration:.01ms!important}}
/* Shared dotted CTA background used consistently across all pages. */
.section-label-line {
  display: inline-flex;
  align-items: center;
  gap: .75rem;
}

.section-label-line::before {
  content: "";
  width: 2rem;
  height: 1px;
  flex: 0 0 auto;
  border-radius: 9999px;
  background: #e52920;
}

.section-label-line--light::before {
  background: rgba(255,255,255,.7);
}

/* Shared typography and colors for the large CTA section on every page. */
.page-cta-eyebrow {
  color: #ef2b24 !important;
  font-family: Inter, sans-serif;
  font-size: .75rem;
  font-weight: 800;
  letter-spacing: .2em;
  text-transform: uppercase;
}

.page-cta-eyebrow--on-red {
  color: rgba(255,255,255,.75) !important;
}

.page-cta-title {
  margin-top: .5rem !important;
  color: #fff !important;
  font-family: Manrope, sans-serif;
  font-size: 1.875rem !important;
  font-weight: 900 !important;
  line-height: 1.15 !important;
  letter-spacing: -.025em !important;
}

.page-cta-copy {
  margin-top: .75rem !important;
  max-width: 42rem;
  color: rgba(255,255,255,.7) !important;
  font-family: Inter, sans-serif;
  font-size: 1rem !important;
  line-height: 1.5 !important;
}

.page-cta-button {
  color: #fff !important;
  background: #ef2b24 !important;
  font-family: Inter, sans-serif;
  font-size: .875rem;
  font-weight: 800;
}

.page-cta-button:hover {
  background: #d9231c !important;
}

.page-cta-button--on-red {
  color: #d9231c !important;
  background: #fff !important;
}

.page-cta-button--on-red:hover {
  background: #f8f7f5 !important;
}

@media (min-width: 1024px) {
  .page-cta-title {
    font-size: 2.25rem !important;
  }
}

.footer-cta-dots {
  position: relative;
  overflow: hidden;
  background-color: #172b5d !important;
}

.footer-cta-dots::before {
  content: "";
  position: absolute;
  inset: 0;
  background-image: radial-gradient(circle at 1px 1px, rgba(255,255,255,.9) 1px, transparent 0);
  background-size: 28px 28px;
  opacity: .05;
  pointer-events: none;
}

.footer-cta-dots > * {
  position: relative;
  z-index: 1;
}

/* Shared values marquee displayed immediately before the footer on every page. */
.site-marquee {
  overflow: hidden;
  border-top: 1px solid #e5e7eb;
  border-bottom: 1px solid #e5e7eb;
  background: #fff;
  padding: 1.25rem 0;
}

.site-marquee__track {
  display: flex;
  width: max-content;
  gap: 2rem;
  padding: 0 1.25rem;
  animation: siteMarquee 26s linear infinite;
}

.site-marquee:hover .site-marquee__track {
  animation-play-state: paused;
}

.site-marquee__tag {
  flex: 0 0 auto;
  border: 1px solid #e5e7eb;
  border-radius: 9999px;
  background: #f8f7f5;
  padding: .5rem 1.25rem;
  color: #6b7280;
  font-size: .75rem;
  font-weight: 800;
  letter-spacing: .16em;
  text-transform: uppercase;
  transition: background-color .25s ease, border-color .25s ease, color .25s ease, transform .25s ease;
}

.site-marquee__tag:hover {
  border-color: #e52920;
  background: #e52920;
  color: #fff;
  transform: translateY(-2px);
}

@keyframes siteMarquee {
  from { transform: translateX(0); }
  to { transform: translateX(-50%); }
}
