@charset "UTF-8";
.messaging-account-webhook { display: flex; flex-direction: row; align-content: flex-start; justify-content: space-between; align-items: center; column-gap: var(--pad-1-2); }

.messaging-account-webhook input { flex: 1; }

[data-gw="Admin.MessagingTemplatesScreen"] .smart-table > table td[data-col="description"] { max-width: 200px; }

[data-gw="Admin.MessagingTemplatesScreen"] .smart-table > table td[data-col="name"] { max-width: 300px; }

[data-gw="Admin.MessagingTemplatesScreen"] .smart-table > table td[data-col="content"] { max-width: 400px; }

[data-gw="Admin.MessagingTemplatesScreen"] .smart-table > table td[data-col="text"] { max-width: 600px; }

.thread-content-container { overflow: hidden; display: flex; flex-direction: column; position: relative; flex-grow: 1; }

.thread-content-container .title { font-size: var(--heading-4); font-weight: var(--font-weight-bolder); margin-bottom: var(--pad-2); }

.thread-content-container .thread-container { overflow: auto; flex-grow: 1; min-height: var(--pad); flex-direction: column-reverse; display: flex; }

.thread-content-container .thread-container .thread-messages { display: flex; flex-direction: column; }

.thread-content-container .thread-container.thread-divider { padding-bottom: var(--pad); border-bottom: var(--pad) dotted var(--border-default-color); margin-bottom: var(--pad-2); }

.thread-content-container .thread-container:last-child .thread-message:last-child { margin-bottom: 0; }

.thread-content-container:has(.smart-textarea) .thread-message:last-child { margin-bottom: var(--pad-2); }

.thread-content-container .message-attachments { width: 100%; margin-top: var(--pad); display: flex; flex-wrap: wrap; gap: var(--pad); }

.thread-content-container .message-attachments:empty { margin-top: 0; }

.thread-content-container .message-attachment { border: var(--input-border-width) solid var(--input-border-color); border-radius: var(--border-radius); padding: var(--pad-1-2); display: flex; align-items: center; position: relative; text-decoration: none; }

.thread-content-container .message-attachment .button-link { margin: 0; appearance: none; padding: 0; margin: 0; border: 0; border-radius: 0; background: transparent; text-align: left; cursor: pointer; display: flex; width: 100%; overflow: hidden; }

.thread-content-container .message-attachment[data-attachment-type="document"] { width: 280px; }

.thread-content-container .message-attachment[data-attachment-type="video"] .button-link { position: relative; }

.thread-content-container .message-attachment[data-attachment-type="video"] .button-link::after { content: "▶"; color: var(--panel-bg); font-size: 2rem; position: absolute; left: 0; top: 0; width: 100%; height: 100%; background: rgba(0, 0, 0, 0.2); display: flex; justify-content: center; align-items: center; opacity: .9; transition: transform .1s ease-in-out, opacity .1s linear; pointer-events: none; text-shadow: 0 0 5px rgba(0, 0, 0, 0.5); }

.thread-content-container .message-attachment[data-attachment-type="video"] .button-link:hover::after { transform: scale(1.1); opacity: 1; }

.thread-content-container .message-attachment[data-attachment-type="sticker"], .thread-content-container .message-attachment[data-attachment-type="audio"] { border: none; }

.thread-content-container .message-attachment .attachment-preview, .thread-content-container .message-attachment .attachment-sticker { max-width: 140px; max-height: 140px; }

.thread-content-container .message-attachment .attachment-sticker { width: 140px; }

.thread-content-container .message-attachment .attachment-overlay { position: absolute; left: 0; top: 0; width: 100%; height: 100%; background: rgba(0, 0, 0, 0.2); border-radius: var(--border-radius); display: flex; justify-content: center; align-items: center; }

.thread-content-container .message-attachment .attachment-icon { width: 2.5rem; height: 2.5rem; flex-shrink: 0; border-radius: var(--border-radius-sm); background-size: contain; background-color: var(--panel-bg); color: var(--primary-active); display: flex; align-items: center; justify-content: center; margin-right: var(--pad); overflow: hidden; }

.thread-content-container .message-attachment .attachment-icon > img { width: 100%; height: 100%; object-fit: cover; }

