/* Contact menu + scroll-top (critical chrome shared across pages) */
.contact-menu{
  position:fixed;right:1.25rem;bottom:1.25rem;z-index:900;
  display:flex;flex-direction:column;align-items:center;
  width:58px;
  gap:.8rem;
  overflow:visible;
  transition:gap .35s cubic-bezier(.22,.85,.3,1);
}
.cm-action{
  position:relative;width:48px;height:48px;border-radius:50%;
  display:grid;place-items:center;color:#fff;text-decoration:none;
  box-shadow:0 8px 22px rgba(10,37,64,.28);
  opacity:0;max-height:0;overflow:hidden;
  transform:translateY(14px) scale(.4);pointer-events:none;
  transition:opacity .32s cubic-bezier(.22,.85,.3,1.1),
             transform .32s cubic-bezier(.22,.85,.3,1.1),
             max-height .35s cubic-bezier(.22,.85,.3,1),
             margin .35s cubic-bezier(.22,.85,.3,1);
  margin:0;
}
.cm-call{transition-delay:0s;}
.cm-quote{transition-delay:0s;}
.cm-action svg{width:22px;height:22px;}
.cm-call{background:#0D3260;}
.cm-call:hover{background:#0a2540;}
.cm-quote{background:#17a2b8;}
.cm-quote:hover{background:#138a9c;}
.cm-action:hover{transform:translateY(-2px) scale(1.06);box-shadow:0 12px 26px rgba(10,37,64,.34);}
.contact-menu.open .cm-action,
.contact-menu.cm-expanded .cm-action{
  opacity:1;max-height:48px;
  overflow:visible; /* no recortar el .cm-tip externo */
  transform:translateY(0) scale(1);pointer-events:auto;
}
.contact-menu.open .cm-call,
.contact-menu.cm-expanded .cm-call{transition-delay:.04s;}
.contact-menu.open .cm-quote,
.contact-menu.cm-expanded .cm-quote{transition-delay:.1s;}
.cm-tip{position:absolute;right:calc(100% + 12px);top:50%;transform:translateY(-50%) translateX(6px);background:var(--navy);color:#fff;font-size:.74rem;font-weight:600;letter-spacing:.02em;white-space:nowrap;padding:.32rem .6rem;border-radius:7px;opacity:0;pointer-events:none;transition:opacity .18s ease,transform .18s ease;box-shadow:0 4px 14px rgba(10,37,64,.22);}
.cm-action:hover .cm-tip,
.cm-action:focus-visible .cm-tip,
.cm-main:hover .cm-tip,
.cm-main:focus-visible .cm-tip,
.cm-trigger:hover .cm-tip,
.cm-trigger:focus-visible .cm-tip{opacity:1;transform:translateY(-50%) translateX(0);}
.cm-dock{display:flex;align-items:center;justify-content:center;flex-shrink:0;}
.cm-main{position:relative;display:grid;place-items:center;width:58px;height:58px;border-radius:50%;background:#25D366;color:#fff;text-decoration:none;box-shadow:0 10px 26px rgba(37,211,102,.42);transition:transform .25s ease,box-shadow .25s ease;-webkit-tap-highlight-color:transparent;flex-shrink:0;}
.cm-main:hover{transform:translateY(-2px);box-shadow:0 14px 30px rgba(37,211,102,.5);}
.cm-main:active{transform:scale(.95);}
.cm-main::after{content:'';position:absolute;inset:0;border-radius:50%;background:#25D366;z-index:-1;animation:cmPulse 2.4s cubic-bezier(.25,.6,.3,1) infinite;}
@keyframes cmPulse{0%{transform:scale(1);opacity:.5;}70%{opacity:0;}100%{transform:scale(1.75);opacity:0;}}
.cm-trigger{
  width:32px;height:32px;min-width:32px;min-height:32px;
  border-radius:50%;border:2px solid #fff;background:var(--navy);color:#fff;
  display:grid;place-items:center;cursor:pointer;padding:0;
  box-shadow:0 3px 10px rgba(10,37,64,.35);
  opacity:.72;z-index:2;
  transition:opacity .3s ease,
             transform .36s cubic-bezier(.22,.85,.3,1.05),
             bottom .36s cubic-bezier(.22,.85,.3,1),
             right .36s cubic-bezier(.22,.85,.3,1),
             background .2s ease,box-shadow .2s ease;
  -webkit-tap-highlight-color:transparent;flex-shrink:0;
  position:relative;
}
.cm-trigger:hover{background:var(--navy2);opacity:1;}
.cm-trigger-ico{
  display:block;pointer-events:none;width:12px;height:12px;
  transition:transform .3s cubic-bezier(.4,.1,.3,1.2);
}
@keyframes cmTriggerIn{
  from{opacity:0;transform:scale(.72);}
  to{opacity:.72;transform:scale(1);}
}
.cm-trigger.cm-trigger--reveal{
  animation:cmTriggerIn .34s cubic-bezier(.22,.85,.3,1.1) both;
}
/* Colapsado: trigger a la izquierda del WhatsApp, anclado al borde derecho */
.contact-menu:not(.open):not(.cm-expanded){
  gap:0;
}
.contact-menu:not(.open):not(.cm-expanded) .cm-trigger,
.contact-menu.cm-expanded:not(.open) .cm-trigger{
  position:absolute;
  right:calc(58px + 9px);
  bottom:13px;
}
.contact-menu:not(.open):not(.cm-expanded) .cm-action{
  margin-top:calc(-1 * .8rem);
  transition-delay:0s;
}
/* Solo al abrir con clic el trigger sube a la columna */
.contact-menu.open .cm-trigger{
  position:relative;
  right:auto;
  bottom:auto;
  opacity:1;
}
.contact-menu.open .cm-trigger-ico,
.contact-menu.cm-expanded .cm-trigger-ico{transform:rotate(180deg);}
.contact-menu.cm-expanded .cm-trigger{opacity:1;}
@media (max-width:680px){
  .contact-menu{right:1rem;bottom:1rem;width:56px;}
  .contact-menu:not(.open):not(.cm-expanded) .cm-trigger,
  .contact-menu.cm-expanded:not(.open) .cm-trigger{
    right:calc(56px + 9px);
    bottom:12px;
  }
  .cm-main{width:56px;height:56px;}
  .cm-action{width:46px;height:46px;}
  .contact-menu.open .cm-action,
  .contact-menu.cm-expanded .cm-action{max-height:46px;}
  .cm-trigger{width:32px;height:32px;min-width:32px;min-height:32px;}
}
/* Leave space above FAB so it doesn't cover form submit on short phones */
@media (max-width:680px){
  #contacto .contact-form,
  .contact-form{padding-bottom:5.5rem;}
  .form-submit,.form-whatsapp{position:relative;z-index:1;}
}
@media (prefers-reduced-motion:reduce){.cm-main::after{animation:none;opacity:0;}}
.scroll-top-btn{opacity:0;pointer-events:none;transform:translateY(20px) scale(.9);visibility:visible;transition:opacity .35s ease,transform .35s cubic-bezier(.22,.7,.25,1),background .2s ease,box-shadow .2s ease;width:44px;height:44px;min-width:44px;min-height:44px;}
.scroll-top-btn.visible{opacity:.6;pointer-events:auto;transform:translateY(0) scale(1);}
.scroll-top-btn.visible:hover,.scroll-top-btn.visible:focus-visible{opacity:1;background:var(--navy);transform:translateY(-3px) scale(1.06);box-shadow:0 12px 28px rgba(13,50,96,.42);}
.scroll-top-btn.visible:active{transform:translateY(-1px) scale(1.02);}

/* React root must not break full-bleed layout */
#root{min-height:100%;background:#fff;}
html,body{background:#fff!important;}
body.home{background:#0D3260!important;}
body.home #root{background:transparent;}

/* Breakpoint alignment helper: nav already at 768; document shared rhythm */
:root{--bp-nav:768px;--bp-layout:880px;}
