@import url('/link-view-header.css');
.swibby[hidden],.swibby [hidden]{display:none!important}.swibby-fab{position:fixed;right:22px;bottom:calc(100px + env(safe-area-inset-bottom));z-index:1200;display:flex;align-items:center;gap:8px;background:var(--swibbly-bg);color:var(--swibbly-text);border:1px solid var(--swibbly-border);border-radius:40px;padding:12px 18px;box-shadow:var(--shadow-dialog)}.swibby-fab svg{width:28px;height:28px}.swibby-dialog{padding:0;width:min(520px,calc(100vw - 32px));height:min(800px,calc(100dvh - 40px));max-height:calc(100dvh - 40px);margin:auto 16px auto auto;border:1px solid var(--border-default);border-radius:var(--radius-dialog);background:var(--bg-surface);color:var(--text-primary);box-shadow:var(--shadow-dialog);overflow:hidden}.swibby-dialog[open]{display:flex;flex-direction:column}.swibby-dialog::backdrop{background:color-mix(in srgb,var(--bg-overlay) 60%,transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.swibby-dialog header{display:flex;justify-content:space-between;align-items:center;padding:18px 20px;border-bottom:1px solid var(--border-default)}.swibby-dialog h2{font-size:24px;margin:0}.swibby-dialog small{display:block;color:var(--text-secondary);font-size:12px}.swibby-dialog button:not(.sw-btn){font:inherit;cursor:pointer;white-space:normal}.swibby-dialog button:not(.sw-btn):disabled{opacity:.55;cursor:wait}.swibby-dialog nav{display:flex;gap:8px;padding:10px 18px}.swibby-dialog nav button:not(.sw-btn),.swibby-dialog header button:not(.sw-btn),.swibby-message button:not(.sw-btn),[data-threads] button:not(.sw-btn){background:var(--bg-surface-2);color:var(--text-brand);border:1px solid var(--border-default);border-radius:10px;padding:8px 12px}.swibby-dialog [data-threads]{overflow:auto;max-height:30%;padding:8px 18px;flex-shrink:0}.swibby-dialog [data-threads] button:not(.sw-btn){display:block;width:100%;margin-bottom:6px;text-align:left}.swibby-messages{overflow-x:hidden;overflow-y:auto;flex:1;min-height:80px;padding:12px 18px;overscroll-behavior:contain}.swibby-message{background:var(--bg-surface-2);border:1px solid var(--border-default);border-radius:16px;padding:12px;margin-bottom:12px;min-width:0;max-width:100%;overflow-wrap:break-word}
.swibby-message pre,.swibby-message .sw-table-wrap{max-width:100%;overflow-x:auto}
.swibby-message img,.swibby-message video{max-width:100%;height:auto}.swibby-message.is-user{background:var(--brand-soft);margin-left:20px}.swibby-message>div{white-space:pre-wrap;margin-top:6px;line-height:1.5}.swibby-message a{color:var(--text-brand)}.swibby-message button:not(.sw-btn){margin:6px 6px 0 0}.swibby-dialog form{padding:12px 18px calc(16px + env(safe-area-inset-bottom));border-top:1px solid var(--border-default);flex-shrink:0}.swibby-dialog label{display:block;font-size:13px;margin-bottom:5px}.swibby-dialog textarea:not(.sw-input__control){width:100%;box-sizing:border-box;resize:vertical;max-height:22dvh;min-height:60px;background:var(--bg-surface);border:1px solid var(--border-strong);border-radius:10px;padding:10px;color:inherit;font:inherit;font-size:16px}.swibby-dialog input[type=file]{width:100%;font-size:12px}.swibby-upload{margin-top:8px}.swibby-dialog button:not(.sw-btn)[type=submit]{display:block;margin-top:10px;width:100%;background:var(--brand-primary);color:var(--text-inverse);border:0;border-radius:10px;padding:10px}.swibby-dialog [data-error]{color:var(--status-danger);font-size:13px;margin:0 18px}.swibby-context{font-size:12px;margin:0 18px;color:var(--text-brand);overflow-wrap:break-word}@media(max-width:600px){.swibby-dialog{width:100%;height:100dvh;max-height:100dvh;max-width:100%;margin:0;border:0;border-radius:0;padding-top:env(safe-area-inset-top);box-sizing:border-box}.swibby-fab{right:16px;bottom:calc(100px + env(safe-area-inset-bottom))}.swibby-fab span{display:none}.swibby-dialog header{padding:12px 16px}}

/* Keep touch/trackpad scroll inside the chat, including history and composer. */
.swibby-dialog{overscroll-behavior:none}.swibby-messages,.swibby-dialog [data-threads],.swibby-dialog textarea:not(.sw-input__control){overscroll-behavior:contain;-webkit-overflow-scrolling:touch}

.swibby-context{font-size:14px;line-height:1.45;font-weight:600;padding:8px 0}

/* History is a separate view, with its own scroll area and no composer. */
.swibby-dialog [data-threads]{flex:1;min-height:0;max-height:none;flex-shrink:1;padding:8px 18px 24px}.swibby-dialog [data-threads] h3{margin:8px 0;font-size:20px}.swibby-history-help{font-size:13px;line-height:1.5;color:var(--text-secondary);margin:0 0 16px}.swibby-dialog [data-threads] .swibby-thread-card{padding:16px;margin-bottom:12px;border-radius:16px;background:var(--bg-surface-2);transition:border-color .15s;text-align:left}.swibby-thread-card:hover,.swibby-thread-card:focus-visible{border-color:var(--brand-primary)!important}.swibby-thread-title{display:block;color:var(--text-primary);font-weight:600;line-height:1.45;overflow-wrap:break-word}.swibby-thread-meta{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;margin-top:12px;color:var(--text-secondary);font-size:12px}.swibby-thread-status{padding:4px 8px;border-radius:7px;background:var(--bg-surface-2);color:var(--text-primary)}.swibby-thread-status.is-completed{background:var(--status-success-soft);color:var(--status-success)}.swibby-thread-status.is-running,.swibby-thread-status.is-queued,.swibby-thread-status.is-approval{background:var(--brand-soft);color:var(--text-brand)}.swibby-thread-status.is-failed{background:var(--status-danger-soft);color:var(--status-danger)}.swibby-dialog h2,.swibby-author{display:flex;align-items:center;gap:9px}.swibby-avatar{width:34px;height:34px;flex:none}.swibby-author .swibby-avatar{width:25px;height:25px}.swibby-dialog .swibby-message-time{display:block;color:var(--text-secondary);font-size:11px;margin:5px 0 8px}.swibby-message>.swibby-richtext{white-space:normal}.swibby-richtext p{margin:0 0 .8em}.swibby-richtext p:last-child{margin-bottom:0}.swibby-richtext h3{font-size:1.08em;margin:1em 0 .5em}.swibby-richtext h3:first-child{margin-top:0}.swibby-richtext ul,.swibby-richtext ol{padding-left:1.4em;margin:.65em 0}.swibby-richtext li{margin:.35em 0}.swibby-richtext code{font-family:ui-monospace,monospace;font-size:.9em;background:var(--bg-surface);padding:2px 5px;border-radius:4px;white-space:pre-wrap}.swibby-richtext pre{max-width:100%;overflow-x:auto;background:var(--bg-surface);border-radius:8px;padding:12px}.swibby-richtext pre code{padding:0;white-space:pre}.swibby-richtext a{text-decoration:underline;text-underline-offset:3px}.swibby-dialog header,.swibby-dialog nav{flex-shrink:0}
/* Compact header keeps chat navigation next to Close, including on phones. */
.swibby-dialog header{flex-wrap:wrap;gap:8px;padding:14px 16px}.swibby-dialog header nav{padding:0;gap:5px;margin-left:auto;align-items:center}.swibby-dialog header nav button:not(.sw-btn){font-size:12px;padding:8px;min-height:36px}.swibby-dialog header [data-close]{font-size:20px;line-height:1;padding:6px 10px}.swibby-dialog header [data-connection]{flex-basis:100%;line-height:1.35}.swibby-dialog h2{font-size:22px;gap:7px}@media(max-width:360px){.swibby-dialog header{padding:12px}.swibby-dialog h2{font-size:19px}.swibby-dialog h2 .swibby-avatar{width:28px;height:28px}.swibby-dialog header nav button:not(.sw-btn){padding:7px 6px;font-size:11px}}

/* App destinations stay in the current app and remain easy to tap on mobile. */
.swibby-message .swibby-page-link{display:inline-flex;align-items:center;justify-content:space-between;gap:10px;max-width:100%;min-height:44px;padding:10px 14px;text-align:left;font-weight:600;line-height:1.4;overflow-wrap:break-word;background:var(--brand-soft);border-color:var(--brand-primary);color:var(--text-brand);text-decoration:none}.swibby-message .swibby-page-link:hover,.swibby-message .swibby-page-link:focus-visible{background:var(--brand-soft);border-color:var(--brand-primary);outline-offset:3px}.swibby-message-actions{margin-top:12px}

.swibby-message [data-attachment]{display:inline-flex;align-items:center;gap:9px;max-width:100%;text-align:left}.swibby-file-icon{width:20px;height:20px;flex:none}.swibby-message [data-attachment] span{min-width:0;overflow-wrap:break-word}

.swibby-thread-context{display:block;margin-top:8px;font-size:12px;line-height:1.45;color:var(--text-brand);overflow-wrap:break-word}

/* Compact composer: message plus two accessible icon controls. */
.swibby-dialog form{padding:10px 14px calc(10px + env(safe-area-inset-bottom))}.swibby-compose-row{display:flex;align-items:center;gap:8px}.swibby-compose-row textarea:not(.sw-input__control){flex:1;min-width:0;min-height:48px;max-height:18dvh;resize:vertical;margin:0}.swibby-compose-row .swibby-upload,.swibby-compose-row button:not(.sw-btn)[type=submit]{position:relative;display:flex;align-items:center;justify-content:center;flex:0 0 44px;width:44px;height:44px;box-sizing:border-box;margin:0;padding:10px;border-radius:12px}.swibby-compose-row .swibby-upload{color:var(--text-brand);background:var(--bg-surface-2);border:1px solid var(--border-default);overflow:hidden;cursor:pointer}.swibby-compose-row svg:not(.sw-icon){width:24px;height:24px;flex:none}.swibby-compose-row input[type=file]{position:absolute;inset:0;width:100%;height:100%;opacity:0;cursor:pointer}.swibby-upload:focus-within{outline:2px solid var(--brand-primary);outline-offset:2px}.swibby-dialog [data-files]{margin-top:7px;overflow-wrap:break-word}

.swibby-add-wrap{position:relative;flex:0 0 44px}.swibby-compose-row [data-add]:not(.sw-btn){display:flex;align-items:center;justify-content:center;width:44px;height:44px;padding:10px;border:1px solid var(--border-default);border-radius:12px;background:var(--bg-surface-2);color:var(--text-brand)}.swibby-add-menu{position:absolute;bottom:calc(100% + 12px);left:0;width:min(240px,calc(100vw - 48px));padding:8px;background:var(--bg-surface-2);border:1px solid var(--border-default);border-radius:18px;box-shadow:var(--shadow-dialog);z-index:2}.swibby-add-menu button:not(.sw-btn){display:flex;align-items:center;gap:12px;width:100%;min-height:48px;background:transparent;color:var(--text-primary);border:0;border-radius:10px;padding:10px 12px;text-align:left}.swibby-add-menu button:not(.sw-btn):hover,.swibby-add-menu button:not(.sw-btn):focus-visible{background:var(--brand-soft)}.swibby-add-menu small{padding:8px 12px;line-height:1.4}.swibby-add-menu svg{color:var(--text-brand)}

/* Messenger-style single-line input, growing only as the message grows. */
.swibby-compose-row{gap:6px;align-items:center}.swibby-compose-row textarea:not(.sw-input__control){min-height:40px;height:40px;max-height:120px;resize:none;border:0;border-radius:22px;padding:9px 14px;line-height:22px;background:var(--bg-surface-2);box-shadow:none;outline:none}.swibby-compose-row textarea:not(.sw-input__control):focus{border:0;box-shadow:none;outline:none}.swibby-compose-row textarea:not(.sw-input__control):focus-visible{outline:1px solid var(--brand-primary);outline-offset:0}.swibby-compose-row [data-add]:not(.sw-btn){background:transparent;border:0;border-radius:50%;color:var(--text-brand);padding:9px}.swibby-compose-row button:not(.sw-btn)[type=submit]{width:40px;height:40px;flex-basis:40px;border-radius:50%;padding:9px;margin-bottom:0;box-shadow:none}.swibby-compose-row button:not(.sw-btn)[type=submit] svg{width:22px;height:22px}.swibby-dialog form{padding:7px 10px calc(7px + env(safe-area-inset-bottom))}.swibby-dialog.swibby-keyboard-open form{padding-bottom:7px}@media(max-width:600px){.swibby-dialog[open]{position:fixed;inset:0;height:100dvh;max-height:100dvh;margin:0}.swibby-dialog.swibby-keyboard-open{padding-top:env(safe-area-inset-top)}}

.swibby-compose-row textarea:not(.sw-input__control){max-height:128px}.swibby-context-picker{position:absolute;inset:0;z-index:5;overflow:auto;overscroll-behavior:contain;padding:20px;background:var(--bg-surface);box-sizing:border-box}.swibby-picker-heading{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:18px}.swibby-picker-heading h3{margin:0}.swibby-context-picker button:not(.sw-btn){background:var(--bg-surface-2);color:var(--text-brand);border:1px solid var(--border-default);border-radius:12px;padding:10px 14px;min-height:44px}.swibby-context-picker label{margin:12px 0}.swibby-context-picker input:not(.sw-input__control),.swibby-context-picker select:not(.sw-select__control){display:block;width:100%;box-sizing:border-box;background:var(--bg-surface-2);color:var(--text-primary);border:1px solid var(--border-default);border-radius:12px;padding:12px;font:inherit;margin-top:6px}.swibby-context-picker .swibby-picker-item{display:block;width:100%;text-align:left;margin-top:10px;overflow-wrap:break-word}.swibby-picker-item strong{display:block;color:var(--text-primary);margin-bottom:5px}.swibby-picker-pages{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:18px;font-size:12px}

.swibby-context-picker{padding-top:calc(20px + env(safe-area-inset-top));padding-bottom:calc(20px + env(safe-area-inset-bottom))}.swibby-context-picker .swibby-picker-item{display:flex;align-items:center;justify-content:space-between;gap:12px}.swibby-picker-copy{flex:1;min-width:0}.swibby-picker-item .swibby-picker-cover{width:56px!important;height:72px!important;flex:0 0 56px;border-radius:10px;object-fit:cover;overflow:hidden;display:flex;align-items:center;justify-content:center;background:var(--bg-surface)}.swibby-picker-cover img{width:100%;height:100%;object-fit:cover}.swibby-context-confirm{padding:14px;border:1px solid var(--brand-primary);border-radius:14px;margin-top:14px}.swibby-context-confirm p{font-size:14px;line-height:1.5}.swibby-context-confirm button:not(.sw-btn){margin:6px 8px 0 0}.swibby-context-confirm [data-context-confirm]{background:var(--brand-primary);color:var(--text-inverse)}

.swibby-message-origin{font-size:12px;line-height:1.45;color:var(--text-brand);margin:8px 0;padding:7px 0;border-bottom:1px solid var(--border-default)}

.swibby-page-link>svg{flex-shrink:0}
.swibby-context{display:flex;align-items:center;gap:8px;flex-shrink:0}.swibby-context>span{flex:1;min-width:0}.swibby-context-open{display:flex;align-items:center;justify-content:center;width:44px;height:44px;flex:0 0 44px;padding:10px;border:0;border-radius:50%;background:transparent;color:inherit}.swibby-context-open svg{width:20px;height:20px}.swibby-context-open:hover{background:color-mix(in srgb,var(--brand-primary) 9%,transparent)}

.swibby-retry-row{display:flex;justify-content:flex-end;margin-top:4px}.swibby-message .swibby-retry{display:grid;place-items:center;width:44px;height:44px;min-height:44px;padding:11px;border:0;background:transparent;box-shadow:none;color:var(--accent,var(--text-brand))}.swibby-retry svg{width:21px;height:21px}.swibby-retry:disabled{opacity:.4;cursor:wait}

.swibby-history-day{margin-top:24px}.swibby-history-day h4{font-size:14px;color:var(--text-secondary);font-weight:600;margin:0 0 12px;line-height:1.4}.swibby-dialog [data-threads] .swibby-day-toggle{background:transparent;border-color:var(--border-default);text-align:center;font-size:13px;padding:10px 12px;margin:0 0 16px}.swibby-history-day + .swibby-history-day{border-top:1px solid var(--border-default);padding-top:20px}

/* Message link previews remain readable without fetching third-party metadata. */
.swibby-link-previews{display:grid;gap:8px;margin-top:12px}.swibby-message .swibby-link-card{display:flex;align-items:center;gap:10px;width:100%;box-sizing:border-box;padding:12px;border:1px solid var(--brand-primary);border-radius:12px;background:var(--brand-soft);color:var(--text-brand);text-align:left;text-decoration:none;min-height:64px;line-height:1.4}.swibby-link-card>svg{width:26px;height:26px;flex:0 0 26px}.swibby-link-copy{flex:1;min-width:0;overflow-wrap:break-word}.swibby-link-copy strong{display:block;font-size:14px}.swibby-link-copy small{display:block;font-size:11px;color:var(--text-secondary);margin-top:3px;overflow-wrap:break-word}.swibby-message .swibby-link-card:hover,.swibby-message .swibby-link-card:focus-visible{background:var(--brand-soft);border-color:var(--brand-primary);outline-offset:3px}

/* A persistent return bar wraps linked pages without losing the current chat. */
.swibby-link-viewer{position:absolute;inset:0;z-index:7;display:flex;flex-direction:column;min-height:0;background:var(--bg-surface);padding-top:env(safe-area-inset-top);box-sizing:border-box}.swibby-link-viewer iframe{display:block;width:100%;flex:1;min-height:0;border:0;background:white}

/* The frame never resizes when the navigation changes state. */
.swibby-link-viewer{padding-top:0}.swibby-link-viewer>.link-view-header{position:absolute;top:max(0px,calc(env(safe-area-inset-top) - 6px));left:0;z-index:2}.swibby-link-viewer iframe{flex:none;height:100%;margin:0}

/* Paint the entire upper safe area without changing the frame rectangle. */
.swibby-link-viewer::before{content:"";position:absolute;top:0;left:0;right:0;height:calc(60px + max(0px,calc(env(safe-area-inset-top) - 6px)));background:var(--bg-surface);z-index:1;pointer-events:none}.swibby-link-viewer.is-link-collapsed::before{background:transparent}

/* Keep the floating entry clear of open dialogs. */
body:has(dialog[open]) .swibby-fab{display:none}

/* Supplied vector wordmark and the existing Swibbly head share compact branding. */
.swibby-wordmark{display:block;width:108px;aspect-ratio:431/112;flex:none;background-color:currentColor;-webkit-mask:url(/swibbly-wordmark.svg) no-repeat center/contain;mask:url(/swibbly-wordmark.svg) no-repeat center/contain}.swibby-fab .swibby-avatar{width:32px;height:32px}.swibby-fab .swibby-wordmark{width:92px}.swibby-brand{min-width:0}.swibby-dialog h2{flex-wrap:nowrap}

/* The floating button:not(.sw-btn) supplies the head background; keep its violet surface continuous. */
.swibby-fab .swibby-avatar > rect:first-child{fill:none}

/* Image attachments above the composer and in saved messages. */
.swibby-dialog [data-files]{display:flex;gap:10px;overflow-x:auto;margin:0 0 8px;padding:3px 0;max-width:100%}.swibby-dialog [data-files][hidden]{display:none}.swibby-draft-file{display:flex;flex-direction:column;gap:5px;flex:0 0 88px;min-width:0;color:var(--text-primary)}.swibby-draft-file>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:11px}.swibby-draft-file>.swibby-file-icon{height:88px;width:40px;align-self:center}
.swibby-dialog .swibby-image-attachment,.swibby-message [data-attachment].swibby-image-attachment{display:inline-flex;flex-direction:column;align-items:stretch;gap:5px;width:88px;flex:0 0 88px;max-width:100%;box-sizing:content-box;padding:0;margin:8px 8px 0 0;border:0;border-radius:10px;background:transparent;color:var(--text-brand);text-align:left;vertical-align:top}.swibby-dialog [data-files] .swibby-image-attachment{margin:0}.swibby-attachment-preview{display:block;width:88px;height:88px;max-width:100%;aspect-ratio:1;object-fit:cover;border-radius:10px;background:var(--bg-surface-2)}.swibby-attachment-preview[hidden]{display:none}.swibby-dialog .swibby-image-attachment>span{display:block;width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:11px;line-height:1.4}.swibby-image-attachment:focus-visible{outline:2px solid var(--brand-primary);outline-offset:3px}
/* Full original stays inside the chat, clear of the navigation and safe areas. */
.swibby-link-viewer.is-image-viewer{padding:calc(76px + env(safe-area-inset-top)) max(12px,env(safe-area-inset-right)) max(12px,env(safe-area-inset-bottom)) max(12px,env(safe-area-inset-left))}.swibby-image-stage{display:flex;align-items:center;justify-content:center;flex:1;min-width:0;min-height:0;overflow:hidden}.swibby-image-stage>img{display:block;width:100%;height:100%;object-fit:contain}.swibby-image-stage>p{font-size:14px;color:var(--text-secondary);text-align:center;overflow-wrap:break-word}.swibby-link-viewer.is-image-viewer .link-view-domain{flex:1;min-width:0}


/* Timings belong to the answer; waiting messages stay distinct from active work. */
.swibby-message>.swibby-message-meta{display:flex;flex-wrap:wrap;gap:3px 10px;margin:5px 0 8px;color:var(--text-secondary);font-size:11px;line-height:1.5;white-space:normal}.swibby-message-meta>span::before{content:"· ";margin-right:3px}.swibby-message>.swibby-activity{padding:10px 12px;border-left:2px solid var(--brand-primary);border-radius:0 8px 8px 0;background:var(--bg-surface);white-space:normal}.swibby-activity .swibby-progress{font-size:13px;line-height:1.45;margin:7px 0 4px;color:var(--text-primary)}.swibby-activity .swibby-progress-time{font-size:10px;color:var(--text-secondary)}.swibby-dialog .swibby-queued{margin-top:8px;color:var(--text-brand)}.swibby-dialog .swibby-queue-summary{font-size:11px;line-height:1.4;padding:3px 4px 8px}.swibby-fab .swibby-queue-badge{display:grid;place-items:center;position:absolute;right:-5px;top:-6px;min-width:20px;height:20px;padding:0 4px;box-sizing:border-box;border-radius:12px;background:var(--brand-primary);color:var(--text-inverse);font-size:11px;font-weight:700;border:1px solid var(--brand-soft)}

.swibby-push-setting{font-size:11px;color:var(--text-secondary);line-height:1.4}.swibby-push-setting:has(button:not(.sw-btn)[hidden]):has(span:empty){display:none}.swibby-push-setting button:not(.sw-btn){border:0;background:none;color:var(--text-brand);padding:4px 0;text-decoration:underline;font-size:12px;min-height:30px}
/* Draft controls stay small; removing a file never opens its preview. */
.swibby-dialog [data-files]{gap:12px;padding:4px 6px 2px;margin-bottom:4px}
.swibby-draft-attachment{position:relative;flex:0 0 56px;width:56px;min-width:0;padding-right:8px;box-sizing:border-box}
.swibby-dialog [data-files] .swibby-image-attachment,.swibby-draft-file{width:48px;flex-basis:48px;gap:3px}
.swibby-dialog [data-files] .swibby-attachment-preview{width:48px;height:48px;border-radius:8px}
.swibby-draft-file>.swibby-file-icon{box-sizing:border-box;width:48px;height:48px;padding:12px;background:var(--bg-surface-2);border-radius:8px}
.swibby-dialog [data-files] .swibby-image-attachment>span,.swibby-draft-file>span{font-size:10px;line-height:14px}
.swibby-dialog .swibby-remove-file{position:absolute;right:0;top:26px;display:grid;place-items:center;width:24px;height:24px;min-height:0;padding:3px;border:1px solid var(--brand-primary);border-radius:50%;background:var(--brand-soft);color:var(--text-primary);box-shadow:none;z-index:1}
.swibby-remove-file::before{content:"";position:absolute;inset:-10px}
.swibby-remove-file svg{width:16px;height:16px;pointer-events:none}
.swibby-remove-file:focus-visible{outline:2px solid var(--brand-primary);outline-offset:2px}
/* Four visible lines preserve the history; longer drafts scroll within the input. */
.swibby-compose-row textarea:not(.sw-input__control){max-height:106px;overflow-y:auto}
@media(max-width:600px){
  .swibby-dialog[open]{inset:0;box-sizing:border-box;min-height:0;max-width:100%;width:100%;height:100dvh;max-height:100dvh}
  .swibby-dialog[open].swibby-keyboard-open{inset:var(--swibby-view-top,0px) 0 auto 0;height:var(--swibby-view-height,100dvh);max-height:var(--swibby-view-height,100dvh)}
  .swibby-dialog.swibby-keyboard-open header{padding:5px 12px;gap:0;min-height:44px;box-sizing:border-box}
  .swibby-dialog.swibby-keyboard-open header [data-connection],.swibby-dialog.swibby-keyboard-open>.swibby-context{display:none}
  .swibby-dialog.swibby-keyboard-open h2 .swibby-avatar{width:26px;height:26px}
  .swibby-dialog.swibby-keyboard-open h2 .swibby-wordmark{width:78px}
  .swibby-dialog.swibby-keyboard-open header nav{gap:4px}
  .swibby-dialog.swibby-keyboard-open header nav button:not(.sw-btn){font-size:11px;padding:6px;min-height:34px}
  .swibby-dialog.swibby-keyboard-open header [data-close]{font-size:20px;width:34px}
  .swibby-dialog.swibby-keyboard-open .swibby-messages{min-height:0;padding:8px 12px}
}

/* Long live updates expand in place; polling keeps the user's choice. */
.swibby-progress.is-collapsed{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:4;overflow:hidden}
.swibby-message .swibby-progress-toggle{display:block;margin:0 0 5px;padding:4px 0;min-height:32px;border:0;border-radius:0;background:none;box-shadow:none;color:var(--text-brand);font-size:12px;text-align:left}
.swibby-progress-toggle:focus-visible{outline:2px solid var(--brand-primary);outline-offset:2px}

/* Keep the chat launcher above the 48px mobile filter/today action row. */
@media (max-width:900px) {
  body:has(.standalone-page:not([hidden]) .floating-filter-widget) .swibby-fab {
    bottom:calc(78px + env(safe-area-inset-bottom,0px) + 48px + 12px);
  }
  body:has(.standalone-page:not([hidden]) .floating-filter-widget) .swibby-fab {
    bottom:calc(78px + env(safe-area-inset-bottom,0px) + 48px + 12px);
  }
}
/* An open filter sheet owns this corner until it is dismissed. */
body:has(.standalone-page:not([hidden]) .floating-filter-popover:not([hidden])) .swibby-fab {
  visibility:hidden;
  pointer-events:none;
}
/* Redesign 2026: „Was Swibbly darf“ (W10). Nur Tokens. */
.swibby-rules{margin:0;padding:0 var(--space-16);border-bottom:1px solid var(--border-default);font-family:var(--font-sans)}
.swibby-rules summary{display:flex;align-items:center;min-height:44px;cursor:pointer;font:var(--font-small-semibold);color:var(--text-brand)}
.swibby-rules summary:focus-visible{outline:none;border-radius:var(--radius-sm);box-shadow:var(--shadow-focus)}
.swibby-rules__body{display:grid;gap:var(--space-12);padding-bottom:var(--space-16)}
.swibby-rules__group h3{display:flex;align-items:center;gap:var(--space-6);margin:0 0 var(--space-4);font:var(--font-small-semibold);color:var(--text-primary)}
.swibby-rules__group ul{margin:0;padding-left:var(--space-20);font:var(--font-small);color:var(--text-secondary)}
.swibby-rules__group--never h3{color:var(--status-danger)}
.swibby-rules__note{margin:0;font:var(--font-tiny);color:var(--text-secondary)}
.swibby-compose-field{flex:1;min-width:0}
.swibby-compose-field .sw-input__control{max-height:128px;overflow-y:auto}
@media(max-width:600px){.swibby-dialog header nav .sw-btn:not(.sw-btn--icon){width:44px;padding:0}.swibby-dialog header nav .sw-btn__label{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.swibby-dialog header nav{margin-left:auto}}
body:has(.sw-overlay) .swibby-fab{display:none}
/* Vorschläge über dem Eingabefeld (Figma 24:3450) und Anhangzähler */
.swibby-suggestions{display:flex;flex-wrap:nowrap;gap:var(--space-6);margin:0 0 var(--space-8);overflow-x:auto;scrollbar-width:none;padding-bottom:var(--space-4)}
.swibby-suggestions[hidden]{display:none}
.swibby-dialog .swibby-suggestions .sw-chip{flex:none;cursor:pointer;white-space:nowrap}
.swibby-files-count{margin:0 0 var(--space-6);font:var(--font-small);color:var(--text-secondary)}
/* Eingebettet auf der Swibbly-Seite: kein Overlay, kein Schließen, Verlauf/Regeln stehen in den Seitenspalten. */
.swibby.is-docked{display:block;height:100%;min-height:0}
.swibby.is-docked .swibby-fab,.swibby.is-docked [data-close],.swibby.is-docked [data-history],.swibby.is-docked .swibby-rules{display:none!important}
.swibby.is-docked .swibby-dialog{position:static;inset:auto;width:100%;max-width:none;height:100%;max-height:none;margin:0;box-shadow:none;border-radius:var(--radius-2xl)}
/* Mail-Entwurf als Karte im Chat (Figma 24:3450) */

/* Swibbly-Bericht (swibbly-report.js): einheitliche Karte für alle Preset-Antworten */
.swibbly-report{display:grid;gap:var(--space-16);margin:var(--space-8) 0;padding:var(--space-16);border-radius:var(--radius-xl);background:var(--bg-surface);box-shadow:inset 0 0 0 1px var(--border-default);min-width:0;max-width:100%;overflow-wrap:break-word}
/* Nie breiter als die Nachricht: Raster- und Flex-Kinder dürfen schrumpfen, lange Wörter/URLs brechen um. */
.swibbly-report>*,.swibbly-report__head>*,.swibbly-report__kicker>span,.swibbly-report__kpis>*,.swibbly-report__section>*,.swibbly-report__list>li,.swibbly-report__steps li,.swibbly-report__foot>*{min-width:0;max-width:100%}
.swibbly-report .sw-kpi *{min-width:0;overflow-wrap:break-word}
.swibbly-report__link{color:var(--text-brand);text-decoration:underline;overflow-wrap:break-word}
.swibbly-report .sw-table td,.swibbly-report .sw-table th{overflow-wrap:normal}
.swibbly-report__head{display:grid;gap:var(--space-4)}
.swibbly-report__kicker{display:inline-flex;align-items:center;gap:var(--space-6);margin:0;font:var(--font-tiny);font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--brand-soft-text)}
.swibbly-report__title{margin:0;font:var(--font-h3);color:var(--text-primary)}
.swibbly-report__subtitle{margin:0;font:var(--font-small);color:var(--text-secondary)}
.swibbly-report__kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:var(--space-8)}
.swibbly-report__kpis .sw-kpi{padding:var(--space-12)}
.swibbly-report__section{display:grid;gap:var(--space-8);min-width:0}
.swibbly-report__section h4{margin:0;font:var(--font-body-semibold);color:var(--text-primary)}
.swibbly-report__section p{margin:0;font:var(--font-small);color:var(--text-secondary)}
.swibbly-report__list{display:grid;gap:var(--space-6);margin:0;padding-left:var(--space-18);font:var(--font-small);color:var(--text-primary)}
.swibbly-report__steps ol{display:grid;gap:var(--space-6);margin:0;padding-left:var(--space-20);font:var(--font-small);color:var(--text-primary)}
.swibbly-report__steps li::marker{color:var(--brand-soft-text);font-weight:700}
.swibbly-report .sw-table-wrap{overflow-x:auto;max-width:100%}
.swibbly-report__foot{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--space-8);padding-top:var(--space-12);box-shadow:inset 0 1px 0 var(--border-default)}
.swibbly-report__foot p{margin:0;font:var(--font-tiny);color:var(--text-secondary)}
.swibbly-report__actions{display:flex;flex-wrap:wrap;gap:var(--space-8)}
.swibby-richtext .sw-table-wrap{overflow-x:auto;max-width:100%;margin:var(--space-8) 0}

