.chat-launcher-wrap{position:fixed;right:22px;bottom:22px;z-index:90}.chat-launcher{display:flex;align-items:center;gap:11px;border:1px solid #d7b653;background:#122b58;color:#fff;padding:9px 15px 9px 9px;border-radius:999px;box-shadow:0 18px 45px #06132c55;cursor:pointer}.chat-launcher img{width:44px;height:44px;border-radius:50%;object-fit:cover}.chat-launcher span{display:grid;text-align:left}.chat-launcher b{font:700 13px Manrope}.chat-launcher small{color:#d9e5f6;font-size:10px;margin-top:2px}.chat-panel{position:fixed;right:22px;bottom:92px;z-index:100;width:min(380px,calc(100vw - 28px));height:min(610px,calc(100vh - 120px));background:#fff;color:#172442;border:1px solid #bcc9dc;box-shadow:0 26px 75px #06132c66;display:grid;grid-template-rows:auto auto minmax(0,1fr) auto auto}.chat-panel[hidden]{display:none}.chat-panel>header{display:flex;justify-content:space-between;align-items:center;padding:15px 16px;background:#163462;color:#fff}.chat-panel>header>div{display:flex;align-items:center;gap:10px;min-width:0}.chat-panel header img{width:42px;height:42px;border-radius:50%;object-fit:cover;flex:none}.chat-panel header p{display:grid;margin:0;min-width:0}.chat-panel header p b,.chat-panel header span{overflow:hidden;text-overflow:ellipsis}.chat-panel header span{font-size:11px;color:#dce7f7;line-height:1.35}.chat-panel header i{display:inline-block;width:7px;height:7px;border-radius:50%;background:#53d394;margin-right:5px}.chat-panel header button{border:0;background:transparent;color:#fff;font-size:25px;cursor:pointer;flex:none}.chat-messages{overflow:auto;padding:18px;background:#f4f7fb;display:flex;flex-direction:column;gap:10px}.chat-message{max-width:82%;padding:11px 13px;border-radius:12px;font-size:13px;line-height:1.5}.chat-message.bot{background:#fff;border:1px solid #d8e0ec;align-self:flex-start}.chat-message.user{background:#163462;color:#fff;align-self:flex-end}.chat-message.system{max-width:100%;background:#fff5d6;border:1px solid #e6c86e;color:#594719;font-size:11px}.chat-lead{padding:15px;display:grid;gap:8px}.chat-lead p{font-size:12px;margin:0 0 3px}.chat-lead label{display:grid;gap:4px;font-size:10px;font-weight:700}.chat-lead input,.chat-compose textarea{border:1px solid #bdc9dc;padding:10px;font:13px DM Sans}.chat-lead button,.chat-compose button{border:0;background:#d9ad3c;color:#111a32;padding:11px;font-weight:800;cursor:pointer}.chat-lead small{color:#697386;font-size:9px;line-height:1.4}.chat-compose{padding:12px;border-top:1px solid #dbe2ed;display:grid;grid-template-columns:1fr auto;gap:8px}.chat-compose button{align-self:stretch}.chat-panel>footer{display:flex;justify-content:space-between;align-items:center;padding:8px 12px;border-top:1px solid #e1e6ee;font-size:9px;color:#667186}.chat-panel>footer button{border:0;background:transparent;color:#183b70;font-weight:800;cursor:pointer}@media(max-width:600px){.chat-launcher-wrap{right:14px;bottom:14px}.chat-launcher span{display:none}.chat-launcher{padding:7px}.chat-panel{inset:8px;width:auto;height:auto;border-radius:0}.chat-panel>header{padding-top:max(15px,env(safe-area-inset-top))}}

/* Consent block - Part E intake wording */
.chat-lead .chat-notice{
  font-size:11.5px;
  line-height:1.5;
  color:#4a5a75;
  background:#eef3fb;
  border-left:3px solid #b9c9e2;
  padding:9px 11px;
  margin:10px 0 4px;
}
.chat-lead .chat-consent{
  display:flex;
  align-items:flex-start;
  gap:9px;
  font-size:11.5px;
  line-height:1.45;
  font-weight:400;
  color:#2b3a55;
  margin:9px 0;
  cursor:pointer;
  text-transform:none;
  letter-spacing:normal;
}
.chat-lead .chat-consent input[type=checkbox]{
  flex:none;
  width:17px;
  height:17px;
  margin:1px 0 0;
  accent-color:#1d4f8f;
  cursor:pointer;
}
.chat-lead small a{color:#1d4f8f;text-decoration:underline}

/* The [hidden] attribute must beat the display rules on .chat-lead /
   .chat-compose, otherwise the intake form never disappears after the
   conversation starts and the widget looks broken. */
.chat-panel [hidden],
#chat-lead-form[hidden],
#chat-message-form[hidden],
#request-human[hidden]{display:none!important}

.chat-actions{display:flex;flex-wrap:wrap;gap:7px;max-width:92%;align-self:flex-start}.chat-actions button,.chat-actions a{border:1px solid #c59b2d;background:#fff;color:#163462;padding:9px 11px;border-radius:8px;font:700 11px Manrope;text-decoration:none;cursor:pointer}.chat-actions button:first-child,.chat-actions a{background:#d9ad3c;color:#111a32}.chat-actions button:focus-visible,.chat-actions a:focus-visible{outline:3px solid #86aee6;outline-offset:2px}

/* Availability bar -------------------------------------------------------
   Injected by chat.js directly after the panel header. It must never claim
   Blessing is online unless the admin heartbeat actually says so. */
.chat-presence{display:grid;grid-template-columns:auto 1fr;gap:2px 8px;align-items:center;
  padding:9px 14px;font:600 12px Manrope;border-bottom:1px solid #dbe2ed;background:#f7f9fc;color:#233a5e}
.chat-presence i{grid-row:span 2;font-style:normal;font-size:13px;line-height:1}
.chat-presence small{grid-column:2;font:400 11px DM Sans;color:#5b6b85;line-height:1.4}
.chat-presence.online{background:#eefaf3;border-bottom-color:#bfe6d1}
.chat-presence.online i{color:#1c8b53}
.chat-presence.recent{background:#fff8e8;border-bottom-color:#ecd79c}
.chat-presence.recent i{color:#b3831a}
.chat-presence.offline{background:#f4f6fa}
.chat-presence.offline i{color:#8b98ad}

/* A reply from a real person must not look identical to the bot. */
.chat-message.human{background:#eef4ff;border:1px solid #b9cdef;align-self:flex-start}
.chat-message.human b{display:block;font:800 10px Manrope;letter-spacing:.08em;
  text-transform:uppercase;color:#1d4f8f;margin-bottom:3px}

/* The sticky mobile "Book a free call" bar and the chat launcher both live at
   the bottom right. Lift the launcher clear of it so they stop overlapping. */
@media(max-width:600px){
  .chat-launcher-wrap{bottom:calc(14px + 56px)}
  .chat-panel{bottom:70px;top:8px}
}

/* Mobile launcher must explain itself instead of looking like an unlabeled
   profile button. This later rule intentionally overrides the older compact
   circle treatment above. */
@media(max-width:600px){
  .chat-launcher-wrap{right:12px;max-width:calc(100vw - 24px)}
  .chat-launcher{gap:8px;padding:7px 11px 7px 7px}
  .chat-launcher img{width:38px;height:38px}
  .chat-launcher span{display:grid}
  .chat-launcher b{font-size:12px}
  .chat-launcher small{font-size:9px;white-space:nowrap}
}

#chat-contact-form[hidden]{display:none!important}
.chat-secondary{background:#fff!important;color:#163462!important;border:1px solid #bdc9dc!important}

/* Explicit rows prevent hidden alternate forms from confusing grid placement
   and stretching the small presence strip into the main content area. */
.chat-panel>header{grid-row:1}
.chat-panel>.chat-presence{grid-row:2;align-self:start;height:auto}
.chat-panel>.chat-messages{grid-row:3;min-height:0}
.chat-panel>.chat-lead,.chat-panel>.chat-compose{grid-row:4;max-height:46vh;overflow:auto}
.chat-panel>footer{grid-row:5}

@media(max-width:600px){
  /* Keep the welcome state compact; expand to the full mobile chat only after
     the visitor starts a conversation. */
  .chat-panel:has(#chat-lead-form:not([hidden])){inset:auto 8px 70px!important;height:auto!important;max-height:calc(100vh - 86px)}
}
