/* Fragment 8/9 of the former static/style.css. * * This is a mechanical, order-preserving slice: rules were moved verbatim * and this file's position in the order of static/index.html is what * keeps the cascade identical. Reordering the links, or moving a rule between * fragments, can change which of two competing declarations wins. * * static/index.html and the PRECACHE list in static/sw.js must list every * fragment in the same order. tests/test_static_stylesheet_manifest.py and * tests/test_css_computed_style_snapshot.py both fail if that drifts. */ .doc-editor-textarea, #doc-editor-code.email-mode .doc-editor-textarea { color: var(--fg) !important; caret-color: var(--fg) !important; z-index: 1; } /* Emoji picker (monochrome icon picker) */ .emoji-picker-btn { background: none; border: none; color: var(--fg); opacity: 0.35; padding: 4px 7px; cursor: pointer; min-height: 28px; display: inline-flex; align-items: center; justify-content: center; transition: opacity 0.1s; } .emoji-picker-btn:hover { opacity: 1; } .emoji-picker { width: min(300px, 92vw); max-height: min(300px, 55vh); background: var(--panel); border: 1px solid var(--border); border-radius: 8px; box-shadow: 0 8px 24px rgba(0,0,0,0.3); display: flex; flex-direction: column; overflow: hidden; } .emoji-picker-search { padding: 8px 12px; background: var(--panel); border: none; border-bottom: 1px solid var(--border); color: var(--fg); font-size: 12px; font-family: inherit; outline: none; } .emoji-picker-groups { overflow-y: auto; padding: 4px 0; flex: 1; } .emoji-picker-group { padding: 0 6px 4px 6px; } .emoji-picker-group-name { font-size: 10px; font-weight: 600; opacity: 0.5; text-transform: uppercase; letter-spacing: 0.5px; padding: 4px 4px 2px 4px; } .emoji-picker-grid { display: grid; grid-template-columns: repeat(8, 1fr); gap: 1px; } .emoji-picker-item { background: none; border: none; cursor: pointer; padding: 4px; border-radius: 4px; display: flex; align-items: center; justify-content: center; color: var(--fg); transition: background 0.1s; } .emoji-picker-item:hover { background: color-mix(in srgb, var(--accent) 15%, transparent); } .emoji-picker-item svg { width: 16px; height: 16px; } .email-avatar { width: 28px; height: 28px; border-radius: 50%; background: var(--accent, #4a9eff); color: #fff; display: flex; align-items: center; justify-content: center; font-size: 12px; font-weight: 600; flex-shrink: 0; margin-top: 1px; } .email-item-content { flex: 1; min-width: 0; overflow: hidden; } .email-item-top { display: flex; justify-content: space-between; align-items: baseline; gap: 8px; } .email-sender { font-size: 12px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .email-filter-chip { display: flex; align-items: center; justify-content: space-between; gap: 6px; margin: 4px 8px 6px; padding: 4px 8px; border-radius: 12px; font-size: 11px; background: color-mix(in srgb, var(--accent, var(--red)) 14%, transparent); border: 1px solid color-mix(in srgb, var(--accent, var(--red)) 40%, transparent); color: var(--fg); } .email-filter-chip-clear { background: none; border: none; color: inherit; cursor: pointer; font-size: 14px; line-height: 1; padding: 0 2px; opacity: 0.6; } .email-date { font-size: 10px; opacity: 0.5; white-space: nowrap; flex-shrink: 0; } .email-subject { font-size: 11px; opacity: 0.6; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; margin-top: 1px; } .email-sent-chip, .email-folder-chip { display: inline-flex; align-items: center; height: 14px; padding: 0 5px; margin-right: 5px; border-radius: 999px; font-size: 8px; line-height: 1; font-weight: 700; text-transform: uppercase; letter-spacing: 0; color: var(--accent, var(--red)); background: color-mix(in srgb, var(--accent, var(--red)) 14%, transparent); border: 1px solid color-mix(in srgb, var(--accent, var(--red)) 28%, transparent); vertical-align: 1px; } .email-folder-chip { position: relative; top: 4px; color: color-mix(in srgb, var(--fg) 75%, transparent); background: rgba(127, 127, 127, 0.13); border-color: rgba(127, 127, 127, 0.24); } .email-meta-date-group { display: inline-flex; align-items: center; gap: 5px; white-space: nowrap; } .email-meta-date-group .email-folder-chip { margin-right: 0; } .email-card-expanded .email-sent-chip, .email-card-reader .email-sent-chip { position: relative; top: 4px; } .email-tags { display: inline-flex; align-items: center; flex-wrap: nowrap; gap: 3px; margin-left: 6px; vertical-align: middle; position: relative; top: -2px; } .email-card-tags { flex: 0 0 auto; min-width: 0; max-width: 48%; position: relative; top: -4px; } .email-card-expanded .email-tags, .email-card-reader .email-tags { top: -4px; } .doclib-card-expanded .email-card-tags { top: -4px; } .email-card-expanded .email-card-titlerow .email-tag, .email-card-expanded .email-card-titlerow .email-tags-more { transform: translateY(-2px); } @media (max-width: 768px) { .email-card-expanded .email-card-titlerow .email-tag, .email-card-expanded .email-card-titlerow .email-tags-more { transform: translateY(2px); } } .email-card-tags.email-tags-expanded { position: absolute; z-index: 4; right: calc(var(--email-status-width, 44px) + 6px); top: -5px; max-width: min(58%, 260px); padding: 4px 5px; border: 1px solid var(--border); border-radius: 6px; background: var(--panel, var(--bg)); box-shadow: 0 5px 14px color-mix(in srgb, #000 20%, transparent); } .email-tags-more { appearance: none; border: 0; box-sizing: border-box; border-radius: 999px; background: rgba(127, 127, 127, 0.16); color: var(--fg); cursor: pointer; display: inline-flex; align-items: center; justify-content: center; gap: 1px; height: 13px !important; min-height: 0 !important; min-width: 23px; padding: 1px 4px; font-family: inherit; font-size: 9px; line-height: 1; margin: 0; opacity: 0.68; position: relative; top: 0; vertical-align: middle; } .email-tags-more svg { display: block; flex: 0 0 auto; } .email-tags-expanded .email-tags-more svg { transform: rotate(180deg); } .email-tags-toggle-inline { position: absolute; right: 94px; top: 50%; transform: translateY(calc(-50% - 5px)); height: 20px !important; min-width: 34px; padding: 2px 6px !important; font-size: 10px !important; line-height: 1 !important; opacity: 0.62; border-radius: 999px !important; } .email-tags-toggle-inline.active { opacity: 1; color: var(--accent, var(--red)); background: color-mix(in srgb, var(--accent, var(--red)) 12%, transparent); border-color: color-mix(in srgb, var(--accent, var(--red)) 36%, transparent); } .email-tags-toggle-inline.email-tags-empty { color: var(--warning, #d6b35a); background: color-mix(in srgb, var(--warning, #d6b35a) 12%, transparent); border-color: color-mix(in srgb, var(--warning, #d6b35a) 34%, transparent); } .email-tag { display: inline-block; font-size: 9px; line-height: 1; padding: 2px 5px; border-radius: 8px; font-weight: 500; text-transform: uppercase; letter-spacing: 0.3px; background: rgba(127, 127, 127, 0.18); color: var(--fg); } .email-tag-clickable { appearance: none; border: 0; cursor: pointer; display: inline-flex; align-items: center; justify-content: center; box-sizing: border-box; font-family: inherit; font-size: 9px; font-weight: 500; height: 13px !important; min-height: 0 !important; line-height: 1; margin: 0; padding: 2px 5px !important; text-transform: uppercase; vertical-align: middle; flex: 0 0 auto; } .email-tag-work { background: rgba(96, 165, 250, 0.22); color: #60a5fa; } .email-tag-personal { background: rgba(74, 222, 128, 0.22); color: #4ade80; } .email-tag-finance { background: rgba(250, 204, 21, 0.22); color: #facc15; } .email-tag-bills { background: rgba(251, 146, 60, 0.22); color: #fb923c; } .email-tag-receipt { background: rgba(251, 146, 60, 0.22); color: #fb923c; } .email-tag-travel { background: rgba(167, 139, 250, 0.22); color: #a78bfa; } .email-tag-newsletter { background: rgba(148, 163, 184, 0.22); color: #94a3b8; } .email-tag-promo, .email-tag-marketing { background: rgba(244, 114, 182, 0.22); color: #f472b6; } .email-tag-notification { background: rgba(148, 163, 184, 0.22); color: #94a3b8; } .email-tag-security { background: rgba(248, 113, 113, 0.22); color: #f87171; } .email-tag-urgent { background: color-mix(in srgb, var(--color-error, #e06c75) 25%, transparent); color: var(--color-error, #e06c75); font-weight: 600; } .email-tag-reply-soon { background: rgba(240, 173, 78, 0.22); color: #f0ad4e; } .email-tag-social { background: rgba(56, 189, 248, 0.22); color: #38bdf8; } .email-tag-shopping { background: rgba(236, 72, 153, 0.22); color: #ec4899; } .email-tag-calendar { background: rgba(167, 139, 250, 0.22); color: #a78bfa; } .email-menu-wrap { position: relative; flex-shrink: 0; } .email-menu-btn { background: none; border: none; color: var(--fg); opacity: 0; cursor: pointer; padding: 4px; transition: opacity 0.15s; position: relative; top: 0px; } .email-dropdown { position: absolute; right: 0; top: 100%; z-index: 9999; min-width: 120px; background: var(--bg); border: 1px solid var(--border); border-radius: 6px; box-shadow: 0 4px 12px rgba(0,0,0,0.3); padding: 4px 0; } .email-loading { padding: 16px; text-align: center; font-size: 12px; opacity: 0.5; } .email-load-more { padding: 8px; text-align: center; } .email-load-more-btn { background: transparent; border: 1px solid var(--border); border-radius: 4px; color: var(--fg); padding: 4px 12px; font-size: 11px; cursor: pointer; } .email-load-more-btn:hover { background: var(--hover-bg, rgba(255,255,255,0.05)); } .email-spinner { display: inline-block; width: 12px; height: 12px; border: 2px solid rgba(255,255,255,0.3); border-top-color: #fff; border-radius: 50%; animation: email-spin 0.6s linear infinite; vertical-align: middle; margin-right: 4px; } /* Email section doesn't collapse — hide the auto-injected chevron */ #email-section .section-collapse-btn { display: none !important; } #email-section:hover #email-compose-btn { opacity: 0.7 !important; } #email-compose-btn:hover { opacity: 1 !important; background: none !important; } #email-compose-btn svg { width: 11px; height: 11px; transition: transform 0.45s cubic-bezier(0.34, 1.56, 0.64, 1); } #email-compose-btn .list-item-plus-label { top: calc(50% - 0.5px); color: var(--fg); font-size: 10px; } #email-compose-btn:hover svg { transform: rotate(180deg) scale(1.15); } /* Library row "+" — identical to the email compose "+": hidden until the row is hovered, no accent box, and the same rotate-in animation. */ #library-new-doc-btn, #notes-new-note-btn { opacity: 0.4 !important; transition: opacity 0.15s ease; } #tool-library-btn:hover #library-new-doc-btn, #tool-notes-btn:hover #notes-new-note-btn { opacity: 0.7 !important; } #library-new-doc-btn:hover, #notes-new-note-btn:hover { opacity: 1 !important; background: none !important; } #library-new-doc-btn svg, #notes-new-note-btn svg { transition: transform 0.45s cubic-bezier(0.34, 1.56, 0.64, 1); } #library-new-doc-btn .list-item-plus-label, #notes-new-note-btn .list-item-plus-label { top: calc(50% + 1px); } #library-new-doc-btn:hover svg, #notes-new-note-btn:hover svg { transform: rotate(180deg) scale(1.15); } /* MD toolbar attach button — matches other toolbar buttons */ .md-toolbar-attach-btn { background: none; border: none; color: var(--fg); opacity: 0.35; padding: 4px 7px; cursor: pointer; min-height: 28px; display: inline-flex; align-items: center; justify-content: center; transition: opacity 0.1s; } .md-toolbar-attach-btn:hover { opacity: 1; } /* Email reader icon buttons — vertical icon + label stack. */ .memory-toolbar-btn.reader-icon-btn { width: auto; height: 44px; /* padding: 4px 2px; */ position: relative; top: 1px; display: inline-flex; flex-direction: column; align-items: center; justify-content: center; gap: 3px; flex: 0 0 auto; } .memory-toolbar-btn.reader-icon-btn svg { width: 18px; height: 18px; } .memory-toolbar-btn.reader-icon-btn[data-act="reply"] svg { color: inherit; stroke: currentColor; } .memory-toolbar-btn.reader-icon-btn.active { background: color-mix(in srgb, var(--accent, var(--red)) 16%, transparent); border-color: color-mix(in srgb, var(--accent, var(--red)) 40%, transparent); color: var(--accent, var(--red)); } .memory-toolbar-btn.reader-icon-btn[data-act="more"] { color: inherit; } .memory-toolbar-btn.reader-icon-btn[data-act="more"] svg { fill: currentColor; } .memory-toolbar-btn.reader-icon-btn.reader-more-active { background: color-mix(in srgb, var(--fg) 12%, transparent); border-color: color-mix(in srgb, var(--fg) 24%, transparent); color: inherit; } /* Cookbook Serve dropdown triggers (the cached-model kebab + the saved-config arrow) — accent-colored to signal they open a menu, with a filled tint when their dropdown is open. Matches the email reader More button pattern. */ .hwfit-cached-menu-btn, .cookbook-saved-arrow { color: var(--accent, var(--red)); /* Base .memory-item-btn is flex with align-items but no justify-content, so the kebab SVG sat left-aligned inside the button instead of being horizontally centered. Pin it center. */ justify-content: center; } .hwfit-cached-menu-btn.cookbook-menu-active, .cookbook-saved-arrow.cookbook-menu-active { background: color-mix(in srgb, var(--accent, var(--red)) 18%, transparent); border-color: color-mix(in srgb, var(--accent, var(--red)) 45%, transparent); color: var(--accent, var(--red)); } /* Card action menus share one hit target and baseline. Keep this late in the cascade because modal buttons and Cookbook Serve add their own offsets. */ .memory-item-actions > .memory-item-btn, .memory-item-actions .hwfit-cached-menu-btn { box-sizing: border-box; width: 28px; min-width: 28px; height: 22px; min-height: 22px; margin: 0 !important; padding: 0; border: 1px solid transparent; border-radius: 6px; color: var(--color-muted); font-size: 11px; display: inline-flex; align-items: center; align-self: center; justify-content: center; position: relative; top: 0 !important; transform: none !important; line-height: 1; transition: background 0.15s, border-color 0.15s, color 0.15s, opacity 0.15s; } .memory-item-actions .hwfit-cached-menu-btn:hover { opacity: 1 !important; background: color-mix(in srgb, var(--fg) 8%, transparent); border-color: color-mix(in srgb, var(--fg) 24%, transparent); color: var(--fg); } .memory-item-actions .hwfit-cached-menu-btn { transform: translateY(2px) !important; } @media (min-width: 769px) { .task-card .memory-item-actions { top: 6px; } .task-card .memory-item-actions > .memory-item-btn { transform: none !important; } } /* All kebab menus use the same muted tone as the expand/collapse chevron. */ :is( .memory-menu-btn, .memory-item-actions .memory-item-btn:not(.save):not(.pin):not(.delete):not(.doclib-card-action-btn), .hwfit-cached-menu-btn, .cookbook-task-menu-btn, .skill-kebab-btn, .archive-menu-btn, .doc-tab-menu-btn, .email-menu-btn ) { color: var(--color-muted, var(--fg)) !important; } :is( .memory-menu-btn, .memory-item-actions .memory-item-btn:not(.save):not(.pin):not(.delete):not(.doclib-card-action-btn), .hwfit-cached-menu-btn, .cookbook-task-menu-btn, .skill-kebab-btn, .archive-menu-btn, .doc-tab-menu-btn, .email-menu-btn ) svg { color: inherit; fill: currentColor; } /* Card kebabs are lightweight menu affordances, not bordered buttons. The old base hover rule gave only some library cards a boxed outline while chats, tasks, and cookbook stayed borderless. */ :is( .memory-menu-btn, .memory-item-actions .memory-item-btn:not(.save):not(.pin):not(.delete):not(.doclib-card-action-btn), .hwfit-cached-menu-btn, .cookbook-task-menu-btn, .skill-kebab-btn, .archive-menu-btn, .doc-tab-menu-btn, .email-menu-btn ):hover { background: none !important; border-color: transparent !important; color: var(--fg) !important; opacity: 1; } /* Skills used a separate, larger kebab with a different hover treatment. Match every other card action trigger. */ .skill-kebab-btn { box-sizing: border-box; width: 28px; min-width: 28px; height: 22px; min-height: 22px; padding: 0; border: 1px solid transparent; border-radius: 6px; color: var(--color-muted) !important; opacity: 0.55; top: -2px; } @media (max-width: 768px) { .memory-item-actions > .memory-item-btn, .memory-item-actions .hwfit-cached-menu-btn { width: 40px; min-width: 40px; height: 40px; min-height: 40px; } /* Card menus all need the same comfortable tap target. These components previously escaped the shared action-button sizing through more-specific desktop selectors. */ .memory-menu-btn, .skill-kebab-btn, .task-card .memory-item-actions .memory-item-btn { width: 40px !important; min-width: 40px !important; height: 40px !important; min-height: 40px !important; } .memory-menu-btn { opacity: 0.7; } /* Document cards seat their actions on a slightly higher title baseline than chats/research cards. Bring only that kebab down 4px. */ #doclib-modal .doclib-card[data-doc-id] > .doclib-document-header .memory-item-actions .memory-item-btn { transform: translateY(-2px) !important; } } /* Mobile: center the kebab/menu dropdowns in the viewport so they don't slide left/right as the window width changes (they were positioned via inline `right: ...px` relative to the kebab button). Stable position is easier to land on by touch. The inline `top:` set by the menu code is preserved; we only override the horizontal axis. */ @media (max-width: 768px) { .email-card-dropdown, .cookbook-saved-menu, .cookbook-dep-menu { left: 50% !important; right: auto !important; transform: translateX(-50%); } } /* Mobile-only Cancel item appended to dropdowns (kebab/More menus). On desktop outside-click closes them cleanly; on touch that's fiddly, so give an explicit Cancel row. Visually separated from the action items above by a top divider + slight muted color. */ .dropdown-cancel-mobile { display: none; } @media (max-width: 768px) { .dropdown-cancel-mobile { display: flex; border-top: 1px solid var(--border); margin-top: 4px; padding-top: 8px; opacity: 0.85; } } /* Launch-command Copy button morphs into Cancel once Launch has been clicked. */ .hwfit-serve-copy.hwfit-serve-cancel { border-color: var(--color-danger, #e06c75) !important; color: var(--color-danger, #e06c75) !important; } .hwfit-serve-copy.hwfit-serve-cancel:hover { background: color-mix(in srgb, var(--color-danger, #e06c75) 14%, transparent); } /* One visual contract for card kebab menus. These menus are built by several modules, and native button defaults previously made identical rows render with different fonts, heights, and hover movement. */ :is( .session-dropdown-menu, .email-card-dropdown, .memory-item-dropdown, .task-dropdown, .skill-kebab-menu, .doclib-card-dropdown, .gallery-detail-menu ) { box-sizing: border-box; padding: 4px !important; color: var(--fg); background: var(--panel, var(--bg)) !important; border: 1px solid var(--border) !important; border-radius: 8px !important; box-shadow: 0 8px 24px rgba(0, 0, 0, 0.3) !important; font-family: inherit !important; font-size: 11px !important; line-height: 1.2; } :is( .session-dropdown-menu, .email-card-dropdown, .memory-item-dropdown, .task-dropdown, .skill-kebab-menu, .doclib-card-dropdown, .gallery-detail-menu ) > .dropdown-item-compact { box-sizing: border-box; width: 100%; min-height: 28px; padding: 6px 8px; gap: 10px; border: 0; border-radius: 6px; color: var(--fg); background: transparent; font: inherit !important; line-height: 1.2; text-align: left; white-space: nowrap; } :is( .session-dropdown-menu, .email-card-dropdown, .memory-item-dropdown, .task-dropdown, .skill-kebab-menu, .doclib-card-dropdown, .gallery-detail-menu ) > .dropdown-item-compact:hover:not(:disabled) { color: var(--fg); background: color-mix(in srgb, var(--accent, var(--red)) 10%, transparent); transform: none; } @media (max-width: 768px) { :is( .session-dropdown-menu, .email-card-dropdown, .memory-item-dropdown, .task-dropdown, .skill-kebab-menu, .doclib-card-dropdown, .gallery-detail-menu ) > .dropdown-item-compact { min-height: 44px; padding: 12px !important; gap: 10px !important; font-size: 14px !important; } } /* Email modal title unread badge — small accent pill next to "Email". */ .email-lib-unread-badge { display: inline-block; font-size: 0.55em; font-weight: 700; background: var(--accent-primary, var(--red)); color: var(--bg, #1a1a1a); border-radius: 9px; padding: 1px 7px; margin-left: 8px; vertical-align: 2px; line-height: 1.3; letter-spacing: 0.02em; cursor: pointer; } .email-lib-unread-badge.email-lib-away-badge { background: color-mix(in srgb, var(--accent, var(--red)) 18%, transparent); color: var(--accent, var(--red)); border: 1px solid color-mix(in srgb, var(--accent, var(--red)) 42%, transparent); padding: 0 7px; } .email-lib-auto-reply-badge { display: inline-block; margin-left: 7px; padding: 1px 7px; border: 1px solid color-mix(in srgb, var(--accent, var(--red)) 48%, var(--border)); border-radius: 9px; background: color-mix(in srgb, var(--accent, var(--red)) 15%, transparent); color: var(--accent, var(--red)); font-size: 0.55em; font-weight: 700; line-height: 1.3; letter-spacing: 0.01em; vertical-align: 2px; cursor: pointer; } .email-lib-auto-reply-status-dot { width: 6px; height: 6px; margin-left: 6px; border-radius: 50%; background: var(--accent, var(--red)); box-shadow: 0 0 0 2px color-mix(in srgb, var(--accent, var(--red)) 18%, transparent), 0 0 8px color-mix(in srgb, var(--accent, var(--red)) 72%, transparent); vertical-align: 2px; } .modal-header h4 > .email-lib-auto-reply-badge { font-size: 0.65em; white-space: nowrap; vertical-align: 1px; } #email-lib-modal.email-lib-unread-active .doclib-modal-content { box-shadow: 0 0 0 1px color-mix(in srgb, var(--accent, var(--red)) 22%, transparent), 0 0 18px color-mix(in srgb, var(--accent, var(--red)) 18%, transparent), var(--shadow-lg, 0 18px 50px rgba(0, 0, 0, 0.35)); } #email-lib-modal .email-lib-header-actions .minimize-btn { position: relative; left: 6px; } /* Per-card prev/next nav — only visible on the currently expanded card, sits at the right of the title row next to the done check. */ .email-card-nav-arrows { display: none; margin-left: auto; gap: 2px; flex-shrink: 0; align-items: center; position: relative; top: -3px; left: 19px; } .doclib-card.email-card-expanded .email-card-nav-arrows { display: inline-flex; } .email-card-header-menu { display: none; align-items: center; justify-content: center; flex-shrink: 0; width: 28px; height: 28px; padding: 0; border: none; border-radius: 6px; background: none; color: var(--fg); opacity: 0.65; cursor: pointer; position: relative; top: -3px; transition: opacity 0.12s, background 0.12s; } .doclib-card.email-card-expanded .email-card-header-menu { display: inline-flex; } .email-card-header-menu:hover { opacity: 1; background: color-mix(in srgb, var(--fg) 8%, transparent); } .email-card-nav-btn { background: none; border: none; color: var(--fg); opacity: 0.65; cursor: pointer; padding: 6px 8px; border-radius: 6px; display: inline-flex; align-items: center; justify-content: center; transition: opacity 0.12s, background 0.12s; } .email-card-nav-btn:hover { opacity: 1; background: color-mix(in srgb, var(--fg) 8%, transparent); } /* ── Email document editor ── */ .doc-email-header { display: flex; flex-direction: column; gap: 6px; padding: 10px 12px; border-bottom: 1px solid var(--border); background: var(--bg); flex-shrink: 0; } .doc-email-fields { display: flex; flex-direction: column; gap: 6px; min-height: 0; } .doc-email-collapse-btn { width: 100%; min-height: 24px; display: none; align-items: center; gap: 7px; padding: 2px 4px 3px; border: none; background: transparent; color: var(--fg); font: inherit; font-size: 11px; cursor: pointer; opacity: 0.72; text-align: left; } .doc-email-collapse-btn:hover { opacity: 1; color: var(--accent, var(--red)); } .doc-email-collapse-btn svg { flex-shrink: 0; opacity: 0.65; transition: transform 0.14s ease; } .doc-email-collapse-summary { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; opacity: 0.74; } .doc-email-header.doc-email-header-collapsed .doc-email-collapse-btn svg { transform: rotate(180deg); } .email-field { display: flex; align-items: center; gap: 8px; position: relative; } .email-field label { font-size: 11px; font-weight: 600; color: var(--fg); opacity: 0.5; min-width: 50px; text-align: right; flex-shrink: 0; } .email-field input { flex: 1; width: 100%; background: transparent; border: 1px solid var(--border); border-radius: 4px; padding: 5px 8px; font-size: 13px; font-family: inherit; color: var(--fg); outline: none; min-width: 0; } .email-field input:focus { border-color: var(--accent, #4a9eff); } @container docpane (max-width: 460px) { .doc-email-header .email-field { display: grid; grid-template-columns: 1fr; gap: 3px; align-items: stretch; } .doc-email-header .email-field label { min-width: 0; text-align: left; } .doc-email-header .email-field input { width: 100%; } } /* Cc toggle and attach button are absolute so they don't steal width from the To input. Anchored to the input's vertical center + 4px nudge so the label sits where the user expects it. */ .email-field .email-cc-toggle { position: absolute; right: 6px; top: calc(50% + 1px); transform: translateY(-50%); z-index: 2; } /* Accent-tinted prefix label (To / Cc / Bcc / Subject) sitting at the left edge of each input. Replaces both the old