:root {
  --tjf-navy: #071a2b;
  --tjf-teal: #19b6b2;
  --tjf-teal-strong: #119894;
}

/* Keep TJF identity visible without changing the underlying client behaviour. */
.mx_AuthPage,
.mx_AuthBody {
  background-color: var(--tjf-navy);
}

.mx_AuthHeaderLogo img {
  max-width: min(280px, 68vw);
  max-height: 84px;
}

/* The deployment is fixed to TJF Connect's server; do not surface engine details. */
.mx_ServerPicker {
  display: none;
}

.mx_AccessibleButton_kind_primary,
.mx_AccessibleButton_kind_primary_outline {
  --cpd-color-bg-action-primary-rest: var(--tjf-teal);
  --cpd-color-bg-action-primary-hovered: var(--tjf-teal-strong);
}

.tjf-status-space-item svg {
  width: 24px;
  height: 24px;
}

@media (max-width: 767px) {
  .mx_AuthPage {
    align-items: stretch;
    min-height: 100dvh;
  }

  .mx_AuthPage::before {
    content: "";
    position: fixed;
    z-index: 10000;
    top: max(18px, env(safe-area-inset-top));
    left: 20px;
    width: 190px;
    height: 52px;
    background: url("/branding/logo.svg") no-repeat left center / contain;
    pointer-events: none;
  }

  .mx_AuthPage_modal,
  .mx_AuthPage_modalContent,
  .mx_AuthBody {
    width: 100%;
    max-width: none;
    margin: 0;
    border-radius: 0;
  }

  .mx_AuthPage_modalContent {
    flex: 1 1 100%;
    min-width: 0;
  }

  .mx_AuthBody {
    min-height: 100dvh;
    flex: 1 1 100%;
    box-sizing: border-box;
    min-width: 0;
    width: 100%;
    max-width: none;
    padding: max(92px, calc(env(safe-area-inset-top) + 76px)) 20px max(24px, env(safe-area-inset-bottom));
  }

  .mx_AuthHeader {
    display: none;
  }

  .mx_LeftPanel,
  .mx_RoomView {
    min-height: 100dvh;
  }

  .mx_MessageComposer_wrapper {
    padding-bottom: env(safe-area-inset-bottom);
  }

  .mx_Dialog {
    width: 100%;
    min-width: 0;
    max-width: 100%;
    max-height: 100%;
    padding: 24px 16px;
  }

  /* Keep every modal inside the visual viewport, including verification. */
  .mx_Dialog_wrapper {
    box-sizing: border-box;
    align-items: center;
    padding:
      max(12px, env(safe-area-inset-top))
      max(12px, env(safe-area-inset-right))
      max(12px, env(safe-area-inset-bottom))
      max(12px, env(safe-area-inset-left));
  }

  .mx_Dialog_border {
    width: 100%;
    min-width: 0;
    max-width: 100%;
    max-height: 100%;
  }

  .mx_Dialog_content {
    min-width: 0;
    margin: 12px 0 24px;
    overflow-wrap: anywhere;
  }

  .mx_Dialog .mx_VerificationPanel_QRPhase_startOptions {
    flex-direction: column;
    align-items: stretch;
  }

  .mx_Dialog .mx_VerificationPanel_QRPhase_startOptions > .mx_VerificationPanel_QRPhase_betweenText {
    width: auto;
    min-height: 40px;
  }

  .mx_Dialog .mx_VerificationPanel_QRPhase_startOptions .mx_VerificationPanel_QRPhase_startOption {
    box-sizing: border-box;
    width: 100%;
    max-width: none;
    padding: 16px;
  }

  .mx_Dialog .mx_VerificationPanel_QRPhase_startOptions .mx_VerificationPanel_QRPhase_startOption canvas,
  .mx_Dialog .mx_VerificationPanel_QRPhase_startOptions .mx_VerificationPanel_QRPhase_startOption .mx_VerificationPanel_QRPhase_noQR {
    width: min(220px, 100%) !important;
    height: auto !important;
    aspect-ratio: 1;
  }

  /* Incoming verification requests are toasts, not dialogs. */
  .mx_ToastContainer {
    position: fixed;
    top: max(8px, env(safe-area-inset-top));
    right: max(8px, env(safe-area-inset-right));
    left: max(8px, env(safe-area-inset-left));
    width: auto;
    max-width: none;
  }

  .mx_ToastContainer .mx_Toast_toast {
    box-sizing: border-box;
    width: 100%;
    min-width: 0;
    max-width: 100%;
    padding: 16px;
  }

  .mx_ToastContainer .mx_Toast_title,
  .mx_ToastContainer .mx_Toast_title h2,
  .mx_ToastContainer .mx_Toast_body {
    min-width: 0;
    overflow-wrap: anywhere;
  }

  .mx_ToastContainer .mx_Toast_buttons {
    flex-wrap: wrap;
    row-gap: 8px;
  }

  .mx_ToastContainer .mx_Toast_buttons .mx_AccessibleButton {
    flex: 1 1 132px;
    min-width: 0;
  }
}

