/* Responsive system: phones, tablets, laptops and wide displays */
html{overflow-x:clip;-webkit-text-size-adjust:100%;text-size-adjust:100%}
body{min-width:320px;overflow-x:hidden}
body.menu-open{overflow:hidden}
img,svg,video{max-width:100%}
button,a{-webkit-tap-highlight-color:transparent}
.menu-toggle,.carousel-controls button,.project-filters button,.lightbox-close{touch-action:manipulation}
section[id]{scroll-margin-top:96px}
.site-header{position:relative;z-index:20}
.whatsapp-float{right:max(18px,env(safe-area-inset-right));bottom:max(18px,env(safe-area-inset-bottom))}

@media (min-width:1440px){
  :root{--max:1240px}
  .hero{min-height:690px}
  .hero-visual{height:520px}
}

@media (max-width:1180px){
  .site-header{padding-inline:28px;gap:24px}
  .brand img{width:230px}
  .site-header nav{gap:18px}
  .site-header nav a{font-size:.84rem}
  .hero{gap:38px;padding-inline:34px}
  .hero h1{font-size:clamp(2.7rem,5.6vw,4.25rem)}
  .trust-strip{width:calc(100% - 68px)}
  .project-grid{grid-template-columns:repeat(3,1fr)}
  .project-card.project-wide{grid-column:span 2}
}

/* The full navigation changes to a touch menu before tablet widths become cramped. */
@media (max-width:1060px){
  .site-header{height:78px;padding-inline:24px}
  .brand img{width:220px}
  .menu-toggle{display:grid;place-content:center;width:48px;height:48px;cursor:pointer;border-radius:4px}
  .site-header nav{position:absolute;display:none;top:78px;left:0;right:0;z-index:19;gap:0;padding:12px 24px max(22px,env(safe-area-inset-bottom));background:#fff;box-shadow:0 18px 36px rgba(3,38,64,.14);flex-direction:column;align-items:stretch;max-height:calc(100dvh - 78px);overflow-y:auto;overscroll-behavior:contain}
  .site-header nav.open{display:flex}
  .site-header nav a{display:flex;align-items:center;min-height:48px;padding:8px 2px;border-bottom:1px solid var(--line);font-size:.96rem}
  .site-header nav a:last-child{border-bottom:0}
  .hero{grid-template-columns:1fr;min-height:0;padding:62px 34px 78px}
  .hero-copy{max-width:820px}
  .hero-visual{width:100%;height:480px}
  .trust-strip{margin:0;width:100%;box-shadow:0 12px 35px rgba(14,57,83,.1)}
  .company,.method,.contact{grid-template-columns:1fr;gap:42px}
  .company-copy,.method-intro,.contact-copy{max-width:760px}
}

@media (max-width:900px){
  .section,.projects-section{padding-block:88px;padding-inline:24px}
  .clients-section{padding-block:88px;padding-inline:24px}
  .services,.method,.contact{padding-inline:24px}
  .hero{padding-inline:24px}
  .hero-visual{height:440px}
  .trust-strip{padding:12px 24px}
  .trust-strip p{padding:16px 10px}
  .clients-heading{align-items:flex-start}
  .project-grid{grid-template-columns:repeat(2,1fr);grid-auto-rows:235px}
  .sector-list{gap:14px}
  footer{padding-inline:24px}
}

@media (max-width:720px){
  .section h2,.contact h2,.projects-heading h2,.clients-heading h2{font-size:clamp(2rem,8vw,3rem)}
  .hero h1{font-size:clamp(2.35rem,9vw,3.4rem)}
  .hero-text{font-size:1.03rem}
  .hero-visual{height:410px}
  .service-grid{grid-template-columns:1fr}
  .service-grid article{min-height:0;padding:32px 26px}
  .sector-list{grid-template-columns:1fr}
  .clients-heading{flex-direction:column;gap:24px;margin-bottom:26px}
  .carousel-controls{align-self:flex-end}
  .client-slide{flex-basis:210px;height:132px;padding:16px 20px}
  .projects-heading{margin-bottom:28px}
  .project-filters{flex-wrap:nowrap;overflow-x:auto;margin-inline:-24px;padding:2px 24px 14px;scroll-snap-type:x proximity;scrollbar-width:none;overscroll-behavior-inline:contain}
  .project-filters::-webkit-scrollbar{display:none}
  .project-filters button{flex:0 0 auto;min-height:44px;scroll-snap-align:start}
  .contact{padding-block:72px}
  footer{gap:22px;padding-block:40px}
}

@media (max-width:580px){
  .site-header{height:70px;padding-inline:16px}
  .brand img{width:min(200px,62vw)}
  .site-header nav{top:70px;padding-inline:18px;max-height:calc(100dvh - 70px)}
  section[id]{scroll-margin-top:76px}
  .hero{padding:44px 16px 62px}
  .hero h1{font-size:clamp(2.18rem,10.4vw,2.8rem);letter-spacing:-.045em}
  .hero-text{margin:22px 0 28px}
  .hero-actions{display:grid;grid-template-columns:1fr}
  .button{width:100%;min-height:50px;padding-inline:18px;text-align:center}
  .hero-visual{height:360px;border-radius:6px}
  .hero-tech-grid{background-size:34px 34px}
  .hero-live{max-width:calc(100% - 32px);white-space:nowrap}
  .hero-caption{bottom:66px}
  .hero-project-link{min-height:44px;padding:8px 5px 8px 12px}
  .trust-strip{padding-inline:16px}
  .section,.projects-section,.clients-section{padding:72px 16px}
  .services,.method,.contact{padding-inline:16px}
  .section-heading{margin-bottom:38px}
  .company{gap:30px}
  .service-grid article{padding:28px 22px}
  .steps li{grid-template-columns:42px 1fr;gap:12px;padding:20px 0}
  .client-slide{flex-basis:68vw;max-width:250px}
  .project-filters{margin-inline:-16px;padding-inline:16px}
  .project-grid{grid-template-columns:1fr;grid-auto-rows:260px;gap:12px}
  .project-card.project-wide,.project-card.project-tall{grid-column:span 1;grid-row:span 1}
  .project-lightbox{width:calc(100vw - 16px);max-height:calc(100dvh - 16px);border-radius:5px}
  .project-lightbox img{max-height:calc(100dvh - 68px)}
  .project-lightbox p{padding:12px 16px}
  .lightbox-close{top:9px;right:9px;width:44px;height:44px}
  footer img{width:min(220px,72vw)}
  .whatsapp-float{width:52px;height:52px}
}

@media (max-width:390px){
  .hero{padding-top:38px}
  .hero h1{font-size:2.05rem}
  .hero-visual{height:325px}
  .hero-live{font-size:.59rem;letter-spacing:.035em;padding:8px 10px}
  .hero-caption strong{font-size:1.15rem}
  .hero-caption small{font-size:.72rem}
  .hero-project-link{font-size:.72rem}
  .project-grid{grid-auto-rows:235px}
  .client-slide{flex-basis:74vw}
}

@media (max-height:500px) and (orientation:landscape){
  .site-header nav{max-height:calc(100dvh - 70px)}
  .hero{padding-top:36px}
  .hero-visual{height:320px}
}

@media (hover:none){
  .service-grid article:hover{transform:none;box-shadow:none}
  .client-slide:hover img,.project-card:hover img{transform:none}
}

@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}
  .reveal{opacity:1;transform:none}
}
