/* Main UI icon-system owner: font face, glyph mappings and shared helpers retain
   their tt-legacy layer; additional SVG masks retain the tt layer. Keep this eager
   main_ui-styles.js import, relative asset paths and the font-cache token together.
   Component presentation continues through currentColor inheritance and em sizing. */
@layer tt-legacy {
    /***** TT Icons *****/
    @font-face {
        font-family: 'tticons';
        /* Advance this token only after the final font binaries exist. If CSS hot-reloads first, an open browser can cache the previous binary under the new URL and render newly assigned codepoints as blank until another token is issued. */
        src: url('icon_library/tticons.ttf?p6y2vz') format('truetype'),
        url('icon_library/tticons.woff?p6y2vz') format('woff'),
        url('icon_library/tticons.svg?p6y2vz#tticons') format('svg');
        font-weight: normal;
        font-style: normal;
        font-display: block;
    }

    .tticon {
        /* use !important to prevent issues with browser extensions that change fonts */
        font-family: 'tticons' !important;
        speak: never;
        font-size: 20px;
        font-style: normal;
        font-weight: normal;
        font-variant: normal;
        text-transform: none;
        line-height: 1;

        /* Better font rendering. */
        -webkit-font-smoothing: antialiased;
        -moz-osx-font-smoothing: grayscale;
    }

    .tticon-spin {
        animation: tticon-spin 1s linear infinite;
        display: inline-block;
    }

    .tticon-flip-horizontal {
        display: inline-block;
        transform: scaleX( -1 );
    }

    .tticon-slash {
        display: inline-block;
        position: relative;
    }

    .tticon-slash::after {
        border-top: 2px solid currentColor;
        content: '';
        left: 2px;
        position: absolute;
        right: 2px;
        top: 50%;
        transform: rotate( -45deg );
    }

    @keyframes tticon-spin {
        from {
            transform: rotate( 0deg );
        }
        to {
            transform: rotate( 360deg );
        }
    }

    .tticon-login_black_24dp:before {
        content: "\e977";
    }

    .tticon-redo_black_24dp:before {
        content: "\e967";
    }

    .tticon-thumb_up_black_24dp:before {
        content: "\e968";
    }

    .tticon-thumb_down_black_24dp:before {
        content: "\e969";
    }

    .tticon-thumbs_up_down_black_24dp:before {
        content: "\e96a";
    }

    .tticon-account_circle_black_24dp:before {
        content: "\e96b";
    }

    .tticon-verified_black_24dp:before {
        content: "\e96c";
    }

    .tticon-check_circle_outline_black_24dp:before {
        content: "\e96d";
    }

    .tticon-lightbulb_black_24dp:before {
        content: "\e96e";
    }

    .tticon-heart_outline_black_24dp:before {
        content: "\e978";
    }

    .tticon-heart_black_24dp:before {
        content: "\e979";
    }

    .tticon-heart_red_24dp:before {
        color: var(--tt-color-danger);
        content: "\e978";
    }

    .tticon-star_outline_black_24dp:before {
        content: "\e97d";
    }

    .tticon-star_black_24dp:before {
        content: "\e980";
    }

    .tticon-logout_black_24dp:before {
        content: "\e96f";
    }

    .tticon-search_black_24dp:before {
        content: "\e970";
    }

    .tticon-lock_black_24dp:before {
        content: "\e971";
    }

    .tticon-fact_check_black_24dp:before {
        content: "\e972";
    }

    .tticon-folder_black_24dp:before {
        content: "\e973";
    }

    .tticon-description_black_24dp:before {
        content: "\e974";
    }

    .tticon-find_in_page_black_24dp:before {
        content: "\e975";
    }

    .tticon-pending_actions_black_24dp:before {
        content: "\e976";
    }

    .tticon-person_add_alt_black_24dp:before {
        content: "\e963";
    }

    .tticon-post_add_black_24dp1:before {
        content: "\e964";
    }

    .tticon-contact_mail_black_24dp:before {
        content: "\e965";
    }

    .tticon-switch_account_black_24dp:before {
        content: "\e966";
    }

    .tticon-print_black_24dp:before {
        content: "\e962";
    }

    .tticon-notifications_black_24dp:before {
        content: "\e95f";
    }

    .tticon-notification_important_black_24dp:before {
        content: "\e960";
    }

    .tticon-edit_notifications_black_24dp:before {
        content: "\e961";
    }

    .tticon-edit_note_black_24dp:before {
        content: "\e95b";
    }

    .tticon-north_east_black_24dp:before {
        content: "\e95c";
    }

    .tticon-double_arrow_black_24dp:before {
        content: "\e95d";
    }

    .tticon-label_black_24dp:before {
        content: "\e951";
    }

    .tticon-more_black_24dp1:before {
        content: "\e95e";
    }

    .tticon-more_vert_black_24dp:before {
        content: "\e952";
    }

    .tticon-more_horiz_black_24dp:before {
        content: "\e953";
    }

    .tticon-sms_black_24dp:before {
        content: "\e954";
    }

    .tticon-more_black_24dp:before {
        content: "\e955";
    }

    .tticon-dialpad_black_24dp:before {
        content: "\e956";
    }

    .tticon-drag_indicator_black_24dp:before {
        content: "\e957";
    }

    .tticon-pending_black_24dp:before {
        content: "\e958";
    }

    .tticon-my_location_black_24dp:before {
        content: "\e959";
    }

    .tticon-near_me_black_24dp:before {
        content: "\e95a";
    }

    .tticon-speed_black_24dp:before {
        content: "\e950";
    }

    .tticon-edit_black_24dp:before {
        content: "\e900";
    }

    .tticon-add_black_24dp:before {
        content: "\e901";
    }

    .tticon-post_add_black_24dp:before {
        content: "\e902";
    }

    .tticon-add_circle_outline_black_24dp:before {
        content: "\e903";
    }

    /* PrimeIcons-shaped row editor glyphs preserve the legacy add/remove controls without loading the PrimeIcons font. */
    .tticon-plus_circle:before {
        content: "\e985";
    }

    .tticon-minus_circle:before {
        content: "\e986";
    }

    .tticon-refresh_black_24dp:before {
        content: "\e904";
    }

    .tticon-autorenew_black_24dp:before {
        content: "\e905";
    }

    .tticon-loop_black_24dp:before {
        content: "\e906";
    }

    .tticon-visibility_black_24dp:before {
        content: "\e907";
    }

    .tticon-preview_black_24dp:before {
        content: "\e908";
    }

    .tticon-content_copy_black_24dp:before {
        content: "\e909";
    }

    .tticon-save_alt_black_24dp:before {
        content: "\e90a";
    }

    .tticon-save_black_24dp:before {
        content: "\e90b";
    }

    .tticon-close_black_24dp:before {
        content: "\e90c";
    }

    .tticon-cancel_black_24dp:before {
        content: "\e90d";
    }

    .tticon-highlight_off_black_24dp:before {
        content: "\e90e";
    }

    .tticon-do_not_disturb_black_24dp:before {
        content: "\e90f";
    }

    .tticon-map_black_24dp:before {
        content: "\e910";
    }

    .tticon-place_black_24dp:before {
        content: "\e911";
    }

    .tticon-file_download_black_24dp:before {
        content: "\e912";
    }

    .tticon-file_upload_black_24dp:before {
        content: "\e913";
    }

    .tticon-share_black_24dp:before {
        content: "\e914";
    }

    .tticon-ios_share_black_24dp:before {
        content: "\e915";
    }

    .tticon-reply_black_24dp:before {
        content: "\e916";
    }

    .tticon-send_black_24dp:before {
        content: "\e917";
    }

    .tticon-settings_black_24dp:before {
        content: "\e918";
    }

    .tticon-info_black_24dp:before {
        content: "\e919";
    }

    .tticon-check_box_black_24dp:before {
        content: "\e91a";
    }

    .tticon-check_box_outline_blank_black_24dp:before {
        content: "\e91b";
    }

    .tticon-radio_button_unchecked_black_24dp:before {
        content: "\e91c";
    }

    .tticon-radio_button_checked_black_24dp:before {
        content: "\e91d";
    }

    .tticon-picture_as_pdf_black_24dp:before {
        content: "\e91e";
    }

    .tticon-format_list_numbered_black_24dp:before {
        content: "\e91f";
    }

    .tticon-note_add_black_24dp:before {
        content: "\e920";
    }

    .tticon-report_problem_black_24dp:before {
        content: "\e921";
    }

    .tticon-flag_black_24dp:before {
        content: "\e922";
    }

    .tticon-report_gmailerrorred_black_24dp:before {
        content: "\e923";
    }

    .tticon-show_chart_black_24dp:before {
        content: "\e924";
    }

    .tticon-trending_up_black_24dp:before {
        content: "\e925";
    }

    .tticon-insert_chart_outlined_black_24dp:before {
        content: "\e926";
    }

    .tticon-feed_black_24dp:before {
        content: "\e927";
    }

    .tticon-view_module_black_24dp:before {
        content: "\e928";
    }

    .tticon-schedule_black_24dp:before {
        content: "\e929";
    }

    .tticon-timer_black_24dp:before {
        content: "\e92a";
    }

    .tticon-alarm_black_24dp:before {
        content: "\e92b";
    }

    .tticon-alarm_on_black_24dp:before {
        content: "\e92c";
    }

    .tticon-people_black_24dp:before {
        content: "\e92d";
    }

    .tticon-supervisor_account_black_24dp:before {
        content: "\e92e";
    }

    .tticon-people_alt_black_24dp:before {
        content: "\e92f";
    }

    .tticon-business_black_24dp:before {
        content: "\e930";
    }

    .tticon-apartment_black_24dp:before {
        content: "\e931";
    }

    .tticon-paid_black_24dp:before {
        content: "\e932";
    }

    .tticon-attach_money_black_24dp:before {
        content: "\e933";
    }

    .tticon-local_atm_black_24dp:before {
        content: "\e934";
    }

    .tticon-policy_black_24dp:before {
        content: "\e935";
    }

    .tticon-rule_black_24dp:before {
        content: "\e936";
    }

    .tticon-gavel_black_24dp:before {
        content: "\e937";
    }

    .tticon-rule_folder_black_24dp:before {
        content: "\e938";
    }

    .tticon-receipt_black_24dp:before {
        content: "\e939";
    }

    .tticon-receipt_long_black_24dp:before {
        content: "\e93a";
    }

    .tticon-business_center_black_24dp:before {
        content: "\e93b";
    }

    .tticon-work_outline_black_24dp:before {
        content: "\e93c";
    }

    .tticon-badge_black_24dp:before {
        content: "\e93d";
    }

    .tticon-person_pin_black_24dp:before {
        content: "\e93e";
    }

    .tticon-person_black_24dp:before {
        content: "\e93f";
    }

    .tticon-face_black_24dp:before {
        content: "\e940";
    }

    .tticon-person_outline_black_24dp:before {
        content: "\e941";
    }

    .tticon-help_outline_black_24dp:before {
        content: "\e942";
    }

    .tticon-help_center_black_24dp:before {
        content: "\e943";
    }

    .tticon-event_black_24dp:before {
        content: "\e944";
    }

    .tticon-calendar_today_black_24dp:before {
        content: "\e945";
    }

    .tticon-date_range_black_24dp:before {
        content: "\e946";
    }

    .tticon-auto_fix_high_black_24dp:before {
        content: "\e947";
    }

    .tticon-delete_black_24dp:before {
        content: "\e948";
    }

    .tticon-delete_forever_black_24dp:before {
        content: "\e949";
    }

    .tticon-navigate_next_black_24dp:before {
        content: "\e94a";
    }

    .tticon-navigate_before_black_24dp:before {
        content: "\e94b";
    }

    .tticon-expand_more_black_24dp:before {
        content: "\e94c";
    }

    .tticon-expand_less_black_24dp:before {
        content: "\e94d";
    }

    .tticon-arrow_back_black_24dp:before {
        content: "\e94e";
    }

    .tticon-arrow_forward_black_24dp:before {
        content: "\e94f";
    }

    .tticon-check:before {
        content: "\e984";
    }

    .tt-checkbox__icon.tticon.tticon-check {
        color: var(--tt-color-text-strong);
        display: inline-block;
        font-size: 15px;
        line-height: 1;
    }

    .tticon-stars_black_24dp:before {
        content: "\e981";
    }

    .tticon-new_chat_black_24dp:before {
        content: "\e982";
    }

    .icon-excel:before {
        content: "\e983";
    }

    .tticon-restaurant_black_24dp:before {
        content: "\e987";
    }

    .tticon-coffee_black_24dp:before {
        content: "\e988";
    }

    /* Keep the shared window Controls glyph in the TimeTrex font so ordinary and wizard shells render the same asset. Source: https://icomoon.io/app/icomoon-lib/icons4acad3d/16/306.svg */
    .tticon-pop_out:before {
        content: "\e989";
    }

    /* Remix Icon menu-unfold-line communicates additional toolbar actions hidden to the right. Source: https://github.com/Remix-Design/remixicon/blob/master/icons/System/menu-unfold-line.svg */
    .tticon-menu_unfold_line:before {
        content: "\e98a";
    }
}

