.contact-dock { position:fixed; right:24px; bottom:96px; z-index:1020; display:flex; flex-direction:column; gap:14px; transition:opacity .2s,visibility .2s; }
.contact-action { --contact-color:#168ff0; --contact-shadow:#168ff035; position:relative; display:flex; align-items:center; justify-content:center; width:53px; height:53px; padding:0; border:1px solid #ffffff75; border-radius:50%; background:var(--contact-color); color:#fff; box-shadow:0 6px 20px var(--contact-shadow); text-decoration:none; font-family:inherit; cursor:pointer; transition:transform .2s,box-shadow .2s; }
.contact-action-whatsapp { --contact-color:#1dbb65; --contact-shadow:#1dbb6535; }
.contact-action-enquiry { --contact-color:#8455dd; --contact-shadow:#8455dd35; }
.contact-action::before { content:""; position:absolute; inset:-1px; border:1px solid var(--contact-color); border-radius:inherit; pointer-events:none; animation:contact-ripple 5s ease-out infinite; }
.contact-action-whatsapp::before { animation-delay:1.6s; }
.contact-action-enquiry::before { animation-delay:3.2s; }
.contact-action-icon { display:grid; place-items:center; width:100%; height:100%; border-radius:inherit; }
.contact-action-icon > i { font-size:22px; line-height:1; }
.contact-action-call .contact-action-icon > i { animation:contact-ring 7s ease-in-out infinite; }
.contact-action-whatsapp .contact-action-icon > i { font-size:27px; }
.contact-action-label { position:absolute; right:calc(100% + 13px); top:50%; transform:translate(5px,-50%); padding:8px 13px; border-radius:8px; background:#fff; border:1px solid #e2eaf5; color:#233d5b; box-shadow:0 6px 20px #0b284319; font-size:12px; font-weight:600; white-space:nowrap; opacity:0; visibility:hidden; pointer-events:none; transition:opacity .2s,transform .2s,visibility .2s; }
.contact-action:hover,.contact-action:focus-visible { color:#fff; transform:translateY(-3px); box-shadow:0 9px 25px var(--contact-shadow); }
.contact-action:hover .contact-action-label,.contact-action:focus-visible .contact-action-label { opacity:1; visibility:visible; transform:translate(0,-50%); }
.contact-action:focus-visible { outline:3px solid #163d62; outline-offset:4px; }
body.modal-open .contact-dock,body.modal-open .back-to-top { opacity:0; visibility:hidden; pointer-events:none; }
@keyframes contact-ripple { 0%,10% { transform:scale(1); opacity:.45; } 30%,100% { transform:scale(1.38); opacity:0; } }
@keyframes contact-ring { 0%,4%,16%,100% { transform:rotate(0); } 6%,10%,14% { transform:rotate(-13deg); } 8%,12% { transform:rotate(13deg); } }
@media (max-width:767.98px) {
  body { padding-bottom:calc(88px + env(safe-area-inset-bottom,0px)); }
  .contact-dock { left:5%; right:5%; bottom:calc(12px + env(safe-area-inset-bottom,0px)); display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:0; padding:9px 5px; background:#fffffff5; backdrop-filter:blur(16px); border:1px solid #e0eaf5; border-radius:17px; box-shadow:0 7px 30px #15355324; }
  .contact-action { width:100%; height:43px; flex-direction:row; gap:6px; background:transparent; color:#304760; border:0; border-radius:10px; box-shadow:none; min-width:0; padding:0 4px; }
  .contact-action + .contact-action { border-left:1px solid #e8eef6; border-radius:0; }
  .contact-action::before { display:none; }
  .contact-action-icon { width:31px; height:31px; flex:0 0 31px; border-radius:10px; background:var(--contact-color); color:#fff; box-shadow:0 3px 9px var(--contact-shadow); }
  .contact-action-icon > i { font-size:14px; }
  .contact-action-whatsapp .contact-action-icon > i { font-size:19px; }
  .contact-action-enquiry .contact-action-icon { animation:contact-nudge 6s ease-in-out infinite; }
  .contact-action-label,.contact-action:hover .contact-action-label,.contact-action:focus-visible .contact-action-label { position:static; opacity:1; visibility:visible; transform:none; padding:0; border:0; background:none; color:inherit; box-shadow:none; font-size:10px; font-weight:600; }
  .contact-action:hover,.contact-action:focus-visible { color:var(--contact-color); transform:none; box-shadow:none; }
  .back-to-top { bottom:calc(101px + env(safe-area-inset-bottom,0px)); right:5%; }
}
@keyframes contact-nudge { 0%,8%,20%,100% { transform:translateY(0); } 12%,16% { transform:translateY(-3px); } }
@media (max-width:359.98px) {
  .contact-action { flex-direction:column; height:54px; gap:4px; }
  .contact-action + .contact-action { border-radius:0; }
  .contact-action-icon { width:28px; height:28px; flex-basis:28px; }
  .contact-action-label { font-size:9px; }
  body { padding-bottom:calc(100px + env(safe-area-inset-bottom,0px)); }
  .back-to-top { bottom:calc(113px + env(safe-area-inset-bottom,0px)); }
}
@media (prefers-reduced-motion:reduce) {
  .contact-dock,.contact-action,.contact-action-label { transition:none; }
  .contact-action::before { display:none; }
  .contact-action-icon,.contact-action-icon > i { animation:none !important; }
}
