/* NorthStar ABA chat assistant. Uses brand tokens only. */
.ns-chat{position:fixed;right:16px;bottom:16px;z-index:100;font-family:var(--font-body);display:flex;flex-direction:column;align-items:flex-end;gap:12px}
.ns-chat [hidden]{display:none!important}
.ns-chat .visually-hidden{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}

/* Avatar + status */
.ns-avatar{flex:none;display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;border-radius:50%;background:var(--white);box-shadow:0 0 0 3px var(--pink)}
.ns-avatar img{width:80%;height:80%}
.ns-avatar--lg{width:68px;height:68px;box-shadow:0 0 0 4px var(--pink)}
.ns-status{display:inline-flex;align-items:center;gap:6px;font-size:13px;color:var(--ink);margin:0}
.ns-status__dot{width:8px;height:8px;border-radius:50%;background:var(--berry);box-shadow:0 0 0 3px var(--blush);animation:ns-pulse 2s ease-in-out infinite}
@keyframes ns-pulse{50%{box-shadow:0 0 0 5px var(--mist)}}

/* ---------- Greeting card ---------- */
.ns-greet{position:relative;width:min(380px,calc(100vw - 32px));display:grid;grid-template-columns:88px 1fr;gap:12px 14px;padding:18px 18px 16px;background:var(--white);border:1px solid #eadbe4;border-radius:var(--radius-card);box-shadow:0 16px 40px rgba(62,31,86,.2);animation:ns-pop .4s cubic-bezier(.2,.7,.2,1)}
.ns-greet__x{position:absolute;top:4px;right:4px;width:44px;height:44px;border:0;background:none;border-radius:50%;cursor:pointer;display:flex;align-items:center;justify-content:center}
.ns-greet__x:hover{background:var(--mist)}
.ns-greet__x svg{width:18px;height:18px;fill:none;stroke:var(--plum);stroke-width:2.5;stroke-linecap:round}
.ns-greet__who{display:flex;flex-direction:column;align-items:center;gap:4px;text-align:center}
.ns-greet__name{font:700 16px var(--font-display);color:var(--plum);margin-top:6px}
.ns-greet__body{padding-right:24px}
.ns-greet__msg{font-size:16px;line-height:1.45;margin:4px 0 12px;color:var(--ink)}
.ns-greet__btns{display:flex;flex-wrap:wrap;gap:8px}
.ns-greet__ask{grid-column:1/-1}

/* ---------- Ask bar (greeting + panel) ---------- */
.ns-ask{display:flex;align-items:center;gap:8px;border:2px solid #cdb8d8;border-radius:var(--radius-pill);padding:4px 4px 4px 16px;background:var(--white)}
.ns-ask:focus-within{border-color:var(--plum)}
.ns-ask__input{flex:1;min-width:0;min-height:44px;border:0;background:transparent;font:inherit;font-size:16px;color:var(--ink)}
.ns-ask__input:focus{outline:none}
.ns-ask__input::placeholder{color:var(--ink);opacity:.7}
.ns-ask__input[aria-invalid="true"]{color:var(--berry)}
.ns-ask__send{flex:none;width:44px;height:44px;border:0;border-radius:50%;background:var(--pink);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:transform .15s}
.ns-ask__send:hover{transform:translateY(-2px)}
.ns-ask__send svg{width:20px;height:20px;fill:none;stroke:var(--ink);stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round}
.ns-ask__send:focus-visible{outline:3px solid var(--plum);outline-offset:2px}

/* ---------- Chips ---------- */
.ns-chip{min-height:44px;padding:8px 16px;border:2px solid var(--plum);border-radius:var(--radius-pill);background:var(--white);color:var(--plum);font:600 15px var(--font-display);cursor:pointer;transition:background-color .15s,color .15s,transform .15s}
.ns-chip:hover{background:var(--plum);color:var(--white)}
.ns-chip--sm{padding:6px 16px}
.ns-chip--primary{background:var(--plum);color:var(--white)}
.ns-chip--primary:hover{background:var(--berry);border-color:var(--berry)}

/* ---------- Launcher ---------- */
.ns-chat__launcher{display:inline-flex;align-items:center;gap:10px;min-height:56px;padding:8px 20px 8px 8px;border:0;border-radius:var(--radius-pill);background:var(--pink);color:var(--ink);font:700 16px var(--font-display);cursor:pointer;box-shadow:0 10px 28px rgba(62,31,86,.22);transition:transform .15s}
.ns-chat__launcher:hover{transform:translateY(-2px)}
.ns-chat__launcher .ns-avatar{width:40px;height:40px;box-shadow:none}
.ns-chat.is-open .ns-chat__launcher{display:none}
@media (min-width:640px){.ns-chat.is-open .ns-chat__launcher{display:inline-flex}}

/* ---------- Panel ---------- */
.ns-chat__panel{position:fixed;inset:8px;display:flex;flex-direction:column;background:var(--white);border-radius:var(--radius-card);box-shadow:0 16px 48px rgba(62,31,86,.25);overflow:hidden;animation:ns-pop .3s ease}
@media (min-width:640px){
  .ns-chat__panel{inset:auto 16px 88px auto;width:390px;height:min(620px,calc(100vh - 120px))}
}
@keyframes ns-pop{from{opacity:0;transform:translateY(12px) scale(.98)}to{opacity:1;transform:none}}

.ns-chat__head{display:flex;align-items:center;gap:12px;padding:12px 8px 12px 16px;background:var(--blush);border-bottom:1px solid #f3d9e4}
.ns-chat__head-text{flex:1;min-width:0}
.ns-chat__title{font-size:18px;margin:0 0 2px;line-height:1.2}
.ns-chat__role{display:block;font:400 13px var(--font-body);color:var(--ink)}
.ns-chat__close{width:44px;height:44px;border:0;background:none;border-radius:50%;cursor:pointer;display:flex;align-items:center;justify-content:center}
.ns-chat__close:hover{background:var(--mist)}
.ns-chat__close svg{width:22px;height:22px;fill:none;stroke:var(--plum);stroke-width:2.5;stroke-linecap:round}

.ns-chat__log{flex:1;overflow-y:auto;padding:16px;display:flex;flex-direction:column;gap:8px;scroll-behavior:smooth}
.ns-msg{max-width:86%;padding:10px 14px;border-radius:16px;font-size:15px;line-height:1.5;animation:ns-pop .25s ease}
.ns-msg--bot{align-self:flex-start;background:var(--mist);color:var(--ink);border-bottom-left-radius:4px}
.ns-msg--bot a{color:var(--berry)}
.ns-msg--user{align-self:flex-end;background:var(--plum);color:var(--white);border-bottom-right-radius:4px}
.ns-msg--typing{display:flex;gap:5px;padding:14px}
.ns-msg--typing span{width:7px;height:7px;border-radius:50%;background:var(--plum);opacity:.4;animation:ns-dot 1s infinite ease-in-out}
.ns-msg--typing span:nth-child(2){animation-delay:.15s}
.ns-msg--typing span:nth-child(3){animation-delay:.3s}
@keyframes ns-dot{0%,80%,100%{opacity:.25;transform:translateY(0)}40%{opacity:1;transform:translateY(-3px)}}
.ns-msg--summary p{margin:0 0 8px}
.ns-msg--summary dl{margin:0;display:grid;grid-template-columns:auto 1fr;gap:2px 12px;font-size:14px}
.ns-msg--summary dt{font-weight:700;color:var(--plum)}
.ns-msg--summary dd{margin:0;overflow-wrap:anywhere}
.ns-chat__preview{font-size:13px;font-style:italic;background:var(--blush);border:1px dashed var(--plum);border-radius:8px;padding:6px 10px;margin:0}

.ns-chat__chips{padding:0 16px}
.ns-chat__chips:empty{display:none}
.ns-chat__choices{display:flex;flex-wrap:wrap;gap:8px;padding:8px 0 4px}
.ns-chat__bar{margin:8px 16px 0}
.ns-chat__err{color:var(--berry);font-size:14px;font-weight:700;margin:6px 16px 0}
.ns-chat__err:empty{display:none}
.ns-chat__fine{margin:0;padding:8px 16px 12px;font-size:12px;line-height:1.4;color:var(--ink)}

@media (prefers-reduced-motion:reduce){
  .ns-chat *,.ns-chat__panel,.ns-greet{animation:none!important;transition:none!important}
}
