/* The internal assistant: floating button, chat drawer, bubbles and proposal cards.
   Palette only through the CSS variables in css/app.css, so light and dark themes both work. */

/* ---- floating button (bottom right, above the mobile tab bar) ---- */
.asst-fab{position:fixed;right:24px;bottom:24px;z-index:35;display:inline-flex;align-items:center;gap:10px;height:52px;padding:0 22px 0 18px;border:0;border-radius:100px;background:var(--red);color:#fff;font:400 14px/1 var(--og-font-title);letter-spacing:.2em;text-transform:uppercase;box-shadow:0 12px 30px rgba(183,31,55,.32);cursor:pointer;transition:var(--t)}
.asst-fab:hover{background:var(--red-dark);transform:translateY(-1px)}
.asst-fab:focus-visible{outline:3px solid var(--red-soft);outline-offset:3px}
.asst-fab svg{flex:none}
#screen-auth:not(.hidden) ~ .asst-fab{display:none}
@media(max-width:1000px){
  .asst-fab{right:16px;bottom:calc(84px + env(safe-area-inset-bottom));height:50px;padding:0 18px 0 15px;font-size:13px;letter-spacing:.16em}
}
@media(max-width:380px){.asst-fab span{display:none}.asst-fab{width:52px;padding:0;justify-content:center}}

/* ---- chat layout inside the drawer ---- */
.asst{display:flex;flex-direction:column;min-height:calc(100vh - 220px)}
.asst-log{flex:1;display:flex;flex-direction:column;gap:12px;padding-bottom:16px}
.asst-empty{padding:28px 6px;color:var(--muted)}
.asst-empty b{display:block;font:400 24px/1.1 var(--og-font-display-alt);color:var(--ink);margin-bottom:8px}
.asst-empty p{font-size:14px;max-width:460px;margin:0}
.asst-div{display:flex;align-items:center;gap:12px;color:var(--muted);font:500 11px/1 var(--og-font-title);letter-spacing:.28em;text-transform:uppercase;margin:6px 0}
.asst-div:before,.asst-div:after{content:"";flex:1;height:1px;background:var(--line)}

.asst-msg{display:flex;flex-direction:column;gap:10px;max-width:86%}
.asst-msg.me{align-self:flex-end;align-items:flex-end}
.asst-msg.bot{align-self:flex-start;align-items:stretch;max-width:94%}
.asst-msg.old{opacity:.72}
.asst-b{padding:11px 15px;border-radius:14px;font-size:14.5px;line-height:1.5;word-wrap:break-word;overflow-wrap:anywhere}
.asst-b p{margin:0}
.asst-b p+p,.asst-b ul+p,.asst-b p+ul{margin-top:8px}
.asst-b ul{margin:0;padding-left:18px}
.asst-b li+li{margin-top:3px}
.asst-msg.me .asst-b{background:var(--bg-2);color:var(--ink);border-bottom-right-radius:4px}
.asst-msg.bot .asst-b{background:var(--panel);color:var(--ink);border:1px solid var(--line);border-left:3px solid var(--red);border-radius:4px 14px 14px 4px}
.asst-b.refused{border-left-color:var(--muted)}
.asst-b.typing{display:inline-flex;gap:5px;align-self:flex-start;padding:14px 16px}
.asst-b.typing i{width:7px;height:7px;border-radius:50%;background:var(--red);opacity:.35;animation:asst-dot 1.1s infinite ease-in-out}
.asst-b.typing i:nth-child(2){animation-delay:.15s}
.asst-b.typing i:nth-child(3){animation-delay:.3s}
@keyframes asst-dot{0%,80%,100%{opacity:.25;transform:translateY(0)}40%{opacity:1;transform:translateY(-3px)}}
.asst-note{margin:0}
.asst-oldp{display:flex;flex-wrap:wrap;gap:6px}

/* ---- proposal cards ---- */
.asst-card{padding:16px 18px}
.asst-card .card-h{margin-bottom:10px}
.asst-card.done{box-shadow:none}
.asst-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 14px}
.asst-grid .field{margin-bottom:11px}
.asst-grid .field:has(textarea){grid-column:1/-1}
.asst-grid .asst-check{grid-column:1/-1;margin:0 0 11px}
.asst-f input,.asst-f select,.asst-f textarea{padding:9px 12px;font-size:14px}
.asst-f textarea{min-height:58px}
.asst-f.miss label{color:var(--red)}
.asst-f.miss label em{font-style:normal;font-weight:600;font-size:11.5px;margin-left:4px;padding:2px 7px;border-radius:100px;background:var(--red-soft);color:var(--red)}
.asst-f.miss input,.asst-f.miss select,.asst-f.miss textarea{border-color:var(--red);background:var(--red-soft)}
.asst-card.done .asst-f input,.asst-card.done .asst-f select,.asst-card.done .asst-f textarea{background:var(--bg-2);border-color:transparent;color:var(--ink-2)}
.asst-miss{min-height:0;margin:2px 0 0}
.asst-miss:empty{display:none}
.asst-acts{justify-content:flex-end;margin-top:6px}

/* ---- composer, docked to the bottom of the drawer ---- */
.asst-dock{position:sticky;bottom:0;z-index:2;background:var(--panel);margin:0 -30px -60px;padding:12px 30px max(18px,env(safe-area-inset-bottom));border-top:1px solid var(--line)}
.asst-quick{margin-bottom:10px;flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch}
.asst-quick::-webkit-scrollbar{display:none}
.asst-quick button{flex:none}
.asst-compose{display:flex;align-items:flex-end;gap:8px}
.asst-compose textarea{flex:1;min-height:46px;max-height:180px;resize:none;background:var(--panel);border:1px solid var(--line-2);color:var(--ink);padding:12px 14px;font:400 15px/1.4 var(--og-font-alt);border-radius:var(--rs);outline:0;transition:var(--t)}
.asst-compose textarea:focus{border-color:var(--red);box-shadow:0 0 0 3px var(--red-soft)}
.asst-mic{flex:none;display:inline-flex;align-items:center;gap:6px;height:46px;min-width:46px;padding:0 13px;justify-content:center;border:1px solid var(--line-2);border-radius:var(--rs);background:var(--panel);color:var(--ink);font-size:13px;font-weight:600;cursor:pointer;transition:var(--t)}
.asst-mic:hover{border-color:var(--ink)}
.asst-mic.on{border-color:var(--red);background:var(--red-soft);color:var(--red)}
.asst-mic.on svg{animation:asst-pulse 1.2s infinite ease-in-out}
.asst-mic span:empty{display:none}
@keyframes asst-pulse{0%,100%{opacity:1}50%{opacity:.4}}
.asst-send{flex:none;height:46px}
.asst-foot{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:8px;min-height:22px}

@media(max-width:1000px){
  .asst{min-height:calc(100vh - 200px)}
  .asst-dock{margin:0 -18px -60px;padding:10px 18px max(14px,env(safe-area-inset-bottom))}
  .asst-msg,.asst-msg.bot{max-width:100%}
  .asst-msg.me{max-width:88%}
}
@media(max-width:560px){.asst-grid{grid-template-columns:1fr}}
