/* Shared Chat component library. Tokens come from the current robot shell. */
:root { --chat-card-radius:16px; --chat-control-radius:12px; --chat-control-size:40px; }
#chat-app :is(.ss-pdf-card,.viz-card,.chat-file-item,.chat-attachment-file,.chat-code-block,.ss-img-wrap) {
  color:var(--ss-text); background:var(--ss-surface); border:1px solid var(--ss-border);
  border-radius:var(--chat-card-radius); box-shadow:none;
}
#chat-app .ss-pdf-card { width:360px; min-width:0; max-width:100%; padding:14px; gap:12px; }
#chat-app .ss-pdf-mini { width:60px; height:80px; border-radius:7px; background:var(--ss-surface-alt); }
#chat-app .ss-pdf-card-name { font-size:14px; line-height:1.45; font-weight:600; white-space:normal; overflow-wrap:anywhere; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; }
#chat-app .ss-pdf-card-meta { color:var(--ss-muted); }
#chat-app .ss-pdf-card-actions { gap:8px; margin-top:10px; flex-wrap:wrap; }
#chat-app :is(.ss-pdf-card-open,.ss-pdf-card-save,.viz-dl-btn,.ss-img-btn,.chat-code-copy,.chat-msg-copy) {
  min-height:var(--chat-control-size); min-width:var(--chat-control-size); box-sizing:border-box;
  display:inline-flex; align-items:center; justify-content:center; gap:7px; padding:8px 12px;
  border:1px solid transparent; border-radius:var(--chat-control-radius); font-family:inherit;
  font-size:13px; font-weight:600; line-height:1.2; white-space:nowrap; flex-shrink:0;
  color:var(--ss-on-selected); background:var(--ss-selected); cursor:pointer;
}
#chat-app .ss-pdf-card-save { background:var(--ss-action); color:var(--ss-on-action); }
#chat-app .ss-pdf-card-save.is-saved { background:var(--ss-selected); color:var(--ss-on-selected); }
#chat-app :is(.ss-pdf-card-open,.viz-dl-btn,.ss-img-btn,.chat-code-copy,.chat-msg-copy):hover { background:var(--ss-hover); color:var(--ss-text); }
#chat-app .ss-pdf-card-save:hover:not(:disabled) { background:var(--ss-action-hover); }
#chat-app :is(.ss-pdf-card-open,.ss-pdf-card-save,.viz-dl-btn,.ss-img-btn,.chat-code-copy,.chat-msg-copy):disabled { cursor:default; opacity:.65; }
#chat-app :is(.ss-pdf-card-open,.ss-pdf-card-save,.viz-dl-btn,.ss-img-btn,.chat-code-copy,.chat-msg-copy,.chat-file-item-remove):focus-visible,
.ss-img-lightbox button:focus-visible { outline:2px solid var(--ss-focus); outline-offset:3px; }
#chat-app :is(.ss-img-btn,.chat-code-copy,.chat-msg-copy) { width:var(--chat-control-size); height:var(--chat-control-size); padding:9px; background:transparent; color:var(--ss-muted); }
#chat-app :is(.ss-img-btn,.chat-code-copy,.chat-msg-copy,.viz-dl-btn) svg { width:18px; height:18px; flex-shrink:0; }
#chat-app .chat-file-item { max-width:min(100%,320px); padding:6px; gap:10px; }
#chat-app .chat-file-item:hover { transform:none; background:var(--ss-surface-alt); }
#chat-app .chat-file-item-name { color:var(--ss-text); font-size:13px; }
#chat-app .chat-file-item-remove { width:36px; height:36px; color:var(--ss-muted); }
#chat-app .chat-file-item-remove:before { content:none; }
#chat-app .chat-file-item-remove:hover { background:var(--ss-hover); color:var(--ss-text); }
#chat-app .viz-card { width:100%; max-width:680px; margin:14px 0; }
#chat-app :is(.viz-card-header,.chat-code-header) { background:var(--ss-surface-alt); border-bottom:1px solid var(--ss-border); padding:10px 14px; color:var(--ss-muted); }
#chat-app .viz-card-label { font-size:14px; font-weight:600; line-height:1.4; font-family:inherit; text-transform:none; letter-spacing:0; }
#chat-app .viz-card-actions { border-top:1px solid var(--ss-border); padding:10px 14px; gap:8px; flex-wrap:wrap; }
#chat-app .chat-message-content:has(.viz-card) { width:100%; max-width:100%; }
#chat-app .viz-chart-iframe { background:var(--ss-surface); width:100%; }
#chat-app .viz-mermaid-content { padding:16px; font-weight:400; }
#chat-app .viz-mermaid-content svg { font-family:var(--font-family); font-size:14px; font-weight:400; line-height:1.5; }
/* Mermaid measures labels outside the message bubble. Keep its measured font inside too. */
#chat-app .viz-mermaid-content .nodeLabel p,
#chat-app .viz-mermaid-content .edgeLabel p { font:inherit; line-height:inherit; margin:0; }
#chat-app .viz-error { color:var(--color-error,#b54747); }
#chat-app .chat-code-lang { color:var(--ss-muted); }
#chat-app .chat-code-block pre { margin:0; }
#chat-app .ss-img-wrap { display:block; width:fit-content; max-width:100%; overflow:hidden; margin:12px 0; }
#chat-app .ss-gen-img { display:block; max-width:100%; height:auto; cursor:zoom-in; }
#chat-app .ss-img-actions { display:flex; gap:6px; align-items:center; padding:8px 10px; border-top:1px solid var(--ss-border); }
.ss-img-lightbox { margin:auto; box-sizing:border-box; width:min(960px,calc(100vw - 32px)); max-width:calc(100vw - 32px); max-height:calc(100dvh - 32px); padding:16px; border:1px solid var(--ss-border); border-radius:20px; background:var(--ss-surface); color:var(--ss-text); box-shadow:var(--ss-shadow); }
.ss-img-lightbox::backdrop { background:var(--ss-overlay); }
.ss-img-lightbox[open] { display:flex; flex-direction:column; gap:12px; }
.ss-img-lightbox>img { display:block; max-width:100%; max-height:calc(100dvh - 180px); min-height:0; object-fit:contain; align-self:center; }
.ss-img-lightbox-close,.ss-img-lb-btn { display:inline-flex; align-items:center; justify-content:center; gap:8px; min-width:44px; min-height:44px; padding:10px 14px; border:0; border-radius:12px; background:var(--ss-selected); color:var(--ss-on-selected); font-size:14px; font-weight:600; line-height:1.3; font-family:inherit; cursor:pointer; }
.ss-img-lightbox-close { align-self:flex-end; padding:10px; }
.ss-img-lightbox-bar { display:flex; justify-content:center; }
.ss-img-lightbox button:hover { background:var(--ss-hover); }
@media(max-width:767px) {
  :root { --chat-control-size:44px; }
  #chat-app .ss-pdf-card { padding:12px; gap:10px; }
  #chat-app .ss-pdf-mini { width:48px; height:66px; }
  #chat-app .chat-file-item-remove { width:44px; height:44px; }
  #chat-app .viz-card-actions { padding:10px; }
}
@media(prefers-reduced-motion:reduce) {
  #chat-app :is(.ss-pdf-card-open,.ss-pdf-card-save,.ss-pdf-mini,.ss-pdf-card-meta,.viz-loading-spinner,.viz-skeleton-chart,.viz-skeleton-icon,.viz-skeleton-label) { animation:none; transition:none; }
}
@media(forced-colors:active) {
  #chat-app :is(.ss-pdf-card,.viz-card,.chat-file-item,.ss-img-wrap,.chat-code-block),.ss-img-lightbox { border-color:CanvasText; }
  #chat-app :is(.ss-pdf-card-open,.ss-pdf-card-save,.viz-dl-btn,.ss-img-btn,.chat-code-copy,.chat-msg-copy),.ss-img-lightbox button { border:1px solid ButtonText; }
}

