.soi-floating-contact {
  position: fixed;
  z-index: 55;
  right: max(20px, env(safe-area-inset-right, 0px));
  bottom: max(20px, env(safe-area-inset-bottom, 0px));
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: 10px;
  width: 176px;
}
.soi-contact-action {
  display: flex;
  align-items: center;
  justify-content: flex-start;
  gap: 10px;
  width: 100%;
  min-height: 56px;
  padding: 10px 14px;
  border: 1px solid #ffffff40;
  border-radius: 14px;
  color: #fff;
  box-shadow: 0 4px 18px #25111726;
  text-decoration: none;
  transition: transform .15s ease, box-shadow .15s ease;
}
.soi-contact-hotline { background: #ad112a; }
.soi-contact-zalo { background: #0867d7; }
.soi-contact-messenger { background: #6242cf; }
.soi-contact-action:hover {
  color: #fff;
  transform: translateY(-2px);
  box-shadow: 0 6px 24px #25111738;
}
.soi-contact-action:focus-visible { outline: 3px solid #ffcf4f; outline-offset: 3px; }
.soi-contact-action svg { display: block; width: 24px; height: 24px; flex: 0 0 24px; }
.soi-contact-text { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.soi-contact-text strong { font-size: 14px; font-weight: 700; line-height: 1.3; white-space: nowrap; }
.soi-contact-text small { font-size: 12px; line-height: 1.3; letter-spacing: .03em; }
@media(max-width:767px) {
  body.soi-has-floating-contact { padding-bottom: calc(76px + env(safe-area-inset-bottom, 0px)); }
  .soi-floating-contact {
    left: 0;
    right: 0;
    bottom: 0;
    width: 100%;
    grid-template-columns: repeat(var(--soi-contact-count, 3), minmax(0, 1fr));
    gap: 8px;
    padding: 8px max(12px, env(safe-area-inset-right, 0px)) calc(8px + env(safe-area-inset-bottom, 0px)) max(12px, env(safe-area-inset-left, 0px));
    border-top: 1px solid #eee1e5;
    background: #fff;
    box-shadow: 0 -4px 22px #25111712;
  }
  .soi-contact-action { justify-content: center; min-height: 44px; padding: 8px 4px; gap: 5px; border-radius: 10px; box-shadow: none; }
  .soi-contact-action svg { width: 20px; height: 20px; flex-basis: 20px; }
  .soi-contact-text strong { font-size: 11px; }
  .soi-contact-text small { display: none; }
}
@media(prefers-reduced-motion:reduce) {
  .soi-contact-action { transition: none; }
  .soi-contact-action:hover { transform: none; }
}
@media print {
  .soi-floating-contact { display: none; }
  body.soi-has-floating-contact { padding-bottom: 0; }
}