/* Vorschläge von Swibbly (Todo anlegen/abhaken): erst „Freigeben“ führt sie aus. */
.swibby-proposals{display:grid;gap:var(--space-8);margin-top:var(--space-8)}
.swibby-proposal{display:grid;gap:var(--space-6);padding:var(--space-12);border:1px solid var(--brand-primary);border-radius:var(--radius-lg);background:var(--brand-soft)}
.swibby-proposal__label{margin:0;font:var(--font-tiny);color:var(--brand-soft-text);text-transform:uppercase;letter-spacing:.04em}
.swibby-proposal__summary{margin:0;font:var(--font-small-semibold);color:var(--text-primary);overflow-wrap:break-word}
.swibby-proposal__actions{display:flex;flex-wrap:wrap;gap:var(--space-8)}
.swibby-proposal__actions button{min-height:36px;padding:0 var(--space-14);border:1px solid var(--border-default);border-radius:var(--radius-md);background:var(--bg-surface);color:var(--text-primary);font:var(--font-small-semibold);cursor:pointer}
.swibby-proposal__actions button[data-decision="accept"]{border-color:var(--brand-primary);background:var(--brand-primary);color:var(--text-inverse)}
.swibby-proposal__state{margin:0;font:var(--font-small);color:var(--text-secondary)}
.swibby-proposal.is-accepted,.swibby-proposal.is-declined,.swibby-proposal.is-failed{border-color:var(--border-default);background:var(--bg-surface-2)}
.swibby-proposal.is-accepted .swibby-proposal__label,.swibby-proposal.is-declined .swibby-proposal__label,.swibby-proposal.is-failed .swibby-proposal__label{display:none}
@media (pointer:coarse){.swibby-proposal__actions button{min-height:44px}}
/* Auswahl der letzten Antwort (swibbly-choices.js): ersetzt Push-Zeile und Vorschläge über dem Eingabefeld. */
.swibby-choices{display:grid;gap:var(--space-6);margin:0 0 var(--space-8);padding:var(--space-8) var(--space-10);border-radius:var(--radius-lg);background:var(--bg-surface-2);box-shadow:inset 0 0 0 1px var(--border-default)}
.swibby-choices[hidden]{display:none}
.swibby-choices__label{margin:0;font:var(--font-tiny);color:var(--text-secondary)}
.swibby-choices__options{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-6)}
.swibby-choices__options .sw-chip{cursor:pointer;white-space:normal;text-align:left}
/* „High Performance“: kleiner Umschalter über dem Eingabefeld, gilt nur für die nächste Nachricht. */
.swibby-compose-options { display: flex; gap: var(--space-6); margin: 0 0 var(--space-6); }
.swibby-performance-tag { padding: 0 var(--space-6); border-radius: var(--radius-pill); background: var(--brand-soft); color: var(--brand-soft-text); font: var(--font-tiny); }
.swibby-message-meta>.swibby-performance-tag::before { content: none; }