/* Refine the existing robot controls, retaining its shell and native scrolling. */
#chat-app .chat-bubble-show-more { min-height:44px; padding:10px 14px; font-size:14px; }
#chat-app .chat-bubble.is-collapsed::after { height:30px; }
#chat-app .chat-table-scroll { max-width:100%; overflow-x:auto; overscroll-behavior-x:contain; margin-block:12px; }
#chat-app .chat-table-scroll:focus-visible { outline:2px solid var(--ss-focus); outline-offset:2px; }
#chat-app .chat-table-scroll table { display:table; width:auto; min-width:min(100%,280px); margin:0; overflow:visible; }
#chat-app .chat-table-scroll :is(th,td) { padding:9px 12px; }
#chat-app .chat-task-marker { display:inline-flex; align-items:center; justify-content:center; width:20px; height:20px; margin-inline-end:7px; vertical-align:middle; border:1px solid var(--ss-muted); border-radius:5px; color:var(--ss-on-selected); background:var(--ss-selected); }
#chat-app .chat-task-marker[data-complete=false] { background:transparent; }
#chat-app .chat-footnote-backref { display:inline-flex; align-items:center; justify-content:center; min-width:32px; min-height:32px; vertical-align:middle; color:var(--ss-action); }
#chat-app .chat-code-lang { text-transform:none; letter-spacing:normal; }
#chat-app .chat-copy-status { color:var(--ss-muted); font-size:13px; line-height:1.4; overflow-wrap:anywhere; }
#chat-app .chat-code-header { flex-wrap:wrap; }
#chat-app .ss-img-actions { flex-wrap:wrap; }
#chat-app .ss-img-btn { width:auto; height:auto; padding:9px 11px; }
#chat-app .ss-pdf-card-open { background:var(--ss-action); color:var(--ss-on-action); }
#chat-app .ss-pdf-card-open:hover:not(:disabled) { background:var(--ss-action-hover); color:var(--ss-on-action); }
#chat-app .ss-pdf-card-save { background:var(--ss-selected); color:var(--ss-on-selected); }
#chat-app .ss-pdf-card-save:hover:not(:disabled) { background:var(--ss-hover); color:var(--ss-text); }
html body #chat-app#chat-app .ss-pdf-card-actions .ss-pdf-card-open { background:var(--ss-action)!important; color:var(--ss-on-action)!important; }
html body #chat-app#chat-app .ss-pdf-card-actions .ss-pdf-card-save { background:var(--ss-selected)!important; color:var(--ss-on-selected)!important; }
html body #chat-app#chat-app .ss-pdf-card-actions .ss-pdf-card-open:hover:not(:disabled) { background:var(--ss-action-hover)!important; }
html body #chat-app#chat-app .ss-pdf-card-actions .ss-pdf-card-save:hover:not(:disabled) { background:var(--ss-hover)!important; }
#chat-app .chat-token-keyword { color:#6845a0!important; }
#chat-app .chat-token-string { color:#236957!important; }
#chat-app .chat-token-number { color:#8b4f1f!important; }
#chat-app .chat-token-comment { color:#62695f!important; }
html[data-theme=dark] #chat-app .chat-token-keyword { color:#d0b6ee!important; }
html[data-theme=dark] #chat-app .chat-token-string { color:#a6cfbb!important; }
html[data-theme=dark] #chat-app .chat-token-number { color:#e4bf88!important; }
html[data-theme=dark] #chat-app .chat-token-comment { color:#b3bfb2!important; }
#chat-app .ss-pdf-card-name { unicode-bidi:plaintext; }
html #chat-app .chat-sources-panel { color:var(--ss-text); background:var(--ss-surface); border-color:var(--ss-border); }
#chat-app .chat-source-copy>span { display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; }
#chat-app .chat-source-icon { color:var(--ss-muted); background:var(--ss-selected); }
#chat-app .viz-data { border-top:1px solid var(--ss-border); padding:8px 14px; }
#chat-app .viz-data summary { cursor:pointer; min-height:44px; display:list-item; align-content:center; font-size:14px; font-weight:600; color:var(--ss-text); }
#chat-app .viz-data pre { max-height:360px; overflow:auto; white-space:pre; font-size:13px; }
#chat-app .viz-data caption { text-align:start; padding:8px 0; font-weight:600; }
#chat-app .viz-mermaid-content { overflow:auto; }
body #ed-voice-popover.ss-reader-menu { background:var(--ss-surface); color:var(--ss-text); border-color:var(--ss-border); }
body #ed-voice-popover.ss-reader-menu :is(button,summary):focus-visible { outline:2px solid var(--ss-focus)!important; outline-offset:-2px; }
body #ed-voice-popover .ss-reader-speed-ends { font-size:12px; }
body #chat-history-drawer { background:var(--ss-surface)!important; color:var(--ss-text)!important; }
body #chat-history-drawer :is(.chd-search,.chd-item) { color:var(--ss-text); }
body #chat-history-drawer .chd-action-btn { min-width:40px; min-height:40px; }
body .chat-plus-menu-item { min-height:44px; }
body .chat-plus-menu-item>span { min-width:0; white-space:normal; overflow-wrap:anywhere; }
body .chat-plus-robot { flex-wrap:wrap; }
body .chat-plus-robot .chat-robot-current { white-space:normal; }
body .calm-actions-menu > button:last-child { border-top:1px solid var(--ss-border)!important; margin-top:6px!important; padding-top:12px!important; }
body .calm-actions-menu button { min-height:44px; }
#chat-app :is(.chat-disclaimer,.input-disclaimer,.chat-terms,.ss-ai-disclaimer) { font-size:13px; line-height:1.5; color:var(--ss-muted); }
.sk-crop-adjust { position:relative; z-index:1; width:min(520px,100%); color:#faf5ef; }
#sk-image-crop:has(.sk-crop-adjust) { overflow-y:auto; justify-content:safe center; touch-action:pan-y; }
#sk-image-crop:has(.sk-crop-adjust)>* { flex-shrink:0; }
.sk-crop-adjust summary { min-height:44px; align-content:center; cursor:pointer; font-size:14px; }
.sk-crop-fields { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:10px; }
.sk-crop-fields label { display:flex; flex-direction:column; gap:5px; font-size:13px; }
.sk-crop-fields input { min-width:0; width:100%; box-sizing:border-box; min-height:44px; border:1px solid #a8c5b8; border-radius:9px; padding:8px; background:#fffefb; color:#263b2c; font-family:inherit; font-size:16px; line-height:1.3; touch-action:manipulation; }
.sk-crop-adjust :focus-visible { outline:2px solid #a8c5b8; outline-offset:3px; }
@media(max-width:767px){
  /* The visible card owns spacing; its transparent inner wrapper must not add a second inset. */
  #chat-app #chat-empty-voksen .input-card { padding:12px!important; }
  #chat-app #chat-direct-input.ss-mobile-native-input { padding-inline:10px!important; }
  #chat-app .chat-input-box--welcome { display:flex!important; flex-direction:column!important; align-items:stretch!important; height:auto!important; padding:0!important; border-radius:22px!important; }
  #chat-app #chat-direct-input { position:static!important; width:100%!important; min-width:0!important; flex:0 0 auto!important; padding:0!important; min-height:48px!important; }
  #chat-app #chat-direct-input .ql-editor { min-height:48px; padding:8px 10px!important; font-size:16px; }
  #chat-app .chat-input-box--welcome .chat-input-toolbar { position:static!important; width:100%!important; display:flex!important; justify-content:space-between!important; margin-top:8px!important; }
  #chat-app .chat-input-box--welcome .chat-input-toolbar-left,#chat-app .chat-input-box--welcome .chat-input-toolbar-right { position:static!important; }
  #chat-app .chat-input-box--welcome :is(.chat-plus-btn,.ss-mic,.ss-voice-trigger,.chat-send-btn), #chat-app #chat-direct-send { min-width:44px!important; min-height:44px!important; }
  #chat-app .chat-input-box--welcome[data-mobile-native-composer="1"] { display:grid!important; grid-template-columns:minmax(0,1fr) auto!important; grid-template-areas:"files files" "input input" "left right"!important; gap:0 6px!important; }
  #chat-app .chat-input-box--welcome[data-mobile-native-composer="1"]>#chat-direct-input { grid-area:input!important; }
  #chat-app .chat-input-box--welcome[data-mobile-native-composer="1"]>.chat-input-toolbar-left { grid-area:left!important; justify-self:start!important; margin-top:8px!important; }
  #chat-app .chat-input-box--welcome[data-mobile-native-composer="1"]>.chat-input-toolbar-right { grid-area:right!important; justify-self:end!important; margin-top:8px!important; }
  #chat-app .chat-input-box--welcome[data-mobile-native-composer="1"]>.chat-file-preview { grid-area:files!important; }
  body #chat-history-drawer .chd-action-btn { min-width:44px; min-height:44px; }
  body[data-chat-reader=full] #chat-main .reader-controls button { min-width:44px; font-family:inherit; font-size:13px; line-height:1.3; }
  html[data-chat-page-scroll] body.chat-ny-in-conversation:not(.ss-pdf-reader-open) #ss-scroll-bottom-fab { left:auto!important; right:24px!important; transform:none!important; }
  html[dir=rtl][data-chat-page-scroll] body.chat-ny-in-conversation:not(.ss-pdf-reader-open) #ss-scroll-bottom-fab { right:auto!important; left:24px!important; }
}
@media(prefers-reduced-motion:reduce){
  #chat-app :is(.typing-dot,.chat-loading-dot,.ssv-bar,.ss-wait-dot,.ss-progress-spinner,.viz-loading-spinner,.chat-send-btn,.chat-bubble-show-more) { animation:none!important; transition:none!important; }
}