.thread-content-container .message-attachment .attachment-metadata { display: flex; flex-direction: column; justify-content: center; line-height: 1.5; overflow: hidden; white-space: nowrap; margin-right: auto; }

.thread-content-container .message-attachment .attachment-metadata .attachment-name { font-size: var(--font-size-base); font-weight: var(--font-weight-bolder); letter-spacing: 0.01em; text-overflow: ellipsis; overflow: hidden; }

.thread-content-container .message-attachment .attachment-metadata .attachment-ext { font-size: var(--font-size-sm); font-weight: 600; text-transform: uppercase; color: var(--table-muted-color); letter-spacing: 0.04em; text-overflow: ellipsis; overflow: hidden; }

.thread-content-container .message-attachment .popup-button { margin-left: var(--pad); aspect-ratio: 2 / 1.6; }

.thread-content-container .message-attachment .delete-button { position: absolute; top: -1rem; right: -1rem; margin: 0; padding: .25rem; border: 0; background: var(--error); color: var(--error-text); border-radius: 9999px; display: block; aspect-ratio: 1; margin: 0.5rem; cursor: pointer; z-index: 1; box-shadow: var(--drop-shadow-sm); user-select: none; }

.thread-content-container .message-attachment .delete-button svg { display: block; width: 0.5rem; height: 0.5rem; user-select: none; }

.thread-message { position: relative; display: flex; flex: 0 1 auto; padding: var(--pad); margin-bottom: var(--pad); transition: outline 1s ease; outline: 0px solid transparent; outline-offset: -3px; }

.thread-message.thread-message-unread { outline: 3px solid var(--primary); }

.thread-message.thread-message-received { background-color: var(--secondary-hover); border-radius: 20px 20px 20px 2px; }

.thread-message.thread-message-received .message-truncated { background-color: var(--primary-hover); color: var(--secondary-hover); }

.thread-message.thread-message-sent { background-color: var(--primary-hover); border-radius: 20px 20px 2px 20px; color: var(--primary-text); }

.thread-message.thread-message-sent .message-sent-at { color: var(--panel-bg); opacity: 0.8; }

.thread-message.thread-message-sent .message-campaign { display: block; position: absolute; top: -.675rem; right: var(--pad); background: var(--warning); border-radius: var(--border-radius-lg); padding: .125rem .675rem; font-weight: var(--font-weight-bold); box-shadow: var(--drop-shadow); max-width: 65%; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }

.thread-message.thread-message-sent .message-attachment { border-color: rgba(255, 255, 255, 0.25); }

.thread-message.thread-message-sent .message-attachment .attachment-metadata .attachment-name { color: var(--panel-bg); }

.thread-message.thread-message-sent .message-attachment .attachment-metadata .attachment-ext { color: var(--panel-bg); }

.thread-message.thread-message-sent .message-attachment button { --color: var(--panel-bg); }

.thread-message.thread-message-campaign { outline: 3px solid var(--warning); outline-offset: -3px; }

.thread-message.thread-message-template { background-color: var(--button-switcher-light-fg); color: var(--button-switcher-light-bg); }

.thread-message.thread-message-template.preview .message-header { display: none; }

.thread-message.thread-message-system { border-radius: 20px 20px 20px 20px; background-color: var(--button-switcher-fg); color: var(--button-switcher-bg); }

.thread-message.thread-message-system .message-sent-at { color: var(--button-switcher-bg); }

.thread-message.out-of-range { opacity: .7; filter: brightness(1.15) contrast(0.95); }

.thread-message:not(.out-of-range) + .out-of-range, .thread-message.out-of-range + .thread-message:not(.out-of-range) { margin-top: 4rem; }

.thread-message:not(.out-of-range) + .out-of-range::after, .thread-message.out-of-range + .thread-message:not(.out-of-range)::after { content: ''; position: absolute; top: -2.75rem; left: 0; width: 100%; border-top: var(--pad) dotted var(--table-muted-color); }

.thread-message.out-of-range + .thread-message:not(.out-of-range)::after { opacity: .7; filter: brightness(1.15) contrast(0.95); }

.thread-message.updated .message-status button { animation: wobble-slide-from-right .875s ease-out 1; }

