/* Dessa - AI Vision Advisor. Palette and type follow the DESSAR site. */
.dz{
  --dz-ink:#131B24; --dz-graphite:#18222D; --dz-graphite-2:#222F3C; --dz-steel:#5C6975;
  --dz-rule:#D6DCE1; --dz-paper:#E7EBEE; --dz-card:#F6F8F9; --dz-white:#FFFFFF;
  --dz-brand:#004A80; --dz-brand-dark:#003960; --dz-beam:#1A86D0; --dz-beam-soft:#6FC6F5;
  --dz-signal:#C1301C; --dz-good:#1E7A4F;
  font:15px/1.5 "IBM Plex Sans","Helvetica Neue",Arial,sans-serif;
  color:var(--dz-ink); -webkit-font-smoothing:antialiased;
}
.dz *,.dz *::before,.dz *::after{box-sizing:border-box}
.dz [hidden]{display:none !important}
.dz button{font:inherit}
.dz input,.dz textarea,.dz select{font:inherit;color:inherit}
.dz :focus-visible{outline:2px solid var(--dz-beam-soft);outline-offset:2px}

/* ------------------------------------------------ launcher */
.dz-launch{
  position:fixed; right:clamp(12px,2vw,24px); bottom:clamp(12px,2vw,24px); z-index:45;
  display:flex; align-items:center; gap:10px; padding:11px 18px 11px 12px;
  background:var(--dz-graphite); color:#fff; border:1px solid #2E3B49; border-radius:2px;
  box-shadow:0 8px 24px rgba(10,16,22,.26); cursor:pointer; overflow:hidden;
  transition:transform .18s ease, bottom .2s ease;
  --dz-base:clamp(12px,2vw,24px);
}
.dz-launch:hover{background:var(--dz-graphite-2)}
.dz-launch:active{transform:translateY(1px)}
.dz-launch .dz-l1{display:block; color:#fff; font-family:"Archivo","Helvetica Neue",Arial,sans-serif; font-variation-settings:"wdth" 108;
  font-weight:650; font-size:.98rem; line-height:1.2; letter-spacing:-.005em}
