/* Campaign workspace data interfaces. Kept separate from layout.css so local sticky/table tweaks stay untouched. */ .workspace-data-page .card { margin-bottom: 18px; } .workspace-heading .mono-small { margin-top: 8px; } .alert.success { background: var(--success-bg); color: var(--success-text); margin-bottom: 12px; } .alert.info { background: var(--info-bg); color: var(--info-text); margin-bottom: 12px; } .small-note { font-size: 12px; } .wizard-action-grid { display: grid; grid-template-columns: repeat(3, minmax(180px, 1fr)); gap: 14px; } .wizard-action-card { min-height: 176px; border: 1px solid var(--line); border-radius: 6px; background: var(--panel-soft); padding: 16px; display: flex; flex-direction: column; align-items: flex-start; } .wizard-action-card h3 { margin: 0; color: var(--text-strong); font-size: 16px; } .wizard-action-card p { margin: 8px 0 18px; color: var(--muted); line-height: 1.45; } .wizard-action-card a { margin-top: auto; text-decoration: none; } .data-table-wrap { margin: 0; overflow-x: auto; } .data-table th:nth-child(1), .data-table td:nth-child(1) { width: 76px; } .data-table th:nth-child(2), .data-table td:nth-child(2) { min-width: 220px; } .data-table th:nth-child(3), .data-table td:nth-child(3) { width: 120px; } .data-table code { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 12px; color: #5d5a55; white-space: pre-wrap; } .template-preview { min-height: 260px; max-height: 520px; overflow: auto; margin: 0; white-space: pre-wrap; color: var(--text); background: var(--panel-soft); border: 1px solid var(--line); border-radius: 6px; padding: 14px; font: inherit; line-height: 1.5; } .field-chip-list { display: flex; flex-wrap: wrap; gap: 8px; } .field-chip { display: inline-flex; align-items: center; min-height: 28px; border: 1px solid var(--line); border-radius: 999px; background: var(--panel-soft); padding: 4px 10px; color: var(--text-strong); font-size: 13px; font-weight: 700; } @media (max-width: 1000px) { .wizard-action-grid { grid-template-columns: 1fr; } } .locked-wizard-card { grid-template-columns: 1fr; } .standalone-wizard-body { min-height: auto; } /* Editable campaign data surfaces. */ .responsive-form-grid { align-items: start; } .json-edit-block { display: grid; gap: 8px; margin-top: 16px; } .json-edit-block textarea { font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace; font-size: 12px; line-height: 1.45; color: #4d4944; } .danger-text { color: var(--danger-text); } .page-bottom-actions { justify-content: flex-end; margin-top: 18px; } .section-mini-heading { margin: 18px 0 8px; font-size: 12px; color: #6b6863; letter-spacing: .04em; text-transform: uppercase; } .template-editor-grid { grid-template-columns: minmax(420px, 1.4fr) minmax(320px, .8fr); } .recipient-table-wrap, .files-table .app-table-wrap { overflow-x: auto; } .recipient-table th, .recipient-table td, .files-table th, .files-table td { white-space: nowrap; } .recipient-table code, .files-table code { white-space: pre-wrap; font-size: 12px; } .placeholder-stack { display: grid; gap: 8px; margin-top: 12px; } .placeholder-stack span { display: block; border: 1px dashed var(--line-dark); border-radius: 6px; background: var(--panel-soft); padding: 10px 12px; color: var(--muted); font-weight: 700; } @media (max-width: 1100px) { .template-editor-grid { grid-template-columns: 1fr; } .form-grid.compact.responsive-form-grid { grid-template-columns: 1fr; } } /* Campaign data layout refinement. */ .campaign-data-stack { display: grid; gap: 18px; } .form-subsection { display: grid; gap: 12px; border-top: 1px solid var(--line); padding-top: 14px; } .form-subsection:first-child { border-top: 0; padding-top: 0; } .form-subsection h3, .subsection-heading h3 { margin: 0; color: var(--text-strong); font-size: 14px; letter-spacing: .01em; } .subsection-heading.split { display: flex; align-items: center; justify-content: space-between; gap: 12px; } .toggle-grid { display: grid; grid-template-columns: repeat(2, minmax(180px, 1fr)); gap: 8px 16px; } .mail-server-settings-grid { display: grid; grid-template-columns: repeat(2, minmax(280px, 1fr)); gap: 22px; } .mail-server-subsection { border-top: 0; padding-top: 0; align-content: start; } .form-span-full { grid-column: 1 / -1; } .toggle-span-full { border: 1px solid var(--line); border-radius: 8px; background: var(--panel-soft); padding: 10px 12px; } .compact-table-wrap { margin-top: 8px; } .direct-attachment-table th:nth-child(1), .direct-attachment-table td:nth-child(1) { width: 220px; } .direct-attachment-table th:nth-child(3), .direct-attachment-table td:nth-child(3) { width: 180px; } .direct-attachment-table th:last-child, .direct-attachment-table td:last-child { width: 96px; } .table-action-cell { text-align: right; white-space: nowrap; } .empty-table-cell { color: var(--muted); font-size: 13px; padding: 18px 14px !important; text-align: center; } .field-editor-table th:nth-child(1), .field-editor-table td:nth-child(1) { min-width: 80px; } .field-editor-table th:nth-child(2), .field-editor-table td:nth-child(2) { min-width: 80px; } .field-editor-table th:nth-child(3), .field-editor-table td:nth-child(3) { width: 140px; } .field-editor-table th:nth-child(4), .field-editor-table td:nth-child(4) { width: 175px; } .field-editor-table th:nth-child(5), .field-editor-table td:nth-child(5) { min-width: 80px; } .field-editor-table th:nth-child(6), .field-editor-table td:nth-child(6) { width: 205px; } .field-editor-table th:last-child, .field-editor-table td:last-child { width: 96px; } .additional-global-values-table th:last-child, .additional-global-values-table td:last-child { width: 96px; } .schema-note { margin-top: 12px; } .additional-global-values-table th:nth-child(1), .additional-global-values-table td:nth-child(1) { width: 260px; } @media (max-width: 1100px) { .mail-server-settings-grid { grid-template-columns: 1fr; } .toggle-grid { grid-template-columns: 1fr; } } /* Campaign workspace navigation and cross-section references. */ .section-link-primary { margin-top: 2px; font-weight: 700; } .campaign-settings-grid { align-items: start; } .override-toggle-grid { grid-template-columns: repeat(3, minmax(180px, 1fr)); } .related-link-grid { display: grid; grid-template-columns: repeat(4, minmax(180px, 1fr)); gap: 12px; } .related-link-card { display: grid; gap: 6px; min-height: 88px; padding: 14px; border: 1px solid var(--line); border-radius: 12px; background: var(--panel-soft); color: inherit; text-decoration: none; transition: border-color .16s ease, transform .16s ease, background .16s ease; } .related-link-card:hover { border-color: var(--accent-soft); background: var(--panel); transform: translateY(-1px); } .related-link-card span { color: var(--muted); font-size: 12px; line-height: 1.45; } .compact-detail-list { gap: 8px; } .global-values-preview { margin-top: 14px; } .template-side-stack { display: grid; gap: 18px; align-content: start; } .template-preview-box { display: grid; gap: 10px; padding: 14px; border: 1px solid var(--line); border-radius: 12px; background: var(--panel-soft); } .template-preview-box h3 { margin: 0; color: var(--text-strong); font-size: 15px; } .template-preview-box pre { margin: 0; white-space: pre-wrap; color: var(--text); font-family: inherit; font-size: 13px; line-height: 1.55; } .attachment-base-grid { margin-bottom: 16px; } @media (max-width: 1280px) { .related-link-grid { grid-template-columns: repeat(2, minmax(180px, 1fr)); } .override-toggle-grid { grid-template-columns: repeat(2, minmax(180px, 1fr)); } } @media (max-width: 780px) { .related-link-grid, .override-toggle-grid { grid-template-columns: 1fr; } } /* Campaign list and module shell refinements. */ .subsection-bottom-actions { justify-content: flex-end; margin-top: 12px; } .campaigns-page { padding: 28px 34px; } .campaigns-page > .alert { margin: 0 0 18px; } .campaigns-page .card { border: 1px solid var(--line); border-radius: var(--radius); box-shadow: var(--shadow); background: var(--panel); overflow: hidden; } .campaigns-page .card-header { position: sticky; top: 0; z-index: 30; min-height: 64px; padding: 0 24px; background: #fff; border-bottom: 1px solid var(--line); border-radius: var(--radius) var(--radius) 0 0; box-shadow: 0 14px 18px -22px rgba(45, 43, 40, .75); } .campaigns-page .card-header::after { left: 12px; right: 12px; } .campaigns-page .card-body { padding: 0; } .campaign-table-wrap { margin: 0; } .campaign-table thead, .campaign-table thead th { top: 64px; } .campaign-table th:first-child, .campaign-table td:first-child { padding-left: 24px; } .campaign-table th:last-child, .campaign-table td:last-child { padding-right: 24px; } .module-workspace .section-sidebar { padding-top: 18px; } .settings-dashboard-grid { align-items: start; } .module-table th, .module-table td { white-space: nowrap; } .module-table td:first-child { font-weight: 700; color: var(--text-strong); } .module-big-number { display: block; color: var(--text-strong); font-size: 24px; line-height: 1.2; margin-bottom: 8px; } .stacked-actions { align-items: stretch; flex-direction: column; } .stacked-actions .btn { justify-content: center; } @media (max-width: 900px) { .campaigns-page { padding: 18px; } } /* Module entry/detail pages (Templates, Files). */ .module-entry-page { max-width: none; } .module-card-heading { display: flex; align-items: baseline; gap: 0.75rem; flex-wrap: wrap; } .module-card-heading h2 { margin: 0; font-size: 1.06rem; } .module-card-heading span { color: var(--muted-text); font-size: 0.78rem; font-weight: 500; } .module-table-wrap { width: 100%; } .module-entry-table th:last-child { width: 1%; } .module-entry-table td { vertical-align: middle; } .module-title-cell { display: flex; flex-direction: column; gap: 0.18rem; min-width: 15rem; } .module-title-cell strong { color: var(--text); font-size: 0.94rem; font-weight: 700; } .module-title-cell span { color: var(--muted-text); font-size: 0.78rem; line-height: 1.35; } .small-text { font-size: 0.78rem; } .compact-chip-row { gap: 0.28rem; flex-wrap: nowrap; } .message-preview { border: 1px solid var(--border); border-radius: var(--radius-md); background: var(--surface-subtle); padding: 1rem; } .message-preview strong { display: block; margin-bottom: 0.85rem; } .message-preview pre { margin: 0; white-space: pre-wrap; font-family: inherit; color: var(--text); line-height: 1.55; } @media (max-width: 980px) { .module-entry-table { min-width: 880px; } } /* Campaign overview configuration shortcuts. */ .overview-config-grid { display: grid; grid-template-columns: repeat(3, minmax(220px, 1fr)); gap: 14px; margin-bottom: 18px; align-items: stretch; } .overview-config-card { min-height: 218px; border: 1px solid var(--line); border-radius: 6px; background: linear-gradient(#ffffff, var(--panel-soft)); box-shadow: 0 1px 2px rgba(38, 35, 30, .04); padding: 16px; display: grid; grid-template-rows: 22px 44px 1fr 35px; gap: 8px; align-items: start; height: 100%; } .overview-config-card h3 { margin: 0; color: var(--text-strong); font-size: 16px; line-height: 22px; } .overview-config-card p { margin: 0; color: var(--muted); line-height: 1.45; } .overview-config-facts { display: grid; grid-template-rows: repeat(3, minmax(31px, auto)); gap: 0; width: 100%; margin: 0; align-self: stretch; } .overview-config-facts div { display: grid; grid-template-columns: minmax(96px, .72fr) minmax(0, 1.28fr); gap: 10px; align-items: baseline; min-height: 31px; border-top: 1px solid var(--line); padding-top: 8px; } .overview-config-facts dt { color: var(--muted); font-size: 11px; font-weight: 800; letter-spacing: .04em; text-transform: uppercase; } .overview-config-facts dd { margin: 0; min-width: 0; overflow: hidden; color: var(--text-strong); font-size: 13px; font-weight: 700; line-height: 1.35; text-overflow: ellipsis; white-space: nowrap; } .overview-config-actions { display: flex; flex-wrap: wrap; justify-content: right; align-self: end; gap: 8px; width: 100%; } .overview-config-actions a { text-decoration: none; } .overview-summary-grid { grid-template-columns: repeat(4, minmax(120px, 1fr)); } @media (max-width: 1100px) { .overview-config-grid, .overview-summary-grid { grid-template-columns: 1fr; } .overview-config-card { grid-template-rows: auto auto auto auto; } } /* Template editor refinements. */ .template-body-mode { display: inline-flex; gap: 4px; width: fit-content; border: 1px solid var(--line); border-radius: 999px; background: var(--panel-soft); padding: 4px; } .template-body-mode button { border: 0; border-radius: 999px; background: transparent; color: var(--muted); cursor: pointer; font: inherit; font-size: 13px; font-weight: 700; padding: 7px 12px; } .template-body-mode button.active { background: #fff; color: var(--text-strong); box-shadow: 0 1px 3px rgba(0,0,0,.12); } .template-editor-actions { justify-content: flex-end; } .field-chip-button { cursor: pointer; border-color: var(--line-dark); } .field-chip-button:hover, .field-chip-button:focus-visible { transform: translateY(-1px); box-shadow: 0 4px 12px rgba(0,0,0,.09); } .field-chip-button.used { background: var(--green-soft); border-color: #78b7a9; color: #2d685d; } .field-chip-button.undefined { background: #fff1d0; border-color: #d5a64a; color: #7c5412; } .field-chip-namespace { border-right: 1px solid rgba(0,0,0,.18); color: var(--muted); margin-right: 2px; padding-right: 6px; text-transform: uppercase; font-size: 10px; letter-spacing: .05em; } .template-preview-modal { width: min(920px, 100%); } .template-preview-toolbar { display: flex; align-items: flex-start; justify-content: space-between; gap: 18px; margin-bottom: 16px; } .template-preview-toolbar p { margin: 4px 0 0; } .template-preview-frame { width: 100%; min-height: 360px; border: 1px solid var(--line); border-radius: 8px; background: #fff; } .template-action-dialog { width: min(620px, 100%); } .template-preview-nav { align-items: center; gap: 0.25rem; } .template-preview-count { color: var(--muted); margin: 0 0.4rem; white-space: nowrap; } .template-preview-attachments { margin-top: 16px; } .template-preview-attachments h3 { margin: 0 0 8px; } .template-preview-attachments .app-table-wrap { max-height: 220px; overflow: scroll; margin-top: 10px; } .template-preview-attachments code { white-space: nowrap; } @media (max-width: 720px) { .template-preview-toolbar { display: grid; } } /* Restored workspace layout rules removed by the template editor patch. */ .attachment-base-stack { display: grid; gap: 16px; margin-bottom: 16px; } .attachment-base-grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(240px, .36fr); gap: 18px; align-items: end; } .attachment-base-toggle { display: flex; min-height: 44px; align-items: center; padding-bottom: 2px; } .campaign-settings-stack { display: grid; gap: 18px; } .campaign-identity-grid { grid-template-columns: repeat(2, minmax(220px, 1fr)); } .campaign-identity-grid .form-field:nth-child(3), .campaign-identity-grid .form-field:nth-child(4) { grid-column: 1 / -1; } .campaign-header-stack { display: grid; gap: 18px; } .campaign-header-grid, .campaign-sender-grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(240px, .36fr); gap: 18px; align-items: end; } .campaign-header-toggle, .campaign-sender-toggle { display: flex; min-height: 44px; align-items: center; padding-bottom: 2px; } .recipient-add-row td { background: var(--panel-soft); } .recipient-add-row .email-address-input { max-width: 720px; } .unsaved-changes-dialog { max-width: 520px; } .unsaved-changes-actions { justify-content: flex-end; } @media (max-width: 1100px) { .campaign-header-grid, .campaign-sender-grid, .attachment-base-grid { grid-template-columns: 1fr; } } @media (max-width: 860px) { .campaign-identity-grid { grid-template-columns: 1fr; } } /* Recipient editor compaction and reusable attachment rule overlay. */ .recipient-editor-table th:nth-child(1), .recipient-editor-table td:nth-child(1) { width: 42px; } .recipient-editor-table th:nth-child(2), .recipient-editor-table td:nth-child(2) { min-width: 500px; } .recipient-editor-table th:nth-child(3), .recipient-editor-table td:nth-child(3) { min-width: 192px; } .recipient-editor-table th:last-child, .recipient-editor-table td:last-child { width: 123px; } .recipient-editor-table td { vertical-align: top; } .recipient-cell { white-space: normal !important; } .recipient-address-stack { display: grid; gap: 8px; min-width: 320px; } .recipient-address-line { display: grid; grid-template-columns: 42px minmax(0, 1fr); gap: 8px; align-items: start; } .recipient-address-label { display: inline-flex; justify-content: center; min-height: 24px; border: 1px solid var(--line); border-radius: 999px; background: var(--panel-soft); color: var(--muted); font-size: 11px; font-weight: 800; line-height: 22px; text-transform: uppercase; } .recipient-field-input { min-width: 140px; } .attachment-summary-button { white-space: nowrap; } .attachment-summary-note { margin-top: 12px; } .attachment-rules-modal { width: min(1120px, 100%); } .attachment-rules-body { display: grid; gap: 12px; } .attachment-rules-empty { border: 1px dashed var(--line-dark); border-radius: 8px; background: var(--panel-soft); padding: 14px; } .attachment-sources-table th:nth-child(1), .attachment-sources-table td:nth-child(1) { min-width: 280px; } .attachment-sources-table th:nth-child(2), .attachment-sources-table td:nth-child(2) { min-width: 200px; } .attachment-sources-table th:nth-child(3), .attachment-sources-table td:nth-child(3), .attachment-sources-table th:nth-child(4), .attachment-sources-table td:nth-child(4) { width: 170px; } .attachment-sources-table th:last-child, .attachment-sources-table td:last-child { width: 123px; } @media (max-width: 900px) { .recipient-editor-table th:nth-child(2), .recipient-editor-table td:nth-child(2) { min-width: 300px; } .recipient-address-stack { min-width: 260px; } } .attachment-rules-table th:nth-child(1), .attachment-rules-table td:nth-child(1) { min-width: 160px; } .attachment-rules-table th:nth-child(2), .attachment-rules-table td:nth-child(2) { width: 280px; } .attachment-rules-table th:nth-child(3), .attachment-rules-table td:nth-child(3) { min-width: 230px; } .attachment-rules-table th:nth-child(4), .attachment-rules-table td:nth-child(4), .attachment-rules-table th:nth-child(5), .attachment-rules-table td:nth-child(5) { width: 175px; } .attachment-rules-table th:last-child, .attachment-rules-table td:last-child { width: 123px; } @media (max-width: 900px) { .recipient-editor-table th:nth-child(2), .recipient-editor-table td:nth-child(2) { min-width: 300px; } .recipient-address-stack { min-width: 260px; } } /* Attachment file chooser panel embedded in the shared rules editor. */ .attachment-rules-editor { display: grid; gap: 12px; min-width: 0; } .attachment-rules-editor.has-file-browser { grid-template-columns: minmax(0, 1fr) minmax(280px, 360px); align-items: start; } .attachment-rules-main { min-width: 0; } .attachment-rules-table tr.is-choosing-file td { background: var(--panel-soft); } .attachment-rules-footer-actions { margin-top: 12px; } .attachment-file-browser-panel { display: grid; gap: 12px; border: 1px solid var(--line); border-radius: 12px; background: var(--panel-soft); padding: 14px; min-width: 0; } .attachment-file-browser-header { display: flex; justify-content: space-between; gap: 12px; align-items: start; } .attachment-file-browser-header h3 { margin: 0 0 4px; font-size: 15px; } .attachment-file-browser-list { display: grid; gap: 8px; } .attachment-file-browser-list .btn { justify-content: flex-start; text-align: left; white-space: normal; } .attachment-file-browser-actions { justify-content: flex-end; } @media (max-width: 1100px) { .attachment-rules-editor.has-file-browser { grid-template-columns: 1fr; } } /* Chooser-backed readonly fields: legible, clickable display values without a text caret. */ .chooser-display-input, .field-with-action input.chooser-display-input { background: var(--panel-soft); border-color: var(--line-dark); color: var(--ink); cursor: pointer; caret-color: transparent; user-select: none; } .chooser-display-input:hover, .field-with-action input.chooser-display-input:hover { background: var(--panel); border-color: var(--accent); } .chooser-display-input:focus, .field-with-action input.chooser-display-input:focus { outline: none; box-shadow: 0 0 0 2px rgba(239, 107, 58, .16); } .chooser-display-input:disabled, .field-with-action input.chooser-display-input:disabled { background: var(--panel-soft); border-color: var(--line); color: var(--muted); cursor: not-allowed; opacity: 1; } /* Recipient/profile split pages. */ .recipient-address-table th:nth-child(1), .recipient-address-table td:nth-child(1) { width: 42px; } .recipient-address-table th:last-child, .recipient-address-table td:last-child { width: 123px; } .recipient-address-table td { vertical-align: top; } .recipient-address-table .email-address-input { min-width: 220px; } .recipient-address-table .toggle-switch { white-space: nowrap; } .recipient-data-table th:nth-child(1), .recipient-data-table td:nth-child(1) { min-width: 240px; } .recipient-data-table th:nth-child(2), .recipient-data-table td:nth-child(2) { min-width: 192px; } .recipient-data-table td { vertical-align: top; } .recipient-data-identity-cell { white-space: normal !important; } .recipient-data-identity { display: inline-flex; align-items: center; gap: 8px; max-width: 260px; color: var(--ink); text-decoration: none; } .recipient-data-identity:hover .recipient-data-address { text-decoration: underline; } .recipient-data-number, .recipient-extra-bubble { display: inline-flex; align-items: center; justify-content: center; min-height: 24px; border: 1px solid var(--line); border-radius: 999px; background: var(--panel-soft); color: var(--muted); font-size: 11px; font-weight: 800; padding: 0 8px; white-space: nowrap; } .recipient-data-address { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } /* Recipient data split: align the identifier column with the recipient profile table. */ .recipient-data-table th:nth-child(1), .recipient-data-table td:nth-child(1) { min-width: 72px; width: 72px; } .recipient-data-table th:nth-child(2), .recipient-data-table td:nth-child(2) { min-width: 240px; } .recipient-data-table th:nth-child(3), .recipient-data-table td:nth-child(3) { min-width: 192px; } .recipient-index-cell { white-space: nowrap; } /* Admin overview and address book mock module. */ .admin-overview-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 12px; } .admin-overview-link { border: 1px solid var(--line); border-radius: 6px; background: var(--panel-soft); padding: 14px; text-align: left; cursor: pointer; color: var(--text); } .admin-overview-link:hover { background: #fff; border-color: var(--line-dark); } .admin-overview-link strong { display: block; color: var(--text-strong); margin-bottom: 5px; } .admin-overview-link span { display: block; color: var(--muted); font-size: 13px; line-height: 1.35; } .module-workspace-single { grid-template-columns: minmax(0, 1fr); } .address-book-scope-list { display: grid; gap: 10px; } .address-book-scope-card { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; border: 1px solid var(--line); border-radius: 6px; background: var(--panel-soft); padding: 14px; } .address-book-scope-card strong { display: block; color: var(--text-strong); } .address-book-scope-card p { margin: 5px 0 0; color: var(--muted); } .locked-version-notice { display: flex; align-items: center; justify-content: space-between; gap: 1rem; } .locked-version-copy { flex: 1 1 auto; min-width: 0; } .locked-version-reason { white-space: nowrap; } .locked-version-feedback { color: var(--success, #157347); font-weight: 600; } .locked-version-error { color: var(--danger, #b42318); font-weight: 600; } @media (max-width: 760px) { .locked-version-notice { align-items: stretch; flex-direction: column; } } /* Version navigation ---------------------------------------------------- */ .version-line { display: flex; align-items: center; gap: 0.35rem; flex-wrap: wrap; margin: 6px 0 0; color: var(--muted); } .version-arrow { display: inline-flex; align-items: center; justify-content: center; width: 1.25rem; height: 1.25rem; border-radius: 999px; color: var(--text, #243247); text-decoration: none; line-height: 1; font-size: 0.72rem; } .version-arrow svg { width: 1rem; height: 1rem; stroke-width: 1.8; } .version-arrow:hover { background: var(--surface-subtle, rgba(15, 23, 42, 0.08)); color: var(--text, #111827); } .version-arrow.disabled { opacity: 0.24; pointer-events: none; } .version-line-separator { opacity: 0.55; margin-inline: 0.1rem; } .locked-version-actions { flex: 0 0 auto; flex-wrap: nowrap; justify-content: flex-end; } .version-arrow:is(button) { border: 0; background: transparent; padding: 0; cursor: pointer; font: inherit; } .version-arrow:is(button):disabled { opacity: 0.24; pointer-events: none; cursor: default; } /* Overview version history refinements. */ .version-history-table .current-version-row td { font-weight: 700; } .mock-message-detail { margin-top: 16px; border-top: 1px solid var(--line-subtle); padding-top: 16px; } .mock-message-preview, .mock-message-raw { width: 100%; max-height: 260px; overflow: auto; border: 1px solid var(--line-subtle); border-radius: 12px; background: rgba(255, 255, 255, 0.62); color: var(--text-primary); padding: 12px; white-space: pre-wrap; } .mock-message-raw { max-height: 420px; font-size: 0.82rem; } /* Shared message preview overlay --------------------------------------- */ .message-preview-modal .modal-body { display: grid; gap: 1rem; } .message-preview-meta { margin: 0; } .message-preview-attachments h3, .message-preview-raw summary { margin: 0 0 0.5rem; } .attachment-chip-grid { display: flex; flex-wrap: wrap; gap: 0.5rem; } .attachment-file-chip { display: inline-flex; flex-direction: column; gap: 0.18rem; min-width: min(220px, 100%); max-width: 100%; border: 1px solid var(--line-subtle); border-radius: 12px; background: rgba(255, 255, 255, 0.68); padding: 0.55rem 0.7rem; color: var(--text-primary); } .attachment-file-chip strong { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .attachment-file-chip span { color: var(--muted); font-size: 0.82rem; } .message-preview-raw { border-top: 1px solid var(--line-subtle); padding-top: 0.75rem; } .message-preview-raw summary { cursor: pointer; font-weight: 700; color: var(--text-primary); } /* Files manager */ .file-manager-page.file-manager-fullscreen { position: relative; display: grid; grid-template-rows: 1fr; height: calc(100vh - 115px); padding: 0; overflow: hidden; } .file-manager-alerts { position: absolute; top: 14px; left: 18px; right: 18px; z-index: 40; pointer-events: none; } .file-manager-alerts .alert { pointer-events: auto; box-shadow: var(--shadow-popover); } .file-manager-toolbar { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; padding: 10px 14px; border-bottom: 1px solid var(--line); background: var(--panel-header); } .file-manager-toolbar .button { display: inline-flex; align-items: center; gap: 7px; } .file-manager-shell { display: grid; grid-template-columns: minmax(240px, 300px) minmax(0, 1fr); min-height: 0; height: 100%; border: 1px solid var(--line); border-radius: 0; overflow: hidden; background: var(--panel); } .file-tree-panel { display: flex; flex-direction: column; min-width: 0; min-height: 0; border-right: 1px solid var(--line); background: linear-gradient(180deg, var(--panel-soft), var(--panel)); } .file-tree-heading { flex: 0 0 auto; padding: 13px 14px; border-bottom: 1px solid var(--line); color: var(--muted); font-size: 12px; font-weight: 800; letter-spacing: .05em; text-transform: uppercase; } .file-tree-list { flex: 1 1 auto; min-height: 0; overflow: auto; padding: 10px 8px 16px; } .file-tree-space + .file-tree-space { margin-top: 10px; padding-top: 10px; border-top: 1px solid var(--line); } .file-tree-node-wrap { display: grid; grid-template-columns: 26px minmax(0, 1fr); align-items: center; gap: 2px; border-radius: 9px; } .file-tree-node, .file-tree-select, .file-tree-toggle { border: 0; background: transparent; color: var(--text); cursor: pointer; } .file-tree-toggle { display: grid; place-items: center; width: 26px; height: 32px; border-radius: 9px; color: var(--muted); } .file-tree-toggle:disabled { cursor: default; opacity: .55; } .file-tree-node { display: flex; align-items: center; gap: 8px; min-width: 0; width: 100%; padding: 8px 9px; border-radius: 9px; font: inherit; text-align: left; user-select: none; } .file-tree-node span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .file-tree-root { font-weight: 800; } .file-tree-select { width: 24px; height: 24px; border-radius: 999px; color: var(--text-strong); font-weight: 900; line-height: 1; } .file-tree-node-wrap:hover, .file-tree-node-wrap:focus-within, .file-tree-node-wrap.is-active, .file-tree-root:hover:not(:disabled), .file-tree-root:focus-visible, .file-tree-root.is-active { background: rgba(13, 110, 253, .08); outline: none; } .file-tree-node:focus-visible, .file-tree-toggle:focus-visible, .file-tree-select:focus-visible { outline: none; } .file-tree-node-wrap.is-drop-target, .file-tree-root.is-drop-target { background: rgba(13, 110, 253, .14); box-shadow: inset 0 0 0 2px rgba(13, 110, 253, .28); } .file-tree-node-wrap.is-selected .file-tree-select { background: #0d6efd; color: #fff; } .file-tree-children { display: grid; gap: 1px; } .file-list-panel { display: flex; flex-direction: column; min-width: 0; min-height: 0; background: var(--panel); } .file-list-sticky { flex: 0 0 auto; z-index: 2; border-bottom: 1px solid var(--line); background: var(--panel-soft); } .file-breadcrumbs { display: flex; align-items: center; flex-wrap: wrap; gap: 6px; min-height: 32px; padding: 10px 14px 6px; } .file-breadcrumb, .file-breadcrumb-segment { display: inline-flex; align-items: center; gap: 5px; } .file-breadcrumb { border: 0; background: transparent; color: var(--text-strong); cursor: pointer; font-weight: 800; padding: 4px 6px; border-radius: 7px; } .file-breadcrumb:hover:not(:disabled), .file-breadcrumb:focus-visible { background: var(--panel); outline: none; } .file-search-row { display: grid; grid-template-columns: auto minmax(180px, 1fr) auto auto auto; gap: 18px; align-items: center; padding: 4px 0 10px 14px; } .file-list-meta { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; padding: 8px 14px; border-top: 1px solid var(--line); color: var(--muted); font-size: 12px; } .file-list-drop-target { position: relative; flex: 1 1 auto; min-height: 0; overflow: auto; transition: background-color .16s ease, box-shadow .16s ease; } .file-list-drop-target.is-active, .file-list-drop-target.is-drop-target { background: rgba(13, 110, 253, .05); box-shadow: inset 0 0 0 2px rgba(13, 110, 253, .22); } .file-list-table { min-width: 760px; } .file-list-table-head, .file-list-row { display: grid; grid-template-columns: minmax(280px, 1fr) 120px 240px; gap: 12px; align-items: center; } .file-list-table-head { padding: 10px 14px; border-top: 1px solid var(--line); background: var(--panel); color: var(--muted); font-size: 12px; font-weight: 800; letter-spacing: .04em; text-transform: uppercase; } .file-list-table-head button { justify-self: start; border: 0; background: transparent; color: inherit; cursor: pointer; font: inherit; font-weight: inherit; letter-spacing: inherit; padding: 0; text-transform: inherit; } .file-list-table-head button:hover, .file-list-table-head button:focus-visible { color: var(--text-strong); outline: none; } .file-list-row { min-height: 58px; padding: 9px 14px; border-bottom: 1px solid var(--line); cursor: default; user-select: none; } .file-list-row:focus-visible { outline: 2px solid rgba(13, 110, 253, .35); outline-offset: -2px; } .file-list-row:hover, .file-list-row.is-selected { background: rgba(13, 110, 253, .07); } .file-list-row.is-drop-target { background: rgba(13, 110, 253, .13); box-shadow: inset 0 0 0 2px rgba(13, 110, 253, .28); } .file-list-name-cell { min-width: 0; } .file-list-name { display: inline-flex; align-items: center; gap: 10px; max-width: 100%; min-width: 0; border: 0; background: transparent; color: var(--text); cursor: pointer; font: inherit; text-align: left; padding: 0; } .file-list-name > span { display: grid; min-width: 0; gap: 2px; } .file-list-name strong, .file-list-name small { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .file-list-name small { color: var(--muted); font-size: 12px; } .file-row-icon { color: var(--muted); flex: 0 0 auto; } .folder-row .file-row-icon { color: #b6791d; } .file-row-tail { display: flex; align-items: center; justify-content: space-between; gap: 10px; min-width: 0; color: var(--muted); font-size: 12px; } .file-list-empty { padding: 36px 20px; color: var(--muted); text-align: center; } .file-context-menu { position: fixed; z-index: 110; display: grid; min-width: 190px; overflow: hidden; border: 1px solid var(--line-dark); border-radius: 12px; background: var(--panel); box-shadow: var(--shadow-popover); padding: 6px; } .file-context-menu button { display: flex; align-items: center; gap: 9px; width: 100%; border: 0; border-radius: 8px; background: transparent; color: var(--text); cursor: pointer; font: inherit; font-weight: 700; padding: 9px 10px; text-align: left; } .file-context-menu button:hover, .file-context-menu button:focus-visible { background: rgba(13, 110, 253, .08); outline: none; } .file-context-menu button.danger { color: var(--danger-text); } .file-dialog-backdrop { position: fixed; inset: 0; z-index: 80; display: grid; place-items: center; padding: 22px; background: rgba(28, 25, 22, .38); } .file-dialog { width: min(620px, 100%); max-height: min(720px, calc(100vh - 44px)); overflow: auto; border: 1px solid var(--line-dark); border-radius: 16px; background: var(--panel); box-shadow: var(--shadow-popover); } .file-dialog-header { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 15px 18px; border-bottom: 1px solid var(--line); background: var(--panel-soft); } .file-dialog-header h3 { margin: 0; color: var(--text-strong); font-size: 18px; } .file-dialog-header button { border: 0; background: transparent; color: var(--muted); cursor: pointer; font-size: 26px; line-height: 1; } .file-dialog-body { display: grid; gap: 16px; padding: 18px; } .file-upload-drop-zone { display: grid; place-items: center; gap: 8px; min-height: 170px; border: 1px dashed var(--line-dark); border-radius: 14px; background: var(--panel-soft); color: var(--muted); text-align: center; } .file-upload-drop-zone.is-active { border-color: #0d6efd; background: rgba(13, 110, 253, .08); } .field-error { color: var(--danger-text); font-weight: 700; } .inline-link-button { justify-self: start; border: 0; background: transparent; color: var(--accent); cursor: pointer; font: inherit; font-weight: 800; padding: 0; text-align: left; } .inline-link-button:hover, .inline-link-button:focus-visible { text-decoration: underline; outline: none; } .file-search-row .toggle-switch-row { margin: 0; white-space: nowrap; } .file-folder-selector { display: grid; gap: 2px; max-height: 290px; overflow-x: hidden; overflow-y: auto; scrollbar-gutter: stable; padding: 8px; border: 1px solid var(--line); border-radius: 12px; background: var(--panel-soft); } .file-folder-selector-node { display: flex; align-items: center; gap: 8px; width: 100%; min-width: 0; border: 0; border-radius: 9px; background: transparent; color: var(--text); cursor: pointer; font: inherit; font-weight: 700; padding: 8px 10px; text-align: left; } .file-folder-selector-node span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .file-folder-selector-node:hover:not(:disabled), .file-folder-selector-node:focus-visible, .file-folder-selector-node.is-selected { background: rgba(13, 110, 253, .09); outline: none; } .file-folder-selector-node.is-selected { color: var(--text-strong); box-shadow: inset 0 0 0 1px rgba(13, 110, 253, .25); } .file-folder-selector-empty { padding: 6px 10px 2px; } .file-folder-selector-children { display: grid; gap: 2px; } @media (max-width: 1050px) { .file-manager-shell { grid-template-columns: 1fr; } .file-tree-panel { max-height: 260px; border-right: 0; border-bottom: 1px solid var(--line); } .file-list-table-head { display: none; } .file-list-table { min-width: 0; } .file-list-row { grid-template-columns: 1fr; gap: 8px; } .file-search-row { grid-template-columns: 1fr; } } .file-manager-shell.is-loading .file-tree-panel, .file-manager-shell.is-loading .file-list-panel { filter: blur(1.5px); pointer-events: none; user-select: none; } .file-manager-loading-overlay { position: absolute; inset: 0; z-index: 35; display: grid; place-items: center; background: rgba(255, 255, 255, .12); backdrop-filter: blur(1px); } .file-conflict-summary { display: grid; gap: 3px; padding: 12px 14px; border: 1px solid var(--line); border-radius: 12px; background: var(--panel-soft); } .file-conflict-summary span { color: var(--muted); font-size: 13px; } .file-conflict-list { display: grid; gap: 8px; max-height: 320px; overflow: auto; } .file-conflict-row { display: grid; grid-template-columns: minmax(0, 1fr) 140px minmax(180px, 1fr); gap: 10px; align-items: center; padding: 10px; border: 1px solid var(--line); border-radius: 12px; background: var(--panel-soft); } .file-conflict-row > div { display: grid; gap: 3px; min-width: 0; } .file-conflict-row small, .file-conflict-row code { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .file-conflict-row small { color: var(--muted); } @media (max-width: 900px) { .file-conflict-row { grid-template-columns: 1fr; } } .rename-preview-panel { max-height: min(360px, 42vh); overflow-y: auto; padding-right: 4px; scrollbar-gutter: stable; } .rename-preview-more { display: block; width: 100%; border: 1px dashed var(--line-dark); border-radius: 6px; background: var(--panel-soft); color: var(--muted); cursor: pointer; font: inherit; font-weight: 800; padding: 10px 12px; text-align: left; } .rename-preview-more:hover, .rename-preview-more:focus-visible { border-color: rgba(13, 110, 253, .45); background: rgba(13, 110, 253, .08); color: var(--text-strong); outline: none; }