.thread-message .contact-icon { width: var(--pad-2); height: var(--pad-2); flex-shrink: 0; border-radius: var(--pad-2); background-color: var(--panel-bg); display: flex; align-items: center; justify-content: center; box-shadow: var(--drop-shadow); margin-right: var(--pad); color: var(--primary-active); }

.thread-message .contact-icon .icon { width: 0.875rem; height: 0.875rem; }

.thread-message .thread-content { flex-grow: 1; }

.thread-message .message-header { display: flex; margin-bottom: var(--pad-1-2); font-size: var(--font-size-base); min-height: 1.5rem; align-items: center; }

.thread-message .message-from { font-weight: var(--font-weight-bolder); margin-right: var(--pad); }

.thread-message .message-sent-at { color: var(--table-muted-color); }

.thread-message .message-truncated { margin-left: auto; color: var(--table-muted-color); cursor: help; background: var(--secondary-hover); border-radius: var(--border-radius-lg); padding: .125rem .5rem; font-weight: var(--font-weight-bolder); box-shadow: var(--drop-shadow); }

.thread-message .message-status { position: absolute; right: var(--pad-1-2); bottom: var(--pad-1-2); display: flex; align-items: center; gap: var(--pad-1-2); }

.thread-message .message-status .icon-wrapper { z-index: 0; display: block; border-radius: 9999px; width: 1.25rem; height: 1.25rem; aspect-ratio: 1; padding: var(--pad-1-4); }

.thread-message .message-status .icon-wrapper > .icon { display: block; width: 0.875rem; height: 0.875rem; }

.thread-message .message-status.error .icon-wrapper { background-color: var(--panel-bg); }

.thread-message .message-status.error .icon-wrapper > .icon { color: var(--primary-hover); }

.thread-message .message-text, .thread-message .message-error, .thread-message .message-template { white-space: pre-wrap; word-break: break-word; }

.thread-message .message-error { color: var(--error); }

.thread-message .message-template { display: flex; flex-direction: column; align-items: flex-start; font-size: var(--font-size-base); line-height: 1.475; }

.thread-message .message-template .template-component-unknown { color: var(--error); }

.thread-message .message-template .template-component-image { display: block; width: auto; height: auto; }

.thread-message .message-template .template-component-image + * { margin-top: var(--pad); }

.thread-message .message-template .template-component-header { font-size: var(--font-size-lg); margin-bottom: var(--pad-1-2); font-weight: var(--font-weight-bolder); }

.thread-message .message-template .template-component-body { padding-right: var(--pad-1-2); }

.thread-message .message-template .template-component-footer { font-size: var(--font-size-sm); color: var(--border-default-color); margin-top: var(--pad); padding-right: var(--pad); opacity: 0.75; }

.thread-message .message-template .template-component-buttons { margin-top: var(--pad); display: flex; flex-wrap: wrap; border-top: var(--border-default-width) solid var(--border-default-color); padding-top: var(--pad); }

.thread-message .message-template .template-component-buttons:empty { display: none; }

.messaging-template-dialog .admin-dialog { min-width: auto; }

.messaging-template-dialog .messaging-template-container { display: grid; grid-template-columns: 375px 375px; row-gap: var(--pad-2); }

.messaging-template-dialog .messaging-template-container .form-buttons { grid-column: span 2; }

.messaging-template-dialog .messaging-template-container:has(.messaging-template-parameters-fields:empty) { grid-template-columns: 375px; column-gap: 0; }

.messaging-template-dialog .messaging-template-container:has(.messaging-template-parameters-fields:empty) .messaging-template-preview { margin-bottom: var(--pad); }

.messaging-template-dialog .messaging-template-container:has(.messaging-template-parameters-fields:empty) .form-buttons { grid-column: span 1; }

.messaging-template-dialog .messaging-template-header, .messaging-template-dialog .messaging-template-body { margin-bottom: var(--pad-2); }

.messaging-template-dialog .messaging-template-header:last-child, .messaging-template-dialog .messaging-template-body:last-child { margin-bottom: 0; }

.messaging-template-dialog .messaging-template-header h5, .messaging-template-dialog .messaging-template-body h5 { margin-bottom: var(--pad); }

.messaging-template-dialog .messaging-template-header .form-field, .messaging-template-dialog .messaging-template-body .form-field { margin-bottom: var(--pad); }

.messaging-template-dialog .messaging-template-header .form-field:last-child, .messaging-template-dialog .messaging-template-body .form-field:last-child { margin-bottom: 0; }