@layer tt {

    /* Issue #3855: Dedicated Material mail-status glyphs are absent from the font.
       Reuse the SVG-mask contract so Notification toolbar and menu icons inherit
       currentColor, em sizing, hover, and disabled states without new font binaries.
       Sources: https://github.com/google/material-design-icons/tree/master/src/communication/mark_email_read
       https://github.com/google/material-design-icons/tree/master/src/communication/mark_email_unread */
    /* Issue #3876: The requested palm-tree holiday glyph is absent from the
       font; share the existing em/currentColor mask sizing without rebuilding it. */
    /* Issue #3893: History needs a clock with a backward arrow, absent from the
       font. Share the SVG mask so audit actions retain tticon currentColor/em
       sizing and native button states without changing the font/cache token. */
    /* Issue #3901: Static squared transfer arrows use this same shared mask
       contract rather than the animated Processing font glyph. */
    .tticon-transfer_black_24dp:before,
    .tticon-history_black_24dp:before,
    .tticon-mark_email_read_black_24dp:before,
    .tticon-mark_email_unread_black_24dp:before,
    .tticon-palm_tree:before,
    .tticon-tree_palm:before,
    /* Issue #3894: Appearance glyphs share the em/currentColor SVG mask contract,
       so header and menu states need no new font binaries or fixed icon colors. */
    .tticon-appearance_light:before,
    .tticon-appearance_dark:before,
    .tticon-appearance_auto:before {
        background-color: currentColor;
        content: "";
        display: inline-block;
        height: 1em;
        -webkit-mask-position: center;
        mask-position: center;
        -webkit-mask-repeat: no-repeat;
        mask-repeat: no-repeat;
        -webkit-mask-size: contain;
        mask-size: contain;
        width: 1em;
    }

    /* Issue #3901: Opposing vertical arrows with square bends identify a
       transfer boundary; currentColor and 1em keep the existing tticon sizing. */
    .tticon-transfer_black_24dp:before {
        -webkit-mask-image: url('icon_library/transfer_black_24dp.svg');
        mask-image: url('icon_library/transfer_black_24dp.svg');
    }

    /* Issue #3893: Keep the official History vector in the eager main UI icon
       library; its source/license travel with the asset. */
    .tticon-history_black_24dp:before {
        -webkit-mask-image: url('icon_library/history_black_24dp.svg');
        mask-image: url('icon_library/history_black_24dp.svg');
    }

    .tticon-mark_email_read_black_24dp:before {
        -webkit-mask-image: url('icon_library/mark_email_read_black_24dp.svg');
        mask-image: url('icon_library/mark_email_read_black_24dp.svg');
    }

    .tticon-mark_email_unread_black_24dp:before {
        -webkit-mask-image: url('icon_library/mark_email_unread_black_24dp.svg');
        mask-image: url('icon_library/mark_email_unread_black_24dp.svg');
    }

    /* Issue #3876: Keep the holiday vector in the shared icon library so
       Month uses the same tticon color/sizing contract as other UI indicators. */
    .tticon-palm_tree:before {
        -webkit-mask-image: url('icon_library/palm_tree.svg');
        mask-image: url('icon_library/palm_tree.svg');
    }

    /* Schedule absence counts use the Lucide palm vector through the existing
       tticon mask contract; its license/source travel with the asset. */
    .tticon-tree_palm:before {
        -webkit-mask-image: url('icon_library/tree_palm.svg');
        mask-image: url('icon_library/tree_palm.svg');
    }

    .tticon-appearance_light:before {
        -webkit-mask-image: url('icon_library/appearance_light.svg');
        mask-image: url('icon_library/appearance_light.svg');
    }
    .tticon-appearance_dark:before {
        -webkit-mask-image: url('icon_library/appearance_dark.svg');
        mask-image: url('icon_library/appearance_dark.svg');
    }
    .tticon-appearance_auto:before {
        -webkit-mask-image: url('icon_library/appearance_auto.svg');
        mask-image: url('icon_library/appearance_auto.svg');
    }

    /* The legacy tticons binaries omit Material Lock Open; mask its vector so Unlock actions inherit normal button color, hover, and disabled states. */
    .tticon-lock_open_black_24dp:before {
        background-color: currentColor;
        content: "";
        display: inline-block;
        height: 1em;
        -webkit-mask-image: url('icon_library/lock_open_black_24dp.svg');
        mask-image: url('icon_library/lock_open_black_24dp.svg');
        -webkit-mask-position: center;
        mask-position: center;
        -webkit-mask-repeat: no-repeat;
        mask-repeat: no-repeat;
        -webkit-mask-size: contain;
        mask-size: contain;
        width: 1em;
    }

    /*
     * Account Tree is the clearest 24px Material metaphor for an organization
     * chart, but it is not present in the legacy tticons font binaries. Mask the
     * official vector with currentColor so TTS context actions retain the same
     * hover, disabled, high-contrast, and sizing behavior as font-backed icons.
     */
    .tticon-account_tree_black_24dp:before {
        background-color: currentColor;
        content: "";
        display: inline-block;
        height: 1em;
        -webkit-mask-image: url('icon_library/account_tree_black_24dp.svg');
        mask-image: url('icon_library/account_tree_black_24dp.svg');
        -webkit-mask-position: center;
        mask-position: center;
        -webkit-mask-repeat: no-repeat;
        mask-repeat: no-repeat;
        -webkit-mask-size: contain;
        mask-size: contain;
        width: 1em;
    }
}