@media (min-width: 768px) and (max-width: 1180px) {
  .mx_LeftPanel {
    max-width: 320px;
  }

  .mx_RightPanel {
    max-width: 360px;
  }
}

@media (prefers-reduced-motion: reduce) {
  .tjf-startup-bar::after {
    animation-duration: 2.4s;
  }
}
/* TJF Connect uses one fixed backend; do not expose the engine hostname in authentication UI. */
.mx_ServerPicker {
  display: none !important;
}





/* =========================================================
   TJF SOURCE MOBILE CSS V1
   React now controls mobile pane selection.
   ========================================================= */

@media (max-width: 767px) {

    .mx_TjfMobileList,
    .mx_TjfMobileRoom {
        position: relative;

        display: flex;
        flex: 1 1 auto;

        width: 100%;
        max-width: 100%;
        min-width: 0;

        height: 100%;
        min-height: 0;

        overflow: hidden;
    }

    .mx_TjfMobileList .mx_LeftPanel_outerWrapper {
        display: flex;

        width: 100%;
        max-width: none;
        min-width: 0;

        height: 100%;
    }

    .mx_TjfMobileList .mx_LeftPanel_wrapper,
    .mx_TjfMobileList .mx_LeftPanel_wrapper--user,
    .mx_TjfMobileList .mx_LeftPanel,
    .mx_TjfMobileList .mx_LeftPanel_roomListContainer,
    .mx_TjfMobileList .mx_RoomListPanel {
        width: 100%;
        max-width: 100%;
        min-width: 0;
    }

    .mx_TjfMobileRoom .mx_RoomView_wrapper,
    .mx_TjfMobileRoom .mx_RoomView {
        width: 100%;
        max-width: 100%;
        min-width: 0;

        height: 100%;
        min-height: 0;
    }

    .mx_TjfMobileChatsButton {
        position: absolute;

        top: max(8px, env(safe-area-inset-top));
        left: max(6px, env(safe-area-inset-left));

        z-index: 1000;

        height: 40px;

        padding: 0 10px;

        border: 0;
        border-radius: 9px;

        background: rgba(7, 26, 43, .94);
        color: #fff;

        font: inherit;
        font-size: 14px;
        font-weight: 700;

        cursor: pointer;
    }

    .mx_TjfMobileRoom .mx_RoomHeader {
        padding-left: 78px;
    }

    .mx_TjfMobileRoom .mx_MessageComposer_wrapper {
        padding-bottom:
            max(6px, env(safe-area-inset-bottom));
    }
}

/* TJF MOBILE SIZE V1 START */

