/* ---------- Footer ---------- */
footer { padding: 90px 0 0; overflow: hidden; }
.f-contact { position: relative; text-align: center; padding: 50px 0 70px; }
.f-contact::before { content: ""; position: absolute; left: 50%; top: 22px; width: 240px; height: 120px; transform: translateX(-50%); border: 26px solid rgba(255,255,255,.05); border-radius: 100px; }
.f-contact a, .f-contact p { position: relative; display: block; letter-spacing: -.02em; }
.f-contact .ph { font-size: clamp(32px, 4.5vw, 48px); font-weight: 500; }
.f-contact .em { font-size: clamp(30px, 4.5vw, 48px); font-weight: 500; color: var(--accent); }
.f-contact .em:hover, .f-contact .ph:hover { opacity: .8; }
.f-contact p { font-size: 18px; margin-top: 10px; }
.f-links { display: grid; grid-template-columns: repeat(3, 1fr); gap: 24px; border-top: 1px solid var(--line); padding: 40px 0; }
.f-links h5 { font-size: 11px; font-weight: 500; text-transform: uppercase; letter-spacing: .08em; color: var(--dim); margin-bottom: 14px; }
.f-links a { display: block; font-size: 14px; color: var(--muted); padding: 3px 0; transition: color .3s; }
.f-links a:hover { color: var(--accent); }
.f-bar { display: flex; justify-content: space-between; align-items: center; border-top: 1px solid var(--line); padding: 22px 0; font-size: 10px; text-transform: uppercase; letter-spacing: .06em; color: var(--muted); }
.social { display: flex; gap: 12px; }
.social svg { width: 14px; height: 14px; fill: var(--muted); transition: fill .3s; }
.social a:hover svg { fill: var(--accent); }
/* Logos de VIEW Studio y VIEW Productions, lado a lado y a la misma altura */
.f-logos { display: flex; justify-content: center; align-items: center; gap: clamp(28px, 6vw, 90px); margin: 50px auto 60px; }
.f-logo { display: block; height: clamp(64px, 11vw, 150px); width: auto; max-width: 42%; object-fit: contain; }
.f-logos .f-logo + .f-logo { padding-left: clamp(28px, 6vw, 90px); border-left: 1px solid var(--line); }


@media (max-width: 600px) {
  .f-links { grid-template-columns: 1fr 1fr; }
  .f-bar { flex-direction: column; gap: 14px; text-align: center; }
}

/* Botón fijo de contacto (abajo a la izquierda): redondo y sin texto; al tocarlo se despliegan WhatsApp y llamada */
.contact-fab { position: fixed; left: 18px; bottom: 18px; z-index: 80; transition: opacity .3s; }
.call-fab { position: relative; display: grid; place-items: center; width: 58px; height: 58px; padding: 0; border: 0; border-radius: 50%; background: var(--accent); color: #fff; cursor: pointer; box-shadow: 0 12px 30px rgba(0,0,0,.45); transition: transform .3s, background .3s; }
.call-fab:hover { transform: translateY(-3px); background: #e0461c; }
.call-fab::before { content: ""; position: absolute; inset: 0; border-radius: inherit; border: 2px solid var(--accent); animation: callPulse 2.4s ease-out infinite; pointer-events: none; }
@keyframes callPulse { from { opacity: .8; transform: scale(1); } to { opacity: 0; transform: scale(1.4); } }
.call-fab svg { grid-area: 1 / 1; width: 26px; height: 26px; transition: transform .35s, opacity .25s; }
.call-fab .cf-ic { fill: #fff; }
.call-fab .cf-dots { fill: none; stroke: var(--accent); stroke-width: 2.4; stroke-linecap: round; }
.call-fab .cf-x { fill: none; stroke: #fff; stroke-width: 2.2; stroke-linecap: round; opacity: 0; transform: rotate(-90deg) scale(.6); }
.contact-fab.open .call-fab { background: #1c1c1e; }
.contact-fab.open .call-fab::before { animation: none; opacity: 0; }
.contact-fab.open .cf-ic { opacity: 0; transform: rotate(90deg) scale(.6); }
.contact-fab.open .cf-x { opacity: 1; transform: none; }
.cf-menu { position: absolute; left: 0; bottom: 70px; display: flex; flex-direction: column; align-items: flex-start; gap: 10px; pointer-events: none; }
.cf-opt { display: inline-flex; align-items: center; gap: 10px; height: 48px; padding: 0 18px 0 6px; border-radius: 999px; background: #fff; color: #111; font-size: 14px; font-weight: 600; white-space: nowrap; box-shadow: 0 12px 30px rgba(0,0,0,.4); opacity: 0; transform: translateY(14px) scale(.9); transform-origin: left bottom; transition: opacity .25s, transform .35s cubic-bezier(.2,.7,.2,1); }
.cf-opt svg { width: 36px; height: 36px; padding: 8px; border-radius: 50%; flex: none; fill: #fff; }
.cf-opt b { font-weight: 500; color: #555; margin-left: 2px; }
.cf-wa svg { background: #25d366; }
.cf-call svg { background: var(--accent); }
.cf-opt:hover { transform: translateX(4px); }
.contact-fab.open .cf-menu { pointer-events: auto; }
.contact-fab.open .cf-opt { opacity: 1; transform: none; }
.contact-fab.open .cf-opt:nth-child(1) { transition-delay: .05s; }
@media (max-width: 600px) {
  .contact-fab { left: 14px; bottom: 14px; }
  .call-fab { width: 56px; height: 56px; }
}
@media (prefers-reduced-motion: reduce) { .call-fab::before { animation: none; } }

/* Con el menú móvil abierto, el botón flotante no tapa los enlaces del menú (ahí ya está el teléfono) */
body.menu-open .contact-fab { opacity: 0; pointer-events: none; }

/* Enlaces legales en la barra inferior del pie */
.f-legal { display: flex; flex-wrap: wrap; justify-content: center; gap: 6px 18px; }
.f-legal a { color: var(--muted); transition: color .3s; }
.f-legal a:hover { color: #fff; }