.messaging-template-dialog .messaging-template-header img { max-width: 160px; max-height: 160px; width: auto; height: auto; object-fit: contain; outline: 4px dashed var(--border-default-color); margin: var(--pad-2) auto; }

.messaging-template-dialog .messaging-template-parameters-fields { margin-left: var(--pad-2); padding-left: var(--pad-2); border-left: var(--border-default-width) solid var(--border-default-color); max-height: 62vh; overflow: auto; }

.messaging-template-dialog .messaging-template-parameters-fields:empty { display: none; }

.messaging-template-dialog .messaging-template-preview .thread-message { margin-bottom: 0; box-shadow: var(--drop-shadow-lg); }

.messaging-template-select { float: right; margin-bottom: var(--pad); }

.messaging-template-select + label { font-weight: var(--font-weight-bolder); padding-top: var(--pad-1-2); margin-bottom: var(--pad-1-2); }

.form-field .messaging-template-select.select-input { width: auto; }

.option.messaging-template-option { padding: var(--pad-1-2) var(--pad); margin: var(--pad-1-2) var(--pad); max-width: 480px; display: flex; flex-direction: column; align-items: flex-start; border-radius: var(--border-radius-sm); background-color: var(--table-alternation-bg); line-height: 21px; letter-spacing: 0.01em; }

.option.messaging-template-option:first-child { margin-top: 0; }

.option.messaging-template-option:last-child { margin-bottom: 0; }

.option.messaging-template-option .messaging-template-name { font-weight: var(--font-weight-bolder); margin-bottom: 2px; }

.option.messaging-template-option .messaging-template-text { font-weight: var(--font-weight-normal); color: var(--body-fg) !important; overflow: hidden; text-overflow: ellipsis; max-height: 2.9rem; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; }

[data-gw="Office.MesagingSendDialog"] { border-radius: var(--border-radius); }

[data-gw="Office.MesagingSendDialog"] .admin-dialog { width: 100%; height: 100%; max-height: 100%; padding: 0; box-shadow: none; border-radius: 0; overscroll-behavior: none; }

[data-gw="Office.MesagingSendDialog"] .admin-dialog > .header > h1 { padding-bottom: var(--pad); }

[data-gw="Office.MesagingSendDialog"] .admin-dialog > .header .close { margin-right: 0; }

[data-gw="Office.MesagingSendDialog"] .admin-dialog > .body { flex-grow: 1; }

.messages-pane { display: flex; flex-direction: row; gap: var(--pad); overflow: auto; margin-top: var(--pad); flex-grow: 1; }

.messages-pane .pane-contacts { position: relative; width: 260px; min-width: 260px; max-width: 50%; display: flex; flex-direction: column; overflow: auto; border-right: 1px solid var(--border-default-color); padding-top: var(--pad-1-2); }

.messages-pane .pane-contacts .contacts-list { display: flex; flex-direction: column; gap: .5rem; padding-right: 1.25rem; }

.messages-pane .pane-contacts .contact { cursor: pointer; background-color: var(--body-bg); color: var(--body-fg); border-radius: var(--border-radius); padding: var(--pad-1-2) var(--pad); font-size: var(--font-size-base); transition: color var(--transition-time), opacity var(--transition-time); position: relative; opacity: 0.85; }

.messages-pane .pane-contacts .contact:has(.contact-account:not(:empty)) { padding-top: 1.25rem; margin-top: var(--pad-1-2); }

.messages-pane .pane-contacts .contact.has-unread { opacity: 1; }

.messages-pane .pane-contacts .contact.has-unread .contact-peer { font-weight: var(--font-weight-bolder); letter-spacing: 0; }

.messages-pane .pane-contacts .contact .contact-account { font-weight: var(--font-weight-bolder); background-color: var(--primary-hover); color: var(--primary-hover-text); font-size: var(--font-size-sm); padding: .125rem .5rem; border-radius: var(--border-radius-lg); position: absolute; top: calc(var(--pad-1-2)* -1); left: var(--pad-1-4); max-width: calc(100% - 1.75rem); width: fit-content; white-space: nowrap; text-overflow: ellipsis; overflow: hidden; box-shadow: var(--drop-shadow-sm); }

