/* AI assistant – floating button + slide-in glass panel (website) and chat screen (Android app) */
.ai-fab{position:fixed;right:31px;bottom:104px;z-index:1200;width:58px;height:58px;border-radius:50%;border:1px solid rgba(255,255,255,.6);color:#fff;font-size:22px;cursor:pointer;
  background:linear-gradient(135deg,#6366f1,#8b5cf6 55%,#06b6d4);box-shadow:0 10px 30px rgba(99,102,241,.45),inset 0 1px 0 rgba(255,255,255,.5);
  transition:transform .35s cubic-bezier(.2,.9,.3,1.3),opacity .25s,box-shadow .25s;animation:aiPulse 3.2s ease-in-out infinite}
.ai-fab:hover{transform:translateY(-3px) scale(1.06);box-shadow:0 16px 40px rgba(99,102,241,.55)}
.ai-fab.hide{transform:scale(.4) rotate(-30deg);opacity:0;pointer-events:none}
@keyframes aiPulse{0%,100%{box-shadow:0 10px 30px rgba(99,102,241,.45),0 0 0 0 rgba(139,92,246,.35)}50%{box-shadow:0 10px 30px rgba(99,102,241,.45),0 0 0 12px rgba(139,92,246,0)}}
.ai-scrim{position:fixed;inset:0;z-index:1190;background:rgba(15,23,42,.18);opacity:0;pointer-events:none;transition:opacity .3s}
.ai-scrim.open{opacity:1;pointer-events:auto}
@supports (backdrop-filter:blur(4px)){.ai-scrim{backdrop-filter:blur(3px)}}
.ai-panel{position:fixed;top:12px;right:12px;bottom:12px;width:min(440px,calc(100vw - 24px));z-index:1210;display:flex;flex-direction:column;border-radius:22px;overflow:hidden;
  background:rgba(255,255,255,.9);border:1px solid rgba(255,255,255,.75);box-shadow:0 24px 70px rgba(30,64,175,.25),inset 0 1px 0 rgba(255,255,255,.9);
  transform:translateX(calc(100% + 30px));opacity:.4;transition:transform .45s cubic-bezier(.16,1,.3,1),opacity .3s}
@supports (backdrop-filter:blur(10px)){.ai-panel{background:rgba(255,255,255,.72);backdrop-filter:blur(22px) saturate(1.5)}}
.ai-panel.open{transform:none;opacity:1}
.ai-ph{display:flex;align-items:center;justify-content:space-between;padding:16px 18px;border-bottom:1px solid rgba(148,163,184,.25);
  background:linear-gradient(120deg,rgba(99,102,241,.12),rgba(6,182,212,.08))}
.ai-ph b{font-size:16px;color:#1e1b4b}.ai-ph i{color:#7c3aed}.ai-ph small{display:block;color:#64748b;font-size:11.5px;margin-top:2px}
.ai-host{flex:1;min-height:0;display:flex}
.ai-wrap{flex:1;display:flex;flex-direction:column;min-height:0;width:100%}
.ai-log{flex:1;overflow-y:auto;padding:16px;display:flex;flex-direction:column;gap:10px;scroll-behavior:smooth}
.ai-msg{max-width:92%;padding:10px 13px;border-radius:16px;font-size:14px;line-height:1.45;animation:aiIn .35s cubic-bezier(.16,1,.3,1) both;word-wrap:break-word}
.ai-msg.bot{align-self:flex-start;background:rgba(255,255,255,.9);border:1px solid rgba(148,163,184,.25);border-bottom-left-radius:5px;color:#1e293b;box-shadow:0 2px 8px rgba(15,23,42,.05)}
.ai-msg.me{align-self:flex-end;background:linear-gradient(135deg,#6366f1,#7c3aed);color:#fff;border-bottom-right-radius:5px}
.ai-msg.err{background:#fef2f2;border-color:#fecaca;color:#991b1b}
.ai-msg.typing{display:flex;gap:4px;padding:13px 15px}.ai-msg.typing span{width:7px;height:7px;border-radius:50%;background:#8b5cf6;animation:aiDot 1.1s infinite}
.ai-msg.typing span:nth-child(2){animation-delay:.15s}.ai-msg.typing span:nth-child(3){animation-delay:.3s}
@keyframes aiDot{0%,80%,100%{transform:translateY(0);opacity:.4}40%{transform:translateY(-5px);opacity:1}}
@keyframes aiIn{from{opacity:0;transform:translateY(10px) scale(.98)}to{opacity:1;transform:none}}
.ai-thumb{display:block;max-width:180px;max-height:180px;border-radius:10px;margin-bottom:6px}
.ai-chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}
.ai-chip{border:1px solid rgba(99,102,241,.35);background:rgba(99,102,241,.07);color:#4338ca;border-radius:999px;padding:5px 11px;font-size:12.5px;cursor:pointer;transition:background .2s,transform .2s}
.ai-chip:hover{background:rgba(99,102,241,.16);transform:translateY(-1px)}
.ai-input{display:flex;align-items:flex-end;gap:8px;padding:10px 12px;border-top:1px solid rgba(148,163,184,.25);background:rgba(255,255,255,.6)}
.ai-input textarea{flex:1;resize:none;border:1px solid rgba(148,163,184,.4);border-radius:14px;padding:10px 12px;font:inherit;font-size:14px;background:#fff;max-height:120px;outline:none;transition:border-color .2s,box-shadow .2s}
.ai-input textarea:focus{border-color:#8b5cf6;box-shadow:0 0 0 3px rgba(139,92,246,.15)}
.ai-ib{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:12px;border:0;background:rgba(99,102,241,.1);color:#4f46e5;cursor:pointer;font-size:16px;flex:none}
.ai-send{width:42px;height:42px;border-radius:14px;border:0;color:#fff;background:linear-gradient(135deg,#6366f1,#7c3aed);cursor:pointer;flex:none;transition:transform .2s}
.ai-send:active{transform:scale(.92)}.ai-busy .ai-send{opacity:.5;pointer-events:none}
.ai-preview{display:flex;align-items:center;gap:10px;padding:8px 12px;border-top:1px solid rgba(148,163,184,.2);font-size:13px;color:#475569}
.ai-preview img{width:44px;height:44px;object-fit:cover;border-radius:8px}.ai-preview span{flex:1}
.ai-card{margin-top:10px;border-radius:14px;background:#fff;border:1px solid rgba(99,102,241,.25);box-shadow:0 6px 18px rgba(79,70,229,.08);overflow:hidden;animation:aiIn .4s cubic-bezier(.16,1,.3,1) both;color:#1e293b}
.ai-card-h{display:flex;align-items:center;gap:8px;padding:9px 12px;background:linear-gradient(120deg,rgba(99,102,241,.1),rgba(6,182,212,.06));font-size:13.5px}
.ai-card-h i{color:#6d28d9}.ai-warn{margin-left:auto;font-size:11px;background:#fef3c7;color:#92400e;padding:2px 7px;border-radius:999px}
.ai-card-b{padding:10px 12px;display:flex;flex-direction:column;gap:8px}
.ai-f{display:flex;flex-direction:column;gap:3px;font-size:11.5px;color:#64748b;min-width:0;flex:1}
.ai-f input,.ai-f select,.ai-item input{border:1px solid #e2e8f0;border-radius:9px;padding:7px 9px;font:inherit;font-size:13.5px;color:#0f172a;background:#f8fafc;min-width:0;width:100%;box-sizing:border-box}
.ai-f input:focus,.ai-f select:focus,.ai-item input:focus{outline:none;border-color:#8b5cf6;background:#fff}
.ai-row{display:flex;gap:8px}.ai-new{font-style:normal;color:#b45309;font-size:10.5px;background:#fef3c7;padding:0 5px;border-radius:5px}
.ai-items{display:flex;flex-direction:column;gap:5px}
.ai-item{display:grid;grid-template-columns:1fr 54px 84px;gap:5px;align-items:center}
.ai-item .ai-match{grid-column:1/-1;font-size:10.5px;color:#64748b;margin-top:-3px}
.ai-ih{font-size:11px;color:#64748b}.ai-ih span:last-child{display:none}
.ai-link{align-self:flex-start;border:0;background:none;color:#4f46e5;font-size:12.5px;cursor:pointer;padding:0}
.ai-total{font-weight:600;text-align:right;font-size:13.5px;color:#312e81}
.ai-note{font-size:12.5px;color:#92400e;background:#fffbeb;border-radius:8px;padding:6px 8px}
.ai-err{margin:0 12px 8px;font-size:12.5px;color:#b91c1c;background:#fef2f2;border-radius:8px;padding:6px 8px}
.ai-card-a{display:flex;justify-content:flex-end;gap:8px;padding:8px 12px 12px}
.ai-btn{border:0;border-radius:10px;padding:8px 14px;font:inherit;font-size:13px;font-weight:600;cursor:pointer;color:#fff;background:linear-gradient(135deg,#10b981,#059669);transition:transform .15s,box-shadow .2s;box-shadow:0 4px 12px rgba(16,185,129,.3)}
.ai-btn:hover{transform:translateY(-1px)}.ai-btn.ghost{background:#f1f5f9;color:#475569;box-shadow:none}
.ai-done{opacity:.85}.ai-discarded{opacity:.55}
.ai-status{font-size:13px;color:#64748b}.ai-status.ok{color:#047857;font-weight:600}
.ai-lk{font-size:13px;line-height:1.5}
.ai-tbl{width:100%;border-collapse:collapse;font-size:12.5px}.ai-tbl th,.ai-tbl td{text-align:left;padding:4px 5px;border-bottom:1px solid #f1f5f9}
.ai-tbl th{color:#64748b;font-weight:500}.ai-tbl tr.completed td{color:#94a3b8}
[hidden]{display:none!important}
@media (max-width:768px){.ai-fab{right:19px;bottom:90px}.ai-panel{top:0;right:0;bottom:0;width:100vw;border-radius:0}}
@media print{.ai-fab,.ai-panel,.ai-scrim{display:none!important}}
@media (prefers-reduced-motion:reduce){.ai-fab,.ai-panel,.ai-msg,.ai-card{animation:none!important;transition:none!important}}
/* Android app: full chat screen inside the native shell */
.m-ai{position:absolute;inset:0;display:flex}
.m-ai .ai-log{padding:14px 12px 8px}
.m-ai .ai-input{padding:8px 10px calc(8px + env(safe-area-inset-bottom));background:rgba(255,255,255,.85)}
.m-ai .ai-input textarea{font-size:16px}
.ai-status.bad{color:#b91c1c;font-weight:600}
.ai-msg.ai-tooling{font-size:13px;color:#6366f1;font-style:italic;animation:aiPulseTxt 1.2s ease-in-out infinite alternate}
@keyframes aiPulseTxt{from{opacity:.55}to{opacity:1}}
