/* ========== Global Styles & Variables ========== */
:root{
  --bg-color:#1a1d24;       /* From logo/base */
  --bg-alt:#20242c;
  --text-color:#e1e1e1;
  --primary-color:#ffffff;
  --accent-color:#00c2d1;   /* From logo */
  --border-color:#2f343d;
  --font-heading:"Montserrat",sans-serif;
  --font-body:"Open Sans",sans-serif;
}

*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}

body{
  font-family:var(--font-body);
  color:var(--text-color);
  line-height:1.7;
  background:var(--bg-color);
  overflow-x: hidden;
}

.container{max-width:1200px;margin:0 auto;padding:0 20px}

/* ========== Headings & Text ========== */
h1,h2,h3{
  font-family:var(--font-heading);
  color:var(--primary-color);
  font-weight:800; line-height:1.2;
}
h1{font-size:clamp(2.5rem,5vw,4.5rem);letter-spacing:-1.5px}
h2{font-size:clamp(2rem,4vw,3rem);text-align:center;margin-bottom:1.5rem}
h3{font-size:1.5rem;margin-bottom:1rem}
p{max-width:65ch}
a{color:var(--accent-color);text-decoration:none;transition:color .3s}
a:hover{color:var(--primary-color)}

/* ========== Header (minimal white) ========== */
.main-header{
  background:transparent;
  padding:15px 0;
  border:none;
  box-shadow:none;
  position:static;
  width:100%;
  z-index:1000;
}
.main-header .container{
  max-width:1100px; display:flex; justify-content:space-between; align-items:center;
}
.logo{display:flex;align-items:center;color:#333}
.logo img{height:72px;margin-right:10px}
.logo-text{
  font-size:24px; font-weight:bold; text-transform:uppercase;
  color:var(--accent-color); font-family:var(--font-heading); letter-spacing:2px;
}
.main-nav ul{list-style:none;display:flex;gap:25px}
.main-nav a{
  color:#fff;
  font-size:1rem;
  font-weight:600;
  padding:5px 0;
  transition:color .3s, box-shadow .3s;
  text-decoration:none;
}
/* Hover/active sin “salto” de layout */
.main-nav a:hover,
.main-nav a.active{
  color:var(--accent-color);
  box-shadow:inset 0 -2px 0 var(--accent-color);
  border-bottom:none;
}

/* ========== Hero & Scroll Indicator ========== */
main{padding-top:100px}
.hero{position:relative;padding-top:0}
.hero-content{z-index:1;padding:20px}
.hero h1{max-width:25ch;margin:0 auto 1.5rem}
.hero p{font-size:1.2rem;max-width:60ch;margin:0 auto 2.5rem;color:var(--text-color)}
.scroll-down{
  position:absolute;left:50%;bottom:24px;transform:translateX(-50%);
  z-index:5;color:var(--primary-color);text-align:center
}
.scroll-down span{display:block;font-size:.8rem;margin-bottom:5px;animation:pulse 2s infinite}
.scroll-down .arrow{width:1px;height:30px;background:var(--primary-color);margin:0 auto;position:relative}
.scroll-down .arrow::after{
  content:"";position:absolute;bottom:0;left:-3px;width:7px;height:7px;
  border-bottom:1px solid var(--primary-color);border-right:1px solid var(--primary-color);transform:rotate(45deg)
}
@keyframes pulse{0%,100%{opacity:.5}50%{opacity:1}}

/* ========== Page Header (secundarias) ========== */
.page-header-section{
  padding: 160px 0 80px;
  text-align: center;
  background: var(--bg-alt);
  color: var(--text-color);
  position: relative;
}
.page-header-section::before {
  content: "";
  position: absolute;
  inset: 0;
  background: rgba(32,36,44,0.65); /* más transparente */
  z-index: 0;
  pointer-events: none;
}
.page-header-section > .container {
  position: relative;
  z-index: 1;
}
.page-header-section p{margin:1rem auto 0;font-size:1.2rem}
.page-header-section,
.page-header-section > .container {
  background: none !important;
}

/* ========== Buttons ========== */
.btn{
  display:inline-block;padding:14px 35px;border-radius:5px;border:2px solid transparent;
  font-family:var(--font-heading);font-weight:700;letter-spacing:1px;text-transform:uppercase;
  cursor:pointer;transition:all .3s;text-decoration:none
}
.btn-primary{
  background:var(--accent-color);color:var(--bg-color);
  box-shadow:0 0 10px rgba(0,194,209,.3)
}
.btn-primary:hover{background:var(--primary-color);color:var(--accent-color);transform:translateY(-3px);box-shadow:0 0 20px rgba(0,194,209,.6)}
.btn-secondary{background:transparent;color:var(--primary-color);border-color:var(--primary-color)}
.btn-secondary:hover{background:var(--primary-color);color:var(--bg-color);transform:translateY(-3px);box-shadow:0 0 20px rgba(255,255,255,.3)}
.btn:focus-visible{outline:3px solid rgba(0,194,209,.6);outline-offset:2px}

/* ========== Sections ========== */
.content-section{padding:100px 0}
.content-section.alt-bg {
  position: relative;
  /* background: var(--bg-alt); */
}
.content-section.alt-bg::before {
  content: "";
  position: absolute;
  inset: 0;
  background: rgba(32,36,44,0.55); /* superposición más ligera */
  z-index: 0;
  pointer-events: none;
}
.content-section.alt-bg > .container {
  position: relative;
  z-index: 1;
}
#philosophy p{font-size:1.2rem;text-align:center;margin-inline:auto}

/* ========== Grids y Cards ========== */
.featured-grid,
.services-grid{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(320px,1fr));
  gap:2rem; margin-top:3rem;
}

