:root{--bg-main: #f8fafc;--bg-card: #ffffff;--text-primary: #0f172a;--text-secondary: #475569;--text-muted: #94a3b8;--primary: #2563eb;--primary-hover: #1d4ed8;--success: #16a34a;--success-bg: #dcfce7;--warning: #d97706;--warning-bg: #fef3c7;--danger: #dc2626;--danger-bg: #fee2e2;--border: #e2e8f0;--border-focus: #93c5fd;--radius: 8px;--shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--shadow-md: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1)}*{box-sizing:border-box;margin:0;padding:0}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans TC,sans-serif;background-color:var(--bg-main);color:var(--text-primary);line-height:1.5;-webkit-font-smoothing:antialiased}.app-container{max-width:1200px;margin:0 auto;padding:24px 16px}header.app-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px;padding-bottom:16px;border-bottom:1px solid var(--border)}.brand-title{display:flex;align-items:center;gap:12px}.brand-title h1{font-size:1.5rem;font-weight:700;color:var(--text-primary)}.user-profile{display:flex;align-items:center;gap:12px}.user-avatar{width:36px;height:36px;border-radius:50%;object-fit:cover}.user-email{font-size:.875rem;color:var(--text-secondary)}.btn{display:inline-flex;align-items:center;justify-content:center;padding:8px 16px;font-size:.875rem;font-weight:500;border-radius:var(--radius);border:1px solid transparent;cursor:pointer;transition:all .15s ease-in-out}.btn-primary{background-color:var(--primary);color:#fff}.btn-primary:hover{background-color:var(--primary-hover)}.btn-outline{background-color:transparent;border-color:var(--border);color:var(--text-secondary)}.btn-outline:hover{background-color:#f1f5f9;color:var(--text-primary)}.btn-sm{padding:4px 10px;font-size:.75rem}.btn-disabled{opacity:.5;cursor:not-allowed}.status-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:16px;margin-bottom:24px}.card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);padding:16px;box-shadow:var(--shadow)}.card-title{font-size:.875rem;font-weight:600;color:var(--text-secondary);margin-bottom:8px}.card-value{font-size:1.5rem;font-weight:700;color:var(--text-primary)}.card-subtext{font-size:.75rem;color:var(--text-muted);margin-top:4px}.badge{display:inline-flex;align-items:center;padding:2px 8px;border-radius:9999px;font-size:.75rem;font-weight:500}.badge-success{background-color:var(--success-bg);color:var(--success)}.badge-warning{background-color:var(--warning-bg);color:var(--warning)}.badge-danger{background-color:var(--danger-bg);color:var(--danger)}.badge-muted{background-color:#f1f5f9;color:var(--text-muted)}.table-header-bar{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:12px;margin-bottom:16px}.filter-tabs{display:flex;gap:8px}.filter-tab{padding:6px 14px;border-radius:var(--radius);border:1px solid var(--border);background:#fff;font-size:.875rem;cursor:pointer}.filter-tab.active{background:var(--primary);color:#fff;border-color:var(--primary)}.search-input{padding:6px 12px;border-radius:var(--radius);border:1px solid var(--border);font-size:.875rem;min-width:240px}.table-container{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);overflow-x:auto;box-shadow:var(--shadow)}table.chat-table{width:100%;border-collapse:collapse;text-align:left;font-size:.875rem}table.chat-table th{background-color:#f8fafc;padding:12px 16px;border-bottom:1px solid var(--border);font-weight:600;color:var(--text-secondary)}table.chat-table td{padding:12px 16px;border-bottom:1px solid var(--border);vertical-align:middle}table.chat-table tr:last-child td{border-bottom:none}.pagination-bar{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:12px;margin-top:16px;padding:12px 16px;background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);font-size:.875rem;color:var(--text-secondary)}.pagination-controls{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.pagination-btn{padding:5px 12px;border-radius:var(--radius);border:1px solid var(--border);background:#fff;font-size:.8125rem;cursor:pointer;color:var(--text-primary);transition:all .15s ease}.pagination-btn:hover:not(:disabled){background:#f8fafc;border-color:#cbd5e1}.pagination-btn.active{background:var(--primary);color:#fff;border-color:var(--primary);font-weight:600}.pagination-btn:disabled{opacity:.4;cursor:not-allowed}.page-size-select{padding:4px 8px;border-radius:var(--radius);border:1px solid var(--border);background:#fff;font-size:.8125rem;color:var(--text-primary);cursor:pointer}.modal-overlay{position:fixed;inset:0;background-color:#0f172a80;display:flex;align-items:center;justify-content:center;z-index:50;padding:16px}.modal-content{background:#fff;border-radius:var(--radius);max-width:600px;width:100%;max-height:90vh;overflow-y:auto;box-shadow:var(--shadow-md);padding:24px}.modal-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px;padding-bottom:12px;border-bottom:1px solid var(--border)}.modal-title{font-size:1.125rem;font-weight:700}.form-group{margin-bottom:16px}.form-label{display:block;font-size:.875rem;font-weight:500;margin-bottom:6px}.form-input,.form-select{width:100%;padding:8px 12px;border-radius:var(--radius);border:1px solid var(--border);font-size:.875rem}.checkbox-label{display:flex;align-items:center;gap:8px;font-size:.875rem;cursor:pointer}.modal-actions{display:flex;justify-content:flex-end;gap:12px;margin-top:24px}.dry-run-box{background-color:#f8fafc;border:1px solid var(--border);border-radius:var(--radius);padding:16px;font-size:.875rem}.dry-run-section{margin-bottom:12px}.dry-run-section h4{font-weight:600;color:var(--text-primary);margin-bottom:4px}.dry-run-list{padding-left:20px}.login-screen{min-height:80vh;display:flex;align-items:center;justify-content:center}.login-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);padding:36px 32px;max-width:420px;width:100%;text-align:center;box-shadow:var(--shadow-md)}.message-viewer-modal{width:min(960px,100%);max-width:960px;height:min(900px,90vh);padding:0;overflow:hidden;display:flex;flex-direction:column;border-radius:16px}.message-viewer-header{flex:0 0 auto;margin:0;padding:14px 20px 12px;background:#fff}.message-viewer-subtitle{margin-top:2px;color:var(--text-muted);font-size:.75rem}.viewer-filters{display:flex;gap:8px;flex-wrap:wrap;align-items:center;flex:0 0 auto;margin:12px 20px 8px}.viewer-filters .form-input{width:auto;flex:1 1 160px;min-width:120px}.viewer-filters input[type=date]{flex:0 0 140px;min-width:140px}.viewer-filters-hint{font-size:.75rem;color:var(--text-muted);margin:-2px 20px 10px}.message-list{display:flex;flex-direction:column;gap:10px;min-height:220px;max-height:none;flex:1 1 auto;overflow-y:auto;padding:18px 20px 22px;overscroll-behavior:contain;scrollbar-gutter:stable}.line-chat-surface{background:linear-gradient(180deg,#f7f9fb,#f3f6f8)}.message-row{display:flex;align-items:flex-end;gap:8px;width:100%;border:0;padding:0;background:transparent}.message-row-own{flex-direction:row-reverse}.message-cluster{display:flex;flex-direction:column;align-items:flex-start;min-width:0;max-width:min(72%,620px)}.message-row-own .message-cluster{align-items:flex-end}.message-avatar{width:36px;height:36px;flex:0 0 36px;display:grid;place-items:center;overflow:hidden;border-radius:50%;color:#475569;background:#dce4ea;border:1px solid rgba(15,23,42,.08);font-size:.8rem;font-weight:700}.message-avatar img{width:100%;height:100%;object-fit:cover}.message-sender-name{margin:0 0 3px 7px;color:#64748b;font-size:.75rem;line-height:1.2}.message-bubble{position:relative;max-width:100%;padding:9px 12px;border-radius:17px;background:#eceff1;color:#172033;box-shadow:0 1px 1px #0f172a0d}.message-row-other .message-bubble{border-top-left-radius:6px}.message-row-own .message-bubble{border-top-right-radius:6px;background:#a8e987;color:#10230b}.message-meta{display:flex;gap:7px;align-items:center;margin-top:3px;padding:0 4px;font-size:.68rem;color:var(--text-muted)}.message-row-own .message-meta{flex-direction:row-reverse}.message-row-pending .message-bubble{opacity:.82}.message-pending-status{color:#608553;font-weight:600}.message-reply-button{border:0;padding:1px 3px;color:#718096;background:transparent;font:inherit;cursor:pointer}.message-reply-button:hover,.message-reply-button:focus-visible{color:var(--primary);text-decoration:underline}.message-reply-button:disabled{opacity:.45;cursor:default}.message-day-divider{display:flex;justify-content:center;margin:5px 0}.message-day-divider span{padding:4px 11px;border-radius:999px;color:#718096;background:#ffffffe6;box-shadow:0 1px 2px #0f172a0f;font-size:.7rem}.message-text{font-size:.925rem;line-height:1.55;white-space:pre-wrap;word-break:break-word;overflow-wrap:anywhere}.message-deleted{color:#7c8798;font-size:.82rem;font-style:italic}.rich-link{color:#006bd6;text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:2px}.rich-link:visited{color:#6844b7}.rich-link:hover,.rich-link:focus-visible{color:#004b9b;text-decoration-thickness:2px}.rich-mention,.rich-mention:visited{color:#0089b8;font-weight:650;text-decoration:none}.message-row-own .rich-link{color:#0759ad}.message-row-own .rich-link:visited{color:#5a3ba4}.inline-emoticon{display:inline-block;width:auto;height:32px;max-width:48px;margin:0 2px;object-fit:contain;vertical-align:middle}.inline-media-fallback{color:#65758b;font-size:.82em}.link-preview-list{display:grid;gap:7px;margin-top:7px}.link-preview-card{display:flex;width:min(330px,58vw);min-height:78px;overflow:hidden;border-left:3px solid #3d92dc;border-radius:5px 10px 10px 5px;color:#27364b;background:#ffffffc2;text-decoration:none}.link-preview-card:visited{color:#4f3e7d}.link-preview-card:hover,.link-preview-card:focus-visible{background:#fffffff5;box-shadow:0 2px 6px #0f172a1f}.link-preview-image{width:92px;min-height:78px;flex:0 0 92px;object-fit:cover}.link-preview-body{display:flex;flex-direction:column;justify-content:center;gap:2px;min-width:0;padding:8px 9px}.link-preview-body strong{display:-webkit-box;overflow:hidden;font-size:.78rem;line-height:1.35;-webkit-box-orient:vertical;-webkit-line-clamp:2}.link-preview-site{display:flex;align-items:center;gap:4px;color:#718096;font-size:.64rem}.link-preview-site img{width:13px;height:13px;object-fit:contain}.link-preview-summary{overflow:hidden;color:#65758b;font-size:.68rem;line-height:1.3;text-overflow:ellipsis;white-space:nowrap}.reply-composer{display:flex;flex-direction:column;gap:8px;flex:0 0 auto;margin:0;padding:12px 20px 14px;border-top:1px solid var(--border);background:#fff}.reply-preview{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 10px;border-left:3px solid var(--primary);background:#eff6ff;color:var(--text-secondary);font-size:.8rem}.reply-preview-text{color:var(--text-muted);white-space:pre-wrap;word-break:break-word}.reply-input{resize:vertical;min-height:64px;max-height:150px}.reply-composer-actions{display:flex;align-items:center;justify-content:space-between;gap:12px}.reply-disabled{margin:0;padding:12px 20px;border-top:1px solid var(--border);color:var(--text-muted);font-size:.8rem}.reply-status{color:var(--text-muted);font-size:.75rem;overflow-wrap:anywhere}.attachment-grid{display:flex;flex-wrap:wrap;gap:8px;margin-top:6px;align-items:center}.attachment-failed{display:inline-flex;align-items:center;gap:8px;flex-wrap:wrap}.msg-thumb{width:min(220px,46vw);height:auto;max-height:240px;object-fit:cover;border-radius:12px;border:1px solid rgba(15,23,42,.1);cursor:zoom-in;display:block}.attachment-card{display:flex;align-items:center;gap:8px;border:1px solid var(--border);border-radius:var(--radius);padding:8px 10px;text-decoration:none;color:var(--text-primary);max-width:min(300px,58vw);background:#ffffffad}.attachment-card-icon{font-size:1.1rem}.attachment-card-body{display:flex;flex-direction:column;min-width:0}.attachment-card-name{font-size:.8rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.attachment-card-meta{font-size:.7rem;color:var(--text-muted)}@media(max-width:640px){.modal-overlay:has(.message-viewer-modal){padding:0}.message-viewer-modal{width:100vw;height:100dvh;max-height:100dvh;border-radius:0}.message-viewer-header,.reply-composer{padding-left:12px;padding-right:12px}.viewer-filters,.viewer-filters-hint{margin-left:12px;margin-right:12px}.message-list{padding-left:10px;padding-right:10px;scrollbar-gutter:auto}.message-cluster{max-width:80%}.message-avatar{width:32px;height:32px;flex-basis:32px}}.lightbox-overlay{position:fixed;inset:0;background-color:#0f172acc;display:flex;align-items:center;justify-content:center;z-index:60;padding:16px}.lightbox-body{display:flex;flex-direction:column;gap:8px;max-width:92vw}.lightbox-bar{display:flex;align-items:center;justify-content:space-between;gap:12px;color:#fff;font-size:.8rem}.lightbox-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lightbox-img{max-width:90vw;max-height:82vh;object-fit:contain;border-radius:var(--radius);background-color:var(--bg-card)}.error-banner{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:12px 16px;margin-bottom:20px;border-radius:var(--radius);background-color:var(--danger-bg);color:var(--danger);border:1px solid rgba(239,68,68,.2);font-size:.875rem}.error-banner-content{display:flex;align-items:center;flex:1}.message-row-highlighted .message-bubble{box-shadow:0 0 0 2px var(--warning),0 2px 8px #f59e0b40}.todo-item-card{transition:background-color .15s ease}.todo-item-card:hover{background-color:#f1f5f980}
