/* css/modules/asst.css: the .asst-* module — split out of css/app.css by #360's sibling stage (#362).
   Load order is core.css, then every modules/*.css alphabetically; rules here
   are in their original relative order, and no selector in this file appears in
   any other (asserted in tests/css-split-check.js). */

.asst-intro{padding:16px 20px;border-left:4px solid var(--blue)}
.asst-intro__lead{margin:0 0 8px;font-weight:700;color:var(--ink);line-height:1.55}
.asst-intro__note{margin:0;font-weight:700;font-size:12.5px;color:var(--muted);line-height:1.6}
.asst-log{display:flex;flex-direction:column;gap:12px;overflow-y:auto;padding:4px 2px;min-height:220px;max-height:calc(100vh - 380px)}
.asst-empty{color:var(--muted);font-weight:700;text-align:center;padding:40px 20px}
.asst-turn{display:flex}
.asst-turn--user{justify-content:flex-end}
.asst-turn--ai{justify-content:flex-start}
.asst-bub{max-width:82%;padding:12px 15px;border-radius:14px;font-weight:600;line-height:1.55;white-space:pre-wrap;word-wrap:break-word;overflow-wrap:anywhere}
.asst-bub--user{background:var(--blue);color:#fff;border-bottom-right-radius:4px}
.asst-bub--ai{background:var(--panel);border:1px solid var(--line);color:var(--ink);border-bottom-left-radius:4px;box-shadow:var(--shadow)}
.asst-bub--partial{border-left:3px solid var(--orange)}
.asst-bub--err{border-left:3px solid var(--red);background:#fde6df;color:#8a1f00;font-weight:700}
.asst-err-ico{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:50%;background:var(--red);color:#fff;font-weight:900;font-size:12px;margin-right:4px;vertical-align:-3px}
.asst-text{white-space:pre-wrap}
.asst-muted{color:var(--muted);font-weight:700}
/* thinking indicator */
.asst-bub--think{color:var(--muted);font-weight:700;display:inline-flex;align-items:center;gap:8px}
.asst-dots{display:inline-flex;gap:4px}
.asst-dots i{width:7px;height:7px;border-radius:50%;background:var(--muted-2);display:inline-block;animation:asstBounce 1.2s infinite ease-in-out both}
.asst-dots i:nth-child(1){animation-delay:-.24s}
.asst-dots i:nth-child(2){animation-delay:-.12s}
@media(prefers-reduced-motion:reduce){.asst-dots i{animation:none}}
/* grounding + sources under an answer */
.asst-ground{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-top:10px;padding-top:10px;border-top:1px dashed var(--line)}
.asst-ground__lbl{font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.8px;color:var(--muted)}
.asst-chip{font-size:12px;font-weight:800;padding:3px 9px;border-radius:999px;background:#e8effb;color:var(--blue)}
.asst-src{margin-top:8px;font-size:12.5px}
.asst-src__lbl{font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.8px;color:var(--muted)}
.asst-src ul{margin:4px 0 0;padding-left:18px;color:var(--ink);font-weight:600}
.asst-src li{margin:2px 0;line-height:1.5}
.asst-src li b{color:var(--blue)}
.asst-partial{margin-top:8px;font-size:12.5px;font-weight:700;color:#c96a12}
.asst-inj{margin-top:8px;font-size:12px;font-weight:700;color:var(--muted);font-style:italic}
/* composer */
.asst-bar{display:flex;gap:10px;align-items:flex-end;background:var(--panel);border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow);padding:10px;flex-wrap:wrap}
.asst-input{flex:1 1 200px;min-width:0;resize:none;font-family:var(--font);font-size:15px;font-weight:600;color:var(--ink);border:1px solid var(--line);border-radius:10px;padding:11px 13px;line-height:1.5;max-height:160px;overflow-y:auto;background:var(--panel-2)}
.asst-input:focus{outline:2px solid var(--blue-l);outline-offset:-1px;background:#fff}
.asst-input:disabled{background:#f0f2f6;color:var(--muted-2);cursor:not-allowed}
.asst-send{flex:0 0 auto;min-height:44px}
.asst-send:disabled{opacity:.5;cursor:not-allowed}
.asst-note{flex:1 1 100%;font-weight:700;font-size:13px;color:var(--muted);line-height:1.6}
.asst-state{padding:22px;color:var(--muted);font-weight:700;line-height:1.6}
.asst-state--off{border-left:4px solid var(--orange)}
.asst-foot{margin:10px 2px 0;font-weight:700;font-size:11.5px;color:var(--muted-2);line-height:1.55}
/* ---- action-proposal card (#214): the model proposes, you confirm ---- */
.asst-prop{margin-top:12px;border:1px solid var(--line);border-left:4px solid var(--blue);border-radius:12px;background:var(--panel-2);padding:12px 14px}
.asst-prop.is-confirmed{border-left-color:var(--ok)}
.asst-prop.is-invalid,.asst-prop.is-error{border-left-color:var(--red)}
.asst-prop.is-cancelled{border-left-color:var(--muted-2);opacity:.85}
.asst-prop__hd{display:flex;align-items:center;gap:8px;margin-bottom:6px}
.asst-prop__kind{font-size:10.5px;font-weight:800;text-transform:uppercase;letter-spacing:.7px;color:var(--blue);background:#e8effb;padding:3px 9px;border-radius:999px}
.asst-prop__sum{font-weight:700;color:var(--ink);line-height:1.5}
.asst-prop__change{display:flex;align-items:stretch;gap:10px;flex-wrap:wrap;margin-top:10px}
.asst-prop__party{flex:1 1 120px;min-width:0;display:flex;flex-direction:column;gap:2px;background:var(--panel);border:1px solid var(--line);border-radius:9px;padding:7px 11px;font-weight:800;color:var(--ink)}
.asst-prop__plbl,.asst-prop__mlbl{font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.6px;color:var(--muted)}
.asst-prop__from{border-left:3px solid var(--muted-2)}
.asst-prop__to{border-left:3px solid var(--orange)}
.asst-prop__arrow{align-self:center;font-weight:900;font-size:18px;color:var(--muted)}
.asst-prop__metas{display:flex;flex-wrap:wrap;gap:8px 18px;margin-top:10px}
.asst-prop__meta{display:flex;flex-direction:column;gap:1px;font-weight:800;font-size:13px;color:var(--ink)}
.asst-prop__warns{margin-top:10px;display:flex;gap:8px;background:#fff6ea;border:1px solid #f5d9b0;border-radius:9px;padding:8px 11px}
.asst-prop__wico{color:var(--orange);font-weight:900;line-height:1.4}
.asst-prop__warns ul{margin:0;padding-left:16px;font-weight:700;font-size:12.5px;color:#8a5316;line-height:1.5}
.asst-prop__ground{margin-top:10px;font-size:12.5px}
.asst-prop__ground ul{margin:4px 0 0;padding-left:18px;color:var(--ink);font-weight:600}
.asst-prop__ground li{margin:2px 0;line-height:1.5}
.asst-prop__ground li b{color:var(--blue)}
.asst-prop__acts{display:flex;gap:10px;margin-top:12px;flex-wrap:wrap}
.asst-prop__btn{flex:0 0 auto}
.asst-prop__done{display:flex;align-items:flex-start;gap:7px;margin-top:12px;padding:9px 12px;border-radius:9px;font-weight:800;font-size:13px;line-height:1.45}
.asst-prop__done--ok{background:#e6f6ee;color:#0f6d3b}
.asst-prop__done--cancel{background:#eef1f6;color:var(--muted)}
.asst-prop__done--invalid{background:#fde6df;color:#8a1f00}
.asst-prop__dico{font-weight:900}
@media(max-width:640px){
  .asst-bub{max-width:90%}
  .asst-log{max-height:none}
  .asst-send{flex:1 1 100%}
  .asst-prop__btn{flex:1 1 100%}
  .asst-prop__arrow{transform:rotate(90deg)}
}
