/* Contact wheel — adapted from the supplied FAB animation. Scoped to this component. */
.qv-contact{--contact-green:#23704d;--contact-dark:#174b36;position:fixed;right:max(32px,env(safe-area-inset-right));bottom:calc(32px + env(safe-area-inset-bottom));width:64px;height:64px;z-index:950;font-family:inherit}
.qv-contact[hidden]{display:none!important}
.qv-contact *{box-sizing:border-box}
.qv-contact-toggle{position:absolute;inset:0;width:64px;height:64px;padding:0;border:1px solid #18573b;border-radius:50% 50% 6px 50%;background:var(--contact-green);box-shadow:0 5px 20px #23704d40;color:white;cursor:pointer;z-index:2;transition:background .3s,box-shadow .3s,transform .3s}
.qv-contact-toggle:before{content:"";position:absolute;inset:0;border-radius:50%;background:#ffffff0d;transition:inset .3s,background .3s}
.qv-contact-toggle[aria-expanded="true"]:before{inset:5%;background:#ffffff1a}
.qv-contact-dot{position:absolute;top:50%;width:8px;height:8px;border-radius:50%;background:white;transform:translateY(-50%);animation:qv-contact-blink 3s ease infinite;transition:all .3s ease}
.qv-contact-dot-1{left:15px}.qv-contact-dot-2{left:50%;transform:translate(-50%,-50%);animation-delay:.4s}.qv-contact-dot-3{right:15px;animation-delay:.8s}
@keyframes qv-contact-blink{50%{opacity:.25}}
.qv-contact.is-open .qv-contact-dot{height:4px;animation:none;opacity:1}
.qv-contact.is-open .qv-contact-dot-1{width:28px;border-radius:10px;left:50%;transform:translate(-50%,-50%) rotate(45deg)}
.qv-contact.is-open .qv-contact-dot-2{opacity:0;transform:translate(-50%,-50%) scale(0)}
.qv-contact.is-open .qv-contact-dot-3{width:28px;border-radius:10px;right:50%;transform:translate(50%,-50%) rotate(-45deg)}
.qv-contact-wheel{position:absolute;right:0;bottom:0;width:234px;height:234px;transform:scale(0);transform-origin:calc(100% - 32px) calc(100% - 32px);opacity:0;visibility:hidden;pointer-events:none;transition:transform .3s ease,opacity .2s,visibility 0s .3s}
.qv-contact.is-open .qv-contact-wheel{transform:scale(1);opacity:1;visibility:visible;pointer-events:auto;transition-delay:0s}
.qv-contact-action{position:absolute;display:flex;align-items:center;justify-content:center;width:56px;height:56px;border:2px solid #fff;border-radius:50%;background:var(--contact-dark);color:#fff;text-decoration:none;box-shadow:0 4px 14px #174b3633;transition:background .2s,transform .2s}
.qv-contact-action svg{width:24px;height:24px;flex:none;pointer-events:none}
.qv-contact-action-1{right:4px;bottom:170px}.qv-contact-action-2{right:86px;bottom:148px}.qv-contact-action-3{right:146px;bottom:88px}.qv-contact-action-4{right:170px;bottom:4px}
.qv-contact-label{position:absolute;top:calc(100% + 5px);left:50%;transform:translateX(-50%);padding:3px 7px;border:1px solid #e3ebe6;border-radius:5px;background:#fff;color:var(--contact-dark);white-space:nowrap;font-size:12px;font-weight:700;line-height:1.25;box-shadow:0 2px 5px #174b3610}
.qv-contact-detail{position:absolute;bottom:250px;right:0;width:276px;max-width:calc(100vw - 32px);padding:16px 18px;border:1px solid #dce8e1;border-radius:14px 14px 4px 14px;background:#fff;color:var(--contact-dark);box-shadow:0 5px 20px #174b361a;opacity:0;visibility:hidden;transform:translateY(8px);transition:opacity .2s,transform .2s,visibility 0s .2s;pointer-events:none}
.qv-contact-detail strong{display:block;font-size:15px;line-height:1.35;font-weight:700;margin-bottom:5px}
.qv-contact-detail span{display:block;font-size:14px;line-height:1.4;overflow-wrap:anywhere}
.qv-contact.is-open .qv-contact-detail{opacity:1;visibility:visible;transform:none;transition-delay:.1s}
.qv-contact-hint{position:absolute;right:76px;top:50%;transform:translateY(-50%);background:white;border:1px solid #dce8e1;border-radius:8px;padding:9px 13px;white-space:nowrap;font-size:14px;line-height:1.4;color:var(--contact-dark);box-shadow:0 3px 12px #174b3614;opacity:0;visibility:hidden;transition:opacity .2s}
.qv-contact-toggle:focus-visible{outline:3px solid var(--contact-dark);outline-offset:5px}
.qv-contact-action:focus-visible{outline:3px solid var(--contact-green);outline-offset:4px;background:var(--contact-green)}
.qv-contact:not(.is-open) .qv-contact-toggle:focus-visible~.qv-contact-hint{opacity:1;visibility:visible}
@media(hover:hover){.qv-contact-toggle:hover{background:#2c825b;box-shadow:0 5px 20px 4px #23704d38}.qv-contact-action:hover{background:#2c825b;transform:translateY(-3px)}.qv-contact:not(.is-open) .qv-contact-toggle:hover~.qv-contact-hint{opacity:1;visibility:visible}}
@media(max-width:600px){.qv-contact{right:max(20px,env(safe-area-inset-right));bottom:calc(32px + env(safe-area-inset-bottom))}}
@media(max-height:440px){.qv-contact-detail{display:none}}
@media(prefers-reduced-motion:reduce){.qv-contact *,.qv-contact *:before{animation:none!important;transition:none!important}}