.dz-launch .dz-l2{display:block; color:#93A2B0; font-size:.74rem; line-height:1.2; margin-top:1px}
.dz-launch .dz-txt{display:block; text-align:left}
.dz-mark{width:30px; height:30px; flex:0 0 30px; display:grid; place-items:center;
  border:1px solid #3A4958; border-radius:2px; background:#0F171F}
.dz-mark svg{width:18px; height:18px}
/* the one orchestrated moment: a scan line crosses the button once */
.dz-launch::after{
  content:""; position:absolute; top:0; bottom:0; left:-30%; width:2px;
  background:linear-gradient(to bottom, transparent, var(--dz-beam-soft) 20%, var(--dz-beam-soft) 80%, transparent);
  box-shadow:0 0 12px 2px rgba(111,198,245,.55); opacity:0;
}
.dz-launch.dz-scan::after{animation:dz-scan 1.4s cubic-bezier(.5,0,.3,1) .6s 1 both}
@keyframes dz-scan{0%{left:-4%;opacity:0}12%{opacity:1}88%{opacity:1}100%{left:104%;opacity:0}}
.dz.dz-open .dz-launch{display:none}

/* ------------------------------------------------ panel */
.dz-panel{
  position:fixed; right:clamp(12px,2vw,24px); bottom:clamp(12px,2vw,24px); z-index:46;
  width:min(400px, calc(100vw - 24px)); height:min(640px, calc(100vh - 32px));
  display:flex; flex-direction:column; background:var(--dz-card);
  border:1px solid #2E3B49; border-radius:3px; box-shadow:0 18px 50px rgba(10,16,22,.34); overflow:hidden;
  transform-origin:bottom right; animation:dz-in .18s ease-out;
}
@keyframes dz-in{from{opacity:0; transform:translateY(8px) scale(.985)}to{opacity:1; transform:none}}
.dz-head{background:var(--dz-graphite); color:#E9EDF1; padding:14px 14px 14px 16px;
  display:grid; grid-template-columns:auto 1fr auto; gap:12px; align-items:start; border-bottom:2px solid var(--dz-beam)}
.dz-head .dz-mark{width:40px; height:40px; flex-basis:40px}
.dz-head .dz-mark svg{width:24px; height:24px}
.dz-head h2{margin:0; font:650 1.08rem/1.15 "Archivo","Helvetica Neue",Arial,sans-serif; font-variation-settings:"wdth" 110; color:#fff}
.dz-head .dz-role{margin:1px 0 0; font-size:.8rem; color:var(--dz-beam-soft)}
.dz-head .dz-sub{margin:6px 0 0; font-size:.84rem; color:#C3CDD6; line-height:1.4}
.dz-close{background:transparent; border:1px solid #3A4958; color:#C3CDD6; width:32px; height:32px;
  border-radius:2px; cursor:pointer; display:grid; place-items:center}
.dz-close:hover{background:#243241; color:#fff}

.dz-log{flex:1; overflow-y:auto; padding:16px 14px 8px; display:flex; flex-direction:column; gap:10px;
  overscroll-behavior:contain; background:var(--dz-card)}
.dz-msg{max-width:88%; font-size:.93rem; line-height:1.5; white-space:normal; overflow-wrap:anywhere}
.dz-msg p{margin:0 0 8px}
.dz-msg p:last-child{margin-bottom:0}
.dz-msg ul{margin:4px 0 8px; padding-left:18px}
.dz-msg li{margin:2px 0}
.dz b,.dz strong{color:inherit; font-weight:600; display:inline; font-size:inherit; font-family:inherit; letter-spacing:inherit}
.dz a{color:var(--dz-brand)}
.dz-me a{color:#fff}
.dz-bot{align-self:flex-start; background:var(--dz-white); border:1px solid var(--dz-rule);
  border-left:3px solid var(--dz-beam); padding:10px 12px; border-radius:0 3px 3px 0}
.dz-me{align-self:flex-end; background:var(--dz-brand); color:#fff; padding:9px 12px; border-radius:3px 3px 0 3px}
.dz-note{align-self:center; font-size:.78rem; color:var(--dz-steel); text-align:center; max-width:92%}
.dz-typing{align-self:flex-start; display:flex; gap:4px; padding:12px 14px; background:var(--dz-white);
  border:1px solid var(--dz-rule); border-left:3px solid var(--dz-beam); border-radius:0 3px 3px 0}
.dz-typing i{width:6px; height:6px; border-radius:50%; background:var(--dz-steel); animation:dz-dot 1s infinite ease-in-out}
.dz-typing i:nth-child(2){animation-delay:.15s}
.dz-typing i:nth-child(3){animation-delay:.3s}
@keyframes dz-dot{0%,80%,100%{opacity:.25; transform:translateY(0)}40%{opacity:1; transform:translateY(-2px)}}

.dz-chips{display:flex; flex-wrap:wrap; gap:6px; margin:2px 0 4px}
.dz-chip{background:var(--dz-white); border:1px solid #B9C4CE; color:var(--dz-brand); border-radius:2px;
  padding:6px 10px; font-size:.85rem; cursor:pointer; text-align:left}
.dz-chip:hover{border-color:var(--dz-brand); background:#EEF4F9}

/* consultation card */
.dz-card{align-self:stretch; background:var(--dz-white); border:1px solid var(--dz-rule); border-radius:3px; padding:12px}
.dz-card h3{margin:0 0 4px; font:650 .95rem/1.2 "Archivo","Helvetica Neue",Arial,sans-serif; font-variation-settings:"wdth" 106}
.dz-card .dz-summary{margin:0 0 10px; font-size:.86rem; color:var(--dz-steel)}
.dz-btn{display:inline-flex; align-items:center; justify-content:center; gap:8px; background:var(--dz-brand);
  color:#fff; border:1px solid var(--dz-brand); border-radius:2px; padding:10px 14px; font-weight:500;
  font-size:.9rem; cursor:pointer; width:100%}
.dz-btn:hover{background:var(--dz-brand-dark)}
.dz-btn[disabled]{opacity:.6; cursor:progress}
.dz-btn.dz-quiet{background:transparent; color:var(--dz-brand); width:auto}
.dz-form{display:grid; gap:8px; margin-top:4px}
.dz-form .dz-pair{display:grid; grid-template-columns:1fr 1fr; gap:8px}
.dz-form label{display:block; font-size:.78rem; color:var(--dz-steel); margin-bottom:2px}
.dz-form input{width:100%; border:1px solid #B9C4CE; border-radius:2px; padding:7px 9px; background:#fff; font-size:.9rem}
.dz-form input:focus{border-color:var(--dz-brand); outline:none; box-shadow:0 0 0 2px rgba(26,134,208,.2)}
.dz-form .dz-bad input{border-color:var(--dz-signal)}
.dz-form .dz-err{display:none; color:var(--dz-signal); font-size:.75rem}
.dz-form .dz-bad .dz-err{display:block}
.dz-check{display:flex; gap:8px; align-items:flex-start; font-size:.8rem; color:var(--dz-steel)}
.dz-check input{width:auto; margin-top:3px}
.dz-hp{position:absolute !important; left:-9999px !important; width:1px; height:1px; overflow:hidden}
.dz-done{border-left:3px solid var(--dz-good)}

/* composer */
.dz-compose{border-top:1px solid var(--dz-rule); background:var(--dz-white); padding:10px 10px 8px}
.dz-row{display:flex; gap:8px; align-items:flex-end}
.dz-input{flex:1; resize:none; border:1px solid #B9C4CE; border-radius:2px; padding:9px 10px; max-height:120px;
  min-height:42px; font-size:.93rem; line-height:1.4; background:#fff}
.dz-input:focus{border-color:var(--dz-brand); outline:none; box-shadow:0 0 0 2px rgba(26,134,208,.2)}
.dz-send{background:var(--dz-brand); border:1px solid var(--dz-brand); color:#fff; border-radius:2px;
  width:42px; height:42px; display:grid; place-items:center; cursor:pointer; flex:0 0 42px}
.dz-send:hover{background:var(--dz-brand-dark)}
.dz-send[disabled]{opacity:.5; cursor:default}
.dz-foot{margin:7px 2px 0; font-size:.72rem; color:var(--dz-steel); display:flex; justify-content:space-between; gap:10px}
.dz-foot a{color:var(--dz-steel)}
.dz-foot button{white-space:nowrap; background:none; border:0; padding:0; color:var(--dz-steel); text-decoration:underline; cursor:pointer; font-size:.72rem}

@media (max-width:560px){
  .dz-panel{right:0; bottom:0; width:100vw; height:100dvh; max-height:100vh; border-radius:0; border:0}
  .dz-launch{padding:10px 14px 10px 10px}
  .dz-launch .dz-l2{display:none}
  .dz-form .dz-pair{grid-template-columns:1fr}
}
@media (prefers-reduced-motion: reduce){
  .dz-launch.dz-scan::after{animation:none}
  .dz-panel{animation:none}
  .dz-typing i{animation:none; opacity:.6}
}
@media print{.dz{display:none}}

/* ------------------------------------------------ forms (v2) */
.dz-form select{width:100%; border:1px solid #B9C4CE; border-radius:2px; padding:7px 8px; background:#fff; font-size:.9rem}
.dz-form .dz-check{margin:2px 0}
.dz-form .dz-bad.dz-check span{color:var(--dz-signal)}
.dz-form .dz-err-box{display:none; color:var(--dz-signal); font-size:.75rem; margin:-4px 0 2px 24px}
.dz-form .dz-bad + .dz-err-box{display:block}
.dz-chips .dz-chip{font-size:.83rem; padding:5px 9px}

/* ------------------------------------------------ proactive card */
.dz-nudge{
  position:fixed; right:clamp(12px,2vw,24px); bottom:84px; z-index:45; width:min(320px, calc(100vw - 24px));
  background:var(--dz-white); border:1px solid var(--dz-rule); border-left:3px solid var(--dz-beam);
  border-radius:0 3px 3px 0; box-shadow:0 10px 28px rgba(10,16,22,.2); padding:12px 34px 12px 14px;
  font-size:.9rem; line-height:1.45; animation:dz-in .2s ease-out;
}
.dz-nudge p{margin:0 0 6px}
.dz-nudge .dz-nh{font:650 .98rem/1.25 "Archivo","Helvetica Neue",Arial,sans-serif; font-variation-settings:"wdth" 106; color:var(--dz-ink)}
.dz-nudge img{display:block; width:100%; height:auto; max-height:130px; object-fit:cover; margin:0 0 8px; border-radius:2px}
.dz-nudge .dz-acts{display:flex; flex-wrap:wrap; gap:6px; margin-top:8px}
.dz-nudge .dz-btn, .dz-nudge a.dz-btn, .dz-nudge a.dz-btn:visited{width:auto; padding:7px 12px; font-size:.85rem; text-decoration:none; color:#fff}
.dz-nudge a.dz-btn:hover{color:#fff}
.dz-nudge .dz-btn.dz-quiet{border-color:#B9C4CE; background:#fff; color:var(--dz-brand)}
.dz-nudge .dz-forget{display:block; margin-top:8px}
.dz-nudge .dz-x{position:absolute; top:6px; right:6px; width:26px; height:26px; border:0; background:transparent; color:var(--dz-steel); cursor:pointer; display:grid; place-items:center}
.dz-nudge .dz-x:hover{color:var(--dz-ink)}
.dz-nudge .dz-forget{background:none; border:0; padding:0; color:var(--dz-steel); font-size:.75rem; text-decoration:underline; cursor:pointer}
.dz.dz-open .dz-nudge{display:none}
@media (prefers-reduced-motion: reduce){ .dz-nudge{animation:none} }