.messages-pane .pane-contacts .contact .contact-account:empty { display: none; }

.messages-pane .pane-contacts .contact .contact-peer { font-weight: var(--font-weight-bold); letter-spacing: 0.275px; max-width: 55%; overflow: hidden; text-overflow: ellipsis; line-height: 1; }

.messages-pane .pane-contacts .contact .contact-last-message { color: var(--table-muted-color); font-size: var(--font-size-sm); text-align: right; transition: color var(--transition-time); line-height: 1; }

.messages-pane .pane-contacts .contact .contact-name { font-weight: var(--font-weight-bold); text-overflow: ellipsis; white-space: nowrap; overflow: hidden; margin-top: var(--pad-1-4); width: max-content; max-width: 100%; }

.messages-pane .pane-contacts .contact .contact-name:empty { margin-top: 0; }

.messages-pane .pane-contacts .contact .contact-unread-count { position: absolute; top: calc(var(--pad-1-2) * -1); right: calc(var(--pad-1-2) * -1); display: flex; align-items: center; justify-content: center; text-align: center; background: var(--error); color: var(--error-text); font-weight: var(--font-weight-bolder); font-size: var(--font-size-xs); margin-left: 4px; margin-right: -2px; border-radius: 1rem; min-width: 1rem; min-height: 1rem; padding: 0 4px; box-shadow: var(--drop-shadow-sm); letter-spacing: 0.2px; line-height: 1; }

.messages-pane .pane-contacts .contact:hover { color: var(--primary); }

.messages-pane .pane-contacts .contact:hover .contact-last-message { color: var(--primary); }

.messages-pane .pane-contacts .contact.selected { opacity: 1; color: var(--panel-bg); background-color: var(--primary-hover); }

.messages-pane .pane-contacts .contact.selected .contact-account { background-color: var(--primary); }

.messages-pane .pane-contacts .contact.selected .contact-last-message { color: var(--panel-bg); }

.messages-pane .pane-messages { display: flex; flex-direction: column; flex: 1; overflow: auto; }

.messages-pane .thread-content-container { overflow: hidden; display: flex; flex-direction: column; position: relative; max-height: 100%; flex-shrink: 1; }

.messages-pane .thread-container { overflow: auto; }

.messages-pane .smart-textarea { padding: .5rem .5rem .5rem 1.25rem; margin-top: calc( -1 * var(--pad)); width: auto; }

.messages-pane .smart-textarea.expanded { padding-top: 1rem; }

.messages-pane .smart-textarea .message-attachment { max-width: 280px; padding-right: var(--pad); cursor: default; }

.messages-pane .smart-textarea .message-attachment .attachment-icon { outline: 1px solid var(--border-default-color); }

[data-cardtype="Office.MessagingPanel"] { overflow: hidden !important; }

[data-gw="Office.MessagingPanel"] { --tab-switcher-item-margin-x: 10px; transition: transform .125s ease-out, box-shadow .125s ease-out; box-shadow: 0 0 0 transparent; }

[data-gw="Office.MessagingPanel"].fullsize { position: absolute; top: calc( 70px + var(--body-padding)); left: var(--pad); right: var(--pad); height: calc(100vh - 120px); box-shadow: var(--drop-shadow-lg); animation-name: padding-in; animation-duration: .25s; animation-iteration-count: 1; animation-timing-function: ease; }

[data-gw="Office.MessagingPanel"].reduced { animation-name: scale-out; animation-duration: .25s; animation-iteration-count: 1; animation-timing-function: ease; }

[data-gw="Office.MessagingPanel"] .header { display: flex; }

[data-gw="Office.MessagingPanel"] .header .tab-switcher { margin-bottom: 0; flex-shrink: 1; flex-basis: calc(100% - 2rem - var(--panel-padding)); }

[data-gw="Office.MessagingPanel"] .header .tab-switcher .tab { padding-bottom: var(--pad); }

[data-gw="Office.MessagingPanel"] .header .tab-switcher .tab .title { font-size: var(--font-size-base); }

[data-gw="Office.MessagingPanel"] > :not([data-cardid="messages-archive"]) .pane-contacts:has(.contacts-list.empty) { display: none; }

[data-gw="Office.MessagingPanel"] > :not([data-cardid="messages-archive"]) .pane-contacts:has(.contacts-list.empty) + .drag-handle { display: none; }

