/* Webmail App CSS - Perfect Missive Clone */ @import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap'); body.webmail-active { overflow: hidden; margin: 0; padding: 0; } .webmail-app { display: flex; height: 100vh; width: 100vw; background-color: #ffffff; font-family: 'Inter', -apple-system, sans-serif; color: #111827; overflow: hidden; position: fixed; top: 0; left: 0; right: 0; bottom: 0; z-index: 10000; } .webmail-app * { box-sizing: border-box; } .webmail-app button { background: none; border: none; cursor: pointer; font-family: inherit; color: inherit; } .webmail-app ul { list-style: none; padding: 0; margin: 0; } /* Custom Scrollbar */ ::-webkit-scrollbar { width: 6px; height: 6px; } ::-webkit-scrollbar-track { background: transparent; } ::-webkit-scrollbar-thumb { background-color: #d1d5db; border-radius: 10px; } /* ------------------------------------- COLUMN 1: SIDEBAR ------------------------------------- */ .missive-sidebar { width: 240px; min-width: 240px; background-color: #f6f6f6; border-right: 1px solid #e5e5e5; display: flex; flex-direction: column; height: 100%; } .sidebar-header { padding: 16px 16px 12px 16px; display: flex; justify-content: space-between; align-items: center; } .sidebar-actions { display: flex; align-items: center; gap: 8px; } .fullscreen-btn { width: 24px; height: 24px; border-radius: 6px; background: #ffffff; border: 1px solid #e5e5e5; display: flex; align-items: center; justify-content: center; color: #4b5563; font-size: 14px; box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); } .mac-dots { display: flex; gap: 6px; } .mac-dot { width: 12px; height: 12px; border-radius: 50%; } .mac-close { background-color: #ff5f56; } .mac-min { background-color: #ffbd2e; } .mac-max { background-color: #27c93f; } .profile-section { display: flex; align-items: center; gap: 12px; } .profile-avatar { width: 28px; height: 28px; border-radius: 50%; position: relative; } .profile-avatar img { width: 100%; height: 100%; border-radius: 50%; object-fit: cover; } .status-dot { position: absolute; bottom: -2px; right: -2px; width: 10px; height: 10px; background-color: #27c93f; border: 2px solid #f6f6f6; border-radius: 50%; } .add-btn { width: 24px; height: 24px; border-radius: 50%; background: white; border: 1px solid #e5e5e5; display: flex; align-items: center; justify-content: center; color: #666; font-size: 16px; box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); } .add-btn:disabled { opacity: 0.7; cursor: default; } .add-btn.syncing i { animation: webmail-spin 0.9s linear infinite; } @keyframes webmail-spin { from { transform: rotate(0deg); } to { transform: rotate(360deg); } } .sidebar-scroll { flex: 1; overflow-y: auto; padding: 0 12px 20px 12px; } .sidebar-account-switcher { border-top: 1px solid #e5e7eb; padding: 12px; background: #f6f6f6; } .sidebar-account-switcher label { display: block; font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.04em; color: #6b7280; margin-bottom: 0; } .account-switcher-header { display: flex; align-items: center; justify-content: space-between; margin-bottom: 6px; } .add-account-icon-btn { width: 22px; height: 22px; border-radius: 50%; border: 1px solid #bfdbfe; background: #dbeafe; color: #1d4ed8; font-size: 14px; font-weight: 700; line-height: 22px; display: inline-flex; align-items: center; justify-content: center; padding: 0; text-align: center; transform: translateY(-0.5px); } .add-account-icon-btn:hover { background: #bfdbfe; border-color: #93c5fd; } .sidebar-account-switcher select { width: 100%; height: 34px; border: 1px solid #d1d5db; border-radius: 8px; background: #ffffff; color: #111827; font-size: 13px; padding: 0 10px; outline: none; } .account-quota { margin-top: 8px; text-align: center; } .account-quota__text { font-size: 11px; color: #4b5563; margin-bottom: 5px; text-align: center; } .account-quota__bar { height: 6px; border-radius: 999px; background: #e5e7eb; overflow: hidden; } .account-quota__bar span { display: block; height: 100%; background: #4e5cf4; } .account-quota--muted { margin-top: 8px; font-size: 11px; color: #9ca3af; text-align: center; } .account-quota__hint { margin-top: 3px; font-size: 10px; color: #9ca3af; text-align: center; } .logout-grid { margin-top: 8px; display: grid; grid-template-columns: 1fr 1fr; gap: 8px; } .logout-btn, .logout-all-btn { height: 34px; width: 100%; border-radius: 8px; font-size: 12px; font-weight: 700; } .logout-btn { border: 1px solid #fecaca; background: #fff5f5; color: #b91c1c; } .logout-btn:hover { border-color: #fca5a5; background: #fee2e2; } .logout-btn--single { margin-top: 8px; } .logout-all-btn { margin-top: 0; border: 1px solid #fecaca; background: #fff5f5; color: #b91c1c; } .logout-all-btn:hover { border-color: #fca5a5; background: #fee2e2; } .sidebar-item { display: flex; align-items: center; padding: 6px 8px; border-radius: 6px; font-size: 13px; color: #333; margin-bottom: 2px; cursor: pointer; } .sidebar-item:hover { background-color: #ebebeb; } .sidebar-item.active { background-color: #e4e4e7; font-weight: 500; } .sidebar-item i { margin-right: 10px; font-size: 16px; color: #888; } .sidebar-item i.icon-blue { color: #4e5cf4; } .sidebar-item .label { flex: 1; } .sidebar-folder-size { margin-left: 6px; font-size: 10px; color: #9ca3af; white-space: nowrap; } .sidebar-item.active .sidebar-folder-size { color: rgba(255, 255, 255, 0.9); } .sidebar-badge { font-size: 10px; min-width: 18px; height: 18px; display: inline-flex; align-items: center; justify-content: center; border-radius: 10px; font-weight: 700; margin-left: 5px; padding: 0 5px; flex-shrink: 0; } .badge-blue { background: #4e5cf4; color: white; } .badge-gray { background: #e5e7eb; color: #4b5563; } .sidebar-section-title { font-size: 11px; text-transform: uppercase; color: #888; font-weight: 600; margin: 16px 0 6px 8px; letter-spacing: 0.5px; } /* ------------------------------------- COLUMN 2: EMAIL LIST ------------------------------------- */ .missive-list { width: 340px; min-width: 340px; background-color: #ffffff; border-right: 1px solid #e5e5e5; display: flex; flex-direction: column; height: 100%; } .list-search { padding: 12px 16px; border-bottom: 1px solid #e5e5e5; display: flex; align-items: center; background: white; height: 57px; /* matches header height */ flex-shrink: 0; } .list-search i { color: #9ca3af; font-size: 16px; } .list-sort-btn { width: 24px; height: 24px; border-radius: 6px; display: inline-flex; align-items: center; justify-content: center; color: #9ca3af; } .list-sort-btn:hover { background: #f3f4f6; color: #6b7280; } .list-search input { flex: 1; border: none; background: transparent; padding: 0 10px; outline: none; font-size: 14px; color: #333; } .list-scroll { flex: 1; overflow-y: auto; } .list-load-more-wrap { padding: 12px 16px 14px; display: flex; justify-content: center; } .list-load-more-btn { min-width: 120px; height: 34px; border: 1px solid #d1d5db; border-radius: 8px; background: #ffffff; color: #374151; font-size: 13px; font-weight: 600; } .list-load-more-btn:hover:not(:disabled) { background: #f9fafb; } .list-load-more-btn:disabled { opacity: 0.65; } .list-section-header { display: flex; align-items: center; justify-content: space-between; font-size: 12px; font-weight: 600; color: #666; padding: 8px 16px; background: #f9fafb; border-bottom: 1px solid #f3f4f6; position: sticky; top: 0; z-index: 10; } .list-section-actions { display: inline-flex; align-items: center; gap: 8px; } .header-delete-btn { height: 26px; border: 1px solid #fecaca; background: #fff5f5; color: #b91c1c; border-radius: 7px; padding: 0 10px; font-size: 11px; font-weight: 700; } .header-delete-btn:hover:not(:disabled) { background: #fee2e2; border-color: #fca5a5; } .header-delete-btn:disabled { opacity: 0.65; } .empty-trash-btn { height: 26px; border: 1px solid #fecaca; background: #fff5f5; color: #b91c1c; border-radius: 7px; padding: 0 10px; font-size: 11px; font-weight: 700; } .empty-trash-btn:hover:not(:disabled) { background: #fee2e2; border-color: #fca5a5; } .empty-trash-btn:disabled { opacity: 0.65; } .list-item { padding: 12px 16px 12px 52px; border-bottom: 1px solid #f0f0f0; cursor: pointer; position: relative; } .email-sender-avatar { position: absolute; left: 12px; top: 50%; transform: translateY(-50%); width: 30px; height: 30px; border-radius: 50%; background: #e5e7eb; color: #374151; font-size: 12px; font-weight: 700; display: inline-flex; align-items: center; justify-content: center; line-height: 1; overflow: hidden; } .email-sender-avatar__fallback { position: relative; z-index: 1; } .email-sender-avatar img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; z-index: 2; } .email-select-checkbox { position: absolute; left: 19px; top: 50%; transform: translateY(-50%); width: 16px; height: 16px; opacity: 0; pointer-events: none; } .list-item:hover .email-sender-avatar, .list-item.checked .email-sender-avatar { opacity: 0; } .list-item:hover .email-select-checkbox, .list-item.checked .email-select-checkbox { opacity: 1; pointer-events: auto; } .list-item:hover { background-color: #f9fafb; } .list-item.active { background-color: #4e5cf4; color: white; border-color: #4e5cf4; } .item-top { display: flex; justify-content: space-between; align-items: center; margin-bottom: 4px; } .item-sender { display: flex; align-items: center; gap: 8px; font-weight: 600; font-size: 13px; color: #222; } .list-item.active .item-sender, .list-item.active .item-time, .list-item.active .item-subject, .list-item.active .item-snippet { color: white; } .sender-avatar { width: 18px; height: 18px; border-radius: 4px; /* missive uses slightly rounded squares for integration icons */ object-fit: cover; } .sender-avatar.circular { border-radius: 50%; } .item-time { font-size: 11px; color: #888; } .item-subject { font-size: 13px; font-weight: 500; color: #444; margin-bottom: 4px; display: flex; justify-content: space-between; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .badge-outline { font-size: 10px; border: 1px solid #e5e5e5; border-radius: 12px; padding: 1px 6px; color: #666; margin-left: 6px; } .list-item.active .badge-outline { border-color: rgba(255, 255, 255, 0.4); color: white; } .item-snippet { font-size: 13px; color: #777; display: flex; align-items: center; gap: 6px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .tiny-avatar { width: 16px; height: 16px; border-radius: 50%; } .tag { font-size: 10px; padding: 2px 6px; border-radius: 12px; background: #f3e8ff; color: #9333ea; font-weight: 600; } .list-item.active .tag { background: rgba(255, 255, 255, 0.2); color: white; } /* ------------------------------------- COLUMN 3: READING PANE ------------------------------------- */ .missive-reading { flex: 1; display: flex; flex-direction: column; background: transparent; height: 100%; position: relative; } .empty-reading-state { flex: 1; display: flex; align-items: center; justify-content: center; padding: 24px; text-align: center; } .empty-reading-state p { margin: 0; color: #6b7280; font-size: 14px; } .reading-toolbar { height: 57px; padding: 0 20px; border-bottom: 1px solid #e5e5e5; display: flex; justify-content: space-between; align-items: center; background: white; flex-shrink: 0; } .toolbar-left, .toolbar-right { display: flex; align-items: center; gap: 16px; } .toolbar-left img { width: 24px; height: 24px; border-radius: 50%; } .toolbar-left i { color: #666; font-size: 14px; cursor: pointer; } .toolbar-action-btn { width: 30px; height: 30px; border: 1px solid #e5e7eb; border-radius: 8px; background: #ffffff; color: #4b5563; display: inline-flex; align-items: center; justify-content: center; cursor: pointer; } .toolbar-action-btn i { font-size: 16px; } .toolbar-action-btn:hover { background: #f9fafb; color: #1f2937; } .toolbar-action-btn--danger { border-color: #fecaca; color: #dc2626; background: #fff5f5; } .toolbar-action-btn--danger:hover { border-color: #fca5a5; background: #fee2e2; color: #b91c1c; } .toolbar-center .assign-btn { border: 1px solid #e5e5e5; background: white; border-radius: 20px; padding: 6px 14px; font-size: 13px; font-weight: 500; display: flex; align-items: center; gap: 6px; color: #333; } .toolbar-right i { color: #666; font-size: 18px; cursor: pointer; } .toolbar-right i:hover { color: #111; } .reading-content { flex: 1; overflow-y: auto; padding: 0 0 86px; display: flex; flex-direction: column; } .mail-meta-card { position: sticky; top: 0; z-index: 20; background: #ffffff; border-bottom: 1px solid #e5e7eb; padding: 18px 28px 14px; } .mail-meta-card__title { font-size: 20px; font-weight: 600; color: #111; margin: 0 0 12px; } .mail-body-panel { width: 100%; padding: 0; background: transparent; } .thread-meta { display: flex; align-items: center; gap: 12px; font-size: 13px; color: #555; } /* Base Email / Message Box */ .message-box { border: 1px solid #e5e5e5; border-radius: 8px; padding: 20px; margin-bottom: 24px; background: white; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.02); } .msg-header { display: flex; justify-content: space-between; margin-bottom: 0; } .msg-sender-info { display: flex; gap: 12px; align-items: center; } .msg-sender-avatar { width: 36px; height: 36px; border-radius: 50%; background: #e5e7eb; color: #374151; display: inline-flex; align-items: center; justify-content: center; position: relative; overflow: hidden; flex-shrink: 0; } .msg-sender-avatar__fallback { font-size: 14px; font-weight: 700; position: relative; z-index: 1; } .msg-sender-avatar img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; z-index: 2; } .msg-logo { width: 32px; height: 32px; border-radius: 4px; background: #000; } .msg-names { display: flex; flex-direction: column; } .msg-name { font-weight: 600; font-size: 14px; color: #111; } .msg-email { margin-top: 2px; font-size: 12px; color: #6b7280; } .msg-name span { color: #888; font-weight: 400; margin-left: 4px; } .msg-to { font-size: 13px; color: #888; margin-top: 2px; } .msg-actions { display: flex; align-items: center; gap: 12px; color: #888; font-size: 13px; } .msg-body { font-size: 14px; line-height: 1.6; color: #333; width: 100%; padding: 14px 28px 22px; background: transparent; } .msg-body--plain { padding: 14px 28px 22px; } .msg-body > * { max-width: 100%; } .msg-body p { margin-bottom: 12px; } /* Internal Chat Bubbles */ .chat-row { display: flex; gap: 12px; margin-bottom: 16px; } .chat-avatar { width: 28px; height: 28px; border-radius: 50%; } .chat-bubble { background: #e6ecf5; padding: 10px 14px; border-radius: 12px; border-top-left-radius: 4px; font-size: 14px; color: #222; position: relative; } .chat-author { font-weight: 600; color: #111; margin-right: 6px; } .chat-row-alt .chat-bubble { background: #e4e4e7; border-radius: 12px; border-top-left-radius: 4px; } .divider { display: flex; align-items: center; text-align: center; color: #888; font-size: 12px; margin: 24px 0; } .divider::before, .divider::after { content: ''; flex: 1; border-bottom: 1px solid #e5e5e5; } .divider::before { margin-right: 16px; } .divider::after { margin-left: 16px; } /* Tasks Checklist */ .task-list { border: 1px solid #e5e5e5; border-radius: 8px; margin-bottom: 24px; } .task-row { display: flex; align-items: center; padding: 12px 16px; border-bottom: 1px solid #e5e5e5; font-size: 14px; } .task-row:last-child { border-bottom: none; } .task-row input[type="checkbox"] { width: 18px; height: 18px; border-radius: 50%; border: 1px solid #ccc; appearance: none; margin-right: 12px; cursor: pointer; } .task-label { flex: 1; color: #333; } .task-meta { display: flex; align-items: center; gap: 8px; font-size: 12px; color: #666; } .task-meta img { width: 20px; height: 20px; border-radius: 50%; } .task-meta .badge { background: #f3f4f6; padding: 2px 8px; border-radius: 12px; } /* Bottom Chat Input */ .reading-footer { position: absolute; left: 16px; right: 16px; bottom: 12px; z-index: 30; padding: 0; background: transparent; } .chat-input-wrapper { display: flex; align-items: center; border: 1px solid #e5e5e5; border-radius: 24px; padding: 10px 16px; background: white; } .chat-input-wrapper input { flex: 1; border: none; background: transparent; outline: none; font-size: 14px; } .chat-actions { display: flex; gap: 12px; color: #888; font-size: 18px; } .chat-actions i:hover { color: #333; cursor: pointer; } /* ------------------------------------- COLUMN 4: RIGHT TOOLBAR ------------------------------------- */ .missive-right-toolbar { width: 50px; min-width: 50px; background: #ffffff; border-left: 1px solid #e5e5e5; display: flex; flex-direction: column; align-items: center; padding: 16px 0; gap: 20px; height: 100%; } .toolbar-icon { width: 28px; height: 28px; display: flex; align-items: center; justify-content: center; color: #666; font-size: 18px; cursor: pointer; border-radius: 6px; } .toolbar-icon:hover { background: #f3f4f6; color: #111; } .toolbar-icon img { width: 24px; height: 24px; border-radius: 50%; } /* ------------------------------------- EMBEDDED LOGIN IN READING PANE ------------------------------------- */ .webmail-login { display: flex; justify-content: center; align-items: center; min-height: 100vh; background-color: #f3f4f6; padding: 20px; } .login-form { background: white; padding: 2rem; border-radius: 0.5rem; box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06); width: 100%; max-width: 400px; } .login-form h2 { margin-bottom: 1.5rem; font-size: 1.5rem; font-weight: 700; text-align: center; color: #111827; } .login-form .form-group { margin-bottom: 1rem; } .login-form .form-label { display: block; margin-bottom: 0.35rem; font-size: 0.85rem; font-weight: 600; color: #374151; } .login-form input { width: 100%; padding: 0.5rem 0.75rem; border: 1px solid #d1d5db; border-radius: 0.375rem; outline: none; } .login-form input[readonly] { background: #f3f4f6; color: #4b5563; } .email-fixed-domain { display: flex; align-items: stretch; border: 1px solid #d1d5db; border-radius: 0.375rem; overflow: hidden; } .email-fixed-domain input { border: 0; border-radius: 0; min-width: 0; } .email-fixed-domain .email-domain { display: inline-flex; align-items: center; padding: 0 0.75rem; background: #f9fafb; border-left: 1px solid #e5e7eb; color: #374151; font-size: 0.9rem; white-space: nowrap; } .email-fixed-domain:focus-within { border-color: #4e5cf4; } .custom-email-box { margin-top: 1.25rem; padding-top: 1rem; border-top: 1px solid #e5e7eb; } .custom-email-box__header { display: flex; align-items: center; justify-content: space-between; gap: 0.75rem; } .custom-email-box__header h3 { margin: 0; font-size: 0.95rem; letter-spacing: 0.02em; } .custom-email-toggle { border: 1px solid #d1d5db; background: #ffffff; color: #374151; border-radius: 6px; font-size: 0.8rem; font-weight: 600; padding: 0.35rem 0.65rem; } .custom-email-toggle.active { border-color: #4e5cf4; color: #4e5cf4; background: #eef1ff; } .custom-email-box__hint { margin: 0.5rem 0 0.9rem; font-size: 0.82rem; color: #6b7280; } .login-form input:focus { border-color: #4e5cf4; } .login-btn { width: 100%; background-color: #4e5cf4; color: white; padding: 0.5rem 1rem; border-radius: 0.375rem; font-weight: 600; transition: background-color 0.2s; border: none; cursor: pointer; } .login-btn:hover { background-color: #3b48e0; } .login-btn:disabled { opacity: 0.5; cursor: not-allowed; } .cancel-account-btn { width: 100%; margin-top: 10px; border: 1px solid #d1d5db; border-radius: 0.375rem; background: #ffffff; color: #374151; padding: 0.5rem 1rem; font-weight: 600; } .cancel-account-btn:hover { border-color: #9ca3af; background: #f9fafb; } .login-error { background-color: #fee2e2; border: 1px solid #ef4444; color: #b91c1c; padding: 0.75rem; border-radius: 0.375rem; margin-bottom: 1rem; font-size: 0.875rem; } .login-hint { margin-top: 1rem; font-size: 0.875rem; color: #6b7280; text-align: center; } .loading-state { text-align: center; color: #888; font-size: 14px; margin-top: 40px; } .webmail-stage { background: #ffffff; border-radius: 16px; padding: 24px 32px; margin: 0 -4rem 2rem -4rem; } .webmail-stage p { margin: 0 0 6px; color: #667085; } .webmail-stage h1 { margin: 0 0 8px; font-size: 32px; line-height: 1.2; } .webmail-hero-split { display: flex; gap: 24px; align-items: flex-start; background: #fff; border-radius: 16px; padding: 3rem; margin: 0 -4rem 2rem -4rem; } .webmail-hero-split__left { flex: 0 0 360px; } .webmail-hero-split__right { flex: 1 1 auto; } .webmail-info-tile { border: 1px solid #e5e7eb; border-radius: 12px; padding: 20px; background: #fafafa; } .webmail-info-tile h3 { margin: 0 0 12px; } .webmail-info-list { margin: 0; padding-left: 18px; } .webmail-info-list li { margin-bottom: 8px; } .login-form--billing { max-width: none; width: 100%; box-shadow: none; border: 1px solid #e5e7eb; } .webmail-login-window-wrap { display: flex; align-items: center; justify-content: center; min-height: calc(100vh - 260px); padding: 24px; } .webmail-login-window { width: min(100%, 460px); border-radius: 14px; background: #ffffff; box-shadow: 0 18px 40px rgba(0, 0, 0, 0.12); } .webmail-login-window .login-form--billing { border: 1px solid #e5e7eb; border-radius: 14px; box-shadow: none; } .webmail-shell-scroll { width: auto; overflow-x: auto; background: #fff; border-radius: 16px; padding: 16px; margin: 0 -4rem 2rem -4rem; } .webmail-app { position: relative !important; inset: auto !important; z-index: 1 !important; width: 100% !important; min-width: 980px; height: min(76vh, 860px) !important; border: 1px solid #e5e7eb; border-radius: 12px; overflow: hidden; box-shadow: 0 6px 20px rgba(0, 0, 0, 0.06); } .webmail-app.webmail-app--fullscreen { position: fixed !important; inset: 0 !important; width: 100vw !important; height: 100vh !important; min-width: 0; z-index: 12000 !important; border: 0; border-radius: 0; box-shadow: none; } .webmail-app ::-webkit-scrollbar { width: 6px; height: 6px; } .webmail-app ::-webkit-scrollbar-track { background: transparent; } .webmail-app ::-webkit-scrollbar-thumb { background-color: #d1d5db; border-radius: 10px; } @media (max-width: 900px) { .webmail-stage, .webmail-hero-split { margin-left: 0; margin-right: 0; } .webmail-shell-scroll { margin-left: 0; margin-right: 0; } .webmail-hero-split { flex-direction: column; padding: 24px; } .webmail-hero-split__left { flex: 1 1 auto; width: 100%; } .webmail-stage { padding: 20px 24px; } .webmail-login-window-wrap { min-height: auto; padding: 0; } .webmail-login-window { width: 100%; } }