.featured-card,
.service-item{
  border:1px solid var(--border-color); padding:2.5rem;
  transition:transform .3s, border-color .3s, box-shadow .3s;
}
.featured-card:hover,
.service-item:hover{
  transform:translateY(-10px); border-color:var(--accent-color); box-shadow:0 10px 30px rgba(0,0,0,.2)
}

/* ========== Service Cards (con hover/tap) ========== */
.service-card{
  position: relative;
  background: none !important;
  border: 1px solid var(--border-color); border-radius:12px;
  box-shadow:0 4px 24px rgba(0,0,0,.08); padding:2.5rem 2rem 2rem;
  display:flex; flex-direction:column; justify-content:space-between;
  transition:transform .3s cubic-bezier(.4,2,.6,1), box-shadow .3s, border-color .3s;
  min-height:260px;
  overflow: hidden;
}
.service-card::before {
  content: "";
  position: absolute;
  inset: 0;
  background: rgba(32,36,44,0.65); /* superposición oscura */
  z-index: 0;
  pointer-events: none;
  border-radius: 12px;
}
.service-card > * {
  position: relative;
  z-index: 1;
}
.service-card:hover{transform:translateY(-10px) scale(1.03); box-shadow:0 12px 32px rgba(0,0,0,.18); border-color:var(--accent-color)}
.service-title{font-family:var(--font-heading);font-size:1.3rem;font-weight:800;color:var(--primary-color);margin-bottom:.5rem}
.service-price{font-family:var(--font-heading);font-size:1.1rem;color:var(--accent-color);font-weight:700;margin-bottom:1.2rem}
.service-desc{
  font-size:1rem;color:var(--text-color);margin-bottom:1.5rem;
  opacity:0;max-height:0;transition:opacity .3s,max-height .3s;pointer-events:none
}
/* mostrar desc. con hover, foco o tap (via aria-expanded) */
.service-card:hover .service-desc,
.service-card:focus-within .service-desc,
.service-card[aria-expanded="true"] .service-desc{
  opacity:1;max-height:220px;pointer-events:auto
}
.service-quote{
  align-self:flex-start;background:var(--accent-color);color:var(--bg-color);
  padding:.6em 1.5em;border-radius:5px;font-size:1rem;font-family:var(--font-heading);
  font-weight:700;text-transform:uppercase;letter-spacing:1px;border:none;
  transition:background .3s,color .3s,transform .2s;box-shadow:0 2px 8px rgba(0,0,0,.08);
  margin-top:auto;margin-bottom:.5rem;cursor:pointer;text-decoration:none
}
.service-quote:hover{background:var(--primary-color);color:var(--accent-color);transform:translateY(-2px) scale(1.04)}

