/* Concierge: fixed UI that sits outside the scaled .page canvas */
.tbc { --tbc-navy:#091d51; --tbc-blue:#177beb; --tbc-ice:#d7dfe2; font-family: Inter, system-ui, sans-serif; color:#0b1530; }
.tbc[hidden], .tbc [hidden] { display:none !important; }
.tbc *, .tbc *::before, .tbc *::after { box-sizing:border-box; }
.tbc__sr { position:absolute; width:1px; height:1px; overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap; }

.tbc__launcher {
  position:fixed; right:max(24px, env(safe-area-inset-right)); bottom:max(24px, env(safe-area-inset-bottom)); z-index:61;
  display:flex; align-items:center; gap:8px; height:42px; padding:0 18px 0 14px; border:1px solid rgba(9,29,81,.12); border-radius:21px;
  background:#fff; color:var(--tbc-navy); font:500 13.5px/1 Inter, system-ui, sans-serif; letter-spacing:.04em; cursor:pointer;
  box-shadow:0 10px 26px -6px rgba(8,21,56,.28), 0 1px 0 rgba(9,29,81,.04);
  transition:translate .3s cubic-bezier(.2,.7,.2,1), box-shadow .3s ease, opacity .45s ease, background .3s ease;
}
/* While the page moves it recedes (still legible); it returns when scrolling stops or on touch, hover or focus */
.tbc.is-scrolling .tbc__launcher { opacity:.9; }
.tbc .tbc__launcher:hover, .tbc .tbc__launcher:focus-visible, .tbc .tbc__launcher:active { opacity:1; background:#fff; border-color:rgba(23,123,235,.45); transition-duration:.2s; }
.tbc__launcher:hover { translate:0 -3px; box-shadow:0 18px 34px -8px rgba(8,21,56,.36), 0 0 0 4px rgba(23,123,235,.10); }
.tbc__launcher:focus-visible, .tbc__close:focus-visible, .tbc__send:focus-visible, .tbc__chip:focus-visible, .tbc__action:focus-visible, .tbc__link:focus-visible { outline:2px solid var(--tbc-blue); outline-offset:3px; }
.tbc__launcher-bird { display:block; width:32px; height:32px; flex:none; border-radius:50%; background:var(--tbc-navy); margin-left:-6px; object-fit:cover; }
.tbc.is-open .tbc__launcher, .tbc.is-away .tbc__launcher { opacity:0; pointer-events:none; translate:0 8px; }
.tbc.is-away .tbc__hint, .tbc.is-scrolling .tbc__hint { display:none; }
@supports not ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))) { .tbc__launcher { background:#fff; } }

.tbc__hint {
  position:fixed; right:max(24px, env(safe-area-inset-right)); bottom:calc(max(24px, env(safe-area-inset-bottom)) + 54px); z-index:61; margin:0;
  max-width:230px; padding:12px 16px; border-radius:14px 14px 4px 14px; background:#fff; color:var(--tbc-navy); font-size:13.5px; line-height:1.4;
  box-shadow:0 12px 30px rgba(8,21,56,.18); animation:tbc-pop .5s cubic-bezier(.2,.7,.2,1) both;
}

.tbc__panel {
  position:fixed; right:max(24px, env(safe-area-inset-right)); bottom:max(24px, env(safe-area-inset-bottom)); z-index:62;
  display:flex; flex-direction:column; width:390px; height:min(590px, calc(100dvh - 48px)); overflow:hidden;
  background:#f5f5f5; border-radius:20px; border:1px solid rgba(9,29,81,.1); outline:0;
  box-shadow:0 30px 70px rgba(8,21,56,.34), 0 4px 14px rgba(8,21,56,.12);
  opacity:0; transform:translateY(18px) scale(.98); transform-origin:100% 100%; pointer-events:none;
  transition:opacity .3s ease, transform .35s cubic-bezier(.2,.7,.2,1);
}
.tbc.is-open .tbc__panel { opacity:1; transform:none; pointer-events:auto; }

.tbc__head { position:relative; display:flex; align-items:center; gap:14px; padding:20px 18px 20px 22px; background:linear-gradient(160deg,#0f2a6b,#091d51 75%); color:#fff; overflow:hidden; flex:none; }
.tbc__lines { position:absolute; right:-60px; top:-40px; width:330px; opacity:.16; pointer-events:none; }
.tbc__bird { position:relative; flex:none; width:40px; height:40px; padding:0; border-radius:50%; object-fit:cover; background:var(--tbc-navy); border:1px solid rgba(255,255,255,.28); }
.tbc__title-wrap { position:relative; flex:1; min-width:0; }
.tbc__title { margin:0; font:500 18px/1.2 Inter, system-ui, sans-serif; letter-spacing:.02em; color:#fff; }
.tbc__sub { margin:3px 0 0; font-size:12px; line-height:1.3; letter-spacing:.04em; color:rgba(255,255,255,.72); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.tbc__close { position:relative; flex:none; display:grid; place-items:center; width:36px; height:36px; padding:0; border:1px solid rgba(255,255,255,.22); border-radius:50%; background:transparent; color:#fff; cursor:pointer; transition:background .2s ease; }
.tbc__close:hover { background:rgba(255,255,255,.12); }
.tbc__close svg { width:16px; height:16px; fill:none; stroke:#fff; stroke-width:1.6; stroke-linecap:round; }

.tbc__log { flex:1; overflow-y:auto; overscroll-behavior:contain; padding:20px 18px 8px; display:flex; flex-direction:column; gap:10px; scrollbar-width:thin; }
.tbc__row { display:flex; flex-direction:column; max-width:88%; animation:tbc-rise .35s cubic-bezier(.2,.7,.2,1) both; }
.tbc__row--bot { align-self:flex-start; align-items:flex-start; }
.tbc__row--user { align-self:flex-end; align-items:flex-end; }
.tbc__bubble { margin:0; padding:12px 15px; font-size:14.5px; line-height:1.5; overflow-wrap:anywhere; }
.tbc__row--bot .tbc__bubble { background:rgba(255,255,255,.92); color:#0b1530; border:1px solid rgba(9,29,81,.08); border-radius:4px 16px 16px 16px; box-shadow:0 1px 2px rgba(8,21,56,.05); }
.tbc__row--user .tbc__bubble { background:var(--tbc-navy); color:#fff; border-radius:16px 16px 4px 16px; }
.tbc__list { list-style:none; margin:8px 0 0; padding:4px 15px; width:100%; background:#fff; border:1px solid rgba(9,29,81,.08); border-radius:12px; }
.tbc__list li { display:flex; flex-direction:column; gap:3px; padding:11px 0; font-size:14px; line-height:1.4; }
.tbc__list li + li { border-top:1px solid rgba(9,29,81,.08); }
.tbc__list strong { font-weight:600; color:var(--tbc-navy); }
.tbc__list-body { font-size:13px; line-height:1.5; color:#46536f; }
.tbc__link { color:var(--tbc-navy); font-weight:600; text-decoration:none; background:linear-gradient(var(--tbc-blue),var(--tbc-blue)) 0 100%/0 1px no-repeat; transition:background-size .3s ease, color .2s ease; }
.tbc__link:hover { color:var(--tbc-blue); background-size:100% 1px; }
.tbc__link::after { content:" \2192"; }
.tbc__actions { display:flex; flex-direction:column; gap:8px; margin-top:8px; width:100%; }
.tbc__action { display:flex; align-items:center; justify-content:center; min-height:44px; padding:10px 16px; cursor:pointer; -webkit-tap-highlight-color:transparent; border-radius:12px; background:var(--tbc-navy); color:#fff; font-size:14px; font-weight:500; text-align:center; text-decoration:none; overflow-wrap:anywhere; transition:background .2s ease, translate .2s ease; }
.tbc__action:hover { background:#0f2a6b; translate:0 -1px; }
.tbc__action--ghost { background:#fff; color:var(--tbc-navy); border:1px solid rgba(9,29,81,.2); }
.tbc__action--ghost:hover { background:#eef3f6; }
.tbc__chips { display:flex; flex-wrap:wrap; gap:8px; padding-top:2px; animation:tbc-rise .35s .1s cubic-bezier(.2,.7,.2,1) both; }
.tbc__chip { padding:9px 14px; border:1px solid var(--tbc-blue); border-radius:20px; background:#fff; color:#0f5fb8; font:500 13.5px/1.2 Inter, system-ui, sans-serif; cursor:pointer; text-align:left; transition:background .2s ease, color .2s ease; }
.tbc__chip:hover { background:var(--tbc-blue); color:#fff; }
.tbc__typing .tbc__bubble { display:flex; gap:5px; padding:15px 16px; }
.tbc__typing i { width:6px; height:6px; border-radius:50%; background:#8a97b3; animation:tbc-dot 1s infinite ease-in-out; }
.tbc__typing i:nth-child(2) { animation-delay:.15s; } .tbc__typing i:nth-child(3) { animation-delay:.3s; }

.tbc__form { flex:none; display:flex; align-items:center; gap:8px; margin:6px 14px 0; padding:6px 6px 6px 16px; background:#fff; border:1px solid rgba(9,29,81,.14); border-radius:26px; transition:border-color .2s ease, box-shadow .2s ease; }
.tbc__form:focus-within { border-color:var(--tbc-blue); box-shadow:0 0 0 3px rgba(23,123,235,.15); }
.tbc__input { flex:1; min-width:0; height:36px; border:0; outline:0; background:transparent; color:#0b1530; font:400 16px/1 Inter, system-ui, sans-serif; }
.tbc__input::placeholder { color:#7b88a3; }
.tbc__send { flex:none; display:grid; place-items:center; width:38px; height:38px; padding:0; border:0; border-radius:50%; background:var(--tbc-navy); cursor:pointer; transition:background .2s ease; }
.tbc__send:hover { background:var(--tbc-blue); }
.tbc__send svg { width:18px; height:18px; fill:none; stroke:#fff; stroke-width:1.8; stroke-linecap:round; stroke-linejoin:round; }
.tbc__note { flex:none; margin:0; padding:9px 20px 14px; font-size:11px; line-height:1.45; color:#6a7690; text-align:center; }

@media (max-width: 899px) {
  .tbc__launcher { right:max(16px, env(safe-area-inset-right)); bottom:max(16px, env(safe-area-inset-bottom)); height:42px; padding:0 17px 0 13px; border-radius:21px; font-size:13px; }
  .tbc__launcher-bird { width:28px; height:28px; }
  .tbc__hint { right:max(16px, env(safe-area-inset-right)); bottom:calc(max(16px, env(safe-area-inset-bottom)) + 50px); }
  .tbc__panel { left:0; right:0; bottom:0; width:100%; height:min(82dvh, 680px); border-radius:22px 22px 0 0; transform:translateY(40px); transform-origin:50% 100%; }
  .tbc__row { max-width:92%; }
  .tbc__note { padding-bottom:max(14px, env(safe-area-inset-bottom)); }
}
body:has(.field__picker.is-open, .field__country.is-open) .tbc__launcher { visibility:hidden; }

@keyframes tbc-rise { from { opacity:0; transform:translateY(8px); } to { opacity:1; transform:none; } }
@keyframes tbc-pop { from { opacity:0; transform:translateY(8px) scale(.96); } to { opacity:1; transform:none; } }
@keyframes tbc-dot { 0%,80%,100% { opacity:.3; transform:translateY(0); } 40% { opacity:1; transform:translateY(-3px); } }
@media (prefers-reduced-motion: reduce) { .tbc.is-scrolling .tbc__launcher { opacity:1; }
  .tbc *, .tbc__panel { animation:none !important; transition:none !important; }
}

.tbc__note-link { color:var(--tbc-navy); font-weight:600; text-decoration:underline; text-underline-offset:2px; text-decoration-color:var(--tbc-blue); }
.tbc__note-link:hover { color:var(--tbc-blue); }
.tbc__note-link:focus-visible { outline:2px solid var(--tbc-blue); outline-offset:2px; border-radius:2px; }

/* Brand silk wash behind the conversation: the same home-services-bg artwork and .32 strength as
   the site's text sections, mirrored down the log so the waves join; messages sit above it. */
.tbc__panel::before { content:""; position:absolute; inset:0; z-index:0; pointer-events:none; opacity:.32;
  background:url(../assets/img/text-wash-tile.webp) 50% 0 / 200% auto repeat-y; }
.tbc__panel::after { content:""; position:absolute; left:0; right:0; bottom:0; height:160px; z-index:0; pointer-events:none; background:linear-gradient(180deg,transparent,#f5f5f5); }
.tbc__panel > * { position:relative; z-index:1; }

/* Launcher: a plain round navy control with the Thunderbird symbol. "Assist" stays for screen readers. */
.tbc .tbc__launcher { width:50px; height:50px; padding:0; gap:0; justify-content:center; border:0; border-radius:50%; color:#fff; background:#0c2561; box-shadow:0 0 0 1.5px rgba(255,255,255,.55), 0 12px 28px -6px rgba(8,21,56,.5); }
.tbc .tbc__launcher:hover, .tbc .tbc__launcher:focus-visible, .tbc .tbc__launcher:active { background:#0c2561; border-color:transparent; }
.tbc__launcher-bird { position:relative; width:24px; height:24px; margin:0; background:none; border-radius:0; object-fit:contain; }
.tbc__launcher-label { position:absolute; width:1px; height:1px; overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap; }
.tbc__hint { bottom:calc(max(24px, env(safe-area-inset-bottom)) + 62px); }
@media (max-width: 899px) {
  .tbc .tbc__launcher { width:46px; height:46px; padding:0; border-radius:50%; }
  .tbc__launcher-bird { width:22px; height:22px; }
  .tbc__hint { bottom:calc(max(16px, env(safe-area-inset-bottom)) + 58px); }
}