[data-gw="Office.MessagingPanel"] .messages-container { display: flex; flex-direction: column; height: 100%; }

[data-gw="Office.MessagingPanel"] .messages-container .header { margin-top: var(--pad); display: flex; column-gap: 10px; align-items: flex-end; }

[data-gw="Office.MessagingPanel"] .messages-container .header .title { margin-top: 1rem; margin-bottom: 0; }

[data-gw="Office.MessagingPanel"] .messages-container .header .form-field { margin-bottom: 0; }

[data-gw="Office.MessagingPanel"] .messages-container .smart-table { flex-grow: 1; overflow: auto; }

[data-gw="Office.MessagingPanel"] .smart-table { margin-top: var(--pad); }

[data-gw="Office.MessagingPanel"] .smart-table th, [data-gw="Office.MessagingPanel"] .smart-table td { white-space: nowrap; }

[data-gw="Office.MessagingPanel"] .smart-table td[data-col="peer"] .contact { display: inline-block; vertical-align: middle; margin-left: var(--pad); }

[data-gw="Office.MessagingPanel"] .smart-table td[data-col="peer"] .contact .contact-number { font-weight: bold; }

[data-gw="Office.MessagingPanel"] .smart-table th[data-col="text"], [data-gw="Office.MessagingPanel"] .smart-table td[data-col="text"] { overflow: hidden; text-overflow: ellipsis; max-width: 700px; width: 100%; }

[data-gw="Office.MessagingPanel"] .smart-table tr.not-read td { font-weight: bold; }

[data-gw="Office.MessagingPanel"] .smart-table tr.not-sent td { color: var(--table-muted-color); }

.smart-textarea > .textarea-toolbar .messaging-template-select { margin-bottom: 0; }

[data-gw="Office.MessagingBulkSendDialog"] .file-handle { display: flex; align-items: center; background-color: var(--body-bg); border-radius: var(--border-radius); margin-top: var(--pad-1-2); padding: var(--pad); }

[data-gw="Office.MessagingBulkSendDialog"] .file-handle:empty { display: none; }

[data-gw="Office.MessagingBulkSendDialog"] .file-handle .name { max-width: 100%; overflow: hidden; text-overflow: ellipsis; font-size: var(--font-size-base); font-weight: var(--font-weight-bold); padding-left: 6px; }

[data-gw="Office.MessagingBulkSendDialog"] .file-handle .file-handle-button { margin-left: auto; border: 0; cursor: pointer; border-radius: 20px; width: 20px; height: 20px; position: relative; background-color: var(--success); background-repeat: no-repeat; }

[data-gw="Office.MessagingBulkSendDialog"] .file-handle .file-handle-button::before { position: absolute; pointer-events: none; content: ''; top: 0; right: 0; bottom: 0; left: 0; background: white; -webkit-mask: url("/icons/check.svg") center center / 15.6px 15.6px no-repeat; mask: url("/icons/check.svg") center center / 15.6px 15.6px no-repeat; }

[data-gw="Office.MessagingBulkSendDialog"] .file-handle .file-handle-button:hover { background-color: transparent; position: relative; }

[data-gw="Office.MessagingBulkSendDialog"] .file-handle .file-handle-button:hover::before { position: absolute; pointer-events: none; content: ''; top: 0; right: 0; bottom: 0; left: 0; background: black; -webkit-mask: url("/icons/cross.svg") center center / 19.2px 19.2px no-repeat; mask: url("/icons/cross.svg") center center / 19.2px 19.2px no-repeat; }

[data-gw="Office.MessagingBulkSendDialog"] .file-handle + .form-buttons { margin-top: var(--pad-2); }

[data-gw="Office.ContactsList"] td[data-col="ctl"] [data-action="message"] { position: relative; }

[data-gw="Office.ContactsList"] td[data-col="ctl"] [data-action="message"]::before { position: absolute; pointer-events: none; content: ''; top: 0; right: 0; bottom: 0; left: 0; background: var(--success-text); -webkit-mask: url("/icons/commentroundedfilled.svg") center center / 16px 16px no-repeat; mask: url("/icons/commentroundedfilled.svg") center center / 16px 16px no-repeat; }

/*# sourceMappingURL=style.css.map */