/* ========== Contact Page ========== */
.contact-grid{display:grid;grid-template-columns:2fr 1fr;gap:3rem}
.form-group{margin-bottom:1.5rem}
.form-group label{display:block;margin-bottom:.5rem;font-weight:600}
.form-group input,
.form-group textarea{
  width:100%;padding:12px;background:var(--bg-alt);border:1px solid var(--border-color);
  border-radius:5px;color:var(--text-color);font-family:var(--font-body);font-size:1rem;transition:border-color .3s
}
.form-group input:focus,
.form-group textarea:focus{outline:none;border-color:var(--accent-color)}
.contact-info h3{margin-bottom:1.5rem}
.contact-info p{margin-bottom:1.5rem;font-size:1.1rem}
.qr-code-container{margin-top:2rem;padding-top:2rem;border-top:1px solid var(--border-color)}
.qr-code-container img{background:#fff;padding:10px;border-radius:5px;margin-bottom:1rem}

/* ========== Footer ========== */
.site-footer{
  background: var(--bg-alt);
  color: var(--text-color);
  border-top: 1px solid var(--border-color);
}
.footer-top {
  padding: 48px 0 72px 0;
}
.footer-top .container {
  display: grid;
  grid-template-columns: 2fr 1fr 1fr;
  gap: 2rem;
}
.footer-logo{
  display:flex; align-items:center; gap:12px;
  font-family: var(--font-heading); font-weight:800; letter-spacing:.06em;
  color: var(--primary-color);
}
.footer-logo img{ display:block }
.footer-logo span{ font-size:1.1rem }
.footer-text{
  margin: 12px 0 16px;
  max-width: 46ch;
  color: var(--text-color);
}
.footer-social{
  display:flex; gap:14px; flex-wrap:wrap;
}
.footer-social a{
  color: var(--accent-color);
  font-weight:600;
}
.footer-social a:hover{ color: var(--primary-color); }
.footer-heading{
  font-family: var(--font-heading);
  color: var(--primary-color);
  font-size: 1rem;
  margin-bottom: .75rem;
  text-transform: uppercase;
  letter-spacing: .08em;
}
.footer-links{ list-style:none; padding:0; margin:0; display:grid; gap:.5rem }
.footer-links a{ color: var(--text-color); }
.footer-links a:hover{ color: var(--accent-color); }

/* quitar cursiva del bloque address específico */
.footer-contact{ font-style: normal; }

.footer-contact ul{ list-style:none; padding:0; margin:0; display:grid; gap:.5rem }
.footer-contact a{ color: var(--text-color); }
.footer-contact a:hover{ color: var(--accent-color); }
.footer-cta{ margin-top: 1rem; }

.footer-bottom{
  background: rgba(0,0,0,.15);
  border-top: 1px solid var(--border-color);
}
.footer-bottom-inner{
  display:flex; align-items:center; justify-content:space-between;
  gap: 12px; padding: 14px 0; flex-wrap:wrap;
}
.footer-bottom small{ color: var(--text-color); opacity:.85 }
.footer-legal{ display:flex; gap:10px; align-items:center }
.footer-legal a{ color: var(--text-color); opacity:.85 }
.footer-legal a:hover{ color: var(--accent-color); opacity:1 }

/* ========== Animations ========== */
.reveal-hero{opacity:0;transform:translateY(30px);animation:reveal-in 1s forwards;animation-delay:var(--delay,0s)}
@keyframes reveal-in{to{opacity:1;transform:translateY(0)}}
.reveal{opacity:0;transform:translateY(50px);transition:opacity .8s, transform .8s;transition-delay:var(--delay,0s)}
.reveal.visible{opacity:1;transform:translateY(0)}
@media (prefers-reduced-motion:reduce){
  *{animation-duration:0.01ms !important;animation-iteration-count:1 !important;transition:none !important}
}

/* ========== WhatsApp FAB ========== */
.whatsapp-float{
  position:fixed;bottom:32px;right:32px;z-index:3000;background:var(--accent-color);color:#fff;
  width:64px;height:64px;display:flex;align-items:center;justify-content:center;border-radius:50%;
  box-shadow:0 4px 24px rgba(0,0,0,.18);font-size:2.5rem;transition:transform .2s, box-shadow .2s, background .2s;
  cursor:pointer;text-decoration:none
}
.whatsapp-float:hover{background:#00a3a3;transform:scale(1.08) translateY(-4px);box-shadow:0 8px 32px rgba(0,0,0,.28)}

/* ========== Shared container width fix ========== */
.hero > .container,
.services-section > .container,
.page-header-section > .container,
.content-section > .container,
.site-footer > .container,
.footer-bottom > .container {
  max-width: 1200px;
  margin: 0 auto;
  padding: 0 20px;
  width: 100%;
  box-sizing: border-box;
}

/* ========== Responsive ========== */
@media (max-width:900px){
  .logo img{height:56px}
  .logo-text{font-size:1.4rem;letter-spacing:1.2px}
  .services-section h2{font-size:2rem}
  /* iOS/Android: fixed background puede parpadear */
  body{ background-attachment:scroll, scroll, scroll; }
}
@media (max-width:768px){
  .contact-grid{grid-template-columns:1fr}
}
@media (max-width:600px){
  .whatsapp-float{bottom:16px;right:16px;width:52px;height:52px;font-size:1.7rem}
}

/* ===== Footer responsive ===== */
@media (max-width: 900px){
  .footer-top{ grid-template-columns: 1fr 1fr; }
}
@media (max-width: 640px){
  .footer-top{ grid-template-columns: 1fr; }
}

.bg-video {
  position: fixed;
  top: 0; left: 0;
  width: 100vw;
  height: 100vh;
  object-fit: cover;
  z-index: -1;
  opacity: 0.25;
  pointer-events: none;
  transition: opacity 0.5s;
  max-width: 100vw;
  max-height: 100vh;
}

@media (max-width: 900px) {
  .page-header-section::before {
    background: rgba(32,36,44,0.85);
  }
  .content-section.alt-bg::before {
    background: rgba(32,36,44,0.75);
  }
  .service-card::before {
    background: rgba(32,36,44,0.85);
  }
  .footer-top .container {
    grid-template-columns: 1fr;
    gap: 2rem;
  }
  .footer-top {
    padding: 32px 0 48px 0;
  }
  .content-section, .content-section.alt-bg {
    padding: 48px 0;
  }
  .service-card {
    padding: 1.5rem 1rem 1rem;
  }
}
@media (max-width: 600px) {
  .page-header-section {
    padding: 80px 0 40px 0;
  }
  .content-section, .content-section.alt-bg {
    padding: 32px 0;
  }
  .footer-top {
    padding: 24px 0 32px 0;
  }
}

/* === Mobile nav (hamburger) === */
.hamburger{
  display:none;
  align-items:center; justify-content:center;
  width:44px; height:44px;
  background:transparent; border:1px solid var(--border-color); border-radius:8px;
  cursor:pointer; transition:background .2s, border-color .2s; margin-left:auto;
}
.hamburger:hover{ background:rgba(255,255,255,.06); border-color:var(--accent-color); }
.hamburger span{
  display:block; width:22px; height:2px; background:var(--primary-color);
  transition:transform .2s, opacity .2s; position:relative;
}
.hamburger span + span{ margin-top:6px; }
.hamburger.is-open span:nth-child(1){ transform:translateY(8px) rotate(45deg); }
.hamburger.is-open span:nth-child(2){ opacity:0; }
.hamburger.is-open span:nth-child(3){ transform:translateY(-8px) rotate(-45deg); }
@media (max-width: 900px){
  .main-header{ position:relative; }
  .hamburger{ display:inline-flex; }
  .main-nav{
    position:absolute; top:72px; right:20px;
    background:var(--bg-alt);
    border:1px solid var(--border-color);
    border-radius:12px;
    padding:12px 16px;
    display:none;
    box-shadow:0 12px 32px rgba(0,0,0,.25);
    z-index:1000;
    min-width: 220px;
  }
  .main-nav.is-open{ display:block; }
  .main-nav ul{ flex-direction:column; gap:10px; }
  .main-nav a{
    color:var(--primary-color);
    padding:8px 0;
    display:block;
    box-shadow:none;
  }
  .main-nav a:hover,
  .main-nav a.active{
    color:var(--accent-color);
    box-shadow:none;
  }
}

.services-footer {
  text-align: center;
  margin-top: 2rem;
  padding: 2rem 0 2rem 0;
}
@media (max-width: 900px) {
  .services-footer {
    padding: 1.5rem 0 1.5rem 0;
  }
}

.service-category-header {
  padding: 2.5rem 0 1.5rem 0;
}
@media (max-width: 900px) {
  .service-category-header {
    padding: 1.5rem 0 1rem 0;
  }
}