@media (max-width: 767px) {

    /*
     * BASE MOBILE TYPOGRAPHY
     */
    .mx_TjfMobileList,
    .mx_TjfMobileRoom {
        font-size: 16px !important;
        line-height: 1.45 !important;
    }


    /*
     * CHAT / ROOM LIST
     */
    .mx_TjfMobileList .mx_RoomListItemView {
        min-height: 68px !important;
        padding-top: 7px !important;
        padding-bottom: 7px !important;
    }

    .mx_TjfMobileList .mx_RoomListItemView_name,
    .mx_TjfMobileList [class*="RoomListItemView_name"] {
        font-size: 17px !important;
        line-height: 22px !important;
        font-weight: 600 !important;
    }

    .mx_TjfMobileList [class*="RoomListItemView_message"],
    .mx_TjfMobileList [class*="RoomListItemView_preview"],
    .mx_TjfMobileList [class*="RoomListItemView_timestamp"] {
        font-size: 14px !important;
        line-height: 19px !important;
    }

    .mx_TjfMobileList .mx_RoomListItemView_avatar {
        transform: scale(1.08);
        transform-origin: center;
    }


    /*
     * MOBILE CHAT BACK BUTTON
     */
    .mx_TjfMobileChatsButton {
        min-height: 44px !important;
        min-width: 76px !important;
        padding: 8px 12px !important;
        font-size: 16px !important;
        font-weight: 600 !important;
        line-height: 20px !important;
    }


    /*
     * ROOM HEADER
     */
    .mx_TjfMobileRoom .mx_RoomHeader,
    .mx_TjfMobileRoom [class*="RoomHeader"] {
        min-height: 58px;
    }

    .mx_TjfMobileRoom .mx_RoomHeader_name,
    .mx_TjfMobileRoom [class*="RoomHeader_name"] {
        font-size: 18px !important;
        line-height: 23px !important;
        font-weight: 600 !important;
    }

    .mx_TjfMobileRoom .mx_RoomHeader button,
    .mx_TjfMobileRoom [class*="RoomHeader"] button {
        min-width: 44px !important;
        min-height: 44px !important;
    }


    /*
     * MESSAGE TEXT
     */
    .mx_TjfMobileRoom .mx_EventTile_body,
    .mx_TjfMobileRoom .mx_MTextBody,
    .mx_TjfMobileRoom .mx_EventTile_content {
        font-size: 16px !important;
        line-height: 1.5 !important;
    }

    .mx_TjfMobileRoom .mx_EventTile_senderDetails,
    .mx_TjfMobileRoom .mx_DisambiguatedProfile_displayName {
        font-size: 14px !important;
    }

    .mx_TjfMobileRoom .mx_MessageTimestamp {
        font-size: 12px !important;
    }

    .mx_TjfMobileRoom .mx_EventTile {
        margin-bottom: 3px;
    }


    /*
     * MESSAGE COMPOSER
     */
    .mx_TjfMobileRoom .mx_MessageComposer,
    .mx_TjfMobileRoom [class*="MessageComposer"] {
        min-height: 60px !important;
    }

    .mx_TjfMobileRoom .mx_BasicMessageComposer,
    .mx_TjfMobileRoom [class*="BasicMessageComposer"] {
        min-height: 48px !important;
        font-size: 16px !important;
    }

    .mx_TjfMobileRoom textarea,
    .mx_TjfMobileRoom [contenteditable="true"] {
        font-size: 16px !important;
        line-height: 22px !important;
    }

    .mx_TjfMobileRoom .mx_MessageComposer button,
    .mx_TjfMobileRoom [class*="MessageComposer"] button {
        min-width: 44px !important;
        min-height: 44px !important;
    }


    /*
     * MENUS AND DIALOG CONTROLS
     */
    .mx_TjfMobileRoom [role="menuitem"],
    .mx_TjfMobileList [role="menuitem"] {
        min-height: 44px !important;
        font-size: 16px !important;
    }

    .mx_TjfMobileRoom input,
    .mx_TjfMobileList input,
    .mx_TjfMobileRoom select,
    .mx_TjfMobileList select {
        min-height: 44px !important;
        font-size: 16px !important;
    }


    /*
     * IMPROVE GENERAL MOBILE TAP TARGETS
     */
    .mx_TjfMobileList button {
        min-height: 40px;
    }
}

/* TJF MOBILE SIZE V1 END */

/* TJF REGISTRATION ASSIST V1 START */

.mx_TjfRegistrationAssist {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 8px 12px;
    margin: -2px 0 14px;
}

