/* Property AI: floating button, chat panel and shared answer formatting (.pai-*).
   Also used by the AI Assistant page for message rendering. */
:root{
  --pai-brand:var(--brand,#159447);
  --pai-brand-strong:var(--brand-strong,#0f7a39);
  --pai-brand-soft:var(--brand-soft,#eaf7ef);
  --pai-surface:var(--surface,#fff);
  --pai-surface-2:var(--ui-surface-2,#f8faf9);
  --pai-text:var(--text,#111a16);
  --pai-muted:var(--muted,#68756f);
  --pai-border:var(--border,#e2e8e5);
  --pai-user:#0f1513;
  --pai-font:var(--ui-font,Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",Roboto,sans-serif);
  --pai-ease:cubic-bezier(.2,.8,.2,1);
}
:root[data-theme="dark"]{--pai-user:#1f2a24;--pai-surface-2:#18221d}

/* Floating button */
.pai-root{position:fixed;left:auto;top:auto;z-index:1100;width:56px;height:56px;font-family:var(--pai-font)}
.pai-fab{position:relative;width:56px;height:56px;border:0;border-radius:50%;padding:0;background:var(--pai-brand);color:#fff;display:grid;place-items:center;cursor:grab;box-shadow:0 10px 28px rgba(15,122,57,.32),0 2px 6px rgba(0,0,0,.12),inset 0 1px 0 rgba(255,255,255,.22);transition:transform .18s var(--pai-ease),box-shadow .18s var(--pai-ease),background .18s;touch-action:none;user-select:none;-webkit-user-select:none;-webkit-tap-highlight-color:transparent}
.pai-fab>svg:first-child{width:28px;height:28px}
.pai-fab:hover{transform:translateY(-2px);box-shadow:0 16px 36px rgba(15,122,57,.36),0 3px 8px rgba(0,0,0,.14),inset 0 1px 0 rgba(255,255,255,.22)}
.pai-fab:active,.pai-fab.dragging{cursor:grabbing;transform:scale(.97)}
.pai-fab.open{background:var(--pai-user)}
.pai-fab:focus-visible{outline:none;box-shadow:0 0 0 3px var(--pai-surface),0 0 0 6px var(--pai-brand)}
.pai-spark{position:absolute;top:8px;right:8px;width:12px;height:12px;color:#fff;opacity:.95;filter:drop-shadow(0 1px 2px rgba(0,0,0,.25))}
.pai-fab.open .pai-spark{display:none}
.pai-tip{position:absolute;right:calc(100% + 10px);top:50%;transform:translateY(-50%) translateX(4px);padding:6px 10px;border-radius:8px;background:#0f1513;color:#f5f8f6;font:600 12px/1 var(--pai-font);white-space:nowrap;opacity:0;pointer-events:none;transition:opacity .14s,transform .14s}
.pai-fab:hover .pai-tip,.pai-fab:focus-visible .pai-tip{opacity:1;transform:translateY(-50%)}
.pai-fab.open .pai-tip,.pai-fab.dragging .pai-tip{display:none}
@media(hover:none){.pai-tip{display:none}}

/* Panel */
.pai-panel{position:fixed;display:flex;flex-direction:column;background:var(--pai-surface);color:var(--pai-text);border:1px solid var(--pai-border);border-radius:18px;box-shadow:0 30px 70px rgba(10,20,15,.22),0 4px 14px rgba(10,20,15,.08);overflow:hidden;animation:pai-in .22s var(--pai-ease);transform-origin:bottom right}
.pai-panel[hidden]{display:none}
@keyframes pai-in{from{opacity:0;transform:translateY(10px) scale(.98)}to{opacity:1;transform:none}}
.pai-head{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:12px 12px 12px 16px;border-bottom:1px solid var(--pai-border);background:var(--pai-surface)}
.pai-identity{display:flex;align-items:center;gap:11px;min-width:0}
.pai-identity div{display:flex;flex-direction:column;gap:2px;min-width:0}
.pai-identity strong{font-size:14px;line-height:1.2}
.pai-identity small{font-size:11.5px;color:var(--pai-muted)}
.pai-avatar{width:34px;height:34px;flex:0 0 34px;border-radius:10px;background:var(--pai-brand);color:#fff;display:grid;place-items:center}
.pai-avatar svg{width:20px;height:20px}
.pai-head-actions{display:flex;align-items:center;gap:2px}
.pai-icon-btn{width:32px;height:32px;border:0;border-radius:8px;background:transparent;color:var(--pai-muted);display:grid;place-items:center;cursor:pointer;text-decoration:none;padding:0}
.pai-icon-btn svg{width:17px;height:17px}
.pai-icon-btn:hover{background:var(--ui-neutral-soft,#f1f4f3);color:var(--pai-text)}
.pai-icon-btn:focus-visible{outline:none;box-shadow:var(--ui-focus,0 0 0 3px rgba(21,148,71,.3))}
.pai-messages{flex:1 1 auto;min-height:0;overflow-y:auto;padding:16px 14px 8px;display:flex;flex-direction:column;gap:10px;background:var(--pai-surface-2);scroll-behavior:smooth;scrollbar-width:thin;scrollbar-color:var(--pai-border) transparent}
.pai-messages::-webkit-scrollbar{width:8px}
.pai-messages::-webkit-scrollbar-thumb{background:var(--pai-border);border-radius:99px;border:2px solid var(--pai-surface-2)}
.pai-messages::-webkit-scrollbar-track{background:transparent}
.pai-table-wrap{scrollbar-width:thin}
.pai-msg{display:flex}
.pai-msg.user{justify-content:flex-end}
.pai-bubble{max-width:92%;padding:10px 13px;border-radius:14px;font-size:13.5px;line-height:1.5;background:var(--pai-surface);border:1px solid var(--pai-border);color:var(--pai-text);min-width:0;overflow-wrap:anywhere}
.pai-msg.user .pai-bubble{background:var(--pai-user);color:#f5f8f6;border-color:transparent;border-bottom-right-radius:5px}
.pai-msg.assistant .pai-bubble{border-bottom-left-radius:5px}
.pai-bubble p{margin:0}
.pai-bubble p+p,.pai-bubble ul,.pai-bubble ol{margin-top:6px}
.pai-bubble ul,.pai-bubble ol{padding-left:18px;margin-bottom:0}
.pai-bubble li+li{margin-top:3px}
.pai-suggestions{display:flex;flex-wrap:wrap;gap:6px;padding:2px 2px 6px}
.pai-chip{border:1px solid var(--pai-border);background:var(--pai-surface);color:var(--pai-text);border-radius:999px;padding:7px 12px;font:600 12.5px/1.2 var(--pai-font);cursor:pointer;transition:background .14s,border-color .14s}
.pai-chip:hover{background:var(--pai-brand-soft);border-color:var(--pai-brand);color:var(--pai-brand-strong)}
.pai-chip:disabled{opacity:.5;cursor:default}
.pai-composer{display:flex;align-items:flex-end;gap:8px;padding:10px 12px;border-top:1px solid var(--pai-border);background:var(--pai-surface)}
.pai-composer textarea{flex:1 1 auto;min-height:40px;max-height:120px;resize:none;padding:10px 12px;border:1px solid var(--ui-border-strong,#cfd8d3);border-radius:12px;background:var(--pai-surface);color:var(--pai-text);font:500 13.5px/1.4 var(--pai-font);outline:none}
.pai-composer textarea:focus{border-color:var(--pai-brand);box-shadow:0 0 0 3px color-mix(in srgb,var(--pai-brand) 18%,transparent)}
.pai-composer textarea:disabled{opacity:.6}
.pai-send{width:40px;height:40px;flex:0 0 40px;border:0;border-radius:11px;background:var(--pai-brand);color:#fff;display:grid;place-items:center;cursor:pointer;transition:background .14s,opacity .14s}
.pai-send svg{width:17px;height:17px}
.pai-send:hover{background:var(--pai-brand-strong)}
.pai-send:disabled{opacity:.45;cursor:default}
.pai-foot{padding:7px 14px 9px;font-size:11px;color:var(--pai-muted);text-align:center;background:var(--pai-surface)}

/* Answer blocks (shared with the AI Assistant page) */
.pai-thinking{display:flex;align-items:center;gap:8px;color:var(--pai-muted);font-size:12.5px}
.pai-dots{display:inline-flex;gap:4px}
.pai-dots i{width:6px;height:6px;border-radius:50%;background:var(--pai-brand);animation:pai-pulse 1.1s ease-in-out infinite}
.pai-dots i:nth-child(2){animation-delay:.15s}.pai-dots i:nth-child(3){animation-delay:.3s}
@keyframes pai-pulse{0%,80%,100%{opacity:.25;transform:translateY(0)}40%{opacity:1;transform:translateY(-2px)}}
.pai-thinking em{font-style:normal}
.pai-note{padding:10px 12px;border-radius:10px;font-size:13px;line-height:1.45}
.pai-note.warn{background:var(--ui-warning-soft,#fff5e6);color:var(--ui-warning,#b45309)}
.pai-note.error{background:var(--ui-danger-soft,#fdeeee);color:var(--ui-danger,#c0262d);display:flex;flex-direction:column;gap:8px}
.pai-retry{align-self:flex-start;border:1px solid currentColor;background:transparent;color:inherit;border-radius:8px;padding:5px 10px;font:600 12px/1 var(--pai-font);cursor:pointer}
.pai-data{display:grid;gap:10px;margin-top:10px}
.pai-table-title{font:700 11.5px/1.2 var(--pai-font);letter-spacing:.05em;text-transform:uppercase;color:var(--pai-muted);margin-bottom:6px}
.pai-table-wrap{overflow-x:auto;border:1px solid var(--pai-border);border-radius:10px;background:var(--pai-surface)}
.pai-table-wrap .pai-table-title{padding:9px 11px 0}
.pai-table{width:100%;border-collapse:collapse;font-size:12.5px;font-variant-numeric:tabular-nums}
.pai-table th{text-align:left;font:650 11px/1.2 var(--pai-font);color:var(--pai-muted);text-transform:uppercase;letter-spacing:.04em;padding:8px 10px;background:var(--pai-surface-2);border-bottom:1px solid var(--pai-border);white-space:nowrap}
.pai-table td{padding:8px 10px;border-bottom:1px solid var(--pai-border);white-space:nowrap;color:var(--pai-text)}
.pai-table tr:last-child td{border-bottom:0}
.pai-table .num{text-align:right}
.pai-table-foot{padding:7px 11px;font-size:11.5px;color:var(--pai-muted);border-top:1px solid var(--pai-border)}
.pai-kv dl{margin:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:8px}
.pai-kv dl>div{border:1px solid var(--pai-border);border-radius:10px;padding:8px 10px;background:var(--pai-surface);min-width:0}
.pai-kv dt{font-size:11px;color:var(--pai-muted);margin-bottom:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pai-kv dd{margin:0;font:650 13.5px/1.2 var(--pai-font);font-variant-numeric:tabular-nums;color:var(--pai-text);overflow-wrap:anywhere}
.pai-muted{color:var(--pai-muted)}
.pai-meta{display:flex;flex-wrap:wrap;gap:4px 12px;margin-top:9px;font-size:11px;color:var(--pai-muted)}

/* Phone: panel becomes a sheet; button sits above the bottom tab bar */
@media(max-width:760px){
  .pai-panel{left:8px!important;right:8px!important;top:auto!important;bottom:calc(74px + env(safe-area-inset-bottom))!important;width:auto!important;height:min(72vh,620px)!important;border-radius:16px}
  .pai-bubble{max-width:96%}
  .pai-kv dl{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(prefers-reduced-motion:reduce){.pai-panel{animation:none}.pai-fab{transition:none}.pai-dots i{animation:none;opacity:.7}}
@media print{.pai-root{display:none!important}}

/* Local-mode note: the reply was composed from records because the language model was unavailable */
.pai-meta .pai-mode{display:inline-flex;align-items:center;gap:5px;padding:2px 8px;border-radius:999px;background:var(--pai-warn-soft,#fff5e6);color:var(--pai-warn,#b45309);font-weight:600}
.pai-meta .pai-mode::before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}
