:root{
  --du-navy:#1b2340;      /* brand navy, also used as the header color */
  --du-red:#c8102e;       /* brand red, matches nav/buttons across the site */
  --du-red-dark:#a30d26;
  --bg:#eef1fb;           /* light lavender window background */
  --fg:#1b2340;           /* body text on light background */
  --muted:#7280a3;
  --bubble:#e4e9fb;       /* bot bubble, slightly deeper than window bg */
  --client:#ffffff;       /* user bubble */
  --chip-border:#c9d3f2;
  --shadow:0 12px 34px rgba(2,6,23,.4);
  --radius:18px;
}
*{box-sizing:border-box}

/* Floating launcher */
.launcher{
  position:fixed;right:20px;bottom:20px;z-index:9999;
  width:60px;height:60px;border-radius:28% 28% 28% 8%;
  background:linear-gradient(135deg,var(--du-red),var(--du-red-dark));color:#fff;
  display:grid;place-items:center;
  box-shadow:var(--shadow);cursor:pointer;border:none;font-size:24px;line-height:0;
  transition:transform .15s ease;
}
.launcher:hover{transform:scale(1.06) rotate(-4deg)}
.launcher:focus-visible{outline:3px solid #fff;outline-offset:3px}
.launcher--pulse{animation:du-pulse 1.6s ease-out 3}
@keyframes du-pulse{
  0%{box-shadow:0 0 0 0 rgba(200,16,46,.55),var(--shadow)}
  100%{box-shadow:0 0 0 16px rgba(200,16,46,0),var(--shadow)}
}

/* Chat window */
.chat{
  position:fixed;right:20px;bottom:92px;z-index:9999;width:370px;max-width:92vw;
  margin:0;font-family:system-ui,-apple-system,"Segoe UI",Roboto,Inter,Helvetica,Arial,sans-serif;
  background:var(--bg);color:var(--fg);border-radius:24px;box-shadow:var(--shadow);
  display:none;flex-direction:column;overflow:hidden;
  /*border:1px solid rgba(27,35,64,.08);*/
}
.chat.visible{display:flex}

.chat__head{
  position:relative;display:flex;gap:10px;align-items:center;padding:16px 16px 20px;
  background:linear-gradient(135deg,var(--du-navy) 0%,#2a3563 60%,var(--du-red-dark) 130%);
  border-radius:24px 24px 0 0;
}
.chat__head::after{
  content:'';position:absolute;left:16px;right:16px;bottom:0;height:3px;border-radius:3px;
  background:linear-gradient(90deg,var(--du-red),transparent);
}
.chat__logo{
  width:38px;height:38px;border-radius:30% 30% 30% 10%;flex:none;
  background:linear-gradient(135deg,var(--du-red),var(--du-red-dark));
  display:grid;place-items:center;font-weight:700;font-size:14px;color:#fff;
}
.chat__title{font-weight:700;font-size:15px;color:#fff}
.chat__sub{font-size:12px;color:#c7cee6;display:flex;align-items:center;gap:5px}
.chat__sub::before{content:'';width:7px;height:7px;border-radius:50%;background:#22c55e;display:inline-block}
.chat__close{margin-left:auto;background:transparent;border:none;color:#fff;font-size:18px;cursor:pointer;opacity:.8}
.chat__close:hover{opacity:1}

.chat__body{height:400px;overflow-y:auto;padding:16px;scroll-behavior:smooth}
.msg{display:inline-block;max-width:90%;padding:10px 13px;border-radius:14px;margin:6px 0;line-height:1.4;font-size:13px;clear:both; letter-spacing:-0.2px;}
.msg.bot{background:var(--bubble);color:var(--fg);border-top-left-radius:4px;float:left}
.msg.users{background:var(--client);color:var(--fg);border:1px solid var(--chip-border);border-bottom-right-radius:4px;float:right;text-align:right}
.msg a{color:#fff;font-weight:600}
.msg.users a{color:var(--du-red-dark)}
.chat__body::after{content:'';display:block;clear:both}

/* Office-location detail card */
.msg--card{
  max-width:100%;width:100%;padding:0;background:transparent;float:none;display:block;
}
.office-card{
  background:#fff;border:1px solid var(--chip-border);border-radius:14px;
  padding:14px;text-align:center;box-shadow:0 2px 10px rgba(27,35,64,.06);
}
.office-card__icon{
  width:42px;height:42px;margin:0 auto 6px;border-radius:50%;
  background:#fdecef;display:grid;place-items:center;font-size:17px;
}
.office-card__name{font-size:14.5px;font-weight:700;color:var(--fg);margin-bottom:8px}
.office-card__section{text-align:left}
.office-card__label{
  font-size:10.5px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;
  color:var(--muted);margin-bottom:2px;
}
.office-card__text{font-size:12.5px;color:var(--fg);line-height:1.35}
.office-card__phone{font-size:12.5px;font-weight:600;color:var(--du-red)}
.office-card__divider{border:none;border-top:1px solid var(--chip-border);margin:8px 0}

/* Booking card */
.booking-card{
  background:linear-gradient(165deg,#ffffff 50%,#fff0f2 100%);
  border:1px solid var(--chip-border);border-radius:16px;
  padding:16px;box-shadow:0 2px 10px rgba(27,35,64,.07);
}

/* Standalone warning banner for chat messages (lookup failures, validation errors) */
.chat-warning{
  display:flex;align-items:center;gap:8px;background:#fef6dd;color:#8a6d1d;
  border:1px solid #f4e2a1;border-radius:10px;padding:9px 12px;
  font-size:12.5px;font-weight:600;margin:6px 0;clear:both;max-width:85%;float:left;
}
.booking-btn{
  display:flex;align-items:center;justify-content:center;gap:8px;width:100%;
  padding:12px;border-radius:999px;font-size:13px;font-weight:700;text-decoration:none;
  margin-bottom:16px;transition:transform .15s ease,box-shadow .15s ease;
}
.booking-btn--solid{
  background:linear-gradient(135deg,var(--du-red),var(--du-red-dark));color:#fff;
  box-shadow:0 4px 12px rgba(200,16,46,.4);
}
.booking-btn--solid:hover{transform:translateY(-1px);box-shadow:0 6px 16px rgba(200,16,46,.45)}
.booking-card__label{
  font-size:10.5px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;
  color:var(--du-navy);margin-bottom:12px;
}
.booking-steps{position:relative;display:flex;flex-direction:column;gap:14px;padding-left:2px}
.booking-steps::before{
  content:'';position:absolute;left:12px;top:6px;bottom:6px;width:2px;
  background:linear-gradient(to bottom,var(--du-red),rgba(200,16,46,.1));
}
.booking-step{display:flex;align-items:flex-start;gap:12px;font-size:12.5px;color:var(--fg);line-height:1.4;position:relative}
.booking-step__num{
  position:relative;z-index:1;flex:none;width:25px;height:25px;border-radius:50%;
  background:linear-gradient(135deg,var(--du-red),var(--du-red-dark));color:#fff;
  display:grid;place-items:center;font-size:11px;font-weight:700;
  box-shadow:0 2px 6px rgba(200,16,46,.4);
}

.quick{display:flex;flex-wrap:wrap;gap:8px;margin:10px 0;clear:both}
.chip{
  border:1px solid var(--chip-border);background:#ffffff;color:var(--du-navy);
  padding:7px 12px;border-radius:999px;font-size:12.5px;cursor:pointer;transition:background .15s ease,border-color .15s ease,color .15s ease;
}
.chip:hover{background:var(--du-navy);border-color:var(--du-navy);color:#fff}

.quick--square{display:grid;grid-template-columns:repeat(3,1fr);gap:5px}
.chip--square{
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;text-align:center;
  min-height:64px;border-radius:7px;padding:10px 6px;line-height:1.25;
}
.chip--square__icon{
  width:26px;height:26px;border-radius:8px;font-size:13px;
  display:grid;place-items:center;flex:none;transition:transform .15s ease;
}
.chip--square:hover .chip--square__icon{transform:scale(1.1)}

.fb-type-grid-chat{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;margin:10px 0;clear:both}
.fb-type-tile-chat{
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;
  border:1px solid var(--chip-border);border-radius:12px;padding:10px 6px;
  background:#fff;color:var(--fg);text-decoration:none;font-size:12px;font-weight:600;text-align:center;
  transition:border-color .15s ease,background .15s ease;
}
.fb-type-tile-chat img{width:28px;height:28px;object-fit:contain}
.fb-type-tile-chat:hover{border-color:var(--du-red);background:#fdecef}

.svc-list{display:flex;flex-direction:column;gap:8px;margin:10px 0;clear:both}
.svc-item{
  display:flex;align-items:center;gap:10px;width:100%;text-align:left;
  background:#fff;border:none;border-left:4px solid rgba(27,35,64,.45);border-radius:10px;
  padding:11px 13px;box-shadow:0 2px 6px rgba(27,35,64,.08);
  color:var(--fg);font-size:13px;font-weight:600;text-decoration:none;
  cursor:pointer;transition:transform .15s ease,box-shadow .15s ease;
}
.svc-item:hover{transform:translateX(3px);box-shadow:0 4px 12px rgba(27,35,64,.16)}
.svc-item__icon{flex:none;font-size:17px;line-height:1}
.svc-item__label{flex:1;line-height:1.35}

.chat__input{display:flex;gap:8px;padding:12px;background:#e6e9f7;border-top:1px solid rgba(27,35,64,.08)}
.chat__input input{
  flex:1;padding:10px 12px;border-radius:12px;border:1px solid var(--chip-border);
  background:#fff;color:var(--fg);font-size:13.5px;
}
.chat__input input::placeholder{color:var(--muted)}
.chat__input input:focus{outline:none;border-color:var(--du-red)}
.chat__input button{
  padding:10px 16px;border-radius:12px;border:none;background:var(--du-red);color:#fff;
  cursor:pointer;font-weight:600;font-size:13px;transition:background .15s ease;
}
.chat__input button:hover{background:var(--du-red-dark)}

.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}

@media (max-height:700px){.chat__body{height:320px}}