.mx_TjfRegistrationAssistButton {
    min-height: 40px;
    padding: 8px 12px;
    border: 1px solid currentColor;
    border-radius: 8px;
    background: transparent;
    color: inherit;
    font: inherit;
    font-weight: 600;
    cursor: pointer;
}

.mx_TjfRegistrationAssistButton:disabled {
    opacity: 0.6;
    cursor: wait;
}

.mx_TjfRegistrationAssistMessage {
    flex: 1 1 190px;
    font-size: 13px;
    line-height: 1.4;
    opacity: 0.82;
}

@media (max-width: 767px) {
    .mx_TjfRegistrationAssist {
        align-items: stretch;
        flex-direction: column;
        margin-bottom: 16px;
    }

    .mx_TjfRegistrationAssistButton {
        min-height: 44px;
        width: 100%;
        font-size: 15px;
    }

    .mx_TjfRegistrationAssistMessage {
        flex: none;
        font-size: 14px;
    }
}

/* TJF REGISTRATION ASSIST V1 END */

/* TJF MOBILE HEADER V2 START */

@media (max-width: 767px) {

    /*
     * Main mobile room remains a vertical layout.
     */
    .mx_TjfMobileRoom {
        display: flex !important;
        flex-direction: column !important;
        width: 100% !important;
        height: 100% !important;
        min-width: 0 !important;
        min-height: 0 !important;
        overflow: hidden !important;
    }

    /*
     * TJF mobile navigation row:
     * Chats on left, profile/avatar on right.
     */
    .mx_TjfMobileNavBar {
        display: flex !important;
        align-items: center !important;
        justify-content: space-between !important;
        flex: 0 0 auto !important;
        width: 100% !important;
        min-height: 56px !important;
        padding: 6px 10px !important;
        box-sizing: border-box !important;
        position: relative !important;
        z-index: 30 !important;
    }

    .mx_TjfMobileChatsButton {
        position: relative !important;
        width: auto !important;
        min-width: 92px !important;
        min-height: 44px !important;
        margin: 0 !important;
        padding: 8px 12px !important;
        flex: 0 0 auto !important;
        font-size: 16px !important;
        line-height: 20px !important;
    }


    /*
     * Restore Element's own UserMenu/profile.
     *
     * SpacePanel is reused only as the host for UserMenu.
     * All the normal desktop space controls are hidden here.
     */
    .mx_TjfMobileProfile {
        display: flex !important;
        align-items: center !important;
        justify-content: center !important;
        flex: 0 0 48px !important;
        width: 48px !important;
        height: 48px !important;
        overflow: visible !important;
        position: relative !important;
        z-index: 40 !important;
    }

    .mx_TjfMobileProfile .mx_SpacePanel {
        display: flex !important;
        align-items: center !important;
        justify-content: center !important;

        position: relative !important;

        width: 48px !important;
        min-width: 48px !important;
        max-width: 48px !important;

        height: 48px !important;
        min-height: 48px !important;

        padding: 0 !important;
        margin: 0 !important;

        border: 0 !important;
        background: transparent !important;
        overflow: visible !important;
    }

    /*
     * Inside this special mobile SpacePanel,
     * keep only the native Element UserMenu.
     */
    .mx_TjfMobileProfile .mx_SpacePanel > :not(.mx_UserMenu) {
        display: none !important;
    }

    .mx_TjfMobileProfile .mx_UserMenu {
        display: flex !important;
        align-items: center !important;
        justify-content: center !important;

        width: 44px !important;
        min-width: 44px !important;
        max-width: 44px !important;

        height: 44px !important;
        min-height: 44px !important;

        margin: 0 !important;
        padding: 0 !important;

        overflow: visible !important;
    }


    /*
     * STATUS ROOM:
     *
     * Hide only the word "Status".
     * Its public/globe icon remains visible.
     */
    .mx_TjfMobileRoom .mx_TjfStatusRoomName {
        display: none !important;
    }

    /*
     * Do not allow the remaining Status heading/globe
     * to consume unnecessary horizontal space.
     */
    .mx_TjfMobileRoom
    .mx_RoomHeader_heading:has(.mx_TjfStatusRoomName) {
        width: auto !important;
        min-width: 22px !important;
        flex: 0 0 auto !important;
    }


    /*
     * Room itself fills remaining height below TJF nav.
     */
    .mx_TjfMobileRoom > .mx_RoomView_wrapper {
        display: flex !important;
        flex: 1 1 auto !important;
        width: 100% !important;
        min-width: 0 !important;
        min-height: 0 !important;
        overflow: hidden !important;
    }
}

