/* Carlo Global — floating contact bubble */
.cgb{position:fixed;inset-inline-end:20px;bottom:20px;z-index:60;font-family:var(--sans);color:var(--navy-deep)}
.cgb-btn{position:relative;width:60px;height:60px;border-radius:50%;border:0;padding:0;cursor:pointer;background:var(--navy);color:var(--paper-light);display:grid;place-items:center;box-shadow:0 0 0 2px rgba(239,237,232,.9),0 10px 30px rgba(20,38,74,.28);transition:transform .3s var(--ease),background .2s var(--ease);animation:cgbBob 4.5s ease-in-out 2s infinite}
.cgb-btn:hover{background:var(--navy-deep);transform:scale(1.06)}
.cgb-btn:focus-visible{outline:2px solid var(--navy);outline-offset:4px}
.cgb-btn svg{width:28px;height:28px;transition:transform .35s var(--ease),opacity .25s}
.cgb-btn .ic-x{position:absolute;opacity:0;transform:rotate(-90deg) scale(.6)}
.cgb.is-open .cgb-btn .ic-chat{opacity:0;transform:rotate(90deg) scale(.6)}
.cgb.is-open .cgb-btn .ic-x{opacity:1;transform:none}
.cgb.is-open .cgb-btn{animation:none}
/* pulse rings */
.cgb-btn::before,.cgb-btn::after{content:"";position:absolute;inset:0;border-radius:50%;border:1.5px solid var(--navy);opacity:0;animation:cgbRing 3.2s var(--ease) 1.2s infinite}
.cgb-btn::after{animation-delay:2.8s}
.cgb.is-open .cgb-btn::before,.cgb.is-open .cgb-btn::after,.cgb.seen .cgb-btn::before,.cgb.seen .cgb-btn::after{animation:none;opacity:0}
/* unread dot */
.cgb-dot{position:absolute;top:2px;inset-inline-end:2px;width:13px;height:13px;border-radius:50%;background:#C8873A;border:2px solid var(--paper);transform:scale(0);transition:transform .35s var(--ease)}
.cgb.has-teaser .cgb-dot{transform:scale(1)}
.cgb.seen .cgb-dot{transform:scale(0)}

/* teaser bubble */
.cgb-teaser{position:absolute;bottom:72px;inset-inline-end:0;width:max-content;max-width:260px;background:var(--paper-light);border:1px solid var(--line);padding:12px 36px 12px 16px;font-size:14px;line-height:1.45;box-shadow:0 12px 30px rgba(20,38,74,.14);opacity:0;transform:translateY(8px) scale(.96);transform-origin:bottom right;pointer-events:none;transition:opacity .4s var(--ease),transform .4s var(--ease)}
[dir=rtl] .cgb-teaser{padding:12px 16px 12px 36px;transform-origin:bottom left}
.cgb-teaser::after{content:"";position:absolute;bottom:-7px;inset-inline-end:22px;width:12px;height:12px;background:var(--paper-light);border-right:1px solid var(--line);border-bottom:1px solid var(--line);transform:rotate(45deg)}
.cgb-teaser b{display:block;color:var(--navy);font-weight:600}
.cgb-teaser button{position:absolute;top:6px;inset-inline-end:6px;width:26px;height:26px;border:0;background:none;color:var(--blue);cursor:pointer;font-size:18px;line-height:1}
.cgb.has-teaser:not(.is-open):not(.seen) .cgb-teaser{opacity:1;transform:none;pointer-events:auto;cursor:pointer}

/* panel */
.cgb-panel{position:absolute;bottom:76px;inset-inline-end:0;width:360px;max-width:calc(100vw - 32px);background:var(--paper-light);border:1px solid var(--line);box-shadow:0 24px 60px rgba(20,38,74,.22);opacity:0;transform:translateY(12px) scale(.97);transform-origin:bottom right;pointer-events:none;visibility:hidden;transition:opacity .35s var(--ease),transform .35s var(--ease),visibility 0s .35s}
[dir=rtl] .cgb-panel{transform-origin:bottom left}
.cgb.is-open .cgb-panel{opacity:1;transform:none;pointer-events:auto;visibility:visible;transition:opacity .35s var(--ease),transform .35s var(--ease)}
.cgb-head{background:var(--navy);color:var(--paper-light);padding:18px 20px 16px;display:flex;gap:14px;align-items:center}
.cgb-avatar{flex:none;width:44px;height:44px;border-radius:50%;background:var(--paper) url(/assets/monogram.png) center/58% auto no-repeat;position:relative}
.cgb-avatar::after{content:"";position:absolute;bottom:1px;inset-inline-end:1px;width:11px;height:11px;border-radius:50%;background:#5BAE7A;border:2px solid var(--navy)}
.cgb-head h2{margin:0;font-family:var(--serif);font-size:22px;line-height:1.1;font-weight:600;color:var(--paper-light)}
.cgb-head p{margin:3px 0 0;font-size:13px;color:#DCE1EA}
.cgb-body{padding:18px 20px 20px;display:flex;flex-direction:column;gap:12px}
.cgb-msg{background:var(--sugar);padding:12px 14px;font-size:14px;line-height:1.5;color:var(--navy-deep);border-radius:0 12px 12px 12px;max-width:92%;opacity:0;transform:translateY(6px)}
[dir=rtl] .cgb-msg{border-radius:12px 0 12px 12px}
.cgb.is-open .cgb-msg{animation:cgbIn .5s var(--ease) .15s forwards}
.cgb-form{display:flex;flex-direction:column;gap:10px}
.cgb-form label{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
.cgb-form input,.cgb-form textarea{font:inherit;font-size:15px;color:var(--navy-deep);background:#fff;border:1px solid var(--line);border-radius:2px;padding:10px 12px;width:100%;box-sizing:border-box}
.cgb-form textarea{height:96px;min-height:96px;max-height:96px;resize:none}
.cgb-form input:focus,.cgb-form textarea:focus{outline:none;border-color:var(--navy)}
.cgb-form [aria-invalid=true]{border-color:#B4483C}
.cgb-form .hp{display:none}
.cgb-send{display:flex;align-items:center;justify-content:center;gap:10px;font:inherit;font-weight:600;font-size:15px;background:var(--navy);color:var(--paper-light);border:0;border-radius:2px;padding:12px 16px;cursor:pointer;transition:background .2s var(--ease)}
.cgb-send:hover{background:var(--navy-deep)}
.cgb-send:disabled{opacity:.7;cursor:default}
.cgb-status{min-height:1em;margin:0;font-size:13px;color:var(--blue)}
.cgb-status.ok{color:#2F7A4F;font-weight:600}
.cgb-alt{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;border-top:1px solid var(--line);padding-top:14px}
.cgb-alt a{display:flex;flex-direction:column;align-items:center;gap:6px;padding:10px 4px;font-size:12.5px;font-weight:600;color:var(--navy);text-decoration:none;border:1px solid var(--line);border-radius:2px;transition:border-color .2s var(--ease),background .2s var(--ease)}
.cgb-alt a:hover{border-color:var(--navy);background:#fff}
.cgb-alt svg{width:20px;height:20px}

@keyframes cgbBob{0%,100%{transform:translateY(0)}50%{transform:translateY(-5px)}}
@keyframes cgbRing{0%{transform:scale(1);opacity:.55}100%{transform:scale(1.7);opacity:0}}
@keyframes cgbIn{to{opacity:1;transform:none}}
@media (max-width:600px){.cgb{inset-inline-end:16px;bottom:16px}.cgb-btn{width:56px;height:56px}.cgb-teaser{max-width:220px}}
@media (prefers-reduced-motion:reduce){.cgb-btn,.cgb-btn::before,.cgb-btn::after{animation:none}.cgb-msg{animation:none!important;opacity:1;transform:none}}
@media print{.cgb{display:none}}
/* never taller than the screen */
.cgb-panel{display:flex;flex-direction:column;max-height:calc(100vh - 112px);max-height:calc(100svh - 112px)}
.cgb-head{flex:none}
.cgb-body{overflow-y:auto;overscroll-behavior:contain}