/* TJF MOBILE HEADER V2 END */

/* TJF VERIFICATION BRANDING V1 START */

.mx_TjfSelfVerification {
    display: flex;
    flex-direction: column;
    gap: 14px;
}

.mx_TjfSelfVerification_title {
    margin: 0;
    font-size: 18px;
    font-weight: 650;
}

.mx_TjfSelfVerification_note,
.mx_TjfVerificationWaiting {
    line-height: 1.5;
}

.mx_TjfSelfVerification_note {
    font-size: 13px;
    opacity: 0.78;
}

.mx_TjfAuthFooter {
    display: flex !important;
    flex-direction: column !important;
    align-items: center !important;
    justify-content: center !important;
    gap: 4px !important;
    text-align: center !important;
    padding: 14px 16px 18px !important;
}

.mx_TjfAuthFooter_brand {
    font-size: 14px;
    line-height: 1.4;
}

.mx_TjfAuthFooter_brand strong {
    font-weight: 700;
}

.mx_TjfAuthFooter_copyright {
    font-size: 12px;
    line-height: 1.4;
    opacity: 0.78;
}

.mx_TjfAuthFooter_links {
    margin-top: 3px;
    font-size: 12px;
}

@media (max-width: 767px) {
    .mx_TjfSelfVerification_title {
        font-size: 17px;
    }

    .mx_TjfSelfVerification button {
        min-height: 44px;
        font-size: 15px;
    }

    .mx_TjfAuthFooter {
        padding: 12px 14px 16px !important;
    }
}

/* TJF VERIFICATION BRANDING V1 END */

/* TJF MOBILE ROOM TITLE V2 START */

@media (max-width: 767px) {

    /*
     * IMPORTANT:
     * RoomHeader_infoWrapper is the room TITLE button.
     * Do not size it like the icon buttons.
     */
    .mx_TjfMobileRoom
    .mx_RoomHeader
    .mx_RoomHeader_infoWrapper {
        display: flex !important;
        flex: 1 1 auto !important;

        width: auto !important;
        min-width: 0 !important;
        max-width: none !important;

        height: auto !important;
        min-height: 40px !important;

        padding-left: 0 !important;
        padding-right: 0 !important;

        overflow: hidden !important;
    }

    .mx_TjfMobileRoom
    .mx_RoomHeader
    .mx_RoomHeader_info {
        display: flex !important;
        flex: 1 1 auto !important;
        min-width: 0 !important;
        overflow: hidden !important;
    }

    .mx_TjfMobileRoom
    .mx_RoomHeader
    .mx_RoomHeader_heading {
        display: flex !important;
        align-items: center !important;
        gap: 4px !important;

        flex: 1 1 auto !important;
        min-width: 0 !important;

        white-space: nowrap !important;
        overflow: hidden !important;
    }

    /*
     * Normal chat names stay on ONE line.
     */
    .mx_TjfMobileRoom
    .mx_RoomHeader
    .mx_RoomHeader_truncated:not(.mx_TjfStatusRoomName) {
        display: block !important;

        min-width: 0 !important;
        max-width: 100% !important;

        white-space: nowrap !important;
        overflow: hidden !important;
        text-overflow: ellipsis !important;

        word-break: normal !important;
        overflow-wrap: normal !important;
    }

    /*
     * Keep Status behaviour:
     * hide the word Status while retaining the globe.
     */
    .mx_TjfMobileRoom
    .mx_TjfStatusRoomName {
        display: none !important;
    }
}


/*
 * Extra compact sizing for narrow phones.
 */
@media (max-width: 360px) {

    .mx_TjfMobileRoom .mx_RoomHeader {
        gap: 6px !important;
    }

    /*
     * Only actual ACTION buttons are compact.
     * Never shrink the room title button.
     */
    .mx_TjfMobileRoom
    .mx_RoomHeader
    button:not(.mx_RoomHeader_infoWrapper) {
        flex: 0 0 34px !important;

        width: 34px !important;
        min-width: 34px !important;
        max-width: 34px !important;

        height: 36px !important;
        min-height: 36px !important;

        padding: 5px !important;
    }

    .mx_TjfMobileRoom
    .mx_RoomHeader
    button:not(.mx_RoomHeader_infoWrapper) svg {
        width: 22px !important;
        height: 22px !important;
    }

    .mx_TjfMobileRoom
    .mx_RoomHeader_heading {
        font-size: 17px !important;
    }
}

/* TJF MOBILE ROOM TITLE V2 END */

/* TJF VERIFICATION GUIDANCE V1 START */

.mx_TjfVerificationGuidance {
    width: 100%;
}

.mx_TjfVerificationGuidance_intro {
    margin: 0 0 12px;
    line-height: 1.5;
}

.mx_TjfVerificationGuidance_box,
.mx_TjfEmojiInstructions {
    box-sizing: border-box;
    width: 100%;
    margin: 10px 0;
    padding: 14px 16px;
    border: 1px solid currentColor;
    border-radius: 10px;
}

.mx_TjfVerificationGuidance_box > strong,
.mx_TjfEmojiInstructions > strong {
    display: block;
    margin-bottom: 8px;
    font-size: 15px;
}

.mx_TjfVerificationGuidance ol,
.mx_TjfEmojiInstructions ol {
    margin: 8px 0 10px;
    padding-left: 22px;
}

.mx_TjfVerificationGuidance li,
.mx_TjfEmojiInstructions li {
    margin: 6px 0;
    line-height: 1.45;
}

.mx_TjfVerificationGuidance_warning,
.mx_TjfVerificationWarning {
    font-weight: 650;
    line-height: 1.45;
}

.mx_TjfVerificationGuidance_fallback {
    margin-bottom: 0;
    line-height: 1.45;
}

.mx_TjfSelfVerification {
    width: 100%;
}

@media (max-width: 767px) {
    .mx_TjfVerificationGuidance_box,
    .mx_TjfEmojiInstructions {
        padding: 12px 14px;
        border-radius: 9px;
    }

    .mx_TjfVerificationGuidance li,
    .mx_TjfEmojiInstructions li {
        font-size: 14px;
    }

    .mx_TjfSelfVerification button {
        width: 100%;
        min-height: 44px;
    }
}

/* TJF VERIFICATION GUIDANCE V1 END */

/* ==================================================
   TJF SESSION LOADING V1 START
   ================================================== */

.mx_TjfSessionLoading {
    box-sizing: border-box;
    width: 100%;
    min-height: 100%;
    display: flex !important;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 14px;
    text-align: center;
    padding: 32px 20px;
}

.mx_TjfSessionLoading_logo {
    width: 72px;
    height: 72px;
    object-fit: contain;
    margin-bottom: 6px;
}

.mx_TjfSessionLoading_brand {
    font-size: 26px;
    line-height: 1.2;
    font-weight: 700;
}

.mx_TjfSessionLoading_message {
    font-size: 15px;
    line-height: 1.5;
    opacity: 0.78;
    margin-bottom: 6px;
}

.mx_TjfSessionLoading .mx_Spinner {
    margin-top: 4px;
}

.mx_TjfSessionLoading_logout {
    margin-top: 10px;
    opacity: 0.72;
}

@media (max-width: 600px) {
    .mx_TjfSessionLoading_logo {
        width: 62px;
        height: 62px;
    }

    .mx_TjfSessionLoading_brand {
        font-size: 23px;
    }

    .mx_TjfSessionLoading_message {
        font-size: 14px;
    }
}

/* ==================================================
   TJF SESSION LOADING V1 END
   ================================================== */

